@pendle/core-v2 0.6.8 → 0.7.0

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 (519) hide show
  1. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +4 -0
  2. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +751 -0
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +4 -0
  4. package/build/artifacts/contracts/{core/PendleSCYImpl → SuperComposableYield/SCY-implementations}/AaveV3/WadRayMath.sol/WadRayMath.json +3 -3
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +4 -0
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +27 -0
  7. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +4 -0
  8. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +761 -0
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +4 -0
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.json +635 -0
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +4 -0
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +609 -0
  13. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.dbg.json +4 -0
  14. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.json +653 -0
  15. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +4 -0
  16. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +622 -0
  17. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +4 -0
  18. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +622 -0
  19. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +4 -0
  20. package/build/artifacts/contracts/SuperComposableYield/{ISuperComposableYield.sol/ISuperComposableYield.json → base-implementations/SCYBase.sol/SCYBase.json} +221 -141
  21. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +4 -0
  22. package/build/artifacts/contracts/SuperComposableYield/{implementations → base-implementations}/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +247 -223
  23. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol/CelerReceiver.dbg.json +4 -0
  24. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol/CelerReceiver.json +128 -0
  25. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSender.sol/CelerSender.dbg.json +4 -0
  26. package/build/artifacts/contracts/{SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.json → core/LiquidityMining/CelerAbstracts/CelerSender.sol/CelerSender.json} +29 -33
  27. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol/PendleGaugeController.dbg.json +4 -0
  28. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol/PendleGaugeController.json +193 -0
  29. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchain.dbg.json +4 -0
  30. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchain.json +255 -0
  31. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechain.dbg.json +4 -0
  32. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechain.json +318 -0
  33. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +4 -0
  34. package/build/artifacts/contracts/{interfaces/IPVotingEscrow.sol/IVotingEscrowPendle.json → core/LiquidityMining/PendleGauge.sol/PendleGauge.json} +57 -65
  35. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol/PendleVotingController.dbg.json +4 -0
  36. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol/PendleVotingController.json +707 -0
  37. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol/VotingControllerStorage.dbg.json +4 -0
  38. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol/VotingControllerStorage.json +342 -0
  39. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +4 -0
  40. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +547 -0
  41. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +4 -0
  42. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +353 -0
  43. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol/VotingEscrowToken.dbg.json +4 -0
  44. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol/VotingEscrowToken.json +138 -0
  45. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +4 -0
  46. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +922 -0
  47. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +4 -0
  48. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +345 -0
  49. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +4 -0
  50. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.json +254 -0
  51. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +4 -0
  52. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +329 -0
  53. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -20
  55. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +4 -0
  56. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +445 -0
  57. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +4 -0
  58. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +344 -0
  59. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +4 -0
  60. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +750 -0
  61. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
  63. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +123 -77
  65. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +39 -42
  67. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.json +163 -1
  69. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.json +0 -13
  71. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.json +1 -14
  73. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +4 -0
  74. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.json +10 -0
  75. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.json +39 -0
  77. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.json +13 -0
  81. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +4 -0
  82. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.json +74 -0
  83. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +4 -0
  84. package/build/artifacts/contracts/interfaces/{IVePToken.sol/IVePToken.json → ICelerMessageBus.sol/ICelerMessageBus.json} +21 -11
  85. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +4 -0
  86. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.json +45 -0
  87. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +4 -0
  88. package/build/artifacts/contracts/{core/PendleBaseToken.sol/PendleBaseToken.json → interfaces/IERC4626.sol/IERC4626.json} +53 -68
  89. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +1 -1
  90. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +1 -1
  91. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +4 -0
  92. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.json +962 -0
  93. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +122 -58
  95. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.json +36 -21
  97. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +116 -81
  99. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +4 -0
  100. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.json +109 -0
  101. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +4 -0
  102. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.json +132 -0
  103. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +35 -54
  106. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +31 -0
  109. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.json +5 -5
  113. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +4 -0
  115. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +99 -0
  116. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +4 -0
  117. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.json +167 -0
  118. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +4 -0
  119. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.json +148 -0
  120. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  121. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +85 -83
  123. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +4 -0
  124. package/build/artifacts/contracts/interfaces/{IPBaseToken.sol/IPBaseToken.json → IQiAvax.sol/IQiAvax.json} +106 -15
  125. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  126. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.json +117 -0
  127. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.json +117 -0
  129. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  130. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +4 -0
  131. package/build/artifacts/contracts/{periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json → interfaces/IRewardManager.sol/IRewardManager.json} +12 -14
  132. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +4 -0
  133. package/build/artifacts/contracts/{SuperComposableYield/implementations/SCYBase.sol/SCYBase.json → interfaces/ISuperComposableYield.sol/ISuperComposableYield.json} +183 -181
  134. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  135. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  136. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.json +13 -0
  137. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  138. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.json +13 -0
  139. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  140. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.json +13 -0
  141. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +4 -0
  142. package/build/artifacts/contracts/{SuperComposableYield/implementations → libraries}/RewardManager.sol/RewardManager.json +44 -33
  143. package/build/artifacts/contracts/libraries/RewardManagerMini.sol/RewardManagerMini.dbg.json +4 -0
  144. package/build/artifacts/contracts/libraries/RewardManagerMini.sol/RewardManagerMini.json +101 -0
  145. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +4 -0
  146. package/build/artifacts/contracts/libraries/{SCYIndex.sol → SCY/SCYIndex.sol}/SCYIndexLib.json +3 -3
  147. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +4 -0
  148. package/build/artifacts/contracts/{SuperComposableYield → libraries/SCY}/SCYUtils.sol/SCYUtils.json +3 -3
  149. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +4 -0
  150. package/build/artifacts/contracts/libraries/{math/MarketMathAux.sol/MarketMathAux.json → VeBalanceLib.sol/VeBalanceLib.json} +4 -4
  151. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +4 -0
  152. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +10 -0
  153. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  154. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.json +2 -2
  155. package/build/artifacts/contracts/libraries/helpers/MiniDeployer.sol/MiniDeployer.dbg.json +4 -0
  156. package/build/artifacts/contracts/libraries/helpers/MiniDeployer.sol/MiniDeployer.json +10 -0
  157. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +4 -0
  158. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.json +10 -0
  159. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +4 -0
  160. package/build/artifacts/contracts/{core/actions/base/ActionType.sol/ActionType.json → libraries/helpers/TokenHelper.sol/TokenHelper.json} +2 -2
  161. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  162. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.json +2 -2
  163. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  164. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
  165. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  166. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  167. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  168. package/build/artifacts/contracts/libraries/math/Math.sol/Math.json +2 -2
  169. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +4 -0
  170. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.json +10 -0
  171. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.dbg.json +4 -0
  172. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.json +10 -0
  173. package/build/artifacts/contracts/libraries/solmate/LibRLP.sol/LibRLP.dbg.json +4 -0
  174. package/build/artifacts/contracts/libraries/solmate/LibRLP.sol/LibRLP.json +10 -0
  175. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +4 -0
  176. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.json +10 -0
  177. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +4 -0
  178. package/build/artifacts/contracts/libraries/{JoeLibrary.sol → traderjoe/JoeLibrary.sol}/JoeLibrary.json +3 -3
  179. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +4 -0
  180. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json +24 -0
  181. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +4 -0
  182. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +862 -0
  183. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
  184. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.json +2 -2
  185. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  186. package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +147 -0
  187. package/contracts/{core/PendleSCYImpl → SuperComposableYield/SCY-implementations}/AaveV3/WadRayMath.sol +1 -1
  188. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol +74 -0
  189. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +187 -0
  190. package/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol +123 -0
  191. package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +99 -0
  192. package/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol +245 -0
  193. package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +107 -0
  194. package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol +120 -0
  195. package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +197 -0
  196. package/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol +131 -0
  197. package/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol +47 -0
  198. package/contracts/core/LiquidityMining/CelerAbstracts/CelerSender.sol +52 -0
  199. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol +141 -0
  200. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol +30 -0
  201. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol +22 -0
  202. package/contracts/core/LiquidityMining/PendleGauge.sol +118 -0
  203. package/contracts/core/LiquidityMining/README.md +63 -0
  204. package/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol +323 -0
  205. package/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol +224 -0
  206. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +241 -0
  207. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +73 -0
  208. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol +53 -0
  209. package/contracts/core/{PendleMarket.sol → Market/PendleMarket.sol} +139 -103
  210. package/contracts/core/{PendleMarketFactory.sol → Market/PendleMarketFactory.sol} +62 -19
  211. package/contracts/core/PendleERC20.sol +358 -0
  212. package/contracts/core/PendleERC20Permit.sol +84 -0
  213. package/contracts/core/PendleRouter.sol +6 -12
  214. package/contracts/core/YieldContracts/InterestManagerYT.sol +87 -0
  215. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +52 -0
  216. package/contracts/core/{PendleYieldContractFactory.sol → YieldContracts/PendleYieldContractFactory.sol} +46 -25
  217. package/contracts/core/YieldContracts/PendleYieldToken.sol +340 -0
  218. package/contracts/core/actions/ActionCallback.sol +63 -43
  219. package/contracts/core/actions/ActionCore.sol +95 -78
  220. package/contracts/core/actions/ActionYT.sol +35 -86
  221. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +133 -78
  222. package/contracts/core/actions/base/ActionSCYAndPYBase.sol +31 -46
  223. package/contracts/core/actions/base/ActionSCYAndYTBase.sol +127 -45
  224. package/contracts/core/actions/base/CallbackHelper.sol +81 -0
  225. package/contracts/interfaces/IAToken.sol +11 -1
  226. package/contracts/interfaces/IAavePool.sol +1 -1
  227. package/contracts/interfaces/IAaveRewardsController.sol +1 -1
  228. package/contracts/interfaces/IBenQiComptroller.sol +3 -1
  229. package/contracts/interfaces/IBenQiInterestRateModel.sol +16 -0
  230. package/contracts/interfaces/ICelerMessageBus.sol +28 -0
  231. package/contracts/interfaces/ICelerMessageReceiverApp.sol +25 -0
  232. package/contracts/interfaces/IERC4626.sol +39 -0
  233. package/contracts/interfaces/IJoeRouter01.sol +1 -1
  234. package/contracts/interfaces/IJoeRouter02.sol +52 -0
  235. package/contracts/interfaces/IPActionCore.sol +44 -27
  236. package/contracts/interfaces/IPActionYT.sol +12 -9
  237. package/contracts/interfaces/IPAllAction.sol +2 -3
  238. package/contracts/interfaces/IPGaugeController.sol +22 -0
  239. package/contracts/interfaces/IPGaugeControllerMainchain.sol +12 -0
  240. package/contracts/interfaces/IPGovernanceManager.sol +1 -1
  241. package/contracts/interfaces/IPInterestManagerYT.sol +9 -0
  242. package/contracts/interfaces/IPMarket.sol +13 -13
  243. package/contracts/interfaces/IPMarketAddRemoveCallback.sol +3 -3
  244. package/contracts/interfaces/IPMarketFactory.sol +8 -1
  245. package/contracts/interfaces/IPMarketSwapCallback.sol +1 -1
  246. package/contracts/interfaces/IPPermissionsV2Upg.sol +1 -1
  247. package/contracts/interfaces/IPPrincipalToken.sol +9 -5
  248. package/contracts/interfaces/IPRouterStatic.sol +1 -1
  249. package/contracts/interfaces/IPVeToken.sol +10 -5
  250. package/contracts/interfaces/IPVotingController.sol +21 -0
  251. package/contracts/interfaces/IPVotingEscrow.sol +14 -22
  252. package/contracts/interfaces/IPYieldContractFactory.sol +1 -1
  253. package/contracts/interfaces/IPYieldToken.sol +17 -17
  254. package/contracts/interfaces/IQiAvax.sol +31 -0
  255. package/contracts/interfaces/IQiErc20.sol +1 -1
  256. package/contracts/interfaces/IQiToken.sol +22 -1
  257. package/contracts/interfaces/IREDACTEDStaking.sol +1 -1
  258. package/contracts/interfaces/IRewardManager.sol +9 -0
  259. package/contracts/interfaces/ISuperComposableYield.sol +182 -0
  260. package/contracts/interfaces/IWETH.sol +1 -1
  261. package/contracts/interfaces/IWXBTRFLY.sol +3 -1
  262. package/contracts/interfaces/IWstETH.sol +3 -1
  263. package/contracts/interfaces/IYearnVault.sol +3 -1
  264. package/contracts/libraries/RewardManager.sol +78 -0
  265. package/contracts/libraries/RewardManagerAbstract.sol +81 -0
  266. package/contracts/libraries/{SCYIndex.sol → SCY/SCYIndex.sol} +8 -8
  267. package/contracts/libraries/SCY/SCYUtils.sol +18 -0
  268. package/contracts/libraries/VeBalanceLib.sol +114 -0
  269. package/contracts/libraries/helpers/ArrayLib.sol +65 -0
  270. package/contracts/libraries/helpers/ExpiryUtilsLib.sol +1 -1
  271. package/contracts/libraries/helpers/MiniDeployer.sol +23 -0
  272. package/contracts/libraries/helpers/MiniHelpers.sol +15 -0
  273. package/contracts/libraries/helpers/TokenHelper.sol +105 -0
  274. package/contracts/libraries/math/LogExpMath.sol +59 -1
  275. package/contracts/libraries/math/MarketApproxLib.sol +167 -164
  276. package/contracts/libraries/math/MarketMathCore.sol +106 -25
  277. package/contracts/libraries/math/Math.sol +28 -21
  278. package/contracts/libraries/math/WeekMath.sol +19 -0
  279. package/contracts/libraries/solmate/Bytes32AddressLib.sol +14 -0
  280. package/contracts/libraries/solmate/LibRLP.sol +30 -0
  281. package/contracts/libraries/solmate/SSTORE2.sol +99 -0
  282. package/contracts/libraries/{JoeLibrary.sol → traderjoe/JoeLibrary.sol} +3 -2
  283. package/contracts/{periphery → libraries/traderjoe}/PendleJoeSwapHelperUpg.sol +8 -10
  284. package/contracts/{core → offchain-helpers}/RouterStatic.sol +24 -19
  285. package/contracts/periphery/PendleGovernanceManager.sol +1 -1
  286. package/contracts/periphery/PermissionsV2Upg.sol +1 -1
  287. package/package.json +1 -1
  288. package/typechain-types/ActionCore.ts +169 -96
  289. package/typechain-types/ActionSCYAndPTBase.ts +210 -0
  290. package/typechain-types/ActionSCYAndPYBase.ts +0 -13
  291. package/typechain-types/ActionSCYAndYTBase.ts +8 -21
  292. package/typechain-types/ActionYT.ts +73 -64
  293. package/typechain-types/BeaconProxy.ts +97 -0
  294. package/typechain-types/CelerReceiver.ts +267 -0
  295. package/typechain-types/CelerSender.ts +197 -0
  296. package/typechain-types/ERC1967Upgrade.ts +97 -0
  297. package/typechain-types/ERC20Permit.ts +521 -0
  298. package/typechain-types/IAToken.ts +55 -0
  299. package/typechain-types/IBeacon.ts +87 -0
  300. package/typechain-types/IBenQiComptroller.ts +13 -0
  301. package/typechain-types/IBenQiInterestRateModel.ts +162 -0
  302. package/typechain-types/ICelerMessageBus.ts +134 -0
  303. package/typechain-types/ICelerMessageReceiverApp.ts +120 -0
  304. package/typechain-types/IERC1822Proxiable.ts +87 -0
  305. package/typechain-types/IERC20Permit.ts +175 -0
  306. package/typechain-types/IERC4626.ts +463 -0
  307. package/typechain-types/IJoeRouter02.ts +1420 -0
  308. package/typechain-types/IPActionCore.ts +169 -83
  309. package/typechain-types/IPActionYT.ts +65 -43
  310. package/typechain-types/IPAllAction.ts +190 -137
  311. package/typechain-types/IPGauge.ts +104 -0
  312. package/typechain-types/IPGaugeController.ts +191 -0
  313. package/typechain-types/IPGaugeControllerMainchain.ts +236 -0
  314. package/typechain-types/IPMarket.ts +73 -74
  315. package/typechain-types/IPMarketFactory.ts +27 -0
  316. package/typechain-types/IPPrincipalToken.ts +8 -20
  317. package/typechain-types/IPVeToken.ts +198 -0
  318. package/typechain-types/IPVotingController.ts +179 -0
  319. package/typechain-types/IPVotingEscrow.ts +217 -0
  320. package/typechain-types/IPVotingEscrowController.ts +154 -0
  321. package/typechain-types/IPYieldToken.ts +176 -213
  322. package/typechain-types/IQiAvax.ts +551 -0
  323. package/typechain-types/IQiErc20.ts +171 -0
  324. package/typechain-types/IQiToken.ts +171 -0
  325. package/typechain-types/IRewardManager.ts +16 -87
  326. package/typechain-types/ISuperComposableYield.ts +283 -269
  327. package/typechain-types/IWXBTRFLY.ts +13 -0
  328. package/typechain-types/IWstETH.ts +13 -0
  329. package/typechain-types/IYearnVault.ts +13 -0
  330. package/typechain-types/PendleAaveV3SCY.ts +382 -477
  331. package/typechain-types/PendleBtrflyScy.ts +287 -348
  332. package/typechain-types/PendleERC20.ts +339 -0
  333. package/typechain-types/PendleERC20Permit.ts +443 -0
  334. package/typechain-types/PendleERC4626SCY.ts +801 -0
  335. package/typechain-types/PendleGauge.ts +276 -0
  336. package/typechain-types/PendleGaugeController.ts +346 -0
  337. package/typechain-types/PendleGaugeControllerMainchain.ts +410 -0
  338. package/typechain-types/PendleGaugeControllerSidechain.ts +524 -0
  339. package/typechain-types/PendleJoeLpSCY.ts +837 -0
  340. package/typechain-types/PendleJoeSwapHelperUpg.ts +0 -13
  341. package/typechain-types/PendleMarket.ts +265 -151
  342. package/typechain-types/PendleMarketFactory.ts +111 -16
  343. package/typechain-types/PendleMarketRewards.ts +1317 -0
  344. package/typechain-types/PendlePrincipalToken.ts +103 -130
  345. package/typechain-types/PendleQiTokenHelper.ts +57 -0
  346. package/typechain-types/PendleQiTokenSCY.ts +991 -0
  347. package/typechain-types/PendleRouter.ts +0 -19
  348. package/typechain-types/PendleVotingController.ts +1042 -0
  349. package/typechain-types/PendleWstEthSCY.ts +813 -0
  350. package/typechain-types/PendleYearnVaultScy.ts +278 -339
  351. package/typechain-types/PendleYieldContractFactory.ts +43 -27
  352. package/typechain-types/PendleYieldToken.ts +297 -428
  353. package/typechain-types/RewardManager.ts +70 -69
  354. package/typechain-types/RewardManagerMini.ts +200 -0
  355. package/typechain-types/SCYBase.ts +276 -335
  356. package/typechain-types/SCYBaseWithRewards.ts +367 -424
  357. package/typechain-types/VotingControllerStorage.ts +507 -0
  358. package/typechain-types/VotingEscrowPendleMainchain.ts +854 -0
  359. package/typechain-types/VotingEscrowPendleSidechain.ts +546 -0
  360. package/typechain-types/VotingEscrowToken.ts +251 -0
  361. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  362. package/typechain-types/factories/ActionCore__factory.ts +122 -80
  363. package/typechain-types/factories/ActionRedeem__factory.ts +1 -1
  364. package/typechain-types/factories/ActionSCYAndPTBase__factory.ts +187 -0
  365. package/typechain-types/factories/ActionSCYAndPYBase__factory.ts +0 -13
  366. package/typechain-types/factories/ActionSCYAndYTBase__factory.ts +1 -14
  367. package/typechain-types/factories/ActionYT__factory.ts +39 -48
  368. package/typechain-types/factories/BeaconProxy__factory.ts +141 -0
  369. package/typechain-types/factories/CelerReceiver__factory.ts +140 -0
  370. package/typechain-types/factories/CelerSender__factory.ts +85 -0
  371. package/typechain-types/factories/ERC1967Upgrade__factory.ts +71 -0
  372. package/typechain-types/factories/ERC20Permit__factory.ts +368 -0
  373. package/typechain-types/factories/ERC20__factory.ts +1 -1
  374. package/typechain-types/factories/IAToken__factory.ts +39 -0
  375. package/typechain-types/factories/IBeacon__factory.ts +36 -0
  376. package/typechain-types/factories/IBenQiComptroller__factory.ts +13 -0
  377. package/typechain-types/factories/IBenQiInterestRateModel__factory.ts +93 -0
  378. package/typechain-types/factories/ICelerMessageBus__factory.ts +68 -0
  379. package/typechain-types/factories/ICelerMessageReceiverApp__factory.ts +64 -0
  380. package/typechain-types/factories/IERC1822Proxiable__factory.ts +39 -0
  381. package/typechain-types/factories/IERC20Permit__factory.ts +98 -0
  382. package/typechain-types/factories/IERC4626__factory.ts +330 -0
  383. package/typechain-types/factories/IJoeRouter02__factory.ts +974 -0
  384. package/typechain-types/factories/IPActionCore__factory.ts +122 -58
  385. package/typechain-types/factories/IPActionYT__factory.ts +36 -21
  386. package/typechain-types/factories/IPAllAction__factory.ts +116 -81
  387. package/typechain-types/factories/IPGaugeControllerMainchain__factory.ts +151 -0
  388. package/typechain-types/factories/IPGaugeController__factory.ts +124 -0
  389. package/typechain-types/factories/IPGauge__factory.ts +42 -0
  390. package/typechain-types/factories/IPMarketFactory__factory.ts +31 -0
  391. package/typechain-types/factories/IPMarket__factory.ts +35 -54
  392. package/typechain-types/factories/IPPrincipalToken__factory.ts +5 -5
  393. package/typechain-types/factories/IPVeToken__factory.ts +111 -0
  394. package/typechain-types/factories/IPVotingController__factory.ts +182 -0
  395. package/typechain-types/factories/IPVotingEscrowController__factory.ts +80 -0
  396. package/typechain-types/factories/IPVotingEscrow__factory.ts +163 -0
  397. package/typechain-types/factories/IPYieldToken__factory.ts +85 -83
  398. package/typechain-types/factories/IQiAvax__factory.ts +362 -0
  399. package/typechain-types/factories/IQiErc20__factory.ts +117 -0
  400. package/typechain-types/factories/IQiToken__factory.ts +117 -0
  401. package/typechain-types/factories/IRewardManager__factory.ts +5 -47
  402. package/typechain-types/factories/ISuperComposableYield__factory.ts +201 -138
  403. package/typechain-types/factories/IWXBTRFLY__factory.ts +13 -0
  404. package/typechain-types/factories/IWstETH__factory.ts +13 -0
  405. package/typechain-types/factories/IYearnVault__factory.ts +13 -0
  406. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +246 -315
  407. package/typechain-types/factories/PendleBtrflyScy__factory.ts +200 -234
  408. package/typechain-types/factories/PendleERC20Permit__factory.ts +405 -0
  409. package/typechain-types/factories/PendleERC20__factory.ts +327 -0
  410. package/typechain-types/factories/PendleERC4626SCY__factory.ts +678 -0
  411. package/typechain-types/factories/PendleGaugeControllerMainchain__factory.ts +332 -0
  412. package/typechain-types/factories/PendleGaugeControllerSidechain__factory.ts +391 -0
  413. package/typechain-types/factories/PendleGaugeController__factory.ts +212 -0
  414. package/typechain-types/factories/PendleGauge__factory.ts +171 -0
  415. package/typechain-types/factories/PendleGovernanceManager__factory.ts +1 -1
  416. package/typechain-types/factories/PendleJoeLpSCY__factory.ts +726 -0
  417. package/typechain-types/factories/PendleJoeSwapHelperUpg__factory.ts +0 -13
  418. package/typechain-types/factories/PendleMarketFactory__factory.ts +90 -5
  419. package/typechain-types/factories/PendleMarketRewards__factory.ts +1140 -0
  420. package/typechain-types/factories/PendleMarket__factory.ts +182 -94
  421. package/typechain-types/factories/PendlePrincipalToken__factory.ts +74 -77
  422. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +99 -0
  423. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +845 -0
  424. package/typechain-types/factories/PendleRouter__factory.ts +1 -23
  425. package/typechain-types/factories/PendleVotingController__factory.ts +776 -0
  426. package/typechain-types/factories/PendleWstEthSCY__factory.ts +686 -0
  427. package/typechain-types/factories/PendleYearnVaultScy__factory.ts +218 -243
  428. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +39 -29
  429. package/typechain-types/factories/PendleYieldToken__factory.ts +153 -211
  430. package/typechain-types/factories/RewardManagerMini__factory.ts +116 -0
  431. package/typechain-types/factories/RewardManager__factory.ts +43 -32
  432. package/typechain-types/factories/RouterStatic__factory.ts +1 -1
  433. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +242 -218
  434. package/typechain-types/factories/SCYBase__factory.ts +195 -176
  435. package/typechain-types/factories/VotingControllerStorage__factory.ts +361 -0
  436. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +616 -0
  437. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +415 -0
  438. package/typechain-types/factories/VotingEscrowToken__factory.ts +153 -0
  439. package/typechain-types/hardhat.d.ts +338 -131
  440. package/typechain-types/index.ts +92 -38
  441. package/build/artifacts/contracts/SuperComposableYield/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +0 -4
  442. package/build/artifacts/contracts/SuperComposableYield/SCYUtils.sol/SCYUtils.dbg.json +0 -4
  443. package/build/artifacts/contracts/SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.dbg.json +0 -4
  444. package/build/artifacts/contracts/SuperComposableYield/implementations/RewardManager.sol/RewardManager.dbg.json +0 -4
  445. package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBase.sol/SCYBase.dbg.json +0 -4
  446. package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +0 -4
  447. package/build/artifacts/contracts/core/PendleBaseToken.sol/PendleBaseToken.dbg.json +0 -4
  448. package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.dbg.json +0 -4
  449. package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.json +0 -842
  450. package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +0 -4
  451. package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.json +0 -265
  452. package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +0 -4
  453. package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.json +0 -452
  454. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +0 -4
  455. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +0 -783
  456. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +0 -4
  457. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.dbg.json +0 -4
  458. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.json +0 -766
  459. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +0 -4
  460. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.json +0 -641
  461. package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.dbg.json +0 -4
  462. package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.json +0 -623
  463. package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.dbg.json +0 -4
  464. package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.json +0 -623
  465. package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +0 -4
  466. package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +0 -339
  467. package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.dbg.json +0 -4
  468. package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.json +0 -808
  469. package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.dbg.json +0 -4
  470. package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.json +0 -862
  471. package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.dbg.json +0 -4
  472. package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.json +0 -55
  473. package/build/artifacts/contracts/core/actions/base/ActionType.sol/ActionType.dbg.json +0 -4
  474. package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.dbg.json +0 -4
  475. package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.json +0 -55
  476. package/build/artifacts/contracts/interfaces/IPBaseToken.sol/IPBaseToken.dbg.json +0 -4
  477. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPendleGauge.dbg.json +0 -4
  478. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPendleGauge.json +0 -113
  479. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IVePToken.dbg.json +0 -4
  480. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IVePToken.json +0 -43
  481. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IVotingEscrowPendle.dbg.json +0 -4
  482. package/build/artifacts/contracts/interfaces/IPVotingEscrowController.sol/VotingEscrowController.dbg.json +0 -4
  483. package/build/artifacts/contracts/interfaces/IPVotingEscrowController.sol/VotingEscrowController.json +0 -61
  484. package/build/artifacts/contracts/interfaces/IPendleGauge.sol/IPendleGauge.dbg.json +0 -4
  485. package/build/artifacts/contracts/interfaces/IPendleGauge.sol/IPendleGauge.json +0 -113
  486. package/build/artifacts/contracts/interfaces/IVePToken.sol/IVePToken.dbg.json +0 -4
  487. package/build/artifacts/contracts/interfaces/IVotingEscrowController.sol/VotingEscrowController.dbg.json +0 -4
  488. package/build/artifacts/contracts/interfaces/IVotingEscrowController.sol/VotingEscrowController.json +0 -61
  489. package/build/artifacts/contracts/interfaces/IVotingEscrowPendle.sol/IVotingEscrowPendle.dbg.json +0 -4
  490. package/build/artifacts/contracts/interfaces/IVotingEscrowPendle.sol/IVotingEscrowPendle.json +0 -167
  491. package/build/artifacts/contracts/libraries/JoeLibrary.sol/JoeLibrary.dbg.json +0 -4
  492. package/build/artifacts/contracts/libraries/SCYIndex.sol/SCYIndexLib.dbg.json +0 -4
  493. package/build/artifacts/contracts/libraries/math/MarketMathAux.sol/MarketMathAux.dbg.json +0 -4
  494. package/build/artifacts/contracts/periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +0 -4
  495. package/contracts/SuperComposableYield/ISuperComposableYield.sol +0 -80
  496. package/contracts/SuperComposableYield/SCYUtils.sol +0 -14
  497. package/contracts/SuperComposableYield/implementations/IRewardManager.sol +0 -16
  498. package/contracts/SuperComposableYield/implementations/RewardManager.sol +0 -151
  499. package/contracts/SuperComposableYield/implementations/SCYBase.sol +0 -166
  500. package/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol +0 -88
  501. package/contracts/core/PendleBaseToken.sol +0 -35
  502. package/contracts/core/PendlePrincipalToken.sol +0 -54
  503. package/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol +0 -140
  504. package/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol +0 -133
  505. package/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol +0 -120
  506. package/contracts/core/PendleSCYImpl/PendleStETHSCY.sol +0 -107
  507. package/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol +0 -109
  508. package/contracts/core/PendleYieldToken.sol +0 -340
  509. package/contracts/core/actions/ActionRedeem.sol +0 -36
  510. package/contracts/core/actions/base/ActionType.sol +0 -11
  511. package/contracts/interfaces/IPActionRedeem.sol +0 -17
  512. package/contracts/interfaces/IPBaseToken.sol +0 -9
  513. package/contracts/interfaces/IPGauge.sol +0 -32
  514. package/contracts/interfaces/IPVotingEscrowController.sol +0 -14
  515. package/contracts/interfaces/IPendleGauge.sol +0 -32
  516. package/contracts/interfaces/IVePToken.sol +0 -14
  517. package/contracts/interfaces/IVotingEscrowController.sol +0 -14
  518. package/contracts/interfaces/IVotingEscrowPendle.sol +0 -32
  519. package/contracts/libraries/math/MarketMathAux.sol +0 -101
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/88454e13e5755d4eedd68a3511bda74a.json"
3
+ "buildInfo": "../../../../build-info/50c4d5ce389938ed6a22f6a59a2e36eb.json"
4
4
  }
