@pendle/core-v2 0.16.5-testnet → 0.17.0-daily

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 (349) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
  10. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +2 -2
  12. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  15. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  17. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  19. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  21. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  22. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  23. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +16 -5
  24. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  25. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.json +0 -13
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  29. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  30. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  31. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  32. package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
  33. package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.json +2 -2
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +7 -54
  36. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +27 -2
  38. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  40. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  42. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  44. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +25 -13
  47. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +221 -50
  49. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.json +2 -2
  51. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.json +141 -0
  53. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.json +141 -0
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +143 -2
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +4 -0
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +1144 -0
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +4 -0
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +1209 -0
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +4 -0
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.json +10 -0
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.json +3 -82
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +4 -0
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.json +10 -0
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +4 -0
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/{ConvexCurveLP → base}/PendleConvexLPSY.sol/PendleConvexLPSY.json +142 -1
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +4 -0
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +997 -0
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +143 -2
  75. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  76. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  78. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  79. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +83 -10
  80. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  81. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +35 -4
  82. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  83. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.json +2 -2
  84. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  85. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.json +2 -2
  86. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +1 -1
  87. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.json +3 -38
  88. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.json +2 -2
  90. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
  92. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.json +2 -2
  93. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  94. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +131 -31
  95. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.json +1 -1
  97. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.json +14 -7
  99. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +4 -0
  100. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.json +213 -0
  101. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.json +1 -1
  103. package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.dbg.json +4 -0
  104. package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.json +30 -0
  105. package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.dbg.json +4 -0
  106. package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.json +76 -0
  107. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +8 -8
  109. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +18 -18
  111. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
  113. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +2 -2
  115. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +28 -28
  117. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  118. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.json +0 -38
  119. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
  120. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.json +25 -0
  121. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +17 -5
  123. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  124. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +50 -19
  125. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
  126. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.json +1 -1
  127. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  129. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  130. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.json +7 -7
  131. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  132. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +13 -0
  133. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  134. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
  135. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.json +2 -2
  136. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  137. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +71 -13
  138. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  139. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +28 -46
  140. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  141. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +138 -62
  142. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  143. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +37 -11
  144. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  145. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
  146. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  147. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +20 -20
  148. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  149. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
  150. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  151. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +28 -2
  152. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
  153. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +29 -3
  154. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  155. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +30 -4
  156. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  157. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -186
  158. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  159. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  160. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  161. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  162. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  163. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +1 -1
  164. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +2 -2
  165. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
  166. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol +1 -1
  167. package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +1 -1
  168. package/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +3 -6
  169. package/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +1 -1
  170. package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +7 -4
  171. package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +10 -5
  172. package/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +3 -6
  173. package/contracts/LiquidityMining/libraries/VeHistoryLib.sol +0 -5
  174. package/contracts/LiquidityMining/libraries/WeekMath.sol +1 -1
  175. package/contracts/core/BulkSeller/BulkSeller.sol +0 -15
  176. package/contracts/core/BulkSeller/BulkSellerFactory.sol +7 -6
  177. package/contracts/core/Market/MarketMathCore.sol +52 -11
  178. package/contracts/core/Market/PendleMarket.sol +35 -22
  179. package/contracts/core/Market/PendleMarketFactory.sol +67 -35
  180. package/contracts/core/StandardizedYield/SYBase.sol +26 -3
  181. package/contracts/core/StandardizedYield/SYBaseWithRewards.sol +3 -1
  182. package/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol +102 -0
  183. package/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol +160 -0
  184. package/contracts/core/StandardizedYield/implementations/Convex/README.md +29 -0
  185. package/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol +215 -0
  186. package/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol +46 -26
  187. package/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol +152 -0
  188. package/contracts/core/StandardizedYield/implementations/Convex/{ConvexCurveLP → base}/PendleConvexLPSY.sol +0 -0
  189. package/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol +128 -0
  190. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +3 -3
  191. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +30 -12
  192. package/contracts/core/YieldContracts/PendleYieldToken.sol +79 -22
  193. package/contracts/core/erc20/PendleERC20.sol +4 -7
  194. package/contracts/core/libraries/BaseSplitCodeFactory.sol +1 -1
  195. package/contracts/core/libraries/BoringOwnableUpgradeable.sol +1 -1
  196. package/contracts/core/libraries/Errors.sol +18 -2
  197. package/contracts/interfaces/ConvexCurve/IBooster.sol +1 -1
  198. package/contracts/interfaces/Curve/ICrvPool.sol +3 -4
  199. package/contracts/interfaces/Curve/ITriCrvPool.sol +41 -0
  200. package/contracts/interfaces/IERC4626.sol +1 -1
  201. package/contracts/interfaces/ILooksFeeSharing.sol +5 -0
  202. package/contracts/interfaces/ILooksStaking.sol +13 -0
  203. package/contracts/interfaces/IPActionAddRemoveLiq.sol +4 -4
  204. package/contracts/interfaces/IPActionMintRedeem.sol +8 -8
  205. package/contracts/interfaces/IPActionSwapYT.sol +2 -2
  206. package/contracts/interfaces/IPBulkSeller.sol +0 -4
  207. package/contracts/interfaces/IPMarket.sol +20 -4
  208. package/contracts/interfaces/IPMarketFactory.sol +15 -5
  209. package/contracts/interfaces/IPMsgSendEndpoint.sol +1 -1
  210. package/contracts/interfaces/IPYieldContractFactory.sol +2 -2
  211. package/contracts/interfaces/IPYieldToken.sol +2 -0
  212. package/contracts/interfaces/IStandardizedYield.sol +15 -10
  213. package/contracts/offchain-helpers/BulkSellerOffchain.sol +17 -8
  214. package/contracts/offchain-helpers/MarketMathStatic.sol +35 -96
  215. package/contracts/offchain-helpers/RouterStatic.sol +49 -9
  216. package/contracts/router/ActionAddRemoveLiq.sol +102 -10
  217. package/contracts/router/ActionMintRedeem.sol +44 -4
  218. package/contracts/router/ActionSwapPT.sol +41 -11
  219. package/contracts/router/ActionSwapPTYT.sol +32 -7
  220. package/contracts/router/ActionSwapYT.sol +49 -33
  221. package/contracts/router/PendleRouter.sol +3 -11
  222. package/contracts/router/base/MarketApproxLib.sol +65 -22
  223. package/deployments/43113-core.json +19 -14
  224. package/deployments/43113-markets/WETH-FEB-2ND.json +10 -0
  225. package/package.json +7 -7
  226. package/typechain-types/AccessControlUpgradeable.ts +369 -0
  227. package/typechain-types/ActionAddRemoveLiq.ts +18 -18
  228. package/typechain-types/ActionMintRedeem.ts +30 -30
  229. package/typechain-types/ActionSwapPTYT.ts +5 -5
  230. package/typechain-types/ActionSwapYT.ts +5 -5
  231. package/typechain-types/BulkSeller.ts +5 -91
  232. package/typechain-types/BulkSellerFactory.ts +21 -0
  233. package/typechain-types/BulkSellerOffchain.ts +134 -0
  234. package/typechain-types/ContextUpgradeable.ts +68 -0
  235. package/typechain-types/ERC165Upgradeable.ts +113 -0
  236. package/typechain-types/IAccessControlUpgradeable.ts +305 -0
  237. package/typechain-types/IBooster.ts +9 -3
  238. package/typechain-types/ICrvPool.ts +4 -9
  239. package/typechain-types/IERC165Upgradeable.ts +102 -0
  240. package/typechain-types/IERC4626.ts +5 -5
  241. package/typechain-types/ILooksStaking.ts +27 -0
  242. package/typechain-types/IPActionAddRemoveLiq.ts +13 -13
  243. package/typechain-types/IPActionMintRedeem.ts +30 -30
  244. package/typechain-types/IPActionSwapYT.ts +5 -5
  245. package/typechain-types/IPAllAction.ts +48 -48
  246. package/typechain-types/IPBulkSeller.ts +0 -68
  247. package/typechain-types/IPBulkSellerFactory.ts +21 -0
  248. package/typechain-types/IPMarket.ts +26 -16
  249. package/typechain-types/IPMarketFactory.ts +70 -37
  250. package/typechain-types/IPMsgSendEndpoint.ts +1 -1
  251. package/typechain-types/IPYieldContractFactory.ts +11 -11
  252. package/typechain-types/IPYieldToken.ts +21 -0
  253. package/typechain-types/MarketMathStatic.ts +0 -67
  254. package/typechain-types/Pausable.ts +101 -0
  255. package/typechain-types/PendleConvexLPSY.ts +204 -0
  256. package/typechain-types/PendleCurveFraxUsdcSY.ts +204 -0
  257. package/typechain-types/PendleCurveUsdd3CrvSY.ts +204 -0
  258. package/typechain-types/PendleLooksStakingSY.ts +1256 -0
  259. package/typechain-types/PendleMarket.ts +26 -16
  260. package/typechain-types/PendleMarketFactory.ts +316 -92
  261. package/typechain-types/PendleQiTokenSY.ts +204 -0
  262. package/typechain-types/PendleRouter.ts +3 -287
  263. package/typechain-types/PendleWstEthSY.ts +204 -0
  264. package/typechain-types/PendleYieldContractFactory.ts +63 -18
  265. package/typechain-types/PendleYieldToken.ts +42 -0
  266. package/typechain-types/RouterStatic.ts +65 -7
  267. package/typechain-types/SYBase.ts +204 -0
  268. package/typechain-types/SYBaseWithRewards.ts +204 -0
  269. package/typechain-types/VotingEscrowPendleSidechain.ts +8 -8
  270. package/typechain-types/VotingEscrowTokenBase.ts +0 -21
  271. package/typechain-types/factories/AccessControlUpgradeable__factory.ts +247 -0
  272. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +36 -10
  273. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  274. package/typechain-types/factories/ActionMintRedeem__factory.ts +19 -19
  275. package/typechain-types/factories/ActionMisc__factory.ts +1 -1
  276. package/typechain-types/factories/ActionSwapPTYT__factory.ts +28 -2
  277. package/typechain-types/factories/ActionSwapPT__factory.ts +27 -1
  278. package/typechain-types/factories/ActionSwapYT__factory.ts +29 -3
  279. package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
  280. package/typechain-types/factories/BaseSplitCodeFactoryContract__factory.ts +1 -1
  281. package/typechain-types/factories/BoringOwnableUpgradeableData__factory.ts +1 -1
  282. package/typechain-types/factories/BulkSellerFactory__factory.ts +26 -1
  283. package/typechain-types/factories/BulkSellerOffchain__factory.ts +70 -12
  284. package/typechain-types/factories/BulkSeller__factory.ts +6 -53
  285. package/typechain-types/factories/ContextUpgradeable__factory.ts +39 -0
  286. package/typechain-types/factories/ERC165Upgradeable__factory.ts +58 -0
  287. package/typechain-types/factories/Errors__factory.ts +130 -30
  288. package/typechain-types/factories/IAccessControlUpgradeable__factory.ts +202 -0
  289. package/typechain-types/factories/IBooster__factory.ts +1 -1
  290. package/typechain-types/factories/ICrvPool__factory.ts +14 -7
  291. package/typechain-types/factories/IERC165Upgradeable__factory.ts +45 -0
  292. package/typechain-types/factories/IERC4626__factory.ts +1 -1
  293. package/typechain-types/factories/ILooksStaking__factory.ts +7 -0
  294. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +8 -8
  295. package/typechain-types/factories/IPActionMintRedeem__factory.ts +18 -18
  296. package/typechain-types/factories/IPActionSwapYT__factory.ts +2 -2
  297. package/typechain-types/factories/IPAllAction__factory.ts +28 -28
  298. package/typechain-types/factories/IPBulkSellerFactory__factory.ts +25 -0
  299. package/typechain-types/factories/IPBulkSeller__factory.ts +0 -38
  300. package/typechain-types/factories/IPMarketFactory__factory.ts +50 -19
  301. package/typechain-types/factories/IPMarket__factory.ts +17 -5
  302. package/typechain-types/factories/IPMsgSendEndpoint__factory.ts +1 -1
  303. package/typechain-types/factories/IPYieldContractFactory__factory.ts +7 -7
  304. package/typechain-types/factories/IPYieldToken__factory.ts +13 -0
  305. package/typechain-types/factories/ImplicitSwapfeeContract__factory.ts +1 -1
  306. package/typechain-types/factories/MarketMathStatic__factory.ts +27 -45
  307. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  308. package/typechain-types/factories/Pausable__factory.ts +62 -0
  309. package/typechain-types/factories/PendleConvexLPSY__factory.ts +141 -0
  310. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +142 -1
  311. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +145 -39
  312. package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
  313. package/typechain-types/factories/PendleERC20__factory.ts +1 -1
  314. package/typechain-types/factories/PendleFeeDistributorFactory__factory.ts +1 -1
  315. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  316. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  317. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  318. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1078 -0
  319. package/typechain-types/factories/PendleMarketFactory__factory.ts +220 -49
  320. package/typechain-types/factories/PendleMarket__factory.ts +18 -6
  321. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  322. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  323. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  324. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  325. package/typechain-types/factories/PendleQiTokenSY__factory.ts +142 -1
  326. package/typechain-types/factories/PendleRouter__factory.ts +1 -185
  327. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  328. package/typechain-types/factories/PendleWstEthSY__factory.ts +142 -1
  329. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +82 -9
  330. package/typechain-types/factories/PendleYieldToken__factory.ts +38 -3
  331. package/typechain-types/factories/RouterStatic__factory.ts +79 -3
  332. package/typechain-types/factories/SYBaseWithRewards__factory.ts +141 -0
  333. package/typechain-types/factories/SYBase__factory.ts +141 -0
  334. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  335. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +15 -4
  336. package/typechain-types/factories/VotingEscrowTokenBase__factory.ts +0 -13
  337. package/typechain-types/hardhat.d.ts +107 -26
  338. package/typechain-types/index.ts +24 -6
  339. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +0 -4
  340. package/build/artifacts/contracts/offchain-helpers/ImplicitSwapfeeContract.sol/ImplicitSwapfeeContract.dbg.json +0 -4
  341. package/build/artifacts/contracts/offchain-helpers/ImplicitSwapfeeContract.sol/ImplicitSwapfeeContract.json +0 -182
  342. package/contracts/offchain-helpers/ImplicitSwapfeeContract.sol +0 -30
  343. package/deployments/43113-markets/benqi-market-QI-AVAX-FEB-2ND.json +0 -9
  344. package/deployments/43113-markets/benqi-market-QI-USDC-FEB-2ND.json +0 -8
  345. package/deployments/43113-markets/benqi-market-QI-WETH-DEC-1ST.json +0 -9
  346. package/deployments/80001-core.json +0 -16
  347. package/deployments/80001-markets/benqi-market-QI-USDC-FEB-2ND.json +0 -8
  348. package/deployments/80001-markets/benqi-market-QI-WETH-DEC-1ST.json +0 -8
  349. package/deployments/80001-testenv.json +0 -22
@@ -17,6 +17,32 @@ const _abi = [
17
17
  stateMutability: "nonpayable",
18
18
  type: "constructor",
19
19
  },