@@ -5,11 +5,6 @@
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [
8
- {
9
- "internalType": "address",
10
- "name": "_joeRouter",
11
- "type": "address"
12
- },
13
8
  {
14
9
  "internalType": "address",
15
10
  "name": "_joeFactory",
@@ -189,7 +184,7 @@
189
184
  "type": "int256"
190
185
  }
191
186
  ],
192
- "name": "SwapYT",
187
+ "name": "SwapYTAndSCY",
193
188
  "type": "event"
194
189
  },
195
190
  {
@@ -206,40 +201,32 @@
206
201
  "type": "function"
207
202
  },
208
203
  {
209
- "inputs": [],
210
- "name": "joeRouter",
211
- "outputs": [
204
+ "inputs": [
212
205
  {
213
206
  "internalType": "address",
214
- "name": "",
207
+ "name": "receiver",
215
208
  "type": "address"
216
- }
217
- ],
218
- "stateMutability": "view",
219
- "type": "function"
220
- },
221
- {
222
- "inputs": [
209
+ },
210
+ {
211
+ "internalType": "address",
212
+ "name": "market",
213
+ "type": "address"
214
+ },
223
215
  {
224
216
  "internalType": "uint256",
225
217
  "name": "exactRawTokenIn",
226
218
  "type": "uint256"
227
219
  },
228
220
  {
229
- "internalType": "address",
230
- "name": "receiver",
231
- "type": "address"
221
+ "internalType": "uint256",
222
+ "name": "minYtOut",
223
+ "type": "uint256"
232
224
  },
233
225
  {
234
226
  "internalType": "address[]",
235
227
  "name": "path",
236
228
  "type": "address[]"
237
229
  },
238
- {
239
- "internalType": "address",
240
- "name": "market",
241
- "type": "address"
242
- },
243
230
  {
244
231
  "components": [
245
232
  {
@@ -269,7 +256,7 @@
269
256
  }
270
257
  ],
271
258
  "internalType": "struct ApproxParams",
272
- "name": "approx",
259
+ "name": "guessYtOut",
273
260
  "type": "tuple"
274
261
  }
275
262
  ],
@@ -301,6 +288,11 @@
301
288
  "name": "exactScyIn",
302
289
  "type": "uint256"
303
290
  },