20
+ {
21
+ inputs: [
22
+ {
23
+ internalType: "uint256",
24
+ name: "approxGuessMin",
25
+ type: "uint256",
26
+ },
27
+ {
28
+ internalType: "uint256",
29
+ name: "approxGuessMax",
30
+ type: "uint256",
31
+ },
32
+ {
33
+ internalType: "uint256",
34
+ name: "minGuessMin",
35
+ type: "uint256",
36
+ },
37
+ {
38
+ internalType: "uint256",
39
+ name: "maxGuessMax",
40
+ type: "uint256",
41
+ },
42
+ ],
43
+ name: "ApproxBinarySearchInputInvalid",
44
+ type: "error",
45
+ },
20
46
  {
21
47
  inputs: [],
22
48
  name: "ApproxFail",
@@ -215,13 +241,13 @@ const _abi = [
215
241
  {
216
242
  indexed: true,
217
243
  internalType: "address",
218
- name: "receiver",
244
+ name: "token",
219
245
  type: "address",
220
246
  },
221
247
  {
222
248
  indexed: false,
223
249
  internalType: "address",
224
- name: "token",
250
+ name: "receiver",
225
251
  type: "address",
226
252
  },
227
253
  {
@@ -650,7 +676,7 @@ const _abi = [
650
676
  ];
651
677
 
652
678
  const _bytecode =
653
- "0x60a06040523480156200001157600080fd5b5060405162003a9338038062003a93833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b6080516139f86200009b60003960008181610121015261144301526139f86000f3fe6080604052600436106100605760003560e01c8063357d654014610065578063a000aaa91461009c578063abbc79d0146100af578063bf1bd434146100cf578063e15cc098146100ef578063f95308001461010f578063fdd71f4314610150575b600080fd5b34801561007157600080fd5b5061008561008036600461305b565b610170565b6040516100939291906130a1565b60405180910390f35b6100856100aa3660046131a5565b61024d565b3480156100bb57600080fd5b506100856100ca366004613224565b610343565b3480156100db57600080fd5b506100856100ea36600461305b565b61045a565b3480156100fb57600080fd5b5061008561010a36600461328f565b61066f565b34801561011b57600080fd5b506101437f000000000000000000000000000000000000000000000000000000000000000081565b60405161009391906132ec565b34801561015c57600080fd5b5061008561016b36600461328f565b61086f565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156101b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d89190613300565b92505091506101e98133838961092b565b6101f7888884848a8a61094c565b90945092506001600160a01b03808916908816336000805160206139838339815191526102238a610ac6565b61022c89610ae3565b60405161023a9291906130a1565b60405180910390a4505094509492505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b59190613300565b925050915060006102c98284600189610afd565b90506102d98a8a84848c8c610dae565b90955093506001600160a01b03808b16908a16336000805160206139a383398151915261030960208b018b61334d565b6103128a610ae3565b61031f8c60200135610ac6565b60405161032e9392919061336a565b60405180910390a45050509550959350505050565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ab9190613300565b92505091506103bc8133838961092b565b60006103de6103d3846103ce89613408565b610eeb565b8985858b600161094c565b945090506103f88984836103f18a613408565b6000610f13565b94506001600160a01b03808a16908916336000805160206139a383398151915261042560208b018b61334d565b61042e8c610ac6565b6104378b610ae3565b6040516104469392919061336a565b60405180910390a450505094509492505050565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561049e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c29190613300565b92505091506000826001600160a01b03166370a08231336040518263ffffffff1660e01b81526004016104f591906132ec565b602060405180830381865afa158015610512573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053691906134c5565b9050876001600160a01b03166329910b118389610554338e8c6110fa565b6040518463ffffffff1660e01b81526004016105729392919061352e565b60408051808303816000875af1158015610590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b4919061355e565b6040516370a0823160e01b81529095506001600160a01b03851691506370a08231906105e49033906004016132ec565b602060405180830381865afa158015610601573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062591906134c5565b61062f9082613598565b94506001600160a01b03808a16908916336000805160206139838339815191526106588b610ae3565b6106618a610ac6565b6040516104469291906130a1565b6000806000866001600160a01b0316632778c3346040518163ffffffff1660e01b815260040161012060405180830381865afa1580156106b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d791906135b6565b90506000876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073d9190613300565b92505050610760610756826001600160a01b031661112c565b8390894289611192565b50909450508584111561079357838660405163570cfb8160e01b815260040161078a9291906130a1565b60405180910390fd5b61079f8133838761092b565b876001600160a01b0316635b709f1782866107ba8d8c6112e6565b6040518463ffffffff1660e01b81526004016107d89392919061352e565b60408051808303816000875af11580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a919061355e565b9350506001600160a01b03808a169089163360008051602061398383398151915261084488610ac6565b61084d8c610ae3565b60405161085b9291906130a1565b60405180910390a450509550959350505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d79190613300565b92505091506108e88233838a61092b565b6108f68989838a8a8a610dae565b90945092506001600160a01b03808a169089163360008051602061398383398151915261092288610ae3565b61084d8c610ac6565b8015610946576109466001600160a01b038516848484611315565b50505050565b6000806000866001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040161097d91906132ec565b602060405180830381865afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be91906134c5565b9050876001600160a01b0316635b709f1787876109db8d896112e6565b6040518463ffffffff1660e01b81526004016109f99392919061352e565b60408051808303816000875af1158015610a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3b919061355e565b6040516370a0823160e01b81529093508291506001600160a01b038916906370a0823190610a6d908d906004016132ec565b602060405180830381865afa158015610a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aae91906134c5565b610ab89190613598565b925050965096945050505050565b6000610ad182610ae3565b610add90600019613638565b92915050565b60006001600160ff1b03821115610af957600080fd5b5090565b6000610b1a610b0f602084018461334d565b338460200135611380565b6000610b2c606084016040850161334d565b6001600160a01b0316610b42602085018561334d565b6001600160a01b03161415905060008115610be257610bc3610b67602086018661334d565b6020860135610b7c60a088016080890161334d565b610b8960a0890189613668565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113ec92505050565b610bdb610bd6606086016040870161334d565b6114f6565b9050610be9565b5060208301355b6000610bfb608086016060870161334d565b6001600160a01b031614610cbb57610c32610c1c606086016040870161334d565b610c2c608087016060880161334d565b83611580565b610c42608085016060860161334d565b6001600160a01b031663b27670708883886040518463ffffffff1660e01b8152600401610c719392919061336a565b6020604051808303816000875af1158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb491906134c5565b9250610da4565b600080610cce606087016040880161334d565b6001600160a01b031614610ce3576000610ce5565b815b9050610d00610cfa606087016040880161334d565b88611644565b6001600160a01b0387166320e8c565828a610d2160608a0160408b0161334d565b6040516001600160e01b031960e086901b1681526001600160a01b0392831660048201529116602482015260448101869052606481018a905260840160206040518083038185885af1158015610d7b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610da091906134c5565b9350505b5050949350505050565b6000806000876001600160a01b0316632778c3346040518163ffffffff1660e01b815260040161012060405180830381865afa158015610df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1691906135b6565b9050610e37610e2d886001600160a01b031661112c565b82908842886116fc565b50925084831015610e5f57828560405163a59b8c3160e01b815260040161078a9291906130a1565b876001600160a01b03166329910b118885610e7a8d8a611844565b6040518463ffffffff1660e01b8152600401610e989392919061352e565b60408051808303816000875af1158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda919061355e565b939a93995092975050505050505050565b60608101516000906001600160a01b0316610f065782610f0c565b81606001515b9392505050565b60008115610f3057610f308533610f2a8887610eeb565b8761092b565b825160408401516001600160a01b0390811691161415600081610f535787610f55565b305b60608601519091506000906001600160a01b031615610fed5785606001516001600160a01b031663bd5688d5838960006040518463ffffffff1660e01b8152600401610fa39392919061336a565b6020604051808303816000875af1158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe691906134c5565b905061107f565b604086810151905163769f8e5d60e01b81526001600160a01b038481166004830152602482018a9052918216604482015260006064820152600160848201529089169063769f8e5d9060a4016020604051808303816000875af1158015611058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107c91906134c5565b90505b82156110be5761109d86604001518288608001518960a001516113ec565b85516110a8906114f6565b93506110b986600001518a86611580565b6110c2565b8093505b85602001518410156110ee57602086015160405163c5b5576d60e01b815261078a9186916004016130a1565b50505095945050505050565b6060600084848460405160200161111494939291906136d7565b60405160208183030381529060405290509392505050565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af115801561116e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610add91906134c5565b60408051608081018252868152602081018690529081018490526060810183905260009081908190816111c68a8a8961185c565b905060006111e78760006111e285876000015160000151611956565b6119fe565b905060005b81606001518110156112c15760006112048383611ad0565b905060008061121d876000015187896020015186611b3c565b91509150600061123a838960200151611b7e90919063ffffffff16565b9050600061125661124b8387613598565b60208b015190611b93565b90508860400151811061129d57602087018590526040890151608088015161127f918391611b9f565b1561129857939a5092985096506112db95505050505050565b6112ab565b6112a885600161370c565b87525b5050505050806112ba9061371f565b90506111ec565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b6060600283836040516020016112fe93929190613738565b604051602081830303815290604052905092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526109469085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611bd2565b6001600160a01b0383166113d1578034146113cc5760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b604482015260640161078a565b505050565b80156113cc576113cc6001600160a01b038416833084611315565b6001600160a01b038216158061140157508051155b1561141f57604051631e59c84360e01b815260040160405180910390fd5b6114298483611644565b60405163726d379760e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e4da6f2e9061147a9085908890600401613760565b600060405180830381865afa158015611497573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114bf9190810190613782565b90506114ee816001600160a01b038716156114db5760006114dd565b855b6001600160a01b0386169190611ca4565b505050505050565b60006001600160a01b03821615611579576040516370a0823160e01b81526001600160a01b038316906370a08231906115339030906004016132ec565b602060405180830381865afa158015611550573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157491906134c5565b610add565b4792915050565b8060000361158d57505050565b6001600160a01b038316611630576000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b50509050806109465760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b604482015260640161078a565b6113cc6001600160a01b0384168383611cca565b6001600160a01b038216611656575050565b61166860026001600160601b03613805565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa1580156116c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e591906134c5565b10156116f8576116f88282600019611ce9565b5050565b60408051608081018252868152602081018690529081018490526060810183905260009081908161172e89898861185c565b905060006117638661175185604001518660200151611dfd90919063ffffffff16565b61175e8560200151611e09565b611e20565b905060005b81606001518110156112c15760008061178b848688600001516000015186611e59565b915091508161179f5760208401525061182a565b6000806117b68860000151888a6020015186611ec4565b9150915060006117da8960400151846117cf919061370c565b60208b015190611dfd565b905080841161181c5783875260808701516000906117fb9086908490611ee5565b905080156118165750929950975061183a9650505050505050565b50611824565b602087018490525b50505050505b6118338161371f565b9050611768565b9550959350505050565b6060600183836040516020016112fe93929190613738565b6118876040518060800160405280600081526020016000815260200160008152602001600081525090565b60c084015182106118ab5760405163b2094b5960e01b815260040160405180910390fd5b6000828560c001516118bd9190613598565b90506118c98582611f13565b825260208501516118db908590611f74565b6020830152845115806118f057506020820151155b15611917578451602083015160405163b1c4aefb60e01b815261078a9291906004016130a1565b61193585600001518661010001518460200151856000015185611fab565b604083015260a0850151611949908261202c565b6060830152509392505050565b60008061198361197e856000015186604001518760600151611978919061382b565b90612060565b612083565b905060006119a361199c670de0b6b3a764000084613852565b8390612498565b905060006119c18660200151866119ba9190613852565b8390612060565b905060006119cf828761382b565b90506103e86119dd826124be565b6119e9906103e761387a565b6119f39190613891565b979650505050505050565b611a306040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8351611a3c90846124cd565b81526020840151611a4d90836124e3565b6020820181905281511180611a6d5750670de0b6b3a76400008460800151115b15611aa857835160208501516080860151604051632cc06bc160e21b815260048101939093526024830191909152604482015260640161078a565b6040808501519082015260608085015190820152608093840151938101939093525090919050565b600081158015611ae35750604083015115155b15611af357506040820151610add565b6020830151835111611b235760208301518351600291611b129161370c565b611b1c9190613891565b9050610add565b604051637d388ed960e11b815260040160405180910390fd5b600080600080611b598787611b5088610ae3565b8b9291906124f2565b91509150611b6682612638565b9350611b71816124be565b9250505094509492505050565b600082611b8b818461264a565b949350505050565b6000610f0c8383612680565b6000828410158015611b8b5750611bc783611bc284670de0b6b3a764000061370c565b612695565b841115949350505050565b6000611c27826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126b59092919063ffffffff16565b8051909150156113cc5780806020019051810190611c4591906138a5565b6113cc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161078a565b6060611b8b84848460405180606001604052806029815260200161395a602991396126c0565b6113cc8363a9059cbb60e01b84846040516024016113499291906138c7565b600080846001600160a01b031663095ea7b360e01b8585604051602401611d119291906138c7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611d4f91906138e0565b6000604051808303816000865af19150503d8060008114611d8c576040519150601f19603f3d011682016040523d82523d6000602084013e611d91565b606091505b5091509150818015611dbb575080511580611dbb575080806020019051810190611dbb91906138a5565b611df65760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b604482015260640161078a565b5050505050565b6000610f0c83836127e6565b60006001611e16836124be565b610add9190613598565b611a306040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000806000611e688785611ad0565b90508660a001518111611e8057600192509050611ebb565b6000611e958787611e9085610ae3565b6127fb565b90506000811215611eac5750600092509050611ebb565b5060a087018190526001925090505b94509492505050565b600080600080611ed88787611b5088610ac6565b91509150611b66826124be565b6000828411158015611b8b5750611f0883611bc284670de0b6b3a7640000613598565b909310159392505050565b6000611f1e82610ae3565b611f35611f306201518061016d61387a565b610ae3565b8460800151611f449190613638565b611f4e91906138fc565b905060008113610add57604051630e520c3b60e11b81526004810182905260240161078a565b60008060008312611f86576001611f8a565b6000195b9050611fa1611f3085611f9c86612638565b6127e6565b611b8b9082613638565b600080611fb8868461202c565b9050670de0b6b3a7640000811215611fe65760405163329e322960e21b81526004810182905260240161078a565b6000611ffc611ff5878a613852565b8990612498565b90506000612009826128ed565b90506120158187612498565b61201f908461382b565b9998505050505050505050565b60008061203e6201518061016d61387a565b612048848661387a565b6120529190613891565b9050611b8b61197e82610ae3565b60008061206d8385613638565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff1982121580156120a8575068070c1cc73b00c800008213155b6120e75760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161078a565b600082121561211f576120fc82600003612083565b6a0c097ce7bc90715b34b9f160241b81612118576121186137ef565b0592915050565b60006806f05b59d3b2000000831261215d57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b612193565b6803782dace9d9000000831261218f57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380612193565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126121e35768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261221f576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261225957682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412612293576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126122cc57680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126123055768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261233e576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126123775768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b6000806124ad670de0b6b3a764000085613638565b905082818161207a5761207a6137ef565b600080821215610af957600080fd5b60008183116124dc5781610f0c565b5090919050565b60008183106124dc5781610f0c565b6000806000612514876000015187602001518860000151896040015188612940565b9050600061252a6125258684612498565b6129e5565b606088015190915060008613156125995760006125478483612498565b9050670de0b6b3a76400008112156125755760405163329e322960e21b81526004810182905260240161078a565b61259161258a83670de0b6b3a764000061382b565b8490612060565b9150506125c6565b6125c3816125af81670de0b6b3a764000061382b565b6125b99085613638565b61252591906138fc565b90505b600060646125d78b60e00151610ae3565b6125e19084613638565b6125eb91906138fc565b905060006125f9838561382b565b9050600081126126125761260d89826129f3565b61261c565b61261c8982612a20565b965061262889836129f3565b9550505050505094509492505050565b6000808213610af9576115748261392a565b6000670de0b6b3a7640000600181612662868661387a565b61266c919061370c565b6126769190613598565b610f0c9190613891565b600082612676670de0b6b3a76400008461387a565b6000806126a2838561387a565b670de0b6b3a76400009004949350505050565b6060611b8b84846000855b6060824710156127215760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161078a565b6001600160a01b0385163b6127785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161078a565b600080866001600160a01b0316858760405161279491906138e0565b60006040518083038185875af1925050503d80600081146127d1576040519150601f19603f3d011682016040523d82523d6000602084013e6127d6565b606091505b50915091506119f3828286612a4d565b6000670de0b6b3a7640000612676848461387a565b60008082856020015161280e919061382b565b9050600061281c8585613852565b905060008213801561282e5750600081135b61286f5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b604482015260640161078a565b600061289d61287e8484613638565b602089015161288d9089613852565b6128979088613638565b90612498565b905060006128b36128ae8486612498565b612a86565b88519091506000906128ce90670de0b6b3a764000090612498565b90506128de81611978848661382b565b896040015161201f919061382b565b6000670de0b6b3a764000082036129175760405163a9c8b14d60e01b815260040160405180910390fd5b600061293561292e84670de0b6b3a764000061382b565b8490612498565b9050610f0c81612a86565b60008061294d8784612b17565b9050600061295e61199c888a613852565b9050670d529ae9e86000008113156129955780670d529ae9e8600000604051637e34684f60e11b815260040161078a9291906130a1565b60006129a0826128ed565b9050856129ad8289612498565b6129b79190613852565b9350670de0b6b3a76400008412156110ee5760405163329e322960e21b81526004810185905260240161078a565b6000610add82600019613638565b60008060008312612a05576001612a09565b6000195b9050611fa1611f3085612a1b86612638565b612680565b60008060008312612a32576001612a36565b6000195b9050611fa1611f3085612a4886612638565b612b5e565b60608315612a5c575081610f0c565b825115612a6c5782518084602001fd5b8160405162461bcd60e51b815260040161078a9190613946565b6000808213612ac75760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015260640161078a565b670c7d713b49da000082138015612ae55750670f43fc2c04ee000082125b15612b0957670de0b6b3a7640000612afc83612b76565b81612118576121186137ef565b610add82612c95565b919050565b600081831215612b545760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b604482015260640161078a565b610f0c828461382b565b600082600181612662670de0b6b3a76400008661387a565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612bb757612bb76137ef565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215612cd657612ccd826a0c097ce7bc90715b34b9f160241b81612cc757612cc76137ef565b05612c95565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312612d215772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312612d58576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312612da0576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312612ddb576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312612e1257693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312612e4957690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312612e7e5768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312612ea957680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312612ede576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312612f13576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312612f47576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312612f7b576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d631000008086030281612fa457612fa46137ef565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b038116811461304d57600080fd5b50565b8035612b1281613038565b6000806000806080858703121561307157600080fd5b843561307c81613038565b9350602085013561308c81613038565b93969395505050506040820135916060013590565b918252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156130e8576130e86130af565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613116576131166130af565b604052919050565b600060a0828403121561313057600080fd5b60405160a081016001600160401b0381118282101715613152576131526130af565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b600060c0828403121561319f57600080fd5b50919050565b600080600080600061012086880312156131be57600080fd5b85356131c981613038565b945060208601356131d981613038565b9350604086013592506131ef876060880161311e565b91506101008601356001600160401b0381111561320b57600080fd5b6132178882890161318d565b9150509295509295909350565b6000806000806080858703121561323a57600080fd5b843561324581613038565b9350602085013561325581613038565b92506040850135915060608501356001600160401b0381111561327757600080fd5b6132838782880161318d565b91505092959194509250565b600080600080600061012086880312156132a857600080fd5b85356132b381613038565b945060208601356132c381613038565b935060408601359250606086013591506132e0876080880161311e565b90509295509295909350565b6001600160a01b0391909116815260200190565b60008060006060848603121561331557600080fd5b835161332081613038565b602085015190935061333181613038565b604085015190925061334281613038565b809150509250925092565b60006020828403121561335f57600080fd5b8135610f0c81613038565b6001600160a01b039390931683526020830191909152604082015260600190565b60006001600160401b038211156133a4576133a46130af565b50601f01601f191660200190565b600082601f8301126133c357600080fd5b81356133d66133d18261338b565b6130ee565b8181528460208386010111156133eb57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0823603121561341a57600080fd5b60405160c081016001600160401b03808211838310171561343d5761343d6130af565b816040528435915061344e82613038565b818352602085013560208401526040850135915061346b82613038565b8160408401526060850135915061348182613038565b81606084015261349360808601613050565b608084015260a08501359150808211156134ac57600080fd5b506134b9368286016133b2565b60a08301525092915050565b6000602082840312156134d757600080fd5b5051919050565b60005b838110156134f95781810151838201526020016134e1565b50506000910152565b6000815180845261351a8160208601602086016134de565b601f01601f19169290920160200192915050565b60018060a01b03841681528260208201526060604082015260006135556060830184613502565b95945050505050565b6000806040838503121561357157600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b81810381811115610add57610add613582565b8051612b1281613038565b600061012082840312156135c957600080fd5b6135d16130c5565b8251815260208301516020820152604083015160408201526135f5606084016135ab565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b80820260008212600160ff1b8414161561365457613654613582565b8181058314821517610add57610add613582565b6000808335601e1984360301811261367f57600080fd5b8301803591506001600160401b0382111561369957600080fd5b6020019150368190038213156136ae57600080fd5b9250929050565b600581106136d357634e487b7160e01b600052602160045260246000fd5b9052565b608081016136e582876136b5565b6001600160a01b039485166020830152929093166040840152606090920191909152919050565b80820180821115610add57610add613582565b60006001820161373157613731613582565b5060010190565b6060810161374682866136b5565b6001600160a01b0393909316602082015260400152919050565b6040815260006137736040830185613502565b90508260208301529392505050565b60006020828403121561379457600080fd5b81516001600160401b038111156137aa57600080fd5b8201601f810184136137bb57600080fd5b80516137c96133d18261338b565b8181528560208385010111156137de57600080fd5b6135558260208301602086016134de565b634e487b7160e01b600052601260045260246000fd5b60006001600160601b038381168061381f5761381f6137ef565b92169190910492915050565b818103600083128015838313168383128216171561384b5761384b613582565b5092915050565b808201828112600083128015821682158216171561387257613872613582565b505092915050565b8082028115828204841417610add57610add613582565b6000826138a0576138a06137ef565b500490565b6000602082840312156138b757600080fd5b81518015158114610f0c57600080fd5b6001600160a01b03929092168252602082015260400190565b600082516138f28184602087016134de565b9190910192915050565b60008261390b5761390b6137ef565b600160ff1b82146000198414161561392557613925613582565b500590565b6000600160ff1b820161393f5761393f613582565b5060000390565b602081526000610f0c602083018461350256fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656405499aba408f669fb848399c146fad5bd604d50b15566bdc19e81c40922fab8dc372308269f6e4dd0b4f322160cf0edef154584a3ad62248d654ae846e3eb6e8a26469706673582212207bde68f0b3a450518d77369e5d73fcf9fffb2c149e2b1d52b1ca2def58ff291264736f6c63430008110033";
679
+ "0x60a06040523480156200001157600080fd5b5060405162003bad38038062003bad833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051613b126200009b6000396000818161012101526114780152613b126000f3fe6080604052600436106100605760003560e01c8063357d654014610065578063a000aaa91461009c578063abbc79d0146100af578063bf1bd434146100cf578063e15cc098146100ef578063f95308001461010f578063fdd71f4314610150575b600080fd5b34801561007157600080fd5b5061008561008036600461315f565b610170565b6040516100939291906131a5565b60405180910390f35b6100856100aa3660046132a9565b61024d565b3480156100bb57600080fd5b506100856100ca366004613328565b610352565b3480156100db57600080fd5b506100856100ea36600461315f565b610478565b3480156100fb57600080fd5b5061008561010a366004613393565b61068d565b34801561011b57600080fd5b506101437f000000000000000000000000000000000000000000000000000000000000000081565b60405161009391906133f0565b34801561015c57600080fd5b5061008561016b366004613393565b610898565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156101b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d89190613404565b92505091506101e981338389610954565b6101f7888884848a8a610975565b90945092506001600160a01b0380891690881633600080516020613a9d8339815191526102238a610aef565b61022c89610b0c565b60405161023a9291906131a5565b60405180910390a4505094509492505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b59190613404565b925050915060006102c98284600189610b26565b90506102d98a8a84848c8c610dd7565b90955093506102eb6020870187613451565b6001600160a01b0316896001600160a01b0316336001600160a01b0316600080516020613abd8339815191528d6103218a610b0c565b61032e8c60200135610aef565b60405161033d9392919061346e565b60405180910390a45050509550959350505050565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ba9190613404565b92505091506103cb81338389610954565b60006103ed6103e2846103dd8961350c565b610f1f565b8985858b6001610975565b945090506104078984836104008a61350c565b6000610f47565b94506104166020870187613451565b6001600160a01b0316886001600160a01b0316336001600160a01b0316600080516020613abd8339815191528c61044c8c610aef565b6104558b610b0c565b6040516104649392919061346e565b60405180910390a450505094509492505050565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156104bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e09190613404565b92505091506000826001600160a01b03166370a08231336040518263ffffffff1660e01b815260040161051391906133f0565b602060405180830381865afa158015610530573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055491906135c9565b9050876001600160a01b03166329910b118389610572338e8c61112e565b6040518463ffffffff1660e01b815260040161059093929190613632565b60408051808303816000875af11580156105ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d29190613662565b6040516370a0823160e01b81529095506001600160a01b03851691506370a08231906106029033906004016133f0565b602060405180830381865afa15801561061f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064391906135c9565b61064d908261369c565b94506001600160a01b03808a1690891633600080516020613a9d8339815191526106768b610b0c565b61067f8a610aef565b6040516104649291906131a5565b6000806000866001600160a01b031663794052f3306040518263ffffffff1660e01b81526004016106be91906133f0565b61012060405180830381865afa1580156106dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070091906136ba565b90506000876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107669190613404565b9250505061078961077f826001600160a01b0316611160565b83908942896111c6565b5090945050858411156107bc57838660405163570cfb8160e01b81526004016107b39291906131a5565b60405180910390fd5b6107c881338387610954565b876001600160a01b0316635b709f1782866107e38d8c61131b565b6040518463ffffffff1660e01b815260040161080193929190613632565b60408051808303816000875af115801561081f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108439190613662565b9350506001600160a01b03808a1690891633600080516020613a9d83398151915261086d88610aef565b6108768c610b0c565b6040516108849291906131a5565b60405180910390a450509550959350505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109009190613404565b92505091506109118233838a610954565b61091f8989838a8a8a610dd7565b90945092506001600160a01b03808a1690891633600080516020613a9d83398151915261094b88610b0c565b6108768c610aef565b801561096f5761096f6001600160a01b03851684848461134a565b50505050565b6000806000866001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016109a691906133f0565b602060405180830381865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e791906135c9565b9050876001600160a01b0316635b709f178787610a048d8961131b565b6040518463ffffffff1660e01b8152600401610a2293929190613632565b60408051808303816000875af1158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190613662565b6040516370a0823160e01b81529093508291506001600160a01b038916906370a0823190610a96908d906004016133f0565b602060405180830381865afa158015610ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad791906135c9565b610ae1919061369c565b925050965096945050505050565b6000610afa82610b0c565b610b069060001961373c565b92915050565b60006001600160ff1b03821115610b2257600080fd5b5090565b6000610b43610b386020840184613451565b3384602001356113b5565b6000610b556060840160408501613451565b6001600160a01b0316610b6b6020850185613451565b6001600160a01b03161415905060008115610c0b57610bec610b906020860186613451565b6020860135610ba560a0880160808901613451565b610bb260a089018961376c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142192505050565b610c04610bff6060860160408701613451565b61152b565b9050610c12565b5060208301355b6000610c246080860160608701613451565b6001600160a01b031614610ce457610c5b610c456060860160408701613451565b610c556080870160608801613451565b836115b5565b610c6b6080850160608601613451565b6001600160a01b031663b27670708883886040518463ffffffff1660e01b8152600401610c9a9392919061346e565b6020604051808303816000875af1158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd91906135c9565b9250610dcd565b600080610cf76060870160408801613451565b6001600160a01b031614610d0c576000610d0e565b815b9050610d29610d236060870160408801613451565b88611679565b6001600160a01b0387166320e8c565828a610d4a60608a0160408b01613451565b6040516001600160e01b031960e086901b1681526001600160a01b0392831660048201529116602482015260448101869052606481018a905260840160206040518083038185885af1158015610da4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610dc991906135c9565b9350505b5050949350505050565b6000806000876001600160a01b031663794052f3306040518263ffffffff1660e01b8152600401610e0891906133f0565b61012060405180830381865afa158015610e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a91906136ba565b9050610e6b610e61886001600160a01b0316611160565b8290884288611731565b50925084831015610e9357828560405163a59b8c3160e01b81526004016107b39291906131a5565b876001600160a01b03166329910b118885610eae8d8a611883565b6040518463ffffffff1660e01b8152600401610ecc93929190613632565b60408051808303816000875af1158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e9190613662565b939a93995092975050505050505050565b60608101516000906001600160a01b0316610f3a5782610f40565b81606001515b9392505050565b60008115610f6457610f648533610f5e8887610f1f565b87610954565b825160408401516001600160a01b0390811691161415600081610f875787610f89565b305b60608601519091506000906001600160a01b0316156110215785606001516001600160a01b031663bd5688d5838960006040518463ffffffff1660e01b8152600401610fd79392919061346e565b6020604051808303816000875af1158015610ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101a91906135c9565b90506110b3565b604086810151905163769f8e5d60e01b81526001600160a01b038481166004830152602482018a9052918216604482015260006064820152600160848201529089169063769f8e5d9060a4016020604051808303816000875af115801561108c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b091906135c9565b90505b82156110f2576110d186604001518288608001518960a00151611421565b85516110dc9061152b565b93506110ed86600001518a866115b5565b6110f6565b8093505b856020015184101561112257602086015160405163c5b5576d60e01b81526107b39186916004016131a5565b50505095945050505050565b6060600084848460405160200161114894939291906137db565b60405160208183030381529060405290509392505050565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af11580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0691906135c9565b60408051608081018252868152602081018690529081018490526060810183905260009081908190816111fa8a8a8961189b565b9050600061121b87600061121685876000015160000151611995565b611a3d565b905060005b81606001518110156112f65760006112388383611b45565b9050600080611251876000015187896020015186611bb1565b5091509150600061126f838960200151611c0590919063ffffffff16565b9050600061128b611280838761369c565b60208b015190611c1a565b9050886040015181106112d25760208701859052604089015160808801516112b4918391611c26565b156112cd57939a50929850965061131095505050505050565b6112e0565b6112dd856001613810565b87525b5050505050806112ef90613823565b9050611220565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b6060600283836040516020016113339392919061383c565b604051602081830303815290604052905092915050565b6040516001600160a01b038085166024830152831660448201526064810182905261096f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611c59565b6001600160a01b038316611406578034146114015760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b60448201526064016107b3565b505050565b8015611401576114016001600160a01b03841683308461134a565b6001600160a01b038216158061143657508051155b1561145457604051631e59c84360e01b815260040160405180910390fd5b61145e8483611679565b60405163726d379760e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e4da6f2e906114af9085908890600401613864565b600060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114f49190810190613886565b9050611523816001600160a01b03871615611510576000611512565b855b6001600160a01b0386169190611d2b565b505050505050565b60006001600160a01b038216156115ae576040516370a0823160e01b81526001600160a01b038316906370a08231906115689030906004016133f0565b602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a991906135c9565b610b06565b4792915050565b806000036115c257505050565b6001600160a01b038316611665576000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461161d576040519150601f19603f3d011682016040523d82523d6000602084013e611622565b606091505b505090508061096f5760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b60448201526064016107b3565b6114016001600160a01b0384168383611d51565b6001600160a01b03821661168b575050565b61169d60026001600160601b03613909565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa1580156116f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171a91906135c9565b101561172d5761172d8282600019611d70565b5050565b60408051608081018252868152602081018690529081018490526060810183905260009081908161176389898861189b565b905060006117988661178685604001518660200151611e8490919063ffffffff16565b6117938560200151611e90565b611ea7565b905060005b81606001518110156112f6576000806117c0848688600001516000015186611f4a565b91509150816117d457602084015250611869565b6000806117eb8860000151888a6020015186611fb5565b509150915060006118108960400151846118059190613810565b60208b015190611e84565b90508084116118525783875260808701516000906118319086908490611fdb565b9050801561184c575092995097506118799650505050505050565b50611863565b61185d60018561369c565b60208801525b50505050505b61187281613823565b905061179d565b9550959350505050565b6060600183836040516020016113339392919061383c565b6118c66040518060800160405280600081526020016000815260200160008152602001600081525090565b60a084015182106118ea5760405163b2094b5960e01b815260040160405180910390fd5b6000828560a001516118fc919061369c565b90506119088582612009565b8252602085015161191a90859061206a565b60208301528451158061192f57506020820151155b15611956578451602083015160405163b1c4aefb60e01b81526107b39291906004016131a5565b611974856000015186610100015184602001518560000151856120a1565b604083015260c08501516119889082612122565b6060830152509392505050565b6000806119c26119bd8560000151866040015187606001516119b7919061392f565b90612156565b612179565b905060006119e26119db670de0b6b3a764000084613956565b839061258e565b90506000611a008660200151866119f99190613956565b8390612156565b90506000611a0e828761392f565b90506103e8611a1c826125b4565b611a28906103e761397e565b611a329190613995565b979650505050505050565b611a6f6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b602084015184511180611a8d5750670de0b6b3a76400008460800151115b15611aba57835160208501516080860151604051632cc06bc160e21b81526107b3939291906004016139a9565b8351611ac690846125c3565b81526020840151611ad790836125d9565b6020820181905281511115611b1d578351602085015160405163143e763760e31b81526004810192909252602482015260448101849052606481018390526084016107b3565b6040808501519082015260608085015190820152608093840151938101939093525090919050565b600081158015611b585750604083015115155b15611b6857506040820151610b06565b6020830151835111611b985760208301518351600291611b8791613810565b611b919190613995565b9050610b06565b604051637d388ed960e11b815260040160405180910390fd5b600080600080600080611bd18989611bc88a610b0c565b8d9291906125e8565b925092509250611be08361273c565b9550611beb826125b4565b9450611bf6816125b4565b93505050509450945094915050565b600082611c12818461274e565b949350505050565b6000610f408383612784565b6000828410158015611c125750611c4e83611c4984670de0b6b3a7640000613810565b612799565b841115949350505050565b6000611cae826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127b99092919063ffffffff16565b8051909150156114015780806020019051810190611ccc91906139bf565b6114015760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107b3565b6060611c12848484604051806060016040528060298152602001613a74602991396127c4565b6114018363a9059cbb60e01b848460405160240161137e9291906139e1565b600080846001600160a01b031663095ea7b360e01b8585604051602401611d989291906139e1565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611dd691906139fa565b6000604051808303816000865af19150503d8060008114611e13576040519150601f19603f3d011682016040523d82523d6000602084013e611e18565b606091505b5091509150818015611e42575080511580611e42575080806020019051810190611e4291906139bf565b611e7d5760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b60448201526064016107b3565b5050505050565b6000610f4083836128ea565b60006001611e9d836125b4565b610b06919061369c565b611ee06040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8351611eec90846125c3565b81526020840151611efd90836125d9565b6020820181905281511180611f1d5750670de0b6b3a76400008460800151115b15611b1d57835160208501516080860151604051632cc06bc160e21b81526107b3939291906004016139a9565b6000806000611f598785611b45565b90508660a001518111611f7157600192509050611fac565b6000611f868787611f8185610b0c565b6128ff565b90506000811215611f9d5750600092509050611fac565b5060a087018190526001925090505b94509492505050565b600080600080600080611fcc8989611bc88a610aef565b925092509250611be0836125b4565b6000828411158015611c125750611ffe83611c4984670de0b6b3a764000061369c565b909310159392505050565b600061201482610b0c565b61202b6120266201518061016d61397e565b610b0c565b846080015161203a919061373c565b6120449190613a16565b905060008113610b0657604051630e520c3b60e11b8152600481018290526024016107b3565b6000806000831261207c576001612080565b6000195b9050612097612026856120928661273c565b6128ea565b611c12908261373c565b6000806120ae8684612122565b9050670de0b6b3a76400008112156120dc5760405163329e322960e21b8152600481018290526024016107b3565b60006120f26120eb878a613956565b899061258e565b905060006120ff826129f1565b905061210b818761258e565b612115908461392f565b9998505050505050505050565b6000806121346201518061016d61397e565b61213e848661397e565b6121489190613995565b9050611c126119bd82610b0c565b600080612163838561373c565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff19821215801561219e575068070c1cc73b00c800008213155b6121dd5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016107b3565b6000821215612215576121f282600003612179565b6a0c097ce7bc90715b34b9f160241b8161220e5761220e6138f3565b0592915050565b60006806f05b59d3b2000000831261225357506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b612289565b6803782dace9d9000000831261228557506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380612289565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126122d95768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412612315576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261234f57682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412612389576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126123c257680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126123fb5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412612434576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c40000841261246d5768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b6000806125a3670de0b6b3a76400008561373c565b9050828181612170576121706138f3565b600080821215610b2257600080fd5b60008183116125d25781610f40565b5090919050565b60008183106125d25781610f40565b60008060008061260b8860000151886020015189600001518a6040015189612a44565b9050600061262161261c878461258e565b612ae9565b6060890151909150600087131561269057600061263e848361258e565b9050670de0b6b3a764000081121561266c5760405163329e322960e21b8152600481018290526024016107b3565b61268861268183670de0b6b3a764000061392f565b8490612156565b9150506126bd565b6126ba816126a681670de0b6b3a764000061392f565b6126b0908561373c565b61261c9190613a16565b90505b600060646126ce8c60e00151610b0c565b6126d8908461373c565b6126e29190613a16565b905060006126f0838561392f565b905060008112612709576127048a82612af7565b612713565b6127138a82612b24565b975061271f8a84612af7565b965061272b8a83612af7565b955050505050509450945094915050565b6000808213610b22576115a982613a44565b6000670de0b6b3a7640000600181612766868661397e565b6127709190613810565b61277a919061369c565b610f409190613995565b60008261277a670de0b6b3a76400008461397e565b6000806127a6838561397e565b670de0b6b3a76400009004949350505050565b6060611c1284846000855b6060824710156128255760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107b3565b6001600160a01b0385163b61287c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107b3565b600080866001600160a01b0316858760405161289891906139fa565b60006040518083038185875af1925050503d80600081146128d5576040519150601f19603f3d011682016040523d82523d6000602084013e6128da565b606091505b5091509150611a32828286612b51565b6000670de0b6b3a764000061277a848461397e565b600080828560200151612912919061392f565b905060006129208585613956565b90506000821380156129325750600081135b6129735760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b60448201526064016107b3565b60006129a1612982848461373c565b60208901516129919089613956565b61299b908861373c565b9061258e565b905060006129b76129b2848661258e565b612b8a565b88519091506000906129d290670de0b6b3a76400009061258e565b90506129e2816119b7848661392f565b8960400151612115919061392f565b6000670de0b6b3a76400008203612a1b5760405163a9c8b14d60e01b815260040160405180910390fd5b6000612a39612a3284670de0b6b3a764000061392f565b849061258e565b9050610f4081612b8a565b600080612a518784612c1b565b90506000612a626119db888a613956565b9050670d529ae9e8600000811315612a995780670d529ae9e8600000604051637e34684f60e11b81526004016107b39291906131a5565b6000612aa4826129f1565b905085612ab1828961258e565b612abb9190613956565b9350670de0b6b3a76400008412156111225760405163329e322960e21b8152600481018590526024016107b3565b6000610b068260001961373c565b60008060008312612b09576001612b0d565b6000195b905061209761202685612b1f8661273c565b612784565b60008060008312612b36576001612b3a565b6000195b905061209761202685612b4c8661273c565b612c62565b60608315612b60575081610f40565b825115612b705782518084602001fd5b8160405162461bcd60e51b81526004016107b39190613a60565b6000808213612bcb5760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016107b3565b670c7d713b49da000082138015612be95750670f43fc2c04ee000082125b15612c0d57670de0b6b3a7640000612c0083612c7a565b8161220e5761220e6138f3565b610b0682612d99565b919050565b600081831215612c585760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b60448201526064016107b3565b610f40828461392f565b600082600181612766670de0b6b3a76400008661397e565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612cbb57612cbb6138f3565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215612dda57612dd1826a0c097ce7bc90715b34b9f160241b81612dcb57612dcb6138f3565b05612d99565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312612e255772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312612e5c576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312612ea4576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312612edf576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312612f1657693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312612f4d57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312612f825768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312612fad57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312612fe2576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312613017576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b286603831261304b576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac831261307f576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d6310000080860302816130a8576130a86138f3565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b038116811461315157600080fd5b50565b8035612c168161313c565b6000806000806080858703121561317557600080fd5b84356131808161313c565b935060208501356131908161313c565b93969395505050506040820135916060013590565b918252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156131ec576131ec6131b3565b60405290565b604051601f8201601f191681016001600160401b038111828210171561321a5761321a6131b3565b604052919050565b600060a0828403121561323457600080fd5b60405160a081016001600160401b0381118282101715613256576132566131b3565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b600060c082840312156132a357600080fd5b50919050565b600080600080600061012086880312156132c257600080fd5b85356132cd8161313c565b945060208601356132dd8161313c565b9350604086013592506132f38760608801613222565b91506101008601356001600160401b0381111561330f57600080fd5b61331b88828901613291565b9150509295509295909350565b6000806000806080858703121561333e57600080fd5b84356133498161313c565b935060208501356133598161313c565b92506040850135915060608501356001600160401b0381111561337b57600080fd5b61338787828801613291565b91505092959194509250565b600080600080600061012086880312156133ac57600080fd5b85356133b78161313c565b945060208601356133c78161313c565b935060408601359250606086013591506133e48760808801613222565b90509295509295909350565b6001600160a01b0391909116815260200190565b60008060006060848603121561341957600080fd5b83516134248161313c565b60208501519093506134358161313c565b60408501519092506134468161313c565b809150509250925092565b60006020828403121561346357600080fd5b8135610f408161313c565b6001600160a01b039390931683526020830191909152604082015260600190565b60006001600160401b038211156134a8576134a86131b3565b50601f01601f191660200190565b600082601f8301126134c757600080fd5b81356134da6134d58261348f565b6131f2565b8181528460208386010111156134ef57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0823603121561351e57600080fd5b60405160c081016001600160401b038082118383101715613541576135416131b3565b81604052843591506135528261313c565b818352602085013560208401526040850135915061356f8261313c565b816040840152606085013591506135858261313c565b81606084015261359760808601613154565b608084015260a08501359150808211156135b057600080fd5b506135bd368286016134b6565b60a08301525092915050565b6000602082840312156135db57600080fd5b5051919050565b60005b838110156135fd5781810151838201526020016135e5565b50506000910152565b6000815180845261361e8160208601602086016135e2565b601f01601f19169290920160200192915050565b60018060a01b03841681528260208201526060604082015260006136596060830184613606565b95945050505050565b6000806040838503121561367557600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b0657610b06613686565b8051612c168161313c565b600061012082840312156136cd57600080fd5b6136d56131c9565b8251815260208301516020820152604083015160408201526136f9606084016136af565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b80820260008212600160ff1b8414161561375857613758613686565b8181058314821517610b0657610b06613686565b6000808335601e1984360301811261378357600080fd5b8301803591506001600160401b0382111561379d57600080fd5b6020019150368190038213156137b257600080fd5b9250929050565b600581106137d757634e487b7160e01b600052602160045260246000fd5b9052565b608081016137e982876137b9565b6001600160a01b039485166020830152929093166040840152606090920191909152919050565b80820180821115610b0657610b06613686565b60006001820161383557613835613686565b5060010190565b6060810161384a82866137b9565b6001600160a01b0393909316602082015260400152919050565b6040815260006138776040830185613606565b90508260208301529392505050565b60006020828403121561389857600080fd5b81516001600160401b038111156138ae57600080fd5b8201601f810184136138bf57600080fd5b80516138cd6134d58261348f565b8181528560208385010111156138e257600080fd5b6136598260208301602086016135e2565b634e487b7160e01b600052601260045260246000fd5b60006001600160601b0383811680613923576139236138f3565b92169190910492915050565b818103600083128015838313168383128216171561394f5761394f613686565b5092915050565b808201828112600083128015821682158216171561397657613976613686565b505092915050565b8082028115828204841417610b0657610b06613686565b6000826139a4576139a46138f3565b500490565b9283526020830191909152604082015260600190565b6000602082840312156139d157600080fd5b81518015158114610f4057600080fd5b6001600160a01b03929092168252602082015260400190565b60008251613a0c8184602087016135e2565b9190910192915050565b600082613a2557613a256138f3565b600160ff1b821460001984141615613a3f57613a3f613686565b500590565b6000600160ff1b8201613a5957613a59613686565b5060000390565b602081526000610f40602083018461360656fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656405499aba408f669fb848399c146fad5bd604d50b15566bdc19e81c40922fab8dc372308269f6e4dd0b4f322160cf0edef154584a3ad62248d654ae846e3eb6e8a2646970667358221220b96e2f4d0a88778a43c7b414463067b18e6b48966fb6fab8958e5b84f88732d864736f6c63430008110033";
654
680
 
655
681
  type ActionSwapYTConstructorParams =
656
682
  | [signer?: Signer]
@@ -225,7 +225,7 @@ const _abi = [
225
225
  ];
226
226
 
227
227
  const _bytecode =
228
- "0x60a0604052306080523480156200001557600080fd5b50600154600160a81b900460ff16158080156200003d575060018054600160a01b900460ff16105b806200007357506200005a306200015860201b620007611760201c565b15801562000073575060018054600160a01b900460ff16145b620000db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6001805460ff60a01b1916600160a01b179055801562000109576001805460ff60a81b1916600160a81b1790555b801562000151576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000167565b6001600160a01b03163b151590565b608051612b386200019f600039600081816102b6015281816102f6015281816104290152818161046901526104e50152612b386000f3fe6080604052600436106100765760003560e01c8063078dfbe71461007b5780633659cfe61461009d5780634e71e0c8146100bd5780634f1ef286146100d257806352d1902d146100e55780638129fc1c1461010d5780638da5cb5b14610122578063e30c39781461015a578063e4da6f2e1461017a575b600080fd5b34801561008757600080fd5b5061009b6100963660046115fd565b6101a7565b005b3480156100a957600080fd5b5061009b6100b8366004611648565b6102ac565b3480156100c957600080fd5b5061009b610374565b61009b6100e03660046117d9565b61041f565b3480156100f157600080fd5b506100fa6104d8565b6040519081526020015b60405180910390f35b34801561011957600080fd5b5061009b610586565b34801561012e57600080fd5b50600054610142906001600160a01b031681565b6040516001600160a01b039091168152602001610104565b34801561016657600080fd5b50600154610142906001600160a01b031681565b34801561018657600080fd5b5061019a610195366004611835565b6106b4565b60405161010491906118fc565b6000546001600160a01b031633146101da5760405162461bcd60e51b81526004016101d19061190f565b60405180910390fd5b811561028b576001600160a01b0383161515806101f45750805b6102385760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016101d1565b600080546040516001600160a01b0380871693921691600080516020612abc83398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102f45760405162461bcd60e51b81526004016101d190611944565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610326610770565b6001600160a01b03161461034c5760405162461bcd60e51b81526004016101d19061197e565b6103558161078c565b60408051600080825260208201909252610371918391906107b6565b50565b6001546001600160a01b03163381146103cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016101d1565b600080546040516001600160a01b0380851693921691600080516020612abc83398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104675760405162461bcd60e51b81526004016101d190611944565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610499610770565b6001600160a01b0316146104bf5760405162461bcd60e51b81526004016101d19061197e565b6104c88261078c565b6104d4828260016107b6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105735760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016101d1565b50600080516020612a9c83398151915290565b600154600160a81b900460ff16158080156105ac575060018054600160a01b900460ff16105b806105d357506105bb30610761565b1580156105d3575060018054600160a01b900460ff16145b6106365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101d1565b6001805460ff60a01b1916600160a01b1790558015610663576001805460ff60a81b1916600160a81b1790555b61066b610921565b8015610371576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b606060006106c560048286886119b8565b6106ce916119e2565b905060008080806106e2886004818c6119b8565b8101906106ef9190611aff565b93509350935093506107028383896109a2565b60405191945092508590610720908690869086908690602401611cce565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152955050505050505b9392505050565b6001600160a01b03163b151590565b600080516020612a9c833981519152546001600160a01b031690565b6000546001600160a01b031633146103715760405162461bcd60e51b81526004016101d19061190f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107e9576102a783610a72565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610843575060408051601f3d908101601f1916820190925261084091810190611dc9565b60015b6108a65760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016101d1565b600080516020612a9c83398151915281146109155760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016101d1565b506102a7838383610b0c565b600154600160a81b900460ff1661098e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d1565b600080546001600160a01b03191633179055565b6109aa611563565b60e084015160a0850151606091908481036109cc578686935093505050610a6a565b6020821615610a495760408701515115610a285760405162461bcd60e51b815260206004820152601e60248201527f6b796265723a2063616e2774207363616c652069662074616b6520666565000060448201526064016101d1565b610a33878287610b37565b610a3e878388610c92565b935093505050610a6a565b6000610a56878388610dbf565b9050610a63888388610b37565b9450925050505b935093915050565b610a7b81610761565b610add5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101d1565b600080516020612a9c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610b158361105b565b600082511180610b225750805b156102a757610b31838361109b565b50505050565b610b3f611563565b60c084015183610b4f8483611df8565b610b599190611e0f565b60c08601528015801590610b6f575060c0850151155b15610b7c57600160c08601525b60a08501839052604085015151600003610b99578491505061075a565b6000805b866040015151811015610c87576001876040015151610bbc9190611e31565b8103610bf357610bcc8286611e31565b87606001518281518110610be257610be2611e44565b602002602001018181525050610c4a565b858588606001518381518110610c0b57610c0b611e44565b6020026020010151610c1d9190611df8565b610c279190611e0f565b87606001518281518110610c3d57610c3d611e44565b6020026020010181815250505b86606001518181518110610c6057610c60611e44565b602002602001015182610c739190611e5a565b915080610c7f81611e6d565b915050610b9d565b509495945050505050565b6060600084806020019051810190610caa919061201c565b8051519091506000805b82811015610d9257610cc7600184611e31565b8103610cfe57610cd78287611e31565b84602001518281518110610ced57610ced611e44565b602002602001018181525050610d55565b868685602001518381518110610d1657610d16611e44565b6020026020010151610d289190611df8565b610d329190611e0f565b84602001518281518110610d4857610d48611e44565b6020026020010181815250505b83602001518181518110610d6b57610d6b611e44565b602002602001015182610d7e9190611e5a565b915080610d8a81611e6d565b915050610cb4565b5082604051602001610da491906120fe565b60405160208183030381529060405293505050509392505050565b6060600084806020019051810190610dd79190612331565b905083838260600151610dea9190611df8565b610df49190611e0f565b60608201526000805b82515181101561102f57600083600001518281518110610e1f57610e1f611e44565b6020026020010151600081518110610e3957610e39611e44565b6020026020010151905060006008826020015161ffff16901c905060006001866000015151610e689190611e31565b8403610e7b57610e788589611e31565b90505b60ff8216610e9b578251610e9190828b8b6110c9565b908452905061100d565b60ff821660011480610eb0575060ff82166004145b15610ec3578251610e9190828b8b611196565b60011960ff831601610edd578251610e9190828b8b611217565b60021960ff831601610ef7578251610e9190828b8b6110c9565b60041960ff831601610f11578251610e9190828b8b611276565b60051960ff831601610f2b578251610e9190828b8b61133d565b60061960ff831601610f7d5760405162461bcd60e51b815260206004820152601b60248201527a6b796265723a2063616e2774207363616c65206b7962657272667160281b60448201526064016101d1565b60071960ff831601610f97578251610e9190828b8b6113f0565b60081960ff831601610fb1578251610e9190828b8b6110c9565b60405162461bcd60e51b815260206004820152602b60248201527f4167677265676174696f6e4578656375746f723a204465782074797065206e6f60448201526a1d081cdd5c1c1bdc9d195960aa1b60648201526084016101d1565b6110178186611e5a565b9450505050808061102790611e6d565b915050610dfd565b50816040516020016110419190612408565b604051602081830303815290604052925050509392505050565b61106481610a72565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606110c08383604051806060016040528060278152602001612adc6027913961144f565b90505b92915050565b6060600080868060200190518101906110e29190612546565b905085156110f65760808101869052611117565b848482608001516111079190611df8565b6111119190611e0f565b60808201525b80604051602001611174919081516001600160a01b039081168252602080840151821690830152604080840151821690830152606080840151909116908201526080808301519082015260a0918201519181019190915260c00190565b6040516020818303038152906040528160800151925092505094509492505050565b6060600080868060200190518101906111af91906125d4565b905085156111c35760a081018690526111e4565b84848260a001516111d49190611df8565b6111de9190611e0f565b60a08201525b806040516020016111f59190612675565b6040516020818303038152906040528160a00151925092505094509492505050565b6060600080868060200190518101906112309190612722565b905085156112445760a08101869052611265565b84848260a001516112559190611df8565b61125f9190611e0f565b60a08201525b806040516020016111f591906127bf565b60606000808680602001905181019061128f9190612859565b905085156112a357608081018690526112c4565b848482608001516112b49190611df8565b6112be9190611e0f565b60808201525b80604051602001611174919060006101008201905060018060a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401526080840151608084015260a084015160a08401528060c08501511660c08401525060e0830151151560e083015292915050565b6060600080868060200190518101906113569190612914565b9050851561136a576080810186905261138b565b8484826080015161137b9190611df8565b6113859190611e0f565b60808201525b608081015160405161117491839160200182516001600160a01b03908116825260208085015190830152604080850151821690830152606080850151909116908201526080808401519082015260a0928301519281019290925260c082015260e00190565b6060600080868060200190518101906114099190612953565b9050851561141d576080810186905261143e565b8484826080015161142e9190611df8565b6114389190611e0f565b60808201525b8060405160200161117491906129dd565b606061145a84610761565b6114b55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101d1565b600080856001600160a01b0316856040516114d09190612a5f565b600060405180830381855af49150503d806000811461150b576040519150601f19603f3d011682016040523d82523d6000602084013e611510565b606091505b509150915061152082828661152a565b9695505050505050565b6060831561153957508161075a565b8251156115495782518084602001fd5b8160405162461bcd60e51b81526004016101d191906118fc565b60405180610120016040528060006001600160a01b0316815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b6001600160a01b038116811461037157600080fd5b80356115ea816115ca565b919050565b801515811461037157600080fd5b60008060006060848603121561161257600080fd5b833561161d816115ca565b9250602084013561162d816115ef565b9150604084013561163d816115ef565b809150509250925092565b60006020828403121561165a57600080fd5b813561075a816115ca565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561169e5761169e611665565b60405290565b60405160a081016001600160401b038111828210171561169e5761169e611665565b604080519081016001600160401b038111828210171561169e5761169e611665565b60405160e081016001600160401b038111828210171561169e5761169e611665565b60405160c081016001600160401b038111828210171561169e5761169e611665565b604051601f8201601f191681016001600160401b038111828210171561175457611754611665565b604052919050565b60006001600160401b0382111561177557611775611665565b50601f01601f191660200190565b600082601f83011261179457600080fd5b81356117a76117a28261175c565b61172c565b8181528460208386010111156117bc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156117ec57600080fd5b82356117f7816115ca565b915060208301356001600160401b0381111561181257600080fd5b61181e85828601611783565b9150509250929050565b6001600160a01b03169052565b60008060006040848603121561184a57600080fd5b83356001600160401b038082111561186157600080fd5b818601915086601f83011261187557600080fd5b81358181111561188457600080fd5b87602082850101111561189657600080fd5b6020928301989097509590910135949350505050565b60005b838110156118c75781810151838201526020016118af565b50506000910152565b600081518084526118e88160208601602086016118ac565b601f01601f19169290920160200192915050565b6020815260006110c060208301846118d0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c90820152600080516020612a7c83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612a7c83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b600080858511156119c857600080fd5b838611156119d557600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611a0a5780818660040360031b1b83161692505b505092915050565b60006001600160401b03821115611a2b57611a2b611665565b5060051b60200190565b600082601f830112611a4657600080fd5b81356020611a566117a283611a12565b82815260059290921b84018101918181019086841115611a7557600080fd5b8286015b84811015611a99578035611a8c816115ca565b8352918301918301611a79565b509695505050505050565b600082601f830112611ab557600080fd5b81356020611ac56117a283611a12565b82815260059290921b84018101918181019086841115611ae457600080fd5b8286015b84811015611a995780358352918301918301611ae8565b60008060008060808587031215611b1557600080fd5b8435611b20816115ca565b935060208501356001600160401b0380821115611b3c57600080fd5b908601906101208289031215611b5157600080fd5b611b5961167b565b611b62836115df565b8152611b70602084016115df565b6020820152604083013582811115611b8757600080fd5b611b938a828601611a35565b604083015250606083013582811115611bab57600080fd5b611bb78a828601611aa4565b606083015250611bc9608084016115df565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013583811115611c0057600080fd5b611c0c8b828701611783565b828401525050809550506040870135915080821115611c2a57600080fd5b611c3688838901611783565b93506060870135915080821115611c4c57600080fd5b50611c5987828801611783565b91505092959194509250565b600081518084526020808501945080840160005b83811015610c875781516001600160a01b031687529582019590820190600101611c79565b600081518084526020808501945080840160005b83811015610c8757815187529582019590820190600101611cb2565b6001600160a01b03851681526080602082018190528451611cf191830190611828565b60006020850151611d0560a0840182611828565b5060408501516101208060c0850152611d226101a0850183611c65565b91506060870151607f19808685030160e0870152611d408483611c9e565b935060808901519150610100611d5881880184611828565b60a08a01518488015260c08a015161014088015260e08a0151610160880152808a015193505080868503016101808701525050611d9582826118d0565b9150508281036040840152611daa81866118d0565b90508281036060840152611dbe81856118d0565b979650505050505050565b600060208284031215611ddb57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176110c3576110c3611de2565b600082611e2c57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156110c3576110c3611de2565b634e487b7160e01b600052603260045260246000fd5b808201808211156110c3576110c3611de2565b600060018201611e7f57611e7f611de2565b5060010190565b80516115ea816115ca565b600082601f830112611ea257600080fd5b81516020611eb26117a283611a12565b82815260059290921b84018101918181019086841115611ed157600080fd5b8286015b84811015611a99578051611ee8816115ca565b8352918301918301611ed5565b600082601f830112611f0657600080fd5b81516020611f166117a283611a12565b82815260059290921b84018101918181019086841115611f3557600080fd5b8286015b84811015611a995780518352918301918301611f39565b600082601f830112611f6157600080fd5b8151611f6f6117a28261175c565b818152846020838601011115611f8457600080fd5b611f958260208301602087016118ac565b949350505050565b600082601f830112611fae57600080fd5b81516020611fbe6117a283611a12565b82815260059290921b84018101918181019086841115611fdd57600080fd5b8286015b84811015611a995780516001600160401b038111156120005760008081fd5b61200e8986838b0101611f50565b845250918301918301611fe1565b60006020828403121561202e57600080fd5b81516001600160401b038082111561204557600080fd5b9083019060a0828603121561205957600080fd5b6120616116a4565b82518281111561207057600080fd5b61207c87828601611e91565b82525060208301518281111561209157600080fd5b61209d87828601611ef5565b6020830152506040830151828111156120b557600080fd5b6120c187828601611f9d565b604083015250606083015160608201526080830151828111156120e357600080fd5b6120ef87828601611f50565b60808301525095945050505050565b60006020808352835160a08285015261211a60c0850182611c65565b905081850151601f19808684030160408701526121378383611c9e565b60408801518782038301606089015280518083529194508501925084840190600581901b8501860160005b8281101561218e578487830301845261217c8287516118d0565b95880195938801939150600101612162565b5060608a015160808a015260808a01519650838982030160a08a01526121b481886118d0565b9a9950505050505050505050565b600082601f8301126121d357600080fd5b81516121e16117a282611a12565b808282526020820191508560208460051b870101111561220057600080fd5b602085015b60208460051b8701018110156123275780516001600160401b0381111561222b57600080fd5b8601603f8101881361223c57600080fd5b602081015161224d6117a282611a12565b808282526020820191508a60408460051b860101111561226c57600080fd5b604084015b60408460051b8601018110156123115780516001600160401b0381111561229757600080fd5b60408682018e03603f190112156122ad57600080fd5b6122b56116c6565b868201604001516001600160401b038111156122d057600080fd5b6122e18f604083868c010101611f50565b825250908601606001519061ffff821682146122fc57600080fd5b60208181019290925284529283019201612271565b5086525050602093840193919091019050612205565b5095945050505050565b60006020828403121561234357600080fd5b81516001600160401b038082111561235a57600080fd5b9083019060e0828603121561236e57600080fd5b6123766116e8565b82518281111561238557600080fd5b612391878286016121c2565b8252506123a060208401611e86565b60208201526123b160408401611e86565b6040820152606083015160608201526123cc60808401611e86565b608082015260a083015160a082015260c0830151828111156123ed57600080fd5b6123f987828601611f50565b60c08301525095945050505050565b6020808252825160e0838301528051610100840181905260009291600582811b860161012090810193928501929087019186805b838110156124cb5789870361011f1901855285518051808952908901908989019080861b8a018b01855b828110156124b557601f198c830301845284516040815181855261248c828601826118d0565b91505061ffff8f830151168f85015280935050508c850194508c84019350600181019050612466565b509950505095880195509387019360010161243c565b5050505050508185015191506124e46040850183611828565b604085015191506124f86060850183611828565b606085015160808501526080850151915061251660a0850183611828565b60a085015160c085015260c08501519150601f198482030160e085015261253d81836118d0565b95945050505050565b600060c0828403121561255857600080fd5b61256061170a565b825161256b816115ca565b8152602083015161257b816115ca565b6020820152604083015161258e816115ca565b604082015260608301516125a1816115ca565b60608201526080838101519082015260a0928301519281019290925250919050565b805160ff811681146115ea57600080fd5b600061012082840312156125e757600080fd5b6125ef61167b565b6125f883611e86565b815261260660208401611e86565b602082015261261760408401611e86565b6040820152612628606084016125c3565b6060820152612639608084016125c3565b608082015260a083015160a082015260c083015160c082015260e083015160e082015261010061266a818501611e86565b908201529392505050565b81516001600160a01b039081168252602080840151909116908201526040808301516101208301916126a990840182611828565b5060608301516126be606084018260ff169052565b5060808301516126d3608084018260ff169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151611a0a82850182611828565b8051600f81900b81146115ea57600080fd5b80516115ea816115ef565b6000610120828403121561273557600080fd5b61273d61167b565b61274683611e86565b815261275460208401611e86565b602082015261276560408401611e86565b604082015261277660608401612705565b606082015261278760808401612705565b608082015260a083015160a082015260c083015160c08201526127ac60e08401612717565b60e082015261010061266a818501612717565b81516001600160a01b039081168252602080840151909116908201526040808301516101208301916127f390840182611828565b5060608301516128086060840182600f0b9052565b50608083015161281d6080840182600f0b9052565b5060a083015160a083015260c083015160c083015260e083015161284560e084018215159052565b506101008381015180151584830152611a0a565b600061010080838503121561286d57600080fd5b604051908101906001600160401b038211818310171561288f5761288f611665565b81604052835191506128a0826115ca565b8181526128af60208501611e86565b60208201526128c060408501611e86565b60408201526128d160608501611e86565b60608201526080840151608082015260a084015160a08201526128f660c08501611e86565b60c082015261290760e08501612717565b60e0820152949350505050565b600060c0828403121561292657600080fd5b61292e61170a565b8251612939816115ca565b815260208381015190820152604083015161258e816115ca565b6000610120828403121561296657600080fd5b61296e61167b565b61297783611e86565b815261298560208401611e86565b602082015261299660408401611e86565b60408201526129a760608401611e86565b60608201526080830151608082015260a083015160a08201526129cc60c08401611e86565b60c08201526127ac60e08401612717565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612a1190840182611828565b506060830151612a246060840182611828565b506080830151608083015260a083015160a083015260c0830151612a4b60c0840182611828565b5060e083015161284560e084018215159052565b60008251612a718184602087016118ac565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122013a38974bb7c3dd802c6f679f0e31b10ea8b51b4a05f60d90a8fbb404f5b995f64736f6c63430008110033";
228
+ "0x60a0604052306080523480156200001557600080fd5b50600154600160a81b900460ff16158080156200003d575060018054600160a01b900460ff16105b806200007357506200005a306200015860201b620007611760201c565b15801562000073575060018054600160a01b900460ff16145b620000db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6001805460ff60a01b1916600160a01b179055801562000109576001805460ff60a81b1916600160a81b1790555b801562000151576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000167565b6001600160a01b03163b151590565b608051612b386200019f600039600081816102b6015281816102f6015281816104290152818161046901526104e50152612b386000f3fe6080604052600436106100765760003560e01c8063078dfbe71461007b5780633659cfe61461009d5780634e71e0c8146100bd5780634f1ef286146100d257806352d1902d146100e55780638129fc1c1461010d5780638da5cb5b14610122578063e30c39781461015a578063e4da6f2e1461017a575b600080fd5b34801561008757600080fd5b5061009b6100963660046115fd565b6101a7565b005b3480156100a957600080fd5b5061009b6100b8366004611648565b6102ac565b3480156100c957600080fd5b5061009b610374565b61009b6100e03660046117d9565b61041f565b3480156100f157600080fd5b506100fa6104d8565b6040519081526020015b60405180910390f35b34801561011957600080fd5b5061009b610586565b34801561012e57600080fd5b50600054610142906001600160a01b031681565b6040516001600160a01b039091168152602001610104565b34801561016657600080fd5b50600154610142906001600160a01b031681565b34801561018657600080fd5b5061019a610195366004611835565b6106b4565b60405161010491906118fc565b6000546001600160a01b031633146101da5760405162461bcd60e51b81526004016101d19061190f565b60405180910390fd5b811561028b576001600160a01b0383161515806101f45750805b6102385760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016101d1565b600080546040516001600160a01b0380871693921691600080516020612abc83398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102f45760405162461bcd60e51b81526004016101d190611944565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610326610770565b6001600160a01b03161461034c5760405162461bcd60e51b81526004016101d19061197e565b6103558161078c565b60408051600080825260208201909252610371918391906107b6565b50565b6001546001600160a01b03163381146103cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016101d1565b600080546040516001600160a01b0380851693921691600080516020612abc83398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104675760405162461bcd60e51b81526004016101d190611944565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610499610770565b6001600160a01b0316146104bf5760405162461bcd60e51b81526004016101d19061197e565b6104c88261078c565b6104d4828260016107b6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105735760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016101d1565b50600080516020612a9c83398151915290565b600154600160a81b900460ff16158080156105ac575060018054600160a01b900460ff16105b806105d357506105bb30610761565b1580156105d3575060018054600160a01b900460ff16145b6106365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101d1565b6001805460ff60a01b1916600160a01b1790558015610663576001805460ff60a81b1916600160a81b1790555b61066b610921565b8015610371576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b606060006106c560048286886119b8565b6106ce916119e2565b905060008080806106e2886004818c6119b8565b8101906106ef9190611aff565b93509350935093506107028383896109a2565b60405191945092508590610720908690869086908690602401611cce565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152955050505050505b9392505050565b6001600160a01b03163b151590565b600080516020612a9c833981519152546001600160a01b031690565b6000546001600160a01b031633146103715760405162461bcd60e51b81526004016101d19061190f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107e9576102a783610a72565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610843575060408051601f3d908101601f1916820190925261084091810190611dc9565b60015b6108a65760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016101d1565b600080516020612a9c83398151915281146109155760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016101d1565b506102a7838383610b0c565b600154600160a81b900460ff1661098e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d1565b600080546001600160a01b03191633179055565b6109aa611563565b60e084015160a0850151606091908481036109cc578686935093505050610a6a565b6020821615610a495760408701515115610a285760405162461bcd60e51b815260206004820152601e60248201527f6b796265723a2063616e2774207363616c652069662074616b6520666565000060448201526064016101d1565b610a33878287610b37565b610a3e878388610c92565b935093505050610a6a565b6000610a56878388610dbf565b9050610a63888388610b37565b9450925050505b935093915050565b610a7b81610761565b610add5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101d1565b600080516020612a9c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610b158361105b565b600082511180610b225750805b156102a757610b31838361109b565b50505050565b610b3f611563565b60c084015183610b4f8483611df8565b610b599190611e0f565b60c08601528015801590610b6f575060c0850151155b15610b7c57600160c08601525b60a08501839052604085015151600003610b99578491505061075a565b6000805b866040015151811015610c87576001876040015151610bbc9190611e31565b8103610bf357610bcc8286611e31565b87606001518281518110610be257610be2611e44565b602002602001018181525050610c4a565b858588606001518381518110610c0b57610c0b611e44565b6020026020010151610c1d9190611df8565b610c279190611e0f565b87606001518281518110610c3d57610c3d611e44565b6020026020010181815250505b86606001518181518110610c6057610c60611e44565b602002602001015182610c739190611e5a565b915080610c7f81611e6d565b915050610b9d565b509495945050505050565b6060600084806020019051810190610caa919061201c565b8051519091506000805b82811015610d9257610cc7600184611e31565b8103610cfe57610cd78287611e31565b84602001518281518110610ced57610ced611e44565b602002602001018181525050610d55565b868685602001518381518110610d1657610d16611e44565b6020026020010151610d289190611df8565b610d329190611e0f565b84602001518281518110610d4857610d48611e44565b6020026020010181815250505b83602001518181518110610d6b57610d6b611e44565b602002602001015182610d7e9190611e5a565b915080610d8a81611e6d565b915050610cb4565b5082604051602001610da491906120fe565b60405160208183030381529060405293505050509392505050565b6060600084806020019051810190610dd79190612331565b905083838260600151610dea9190611df8565b610df49190611e0f565b60608201526000805b82515181101561102f57600083600001518281518110610e1f57610e1f611e44565b6020026020010151600081518110610e3957610e39611e44565b6020026020010151905060006008826020015161ffff16901c905060006001866000015151610e689190611e31565b8403610e7b57610e788589611e31565b90505b60ff8216610e9b578251610e9190828b8b6110c9565b908452905061100d565b60ff821660011480610eb0575060ff82166004145b15610ec3578251610e9190828b8b611196565b60011960ff831601610edd578251610e9190828b8b611217565b60021960ff831601610ef7578251610e9190828b8b6110c9565b60041960ff831601610f11578251610e9190828b8b611276565b60051960ff831601610f2b578251610e9190828b8b61133d565b60061960ff831601610f7d5760405162461bcd60e51b815260206004820152601b60248201527a6b796265723a2063616e2774207363616c65206b7962657272667160281b60448201526064016101d1565b60071960ff831601610f97578251610e9190828b8b6113f0565b60081960ff831601610fb1578251610e9190828b8b6110c9565b60405162461bcd60e51b815260206004820152602b60248201527f4167677265676174696f6e4578656375746f723a204465782074797065206e6f60448201526a1d081cdd5c1c1bdc9d195960aa1b60648201526084016101d1565b6110178186611e5a565b9450505050808061102790611e6d565b915050610dfd565b50816040516020016110419190612408565b604051602081830303815290604052925050509392505050565b61106481610a72565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606110c08383604051806060016040528060278152602001612adc6027913961144f565b90505b92915050565b6060600080868060200190518101906110e29190612546565b905085156110f65760808101869052611117565b848482608001516111079190611df8565b6111119190611e0f565b60808201525b80604051602001611174919081516001600160a01b039081168252602080840151821690830152604080840151821690830152606080840151909116908201526080808301519082015260a0918201519181019190915260c00190565b6040516020818303038152906040528160800151925092505094509492505050565b6060600080868060200190518101906111af91906125d4565b905085156111c35760a081018690526111e4565b84848260a001516111d49190611df8565b6111de9190611e0f565b60a08201525b806040516020016111f59190612675565b6040516020818303038152906040528160a00151925092505094509492505050565b6060600080868060200190518101906112309190612722565b905085156112445760a08101869052611265565b84848260a001516112559190611df8565b61125f9190611e0f565b60a08201525b806040516020016111f591906127bf565b60606000808680602001905181019061128f9190612859565b905085156112a357608081018690526112c4565b848482608001516112b49190611df8565b6112be9190611e0f565b60808201525b80604051602001611174919060006101008201905060018060a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401526080840151608084015260a084015160a08401528060c08501511660c08401525060e0830151151560e083015292915050565b6060600080868060200190518101906113569190612914565b9050851561136a576080810186905261138b565b8484826080015161137b9190611df8565b6113859190611e0f565b60808201525b608081015160405161117491839160200182516001600160a01b03908116825260208085015190830152604080850151821690830152606080850151909116908201526080808401519082015260a0928301519281019290925260c082015260e00190565b6060600080868060200190518101906114099190612953565b9050851561141d576080810186905261143e565b8484826080015161142e9190611df8565b6114389190611e0f565b60808201525b8060405160200161117491906129dd565b606061145a84610761565b6114b55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101d1565b600080856001600160a01b0316856040516114d09190612a5f565b600060405180830381855af49150503d806000811461150b576040519150601f19603f3d011682016040523d82523d6000602084013e611510565b606091505b509150915061152082828661152a565b9695505050505050565b6060831561153957508161075a565b8251156115495782518084602001fd5b8160405162461bcd60e51b81526004016101d191906118fc565b60405180610120016040528060006001600160a01b0316815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b6001600160a01b038116811461037157600080fd5b80356115ea816115ca565b919050565b801515811461037157600080fd5b60008060006060848603121561161257600080fd5b833561161d816115ca565b9250602084013561162d816115ef565b9150604084013561163d816115ef565b809150509250925092565b60006020828403121561165a57600080fd5b813561075a816115ca565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561169e5761169e611665565b60405290565b60405160a081016001600160401b038111828210171561169e5761169e611665565b604080519081016001600160401b038111828210171561169e5761169e611665565b60405160e081016001600160401b038111828210171561169e5761169e611665565b60405160c081016001600160401b038111828210171561169e5761169e611665565b604051601f8201601f191681016001600160401b038111828210171561175457611754611665565b604052919050565b60006001600160401b0382111561177557611775611665565b50601f01601f191660200190565b600082601f83011261179457600080fd5b81356117a76117a28261175c565b61172c565b8181528460208386010111156117bc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156117ec57600080fd5b82356117f7816115ca565b915060208301356001600160401b0381111561181257600080fd5b61181e85828601611783565b9150509250929050565b6001600160a01b03169052565b60008060006040848603121561184a57600080fd5b83356001600160401b038082111561186157600080fd5b818601915086601f83011261187557600080fd5b81358181111561188457600080fd5b87602082850101111561189657600080fd5b6020928301989097509590910135949350505050565b60005b838110156118c75781810151838201526020016118af565b50506000910152565b600081518084526118e88160208601602086016118ac565b601f01601f19169290920160200192915050565b6020815260006110c060208301846118d0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c90820152600080516020612a7c83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612a7c83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b600080858511156119c857600080fd5b838611156119d557600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611a0a5780818660040360031b1b83161692505b505092915050565b60006001600160401b03821115611a2b57611a2b611665565b5060051b60200190565b600082601f830112611a4657600080fd5b81356020611a566117a283611a12565b82815260059290921b84018101918181019086841115611a7557600080fd5b8286015b84811015611a99578035611a8c816115ca565b8352918301918301611a79565b509695505050505050565b600082601f830112611ab557600080fd5b81356020611ac56117a283611a12565b82815260059290921b84018101918181019086841115611ae457600080fd5b8286015b84811015611a995780358352918301918301611ae8565b60008060008060808587031215611b1557600080fd5b8435611b20816115ca565b935060208501356001600160401b0380821115611b3c57600080fd5b908601906101208289031215611b5157600080fd5b611b5961167b565b611b62836115df565b8152611b70602084016115df565b6020820152604083013582811115611b8757600080fd5b611b938a828601611a35565b604083015250606083013582811115611bab57600080fd5b611bb78a828601611aa4565b606083015250611bc9608084016115df565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013583811115611c0057600080fd5b611c0c8b828701611783565b828401525050809550506040870135915080821115611c2a57600080fd5b611c3688838901611783565b93506060870135915080821115611c4c57600080fd5b50611c5987828801611783565b91505092959194509250565b600081518084526020808501945080840160005b83811015610c875781516001600160a01b031687529582019590820190600101611c79565b600081518084526020808501945080840160005b83811015610c8757815187529582019590820190600101611cb2565b6001600160a01b03851681526080602082018190528451611cf191830190611828565b60006020850151611d0560a0840182611828565b5060408501516101208060c0850152611d226101a0850183611c65565b91506060870151607f19808685030160e0870152611d408483611c9e565b935060808901519150610100611d5881880184611828565b60a08a01518488015260c08a015161014088015260e08a0151610160880152808a015193505080868503016101808701525050611d9582826118d0565b9150508281036040840152611daa81866118d0565b90508281036060840152611dbe81856118d0565b979650505050505050565b600060208284031215611ddb57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176110c3576110c3611de2565b600082611e2c57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156110c3576110c3611de2565b634e487b7160e01b600052603260045260246000fd5b808201808211156110c3576110c3611de2565b600060018201611e7f57611e7f611de2565b5060010190565b80516115ea816115ca565b600082601f830112611ea257600080fd5b81516020611eb26117a283611a12565b82815260059290921b84018101918181019086841115611ed157600080fd5b8286015b84811015611a99578051611ee8816115ca565b8352918301918301611ed5565b600082601f830112611f0657600080fd5b81516020611f166117a283611a12565b82815260059290921b84018101918181019086841115611f3557600080fd5b8286015b84811015611a995780518352918301918301611f39565b600082601f830112611f6157600080fd5b8151611f6f6117a28261175c565b818152846020838601011115611f8457600080fd5b611f958260208301602087016118ac565b949350505050565b600082601f830112611fae57600080fd5b81516020611fbe6117a283611a12565b82815260059290921b84018101918181019086841115611fdd57600080fd5b8286015b84811015611a995780516001600160401b038111156120005760008081fd5b61200e8986838b0101611f50565b845250918301918301611fe1565b60006020828403121561202e57600080fd5b81516001600160401b038082111561204557600080fd5b9083019060a0828603121561205957600080fd5b6120616116a4565b82518281111561207057600080fd5b61207c87828601611e91565b82525060208301518281111561209157600080fd5b61209d87828601611ef5565b6020830152506040830151828111156120b557600080fd5b6120c187828601611f9d565b604083015250606083015160608201526080830151828111156120e357600080fd5b6120ef87828601611f50565b60808301525095945050505050565b60006020808352835160a08285015261211a60c0850182611c65565b905081850151601f19808684030160408701526121378383611c9e565b60408801518782038301606089015280518083529194508501925084840190600581901b8501860160005b8281101561218e578487830301845261217c8287516118d0565b95880195938801939150600101612162565b5060608a015160808a015260808a01519650838982030160a08a01526121b481886118d0565b9a9950505050505050505050565b600082601f8301126121d357600080fd5b81516121e16117a282611a12565b808282526020820191508560208460051b870101111561220057600080fd5b602085015b60208460051b8701018110156123275780516001600160401b0381111561222b57600080fd5b8601603f8101881361223c57600080fd5b602081015161224d6117a282611a12565b808282526020820191508a60408460051b860101111561226c57600080fd5b604084015b60408460051b8601018110156123115780516001600160401b0381111561229757600080fd5b60408682018e03603f190112156122ad57600080fd5b6122b56116c6565b868201604001516001600160401b038111156122d057600080fd5b6122e18f604083868c010101611f50565b825250908601606001519061ffff821682146122fc57600080fd5b60208181019290925284529283019201612271565b5086525050602093840193919091019050612205565b5095945050505050565b60006020828403121561234357600080fd5b81516001600160401b038082111561235a57600080fd5b9083019060e0828603121561236e57600080fd5b6123766116e8565b82518281111561238557600080fd5b612391878286016121c2565b8252506123a060208401611e86565b60208201526123b160408401611e86565b6040820152606083015160608201526123cc60808401611e86565b608082015260a083015160a082015260c0830151828111156123ed57600080fd5b6123f987828601611f50565b60c08301525095945050505050565b6020808252825160e0838301528051610100840181905260009291600582811b860161012090810193928501929087019186805b838110156124cb5789870361011f1901855285518051808952908901908989019080861b8a018b01855b828110156124b557601f198c830301845284516040815181855261248c828601826118d0565b91505061ffff8f830151168f85015280935050508c850194508c84019350600181019050612466565b509950505095880195509387019360010161243c565b5050505050508185015191506124e46040850183611828565b604085015191506124f86060850183611828565b606085015160808501526080850151915061251660a0850183611828565b60a085015160c085015260c08501519150601f198482030160e085015261253d81836118d0565b95945050505050565b600060c0828403121561255857600080fd5b61256061170a565b825161256b816115ca565b8152602083015161257b816115ca565b6020820152604083015161258e816115ca565b604082015260608301516125a1816115ca565b60608201526080838101519082015260a0928301519281019290925250919050565b805160ff811681146115ea57600080fd5b600061012082840312156125e757600080fd5b6125ef61167b565b6125f883611e86565b815261260660208401611e86565b602082015261261760408401611e86565b6040820152612628606084016125c3565b6060820152612639608084016125c3565b608082015260a083015160a082015260c083015160c082015260e083015160e082015261010061266a818501611e86565b908201529392505050565b81516001600160a01b039081168252602080840151909116908201526040808301516101208301916126a990840182611828565b5060608301516126be606084018260ff169052565b5060808301516126d3608084018260ff169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151611a0a82850182611828565b8051600f81900b81146115ea57600080fd5b80516115ea816115ef565b6000610120828403121561273557600080fd5b61273d61167b565b61274683611e86565b815261275460208401611e86565b602082015261276560408401611e86565b604082015261277660608401612705565b606082015261278760808401612705565b608082015260a083015160a082015260c083015160c08201526127ac60e08401612717565b60e082015261010061266a818501612717565b81516001600160a01b039081168252602080840151909116908201526040808301516101208301916127f390840182611828565b5060608301516128086060840182600f0b9052565b50608083015161281d6080840182600f0b9052565b5060a083015160a083015260c083015160c083015260e083015161284560e084018215159052565b506101008381015180151584830152611a0a565b600061010080838503121561286d57600080fd5b604051908101906001600160401b038211818310171561288f5761288f611665565b81604052835191506128a0826115ca565b8181526128af60208501611e86565b60208201526128c060408501611e86565b60408201526128d160608501611e86565b60608201526080840151608082015260a084015160a08201526128f660c08501611e86565b60c082015261290760e08501612717565b60e0820152949350505050565b600060c0828403121561292657600080fd5b61292e61170a565b8251612939816115ca565b815260208381015190820152604083015161258e816115ca565b6000610120828403121561296657600080fd5b61296e61167b565b61297783611e86565b815261298560208401611e86565b602082015261299660408401611e86565b60408201526129a760608401611e86565b60608201526080830151608082015260a083015160a08201526129cc60c08401611e86565b60c08201526127ac60e08401612717565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612a1190840182611828565b506060830151612a246060840182611828565b506080830151608083015260a083015160a083015260c0830151612a4b60c0840182611828565b5060e083015161284560e084018215159052565b60008251612a718184602087016118ac565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201990797cf7c2b5a985306b2544f40a5365b499084d30df8fc9f837950f1dce9f64736f6c63430008110033";
229
229
 
230
230
  type AggregationRouterHelperConstructorParams =
231
231
  | [signer?: Signer]
@@ -181,7 +181,7 @@ const _abi = [
181
181
  ];
182
182
 
183
183
  const _bytecode =
184
- "0x608060405234801561001057600080fd5b50600154600160a81b900460ff1615808015610037575060018054600160a01b900460ff16105b8061006857506100503061015260201b6103661760201c565b158015610068575060018054600160a01b900460ff16145b6100d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6001805460ff60a01b1916600160a01b17905580156100fd576001805460ff60a81b1916600160a81b1790555b610105610161565b801561014c576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506101e2565b6001600160a01b03163b151590565b600154600160a81b900460ff166101ce5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016100c7565b600080546001600160a01b03191633179055565b610708806101f16000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063078dfbe71461005c5780634e71e0c8146100715780638da5cb5b14610079578063be3397e9146100a9578063e30c3978146100cc575b600080fd5b61006f61006a36600461049b565b6100df565b005b61006f6101e5565b60005461008c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bc6100b736600461054a565b610290565b6040516100a09493929190610624565b60015461008c906001600160a01b031681565b6000546001600160a01b031633146101125760405162461bcd60e51b81526004016101099061064e565b60405180910390fd5b81156101c3576001600160a01b03831615158061012c5750805b6101705760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606401610109565b600080546040516001600160a01b03808716939216916000805160206106b383398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0385166001600160a01b0319909116179055505050565b6001546001600160a01b03163381146102405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606401610109565b600080546040516001600160a01b03808516939216916000805160206106b383398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b600080548190819081906001600160a01b031633146102c15760405162461bcd60e51b81526004016101099061064e565b61030086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061037592505050565b60405193975091955093509150610318908890610683565b60405180910390207fbc62a8a743e5565da3487dae8f72d8e62aba1c03b13971b56ace6da5812d9ac6858585856040516103559493929190610624565b60405180910390a293509350935093565b6001600160a01b03163b151590565b60008060008060008551116103ba5760405162461bcd60e51b815260206004820152600b60248201526a0f4cae4de40d8cadccee8d60ab1b6044820152606401610109565b84516002810480875293508381039150856103d4816103f8565b8786018051858252919750906103e9826103f8565b93909252529395929450919050565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f090845291506001600160a01b0382166104805760405162461bcd60e51b815260206004820152601a6024820152792222a82627aca6a2a72a2fa320a4a622a22fa120a620a721a2a960311b6044820152606401610109565b50919050565b8035801515811461049657600080fd5b919050565b6000806000606084860312156104b057600080fd5b83356001600160a01b03811681146104c757600080fd5b92506104d560208501610486565b91506104e360408501610486565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b60008083601f84011261051457600080fd5b5081356001600160401b0381111561052b57600080fd5b60208301915083602082850101111561054357600080fd5b9250929050565b60008060006040848603121561055f57600080fd5b83356001600160401b038082111561057657600080fd5b818601915086601f83011261058a57600080fd5b81358181111561059c5761059c6104ec565b604051601f8201601f19908116603f011681019083821181831017156105c4576105c46104ec565b816040528281528960208487010111156105dd57600080fd5b82602086016020830137600060208483010152809750505050602086013591508082111561060a57600080fd5b5061061786828701610502565b9497909650939450505050565b6001600160a01b039485168152602081019390935292166040820152606081019190915260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000825160005b818110156106a4576020818601810151858301520161068a565b50600092019182525091905056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220287284f0b2cba3425307c1f92e923a3146136e8780a509884e8e292f41d2073864736f6c63430008110033";
184
+ "0x608060405234801561001057600080fd5b50600154600160a81b900460ff1615808015610037575060018054600160a01b900460ff16105b8061006857506100503061015260201b6103661760201c565b158015610068575060018054600160a01b900460ff16145b6100d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6001805460ff60a01b1916600160a01b17905580156100fd576001805460ff60a81b1916600160a81b1790555b610105610161565b801561014c576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506101e2565b6001600160a01b03163b151590565b600154600160a81b900460ff166101ce5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016100c7565b600080546001600160a01b03191633179055565b610708806101f16000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063078dfbe71461005c5780634e71e0c8146100715780638da5cb5b14610079578063be3397e9146100a9578063e30c3978146100cc575b600080fd5b61006f61006a36600461049b565b6100df565b005b61006f6101e5565b60005461008c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bc6100b736600461054a565b610290565b6040516100a09493929190610624565b60015461008c906001600160a01b031681565b6000546001600160a01b031633146101125760405162461bcd60e51b81526004016101099061064e565b60405180910390fd5b81156101c3576001600160a01b03831615158061012c5750805b6101705760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606401610109565b600080546040516001600160a01b03808716939216916000805160206106b383398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0385166001600160a01b0319909116179055505050565b6001546001600160a01b03163381146102405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606401610109565b600080546040516001600160a01b03808516939216916000805160206106b383398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b600080548190819081906001600160a01b031633146102c15760405162461bcd60e51b81526004016101099061064e565b61030086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061037592505050565b60405193975091955093509150610318908890610683565b60405180910390207fbc62a8a743e5565da3487dae8f72d8e62aba1c03b13971b56ace6da5812d9ac6858585856040516103559493929190610624565b60405180910390a293509350935093565b6001600160a01b03163b151590565b60008060008060008551116103ba5760405162461bcd60e51b815260206004820152600b60248201526a0f4cae4de40d8cadccee8d60ab1b6044820152606401610109565b84516002810480875293508381039150856103d4816103f8565b8786018051858252919750906103e9826103f8565b93909252529395929450919050565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f090845291506001600160a01b0382166104805760405162461bcd60e51b815260206004820152601a6024820152792222a82627aca6a2a72a2fa320a4a622a22fa120a620a721a2a960311b6044820152606401610109565b50919050565b8035801515811461049657600080fd5b919050565b6000806000606084860312156104b057600080fd5b83356001600160a01b03811681146104c757600080fd5b92506104d560208501610486565b91506104e360408501610486565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b60008083601f84011261051457600080fd5b5081356001600160401b0381111561052b57600080fd5b60208301915083602082850101111561054357600080fd5b9250929050565b60008060006040848603121561055f57600080fd5b83356001600160401b038082111561057657600080fd5b818601915086601f83011261058a57600080fd5b81358181111561059c5761059c6104ec565b604051601f8201601f19908116603f011681019083821181831017156105c4576105c46104ec565b816040528281528960208487010111156105dd57600080fd5b82602086016020830137600060208483010152809750505050602086013591508082111561060a57600080fd5b5061061786828701610502565b9497909650939450505050565b6001600160a01b039485168152602081019390935292166040820152606081019190915260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000825160005b818110156106a4576020818601810151858301520161068a565b50600092019182525091905056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220d0a6d3f6fb73826443b6a6abb786a1ace73706e4cfc454d9e72024b76e42a60764736f6c63430008110033";
185
185
 
186
186
  type BaseSplitCodeFactoryContractConstructorParams =
187
187
  | [signer?: Signer]
@@ -38,7 +38,7 @@ const _abi = [
38
38
  ];
39
39
 
40
40
  const _bytecode =
41
- "0x6080604052348015600f57600080fd5b5060ad8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80638da5cb5b146037578063e30c3978146065575b600080fd5b6000546049906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6001546049906001600160a01b03168156fea264697066735822122081aa73b47139531495843be894f568b31417dc49927b48d24c22ae265e7b2f4264736f6c63430008110033";
41
+ "0x6080604052348015600f57600080fd5b5060ad8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80638da5cb5b146037578063e30c3978146065575b600080fd5b6000546049906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6001546049906001600160a01b03168156fea26469706673582212202388bfa40492410bff795db0f1ff4e880bcefe1fcd0c3e2f5f5413b4b9ed032e64736f6c63430008110033";
42
42
 
43
43
  type BoringOwnableUpgradeableDataConstructorParams =
44
44
  | [signer?: Signer]
@@ -88,6 +88,31 @@ const _abi = [
88
88
  name: "BeaconUpgraded",
89
89
  type: "event",
90
90
  },
91
+ {
92
+ anonymous: false,
93
+ inputs: [
94
+ {
95
+ indexed: true,
96
+ internalType: "address",
97
+ name: "token",
98
+ type: "address",
99
+ },
100
+ {
101
+ indexed: true,
102
+ internalType: "address",
103
+ name: "sy",
104
+ type: "address",
105
+ },
106
+ {
107
+ indexed: true,
108
+ internalType: "address",
109
+ name: "bulk",
110
+ type: "address",
111
+ },
112
+ ],
113
+ name: "BulkSellerCreated",
114
+ type: "event",
115
+ },
91
116
  {
92
117
  anonymous: false,
93
118
  inputs: [
@@ -516,7 +541,7 @@ const _abi = [
516
541
  ];
517
542
 
518
543
  const _bytecode =
519
- "0x60a0604052306080523480156200001557600080fd5b50600154610100900460ff16158080156200003457506001805460ff16105b8062000063575062000051306200013b60201b62000c301760201c565b1580156200006357506001805460ff16145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6001805460ff1916811790558015620000ee576001805461ff0019166101001790555b801562000134576001805461ff00191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014a565b6001600160a01b03163b151590565b60805161217762000182600039600081816105c201528181610605015281816109220152818161096501526109e601526121776000f3fe608060405260043610620000ec5760003560e01c806301ffc9a714620000f15780631bce4583146200012b578063248a9ca3146200015257806324d7806c14620001865780632aabb72614620001ab5780632f2ff15d14620001d057806336568abe14620001f55780633659cfe6146200021a5780634f0c9e08146200023f5780634f1ef286146200027357806352d1902d146200028a5780635c60da1b14620002a257806391d1485414620002ca578063a217fddf14620002ef578063c4d66de81462000306578063d547741f146200032b578063d81e84231462000350578063dd57366a1462000399575b600080fd5b348015620000fe57600080fd5b5062000116620001103660046200138d565b620003be565b60405190151581526020015b60405180910390f35b3480156200013857600080fd5b50620001506200014a366004620013d6565b620003f6565b005b3480156200015f57600080fd5b506200017762000171366004620013f4565b620004ec565b60405190815260200162000122565b3480156200019357600080fd5b5062000116620001a5366004620013d6565b62000501565b348015620001b857600080fd5b5062000177600080516020620020db83398151915281565b348015620001dd57600080fd5b5062000150620001ef3660046200140e565b6200050f565b3480156200020257600080fd5b5062000150620002143660046200140e565b62000536565b3480156200022757600080fd5b506200015062000239366004620013d6565b620005b8565b3480156200024c57600080fd5b50620002646200025e3660046200143d565b6200068c565b6040516200012291906200146c565b620001506200028436600462001496565b62000918565b3480156200029757600080fd5b5062000177620009d9565b348015620002af57600080fd5b5060015462000264906201000090046001600160a01b031681565b348015620002d757600080fd5b5062000116620002e93660046200140e565b62000a8a565b348015620002fc57600080fd5b5062000177600081565b3480156200031357600080fd5b506200015062000325366004620013d6565b62000ab3565b3480156200033857600080fd5b50620001506200034a3660046200140e565b62000bde565b3480156200035d57600080fd5b50620002646200036f3660046200143d565b6001600160a01b039182166000908152600260209081526040808320938516835292905220541690565b348015620003a657600080fd5b5062000116620003b8366004620013d6565b62000c00565b60006001600160e01b03198216637965db0b60e01b1480620003f057506301ffc9a760e01b6001600160e01b03198316145b92915050565b620004013362000501565b6200041f576040516308e4b93b60e21b815260040160405180910390fd5b6200042a8162000c30565b620004985760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b60648201526084015b60405180910390fd5b6001805462010000600160b01b031916620100006001600160a01b038416908102919091179091556040517f39bf842b8dcd8318ae7644628c1bde77b4a040d6cf7cf3d30ef8edea6d506e3590600090a250565b60009081526020819052604090206001015490565b6000620003f0818362000a8a565b6200051a82620004ec565b620005258162000c3f565b62000531838362000c4b565b505050565b6001600160a01b0381163314620005a85760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016200048f565b620005b4828262000cd3565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620006035760405162461bcd60e51b81526004016200048f9062001563565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200063762000d3b565b6001600160a01b031614620006605760405162461bcd60e51b81526004016200048f906200159e565b6200066b8162000d58565b60408051600080825260208201909252620006899183919062000d81565b50565b6000620006993362000501565b620006b7576040516308e4b93b60e21b815260040160405180910390fd5b6001600160a01b03838116600090815260026020908152604080832084871684529091529020548391161562000731576001600160a01b0380851660009081526002602090815260408083208488168452909152908190205490516375d5c8f560e01b81526200048f9287928792911690600401620015d9565b604051637d2d278360e11b81526001600160a01b0382169063fa5a4f06906200075f9087906004016200146c565b602060405180830381865afa1580156200077d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a39190620015fc565b15806200081f5750604051633c21b3eb60e11b81526001600160a01b0382169063784367d690620007d99087906004016200146c565b602060405180830381865afa158015620007f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200081d9190620015fc565b155b15620008525760405163d054b0e160e01b81526001600160a01b038086166004830152841660248201526044016200048f565b60008484306040516024016200086b93929190620015d9565b60408051601f198184030181529181526020820180516001600160e01b031663c0c53b8b60e01b1790525190915030908290620008a8906200137f565b620008b592919062001674565b604051809103906000f080158015620008d2573d6000803e3d6000fd5b506001600160a01b0386811660009081526002602090815260408083208985168452909152902080546001600160a01b0319169183169190911790559250505092915050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620009635760405162461bcd60e51b81526004016200048f9062001563565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200099762000d3b565b6001600160a01b031614620009c05760405162461bcd60e51b81526004016200048f906200159e565b620009cb8262000d58565b620005b48282600162000d81565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161462000a765760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016200048f565b50600080516020620020fb83398151915290565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b600154610100900460ff161580801562000ad157506001805460ff16105b8062000af5575062000ae33062000c30565b15801562000af557506001805460ff16145b62000b5a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016200048f565b6001805460ff191681179055801562000b7d576001805461ff0019166101001790555b62000b8a60003362000c4b565b62000b9582620003f6565b8015620005b4576001805461ff00191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b62000be982620004ec565b62000bf48162000c3f565b62000531838362000cd3565b600062000c0e818362000a8a565b80620003f05750620003f0600080516020620020db8339815191528362000a8a565b6001600160a01b03163b151590565b62000689813362000ef9565b62000c57828262000a8a565b620005b4576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905562000c8f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b62000cdf828262000a8a565b15620005b4576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020620020fb833981519152546001600160a01b031690565b62000d633362000501565b62000689576040516308e4b93b60e21b815260040160405180910390fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161562000db757620005318362000f68565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000e14575060408051601f3d908101601f1916820190925262000e1191810190620016a2565b60015b62000e795760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016200048f565b600080516020620020fb833981519152811462000eeb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016200048f565b506200053183838362001007565b62000f05828262000a8a565b620005b45762000f20816001600160a01b0316601462001038565b62000f2d83602062001038565b60405160200162000f40929190620016bc565b60408051601f198184030181529082905262461bcd60e51b82526200048f916004016200172f565b62000f738162000c30565b62000fd75760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200048f565b600080516020620020fb83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6200101283620011f8565b600082511180620010205750805b1562000531576200103283836200123a565b50505050565b60606000620010498360026200175a565b6200105690600262001774565b6001600160401b0381111562001070576200107062001480565b6040519080825280601f01601f1916602001820160405280156200109b576020820181803683370190505b509050600360fc1b81600081518110620010b957620010b96200178a565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110620010eb57620010eb6200178a565b60200101906001600160f81b031916908160001a9053506000620011118460026200175a565b6200111e90600162001774565b90505b6001811115620011a0576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106200115657620011566200178a565b1a60f81b8282815181106200116f576200116f6200178a565b60200101906001600160f81b031916908160001a90535060049490941c936200119881620017a0565b905062001121565b508315620011f15760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016200048f565b9392505050565b620012038162000f68565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620011f183836040518060600160405280602781526020016200211b602791396060620012698462000c30565b620012c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200048f565b600080856001600160a01b031685604051620012e39190620017ba565b600060405180830381855af49150503d806000811462001320576040519150601f19603f3d011682016040523d82523d6000602084013e62001325565b606091505b50915091506200133782828662001341565b9695505050505050565b6060831562001352575081620011f1565b825115620013635782518084602001fd5b8160405162461bcd60e51b81526004016200048f91906200172f565b6108e280620017d983390190565b600060208284031215620013a057600080fd5b81356001600160e01b031981168114620011f157600080fd5b80356001600160a01b0381168114620013d157600080fd5b919050565b600060208284031215620013e957600080fd5b620011f182620013b9565b6000602082840312156200140757600080fd5b5035919050565b600080604083850312156200142257600080fd5b823591506200143460208401620013b9565b90509250929050565b600080604083850312156200145157600080fd5b6200145c83620013b9565b91506200143460208401620013b9565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620014aa57600080fd5b620014b583620013b9565b915060208301356001600160401b0380821115620014d257600080fd5b818501915085601f830112620014e757600080fd5b813581811115620014fc57620014fc62001480565b604051601f8201601f19908116603f0116810190838211818310171562001527576200152762001480565b816040528281528860208487010111156200154157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6020808252602c90820152600080516020620020bb83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020620020bb83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6000602082840312156200160f57600080fd5b81518015158114620011f157600080fd5b60005b838110156200163d57818101518382015260200162001623565b50506000910152565b600081518084526200166081602086016020860162001620565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190526000906200169a9083018462001646565b949350505050565b600060208284031215620016b557600080fd5b5051919050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351620016f081601785016020880162001620565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516200172381602884016020880162001620565b01602801949350505050565b602081526000620011f1602083018462001646565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620003f057620003f062001744565b80820180821115620003f057620003f062001744565b634e487b7160e01b600052603260045260246000fd5b600081620017b257620017b262001744565b506000190190565b60008251620017ce81846020870162001620565b919091019291505056fe60806040526040516108e23803806108e28339810160408190526100229161044c565b61002e82826000610035565b5050610576565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e9919061050c565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d7919061050c565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108bb602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606102ec846102cf565b6103475760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103629190610527565b600060405180830381855af49150503d806000811461039d576040519150601f19603f3d011682016040523d82523d6000602084013e6103a2565b606091505b5090925090506103b38282866103bd565b9695505050505050565b606083156103cc5750816102c8565b8251156103dc5782518084602001fd5b8160405162461bcd60e51b81526004016101699190610543565b80516001600160a01b038116811461040d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044357818101518382015260200161042b565b50506000910152565b6000806040838503121561045f57600080fd5b610468836103f6565b60208401519092506001600160401b038082111561048557600080fd5b818501915085601f83011261049957600080fd5b8151818111156104ab576104ab610412565b604051601f8201601f19908116603f011681019083821181831017156104d3576104d3610412565b816040528281528860208487010111156104ec57600080fd5b6104fd836020830160208801610428565b80955050505050509250929050565b60006020828403121561051e57600080fd5b6102c8826103f6565b60008251610539818460208701610428565b9190910192915050565b6020815260008251806020840152610562816040850160208701610428565b601f01601f19169190910160400192915050565b610336806105856000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102da60279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023d565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b606061012f84610055565b61018f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101aa919061028a565b600060405180830381855af49150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b50915091506101fa828286610204565b9695505050505050565b6060831561021357508161004e565b8251156102235782518084602001fd5b8160405162461bcd60e51b815260040161018691906102a6565b60006020828403121561024f57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b83811015610281578181015183820152602001610269565b50506000910152565b6000825161029c818460208701610266565b9190910192915050565b60208152600082518060208401526102c5816040850160208701610266565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ef4255a4462172e7a8ade4d28e2df51f54bb0ab9cdecac420f1f96cec356832e64736f6c63430008110033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656446756e6374696f6e206d7573742062652063616c6c6564207468726f75676820d88b35d7427a01a8e16d8a129535b4cf3150edf8d92c0a44dc1eba73bdaf18cb360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209515481671865a6f83c43a6a846c614e0b88b1f8b706257755e2bbe994c6434764736f6c63430008110033";
544
+ "0x60a0604052306080523480156200001557600080fd5b50600054610100900460ff1615808015620000375750600054600160ff909116105b8062000067575062000054306200014160201b62000c501760201c565b15801562000067575060005460ff166001145b620000cf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000f3576000805461ff0019166101001790555b80156200013a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000150565b6001600160a01b03163b151590565b60805161219b62000188600039600081816105b2015281816105f50152818161093a0152818161097d01526109fe015261219b6000f3fe608060405260043610620000ec5760003560e01c806301ffc9a714620000f15780631bce4583146200012b578063248a9ca3146200015257806324d7806c14620001865780632aabb72614620001ab5780632f2ff15d14620001d057806336568abe14620001f55780633659cfe6146200021a5780634f0c9e08146200023f5780634f1ef286146200027357806352d1902d146200028a5780635c60da1b14620002a257806391d1485414620002c4578063a217fddf14620002e9578063c4d66de81462000300578063d547741f1462000325578063d81e8423146200034a578063dd57366a1462000393575b600080fd5b348015620000fe57600080fd5b506200011662000110366004620013b1565b620003b8565b60405190151581526020015b60405180910390f35b3480156200013857600080fd5b50620001506200014a366004620013fa565b620003f0565b005b3480156200015f57600080fd5b50620001776200017136600462001418565b620004dc565b60405190815260200162000122565b3480156200019357600080fd5b5062000116620001a5366004620013fa565b620004f1565b348015620001b857600080fd5b5062000177600080516020620020ff83398151915281565b348015620001dd57600080fd5b5062000150620001ef36600462001432565b620004ff565b3480156200020257600080fd5b50620001506200021436600462001432565b62000526565b3480156200022757600080fd5b506200015062000239366004620013fa565b620005a8565b3480156200024c57600080fd5b50620002646200025e36600462001461565b6200067c565b60405162000122919062001490565b6200015062000284366004620014ba565b62000930565b3480156200029757600080fd5b5062000177620009f1565b348015620002af57600080fd5b5060975462000264906001600160a01b031681565b348015620002d157600080fd5b5062000116620002e336600462001432565b62000aa2565b348015620002f657600080fd5b5062000177600081565b3480156200030d57600080fd5b50620001506200031f366004620013fa565b62000acd565b3480156200033257600080fd5b50620001506200034436600462001432565b62000bfe565b3480156200035757600080fd5b50620002646200036936600462001461565b6001600160a01b039182166000908152609860209081526040808320938516835292905220541690565b348015620003a057600080fd5b5062000116620003b2366004620013fa565b62000c20565b60006001600160e01b03198216637965db0b60e01b1480620003ea57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620003fb33620004f1565b62000419576040516308e4b93b60e21b815260040160405180910390fd5b620004248162000c50565b620004925760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b60648201526084015b60405180910390fd5b609780546001600160a01b0319166001600160a01b0383169081179091556040517f39bf842b8dcd8318ae7644628c1bde77b4a040d6cf7cf3d30ef8edea6d506e3590600090a250565b60009081526065602052604090206001015490565b6000620003ea818362000aa2565b6200050a82620004dc565b620005158162000c5f565b62000521838362000c6b565b505050565b6001600160a01b0381163314620005985760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840162000489565b620005a4828262000cf5565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620005f35760405162461bcd60e51b8152600401620004899062001587565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200062762000d5f565b6001600160a01b031614620006505760405162461bcd60e51b81526004016200048990620015c2565b6200065b8162000d7c565b60408051600080825260208201909252620006799183919062000da5565b50565b60006200068933620004f1565b620006a7576040516308e4b93b60e21b815260040160405180910390fd5b6001600160a01b03838116600090815260986020908152604080832084871684529091529020548391161562000721576001600160a01b0380851660009081526098602090815260408083208488168452909152908190205490516375d5c8f560e01b8152620004899287928792911690600401620015fd565b604051637d2d278360e11b81526001600160a01b0382169063fa5a4f06906200074f90879060040162001490565b602060405180830381865afa1580156200076d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000793919062001620565b15806200080f5750604051633c21b3eb60e11b81526001600160a01b0382169063784367d690620007c990879060040162001490565b602060405180830381865afa158015620007e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200080d919062001620565b155b15620008425760405163d054b0e160e01b81526001600160a01b0380861660048301528416602482015260440162000489565b60008484306040516024016200085b93929190620015fd565b60408051601f198184030181529181526020820180516001600160e01b031663c0c53b8b60e01b17905251909150309082906200089890620013a3565b620008a592919062001698565b604051809103906000f080158015620008c2573d6000803e3d6000fd5b506001600160a01b0386811660008181526098602090815260408083208a8616808552925280832080546001600160a01b03191695871695861790555194975092937ff35002d3eb6abf0c3c094d1aa7426d2ccce851b1bae147e66dfa5af81d699d299190a4505092915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036200097b5760405162461bcd60e51b8152600401620004899062001587565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620009af62000d5f565b6001600160a01b031614620009d85760405162461bcd60e51b81526004016200048990620015c2565b620009e38262000d7c565b620005a48282600162000da5565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161462000a8e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840162000489565b506000805160206200211f83398151915290565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600054610100900460ff161580801562000aee5750600054600160ff909116105b8062000b13575062000b003062000c50565b15801562000b13575060005460ff166001145b62000b785760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000489565b6000805460ff19166001179055801562000b9c576000805461ff0019166101001790555b62000ba960003362000c6b565b62000bb482620003f0565b8015620005a4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b62000c0982620004dc565b62000c148162000c5f565b62000521838362000cf5565b600062000c2e818362000aa2565b80620003ea5750620003ea600080516020620020ff8339815191528362000aa2565b6001600160a01b03163b151590565b62000679813362000f1d565b62000c77828262000aa2565b620005a45760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905562000cb13390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b62000d01828262000aa2565b15620005a45760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206200211f833981519152546001600160a01b031690565b62000d8733620004f1565b62000679576040516308e4b93b60e21b815260040160405180910390fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161562000ddb57620005218362000f8c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000e38575060408051601f3d908101601f1916820190925262000e3591810190620016c6565b60015b62000e9d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840162000489565b6000805160206200211f833981519152811462000f0f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840162000489565b50620005218383836200102b565b62000f29828262000aa2565b620005a45762000f44816001600160a01b031660146200105c565b62000f518360206200105c565b60405160200162000f64929190620016e0565b60408051601f198184030181529082905262461bcd60e51b8252620004899160040162001753565b62000f978162000c50565b62000ffb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000489565b6000805160206200211f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62001036836200121c565b600082511180620010445750805b1562000521576200105683836200125e565b50505050565b606060006200106d8360026200177e565b6200107a90600262001798565b6001600160401b03811115620010945762001094620014a4565b6040519080825280601f01601f191660200182016040528015620010bf576020820181803683370190505b509050600360fc1b81600081518110620010dd57620010dd620017ae565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106200110f576200110f620017ae565b60200101906001600160f81b031916908160001a9053506000620011358460026200177e565b6200114290600162001798565b90505b6001811115620011c4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106200117a576200117a620017ae565b1a60f81b828281518110620011935762001193620017ae565b60200101906001600160f81b031916908160001a90535060049490941c93620011bc81620017c4565b905062001145565b508315620012155760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640162000489565b9392505050565b620012278162000f8c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200121583836040518060600160405280602781526020016200213f6027913960606200128d8462000c50565b620012ea5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000489565b600080856001600160a01b031685604051620013079190620017de565b600060405180830381855af49150503d806000811462001344576040519150601f19603f3d011682016040523d82523d6000602084013e62001349565b606091505b50915091506200135b82828662001365565b9695505050505050565b606083156200137657508162001215565b825115620013875782518084602001fd5b8160405162461bcd60e51b815260040162000489919062001753565b6108e280620017fd83390190565b600060208284031215620013c457600080fd5b81356001600160e01b0319811681146200121557600080fd5b80356001600160a01b0381168114620013f557600080fd5b919050565b6000602082840312156200140d57600080fd5b6200121582620013dd565b6000602082840312156200142b57600080fd5b5035919050565b600080604083850312156200144657600080fd5b823591506200145860208401620013dd565b90509250929050565b600080604083850312156200147557600080fd5b6200148083620013dd565b91506200145860208401620013dd565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620014ce57600080fd5b620014d983620013dd565b915060208301356001600160401b0380821115620014f657600080fd5b818501915085601f8301126200150b57600080fd5b813581811115620015205762001520620014a4565b604051601f8201601f19908116603f011681019083821181831017156200154b576200154b620014a4565b816040528281528860208487010111156200156557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6020808252602c90820152600080516020620020df83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020620020df83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6000602082840312156200163357600080fd5b815180151581146200121557600080fd5b60005b838110156200166157818101518382015260200162001647565b50506000910152565b600081518084526200168481602086016020860162001644565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201819052600090620016be908301846200166a565b949350505050565b600060208284031215620016d957600080fd5b5051919050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516200171481601785016020880162001644565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516200174781602884016020880162001644565b01602801949350505050565b6020815260006200121560208301846200166a565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620003ea57620003ea62001768565b80820180821115620003ea57620003ea62001768565b634e487b7160e01b600052603260045260246000fd5b600081620017d657620017d662001768565b506000190190565b60008251620017f281846020870162001644565b919091019291505056fe60806040526040516108e23803806108e28339810160408190526100229161044c565b61002e82826000610035565b5050610576565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e9919061050c565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d7919061050c565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108bb602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606102ec846102cf565b6103475760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103629190610527565b600060405180830381855af49150503d806000811461039d576040519150601f19603f3d011682016040523d82523d6000602084013e6103a2565b606091505b5090925090506103b38282866103bd565b9695505050505050565b606083156103cc5750816102c8565b8251156103dc5782518084602001fd5b8160405162461bcd60e51b81526004016101699190610543565b80516001600160a01b038116811461040d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044357818101518382015260200161042b565b50506000910152565b6000806040838503121561045f57600080fd5b610468836103f6565b60208401519092506001600160401b038082111561048557600080fd5b818501915085601f83011261049957600080fd5b8151818111156104ab576104ab610412565b604051601f8201601f19908116603f011681019083821181831017156104d3576104d3610412565b816040528281528860208487010111156104ec57600080fd5b6104fd836020830160208801610428565b80955050505050509250929050565b60006020828403121561051e57600080fd5b6102c8826103f6565b60008251610539818460208701610428565b9190910192915050565b6020815260008251806020840152610562816040850160208701610428565b601f01601f19169190910160400192915050565b610336806105856000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102da60279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023d565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b606061012f84610055565b61018f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101aa919061028a565b600060405180830381855af49150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b50915091506101fa828286610204565b9695505050505050565b6060831561021357508161004e565b8251156102235782518084602001fd5b8160405162461bcd60e51b815260040161018691906102a6565b60006020828403121561024f57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b83811015610281578181015183820152602001610269565b50506000910152565b6000825161029c818460208701610266565b9190910192915050565b60208152600082518060208401526102c5816040850160208701610266565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ef4255a4462172e7a8ade4d28e2df51f54bb0ab9cdecac420f1f96cec356832e64736f6c63430008110033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656446756e6374696f6e206d7573742062652063616c6c6564207468726f75676820d88b35d7427a01a8e16d8a129535b4cf3150edf8d92c0a44dc1eba73bdaf18cb360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f74c6470d9b0ef449d5de37badeca5586da642e77d04059d505eb52eee93630164736f6c63430008110033";
520
545
 
521
546
  type BulkSellerFactoryConstructorParams =
522
547
  | [signer?: Signer]
@@ -11,35 +11,61 @@ import type {
11
11
  const _abi = [
12
12
  {
13
13
  inputs: [
14
+ {
15
+ internalType: "contract IPBulkSeller",
16
+ name: "bulk",
17
+ type: "address",
18
+ },
19
+ ],
20
+ name: "calcCurrentRates",
21
+ outputs: [
14
22
  {
15
23
  internalType: "uint256",
16
- name: "currentAmount",
24
+ name: "rateTokenToSy",
17
25
  type: "uint256",
18
26
  },
19
27
  {
20
28
  internalType: "uint256",
21
- name: "requiredAmount",
29
+ name: "rateSyToToken",
22
30
  type: "uint256",
23
31
  },
24
32
  ],
25
- name: "BulkInsufficientSyForTrade",
26
- type: "error",
33
+ stateMutability: "view",
34
+ type: "function",
27
35
  },
28
36
  {
29
37
  inputs: [
38
+ {
39
+ internalType: "contract IPBulkSeller",
40
+ name: "bulk",
41
+ type: "address",
42
+ },
43
+ {
44
+ internalType: "uint256",
45
+ name: "hypoTotalToken",
46
+ type: "uint256",
47
+ },
48
+ {
49
+ internalType: "uint256",
50
+ name: "hypoTotalSy",
51
+ type: "uint256",
52
+ },
53
+ ],
54
+ name: "calcCurrentRatesWithAmount",
55
+ outputs: [
30
56
  {
31
57
  internalType: "uint256",
32
- name: "currentAmount",
58
+ name: "rateTokenToSy",
33
59
  type: "uint256",
34
60
  },
35
61
  {
36
62
  internalType: "uint256",
37
- name: "requiredAmount",
63
+ name: "rateSyToToken",
38
64
  type: "uint256",
39
65
  },
40
66
  ],
41
- name: "BulkInsufficientTokenForTrade",
42
- type: "error",
67
+ stateMutability: "view",
68
+ type: "function",
43
69
  },
44
70
  {
45
71
  inputs: [
@@ -49,16 +75,48 @@ const _abi = [
49
75
  type: "address",
50
76
  },
51
77
  ],
52
- name: "calcCurrentRates",
78
+ name: "getCurrentState",
53
79
  outputs: [
80
+ {
81
+ components: [
82
+ {
83
+ internalType: "uint256",
84
+ name: "rateTokenToSy",
85
+ type: "uint256",
86
+ },
87
+ {
88
+ internalType: "uint256",
89
+ name: "rateSyToToken",
90
+ type: "uint256",
91
+ },
92
+ {
93
+ internalType: "uint256",
94
+ name: "totalToken",
95
+ type: "uint256",
96
+ },
97
+ {
98
+ internalType: "uint256",
99
+ name: "totalSy",
100
+ type: "uint256",
101
+ },
102
+ {
103
+ internalType: "uint256",
104
+ name: "feeRate",
105
+ type: "uint256",
106
+ },
107
+ ],
108
+ internalType: "struct BulkSellerState",
109
+ name: "state",
110
+ type: "tuple",
111
+ },
54
112
  {
55
113
  internalType: "uint256",
56
- name: "rateTokenToSy",
114
+ name: "tokenProp",
57
115
  type: "uint256",
58
116
  },
59
117
  {
60
118
  internalType: "uint256",
61
- name: "rateSyToToken",
119
+ name: "hypoTokenBal",
62
120
  type: "uint256",
63
121
  },
64
122
  ],
@@ -68,7 +126,7 @@ const _abi = [
68
126
  ];
69
127
 
70
128
  const _bytecode =
71
- "0x608060405234801561001057600080fd5b50610601806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c307974d14610030575b600080fd5b61004361003e36600461045c565b61005c565b6040805192835260208301919091520160405180910390f35b6000806000836001600160a01b0316632778c3346040518163ffffffff1660e01b815260040160a060405180830381865afa15801561009f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c39190610480565b90506000846001600160a01b031663afd27bf56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610105573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012991906104fd565b90506000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561016b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018f91906104fd565b905060006101aa8460600151856102ef90919063ffffffff16565b84604001516101b99190610530565b90506000836001600160a01b031663b8f82b2684846040518363ffffffff1660e01b81526004016101eb929190610543565b602060405180830381865afa158015610208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022c919061055c565b9050610238818361037c565b9650505060006102558460400151856103ad90919063ffffffff16565b84606001516102649190610530565b90506000836001600160a01b031663cbe52ae384846040518363ffffffff1660e01b8152600401610296929190610543565b602060405180830381865afa1580156102b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d7919061055c565b90506102e3818361037c565b95505050505050915091565b6000806103188460800151670de0b6b3a764000061030d9190610575565b602086015190610426565b90508060000361032a5761032a610588565b6103348382610426565b9150836040015182111561037557836040015182604051631895cd1f60e01b815260040161036c929190918252602082015260400190565b60405180910390fd5b5092915050565b600080610391670de0b6b3a76400008561059e565b90508281816103a2576103a26105b5565b049150505b92915050565b6000806103d38460800151670de0b6b3a76400006103cb9190610575565b855190610426565b9050806000036103e5576103e5610588565b6103ef8382610426565b9150836060015182111561037557606084015160405163035c130560e21b815260048101919091526024810183905260440161036c565b600080610433838561059e565b9050670de0b6b3a7640000816103a2565b6001600160a01b038116811461045957600080fd5b50565b60006020828403121561046e57600080fd5b813561047981610444565b9392505050565b600060a0828403121561049257600080fd5b60405160a081016001600160401b03811182821017156104c257634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b60006020828403121561050f57600080fd5b815161047981610444565b634e487b7160e01b600052601160045260246000fd5b808201808211156103a7576103a761051a565b6001600160a01b03929092168252602082015260400190565b60006020828403121561056e57600080fd5b5051919050565b818103818111156103a7576103a761051a565b634e487b7160e01b600052600160045260246000fd5b80820281158282048414176103a7576103a761051a565b634e487b7160e01b600052601260045260246000fdfea26469706673582212200ce8a41172593fd17445e2cc44a256c31fc596716a4af16bcba834a2141f63fd64736f6c63430008110033";
129
+ "0x608060405234801561001057600080fd5b50610991806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638718323e146100465780638d51e8f0146100a7578063c307974d146100cf575b600080fd5b6100596100543660046107e0565b6100e2565b6040805184518152602080860151908201528482015191810191909152606080850151908201526080938401519381019390935260a083019190915260c082015260e0015b60405180910390f35b6100ba6100b5366004610804565b6102d2565b6040805192835260208301919091520161009e565b6100ba6100dd3660046107e0565b6104ab565b6101146040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b600080836001600160a01b0316632778c3346040518163ffffffff1660e01b815260040160a060405180830381865afa158015610155573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101799190610839565b92506101848361073d565b9150836001600160a01b031663afd27bf56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e891906108b6565b6001600160a01b031663cbe52ae3856001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610234573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025891906108b6565b85606001516040518363ffffffff1660e01b815260040161027a9291906108d3565b602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb91906108ec565b83604001516102ca919061091b565b929491935050565b6000806000856001600160a01b031663afd27bf56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610315573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033991906108b6565b90506000866001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561037b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039f91906108b6565b90506000826001600160a01b031663b8f82b2683896040518363ffffffff1660e01b81526004016103d19291906108d3565b602060405180830381865afa1580156103ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041291906108ec565b905061041e8188610779565b9450506000826001600160a01b031663cbe52ae383886040518363ffffffff1660e01b81526004016104519291906108d3565b602060405180830381865afa15801561046e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049291906108ec565b905061049e8187610779565b9350505050935093915050565b6000806000836001600160a01b0316632778c3346040518163ffffffff1660e01b815260040160a060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190610839565b90506000846001600160a01b031663afd27bf56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610554573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057891906108b6565b90506000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105de91906108b6565b905060006105fd846020015185606001516107aa90919063ffffffff16565b846040015161060c919061091b565b90506000836001600160a01b031663b8f82b2684846040518363ffffffff1660e01b815260040161063e9291906108d3565b602060405180830381865afa15801561065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067f91906108ec565b905061068b8183610779565b85516040870151919850600093506106a392506107aa565b84606001516106b2919061091b565b90506000836001600160a01b031663cbe52ae384846040518363ffffffff1660e01b81526004016106e49291906108d3565b602060405180830381865afa158015610701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072591906108ec565b90506107318183610779565b95505050505050915091565b60408101516020820151606083015160009291839161075b916107aa565b905061077161076a828461091b565b8390610779565b949350505050565b60008061078e670de0b6b3a76400008561092e565b905082818161079f5761079f610945565b049150505b92915050565b6000806107b7838561092e565b9050670de0b6b3a76400008161079f565b6001600160a01b03811681146107dd57600080fd5b50565b6000602082840312156107f257600080fd5b81356107fd816107c8565b9392505050565b60008060006060848603121561081957600080fd5b8335610824816107c8565b95602085013595506040909401359392505050565b600060a0828403121561084b57600080fd5b60405160a081016001600160401b038111828210171561087b57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b6000602082840312156108c857600080fd5b81516107fd816107c8565b6001600160a01b03929092168252602082015260400190565b6000602082840312156108fe57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107a4576107a4610905565b80820281158282048414176107a4576107a4610905565b634e487b7160e01b600052601260045260246000fdfea2646970667358221220a572e3a87075290b70a80b95f2ff5d5dd09c62eb23f37478befc0004e4740f3f64736f6c63430008110033";
72
130
 
73
131
  type BulkSellerOffchainConstructorParams =
74
132
  | [signer?: Signer]