291
+ {
292
+ "internalType": "uint256",
293
+ "name": "minYtOut",
294
+ "type": "uint256"
295
+ },
304
296
  {
305
297
  "components": [
306
298
  {
@@ -330,7 +322,7 @@
330
322
  }
331
323
  ],
332
324
  "internalType": "struct ApproxParams",
333
- "name": "approx",
325
+ "name": "guessYtOut",
334
326
  "type": "tuple"
335
327
  }
336
328
  ],
@@ -347,30 +339,30 @@
347
339
  },
348
340
  {
349
341
  "inputs": [
350
- {
351
- "internalType": "uint256",
352
- "name": "exactYtIn",
353
- "type": "uint256"
354
- },
355
342
  {
356
343
  "internalType": "address",
357
344
  "name": "receiver",
358
345
  "type": "address"
359
346
  },
360
- {
361
- "internalType": "address[]",
362
- "name": "path",
363
- "type": "address[]"
364
- },
365
347
  {
366
348
  "internalType": "address",
367
349
  "name": "market",
368
350
  "type": "address"
369
351
  },
352
+ {
353
+ "internalType": "uint256",
354
+ "name": "exactYtIn",
355
+ "type": "uint256"
356
+ },
370
357
  {
371
358
  "internalType": "uint256",
372
359
  "name": "minRawTokenOut",
373
360
  "type": "uint256"
361
+ },
362
+ {
363
+ "internalType": "address[]",
364
+ "name": "path",
365
+ "type": "address[]"
374
366
  }
375
367
  ],
376
368
  "name": "swapExactYtForRawToken",
@@ -411,7 +403,7 @@
411
403
  "outputs": [
412
404
  {
413
405
  "internalType": "uint256",
414
- "name": "",
406
+ "name": "netScyOut",
415
407
  "type": "uint256"
416
408
  }
417
409
  ],
@@ -445,7 +437,7 @@
445
437
  "outputs": [
446
438
  {
447
439
  "internalType": "uint256",
448
- "name": "",
440
+ "name": "netScyIn",
449
441
  "type": "uint256"
450
442
  }
451
443
  ],
@@ -469,6 +461,11 @@
469
461
  "name": "exactScyOut",
470
462
  "type": "uint256"
471
463
  },
464
+ {
465
+ "internalType": "uint256",
466
+ "name": "maxYtIn",
467
+ "type": "uint256"
468
+ },
472
469
  {
473
470
  "components": [
474
471
  {
@@ -498,7 +495,7 @@
498
495
  }
499
496
  ],
500
497
  "internalType": "struct ApproxParams",
501
- "name": "approx",
498
+ "name": "guessYtIn",
502
499
  "type": "tuple"
503
500
  }
504
501
  ],
@@ -514,8 +511,8 @@
514
511
  "type": "function"
515
512
  }
516
513
  ],
517
- "bytecode": "0x60c06040523480156200001157600080fd5b5060405162003c2738038062003c27833981016040819052620000349162000069565b6001600160a01b039182166080521660a052620000a1565b80516001600160a01b03811681146200006457600080fd5b919050565b600080604083850312156200007d57600080fd5b62000088836200004c565b915062000098602084016200004c565b90509250929050565b60805160a051613b45620000e260003960008181610115015281816113b90152818161141b01528181611e220152611e650152600060e10152613b456000f3fe608060405234801561001057600080fd5b50600436106100785760003560e01c806317ad7cd21461007d57806321aab859146100a35780633332bf08146100b6578063452b4bdb146100c957806359f571e8146100dc5780638a38466e14610110578063d8cc26aa14610137578063fce5228b1461014a575b600080fd5b61009061008b366004613304565b61015d565b6040519081526020015b60405180910390f35b6100906100b1366004613357565b610176565b6100906100c43660046133e1565b610184565b6100906100d7366004613304565b61025b565b6101037f000000000000000000000000000000000000000000000000000000000000000081565b60405161009a919061345c565b6101037f000000000000000000000000000000000000000000000000000000000000000081565b610090610145366004613357565b61026b565b610090610158366004613470565b61027b565b600061016d858585856001610327565b95945050505050565b600061016d8585858561054a565b600080836001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b815260040160606040518083038186803b1580156101c057600080fd5b505afa1580156101d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f891906134f2565b50509050600061020c82868b60018061080a565b905061024e8282868b8b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509250610ac5915050565b9998505050505050505050565b600061016d858585856001610cfd565b600061016d85858585600161080a565b6000806000846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b815260040160606040518083038186803b1580156102b957600080fd5b505afa1580156102cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f191906134f2565b925050915060006103098a846001858c8c6001610efe565b9050610319898783886000610cfd565b9a9950505050505050505050565b604051631cf38c7b60e11b81526000600482018190529081906001600160a01b038716906339e718f6906024016101806040518083038186803b15801561036d57600080fd5b505afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a5919061354a565b9050600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b815260040160606040518083038186803b1580156103e357600080fd5b505afa1580156103f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041b91906134f2565b925050915061043661042c8361112d565b849089428a6111a8565b5093508415610454576104546001600160a01b03821633838761132a565b876001600160a01b031663b4c3da46828660001960038e60405160200161047c92919061360d565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016104aa949392919061368b565b6040805180830381600087803b1580156104c357600080fd5b505af11580156104d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fb91906136c2565b5050886001600160a01b0316600080516020613af083398151915261051f86611388565b6105288a61139c565b6040516105369291906136e6565b60405180910390a250505095945050505050565b6000806000856001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b815260040160606040518083038186803b15801561058857600080fd5b505afa15801561059c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c091906134f2565b92505091506000826001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016105f3919061345c565b60206040518083038186803b15801561060b57600080fd5b505afa15801561061f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064391906136f4565b9050866001600160a01b0316631128c55e8388600180338e60405160200161066d9392919061370d565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161069b949392919061368b565b6040805180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ec91906136c2565b50506040516370a0823160e01b81526001600160a01b038416906370a082319061071a908b9060040161345c565b60206040518083038186803b15801561073257600080fd5b505afa158015610746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a91906136f4565b6107749082613753565b9350848411156107be5760405162461bcd60e51b815260206004820152601060248201526f195e18d95959081bdd5d081b1a5b5a5d60821b60448201526064015b60405180910390fd5b876001600160a01b0316600080516020613af08339815191526107e08861139c565b6107e987611388565b6040516107f79291906136e6565b60405180910390a2505050949350505050565b6000806000866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b815260040160606040518083038186803b15801561084857600080fd5b505afa15801561085c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088091906134f2565b92505091506000826001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016108b3919061345c565b60206040518083038186803b1580156108cb57600080fd5b505afa1580156108df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090391906136f4565b90508415610920576109206001600160a01b03831633848a61132a565b876001600160a01b031663b4c3da46838960001960008e60405160200161094892919061360d565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401610976949392919061368b565b6040805180830381600087803b15801561098f57600080fd5b505af11580156109a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c791906136c2565b50506040516370a0823160e01b815281906001600160a01b038516906370a08231906109f7908d9060040161345c565b60206040518083038186803b158015610a0f57600080fd5b505afa158015610a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4791906136f4565b610a519190613753565b935085841015610a9a5760405162461bcd60e51b8152602060048201526014602482015273125394d551919250d251539517d4d0d657d3d55560621b60448201526064016107b5565b886001600160a01b0316600080516020613af0833981519152610abc89611388565b6105288761139c565b60008115610ae257610ae26001600160a01b03881633898961132a565b600083600081518110610af757610af761376a565b60200260200101519050835160011415610b945760405163c1129b1b60e01b81526001600160a01b0389169063c1129b1b90610b3b90889085908b90600401613780565b602060405180830381600087803b158015610b5557600080fd5b505af1158015610b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8d91906136f4565b9150610c75565b6000886001600160a01b031663c1129b1b610bae876113b2565b8460016040518463ffffffff1660e01b8152600401610bcf93929190613780565b602060405180830381600087803b158015610be957600080fd5b505af1158015610bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2191906136f4565b9050610c2e858288611413565b925086831015610c735760405162461bcd60e51b815260206004820152601060248201526f1a5b9cdd59999a58da595b9d081bdd5d60821b60448201526064016107b5565b505b8360018551610c849190613753565b81518110610c9457610c9461376a565b60200260200101516001600160a01b0316886001600160a01b0316336001600160a01b03167f04b1fcce47c6812ab96e0c8493a043d013e688798285effca7507448bc763dea8a86604051610cea9291906136e6565b60405180910390a4509695505050505050565b6000806000866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b815260040160606040518083038186803b158015610d3b57600080fd5b505afa158015610d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7391906134f2565b604051631cf38c7b60e11b81526000600482018190529395509093506001600160a01b038a1691506339e718f6906024016101806040518083038186803b158015610dbd57600080fd5b505afa158015610dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df5919061354a565b9050610e0d610e038461112d565b829089428a61147f565b5093508415610e2b57610e2b6001600160a01b03841633848a61132a565b876001600160a01b0316631128c55e8386600160028e604051602001610e5292919061360d565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401610e80949392919061368b565b6040805180830381600087803b158015610e9957600080fd5b505af1158015610ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed191906136c2565b5050886001600160a01b0316600080516020613af0833981519152610ef58661139c565b6105288a611388565b60008115610fe9576001831415610f5357610f4e33888a87876000818110610f2857610f2861376a565b9050602002016020810190610f3d91906137a4565b6001600160a01b031692919061132a565b610fe9565b610fa733610f938686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506113b292505050565b8a87876000818110610f2857610f2861376a565b610fe78484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c92508b91506114139050565b505b60008484610ff8600182613753565b8181106110075761100761376a565b905060200201602081019061101c91906137a4565b6040516334c44e9d60e11b81529091506001600160a01b038916906369889d3a9061104f90899085908c90600401613780565b602060405180830381600087803b15801561106957600080fd5b505af115801561107d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a191906136f4565b9150876001600160a01b0316858560008181106110c0576110c061376a565b90506020020160208101906110d591906137a4565b6001600160a01b0316336001600160a01b03167f9a46898979f8e41b23cc1fa2b4875c37a6e8c890596f5d4e3c3199f3cf7556b48c866040516111199291906136e6565b60405180910390a450979650505050505050565b6000816001600160a01b031663f65d6fc86040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561116a57600080fd5b505af115801561117e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a291906136f4565b92915050565b600080600085116111cb5760405162461bcd60e51b81526004016107b5906137c1565b6111d48361162e565b6111f05760405162461bcd60e51b81526004016107b5906137eb565b60006111fc8787611656565b9050600061120b898988611669565b90506000198560200151141561122d57885161122790826117a4565b60208601525b60005b85606001518110156112e95760006112488288611866565b90506000611261846112598461139c565b8e91906118ad565b5090506000611277611272836119ba565b6119c5565b905060006112858285613753565b90508681106112cc57838a60200181815250506112a781888c608001516119d4565b156112c757836112b78e83611a08565b9850985050505050505050611320565b6112da565b6112d784600161381a565b8a525b84600101945050505050611230565b5060405162461bcd60e51b815260206004820152600b60248201526a185c1c1c9bde0819985a5b60aa1b60448201526064016107b5565b9550959350505050565b611382846323b872dd60e01b85858560405160240161134b93929190613780565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611a14565b50505050565b60006113938261139c565b6111a290613832565b6000600160ff1b82106113ae57600080fd5b5090565b60006111a27f0000000000000000000000000000000000000000000000000000000000000000836000815181106113eb576113eb61376a565b6020026020010151846001815181106114065761140661376a565b6020026020010151611aeb565b6000806114417f00000000000000000000000000000000000000000000000000000000000000008587611bba565b905061144e818685611d3f565b806001825161145d9190613753565b8151811061146d5761146d61376a565b60200260200101519150509392505050565b600080600085116114a25760405162461bcd60e51b81526004016107b5906137c1565b6114ab8361162e565b6114c75760405162461bcd60e51b81526004016107b5906137eb565b60006114d38787611656565b9050600080806114e48b8b8a611669565b90506000198760200151141561150c576115068b600001518260200151611f34565b60208801525b60005b87606001518110156112e9576115466040518060800160405280600081526020016000815260200160008152602001600081525090565b611550828a611866565b8082528d51611560918588611f4f565b955093508361158257805161157790600190613753565b60208a01525061150f565b61159b836115938360000151611388565b8f91906118ad565b50602082018190526115ac906119c5565b6040820181905281516115bf9190613753565b6060820181905286106116115780518952606081015160808a01516115e691908890611fa2565b1561160c57805160608201516115fd908e90611a08565b97509750505050505050611320565b611625565b805161161f90600190613753565b60208a01525b5060010161150f565b600081602001518260000151111580156111a257505060800151670de0b6b3a7640000101590565b60006116628383611fd0565b9392505050565b6116946040518060800160405280600081526020016000815260200160008152602001600081525090565b83610100015182106116d95760405162461bcd60e51b815260206004820152600e60248201526d1b585c9ad95d08195e1c1a5c995960921b60448201526064016107b5565b6000828561010001516116ec9190613753565b90506116f88582611fef565b8252602085015161170a908590612073565b60208301528451158015906117225750602082015115155b6117655760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206d61726b657420737461746560601b60448201526064016107b5565b611783856000015186610140015184602001518560000151856120aa565b604083015260c0850151611797908261211a565b6060830152509392505050565b6000806117eb6117e6846000015185604001516117d68760600151670de0b6b3a764000061214e90919063ffffffff16565b6117e0919061384f565b9061214e565b612171565b9050600061180b611804670de0b6b3a76400008461388e565b8390612586565b90506000611829856020015187611822919061388e565b839061214e565b90506000611837828861384f565b90506103e8611845826119c5565b611851906103e76138cf565b61185b9190613904565b979650505050505050565b6000821580156118795750604082015115155b15611889575060408101516111a2565b6020820151825160029161189c9161381a565b6118a69190613904565b90506111a2565b60008060006118cf8660000151866020015187600001518860400151886125ac565b905060006118e56118e08684612586565b6119ba565b606087015190915060008613156119505760006119028483612586565b9050670de0b6b3a764000081121561192c5760405162461bcd60e51b81526004016107b590613918565b61194861194183670de0b6b3a764000061384f565b849061214e565b91505061197d565b61197a8161196681670de0b6b3a764000061384f565b6119709085613947565b6118e091906139cc565b90505b606461198d89610120015161139c565b6119979083613947565b6119a191906139cc565b93506119ad818361384f565b9450505050935093915050565b60006111a282613832565b6000808212156113ae57600080fd5b6000828410158015611a0057506119fc836119f784670de0b6b3a764000061381a565b612676565b8411155b949350505050565b60006116628383612696565b6000611a69826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126ab9092919063ffffffff16565b805190915015611ae65780806020019051810190611a8791906139fa565b611ae65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107b5565b505050565b6000806000611afa85856126ba565b6040516001600160601b0319606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001611b989291906001600160f81b0319815260609290921b6001600160601b031916600183015260158201527f0bbca9af0511ad1a1da383135cf3a8d2ac620e549ef9f6ae3a4c33c2fed0af91603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b6060600282511015611c095760405162461bcd60e51b8152602060048201526018602482015277094deca98d2c4e4c2e4f27440929cac82989288bea082a8960431b60448201526064016107b5565b81516001600160401b03811115611c2257611c2261323a565b604051908082528060200260200182016040528015611c4b578160200160208202803683370190505b5090508281600081518110611c6257611c6261376a565b60200260200101818152505060005b60018351611c7f9190613753565b811015611d3757600080611cd287868581518110611c9f57611c9f61376a565b602002602001015187866001611cb5919061381a565b81518110611cc557611cc561376a565b602002602001015161279f565b91509150611cfa848481518110611ceb57611ceb61376a565b60200260200101518383612878565b84611d0685600161381a565b81518110611d1657611d1661376a565b60200260200101818152505050508080611d2f90613a1c565b915050611c71565b509392505050565b60005b60018351611d509190613753565b81101561138257600080848381518110611d6c57611d6c61376a565b602002602001015185846001611d82919061381a565b81518110611d9257611d9261376a565b6020026020010151915091506000611daa83836126ba565b509050600087611dbb86600161381a565b81518110611dcb57611dcb61376a565b60200260200101519050600080836001600160a01b0316866001600160a01b031614611df957826000611dfd565b6000835b91509150600060028a51611e119190613753565b8810611e1d5788611e5e565b611e5e7f0000000000000000000000000000000000000000000000000000000000000000878c611e4e8c600261381a565b815181106114065761140661376a565b9050611e8b7f00000000000000000000000000000000000000000000000000000000000000008888611aeb565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015611ec8576020820181803683370190505b506040518563ffffffff1660e01b8152600401611ee89493929190613a37565b600060405180830381600087803b158015611f0257600080fd5b505af1158015611f16573d6000803e3d6000fd5b50505050505050505050508080611f2c90613a1c565b915050611d42565b60006001611f456112728585612981565b6116629190613753565b600080828511611f6457506001905081611f99565b6000611f7987611f7388611388565b87612997565b905060008112611f90576001869250925050611f99565b60008492509250505b94509492505050565b6000828411158015611a005750611fc5836119f784670de0b6b3a7640000613753565b909310159392505050565b6000670de0b6b3a7640000611fe584846138cf565b6116629190613904565b6000611ffa8261139c565b61201161200c620151806101686138cf565b61139c565b8460a001516120209190613947565b61202a91906139cc565b9050600081136111a25760405162461bcd60e51b8152602060048201526014602482015273726174655363616c617220756e646572666c6f7760601b60448201526064016107b5565b60008060008312612085576001612089565b6000195b90506120a061200c8561209b86612a96565b611fd0565b611a009082613947565b6000806120b7868461211a565b9050670de0b6b3a76400008112156120e15760405162461bcd60e51b81526004016107b590613918565b60006120f76120f0878a61388e565b8990612586565b9050600061210482612aad565b90506121108187612586565b61024e908461384f565b60008061212c620151806101686138cf565b61213684866138cf565b6121409190613904565b9050611a006117e68261139c565b60008061215b8385613947565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015612196575068070c1cc73b00c800008213155b6121d55760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016107b5565b600082121561220d576121ea82600003612171565b6a0c097ce7bc90715b34b9f160241b81612206576122066138ee565b0592915050565b60006806f05b59d3b2000000831261224b57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b612281565b6803782dace9d9000000831261227d57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380612281565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126122d15768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261230d576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261234757682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412612381576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126123ba57680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126123f35768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261242c576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126124655768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b60008061259b670de0b6b3a764000085613947565b9050828181612168576121686138ee565b6000806125b98784612b2d565b905060006125ca611804888a61388e565b9050670d529ae9e860000081131561261e5760405162461bcd60e51b81526020600482015260176024820152761b585e081c1c9bdc1bdc9d1a5bdb88195e18d959591959604a1b60448201526064016107b5565b600061262982612aad565b9050856126368289612586565b612640919061388e565b9350670de0b6b3a764000084121561266a5760405162461bcd60e51b81526004016107b590613918565b50505095945050505050565b60008061268383856138cf565b670de0b6b3a76400009004949350505050565b600082611fe5670de0b6b3a7640000846138cf565b6060611a008484600085612b70565b600080826001600160a01b0316846001600160a01b0316141561271f5760405162461bcd60e51b815260206004820152601f60248201527f4a6f654c6962726172793a204944454e544943414c5f4144445245535345530060448201526064016107b5565b826001600160a01b0316846001600160a01b03161061273f578284612742565b83835b90925090506001600160a01b0382166127985760405162461bcd60e51b81526020600482015260186024820152774a6f654c6962726172793a205a45524f5f4144445245535360401b60448201526064016107b5565b9250929050565b60008060006127ae85856126ba565b5090506000806127bf888888611aeb565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156127f757600080fd5b505afa15801561280b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282f9190613a7b565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b031614612866578082612869565b81815b90999098509650505050505050565b60008084116128d75760405162461bcd60e51b815260206004820152602560248201527f4a6f654c6962726172793a20494e53554646494349454e545f494e5055545f416044820152641353d5539560da1b60648201526084016107b5565b6000831180156128e75750600082115b61293e5760405162461bcd60e51b815260206004820152602260248201527f4a6f654c6962726172793a20494e53554646494349454e545f4c495155494449604482015261545960f01b60648201526084016107b5565b600061294c856103e56138cf565b9050600061295a84836138cf565b905060008261296b876103e86138cf565b612975919061381a565b905061185b8183613904565b60008183126129905781611662565b5090919050565b6000806129a384613832565b905060008184602001516129b7919061384f565b905060006129c5878461388e565b90506000821380156129d75750600081135b612a185760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b60448201526064016107b5565b6000612a46612a278484613947565b6020880151612a36908b61388e565b612a409087613947565b90612586565b90506000612a5c612a578486612586565b612c96565b8751909150600090612a7790670de0b6b3a764000090612586565b9050612a87816117e0848661384f565b8860400151610319919061384f565b60008082136113ae57612aa882613832565b6111a2565b6000670de0b6b3a7640000821415612b045760405162461bcd60e51b815260206004820152601a60248201527970726f706f7274696f6e206d757374206e6f74206265206f6e6560301b60448201526064016107b5565b6000612b22612b1b84670de0b6b3a764000061384f565b8490612586565b905061166281612c96565b600081831215612b6a5760405162461bcd60e51b81526020600482015260086024820152674e4547415449564560c01b60448201526064016107b5565b50900390565b606082471015612bd15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107b5565b6001600160a01b0385163b612c285760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107b5565b600080866001600160a01b03168587604051612c449190613ac0565b60006040518083038185875af1925050503d8060008114612c81576040519150601f19603f3d011682016040523d82523d6000602084013e612c86565b606091505b509150915061185b828286612d27565b6000808213612cd75760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016107b5565b670c7d713b49da000082138015612cf55750670f43fc2c04ee000082125b15612d1957670de0b6b3a7640000612d0c83612d60565b81612206576122066138ee565b6111a282612e7f565b919050565b60608315612d36575081611662565b825115612d465782518084602001fd5b8160405162461bcd60e51b81526004016107b59190613adc565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612da157612da16138ee565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215612ec057612eb7826a0c097ce7bc90715b34b9f160241b81612eb157612eb16138ee565b05612e7f565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312612f0b5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312612f42576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312612f8a576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312612fc5576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312612ffc57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e2831261303357690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126130685768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261309357680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d83126130c8576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f177578893793783126130fd576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312613131576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312613165576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161318e5761318e6138ee565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b038116811461323757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b038111828210171561328157634e487b7160e01b600052604160045260246000fd5b60405290565b600060a0828403121561329957600080fd5b60405160a081016001600160401b03811182821017156132c957634e487b7160e01b600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b600080600080610100858703121561331b57600080fd5b843561332681613222565b9350602085013561333681613222565b92506040850135915061334c8660608701613287565b905092959194509250565b6000806000806080858703121561336d57600080fd5b843561337881613222565b9350602085013561338881613222565b93969395505050506040820135916060013590565b60008083601f8401126133af57600080fd5b5081356001600160401b038111156133c657600080fd5b6020830191508360208260051b850101111561279857600080fd5b60008060008060008060a087890312156133fa57600080fd5b86359550602087013561340c81613222565b945060408701356001600160401b0381111561342757600080fd5b61343389828a0161339d565b909550935050606087013561344781613222565b80925050608087013590509295509295509295565b6001600160a01b0391909116815260200190565b600080600080600080610120878903121561348a57600080fd5b86359550602087013561349c81613222565b945060408701356001600160401b038111156134b757600080fd5b6134c389828a0161339d565b90955093505060608701356134d781613222565b91506134e68860808901613287565b90509295509295509295565b60008060006060848603121561350757600080fd5b835161351281613222565b602085015190935061352381613222565b604085015190925061353481613222565b809150509250925092565b8051612d2281613222565b6000610180828403121561355d57600080fd5b613565613250565b825181526020830151602082015260408301516040820152606083015160608201526135936080840161353f565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b6004811061360957634e487b7160e01b600052602160045260246000fd5b9052565b6040810161361b82856135eb565b6001600160a01b039290921660209190910152919050565b60005b8381101561364e578181015183820152602001613636565b838111156113825750506000910152565b60008151808452613677816020860160208601613633565b601f01601f19169290920160200192915050565b60018060a01b03851681528360208201528260408201526080606082015260006136b8608083018461365f565b9695505050505050565b600080604083850312156136d557600080fd5b505080516020909101519092909150565b918252602082015260400190565b60006020828403121561370657600080fd5b5051919050565b6060810161371b82866135eb565b6001600160a01b03938416602083015291909216604090920191909152919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156137655761376561373d565b500390565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156137b657600080fd5b813561166281613222565b60208082526010908201526f34b73b30b634b21036b0bc29b1bca4b760811b604082015260600190565b6020808252601590820152740d2dcecc2d8d2c840c2e0e0e4def040c2e0e0e4def605b1b604082015260600190565b6000821982111561382d5761382d61373d565b500190565b6000600160ff1b8214156138485761384861373d565b5060000390565b60008083128015600160ff1b85018412161561386d5761386d61373d565b6001600160ff1b03840183138116156138885761388861373d565b50500390565b600080821280156001600160ff1b03849003851316156138b0576138b061373d565b600160ff1b83900384128116156138c9576138c961373d565b50500190565b60008160001904831182151516156138e9576138e961373d565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613913576139136138ee565b500490565b60208082526015908201527465786368616e676520726174652062656c6f77203160581b604082015260600190565b60006001600160ff1b038184138284138082168684048611161561396d5761396d61373d565b600160ff1b600087128281168783058912161561398c5761398c61373d565b600087129250878205871284841616156139a8576139a861373d565b878505871281841616156139be576139be61373d565b505050929093029392505050565b6000826139db576139db6138ee565b600160ff1b8214600019841416156139f5576139f561373d565b500590565b600060208284031215613a0c57600080fd5b8151801515811461166257600080fd5b6000600019821415613a3057613a3061373d565b5060010190565b84815283602082015260018060a01b03831660408201526080606082015260006136b8608083018461365f565b80516001600160701b0381168114612d2257600080fd5b600080600060608486031215613a9057600080fd5b613a9984613a64565b9250613aa760208501613a64565b9150604084015163ffffffff8116811461353457600080fd5b60008251613ad2818460208701613633565b9190910192915050565b602081526000611662602083018461365f56fe6815898fa13ba3e87e786b79b782a49a06102f17cab91acc152d52eb40c09bdfa264697066735822122007cd1ddfa46524aa38661d24d436c807b02af67b633b3a43531a63f1cd7dc65264736f6c63430008090033",
518
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100785760003560e01c806317ad7cd21461007d57806321aab859146100a35780633332bf08146100b6578063452b4bdb146100c957806359f571e8146100dc5780638a38466e14610110578063d8cc26aa14610137578063fce5228b1461014a575b600080fd5b61009061008b366004613304565b61015d565b6040519081526020015b60405180910390f35b6100906100b1366004613357565b610176565b6100906100c43660046133e1565b610184565b6100906100d7366004613304565b61025b565b6101037f000000000000000000000000000000000000000000000000000000000000000081565b60405161009a919061345c565b6101037f000000000000000000000000000000000000000000000000000000000000000081565b610090610145366004613357565b61026b565b610090610158366004613470565b61027b565b600061016d858585856001610327565b95945050505050565b600061016d8585858561054a565b600080836001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b815260040160606040518083038186803b1580156101c057600080fd5b505afa1580156101d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f891906134f2565b50509050600061020c82868b60018061080a565b905061024e8282868b8b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509250610ac5915050565b9998505050505050505050565b600061016d858585856001610cfd565b600061016d85858585600161080a565b6000806000846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b815260040160606040518083038186803b1580156102b957600080fd5b505afa1580156102cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f191906134f2565b925050915060006103098a846001858c8c6001610efe565b9050610319898783886000610cfd565b9a9950505050505050505050565b604051631cf38c7b60e11b81526000600482018190529081906001600160a01b038716906339e718f6906024016101806040518083038186803b15801561036d57600080fd5b505afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a5919061354a565b9050600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b815260040160606040518083038186803b1580156103e357600080fd5b505afa1580156103f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041b91906134f2565b925050915061043661042c8361112d565b849089428a6111a8565b5093508415610454576104546001600160a01b03821633838761132a565b876001600160a01b031663b4c3da46828660001960038e60405160200161047c92919061360d565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016104aa949392919061368b565b6040805180830381600087803b1580156104c357600080fd5b505af11580156104d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fb91906136c2565b5050886001600160a01b0316600080516020613af083398151915261051f86611388565b6105288a61139c565b6040516105369291906136e6565b60405180910390a250505095945050505050565b6000806000856001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b815260040160606040518083038186803b15801561058857600080fd5b505afa15801561059c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c091906134f2565b92505091506000826001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016105f3919061345c565b60206040518083038186803b15801561060b57600080fd5b505afa15801561061f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064391906136f4565b9050866001600160a01b0316631128c55e8388600180338e60405160200161066d9392919061370d565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161069b949392919061368b565b6040805180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ec91906136c2565b50506040516370a0823160e01b81526001600160a01b038416906370a082319061071a908b9060040161345c565b60206040518083038186803b15801561073257600080fd5b505afa158015610746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a91906136f4565b6107749082613753565b9350848411156107be5760405162461bcd60e51b815260206004820152601060248201526f195e18d95959081bdd5d081b1a5b5a5d60821b60448201526064015b60405180910390fd5b876001600160a01b0316600080516020613af08339815191526107e08861139c565b6107e987611388565b6040516107f79291906136e6565b60405180910390a2505050949350505050565b6000806000866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b815260040160606040518083038186803b15801561084857600080fd5b505afa15801561085c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088091906134f2565b92505091506000826001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016108b3919061345c565b60206040518083038186803b1580156108cb57600080fd5b505afa1580156108df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090391906136f4565b90508415610920576109206001600160a01b03831633848a61132a565b876001600160a01b031663b4c3da46838960001960008e60405160200161094892919061360d565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401610976949392919061368b565b6040805180830381600087803b15801561098f57600080fd5b505af11580156109a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c791906136c2565b50506040516370a0823160e01b815281906001600160a01b038516906370a08231906109f7908d9060040161345c565b60206040518083038186803b158015610a0f57600080fd5b505afa158015610a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4791906136f4565b610a519190613753565b935085841015610a9a5760405162461bcd60e51b8152602060048201526014602482015273125394d551919250d251539517d4d0d657d3d55560621b60448201526064016107b5565b886001600160a01b0316600080516020613af0833981519152610abc89611388565b6105288761139c565b60008115610ae257610ae26001600160a01b03881633898961132a565b600083600081518110610af757610af761376a565b60200260200101519050835160011415610b945760405163c1129b1b60e01b81526001600160a01b0389169063c1129b1b90610b3b90889085908b90600401613780565b602060405180830381600087803b158015610b5557600080fd5b505af1158015610b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8d91906136f4565b9150610c75565b6000886001600160a01b031663c1129b1b610bae876113b2565b8460016040518463ffffffff1660e01b8152600401610bcf93929190613780565b602060405180830381600087803b158015610be957600080fd5b505af1158015610bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2191906136f4565b9050610c2e858288611413565b925086831015610c735760405162461bcd60e51b815260206004820152601060248201526f1a5b9cdd59999a58da595b9d081bdd5d60821b60448201526064016107b5565b505b8360018551610c849190613753565b81518110610c9457610c9461376a565b60200260200101516001600160a01b0316886001600160a01b0316336001600160a01b03167f04b1fcce47c6812ab96e0c8493a043d013e688798285effca7507448bc763dea8a86604051610cea9291906136e6565b60405180910390a4509695505050505050565b6000806000866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b815260040160606040518083038186803b158015610d3b57600080fd5b505afa158015610d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7391906134f2565b604051631cf38c7b60e11b81526000600482018190529395509093506001600160a01b038a1691506339e718f6906024016101806040518083038186803b158015610dbd57600080fd5b505afa158015610dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df5919061354a565b9050610e0d610e038461112d565b829089428a61147f565b5093508415610e2b57610e2b6001600160a01b03841633848a61132a565b876001600160a01b0316631128c55e8386600160028e604051602001610e5292919061360d565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401610e80949392919061368b565b6040805180830381600087803b158015610e9957600080fd5b505af1158015610ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed191906136c2565b5050886001600160a01b0316600080516020613af0833981519152610ef58661139c565b6105288a611388565b60008115610fe9576001831415610f5357610f4e33888a87876000818110610f2857610f2861376a565b9050602002016020810190610f3d91906137a4565b6001600160a01b031692919061132a565b610fe9565b610fa733610f938686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506113b292505050565b8a87876000818110610f2857610f2861376a565b610fe78484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c92508b91506114139050565b505b60008484610ff8600182613753565b8181106110075761100761376a565b905060200201602081019061101c91906137a4565b6040516334c44e9d60e11b81529091506001600160a01b038916906369889d3a9061104f90899085908c90600401613780565b602060405180830381600087803b15801561106957600080fd5b505af115801561107d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a191906136f4565b9150876001600160a01b0316858560008181106110c0576110c061376a565b90506020020160208101906110d591906137a4565b6001600160a01b0316336001600160a01b03167f9a46898979f8e41b23cc1fa2b4875c37a6e8c890596f5d4e3c3199f3cf7556b48c866040516111199291906136e6565b60405180910390a450979650505050505050565b6000816001600160a01b031663f65d6fc86040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561116a57600080fd5b505af115801561117e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a291906136f4565b92915050565b600080600085116111cb5760405162461bcd60e51b81526004016107b5906137c1565b6111d48361162e565b6111f05760405162461bcd60e51b81526004016107b5906137eb565b60006111fc8787611656565b9050600061120b898988611669565b90506000198560200151141561122d57885161122790826117a4565b60208601525b60005b85606001518110156112e95760006112488288611866565b90506000611261846112598461139c565b8e91906118ad565b5090506000611277611272836119ba565b6119c5565b905060006112858285613753565b90508681106112cc57838a60200181815250506112a781888c608001516119d4565b156112c757836112b78e83611a08565b9850985050505050505050611320565b6112da565b6112d784600161381a565b8a525b84600101945050505050611230565b5060405162461bcd60e51b815260206004820152600b60248201526a185c1c1c9bde0819985a5b60aa1b60448201526064016107b5565b9550959350505050565b611382846323b872dd60e01b85858560405160240161134b93929190613780565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611a14565b50505050565b60006113938261139c565b6111a290613832565b6000600160ff1b82106113ae57600080fd5b5090565b60006111a27f0000000000000000000000000000000000000000000000000000000000000000836000815181106113eb576113eb61376a565b6020026020010151846001815181106114065761140661376a565b6020026020010151611aeb565b6000806114417f00000000000000000000000000000000000000000000000000000000000000008587611bba565b905061144e818685611d3f565b806001825161145d9190613753565b8151811061146d5761146d61376a565b60200260200101519150509392505050565b600080600085116114a25760405162461bcd60e51b81526004016107b5906137c1565b6114ab8361162e565b6114c75760405162461bcd60e51b81526004016107b5906137eb565b60006114d38787611656565b9050600080806114e48b8b8a611669565b90506000198760200151141561150c576115068b600001518260200151611f34565b60208801525b60005b87606001518110156112e9576115466040518060800160405280600081526020016000815260200160008152602001600081525090565b611550828a611866565b8082528d51611560918588611f4f565b955093508361158257805161157790600190613753565b60208a01525061150f565b61159b836115938360000151611388565b8f91906118ad565b50602082018190526115ac906119c5565b6040820181905281516115bf9190613753565b6060820181905286106116115780518952606081015160808a01516115e691908890611fa2565b1561160c57805160608201516115fd908e90611a08565b97509750505050505050611320565b611625565b805161161f90600190613753565b60208a01525b5060010161150f565b600081602001518260000151111580156111a257505060800151670de0b6b3a7640000101590565b60006116628383611fd0565b9392505050565b6116946040518060800160405280600081526020016000815260200160008152602001600081525090565b83610100015182106116d95760405162461bcd60e51b815260206004820152600e60248201526d1b585c9ad95d08195e1c1a5c995960921b60448201526064016107b5565b6000828561010001516116ec9190613753565b90506116f88582611fef565b8252602085015161170a908590612073565b60208301528451158015906117225750602082015115155b6117655760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206d61726b657420737461746560601b60448201526064016107b5565b611783856000015186610140015184602001518560000151856120aa565b604083015260c0850151611797908261211a565b6060830152509392505050565b6000806117eb6117e6846000015185604001516117d68760600151670de0b6b3a764000061214e90919063ffffffff16565b6117e0919061384f565b9061214e565b612171565b9050600061180b611804670de0b6b3a76400008461388e565b8390612586565b90506000611829856020015187611822919061388e565b839061214e565b90506000611837828861384f565b90506103e8611845826119c5565b611851906103e76138cf565b61185b9190613904565b979650505050505050565b6000821580156118795750604082015115155b15611889575060408101516111a2565b6020820151825160029161189c9161381a565b6118a69190613904565b90506111a2565b60008060006118cf8660000151866020015187600001518860400151886125ac565b905060006118e56118e08684612586565b6119ba565b606087015190915060008613156119505760006119028483612586565b9050670de0b6b3a764000081121561192c5760405162461bcd60e51b81526004016107b590613918565b61194861194183670de0b6b3a764000061384f565b849061214e565b91505061197d565b61197a8161196681670de0b6b3a764000061384f565b6119709085613947565b6118e091906139cc565b90505b606461198d89610120015161139c565b6119979083613947565b6119a191906139cc565b93506119ad818361384f565b9450505050935093915050565b60006111a282613832565b6000808212156113ae57600080fd5b6000828410158015611a0057506119fc836119f784670de0b6b3a764000061381a565b612676565b8411155b949350505050565b60006116628383612696565b6000611a69826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126ab9092919063ffffffff16565b805190915015611ae65780806020019051810190611a8791906139fa565b611ae65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107b5565b505050565b6000806000611afa85856126ba565b6040516001600160601b0319606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001611b989291906001600160f81b0319815260609290921b6001600160601b031916600183015260158201527f0bbca9af0511ad1a1da383135cf3a8d2ac620e549ef9f6ae3a4c33c2fed0af91603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b6060600282511015611c095760405162461bcd60e51b8152602060048201526018602482015277094deca98d2c4e4c2e4f27440929cac82989288bea082a8960431b60448201526064016107b5565b81516001600160401b03811115611c2257611c2261323a565b604051908082528060200260200182016040528015611c4b578160200160208202803683370190505b5090508281600081518110611c6257611c6261376a565b60200260200101818152505060005b60018351611c7f9190613753565b811015611d3757600080611cd287868581518110611c9f57611c9f61376a565b602002602001015187866001611cb5919061381a565b81518110611cc557611cc561376a565b602002602001015161279f565b91509150611cfa848481518110611ceb57611ceb61376a565b60200260200101518383612878565b84611d0685600161381a565b81518110611d1657611d1661376a565b60200260200101818152505050508080611d2f90613a1c565b915050611c71565b509392505050565b60005b60018351611d509190613753565b81101561138257600080848381518110611d6c57611d6c61376a565b602002602001015185846001611d82919061381a565b81518110611d9257611d9261376a565b6020026020010151915091506000611daa83836126ba565b509050600087611dbb86600161381a565b81518110611dcb57611dcb61376a565b60200260200101519050600080836001600160a01b0316866001600160a01b031614611df957826000611dfd565b6000835b91509150600060028a51611e119190613753565b8810611e1d5788611e5e565b611e5e7f0000000000000000000000000000000000000000000000000000000000000000878c611e4e8c600261381a565b815181106114065761140661376a565b9050611e8b7f00000000000000000000000000000000000000000000000000000000000000008888611aeb565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015611ec8576020820181803683370190505b506040518563ffffffff1660e01b8152600401611ee89493929190613a37565b600060405180830381600087803b158015611f0257600080fd5b505af1158015611f16573d6000803e3d6000fd5b50505050505050505050508080611f2c90613a1c565b915050611d42565b60006001611f456112728585612981565b6116629190613753565b600080828511611f6457506001905081611f99565b6000611f7987611f7388611388565b87612997565b905060008112611f90576001869250925050611f99565b60008492509250505b94509492505050565b6000828411158015611a005750611fc5836119f784670de0b6b3a7640000613753565b909310159392505050565b6000670de0b6b3a7640000611fe584846138cf565b6116629190613904565b6000611ffa8261139c565b61201161200c620151806101686138cf565b61139c565b8460a001516120209190613947565b61202a91906139cc565b9050600081136111a25760405162461bcd60e51b8152602060048201526014602482015273726174655363616c617220756e646572666c6f7760601b60448201526064016107b5565b60008060008312612085576001612089565b6000195b90506120a061200c8561209b86612a96565b611fd0565b611a009082613947565b6000806120b7868461211a565b9050670de0b6b3a76400008112156120e15760405162461bcd60e51b81526004016107b590613918565b60006120f76120f0878a61388e565b8990612586565b9050600061210482612aad565b90506121108187612586565b61024e908461384f565b60008061212c620151806101686138cf565b61213684866138cf565b6121409190613904565b9050611a006117e68261139c565b60008061215b8385613947565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015612196575068070c1cc73b00c800008213155b6121d55760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016107b5565b600082121561220d576121ea82600003612171565b6a0c097ce7bc90715b34b9f160241b81612206576122066138ee565b0592915050565b60006806f05b59d3b2000000831261224b57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b612281565b6803782dace9d9000000831261227d57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380612281565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126122d15768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261230d576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261234757682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412612381576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126123ba57680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126123f35768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261242c576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126124655768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b60008061259b670de0b6b3a764000085613947565b9050828181612168576121686138ee565b6000806125b98784612b2d565b905060006125ca611804888a61388e565b9050670d529ae9e860000081131561261e5760405162461bcd60e51b81526020600482015260176024820152761b585e081c1c9bdc1bdc9d1a5bdb88195e18d959591959604a1b60448201526064016107b5565b600061262982612aad565b9050856126368289612586565b612640919061388e565b9350670de0b6b3a764000084121561266a5760405162461bcd60e51b81526004016107b590613918565b50505095945050505050565b60008061268383856138cf565b670de0b6b3a76400009004949350505050565b600082611fe5670de0b6b3a7640000846138cf565b6060611a008484600085612b70565b600080826001600160a01b0316846001600160a01b0316141561271f5760405162461bcd60e51b815260206004820152601f60248201527f4a6f654c6962726172793a204944454e544943414c5f4144445245535345530060448201526064016107b5565b826001600160a01b0316846001600160a01b03161061273f578284612742565b83835b90925090506001600160a01b0382166127985760405162461bcd60e51b81526020600482015260186024820152774a6f654c6962726172793a205a45524f5f4144445245535360401b60448201526064016107b5565b9250929050565b60008060006127ae85856126ba565b5090506000806127bf888888611aeb565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156127f757600080fd5b505afa15801561280b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282f9190613a7b565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b031614612866578082612869565b81815b90999098509650505050505050565b60008084116128d75760405162461bcd60e51b815260206004820152602560248201527f4a6f654c6962726172793a20494e53554646494349454e545f494e5055545f416044820152641353d5539560da1b60648201526084016107b5565b6000831180156128e75750600082115b61293e5760405162461bcd60e51b815260206004820152602260248201527f4a6f654c6962726172793a20494e53554646494349454e545f4c495155494449604482015261545960f01b60648201526084016107b5565b600061294c856103e56138cf565b9050600061295a84836138cf565b905060008261296b876103e86138cf565b612975919061381a565b905061185b8183613904565b60008183126129905781611662565b5090919050565b6000806129a384613832565b905060008184602001516129b7919061384f565b905060006129c5878461388e565b90506000821380156129d75750600081135b612a185760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b60448201526064016107b5565b6000612a46612a278484613947565b6020880151612a36908b61388e565b612a409087613947565b90612586565b90506000612a5c612a578486612586565b612c96565b8751909150600090612a7790670de0b6b3a764000090612586565b9050612a87816117e0848661384f565b8860400151610319919061384f565b60008082136113ae57612aa882613832565b6111a2565b6000670de0b6b3a7640000821415612b045760405162461bcd60e51b815260206004820152601a60248201527970726f706f7274696f6e206d757374206e6f74206265206f6e6560301b60448201526064016107b5565b6000612b22612b1b84670de0b6b3a764000061384f565b8490612586565b905061166281612c96565b600081831215612b6a5760405162461bcd60e51b81526020600482015260086024820152674e4547415449564560c01b60448201526064016107b5565b50900390565b606082471015612bd15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107b5565b6001600160a01b0385163b612c285760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107b5565b600080866001600160a01b03168587604051612c449190613ac0565b60006040518083038185875af1925050503d8060008114612c81576040519150601f19603f3d011682016040523d82523d6000602084013e612c86565b606091505b509150915061185b828286612d27565b6000808213612cd75760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016107b5565b670c7d713b49da000082138015612cf55750670f43fc2c04ee000082125b15612d1957670de0b6b3a7640000612d0c83612d60565b81612206576122066138ee565b6111a282612e7f565b919050565b60608315612d36575081611662565b825115612d465782518084602001fd5b8160405162461bcd60e51b81526004016107b59190613adc565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612da157612da16138ee565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215612ec057612eb7826a0c097ce7bc90715b34b9f160241b81612eb157612eb16138ee565b05612e7f565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312612f0b5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312612f42576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312612f8a576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312612fc5576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312612ffc57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e2831261303357690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126130685768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261309357680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d83126130c8576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f177578893793783126130fd576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312613131576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312613165576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161318e5761318e6138ee565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b038116811461323757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b038111828210171561328157634e487b7160e01b600052604160045260246000fd5b60405290565b600060a0828403121561329957600080fd5b60405160a081016001600160401b03811182821017156132c957634e487b7160e01b600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b600080600080610100858703121561331b57600080fd5b843561332681613222565b9350602085013561333681613222565b92506040850135915061334c8660608701613287565b905092959194509250565b6000806000806080858703121561336d57600080fd5b843561337881613222565b9350602085013561338881613222565b93969395505050506040820135916060013590565b60008083601f8401126133af57600080fd5b5081356001600160401b038111156133c657600080fd5b6020830191508360208260051b850101111561279857600080fd5b60008060008060008060a087890312156133fa57600080fd5b86359550602087013561340c81613222565b945060408701356001600160401b0381111561342757600080fd5b61343389828a0161339d565b909550935050606087013561344781613222565b80925050608087013590509295509295509295565b6001600160a01b0391909116815260200190565b600080600080600080610120878903121561348a57600080fd5b86359550602087013561349c81613222565b945060408701356001600160401b038111156134b757600080fd5b6134c389828a0161339d565b90955093505060608701356134d781613222565b91506134e68860808901613287565b90509295509295509295565b60008060006060848603121561350757600080fd5b835161351281613222565b602085015190935061352381613222565b604085015190925061353481613222565b809150509250925092565b8051612d2281613222565b6000610180828403121561355d57600080fd5b613565613250565b825181526020830151602082015260408301516040820152606083015160608201526135936080840161353f565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b6004811061360957634e487b7160e01b600052602160045260246000fd5b9052565b6040810161361b82856135eb565b6001600160a01b039290921660209190910152919050565b60005b8381101561364e578181015183820152602001613636565b838111156113825750506000910152565b60008151808452613677816020860160208601613633565b601f01601f19169290920160200192915050565b60018060a01b03851681528360208201528260408201526080606082015260006136b8608083018461365f565b9695505050505050565b600080604083850312156136d557600080fd5b505080516020909101519092909150565b918252602082015260400190565b60006020828403121561370657600080fd5b5051919050565b6060810161371b82866135eb565b6001600160a01b03938416602083015291909216604090920191909152919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156137655761376561373d565b500390565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156137b657600080fd5b813561166281613222565b60208082526010908201526f34b73b30b634b21036b0bc29b1bca4b760811b604082015260600190565b6020808252601590820152740d2dcecc2d8d2c840c2e0e0e4def040c2e0e0e4def605b1b604082015260600190565b6000821982111561382d5761382d61373d565b500190565b6000600160ff1b8214156138485761384861373d565b5060000390565b60008083128015600160ff1b85018412161561386d5761386d61373d565b6001600160ff1b03840183138116156138885761388861373d565b50500390565b600080821280156001600160ff1b03849003851316156138b0576138b061373d565b600160ff1b83900384128116156138c9576138c961373d565b50500190565b60008160001904831182151516156138e9576138e961373d565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613913576139136138ee565b500490565b60208082526015908201527465786368616e676520726174652062656c6f77203160581b604082015260600190565b60006001600160ff1b038184138284138082168684048611161561396d5761396d61373d565b600160ff1b600087128281168783058912161561398c5761398c61373d565b600087129250878205871284841616156139a8576139a861373d565b878505871281841616156139be576139be61373d565b505050929093029392505050565b6000826139db576139db6138ee565b600160ff1b8214600019841416156139f5576139f561373d565b500590565b600060208284031215613a0c57600080fd5b8151801515811461166257600080fd5b6000600019821415613a3057613a3061373d565b5060010190565b84815283602082015260018060a01b03831660408201526080606082015260006136b8608083018461365f565b80516001600160701b0381168114612d2257600080fd5b600080600060608486031215613a9057600080fd5b613a9984613a64565b9250613aa760208501613a64565b9150604084015163ffffffff8116811461353457600080fd5b60008251613ad2818460208701613633565b9190910192915050565b602081526000611662602083018461365f56fe6815898fa13ba3e87e786b79b782a49a06102f17cab91acc152d52eb40c09bdfa264697066735822122007cd1ddfa46524aa38661d24d436c807b02af67b633b3a43531a63f1cd7dc65264736f6c63430008090033",
514
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162003a2738038062003a27833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051613978620000af6000396000818160d6015281816113a70152818161140901528181611d140152611d5701526139786000f3fe608060405234801561001057600080fd5b506004361061006d5760003560e01c806321aab8591461007257806322f7feb9146100985780636c2f5256146100ab5780637eb6953c146100be5780638a38466e146100d157806392126dab14610105578063d8cc26aa14610118575b600080fd5b610085610080366004613087565b61012b565b6040519081526020015b60405180910390f35b6100856100a63660046131db565b610142565b6100856100b9366004613269565b610161565b6100856100cc3660046132e4565b61017e565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b60405161008f9190613341565b6100856101133660046132e4565b610199565b610085610126366004613087565b6101aa565b6000610139858585856101ba565b95945050505050565b60006101558888888888888860016102eb565b98975050505050505050565b6000610173878787878787600161038a565b979650505050505050565b600061018f86868686866001610453565b9695505050505050565b600061018f86868686866001610682565b6000610139858585856001610887565b600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156101fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021f9190613355565b92505050846001600160a01b031663d8e763c1828661023f338b89610ac5565b6040518463ffffffff1660e01b815260040161025d939291906133fa565b60408051808303816000875af115801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190613421565b5050856001600160a01b03166000805160206139238339815191526102c386610af8565b6102cc85610b12565b6040516102da929190613445565b60405180910390a250949350505050565b6000806000896001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103529190613355565b9250509150600061036982848c60018c8c8b610b2f565b905061037a8c8c838c8a6000610453565b9c9b505050505050505050505050565b600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ef9190613355565b505090506000610403828a8a600188610887565b90506104458a83838a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509250610d5f915050565b9a9950505050505050505050565b6000806000876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ba9190613355565b604051631cf38c7b60e11b81526000600482018190529395509093506001600160a01b038b1691506339e718f69060240161018060405180830381865afa158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052d919061345e565b905061054e610544846001600160a01b0316610f7e565b82908a428a610fe2565b5093508684101561059c5760405162461bcd60e51b81526020600482015260136024820152721a5b9cdd59999a58da595b9d081655081bdd5d606a1b60448201526064015b60405180910390fd5b84156105b7576105b76001600160a01b03841633848b6111e1565b886001600160a01b031663d8e763c183866105d28e8c611241565b6040518463ffffffff1660e01b81526004016105f0939291906133fa565b60408051808303816000875af115801561060e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106329190613421565b5050896001600160a01b031660008051602061392383398151915261065686610af8565b61065f8b610b12565b60405161066d929190613445565b60405180910390a25050509695505050505050565b604051631cf38c7b60e11b81526000600482018190529081906001600160a01b038816906339e718f69060240161018060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f1919061345e565b9050600080886001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107589190613355565b925050915061077c610772836001600160a01b0316610f7e565b84908a428a611270565b509350868411156107c45760405162461bcd60e51b8152602060048201526012602482015271195e18d95959081655081a5b881b1a5b5a5d60721b6044820152606401610593565b84156107df576107df6001600160a01b0382163383876111e1565b886001600160a01b0316637bb0e71082866107fa8e8d611388565b6040518463ffffffff1660e01b8152600401610818939291906133fa565b60408051808303816000875af1158015610836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085a9190613421565b5050896001600160a01b031660008051602061392383398151915261087e86610b12565b61065f8b610af8565b6000806000866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190613355565b9250509150831561090e5761090e6001600160a01b0382163383896111e1565b6040516370a0823160e01b81526000906001600160a01b038416906370a082319061093d908c90600401613341565b602060405180830381865afa15801561095a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e91906134ff565b9050876001600160a01b0316637bb0e710838961099b8d8b611388565b6040518463ffffffff1660e01b81526004016109b9939291906133fa565b60408051808303816000875af11580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb9190613421565b50506040516370a0823160e01b815281906001600160a01b038516906370a0823190610a2b908d90600401613341565b602060405180830381865afa158015610a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6c91906134ff565b610a76919061352e565b9350886001600160a01b0316600080516020613923833981519152610a9a89610b12565b610aa387610af8565b604051610ab1929190613445565b60405180910390a250505095945050505050565b60606000848484604051602001610adf9493929190613567565b60405160208183030381529060405290505b9392505050565b60006001600160ff1b03821115610b0e57600080fd5b5090565b6000610b1d82610af8565b610b299060001961359c565b92915050565b60008115610c1a576001839003610b8457610b7f33888887876000818110610b5957610b59613621565b9050602002016020810190610b6e9190613637565b6001600160a01b03169291906111e1565b610c1a565b610bd833610bc48686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506113a092505050565b8887876000818110610b5957610b59613621565b610c188484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a92508b91506114019050565b505b60008484610c2960018261352e565b818110610c3857610c38613621565b9050602002016020810190610c4d9190613637565b6040516320e8c56560e01b81526001600160a01b038b8116600483015280831660248301526000604483015260648201899052919250908916906320e8c565906084016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd391906134ff565b9150876001600160a01b031685856000818110610cf257610cf2613621565b9050602002016020810190610d079190613637565b6001600160a01b0316336001600160a01b03167f9a46898979f8e41b23cc1fa2b4875c37a6e8c890596f5d4e3c3199f3cf7556b48a86604051610d4b929190613445565b60405180910390a450979650505050505050565b60008115610d7c57610d7c6001600160a01b0387163388886111e1565b600083600081518110610d9157610d91613621565b602002602001015190508351600103610e215760405163f3f094a160e01b81526001600160a01b0388169063f3f094a190610dd7908b9060009086908b90600401613654565b6020604051808303816000875af1158015610df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1a91906134ff565b9150610ef6565b6000876001600160a01b031663f3f094a1610e3b876113a0565b60008560016040518563ffffffff1660e01b8152600401610e5f9493929190613654565b6020604051808303816000875af1158015610e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea291906134ff565b9050610eaf85828b611401565b925085831015610ef45760405162461bcd60e51b815260206004820152601060248201526f1a5b9cdd59999a58da595b9d081bdd5d60821b6044820152606401610593565b505b8360018551610f05919061352e565b81518110610f1557610f15613621565b60200260200101516001600160a01b0316876001600160a01b0316336001600160a01b03167f04b1fcce47c6812ab96e0c8493a043d013e688798285effca7507448bc763dea8986604051610f6b929190613445565b60405180910390a4509695505050505050565b6000816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2991906134ff565b600080610fee8361146d565b61100a5760405162461bcd60e51b81526004016105939061367e565b61104c6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081525090565b6000611059898988611495565b90506000198560200151036110805761107a896000015182602001516115d0565b60208601525b61108a88886115f0565b60c083015260005b85606001518110156111a0576110a881876115fc565b8084528a5160808501516110be9285929161165b565b6080850152151560a084018190526110e85782516110de9060019061352e565b6020870152611092565b611101826110f98560000151610b12565b8c91906116ae565b5060208401819052611112906117bb565b604084018190528351611125919061352e565b6060840181905260c0840151106111845782518652606083015160c084015160808801516000926111579290916117ca565b9050801561117e5783516060850151611171908c906117fe565b95509550505050506111d7565b50611198565b82516111929060019061352e565b60208701525b600101611092565b5060405162461bcd60e51b815260206004820152600b60248201526a185c1c1c9bde0819985a5b60aa1b6044820152606401610593565b9550959350505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261123b90859061180a565b50505050565b606060018383604051602001611259939291906136ad565b604051602081830303815290604052905092915050565b60008061127c8361146d565b6112985760405162461bcd60e51b81526004016105939061367e565b60006112a5888887611495565b90506000198460200151036112c65787516112c090826118e1565b60208501525b60006112d288886115f0565b905060005b85606001518110156111a05760006112ef82886115fc565b905060006113088561130084610af8565b8e91906116ae565b509050600061131682611998565b90506000611324828561352e565b905085811061136b57838a602001818152505061134681878c608001516119af565b1561136657836113568e836117fe565b98509850505050505050506111d7565b611379565b6113768460016136d5565b8a525b846001019450505050506112d7565b606060028383604051602001611259939291906136ad565b6000610b297f0000000000000000000000000000000000000000000000000000000000000000836000815181106113d9576113d9613621565b6020026020010151846001815181106113f4576113f4613621565b60200260200101516119dd565b60008061142f7f00000000000000000000000000000000000000000000000000000000000000008587611aac565b905061143c818685611c31565b806001825161144b919061352e565b8151811061145b5761145b613621565b60200260200101519150509392505050565b60008160200151826000015111158015610b2957505060800151670de0b6b3a7640000101590565b6114c06040518060800160405280600081526020016000815260200160008152602001600081525090565b61010084015182106115055760405162461bcd60e51b815260206004820152600e60248201526d1b585c9ad95d08195e1c1a5c995960921b6044820152606401610593565b600082856101000151611518919061352e565b90506115248582611e26565b82526020850151611536908590611eaa565b602083015284511580159061154e5750602082015115155b6115915760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206d61726b657420737461746560601b6044820152606401610593565b6115af85600001518661014001518460200151856000015185611ee1565b604083015260c08501516115c39082611f5e565b6060830152509392505050565b600060016115e66115e18585611f92565b6117bb565b610af1919061352e565b6000610af18383611fa8565b60008215801561160f5750604082015115155b1561161f57506040810151610b29565b60208201518251111561163757506020810151610b29565b6020820151825160029161164a916136d5565b6116549190613703565b9050610b29565b600080828411611670575060019050816116a5565b60006116858661167f87610b12565b89611fc7565b90506000811261169c5760018592509250506116a5565b60008492509250505b94509492505050565b60008060006116d08660000151866020015187600001518860400151886120c6565b905060006116e66116e18684612190565b6121bf565b606087015190915060008613156117515760006117038483612190565b9050670de0b6b3a764000081121561172d5760405162461bcd60e51b815260040161059390613717565b61174961174283670de0b6b3a7640000613746565b84906121cd565b91505061177e565b61177b8161176781670de0b6b3a7640000613746565b611771908561359c565b6116e19190613785565b90505b606461178e896101200151610af8565b611798908361359c565b6117a29190613785565b93506117ae8183613746565b9450505050935093915050565b600080821215610b0e57600080fd5b60008284111580156117f657506117f2836117ed84670de0b6b3a764000061352e565b6121eb565b8410155b949350505050565b6000610af1838361220b565b600061185f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122209092919063ffffffff16565b8051909150156118dc578080602001905181019061187d91906137b3565b6118dc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610593565b505050565b600080611928611923846000015185604001516119138760600151670de0b6b3a76400006121cd90919063ffffffff16565b61191d9190613746565b906121cd565b61222f565b90506000611948611941670de0b6b3a7640000846137d5565b8390612190565b9050600061196685602001518761195f91906137d5565b83906121cd565b905060006119748288613746565b90506103e8611982826117bb565b61198e906103e7613816565b6101739190613703565b6000808213610b0e576119aa82613835565b610b29565b60008284101580156117f657506119d2836117ed84670de0b6b3a76400006136d5565b909311159392505050565b60008060006119ec8585612644565b6040516001600160601b0319606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001611a8a9291906001600160f81b0319815260609290921b6001600160601b031916600183015260158201527f0bbca9af0511ad1a1da383135cf3a8d2ac620e549ef9f6ae3a4c33c2fed0af91603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b6060600282511015611afb5760405162461bcd60e51b8152602060048201526018602482015277094deca98d2c4e4c2e4f27440929cac82989288bea082a8960431b6044820152606401610593565b81516001600160401b03811115611b1457611b14613111565b604051908082528060200260200182016040528015611b3d578160200160208202803683370190505b5090508281600081518110611b5457611b54613621565b60200260200101818152505060005b60018351611b71919061352e565b811015611c2957600080611bc487868581518110611b9157611b91613621565b602002602001015187866001611ba791906136d5565b81518110611bb757611bb7613621565b6020026020010151612728565b91509150611bec848481518110611bdd57611bdd613621565b602002602001015183836127f2565b84611bf88560016136d5565b81518110611c0857611c08613621565b60200260200101818152505050508080611c2190613851565b915050611b63565b509392505050565b60005b60018351611c42919061352e565b81101561123b57600080848381518110611c5e57611c5e613621565b602002602001015185846001611c7491906136d5565b81518110611c8457611c84613621565b6020026020010151915091506000611c9c8383612644565b509050600087611cad8660016136d5565b81518110611cbd57611cbd613621565b60200260200101519050600080836001600160a01b0316866001600160a01b031614611ceb57826000611cef565b6000835b91509150600060028a51611d03919061352e565b8810611d0f5788611d50565b611d507f0000000000000000000000000000000000000000000000000000000000000000878c611d408c60026136d5565b815181106113f4576113f4613621565b9050611d7d7f000000000000000000000000000000000000000000000000000000000000000088886119dd565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015611dba576020820181803683370190505b506040518563ffffffff1660e01b8152600401611dda949392919061386a565b600060405180830381600087803b158015611df457600080fd5b505af1158015611e08573d6000803e3d6000fd5b50505050505050505050508080611e1e90613851565b915050611c34565b6000611e3182610af8565b611e48611e436201518061016d613816565b610af8565b8460a00151611e57919061359c565b611e619190613785565b905060008113610b295760405162461bcd60e51b8152602060048201526014602482015273726174655363616c617220756e646572666c6f7760601b6044820152606401610593565b60008060008312611ebc576001611ec0565b6000195b9050611ed7611e4385611ed286611998565b611fa8565b6117f6908261359c565b600080611eee8684611f5e565b9050670de0b6b3a7640000811215611f185760405162461bcd60e51b815260040161059390613717565b6000611f2e611f27878a6137d5565b8990612190565b90506000611f3b826128fb565b9050611f478187612190565b611f519084613746565b9998505050505050505050565b600080611f706201518061016d613816565b611f7a8486613816565b611f849190613703565b90506117f661192382610af8565b6000818312611fa15781610af1565b5090919050565b6000670de0b6b3a7640000611fbd8484613816565b610af19190613703565b600080611fd384613835565b90506000818460200151611fe79190613746565b90506000611ff587846137d5565b90506000821380156120075750600081135b6120485760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b6044820152606401610593565b6000612076612057848461359c565b6020880151612066908b6137d5565b612070908761359c565b90612190565b9050600061208c6120878486612190565b612976565b87519091506000906120a790670de0b6b3a764000090612190565b90506120b78161191d8486613746565b88604001516104459190613746565b6000806120d38784612a07565b905060006120e4611941888a6137d5565b9050670d529ae9e86000008113156121385760405162461bcd60e51b81526020600482015260176024820152761b585e081c1c9bdc1bdc9d1a5bdb88195e18d959591959604a1b6044820152606401610593565b6000612143826128fb565b9050856121508289612190565b61215a91906137d5565b9350670de0b6b3a76400008412156121845760405162461bcd60e51b815260040161059390613717565b50505095945050505050565b6000806121a5670de0b6b3a76400008561359c565b90508281816121b6576121b66136ed565b05949350505050565b6000610b298260001961359c565b6000806121da838561359c565b9050670de0b6b3a7640000816121b6565b6000806121f88385613816565b670de0b6b3a76400009004949350505050565b600082611fbd670de0b6b3a764000084613816565b60606117f68484600085612a4e565b6000680238fd42c5cf03ffff198212158015612254575068070c1cc73b00c800008213155b6122935760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610593565b60008212156122cb576122a88260000361222f565b6a0c097ce7bc90715b34b9f160241b816122c4576122c46136ed565b0592915050565b60006806f05b59d3b2000000831261230957506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b61233f565b6803782dace9d9000000831261233b57506803782dace9d8ffffff19909101906b1425982cf597cd205cef738061233f565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac62000000841261238f5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d63100000084126123cb576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261240557682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000841261243f576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac6200000841261247857680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126124b15768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b188000084126124ea576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126125235768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080826001600160a01b0316846001600160a01b0316036126a85760405162461bcd60e51b815260206004820152601f60248201527f4a6f654c6962726172793a204944454e544943414c5f414444524553534553006044820152606401610593565b826001600160a01b0316846001600160a01b0316106126c85782846126cb565b83835b90925090506001600160a01b0382166127215760405162461bcd60e51b81526020600482015260186024820152774a6f654c6962726172793a205a45524f5f4144445245535360401b6044820152606401610593565b9250929050565b60008060006127378585612644565b5090506000806127488888886119dd565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a991906138ae565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b0316146127e05780826127e3565b81815b90999098509650505050505050565b60008084116128515760405162461bcd60e51b815260206004820152602560248201527f4a6f654c6962726172793a20494e53554646494349454e545f494e5055545f416044820152641353d5539560da1b6064820152608401610593565b6000831180156128615750600082115b6128b85760405162461bcd60e51b815260206004820152602260248201527f4a6f654c6962726172793a20494e53554646494349454e545f4c495155494449604482015261545960f01b6064820152608401610593565b60006128c6856103e5613816565b905060006128d48483613816565b90506000826128e5876103e8613816565b6128ef91906136d5565b90506101738183613703565b6000670de0b6b3a764000082036129515760405162461bcd60e51b815260206004820152601a60248201527970726f706f7274696f6e206d757374206e6f74206265206f6e6560301b6044820152606401610593565b600061296f61296884670de0b6b3a7640000613746565b8490612190565b9050610af1815b60008082136129b75760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610593565b670c7d713b49da0000821380156129d55750670f43fc2c04ee000082125b156129f957670de0b6b3a76400006129ec83612b74565b816122c4576122c46136ed565b610b2982612c93565b919050565b600081831215612a445760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b6044820152606401610593565b610af18284613746565b606082471015612aaf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610593565b6001600160a01b0385163b612b065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610593565b600080866001600160a01b03168587604051612b2291906138f3565b60006040518083038185875af1925050503d8060008114612b5f576040519150601f19603f3d011682016040523d82523d6000602084013e612b64565b606091505b5091509150610173828286613036565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612bb557612bb56136ed565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215612cd457612ccb826a0c097ce7bc90715b34b9f160241b81612cc557612cc56136ed565b05612c93565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312612d1f5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312612d56576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312612d9e576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312612dd9576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312612e1057693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312612e4757690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312612e7c5768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312612ea757680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312612edc576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312612f11576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312612f45576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312612f79576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d631000008086030281612fa257612fa26136ed565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b60608315613045575081610af1565b8251156130555782518084602001fd5b8160405162461bcd60e51b8152600401610593919061390f565b6001600160a01b038116811461308457600080fd5b50565b6000806000806080858703121561309d57600080fd5b84356130a88161306f565b935060208501356130b88161306f565b93969395505050506040820135916060013590565b60008083601f8401126130df57600080fd5b5081356001600160401b038111156130f657600080fd5b6020830191508360208260051b850101111561272157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b038111828210171561315857634e487b7160e01b600052604160045260246000fd5b60405290565b600060a0828403121561317057600080fd5b60405160a081016001600160401b03811182821017156131a057634e487b7160e01b600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b6000806000806000806000610140888a0312156131f757600080fd5b87356132028161306f565b965060208801356132128161306f565b9550604088013594506060880135935060808801356001600160401b0381111561323b57600080fd5b6132478a828b016130cd565b909450925061325b90508960a08a0161315e565b905092959891949750929550565b60008060008060008060a0878903121561328257600080fd5b863561328d8161306f565b9550602087013561329d8161306f565b9450604087013593506060870135925060808701356001600160401b038111156132c657600080fd5b6132d289828a016130cd565b979a9699509497509295939492505050565b600080600080600061012086880312156132fd57600080fd5b85356133088161306f565b945060208601356133188161306f565b93506040860135925060608601359150613335876080880161315e565b90509295509295909350565b6001600160a01b0391909116815260200190565b60008060006060848603121561336a57600080fd5b83516133758161306f565b60208501519093506133868161306f565b60408501519092506133978161306f565b809150509250925092565b60005b838110156133bd5781810151838201526020016133a5565b8381111561123b5750506000910152565b600081518084526133e68160208601602086016133a2565b601f01601f19169290920160200192915050565b60018060a01b038416815282602082015260606040820152600061013960608301846133ce565b6000806040838503121561343457600080fd5b505080516020909101519092909150565b918252602082015260400190565b8051612a028161306f565b6000610180828403121561347157600080fd5b613479613127565b825181526020830151602082015260408301516040820152606083015160608201526134a760808401613453565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b60006020828403121561351157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561354057613540613518565b500390565b6003811061356357634e487b7160e01b600052602160045260246000fd5b9052565b608081016135758287613545565b6001600160a01b039485166020830152929093166040840152606090920191909152919050565b60006001600160ff1b03818413828413808216868404861116156135c2576135c2613518565b600160ff1b60008712828116878305891216156135e1576135e1613518565b600087129250878205871284841616156135fd576135fd613518565b8785058712818416161561361357613613613518565b505050929093029392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561364957600080fd5b8135610af18161306f565b6001600160a01b039485168152602081019390935292166040820152606081019190915260800190565b6020808252601590820152740d2dcecc2d8d2c840c2e0e0e4def040c2e0e0e4def605b1b604082015260600190565b606081016136bb8286613545565b6001600160a01b0393909316602082015260400152919050565b600082198211156136e8576136e8613518565b500190565b634e487b7160e01b600052601260045260246000fd5b600082613712576137126136ed565b500490565b60208082526015908201527465786368616e676520726174652062656c6f77203160581b604082015260600190565b60008083128015600160ff1b85018412161561376457613764613518565b6001600160ff1b038401831381161561377f5761377f613518565b50500390565b600082613794576137946136ed565b600160ff1b8214600019841416156137ae576137ae613518565b500590565b6000602082840312156137c557600080fd5b81518015158114610af157600080fd5b600080821280156001600160ff1b03849003851316156137f7576137f7613518565b600160ff1b839003841281161561381057613810613518565b50500190565b600081600019048311821515161561383057613830613518565b500290565b6000600160ff1b820161384a5761384a613518565b5060000390565b60006001820161386357613863613518565b5060010190565b84815283602082015260018060a01b038316604082015260806060820152600061018f60808301846133ce565b80516001600160701b0381168114612a0257600080fd5b6000806000606084860312156138c357600080fd5b6138cc84613897565b92506138da60208501613897565b9150604084015163ffffffff8116811461339757600080fd5b600082516139058184602087016133a2565b9190910192915050565b602081526000610af160208301846133ce56fec717020614c269674c210a910c330e6517f1e7b048cc60f1361ab34485edd669a2646970667358221220e9cfe1f45935afdd4ffb41f5c161e02af5e9fba4b166b43f5e3e1348f2c51dad64736f6c634300080d0033",
515
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061006d5760003560e01c806321aab8591461007257806322f7feb9146100985780636c2f5256146100ab5780637eb6953c146100be5780638a38466e146100d157806392126dab14610105578063d8cc26aa14610118575b600080fd5b610085610080366004613087565b61012b565b6040519081526020015b60405180910390f35b6100856100a63660046131db565b610142565b6100856100b9366004613269565b610161565b6100856100cc3660046132e4565b61017e565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b60405161008f9190613341565b6100856101133660046132e4565b610199565b610085610126366004613087565b6101aa565b6000610139858585856101ba565b95945050505050565b60006101558888888888888860016102eb565b98975050505050505050565b6000610173878787878787600161038a565b979650505050505050565b600061018f86868686866001610453565b9695505050505050565b600061018f86868686866001610682565b6000610139858585856001610887565b600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156101fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021f9190613355565b92505050846001600160a01b031663d8e763c1828661023f338b89610ac5565b6040518463ffffffff1660e01b815260040161025d939291906133fa565b60408051808303816000875af115801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190613421565b5050856001600160a01b03166000805160206139238339815191526102c386610af8565b6102cc85610b12565b6040516102da929190613445565b60405180910390a250949350505050565b6000806000896001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103529190613355565b9250509150600061036982848c60018c8c8b610b2f565b905061037a8c8c838c8a6000610453565b9c9b505050505050505050505050565b600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ef9190613355565b505090506000610403828a8a600188610887565b90506104458a83838a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509250610d5f915050565b9a9950505050505050505050565b6000806000876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ba9190613355565b604051631cf38c7b60e11b81526000600482018190529395509093506001600160a01b038b1691506339e718f69060240161018060405180830381865afa158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052d919061345e565b905061054e610544846001600160a01b0316610f7e565b82908a428a610fe2565b5093508684101561059c5760405162461bcd60e51b81526020600482015260136024820152721a5b9cdd59999a58da595b9d081655081bdd5d606a1b60448201526064015b60405180910390fd5b84156105b7576105b76001600160a01b03841633848b6111e1565b886001600160a01b031663d8e763c183866105d28e8c611241565b6040518463ffffffff1660e01b81526004016105f0939291906133fa565b60408051808303816000875af115801561060e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106329190613421565b5050896001600160a01b031660008051602061392383398151915261065686610af8565b61065f8b610b12565b60405161066d929190613445565b60405180910390a25050509695505050505050565b604051631cf38c7b60e11b81526000600482018190529081906001600160a01b038816906339e718f69060240161018060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f1919061345e565b9050600080886001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107589190613355565b925050915061077c610772836001600160a01b0316610f7e565b84908a428a611270565b509350868411156107c45760405162461bcd60e51b8152602060048201526012602482015271195e18d95959081655081a5b881b1a5b5a5d60721b6044820152606401610593565b84156107df576107df6001600160a01b0382163383876111e1565b886001600160a01b0316637bb0e71082866107fa8e8d611388565b6040518463ffffffff1660e01b8152600401610818939291906133fa565b60408051808303816000875af1158015610836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085a9190613421565b5050896001600160a01b031660008051602061392383398151915261087e86610b12565b61065f8b610af8565b6000806000866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190613355565b9250509150831561090e5761090e6001600160a01b0382163383896111e1565b6040516370a0823160e01b81526000906001600160a01b038416906370a082319061093d908c90600401613341565b602060405180830381865afa15801561095a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e91906134ff565b9050876001600160a01b0316637bb0e710838961099b8d8b611388565b6040518463ffffffff1660e01b81526004016109b9939291906133fa565b60408051808303816000875af11580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb9190613421565b50506040516370a0823160e01b815281906001600160a01b038516906370a0823190610a2b908d90600401613341565b602060405180830381865afa158015610a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6c91906134ff565b610a76919061352e565b9350886001600160a01b0316600080516020613923833981519152610a9a89610b12565b610aa387610af8565b604051610ab1929190613445565b60405180910390a250505095945050505050565b60606000848484604051602001610adf9493929190613567565b60405160208183030381529060405290505b9392505050565b60006001600160ff1b03821115610b0e57600080fd5b5090565b6000610b1d82610af8565b610b299060001961359c565b92915050565b60008115610c1a576001839003610b8457610b7f33888887876000818110610b5957610b59613621565b9050602002016020810190610b6e9190613637565b6001600160a01b03169291906111e1565b610c1a565b610bd833610bc48686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506113a092505050565b8887876000818110610b5957610b59613621565b610c188484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a92508b91506114019050565b505b60008484610c2960018261352e565b818110610c3857610c38613621565b9050602002016020810190610c4d9190613637565b6040516320e8c56560e01b81526001600160a01b038b8116600483015280831660248301526000604483015260648201899052919250908916906320e8c565906084016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd391906134ff565b9150876001600160a01b031685856000818110610cf257610cf2613621565b9050602002016020810190610d079190613637565b6001600160a01b0316336001600160a01b03167f9a46898979f8e41b23cc1fa2b4875c37a6e8c890596f5d4e3c3199f3cf7556b48a86604051610d4b929190613445565b60405180910390a450979650505050505050565b60008115610d7c57610d7c6001600160a01b0387163388886111e1565b600083600081518110610d9157610d91613621565b602002602001015190508351600103610e215760405163f3f094a160e01b81526001600160a01b0388169063f3f094a190610dd7908b9060009086908b90600401613654565b6020604051808303816000875af1158015610df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1a91906134ff565b9150610ef6565b6000876001600160a01b031663f3f094a1610e3b876113a0565b60008560016040518563ffffffff1660e01b8152600401610e5f9493929190613654565b6020604051808303816000875af1158015610e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea291906134ff565b9050610eaf85828b611401565b925085831015610ef45760405162461bcd60e51b815260206004820152601060248201526f1a5b9cdd59999a58da595b9d081bdd5d60821b6044820152606401610593565b505b8360018551610f05919061352e565b81518110610f1557610f15613621565b60200260200101516001600160a01b0316876001600160a01b0316336001600160a01b03167f04b1fcce47c6812ab96e0c8493a043d013e688798285effca7507448bc763dea8986604051610f6b929190613445565b60405180910390a4509695505050505050565b6000816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2991906134ff565b600080610fee8361146d565b61100a5760405162461bcd60e51b81526004016105939061367e565b61104c6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081525090565b6000611059898988611495565b90506000198560200151036110805761107a896000015182602001516115d0565b60208601525b61108a88886115f0565b60c083015260005b85606001518110156111a0576110a881876115fc565b8084528a5160808501516110be9285929161165b565b6080850152151560a084018190526110e85782516110de9060019061352e565b6020870152611092565b611101826110f98560000151610b12565b8c91906116ae565b5060208401819052611112906117bb565b604084018190528351611125919061352e565b6060840181905260c0840151106111845782518652606083015160c084015160808801516000926111579290916117ca565b9050801561117e5783516060850151611171908c906117fe565b95509550505050506111d7565b50611198565b82516111929060019061352e565b60208701525b600101611092565b5060405162461bcd60e51b815260206004820152600b60248201526a185c1c1c9bde0819985a5b60aa1b6044820152606401610593565b9550959350505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261123b90859061180a565b50505050565b606060018383604051602001611259939291906136ad565b604051602081830303815290604052905092915050565b60008061127c8361146d565b6112985760405162461bcd60e51b81526004016105939061367e565b60006112a5888887611495565b90506000198460200151036112c65787516112c090826118e1565b60208501525b60006112d288886115f0565b905060005b85606001518110156111a05760006112ef82886115fc565b905060006113088561130084610af8565b8e91906116ae565b509050600061131682611998565b90506000611324828561352e565b905085811061136b57838a602001818152505061134681878c608001516119af565b1561136657836113568e836117fe565b98509850505050505050506111d7565b611379565b6113768460016136d5565b8a525b846001019450505050506112d7565b606060028383604051602001611259939291906136ad565b6000610b297f0000000000000000000000000000000000000000000000000000000000000000836000815181106113d9576113d9613621565b6020026020010151846001815181106113f4576113f4613621565b60200260200101516119dd565b60008061142f7f00000000000000000000000000000000000000000000000000000000000000008587611aac565b905061143c818685611c31565b806001825161144b919061352e565b8151811061145b5761145b613621565b60200260200101519150509392505050565b60008160200151826000015111158015610b2957505060800151670de0b6b3a7640000101590565b6114c06040518060800160405280600081526020016000815260200160008152602001600081525090565b61010084015182106115055760405162461bcd60e51b815260206004820152600e60248201526d1b585c9ad95d08195e1c1a5c995960921b6044820152606401610593565b600082856101000151611518919061352e565b90506115248582611e26565b82526020850151611536908590611eaa565b602083015284511580159061154e5750602082015115155b6115915760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206d61726b657420737461746560601b6044820152606401610593565b6115af85600001518661014001518460200151856000015185611ee1565b604083015260c08501516115c39082611f5e565b6060830152509392505050565b600060016115e66115e18585611f92565b6117bb565b610af1919061352e565b6000610af18383611fa8565b60008215801561160f5750604082015115155b1561161f57506040810151610b29565b60208201518251111561163757506020810151610b29565b6020820151825160029161164a916136d5565b6116549190613703565b9050610b29565b600080828411611670575060019050816116a5565b60006116858661167f87610b12565b89611fc7565b90506000811261169c5760018592509250506116a5565b60008492509250505b94509492505050565b60008060006116d08660000151866020015187600001518860400151886120c6565b905060006116e66116e18684612190565b6121bf565b606087015190915060008613156117515760006117038483612190565b9050670de0b6b3a764000081121561172d5760405162461bcd60e51b815260040161059390613717565b61174961174283670de0b6b3a7640000613746565b84906121cd565b91505061177e565b61177b8161176781670de0b6b3a7640000613746565b611771908561359c565b6116e19190613785565b90505b606461178e896101200151610af8565b611798908361359c565b6117a29190613785565b93506117ae8183613746565b9450505050935093915050565b600080821215610b0e57600080fd5b60008284111580156117f657506117f2836117ed84670de0b6b3a764000061352e565b6121eb565b8410155b949350505050565b6000610af1838361220b565b600061185f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122209092919063ffffffff16565b8051909150156118dc578080602001905181019061187d91906137b3565b6118dc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610593565b505050565b600080611928611923846000015185604001516119138760600151670de0b6b3a76400006121cd90919063ffffffff16565b61191d9190613746565b906121cd565b61222f565b90506000611948611941670de0b6b3a7640000846137d5565b8390612190565b9050600061196685602001518761195f91906137d5565b83906121cd565b905060006119748288613746565b90506103e8611982826117bb565b61198e906103e7613816565b6101739190613703565b6000808213610b0e576119aa82613835565b610b29565b60008284101580156117f657506119d2836117ed84670de0b6b3a76400006136d5565b909311159392505050565b60008060006119ec8585612644565b6040516001600160601b0319606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001611a8a9291906001600160f81b0319815260609290921b6001600160601b031916600183015260158201527f0bbca9af0511ad1a1da383135cf3a8d2ac620e549ef9f6ae3a4c33c2fed0af91603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b6060600282511015611afb5760405162461bcd60e51b8152602060048201526018602482015277094deca98d2c4e4c2e4f27440929cac82989288bea082a8960431b6044820152606401610593565b81516001600160401b03811115611b1457611b14613111565b604051908082528060200260200182016040528015611b3d578160200160208202803683370190505b5090508281600081518110611b5457611b54613621565b60200260200101818152505060005b60018351611b71919061352e565b811015611c2957600080611bc487868581518110611b9157611b91613621565b602002602001015187866001611ba791906136d5565b81518110611bb757611bb7613621565b6020026020010151612728565b91509150611bec848481518110611bdd57611bdd613621565b602002602001015183836127f2565b84611bf88560016136d5565b81518110611c0857611c08613621565b60200260200101818152505050508080611c2190613851565b915050611b63565b509392505050565b60005b60018351611c42919061352e565b81101561123b57600080848381518110611c5e57611c5e613621565b602002602001015185846001611c7491906136d5565b81518110611c8457611c84613621565b6020026020010151915091506000611c9c8383612644565b509050600087611cad8660016136d5565b81518110611cbd57611cbd613621565b60200260200101519050600080836001600160a01b0316866001600160a01b031614611ceb57826000611cef565b6000835b91509150600060028a51611d03919061352e565b8810611d0f5788611d50565b611d507f0000000000000000000000000000000000000000000000000000000000000000878c611d408c60026136d5565b815181106113f4576113f4613621565b9050611d7d7f000000000000000000000000000000000000000000000000000000000000000088886119dd565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015611dba576020820181803683370190505b506040518563ffffffff1660e01b8152600401611dda949392919061386a565b600060405180830381600087803b158015611df457600080fd5b505af1158015611e08573d6000803e3d6000fd5b50505050505050505050508080611e1e90613851565b915050611c34565b6000611e3182610af8565b611e48611e436201518061016d613816565b610af8565b8460a00151611e57919061359c565b611e619190613785565b905060008113610b295760405162461bcd60e51b8152602060048201526014602482015273726174655363616c617220756e646572666c6f7760601b6044820152606401610593565b60008060008312611ebc576001611ec0565b6000195b9050611ed7611e4385611ed286611998565b611fa8565b6117f6908261359c565b600080611eee8684611f5e565b9050670de0b6b3a7640000811215611f185760405162461bcd60e51b815260040161059390613717565b6000611f2e611f27878a6137d5565b8990612190565b90506000611f3b826128fb565b9050611f478187612190565b611f519084613746565b9998505050505050505050565b600080611f706201518061016d613816565b611f7a8486613816565b611f849190613703565b90506117f661192382610af8565b6000818312611fa15781610af1565b5090919050565b6000670de0b6b3a7640000611fbd8484613816565b610af19190613703565b600080611fd384613835565b90506000818460200151611fe79190613746565b90506000611ff587846137d5565b90506000821380156120075750600081135b6120485760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b6044820152606401610593565b6000612076612057848461359c565b6020880151612066908b6137d5565b612070908761359c565b90612190565b9050600061208c6120878486612190565b612976565b87519091506000906120a790670de0b6b3a764000090612190565b90506120b78161191d8486613746565b88604001516104459190613746565b6000806120d38784612a07565b905060006120e4611941888a6137d5565b9050670d529ae9e86000008113156121385760405162461bcd60e51b81526020600482015260176024820152761b585e081c1c9bdc1bdc9d1a5bdb88195e18d959591959604a1b6044820152606401610593565b6000612143826128fb565b9050856121508289612190565b61215a91906137d5565b9350670de0b6b3a76400008412156121845760405162461bcd60e51b815260040161059390613717565b50505095945050505050565b6000806121a5670de0b6b3a76400008561359c565b90508281816121b6576121b66136ed565b05949350505050565b6000610b298260001961359c565b6000806121da838561359c565b9050670de0b6b3a7640000816121b6565b6000806121f88385613816565b670de0b6b3a76400009004949350505050565b600082611fbd670de0b6b3a764000084613816565b60606117f68484600085612a4e565b6000680238fd42c5cf03ffff198212158015612254575068070c1cc73b00c800008213155b6122935760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610593565b60008212156122cb576122a88260000361222f565b6a0c097ce7bc90715b34b9f160241b816122c4576122c46136ed565b0592915050565b60006806f05b59d3b2000000831261230957506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b61233f565b6803782dace9d9000000831261233b57506803782dace9d8ffffff19909101906b1425982cf597cd205cef738061233f565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac62000000841261238f5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d63100000084126123cb576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261240557682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000841261243f576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac6200000841261247857680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126124b15768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b188000084126124ea576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126125235768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080826001600160a01b0316846001600160a01b0316036126a85760405162461bcd60e51b815260206004820152601f60248201527f4a6f654c6962726172793a204944454e544943414c5f414444524553534553006044820152606401610593565b826001600160a01b0316846001600160a01b0316106126c85782846126cb565b83835b90925090506001600160a01b0382166127215760405162461bcd60e51b81526020600482015260186024820152774a6f654c6962726172793a205a45524f5f4144445245535360401b6044820152606401610593565b9250929050565b60008060006127378585612644565b5090506000806127488888886119dd565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a991906138ae565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b0316146127e05780826127e3565b81815b90999098509650505050505050565b60008084116128515760405162461bcd60e51b815260206004820152602560248201527f4a6f654c6962726172793a20494e53554646494349454e545f494e5055545f416044820152641353d5539560da1b6064820152608401610593565b6000831180156128615750600082115b6128b85760405162461bcd60e51b815260206004820152602260248201527f4a6f654c6962726172793a20494e53554646494349454e545f4c495155494449604482015261545960f01b6064820152608401610593565b60006128c6856103e5613816565b905060006128d48483613816565b90506000826128e5876103e8613816565b6128ef91906136d5565b90506101738183613703565b6000670de0b6b3a764000082036129515760405162461bcd60e51b815260206004820152601a60248201527970726f706f7274696f6e206d757374206e6f74206265206f6e6560301b6044820152606401610593565b600061296f61296884670de0b6b3a7640000613746565b8490612190565b9050610af1815b60008082136129b75760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610593565b670c7d713b49da0000821380156129d55750670f43fc2c04ee000082125b156129f957670de0b6b3a76400006129ec83612b74565b816122c4576122c46136ed565b610b2982612c93565b919050565b600081831215612a445760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b6044820152606401610593565b610af18284613746565b606082471015612aaf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610593565b6001600160a01b0385163b612b065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610593565b600080866001600160a01b03168587604051612b2291906138f3565b60006040518083038185875af1925050503d8060008114612b5f576040519150601f19603f3d011682016040523d82523d6000602084013e612b64565b606091505b5091509150610173828286613036565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612bb557612bb56136ed565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215612cd457612ccb826a0c097ce7bc90715b34b9f160241b81612cc557612cc56136ed565b05612c93565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312612d1f5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312612d56576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312612d9e576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312612dd9576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312612e1057693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312612e4757690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312612e7c5768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312612ea757680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312612edc576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312612f11576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312612f45576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312612f79576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d631000008086030281612fa257612fa26136ed565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b60608315613045575081610af1565b8251156130555782518084602001fd5b8160405162461bcd60e51b8152600401610593919061390f565b6001600160a01b038116811461308457600080fd5b50565b6000806000806080858703121561309d57600080fd5b84356130a88161306f565b935060208501356130b88161306f565b93969395505050506040820135916060013590565b60008083601f8401126130df57600080fd5b5081356001600160401b038111156130f657600080fd5b6020830191508360208260051b850101111561272157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b038111828210171561315857634e487b7160e01b600052604160045260246000fd5b60405290565b600060a0828403121561317057600080fd5b60405160a081016001600160401b03811182821017156131a057634e487b7160e01b600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b6000806000806000806000610140888a0312156131f757600080fd5b87356132028161306f565b965060208801356132128161306f565b9550604088013594506060880135935060808801356001600160401b0381111561323b57600080fd5b6132478a828b016130cd565b909450925061325b90508960a08a0161315e565b905092959891949750929550565b60008060008060008060a0878903121561328257600080fd5b863561328d8161306f565b9550602087013561329d8161306f565b9450604087013593506060870135925060808701356001600160401b038111156132c657600080fd5b6132d289828a016130cd565b979a9699509497509295939492505050565b600080600080600061012086880312156132fd57600080fd5b85356133088161306f565b945060208601356133188161306f565b93506040860135925060608601359150613335876080880161315e565b90509295509295909350565b6001600160a01b0391909116815260200190565b60008060006060848603121561336a57600080fd5b83516133758161306f565b60208501519093506133868161306f565b60408501519092506133978161306f565b809150509250925092565b60005b838110156133bd5781810151838201526020016133a5565b8381111561123b5750506000910152565b600081518084526133e68160208601602086016133a2565b601f01601f19169290920160200192915050565b60018060a01b038416815282602082015260606040820152600061013960608301846133ce565b6000806040838503121561343457600080fd5b505080516020909101519092909150565b918252602082015260400190565b8051612a028161306f565b6000610180828403121561347157600080fd5b613479613127565b825181526020830151602082015260408301516040820152606083015160608201526134a760808401613453565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b60006020828403121561351157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561354057613540613518565b500390565b6003811061356357634e487b7160e01b600052602160045260246000fd5b9052565b608081016135758287613545565b6001600160a01b039485166020830152929093166040840152606090920191909152919050565b60006001600160ff1b03818413828413808216868404861116156135c2576135c2613518565b600160ff1b60008712828116878305891216156135e1576135e1613518565b600087129250878205871284841616156135fd576135fd613518565b8785058712818416161561361357613613613518565b505050929093029392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561364957600080fd5b8135610af18161306f565b6001600160a01b039485168152602081019390935292166040820152606081019190915260800190565b6020808252601590820152740d2dcecc2d8d2c840c2e0e0e4def040c2e0e0e4def605b1b604082015260600190565b606081016136bb8286613545565b6001600160a01b0393909316602082015260400152919050565b600082198211156136e8576136e8613518565b500190565b634e487b7160e01b600052601260045260246000fd5b600082613712576137126136ed565b500490565b60208082526015908201527465786368616e676520726174652062656c6f77203160581b604082015260600190565b60008083128015600160ff1b85018412161561376457613764613518565b6001600160ff1b038401831381161561377f5761377f613518565b50500390565b600082613794576137946136ed565b600160ff1b8214600019841416156137ae576137ae613518565b500590565b6000602082840312156137c557600080fd5b81518015158114610af157600080fd5b600080821280156001600160ff1b03849003851316156137f7576137f7613518565b600160ff1b839003841281161561381057613810613518565b50500190565b600081600019048311821515161561383057613830613518565b500290565b6000600160ff1b820161384a5761384a613518565b5060000390565b60006001820161386357613863613518565b5060010190565b84815283602082015260018060a01b038316604082015260806060820152600061018f60808301846133ce565b80516001600160701b0381168114612a0257600080fd5b6000806000606084860312156138c357600080fd5b6138cc84613897565b92506138da60208501613897565b9150604084015163ffffffff8116811461339757600080fd5b600082516139058184602087016133a2565b9190910192915050565b602081526000610af160208301846133ce56fec717020614c269674c210a910c330e6517f1e7b048cc60f1361ab34485edd669a2646970667358221220e9cfe1f45935afdd4ffb41f5c161e02af5e9fba4b166b43f5e3e1348f2c51dad64736f6c634300080d0033",
519
516
  "linkReferences": {},
520
517
  "deployedLinkReferences": {}
521
518
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/88454e13e5755d4eedd68a3511bda74a.json"
3
+ "buildInfo": "../../../../../build-info/50c4d5ce389938ed6a22f6a59a2e36eb.json"
4
4
  }
@@ -2,7 +2,169 @@
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "ActionSCYAndPTBase",
4
4
  "sourceName": "contracts/core/actions/base/ActionSCYAndPTBase.sol",
5
- "abi": [],
5
+ "abi": [
6
+ {
7
+ "anonymous": false,
8
+ "inputs": [
9
+ {
10
+ "indexed": true,
11
+ "internalType": "address",
12
+ "name": "user",
13
+ "type": "address"
14
+ },
15
+ {
16
+ "indexed": true,
17
+ "internalType": "address",
18
+ "name": "rawTokenIn",
19
+ "type": "address"
20
+ },
21
+ {
22
+ "indexed": false,
23
+ "internalType": "uint256",
24
+ "name": "netRawTokenIn",
25
+ "type": "uint256"
26
+ },
27
+ {
28
+ "indexed": true,
29
+ "internalType": "address",
30
+ "name": "YT",
31
+ "type": "address"
32
+ },
33
+ {
34
+ "indexed": false,
35
+ "internalType": "uint256",
36
+ "name": "netPyOut",
37
+ "type": "uint256"
38
+ }
39
+ ],
40
+ "name": "MintPyFromRawToken",
41
+ "type": "event"
42
+ },
43
+ {
44
+ "anonymous": false,
45
+ "inputs": [
46
+ {
47
+ "indexed": true,
48
+ "internalType": "address",
49
+ "name": "user",
50
+ "type": "address"
51
+ },
52
+ {
53
+ "indexed": true,
54
+ "internalType": "address",
55
+ "name": "rawTokenIn",
56
+ "type": "address"
57
+ },
58
+ {
59
+ "indexed": false,
60
+ "internalType": "uint256",
61
+ "name": "netRawTokenIn",
62
+ "type": "uint256"
63
+ },
64
+ {
65
+ "indexed": true,
66
+ "internalType": "address",
67
+ "name": "SCY",
68
+ "type": "address"
69
+ },
70
+ {
71
+ "indexed": false,
72
+ "internalType": "uint256",
73
+ "name": "netScyOut",
74
+ "type": "uint256"
75
+ }
76
+ ],
77
+ "name": "MintScyFromRawToken",
78
+ "type": "event"
79
+ },
80
+ {
81
+ "anonymous": false,
82
+ "inputs": [
83
+ {
84
+ "indexed": true,
85
+ "internalType": "address",
86
+ "name": "user",
87
+ "type": "address"
88
+ },
89
+ {
90
+ "indexed": true,
91
+ "internalType": "address",
92
+ "name": "YT",
93
+ "type": "address"
94
+ },
95
+ {
96
+ "indexed": false,
97
+ "internalType": "uint256",
98
+ "name": "netPyIn",
99
+ "type": "uint256"
100
+ },
101
+ {
102
+ "indexed": true,
103
+ "internalType": "address",
104
+ "name": "rawTokenOut",
105
+ "type": "address"
106
+ },
107
+ {
108
+ "indexed": false,
109
+ "internalType": "uint256",
110
+ "name": "netRawTokenOut",
111
+ "type": "uint256"
112
+ }
113
+ ],
114
+ "name": "RedeemPyToRawToken",
115
+ "type": "event"
116
+ },
117
+ {
118
+ "anonymous": false,
119
+ "inputs": [
120
+ {
121
+ "indexed": true,
122
+ "internalType": "address",
123
+ "name": "user",
124
+ "type": "address"
125
+ },
126
+ {
127
+ "indexed": true,
128
+ "internalType": "address",
129
+ "name": "SCY",
130
+ "type": "address"
131
+ },
132
+ {
133
+ "indexed": false,
134
+ "internalType": "uint256",
135
+ "name": "netScyIn",
136
+ "type": "uint256"
137
+ },
138
+ {
139
+ "indexed": true,
140
+ "internalType": "address",
141
+ "name": "rawTokenOut",
142
+ "type": "address"
143
+ },
144
+ {
145
+ "indexed": false,
146
+ "internalType": "uint256",
147
+ "name": "netRawTokenOut",
148
+ "type": "uint256"
149
+ }
150
+ ],
151
+ "name": "RedeemScyToRawToken",
152
+ "type": "event"
153
+ },
154
+ {
155
+ "inputs": [],
156
+ "name": "joeFactory",
157
+ "outputs": [
158
+ {
159
+ "internalType": "address",
160
+ "name": "",
161
+ "type": "address"
162
+ }
163
+ ],
164
+ "stateMutability": "view",
165
+ "type": "function"
166
+ }
167
+ ],
6
168
  "bytecode": "0x",
7
169
  "deployedBytecode": "0x",
8
170
  "linkReferences": {},