@pendle/core-v2 2.17.6-tradingbot → 2.18.0-tradingbot

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 (362) 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/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  10. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  11. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  12. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  13. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
  15. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.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 +2 -2
  24. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  25. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  29. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  30. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  31. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  33. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
  35. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  37. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  39. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  41. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  44. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  46. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.json +2 -2
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.json +2 -2
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.json +2 -2
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.json +2 -2
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.json +2 -2
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol/PendleAuraBalancerStableLPSYV2.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol/CamelotRewardHelper.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol/CamelotV1VolatileCommon.dbg.json +1 -1
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileLpHelper.sol/CamelotV1VolatileLpHelper.dbg.json +1 -1
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol/CamelotV1VolatilePreview.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.dbg.json +1 -1
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.json +2 -2
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  83. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  84. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  85. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  86. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  87. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  90. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +2 -2
  92. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.dbg.json +1 -1
  93. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.json +2 -2
  94. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  95. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  96. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.dbg.json +1 -1
  97. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.json +2 -2
  98. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.dbg.json +1 -1
  99. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.json +2 -2
  100. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  101. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  102. package/build/artifacts/contracts/core/TradingBot/BotActionCallback.sol/BotActionCallback.dbg.json +4 -0
  103. package/build/artifacts/contracts/core/TradingBot/BotActionCallback.sol/BotActionCallback.json +678 -0
  104. package/build/artifacts/contracts/core/TradingBot/BotActionHelper.sol/BotActionHelper.dbg.json +4 -0
  105. package/build/artifacts/contracts/core/TradingBot/BotActionHelper.sol/BotActionHelper.json +678 -0
  106. package/build/artifacts/contracts/core/TradingBot/BotSimulationLib.sol/BotSimulationLib.dbg.json +4 -0
  107. package/build/artifacts/contracts/core/TradingBot/BotSimulationLib.sol/BotSimulationLib.json +10 -0
  108. package/build/artifacts/contracts/core/TradingBot/LongYieldDecisionHelper.sol/LongYieldDecisionHelper.dbg.json +4 -0
  109. package/build/artifacts/contracts/core/TradingBot/LongYieldDecisionHelper.sol/LongYieldDecisionHelper.json +1190 -0
  110. package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.dbg.json +4 -0
  111. package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.json +1671 -0
  112. package/build/artifacts/contracts/core/TradingBot/MarketExtLib.sol/MarketExtLib.dbg.json +4 -0
  113. package/build/artifacts/contracts/core/TradingBot/MarketExtLib.sol/MarketExtLib.json +24 -0
  114. package/build/artifacts/contracts/core/TradingBot/SpecSegmentLib.sol/SpecSegmentLib.dbg.json +4 -0
  115. package/build/artifacts/contracts/core/TradingBot/SpecSegmentLib.sol/SpecSegmentLib.json +10 -0
  116. package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.dbg.json +4 -0
  117. package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.json +628 -0
  118. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  119. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  120. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  121. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  122. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  123. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  124. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  125. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +1 -1
  126. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +1 -1
  127. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.json +2 -2
  128. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +1 -1
  129. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +2 -2
  130. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +1 -1
  131. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +2 -2
  132. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  133. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +151 -2
  134. package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.dbg.json +4 -0
  135. package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.json +10 -0
  136. package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.dbg.json +1 -1
  137. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
  138. package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.dbg.json +1 -1
  139. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
  140. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTPool.sol/ICamelotNFTPool.dbg.json +1 -1
  141. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPool.sol/ICamelotNitroPool.dbg.json +1 -1
  142. package/build/artifacts/contracts/interfaces/Camelot/ICamelotPair.sol/ICamelotPair.dbg.json +1 -1
  143. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  144. package/build/artifacts/contracts/interfaces/IPActionInfoStatic.sol/IPActionInfoStatic.dbg.json +1 -1
  145. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  146. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.json +6 -82
  147. package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
  148. package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.json +22 -22
  149. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  150. package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.dbg.json +1 -1
  151. package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.json +4 -42
  152. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  153. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  154. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  155. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  156. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  157. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
  158. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  159. package/build/artifacts/contracts/interfaces/IPRouterHelper.sol/IPRouterHelper.dbg.json +1 -1
  160. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  161. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +32 -146
  162. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  163. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  164. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  165. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  166. package/build/artifacts/contracts/interfaces/TradingBot/IBotDecisionHelper.sol/IBotDecisionHelper.dbg.json +4 -0
  167. package/build/artifacts/contracts/interfaces/TradingBot/IBotDecisionHelper.sol/IBotDecisionHelper.json +878 -0
  168. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.dbg.json +4 -0
  169. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.json +1084 -0
  170. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.dbg.json +4 -0
  171. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.json +429 -0
  172. package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.dbg.json +1 -1
  173. package/build/artifacts/contracts/offchain-helpers/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
  174. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
  175. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.json +2 -2
  176. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  177. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  178. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.dbg.json +1 -1
  179. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.json +2 -2
  180. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  181. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
  182. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  183. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
  184. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  185. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +8 -84
  186. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  187. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +24 -24
  188. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  189. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +6 -44
  190. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  191. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -2
  192. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  193. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
  194. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  195. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
  196. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.json +2 -2
  197. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.dbg.json +1 -1
  198. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.json +2 -2
  199. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.dbg.json +1 -1
  200. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.json +2 -2
  201. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.dbg.json +1 -1
  202. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.json +2 -2
  203. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.dbg.json +1 -1
  204. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.json +2 -2
  205. package/build/artifacts/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol/PendlePtUsdChainlinkOracle.dbg.json +1 -1
  206. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  207. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
  208. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  209. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
  210. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  211. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
  212. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  213. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
  214. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  215. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  216. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.dbg.json +1 -1
  217. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.json +2 -2
  218. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +1 -1
  219. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  220. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  221. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  222. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  223. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  224. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  225. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
  226. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +1 -1
  227. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol/IExecutorHelper.dbg.json +1 -1
  228. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IHashflow.sol/IHashflow.dbg.json +1 -1
  229. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +1 -1
  230. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberInputScalingHelper.sol/KyberInputScalingHelper.dbg.json +1 -1
  231. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.dbg.json +1 -1
  232. package/contracts/core/TradingBot/BotActionCallback.sol +1 -1
  233. package/contracts/core/TradingBot/BotActionHelper.sol +1 -3
  234. package/contracts/core/TradingBot/BotSimulationLib.sol +2 -1
  235. package/contracts/core/TradingBot/LongYieldDecisionHelper.sol +413 -0
  236. package/contracts/core/TradingBot/LongYieldTradingBot.sol +63 -91
  237. package/contracts/core/TradingBot/SpecSegmentLib.sol +62 -0
  238. package/contracts/core/TradingBot/TradingBotBase.sol +14 -9
  239. package/contracts/interfaces/TradingBot/IBotDecisionHelper.sol +41 -57
  240. package/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol +24 -34
  241. package/contracts/interfaces/TradingBot/ITradingBotBase.sol +1 -3
  242. package/package.json +1 -1
  243. package/typechain-types/ActionMarketAuxStatic.ts +38 -191
  244. package/typechain-types/ActionMarketCoreStatic.ts +134 -600
  245. package/typechain-types/ActionMintRedeemStatic.ts +26 -92
  246. package/typechain-types/BotActionCallback.ts +76 -22
  247. package/typechain-types/BotActionHelper.ts +76 -22
  248. package/typechain-types/BotDecisionHelper.ts +561 -0
  249. package/typechain-types/IAnkrBNB.ts +150 -0
  250. package/typechain-types/IAnkrLiquidStaking.ts +253 -0
  251. package/typechain-types/IBotDecisionHelper.ts +437 -0
  252. package/typechain-types/ILongYieldTradingBot.ts +567 -298
  253. package/typechain-types/IPActionMarketAuxStatic.ts +38 -191
  254. package/typechain-types/IPActionMarketCoreStatic.ts +134 -600
  255. package/typechain-types/IPActionMintRedeemStatic.ts +26 -92
  256. package/typechain-types/IPRouterStatic.ts +197 -888
  257. package/typechain-types/ISwETH.ts +123 -0
  258. package/typechain-types/ITradingBotBase.ts +90 -22
  259. package/typechain-types/LongYieldDecisionHelper.ts +598 -0
  260. package/typechain-types/LongYieldTradingBot.ts +248 -361
  261. package/typechain-types/PendleAnkrBNBSY.ts +1235 -0
  262. package/typechain-types/PendleAuraWstethAnkreth.ts +1511 -0
  263. package/typechain-types/PendleSwETH.ts +1216 -0
  264. package/typechain-types/PendleThenaSY.ts +153 -0
  265. package/typechain-types/PendleWbEthSY.ts +1229 -0
  266. package/typechain-types/ThenaLpHelper.ts +19 -0
  267. package/typechain-types/ThenaMath.ts +87 -0
  268. package/typechain-types/ThenaPreview.ts +19 -0
  269. package/typechain-types/TradingBotBase.ts +76 -22
  270. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
  271. package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
  272. package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +7 -83
  273. package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +23 -23
  274. package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +5 -43
  275. package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
  276. package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -1
  277. package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
  278. package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
  279. package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
  280. package/typechain-types/factories/BotActionCallback__factory.ts +56 -16
  281. package/typechain-types/factories/BotActionHelper__factory.ts +56 -16
  282. package/typechain-types/factories/BotDecisionHelper__factory.ts +1192 -0
  283. package/typechain-types/factories/Broadcaster__factory.ts +1 -1
  284. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  285. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  286. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  287. package/typechain-types/factories/Errors__factory.ts +150 -1
  288. package/typechain-types/factories/IAnkrBNB__factory.ts +74 -0
  289. package/typechain-types/factories/IAnkrLiquidStaking__factory.ts +123 -0
  290. package/typechain-types/factories/IBotDecisionHelper__factory.ts +893 -0
  291. package/typechain-types/factories/ILongYieldTradingBot__factory.ts +586 -391
  292. package/typechain-types/factories/IPActionMarketAuxStatic__factory.ts +6 -82
  293. package/typechain-types/factories/IPActionMarketCoreStatic__factory.ts +22 -22
  294. package/typechain-types/factories/IPActionMintRedeemStatic__factory.ts +4 -42
  295. package/typechain-types/factories/IPRouterStatic__factory.ts +32 -146
  296. package/typechain-types/factories/ISwETH__factory.ts +53 -0
  297. package/typechain-types/factories/ITradingBotBase__factory.ts +54 -15
  298. package/typechain-types/factories/LongYieldDecisionHelper__factory.ts +1247 -0
  299. package/typechain-types/factories/LongYieldTradingBot__factory.ts +363 -575
  300. package/typechain-types/factories/MarketExtLib__factory.ts +1 -1
  301. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  302. package/typechain-types/factories/PendleAnkrBNBSY__factory.ts +1100 -0
  303. package/typechain-types/factories/PendleAuraBbAWethSwethSY__factory.ts +1 -1
  304. package/typechain-types/factories/PendleAuraWethAnkrethSYV2__factory.ts +1 -1
  305. package/typechain-types/factories/PendleAuraWethRocketEthSYV2__factory.ts +1 -1
  306. package/typechain-types/factories/PendleAuraWethStafiEthSY__factory.ts +1 -1
  307. package/typechain-types/factories/PendleAuraWethWstethSYV2__factory.ts +1 -1
  308. package/typechain-types/factories/PendleAuraWstethAnkreth__factory.ts +1244 -0
  309. package/typechain-types/factories/PendleCamelotV1VolatileSY__factory.ts +1 -1
  310. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  311. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  312. package/typechain-types/factories/PendleFeeDistributorV2__factory.ts +1 -1
  313. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  314. package/typechain-types/factories/PendleGDaiSY__factory.ts +1 -1
  315. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  316. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  317. package/typechain-types/factories/PendleGlpSY__factory.ts +1 -1
  318. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  319. package/typechain-types/factories/PendleLpGlpOracle__factory.ts +1 -1
  320. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  321. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  322. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  323. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  324. package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +1 -1
  325. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  326. package/typechain-types/factories/PendlePtGlpOracle__factory.ts +1 -1
  327. package/typechain-types/factories/PendlePtOracle__factory.ts +1 -1
  328. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  329. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  330. package/typechain-types/factories/PendleRouterHelper__factory.ts +1 -1
  331. package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
  332. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  333. package/typechain-types/factories/PendleSfrxEthSY__factory.ts +1 -1
  334. package/typechain-types/factories/PendleStargateLPSY__factory.ts +1 -1
  335. package/typechain-types/factories/PendleSwETH__factory.ts +1022 -0
  336. package/typechain-types/factories/PendleThenaSY__factory.ts +85 -1
  337. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  338. package/typechain-types/factories/PendleWbEthSY__factory.ts +1049 -0
  339. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  340. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +1 -1
  341. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  342. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1 -1
  343. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  344. package/typechain-types/factories/PtAndLpToAsset__factory.ts +1 -1
  345. package/typechain-types/factories/SAPE__factory.ts +1 -1
  346. package/typechain-types/factories/ThenaLpHelper__factory.ts +13 -0
  347. package/typechain-types/factories/ThenaMath__factory.ts +36 -0
  348. package/typechain-types/factories/ThenaPreview__factory.ts +14 -1
  349. package/typechain-types/factories/TradingBotBase__factory.ts +56 -16
  350. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  351. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  352. package/typechain-types/hardhat.d.ts +81 -36
  353. package/typechain-types/index.ts +18 -8
  354. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol/PendleArbitrumStakedEthSY.dbg.json +0 -4
  355. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol/PendleArbitrumStakedEthSY.json +0 -976
  356. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleBinanceEth.sol/PendleBinanceEth.dbg.json +0 -4
  357. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleBinanceEth.sol/PendleBinanceEth.json +0 -979
  358. package/build/artifacts/contracts/interfaces/BinanceEth/IWBETH.sol/IWBETH.dbg.json +0 -4
  359. package/build/artifacts/contracts/interfaces/BinanceEth/IWBETH.sol/IWBETH.json +0 -42
  360. package/build/artifacts/contracts/offchain-helpers/PtAndLpToAsset.sol/PtAndLpToAsset.dbg.json +0 -4
  361. package/build/artifacts/contracts/offchain-helpers/PtAndLpToAsset.sol/PtAndLpToAsset.json +0 -97
  362. package/contracts/core/TradingBot/BotDecisionHelper.sol +0 -306
@@ -0,0 +1,1671 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "LongYieldTradingBot",
4
+ "sourceName": "contracts/core/TradingBot/LongYieldTradingBot.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_market",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "_router",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "_PENDLE",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "address",
25
+ "name": "_decisionHelper",
26
+ "type": "address"
27
+ }
28
+ ],
29
+ "stateMutability": "nonpayable",
30
+ "type": "constructor"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "ApproxFail",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "inputs": [
39
+ {
40
+ "internalType": "uint256",
41
+ "name": "guessMin",
42
+ "type": "uint256"
43
+ },
44
+ {
45
+ "internalType": "uint256",
46
+ "name": "guessMax",
47
+ "type": "uint256"
48
+ },
49
+ {
50
+ "internalType": "uint256",
51
+ "name": "eps",
52
+ "type": "uint256"
53
+ }
54
+ ],
55
+ "name": "ApproxParamsInvalid",
56
+ "type": "error"
57
+ },
58
+ {
59
+ "inputs": [
60
+ {
61
+ "internalType": "address",
62
+ "name": "caller",
63
+ "type": "address"
64
+ }
65
+ ],
66
+ "name": "BotCallbackNotMarket",
67
+ "type": "error"
68
+ },
69
+ {
70
+ "inputs": [
71
+ {
72
+ "internalType": "uint256",
73
+ "name": "actualLpOut",
74
+ "type": "uint256"
75
+ },
76
+ {
77
+ "internalType": "uint256",
78
+ "name": "requiredLpOut",
79
+ "type": "uint256"
80
+ }
81
+ ],
82
+ "name": "BotInsufficientLpOut",
83
+ "type": "error"
84
+ },
85
+ {
86
+ "inputs": [
87
+ {
88
+ "internalType": "uint256",
89
+ "name": "actualSyOut",
90
+ "type": "uint256"
91
+ },
92
+ {
93
+ "internalType": "uint256",
94
+ "name": "requiredSyOut",
95
+ "type": "uint256"
96
+ }
97
+ ],
98
+ "name": "BotInsufficientSyOut",
99
+ "type": "error"
100
+ },
101
+ {
102
+ "inputs": [
103
+ {
104
+ "internalType": "uint256",
105
+ "name": "actualYtOut",
106
+ "type": "uint256"
107
+ },
108
+ {
109
+ "internalType": "uint256",
110
+ "name": "requiredYtOut",
111
+ "type": "uint256"
112
+ }
113
+ ],
114
+ "name": "BotInsufficientYtOut",
115
+ "type": "error"
116
+ },
117
+ {
118
+ "inputs": [
119
+ {
120
+ "internalType": "int256",
121
+ "name": "exchangeRate",
122
+ "type": "int256"
123
+ }
124
+ ],
125
+ "name": "MarketExchangeRateBelowOne",
126
+ "type": "error"
127
+ },
128
+ {
129
+ "inputs": [],
130
+ "name": "MarketExpired",
131
+ "type": "error"
132
+ },
133
+ {
134
+ "inputs": [
135
+ {
136
+ "internalType": "int256",
137
+ "name": "currentAmount",
138
+ "type": "int256"
139
+ },
140
+ {
141
+ "internalType": "int256",
142
+ "name": "requiredAmount",
143
+ "type": "int256"
144
+ }
145
+ ],
146
+ "name": "MarketInsufficientPtForTrade",
147
+ "type": "error"
148
+ },
149
+ {
150
+ "inputs": [],
151
+ "name": "MarketProportionMustNotEqualOne",
152
+ "type": "error"
153
+ },
154
+ {
155
+ "inputs": [
156
+ {
157
+ "internalType": "int256",
158
+ "name": "proportion",
159
+ "type": "int256"
160
+ },
161
+ {
162
+ "internalType": "int256",
163
+ "name": "maxProportion",
164
+ "type": "int256"
165
+ }
166
+ ],
167
+ "name": "MarketProportionTooHigh",
168
+ "type": "error"
169
+ },
170
+ {
171
+ "inputs": [
172
+ {
173
+ "internalType": "int256",
174
+ "name": "rateScalar",
175
+ "type": "int256"
176
+ }
177
+ ],
178
+ "name": "MarketRateScalarBelowZero",
179
+ "type": "error"
180
+ },
181
+ {
182
+ "inputs": [],
183
+ "name": "MarketZeroLnImpliedRate",
184
+ "type": "error"
185
+ },
186
+ {
187
+ "inputs": [
188
+ {
189
+ "internalType": "int256",
190
+ "name": "totalPt",
191
+ "type": "int256"
192
+ },
193
+ {
194
+ "internalType": "int256",
195
+ "name": "totalAsset",
196
+ "type": "int256"
197
+ }
198
+ ],
199
+ "name": "MarketZeroTotalPtOrTotalAsset",
200
+ "type": "error"
201
+ },
202
+ {
203
+ "anonymous": false,
204
+ "inputs": [
205
+ {
206
+ "components": [
207
+ {
208
+ "internalType": "uint256",
209
+ "name": "guessMin",
210
+ "type": "uint256"
211
+ },
212
+ {
213
+ "internalType": "uint256",
214
+ "name": "guessMax",
215
+ "type": "uint256"
216
+ },
217
+ {
218
+ "internalType": "uint256",
219
+ "name": "guessOffchain",
220
+ "type": "uint256"
221
+ },
222
+ {
223
+ "internalType": "uint256",
224
+ "name": "maxIteration",
225
+ "type": "uint256"
226
+ },
227
+ {
228
+ "internalType": "uint256",
229
+ "name": "eps",
230
+ "type": "uint256"
231
+ }
232
+ ],
233
+ "indexed": false,
234
+ "internalType": "struct ApproxParams",
235
+ "name": "botParams",
236
+ "type": "tuple"
237
+ },
238
+ {
239
+ "indexed": false,
240
+ "internalType": "uint256",
241
+ "name": "maxSyIn",
242
+ "type": "uint256"
243
+ },
244
+ {
245
+ "indexed": false,
246
+ "internalType": "uint256",
247
+ "name": "netSyIn",
248
+ "type": "uint256"
249
+ },
250
+ {
251
+ "indexed": false,
252
+ "internalType": "uint256",
253
+ "name": "netLpOut",
254
+ "type": "uint256"
255
+ }
256
+ ],
257
+ "name": "AddLiqFromSy",
258
+ "type": "event"
259
+ },
260
+ {
261
+ "anonymous": false,
262
+ "inputs": [
263
+ {
264
+ "components": [
265
+ {
266
+ "internalType": "uint256",
267
+ "name": "guessMin",
268
+ "type": "uint256"
269
+ },
270
+ {
271
+ "internalType": "uint256",
272
+ "name": "guessMax",
273
+ "type": "uint256"
274
+ },
275
+ {
276
+ "internalType": "uint256",
277
+ "name": "guessOffchain",
278
+ "type": "uint256"
279
+ },
280
+ {
281
+ "internalType": "uint256",
282
+ "name": "maxIteration",
283
+ "type": "uint256"
284
+ },
285
+ {
286
+ "internalType": "uint256",
287
+ "name": "eps",
288
+ "type": "uint256"
289
+ }
290
+ ],
291
+ "indexed": false,
292
+ "internalType": "struct ApproxParams",
293
+ "name": "botParams",
294
+ "type": "tuple"
295
+ },
296
+ {
297
+ "indexed": false,
298
+ "internalType": "uint256",
299
+ "name": "netYtIn",
300
+ "type": "uint256"
301
+ },
302
+ {
303
+ "indexed": false,
304
+ "internalType": "uint256",
305
+ "name": "netLpOut",
306
+ "type": "uint256"
307
+ }
308
+ ],
309
+ "name": "AddLiqFromYt",
310
+ "type": "event"
311
+ },
312
+ {
313
+ "anonymous": false,
314
+ "inputs": [
315
+ {
316
+ "indexed": false,
317
+ "internalType": "uint256",
318
+ "name": "netSyIn",
319
+ "type": "uint256"
320
+ },
321
+ {
322
+ "indexed": false,
323
+ "internalType": "uint256",
324
+ "name": "netLpOut",
325
+ "type": "uint256"
326
+ },
327
+ {
328
+ "indexed": false,
329
+ "internalType": "uint256",
330
+ "name": "netYtOut",
331
+ "type": "uint256"
332
+ }
333
+ ],
334
+ "name": "AddLiqKeepYt",
335
+ "type": "event"
336
+ },
337
+ {
338
+ "anonymous": false,
339
+ "inputs": [
340
+ {
341
+ "indexed": false,
342
+ "internalType": "address",
343
+ "name": "previousAdmin",
344
+ "type": "address"
345
+ },
346
+ {
347
+ "indexed": false,
348
+ "internalType": "address",
349
+ "name": "newAdmin",
350
+ "type": "address"
351
+ }
352
+ ],
353
+ "name": "AdminChanged",
354
+ "type": "event"
355
+ },
356
+ {
357
+ "anonymous": false,
358
+ "inputs": [
359
+ {
360
+ "indexed": true,
361
+ "internalType": "address",
362
+ "name": "beacon",
363
+ "type": "address"
364
+ }
365
+ ],
366
+ "name": "BeaconUpgraded",
367
+ "type": "event"
368
+ },
369
+ {
370
+ "anonymous": false,
371
+ "inputs": [
372
+ {
373
+ "indexed": false,
374
+ "internalType": "uint256",
375
+ "name": "netSyOut",
376
+ "type": "uint256"
377
+ },
378
+ {
379
+ "indexed": false,
380
+ "internalType": "uint256",
381
+ "name": "netPendleOut",
382
+ "type": "uint256"
383
+ }
384
+ ],
385
+ "name": "ClaimAndCompound",
386
+ "type": "event"
387
+ },
388
+ {
389
+ "anonymous": false,
390
+ "inputs": [
391
+ {
392
+ "indexed": false,
393
+ "internalType": "uint256",
394
+ "name": "netSyIn",
395
+ "type": "uint256"
396
+ }
397
+ ],
398
+ "name": "DepositSy",
399
+ "type": "event"
400
+ },
401
+ {
402
+ "anonymous": false,
403
+ "inputs": [
404
+ {
405
+ "indexed": true,
406
+ "internalType": "address",
407
+ "name": "token",
408
+ "type": "address"
409
+ },
410
+ {
411
+ "indexed": false,
412
+ "internalType": "uint256",
413
+ "name": "netTokenIn",
414
+ "type": "uint256"
415
+ }
416
+ ],
417
+ "name": "DepositToken",
418
+ "type": "event"
419
+ },
420
+ {
421
+ "anonymous": false,
422
+ "inputs": [
423
+ {
424
+ "indexed": false,
425
+ "internalType": "uint8",
426
+ "name": "version",
427
+ "type": "uint8"
428
+ }
429
+ ],
430
+ "name": "Initialized",
431
+ "type": "event"
432
+ },
433
+ {
434
+ "anonymous": false,
435
+ "inputs": [
436
+ {
437
+ "indexed": true,
438
+ "internalType": "address",
439
+ "name": "previousOwner",
440
+ "type": "address"
441
+ },
442
+ {
443
+ "indexed": true,
444
+ "internalType": "address",
445
+ "name": "newOwner",
446
+ "type": "address"
447
+ }
448
+ ],
449
+ "name": "OwnershipTransferred",
450
+ "type": "event"
451
+ },
452
+ {
453
+ "anonymous": false,
454
+ "inputs": [
455
+ {
456
+ "components": [
457
+ {
458
+ "internalType": "uint256",
459
+ "name": "guessMin",
460
+ "type": "uint256"
461
+ },
462
+ {
463
+ "internalType": "uint256",
464
+ "name": "guessMax",
465
+ "type": "uint256"
466
+ },
467
+ {
468
+ "internalType": "uint256",
469
+ "name": "guessOffchain",
470
+ "type": "uint256"
471
+ },
472
+ {
473
+ "internalType": "uint256",
474
+ "name": "maxIteration",
475
+ "type": "uint256"
476
+ },
477
+ {
478
+ "internalType": "uint256",
479
+ "name": "eps",
480
+ "type": "uint256"
481
+ }
482
+ ],
483
+ "indexed": false,
484
+ "internalType": "struct ApproxParams",
485
+ "name": "botParams",
486
+ "type": "tuple"
487
+ },
488
+ {
489
+ "indexed": false,
490
+ "internalType": "uint256",
491
+ "name": "netLpIn",
492
+ "type": "uint256"
493
+ },
494
+ {
495
+ "indexed": false,
496
+ "internalType": "uint256",
497
+ "name": "netYtOut",
498
+ "type": "uint256"
499
+ }
500
+ ],
501
+ "name": "RemoveLiqToYt",
502
+ "type": "event"
503
+ },
504
+ {
505
+ "anonymous": false,
506
+ "inputs": [
507
+ {
508
+ "components": [
509
+ {
510
+ "internalType": "uint256",
511
+ "name": "guessMin",
512
+ "type": "uint256"
513
+ },
514
+ {
515
+ "internalType": "uint256",
516
+ "name": "guessMax",
517
+ "type": "uint256"
518
+ },
519
+ {
520
+ "internalType": "uint256",
521
+ "name": "guessOffchain",
522
+ "type": "uint256"
523
+ },
524
+ {
525
+ "internalType": "uint256",
526
+ "name": "maxIteration",
527
+ "type": "uint256"
528
+ },
529
+ {
530
+ "internalType": "uint256",
531
+ "name": "eps",
532
+ "type": "uint256"
533
+ }
534
+ ],
535
+ "indexed": false,
536
+ "internalType": "struct ApproxParams",
537
+ "name": "botParams",
538
+ "type": "tuple"
539
+ },
540
+ {
541
+ "indexed": false,
542
+ "internalType": "uint256",
543
+ "name": "maxSyIn",
544
+ "type": "uint256"
545
+ },
546
+ {
547
+ "indexed": false,
548
+ "internalType": "uint256",
549
+ "name": "exactYtOut",
550
+ "type": "uint256"
551
+ },
552
+ {
553
+ "indexed": false,
554
+ "internalType": "uint256",
555
+ "name": "netSyIn",
556
+ "type": "uint256"
557
+ }
558
+ ],
559
+ "name": "SwapSyToYt",
560
+ "type": "event"
561
+ },
562
+ {
563
+ "anonymous": false,
564
+ "inputs": [
565
+ {
566
+ "indexed": true,
567
+ "internalType": "address",
568
+ "name": "implementation",
569
+ "type": "address"
570
+ }
571
+ ],
572
+ "name": "Upgraded",
573
+ "type": "event"
574
+ },
575
+ {
576
+ "anonymous": false,
577
+ "inputs": [
578
+ {
579
+ "indexed": true,
580
+ "internalType": "address",
581
+ "name": "token",
582
+ "type": "address"
583
+ },
584
+ {
585
+ "indexed": false,
586
+ "internalType": "uint256",
587
+ "name": "amount",
588
+ "type": "uint256"
589
+ }
590
+ ],
591
+ "name": "WithdrawFunds",
592
+ "type": "event"
593
+ },
594
+ {
595
+ "inputs": [],
596
+ "name": "PENDLE",
597
+ "outputs": [
598
+ {
599
+ "internalType": "address",
600
+ "name": "",
601
+ "type": "address"
602
+ }
603
+ ],
604
+ "stateMutability": "view",
605
+ "type": "function"
606
+ },
607
+ {
608
+ "inputs": [],
609
+ "name": "PT",
610
+ "outputs": [
611
+ {
612
+ "internalType": "address",
613
+ "name": "",
614
+ "type": "address"
615
+ }
616
+ ],
617
+ "stateMutability": "view",
618
+ "type": "function"
619
+ },
620
+ {
621
+ "inputs": [],
622
+ "name": "SY",
623
+ "outputs": [
624
+ {
625
+ "internalType": "address",
626
+ "name": "",
627
+ "type": "address"
628
+ }
629
+ ],
630
+ "stateMutability": "view",
631
+ "type": "function"
632
+ },
633
+ {
634
+ "inputs": [],
635
+ "name": "YT",
636
+ "outputs": [
637
+ {
638
+ "internalType": "address",
639
+ "name": "",
640
+ "type": "address"
641
+ }
642
+ ],
643
+ "stateMutability": "view",
644
+ "type": "function"
645
+ },
646
+ {
647
+ "inputs": [
648
+ {
649
+ "components": [
650
+ {
651
+ "components": [
652
+ {
653
+ "internalType": "uint256",
654
+ "name": "guessMin",
655
+ "type": "uint256"
656
+ },
657
+ {
658
+ "internalType": "uint256",
659
+ "name": "guessMax",
660
+ "type": "uint256"
661
+ },
662
+ {
663
+ "internalType": "uint256",
664
+ "name": "guessOffchain",
665
+ "type": "uint256"
666
+ },
667
+ {
668
+ "internalType": "uint256",
669
+ "name": "maxIteration",
670
+ "type": "uint256"
671
+ },
672
+ {
673
+ "internalType": "uint256",
674
+ "name": "eps",
675
+ "type": "uint256"
676
+ }
677
+ ],
678
+ "internalType": "struct ApproxParams",
679
+ "name": "botParams",
680
+ "type": "tuple"
681
+ },
682
+ {
683
+ "internalType": "uint256",
684
+ "name": "minLpOut",
685
+ "type": "uint256"
686
+ },
687
+ {
688
+ "internalType": "uint256",
689
+ "name": "targetIy",
690
+ "type": "uint256"
691
+ },
692
+ {
693
+ "internalType": "int256",
694
+ "name": "currentBin",
695
+ "type": "int256"
696
+ }
697
+ ],
698
+ "internalType": "struct ILongYieldTradingBot.AddLiqFromYtInput",
699
+ "name": "inputParams",
700
+ "type": "tuple"
701
+ }
702
+ ],
703
+ "name": "addLiqFromYt",
704
+ "outputs": [
705
+ {
706
+ "internalType": "uint256",
707
+ "name": "netPtFromSwap",
708
+ "type": "uint256"
709
+ },
710
+ {
711
+ "internalType": "uint256",
712
+ "name": "netLpOut",
713
+ "type": "uint256"
714
+ },
715
+ {
716
+ "internalType": "uint256",
717
+ "name": "netYtIn",
718
+ "type": "uint256"
719
+ }
720
+ ],
721
+ "stateMutability": "nonpayable",
722
+ "type": "function"
723
+ },
724
+ {
725
+ "inputs": [
726
+ {
727
+ "internalType": "uint256",
728
+ "name": "netSyIn",
729
+ "type": "uint256"
730
+ },
731
+ {
732
+ "internalType": "uint256",
733
+ "name": "minLpOut",
734
+ "type": "uint256"
735
+ },
736
+ {
737
+ "internalType": "uint256",
738
+ "name": "minYtOut",
739
+ "type": "uint256"
740
+ }
741
+ ],
742
+ "name": "addLiqKeepYt",
743
+ "outputs": [
744
+ {
745
+ "internalType": "uint256",
746
+ "name": "netLpOut",
747
+ "type": "uint256"
748
+ },
749
+ {
750
+ "internalType": "uint256",
751
+ "name": "netYtOut",
752
+ "type": "uint256"
753
+ }
754
+ ],
755
+ "stateMutability": "nonpayable",
756
+ "type": "function"
757
+ },
758
+ {
759
+ "inputs": [
760
+ {
761
+ "components": [
762
+ {
763
+ "internalType": "address[]",
764
+ "name": "tokens",
765
+ "type": "address[]"
766
+ },
767
+ {
768
+ "internalType": "address",
769
+ "name": "spender",
770
+ "type": "address"
771
+ }
772
+ ],
773
+ "internalType": "struct ITradingBotBase.MultiApproval[]",
774
+ "name": "arr",
775
+ "type": "tuple[]"
776
+ }
777
+ ],
778
+ "name": "approveInf",
779
+ "outputs": [],
780
+ "stateMutability": "nonpayable",
781
+ "type": "function"
782
+ },
783
+ {
784
+ "inputs": [],
785
+ "name": "buyBins",
786
+ "outputs": [
787
+ {
788
+ "internalType": "uint256",
789
+ "name": "",
790
+ "type": "uint256"
791
+ }
792
+ ],
793
+ "stateMutability": "view",
794
+ "type": "function"
795
+ },
796
+ {
797
+ "inputs": [
798
+ {
799
+ "components": [
800
+ {
801
+ "internalType": "address",
802
+ "name": "tokenIn",
803
+ "type": "address"
804
+ },
805
+ {
806
+ "internalType": "uint256",
807
+ "name": "netTokenIn",
808
+ "type": "uint256"
809
+ },
810
+ {
811
+ "internalType": "address",
812
+ "name": "tokenMintSy",
813
+ "type": "address"
814
+ },
815
+ {
816
+ "internalType": "address",
817
+ "name": "bulk",
818
+ "type": "address"
819
+ },
820
+ {
821
+ "internalType": "address",
822
+ "name": "pendleSwap",
823
+ "type": "address"
824
+ },
825
+ {
826
+ "components": [
827
+ {
828
+ "internalType": "enum SwapType",
829
+ "name": "swapType",
830
+ "type": "uint8"
831
+ },
832
+ {
833
+ "internalType": "address",
834
+ "name": "extRouter",
835
+ "type": "address"
836
+ },
837
+ {
838
+ "internalType": "bytes",
839
+ "name": "extCalldata",
840
+ "type": "bytes"
841
+ },
842
+ {
843
+ "internalType": "bool",
844
+ "name": "needScale",
845
+ "type": "bool"
846
+ }
847
+ ],
848
+ "internalType": "struct SwapData",
849
+ "name": "swapData",
850
+ "type": "tuple"
851
+ }
852
+ ],
853
+ "internalType": "struct TokenInput[]",
854
+ "name": "inps",
855
+ "type": "tuple[]"
856
+ },
857
+ {
858
+ "internalType": "uint256",
859
+ "name": "minSyOut",
860
+ "type": "uint256"
861
+ }
862
+ ],
863
+ "name": "claimAndCompound",
864
+ "outputs": [
865
+ {
866
+ "internalType": "uint256",
867
+ "name": "netSyOut",
868
+ "type": "uint256"
869
+ },
870
+ {
871
+ "internalType": "uint256",
872
+ "name": "netPendleOut",
873
+ "type": "uint256"
874
+ }
875
+ ],
876
+ "stateMutability": "nonpayable",
877
+ "type": "function"
878
+ },
879
+ {
880
+ "inputs": [],
881
+ "name": "claimOwnership",
882
+ "outputs": [],
883
+ "stateMutability": "nonpayable",
884
+ "type": "function"
885
+ },
886
+ {
887
+ "inputs": [],
888
+ "name": "claimWithoutCompound",
889
+ "outputs": [
890
+ {
891
+ "components": [
892
+ {
893
+ "internalType": "address",
894
+ "name": "token",
895
+ "type": "address"
896
+ },
897
+ {
898
+ "internalType": "uint256",
899
+ "name": "amount",
900
+ "type": "uint256"
901
+ }
902
+ ],
903
+ "internalType": "struct TokenAmount[]",
904
+ "name": "rewards",
905
+ "type": "tuple[]"
906
+ }
907
+ ],
908
+ "stateMutability": "nonpayable",
909
+ "type": "function"
910
+ },
911
+ {
912
+ "inputs": [],
913
+ "name": "decisionHelper",
914
+ "outputs": [
915
+ {
916
+ "internalType": "contract IBotDecisionHelper",
917
+ "name": "",
918
+ "type": "address"
919
+ }
920
+ ],
921
+ "stateMutability": "view",
922
+ "type": "function"
923
+ },
924
+ {
925
+ "inputs": [
926
+ {
927
+ "internalType": "uint256",
928
+ "name": "netSyIn",
929
+ "type": "uint256"
930
+ }
931
+ ],
932
+ "name": "depositSy",
933
+ "outputs": [],
934
+ "stateMutability": "nonpayable",
935
+ "type": "function"
936
+ },
937
+ {
938
+ "inputs": [
939
+ {
940
+ "components": [
941
+ {
942
+ "internalType": "address",
943
+ "name": "tokenIn",
944
+ "type": "address"
945
+ },
946
+ {
947
+ "internalType": "uint256",
948
+ "name": "netTokenIn",
949
+ "type": "uint256"
950
+ },
951
+ {
952
+ "internalType": "address",
953
+ "name": "tokenMintSy",
954
+ "type": "address"
955
+ },
956
+ {
957
+ "internalType": "address",
958
+ "name": "bulk",
959
+ "type": "address"
960
+ },
961
+ {
962
+ "internalType": "address",
963
+ "name": "pendleSwap",
964
+ "type": "address"
965
+ },
966
+ {
967
+ "components": [
968
+ {
969
+ "internalType": "enum SwapType",
970
+ "name": "swapType",
971
+ "type": "uint8"
972
+ },
973
+ {
974
+ "internalType": "address",
975
+ "name": "extRouter",
976
+ "type": "address"
977
+ },
978
+ {
979
+ "internalType": "bytes",
980
+ "name": "extCalldata",
981
+ "type": "bytes"
982
+ },
983
+ {
984
+ "internalType": "bool",
985
+ "name": "needScale",
986
+ "type": "bool"
987
+ }
988
+ ],
989
+ "internalType": "struct SwapData",
990
+ "name": "swapData",
991
+ "type": "tuple"
992
+ }
993
+ ],
994
+ "internalType": "struct TokenInput",
995
+ "name": "inp",
996
+ "type": "tuple"
997
+ },
998
+ {
999
+ "internalType": "uint256",
1000
+ "name": "minSyOut",
1001
+ "type": "uint256"
1002
+ }
1003
+ ],
1004
+ "name": "depositToken",
1005
+ "outputs": [],
1006
+ "stateMutability": "payable",
1007
+ "type": "function"
1008
+ },
1009
+ {
1010
+ "inputs": [
1011
+ {
1012
+ "components": [
1013
+ {
1014
+ "internalType": "uint256",
1015
+ "name": "buyYtIy",
1016
+ "type": "uint256"
1017
+ },
1018
+ {
1019
+ "internalType": "uint256",
1020
+ "name": "sellYtIy",
1021
+ "type": "uint256"
1022
+ },
1023
+ {
1024
+ "internalType": "uint256",
1025
+ "name": "targetSyRatio",
1026
+ "type": "uint256"
1027
+ },
1028
+ {
1029
+ "internalType": "uint256",
1030
+ "name": "maxSyRatio",
1031
+ "type": "uint256"
1032
+ },
1033
+ {
1034
+ "internalType": "uint256",
1035
+ "name": "minYtPtRatio",
1036
+ "type": "uint256"
1037
+ },
1038
+ {
1039
+ "internalType": "uint256",
1040
+ "name": "numOfBins",
1041
+ "type": "uint256"
1042
+ }
1043
+ ],
1044
+ "internalType": "struct LongTradingSpecs",
1045
+ "name": "_specs",
1046
+ "type": "tuple"
1047
+ }
1048
+ ],
1049
+ "name": "initialize",
1050
+ "outputs": [],
1051
+ "stateMutability": "nonpayable",
1052
+ "type": "function"
1053
+ },
1054
+ {
1055
+ "inputs": [],
1056
+ "name": "market",
1057
+ "outputs": [
1058
+ {
1059
+ "internalType": "address",
1060
+ "name": "",
1061
+ "type": "address"
1062
+ }
1063
+ ],
1064
+ "stateMutability": "view",
1065
+ "type": "function"
1066
+ },
1067
+ {
1068
+ "inputs": [],
1069
+ "name": "owner",
1070
+ "outputs": [
1071
+ {
1072
+ "internalType": "address",
1073
+ "name": "",
1074
+ "type": "address"
1075
+ }
1076
+ ],
1077
+ "stateMutability": "view",
1078
+ "type": "function"
1079
+ },
1080
+ {
1081
+ "inputs": [],
1082
+ "name": "pendingOwner",
1083
+ "outputs": [
1084
+ {
1085
+ "internalType": "address",
1086
+ "name": "",
1087
+ "type": "address"
1088
+ }
1089
+ ],
1090
+ "stateMutability": "view",
1091
+ "type": "function"
1092
+ },
1093
+ {
1094
+ "inputs": [],
1095
+ "name": "proxiableUUID",
1096
+ "outputs": [
1097
+ {
1098
+ "internalType": "bytes32",
1099
+ "name": "",
1100
+ "type": "bytes32"
1101
+ }
1102
+ ],
1103
+ "stateMutability": "view",
1104
+ "type": "function"
1105
+ },
1106
+ {
1107
+ "inputs": [],
1108
+ "name": "readBotState",
1109
+ "outputs": [
1110
+ {
1111
+ "components": [
1112
+ {
1113
+ "internalType": "uint256",
1114
+ "name": "lpBalance",
1115
+ "type": "uint256"
1116
+ },
1117
+ {
1118
+ "internalType": "uint256",
1119
+ "name": "ytBalance",
1120
+ "type": "uint256"
1121
+ },
1122
+ {
1123
+ "internalType": "uint256",
1124
+ "name": "syBalance",
1125
+ "type": "uint256"
1126
+ },
1127
+ {
1128
+ "internalType": "uint256",
1129
+ "name": "buyBins",
1130
+ "type": "uint256"
1131
+ }
1132
+ ],
1133
+ "internalType": "struct BotState",
1134
+ "name": "botState",
1135
+ "type": "tuple"
1136
+ }
1137
+ ],
1138
+ "stateMutability": "view",
1139
+ "type": "function"
1140
+ },
1141
+ {
1142
+ "inputs": [],
1143
+ "name": "readMarketExtState",
1144
+ "outputs": [
1145
+ {
1146
+ "components": [
1147
+ {
1148
+ "components": [
1149
+ {
1150
+ "internalType": "int256",
1151
+ "name": "totalPt",
1152
+ "type": "int256"
1153
+ },
1154
+ {
1155
+ "internalType": "int256",
1156
+ "name": "totalSy",
1157
+ "type": "int256"
1158
+ },
1159
+ {
1160
+ "internalType": "int256",
1161
+ "name": "totalLp",
1162
+ "type": "int256"
1163
+ },
1164
+ {
1165
+ "internalType": "address",
1166
+ "name": "treasury",
1167
+ "type": "address"
1168
+ },
1169
+ {
1170
+ "internalType": "int256",
1171
+ "name": "scalarRoot",
1172
+ "type": "int256"
1173
+ },
1174
+ {
1175
+ "internalType": "uint256",
1176
+ "name": "expiry",
1177
+ "type": "uint256"
1178
+ },
1179
+ {
1180
+ "internalType": "uint256",
1181
+ "name": "lnFeeRateRoot",
1182
+ "type": "uint256"
1183
+ },
1184
+ {
1185
+ "internalType": "uint256",
1186
+ "name": "reserveFeePercent",
1187
+ "type": "uint256"
1188
+ },
1189
+ {
1190
+ "internalType": "uint256",
1191
+ "name": "lastLnImpliedRate",
1192
+ "type": "uint256"
1193
+ }
1194
+ ],
1195
+ "internalType": "struct MarketState",
1196
+ "name": "state",
1197
+ "type": "tuple"
1198
+ },
1199
+ {
1200
+ "internalType": "PYIndex",
1201
+ "name": "index",
1202
+ "type": "uint256"
1203
+ },
1204
+ {
1205
+ "internalType": "uint256",
1206
+ "name": "blockTime",
1207
+ "type": "uint256"
1208
+ }
1209
+ ],
1210
+ "internalType": "struct MarketExtState",
1211
+ "name": "marketExt",
1212
+ "type": "tuple"
1213
+ }
1214
+ ],
1215
+ "stateMutability": "nonpayable",
1216
+ "type": "function"
1217
+ },
1218
+ {
1219
+ "inputs": [],
1220
+ "name": "readStrategyData",
1221
+ "outputs": [
1222
+ {
1223
+ "components": [
1224
+ {
1225
+ "components": [
1226
+ {
1227
+ "internalType": "uint256",
1228
+ "name": "lpBalance",
1229
+ "type": "uint256"
1230
+ },
1231
+ {
1232
+ "internalType": "uint256",
1233
+ "name": "ytBalance",
1234
+ "type": "uint256"
1235
+ },
1236
+ {
1237
+ "internalType": "uint256",
1238
+ "name": "syBalance",
1239
+ "type": "uint256"
1240
+ },
1241
+ {
1242
+ "internalType": "uint256",
1243
+ "name": "buyBins",
1244
+ "type": "uint256"
1245
+ }
1246
+ ],
1247
+ "internalType": "struct BotState",
1248
+ "name": "botState",
1249
+ "type": "tuple"
1250
+ },
1251
+ {
1252
+ "components": [
1253
+ {
1254
+ "components": [
1255
+ {
1256
+ "internalType": "int256",
1257
+ "name": "totalPt",
1258
+ "type": "int256"
1259
+ },
1260
+ {
1261
+ "internalType": "int256",
1262
+ "name": "totalSy",
1263
+ "type": "int256"
1264
+ },
1265
+ {
1266
+ "internalType": "int256",
1267
+ "name": "totalLp",
1268
+ "type": "int256"
1269
+ },
1270
+ {
1271
+ "internalType": "address",
1272
+ "name": "treasury",
1273
+ "type": "address"
1274
+ },
1275
+ {
1276
+ "internalType": "int256",
1277
+ "name": "scalarRoot",
1278
+ "type": "int256"
1279
+ },
1280
+ {
1281
+ "internalType": "uint256",
1282
+ "name": "expiry",
1283
+ "type": "uint256"
1284
+ },
1285
+ {
1286
+ "internalType": "uint256",
1287
+ "name": "lnFeeRateRoot",
1288
+ "type": "uint256"
1289
+ },
1290
+ {
1291
+ "internalType": "uint256",
1292
+ "name": "reserveFeePercent",
1293
+ "type": "uint256"
1294
+ },
1295
+ {
1296
+ "internalType": "uint256",
1297
+ "name": "lastLnImpliedRate",
1298
+ "type": "uint256"
1299
+ }
1300
+ ],
1301
+ "internalType": "struct MarketState",
1302
+ "name": "state",
1303
+ "type": "tuple"
1304
+ },
1305
+ {
1306
+ "internalType": "PYIndex",
1307
+ "name": "index",
1308
+ "type": "uint256"
1309
+ },
1310
+ {
1311
+ "internalType": "uint256",
1312
+ "name": "blockTime",
1313
+ "type": "uint256"
1314
+ }
1315
+ ],
1316
+ "internalType": "struct MarketExtState",
1317
+ "name": "marketExt",
1318
+ "type": "tuple"
1319
+ },
1320
+ {
1321
+ "components": [
1322
+ {
1323
+ "internalType": "uint256",
1324
+ "name": "buyYtIy",
1325
+ "type": "uint256"
1326
+ },
1327
+ {
1328
+ "internalType": "uint256",
1329
+ "name": "sellYtIy",
1330
+ "type": "uint256"
1331
+ },
1332
+ {
1333
+ "internalType": "uint256",
1334
+ "name": "targetSyRatio",
1335
+ "type": "uint256"
1336
+ },
1337
+ {
1338
+ "internalType": "uint256",
1339
+ "name": "maxSyRatio",
1340
+ "type": "uint256"
1341
+ },
1342
+ {
1343
+ "internalType": "uint256",
1344
+ "name": "minYtPtRatio",
1345
+ "type": "uint256"
1346
+ },
1347
+ {
1348
+ "internalType": "uint256",
1349
+ "name": "numOfBins",
1350
+ "type": "uint256"
1351
+ }
1352
+ ],
1353
+ "internalType": "struct LongTradingSpecs",
1354
+ "name": "specs",
1355
+ "type": "tuple"
1356
+ }
1357
+ ],
1358
+ "internalType": "struct StrategyData",
1359
+ "name": "strategyData",
1360
+ "type": "tuple"
1361
+ }
1362
+ ],
1363
+ "stateMutability": "nonpayable",
1364
+ "type": "function"
1365
+ },
1366
+ {
1367
+ "inputs": [
1368
+ {
1369
+ "components": [
1370
+ {
1371
+ "components": [
1372
+ {
1373
+ "internalType": "uint256",
1374
+ "name": "guessMin",
1375
+ "type": "uint256"
1376
+ },
1377
+ {
1378
+ "internalType": "uint256",
1379
+ "name": "guessMax",
1380
+ "type": "uint256"
1381
+ },
1382
+ {
1383
+ "internalType": "uint256",
1384
+ "name": "guessOffchain",
1385
+ "type": "uint256"
1386
+ },
1387
+ {
1388
+ "internalType": "uint256",
1389
+ "name": "maxIteration",
1390
+ "type": "uint256"
1391
+ },
1392
+ {
1393
+ "internalType": "uint256",
1394
+ "name": "eps",
1395
+ "type": "uint256"
1396
+ }
1397
+ ],
1398
+ "internalType": "struct ApproxParams",
1399
+ "name": "botParams",
1400
+ "type": "tuple"
1401
+ },
1402
+ {
1403
+ "components": [
1404
+ {
1405
+ "internalType": "uint256",
1406
+ "name": "guessMin",
1407
+ "type": "uint256"
1408
+ },
1409
+ {
1410
+ "internalType": "uint256",
1411
+ "name": "guessMax",
1412
+ "type": "uint256"
1413
+ },
1414
+ {
1415
+ "internalType": "uint256",
1416
+ "name": "guessOffchain",
1417
+ "type": "uint256"
1418
+ },
1419
+ {
1420
+ "internalType": "uint256",
1421
+ "name": "maxIteration",
1422
+ "type": "uint256"
1423
+ },
1424
+ {
1425
+ "internalType": "uint256",
1426
+ "name": "eps",
1427
+ "type": "uint256"
1428
+ }
1429
+ ],
1430
+ "internalType": "struct ApproxParams",
1431
+ "name": "guessTotalPtToSwap",
1432
+ "type": "tuple"
1433
+ },
1434
+ {
1435
+ "internalType": "uint256",
1436
+ "name": "minYtOut",
1437
+ "type": "uint256"
1438
+ },
1439
+ {
1440
+ "internalType": "uint256",
1441
+ "name": "targetIy",
1442
+ "type": "uint256"
1443
+ },
1444
+ {
1445
+ "internalType": "int256",
1446
+ "name": "currentBin",
1447
+ "type": "int256"
1448
+ }
1449
+ ],
1450
+ "internalType": "struct ILongYieldTradingBot.RemoveLiqToYtInput",
1451
+ "name": "inputParams",
1452
+ "type": "tuple"
1453
+ }
1454
+ ],
1455
+ "name": "removeLiqToYt",
1456
+ "outputs": [
1457
+ {
1458
+ "internalType": "uint256",
1459
+ "name": "netLpRemoved",
1460
+ "type": "uint256"
1461
+ },
1462
+ {
1463
+ "internalType": "uint256",
1464
+ "name": "netYtOut",
1465
+ "type": "uint256"
1466
+ }
1467
+ ],
1468
+ "stateMutability": "nonpayable",
1469
+ "type": "function"
1470
+ },
1471
+ {
1472
+ "inputs": [],
1473
+ "name": "router",
1474
+ "outputs": [
1475
+ {
1476
+ "internalType": "address",
1477
+ "name": "",
1478
+ "type": "address"
1479
+ }
1480
+ ],
1481
+ "stateMutability": "view",
1482
+ "type": "function"
1483
+ },
1484
+ {
1485
+ "inputs": [
1486
+ {
1487
+ "components": [
1488
+ {
1489
+ "internalType": "uint256",
1490
+ "name": "buyYtIy",
1491
+ "type": "uint256"
1492
+ },
1493
+ {
1494
+ "internalType": "uint256",
1495
+ "name": "sellYtIy",
1496
+ "type": "uint256"
1497
+ },
1498
+ {
1499
+ "internalType": "uint256",
1500
+ "name": "targetSyRatio",
1501
+ "type": "uint256"
1502
+ },
1503
+ {
1504
+ "internalType": "uint256",
1505
+ "name": "maxSyRatio",
1506
+ "type": "uint256"
1507
+ },
1508
+ {
1509
+ "internalType": "uint256",
1510
+ "name": "minYtPtRatio",
1511
+ "type": "uint256"
1512
+ },
1513
+ {
1514
+ "internalType": "uint256",
1515
+ "name": "numOfBins",
1516
+ "type": "uint256"
1517
+ }
1518
+ ],
1519
+ "internalType": "struct LongTradingSpecs",
1520
+ "name": "_specs",
1521
+ "type": "tuple"
1522
+ }
1523
+ ],
1524
+ "name": "setSpecs",
1525
+ "outputs": [],
1526
+ "stateMutability": "nonpayable",
1527
+ "type": "function"
1528
+ },
1529
+ {
1530
+ "inputs": [],
1531
+ "name": "specs",
1532
+ "outputs": [
1533
+ {
1534
+ "internalType": "uint256",
1535
+ "name": "buyYtIy",
1536
+ "type": "uint256"
1537
+ },
1538
+ {
1539
+ "internalType": "uint256",
1540
+ "name": "sellYtIy",
1541
+ "type": "uint256"
1542
+ },
1543
+ {
1544
+ "internalType": "uint256",
1545
+ "name": "targetSyRatio",
1546
+ "type": "uint256"
1547
+ },
1548
+ {
1549
+ "internalType": "uint256",
1550
+ "name": "maxSyRatio",
1551
+ "type": "uint256"
1552
+ },
1553
+ {
1554
+ "internalType": "uint256",
1555
+ "name": "minYtPtRatio",
1556
+ "type": "uint256"
1557
+ },
1558
+ {
1559
+ "internalType": "uint256",
1560
+ "name": "numOfBins",
1561
+ "type": "uint256"
1562
+ }
1563
+ ],
1564
+ "stateMutability": "view",
1565
+ "type": "function"
1566
+ },
1567
+ {
1568
+ "inputs": [
1569
+ {
1570
+ "internalType": "int256",
1571
+ "name": "ptToAccount",
1572
+ "type": "int256"
1573
+ },
1574
+ {
1575
+ "internalType": "int256",
1576
+ "name": "syToAccount",
1577
+ "type": "int256"
1578
+ },
1579
+ {
1580
+ "internalType": "bytes",
1581
+ "name": "data",
1582
+ "type": "bytes"
1583
+ }
1584
+ ],
1585
+ "name": "swapCallback",
1586
+ "outputs": [],
1587
+ "stateMutability": "nonpayable",
1588
+ "type": "function"
1589
+ },
1590
+ {
1591
+ "inputs": [
1592
+ {
1593
+ "internalType": "address",
1594
+ "name": "newOwner",
1595
+ "type": "address"
1596
+ },
1597
+ {
1598
+ "internalType": "bool",
1599
+ "name": "direct",
1600
+ "type": "bool"
1601
+ },
1602
+ {
1603
+ "internalType": "bool",
1604
+ "name": "renounce",
1605
+ "type": "bool"
1606
+ }
1607
+ ],
1608
+ "name": "transferOwnership",
1609
+ "outputs": [],
1610
+ "stateMutability": "nonpayable",
1611
+ "type": "function"
1612
+ },
1613
+ {
1614
+ "inputs": [
1615
+ {
1616
+ "internalType": "address",
1617
+ "name": "newImplementation",
1618
+ "type": "address"
1619
+ }
1620
+ ],
1621
+ "name": "upgradeTo",
1622
+ "outputs": [],
1623
+ "stateMutability": "nonpayable",
1624
+ "type": "function"
1625
+ },
1626
+ {
1627
+ "inputs": [
1628
+ {
1629
+ "internalType": "address",
1630
+ "name": "newImplementation",
1631
+ "type": "address"
1632
+ },
1633
+ {
1634
+ "internalType": "bytes",
1635
+ "name": "data",
1636
+ "type": "bytes"
1637
+ }
1638
+ ],
1639
+ "name": "upgradeToAndCall",
1640
+ "outputs": [],
1641
+ "stateMutability": "payable",
1642
+ "type": "function"
1643
+ },
1644
+ {
1645
+ "inputs": [
1646
+ {
1647
+ "internalType": "address",
1648
+ "name": "token",
1649
+ "type": "address"
1650
+ },
1651
+ {
1652
+ "internalType": "uint256",
1653
+ "name": "amount",
1654
+ "type": "uint256"
1655
+ }
1656
+ ],
1657
+ "name": "withdrawFunds",
1658
+ "outputs": [],
1659
+ "stateMutability": "nonpayable",
1660
+ "type": "function"
1661
+ },
1662
+ {
1663
+ "stateMutability": "payable",
1664
+ "type": "receive"
1665
+ }
1666
+ ],
1667
+ "bytecode": "0x61018060405230610140523480156200001757600080fd5b506040516200632d3803806200632d8339810160408190526200003a91620002ed565b600154849084908490600160a81b900460ff161580801562000067575060018054600160a01b900460ff16105b806200009d575062000084306200024260201b62001a3c1760201c565b1580156200009d575060018054600160a01b900460ff16145b620001065760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6001805460ff60a01b1916600160a01b179055801562000134576001805460ff60a81b1916600160a81b1790555b6000806000866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000178573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019e919062000355565b6001600160a01b03808b1660805289811660a05280841660c05280831660e0528082166101005288166101205291945092509050620001dc62000251565b505050801562000227576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050506001600160a01b03166101605250620003a9915050565b6001600160a01b03163b151590565b600154600160a81b900460ff16620002c05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000fd565b600080546001600160a01b03191633179055565b6001600160a01b0381168114620002ea57600080fd5b50565b600080600080608085870312156200030457600080fd5b84516200031181620002d4565b60208601519094506200032481620002d4565b60408601519093506200033781620002d4565b60608601519092506200034a81620002d4565b939692955090935050565b6000806000606084860312156200036b57600080fd5b83516200037881620002d4565b60208501519093506200038b81620002d4565b60408501519092506200039e81620002d4565b809150509250925092565b60805160a05160c05160e05161010051610120516101405161016051615d96620005976000396000818161057501528181610f1901528181610ff3015281816117a50152818161189401526124d001526000818161073c0152818161077c01528181610b5a01528181610b9a0152610c120152600081816103130152818161097a01526109aa0152600081816102d201528181610d1901528181610e120152818161136d015281816113f701528181611cc7015281816122730152818161286c015281816129aa01528181612a6801528181612b2c01528181612b5501528181612be301528181612c0401528181612c400152612d570152600081816104e901528181612b0b0152612cde01526000818161048201528181610af401528181610ceb015281816114a20152818161152c01528181611d6101526126af0152600081816105eb01528181610d9901528181610e77015261267101526000818161034701528181610cc001528181610d6c015281816115d00152818161165a0152818161199a01528181611df50152818161213c015281816121de015281816123420152818161241d015281816127f2015281816128130152818161283d0152818161288d0152818161291501528181612a3901528181612c6d01528181612cff0152612d840152615d966000f3fe60806040526004361061016c5760003560e01c8063078dfbe7146101785780633659cfe61461019a57806337deed8d146101ba57806343833bd6146101da5780634e71e0c8146102115780634f0364b1146102265780634f1ef2861461024657806352d1902d1461025957806365b800e61461027c5780636f8d61971461029e578063781c18db146102c05780637cf738d21461030157806380f55605146103355780638195f674146103695780638da5cb5b1461038957806396aba492146103a9578063a7584e5e146103d8578063acdb32df146103f8578063adb7c3f714610418578063afd27bf514610470578063c09aa0d2146104a4578063c1075329146104b7578063d94073d4146104d7578063dbeadc071461050b578063e138b2ee1461052d578063e30c397814610543578063e82cee7914610563578063eb983ce514610597578063ebff5439146105b9578063f887ea40146105d9578063fa483e721461060d57600080fd5b3661017357005b600080fd5b34801561018457600080fd5b50610198610193366004614cbc565b61062d565b005b3480156101a657600080fd5b506101986101b5366004614d07565b610732565b3480156101c657600080fd5b506101986101d5366004614d93565b6107fa565b3480156101e657600080fd5b506101fa6101f5366004614e57565b610933565b604051610208929190614ea2565b60405180910390f35b34801561021d57600080fd5b50610198610a1a565b34801561023257600080fd5b50610198610241366004614eb0565b610ac5565b610198610254366004614f38565b610b50565b34801561026557600080fd5b5061026e610c05565b604051908152602001610208565b34801561028857600080fd5b50610291610cb3565b6040516102089190614fad565b3480156102aa57600080fd5b506102b3610d4d565b6040516102089190615036565b3480156102cc57600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b6040516102089190615045565b34801561030d57600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561034157600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561037557600080fd5b506101fa610384366004615059565b610e45565b34801561039557600080fd5b506000546102f4906001600160a01b031681565b3480156103b557600080fd5b506103c96103c4366004615085565b610ed7565b6040516102089392919061509e565b3480156103e457600080fd5b506101986103f33660046150c6565b6110fc565b34801561040457600080fd5b506101986104133660046150e2565b61113d565b34801561042457600080fd5b5060335460345460355460365460375460385461044395949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610208565b34801561047c57600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b6101986104b2366004615123565b611208565b3480156104c357600080fd5b506101986104d2366004615167565b6112b7565b3480156104e357600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561051757600080fd5b5061052061133c565b6040516102089190615193565b34801561053957600080fd5b5061026e60325481565b34801561054f57600080fd5b506001546102f4906001600160a01b031681565b34801561056f57600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a357600080fd5b506105ac611703565b604051610208919061524f565b3480156105c557600080fd5b506101fa6105d436600461525e565b611764565b3480156105e557600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b50610198610628366004615271565b61198f565b6000546001600160a01b031633146106605760405162461bcd60e51b8152600401610657906152f0565b60405180910390fd5b8115610711576001600160a01b03831615158061067a5750805b6106be5760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606401610657565b600080546040516001600160a01b0380871693921691600080516020615d1a83398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361077a5760405162461bcd60e51b815260040161065790615325565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107ac611a4b565b6001600160a01b0316146107d25760405162461bcd60e51b81526004016106579061535f565b6107db81611a67565b604080516000808252602082019092526107f791839190611a91565b50565b600154600160a81b900460ff1615808015610820575060018054600160a01b900460ff16105b80610847575061082f30611a3c565b158015610847575060018054600160a01b900460ff16145b6108aa5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610657565b6001805460ff60a01b1916600160a01b17905580156108d7576001805460ff60a81b1916600160a81b1790555b6108e082611bfc565b6108e8611c2f565b801561092f576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000805481906001600160a01b031633146109605760405162461bcd60e51b8152600401610657906152f0565b610968611cb0565b610973858585611e71565b915061099e7f0000000000000000000000000000000000000000000000000000000000000000611efd565b6000549091506109d9907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031683611f88565b7f9fdfc39e9c36ec108e0a3b25ecb0818f9dba6993f27c8ab183d6f707c0a0e3198282604051610a0a929190614ea2565b60405180910390a1935093915050565b6001546001600160a01b0316338114610a755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606401610657565b600080546040516001600160a01b0380851693921691600080516020615d1a83398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b03163314610aef5760405162461bcd60e51b8152600401610657906152f0565b610b1a7f00000000000000000000000000000000000000000000000000000000000000003383612052565b6040518181527ffbf5b64cc7bd746fa51ff05d539d45d159c0bd41ae16d90375281f2925062bb19060200160405180910390a150565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610b985760405162461bcd60e51b815260040161065790615325565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bca611a4b565b6001600160a01b031614610bf05760405162461bcd60e51b81526004016106579061535f565b610bf982611a67565b61092f82826001611a91565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ca05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610657565b50600080516020615cfa83398151915290565b610cbb614b8c565b610ce47f0000000000000000000000000000000000000000000000000000000000000000611efd565b8152610d0f7f0000000000000000000000000000000000000000000000000000000000000000611efd565b6040820152610d3d7f0000000000000000000000000000000000000000000000000000000000000000611efd565b6020820152603254606082015290565b610d55614bb4565b60405163794052f360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063794052f390610dc1907f000000000000000000000000000000000000000000000000000000000000000090600401615045565b61012060405180830381865afa158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0391906153a4565b8152610e376001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166120b9565b602082015242604082015290565b6000805481906001600160a01b03163314610e725760405162461bcd60e51b8152600401610657906152f0565b610e9e7f000000000000000000000000000000000000000000000000000000000000000086868661211f565b60405191935091507f48f22f4bc9aee5b703ec4521f5f611eb37d722e592a0545e957f00ce8e9bd3ec90610a0a9087908590859061509e565b60008054819081906001600160a01b03163314610f065760405162461bcd60e51b8152600401610657906152f0565b6000610f10611703565b90508460e001357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d8b88a1a836040518263ffffffff1660e01b8152600401610f63919061524f565b602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615426565b14610ff15760405162461bcd60e51b815260206004820152601f60248201527f6164644c697146726f6d59743a2062696e2073746174652065787069726564006044820152606401610657565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166333a26e85611028611703565b6040516001600160e01b031960e084901b16815261105a919060019060c08b013590600019908c908190600401615485565b602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b9190615426565b93506110ab848660a001356121d7565b90935091506110b86124cc565b6040517fba4064507fa740cdd61480d0c0ce70e6b4e0f349dda4cd52184466a3c1993643906110ec908790859087906154d5565b60405180910390a1509193909250565b6000546001600160a01b031633146111265760405162461bcd60e51b8152600401610657906152f0565b6107f761113836839003830183614d93565b611bfc565b6000546001600160a01b031633146111675760405162461bcd60e51b8152600401610657906152f0565b60005b8181101561072d5736838383818110611185576111856154f4565b9050602002810190611197919061550a565b905060005b6111a6828061552a565b90508110156111fe576111f66111bc838061552a565b838181106111cc576111cc6154f4565b90506020020160208101906111e19190614d07565b6111f16040850160208601614d07565b61258a565b60010161119c565b505060010161116a565b6000546001600160a01b031633146112325760405162461bcd60e51b8152600401610657906152f0565b61124d6112426020840184614d07565b338460200135612052565b61125f6112598361561a565b82612645565b5061126d6020830183614d07565b6001600160a01b03167f2d0c0a8842b9944ece1495eb61121621b5e36bd6af3bba0318c695f525aef79f83602001356040516112ab91815260200190565b60405180910390a25050565b6000546001600160a01b031633146112e15760405162461bcd60e51b8152600401610657906152f0565b60001981036112f6576112f382611efd565b90505b611301823383611f88565b816001600160a01b03167f21901fa892c430ea8bd38b9390225ac8e67eac75ee10ffba16feefc539a288f9826040516112ab91815260200190565b6000546060906001600160a01b031633146113695760405162461bcd60e51b8152600401610657906152f0565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156113c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113f191908101906156fa565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637d24da4d306001806040518463ffffffff1660e01b81526004016114469392919061578d565b6000604051808303816000875af1158015611465573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261148d9190810190615816565b915061149c9050838383612732565b925060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156114fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261152691908101906156fa565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef5cfb8c306040518263ffffffff1660e01b81526004016115769190615045565b6000604051808303816000875af1158015611595573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115bd9190810190615853565b90506115ca858383612732565b945060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b8152600401600060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261165491908101906156fa565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639262187b306040518263ffffffff1660e01b81526004016116a49190615045565b6000604051808303816000875af11580156116c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116eb9190810190615853565b90506116f8878383612732565b965050505050505090565b61170b614c2b565b611713610cb3565b815261171d610d4d565b6020808301919091526040805160c081018252603354815260345492810192909252603554828201526036546060830152603754608083015260385460a083015282015290565b6000805481906001600160a01b031633146117915760405162461bcd60e51b8152600401610657906152f0565b600061179b611703565b90508361018001357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d8b88a1a836040518263ffffffff1660e01b81526004016117ef919061524f565b602060405180830381865afa15801561180c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118309190615426565b1461187d5760405162461bcd60e51b815260206004820181905260248201527f72656d6f76654c6971546f59743a2062696e20737461746520657870697265646044820152606401610657565b6040516333a26e8560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906333a26e85906118de9084906002906101608a013590600019908b9060a0820190600401615485565b602060405180830381865afa1580156118fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191f9190615426565b92506119428361193736879003870160a08801615887565b8661014001356127ea565b50915061194d6124cc565b6040517f43950417e0eb7225b8f42332a069bc35fbdf65f3d90c124210b3d3aefc3d6a4090611981908690869086906154d5565b60405180910390a150915091565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681146119db578060405163719d6b0360e01b81526004016106579190615045565b823560018160028111156119f1576119f161543f565b03611a0757611a0286868686612b01565b611a34565b6002816002811115611a1b57611a1b61543f565b03611a2c57611a0286868686612d37565b611a346158f6565b505050505050565b6001600160a01b03163b151590565b600080516020615cfa833981519152546001600160a01b031690565b6000546001600160a01b031633146107f75760405162461bcd60e51b8152600401610657906152f0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611ac45761072d83612e18565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b1e575060408051601f3d908101601f19168201909252611b1b91810190615426565b60015b611b815760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610657565b600080516020615cfa8339815191528114611bf05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610657565b5061072d838383612eb2565b8051603355602081015160345560408101516035556060810151603655608081015160375560a001516038819055603255565b600154600160a81b900460ff16611c9c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610657565b600080546001600160a01b03191633179055565b604051637d24da4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637d24da4d90611d01903090600190819060040161578d565b6000604051808303816000875af1158015611d20573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d489190810190615816565b5050604051633bd73ee360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ef5cfb8c90611d96903090600401615045565b6000604051808303816000875af1158015611db5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ddd9190810190615853565b50604051639262187b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639262187b90611e2a903090600401615045565b6000604051808303816000875af1158015611e49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107f79190810190615853565b6000805b83811015611ed057611eb4858583818110611e9257611e926154f4565b9050602002810190611ea4919061590c565b611ead9061561a565b6000612645565b611ebe9083615938565b9150611ec98161594b565b9050611e75565b5081811015611ef657808260405163d294eca360e01b8152600401610657929190614ea2565b9392505050565b60006001600160a01b03821615611f80576040516370a0823160e01b81526001600160a01b038316906370a0823190611f3a903090600401615045565b602060405180830381865afa158015611f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7b9190615426565b611f82565b475b92915050565b80600003611f9557505050565b6001600160a01b03831661203e576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ff0576040519150601f19603f3d011682016040523d82523d6000602084013e611ff5565b606091505b50509050806120385760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b6044820152606401610657565b50505050565b61072d6001600160a01b0384168383612ed7565b6001600160a01b03831661209e5780341461072d5760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b6044820152606401610657565b801561072d5761072d6001600160a01b038416833084612f2d565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f829190615426565b604051634221c25560e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018590526064820184905260848201839052600091829187169063844384aa9060a40160408051808303816000875af11580156121a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ca9190615964565b9150915094509492505050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663794052f3306040518263ffffffff1660e01b81526004016122289190615045565b61012060405180830381865afa158015612246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226a91906153a4565b905060006122a07f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166120b9565b905060006122b083838942612f4e565b5090915082905060006122c38284615988565b6122d5670de0b6b3a76400008b615988565b6122df919061599f565b905060006122f08660000151612fa2565b836122fe8860200151612fa2565b6123089190615988565b61231291906159c8565b61232490670de0b6b3a7640000615938565b9050600061233282846159c8565b905061233e818c61599f565b97507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635b709f17308d61237a8c612fb5565b6040518463ffffffff1660e01b815260040161239893929190615a2c565b60408051808303816000875af11580156123b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123da9190615964565b50600090506123e9878a612fe9565b905060006123f7878361599f565b604051630ab714fb60e11b815230600482015260248101829052604481018590529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063156e29f6906064016060604051808303816000875af115801561246e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124929190615a5c565b50909b50508b8b10156124bc578a8c60405163066d180b60e01b8152600401610657929190614ea2565b5050505050505050509250929050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d8b88a1a612505611703565b6040518263ffffffff1660e01b8152600401612521919061524f565b602060405180830381865afa15801561253e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125629190615426565b90506107f761258582612576603254612ff5565b6125809190615a8a565b612fa2565b603255565b6001600160a01b03821661259c575050565b6125ae60026001600160601b03615ab2565b6001600160601b0316826001600160a01b031663dd62ed3e30846040518363ffffffff1660e01b81526004016125e5929190615ad8565b602060405180830381865afa158015612602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126269190615426565b101561092f576126388282600061300b565b61092f828260001961300b565b600060001983602001510361266557825161265f90611efd565b60208401525b82516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163443e65129116156126a65760006126ac565b84602001515b307f000000000000000000000000000000000000000000000000000000000000000086886040518663ffffffff1660e01b81526004016126ef9493929190615af2565b60206040518083038185885af115801561270d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ef69190615426565b805182518491146127855760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e416d6f756e744c69623a206c656e677468206d69736d61746368006044820152606401610657565b60005b83518110156127e2576127ce828583815181106127a7576127a76154f4565b60200260200101518584815181106127c1576127c16154f4565b602002602001015161311f565b9150806127da8161594b565b915050612788565b509392505050565b6000806128387f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000087611f88565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f6b911bc7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008a6040518463ffffffff1660e01b81526004016128cb93929190615bb9565b60408051808303816000875af11580156128e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290d9190615964565b9150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663794052f3306040518263ffffffff1660e01b815260040161295f9190615045565b61012060405180830381865afa15801561297d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a191906153a4565b905060006129d77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166120b9565b905060006129e582866132e1565b90506000612a01836129f78488615938565b869190428e6132ed565b5097509050612a108282615938565b975088881015612a3757878960405163716d9a5760e11b8152600401610657929190614ea2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166329910b117f000000000000000000000000000000000000000000000000000000000000000089612a918d61340e565b6040518463ffffffff1660e01b8152600401612aaf93929190615a2c565b60408051808303816000875af1158015612acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af19190615964565b5050505050505050935093915050565b6020820135612b517f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000083611f88565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632f13b60c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd59190615bdd565b1590508015612c2957612c297f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084611f88565b60405163bcb7ea5d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bcb7ea5d90612c95907f000000000000000000000000000000000000000000000000000000000000000090600401615045565b6020604051808303816000875af1158015612cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd89190615426565b50611a347f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084612d288a612fa2565b612d32919061599f565b611f88565b60405163db74aa1560e01b81526020830135906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063db74aa1590612dae907f0000000000000000000000000000000000000000000000000000000000000000903090600401615ad8565b6020604051808303816000875af1158015612dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df19190615426565b905081811015611a3457808260405163716d9a5760e11b8152600401610657929190614ea2565b612e2181611a3c565b612e835760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610657565b600080516020615cfa83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612ebb83613435565b600082511180612ec85750805b1561072d576120388383613475565b61072d8363a9059cbb60e01b8484604051602401612ef6929190615bfa565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261349a565b612038846323b872dd60e01b858585604051602401612ef693929190615bb9565b600080600080600080612f6b8a8a612f658b612ff5565b8a61356c565b925092509250612f7d612580846135ff565b9550612f8882612fa2565b9450612f9381612fa2565b93505050509450945094915050565b600080821215612fb157600080fd5b5090565b604080518181526060818101835291602082018180368337019050509050600060015b602083015250604081019190915290565b6000611ef6838361360d565b60006001600160ff1b03821115612fb157600080fd5b600080846001600160a01b031663095ea7b360e01b8585604051602401613033929190615bfa565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516130719190615c13565b6000604051808303816000865af19150503d80600081146130ae576040519150601f19603f3d011682016040523d82523d6000602084013e6130b3565b606091505b50915091508180156130dd5750805115806130dd5750808060200190518101906130dd9190615bdd565b6131185760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b6044820152606401610657565b5050505050565b606081600003613130575082611ef6565b835160005b855181101561318e57846001600160a01b031686828151811061315a5761315a6154f4565b6020026020010151600001516001600160a01b03160361317c5780915061318e565b806131868161594b565b915050613135565b508451811461319e5760006131a1565b60015b60ff1685516131b09190615938565b6001600160401b038111156131c7576131c7614d24565b60405190808252806020026020018201604052801561320c57816020015b60408051808201909152600080825260208201528152602001906001900390816131e55790505b50915060005b85518110156132655785818151811061322d5761322d6154f4565b6020026020010151838281518110613247576132476154f4565b6020026020010181905250808061325d9061594b565b915050613212565b506040518060400160405280856001600160a01b0316815260200184875184146132ac5787848151811061329b5761329b6154f4565b6020026020010151602001516132af565b60005b6132b99190615938565b8152508282815181106132ce576132ce6154f4565b6020026020010181905250509392505050565b6000611ef6838361362c565b60008080806132fd898988613641565b9050846040015160000361333f578451613317908861373b565b855260208501516133319061332c8b84613751565b6137cd565b602086015261333f856137dc565b60005b85606001518110156133e957600061335a8783613827565b905060008061336b8d868e86613893565b509092509050600061337d8d846132e1565b9050600061338b828661599f565b90508c81116133c2576133a3818e8d608001516138c4565b156133ba5750975091955090935061340392505050565b848b526133d3565b6133cd60018661599f565b60208c01525b5050505050806133e29061594b565b9050613342565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b60408051818152606081810183529160208201818036833701905050905060006002612fd8565b61343e81612e18565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611ef68383604051806060016040528060278152602001615d3a602791396138f8565b60006134ef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166139d39092919063ffffffff16565b80519091501561072d578080602001905181019061350d9190615bdd565b61072d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610657565b600080600061357f8760a0015185101590565b1561359d5760405163b2094b5960e01b815260040160405180910390fd5b865185126135c3578651604051632185509b60e21b815261065791908790600401614ea2565b60006135d0888887613641565b90506135de888289896139e2565b919550935091506135f48882898988878b613b36565b509450945094915050565b6000611f8282600019615c25565b600082613622670de0b6b3a764000084615988565b611ef691906159c8565b6000670de0b6b3a76400006136228484615988565b61366c6040518060800160405280600081526020016000815260200160008152602001600081525090565b60a084015182106136905760405163b2094b5960e01b815260040160405180910390fd5b6000828560a001516136a2919061599f565b90506136ae8582613bc8565b825260208501516136c0908590613c29565b6020830152845115806136d557506020820151155b156136fc578451602083015160405163b1c4aefb60e01b8152610657929190600401614ea2565b61371a85600001518661010001518460200151856000015185613c60565b604083015260c085015161372e9082613ce1565b6060830152509392505050565b600081831161374a5781611ef6565b5090919050565b6000806000905060006001846020015161376b919061599f565b90505b8082146127e257600060026137838385615938565b61378e906001615938565b61379891906159c8565b905060006137ab86886000015184613d1a565b12156137c3576137bc60018261599f565b91506137c7565b8092505b5061376e565b600081831061374a5781611ef6565b6020810151815111806137fa5750670de0b6b3a76400008160800151115b156107f757805160208201516080830151604051632cc06bc160e21b81526106579392919060040161509e565b60008115801561383a5750604083015115155b1561384a57506040820151611f82565b602083015183511161387a576020830151835160029161386991615938565b61387391906159c8565b9050611f82565b604051637d388ed960e11b815260040160405180910390fd5b600080808080806138b189896138a88a615c55565b8d9291906139e2565b919c909b50909950975050505050505050565b60008284111580156138f057506138ec836138e784670de0b6b3a764000061599f565b613e12565b8410155b949350505050565b606061390384611a3c565b61395e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610657565b600080856001600160a01b0316856040516139799190615c13565b600060405180830381855af49150503d80600081146139b4576040519150601f19603f3d011682016040523d82523d6000602084013e6139b9565b606091505b50915091506139c9828286613e32565b9695505050505050565b60606138f08484600085613e6b565b600080600080613a058860000151886020015189600001518a6040015189613f9a565b90506000613a1b613a168784614052565b6135ff565b60608901519091506000871315613a8a576000613a388483614052565b9050670de0b6b3a7640000811215613a665760405163329e322960e21b815260048101829052602401610657565b613a82613a7b83670de0b6b3a7640000615c71565b8490614081565b915050613ab7565b613ab481613aa081670de0b6b3a7640000615c71565b613aaa9085615c25565b613a169190615c98565b90505b60006064613ac88c60e00151612ff5565b613ad29084615c25565b613adc9190615c98565b90506000613aea8385615c71565b905060008112613b0357613afe8a8261409f565b613b0d565b613b0d8a826140cc565b9750613b198a8461409f565b9650613b258a8361409f565b955050505050509450945094915050565b6000818860a00151613b48919061599f565b8851909150613b5790866140f9565b8852613b71613b668486615a8a565b60208a0151906140f9565b602089018190528851613b9691613b89908990613c29565b895160408b015185614140565b6101008901819052600003613bbe57604051635534d70f60e11b815260040160405180910390fd5b5050505050505050565b6000613bd382612ff5565b613bea613be56201518061016d615988565b612ff5565b8460800151613bf99190615c25565b613c039190615c98565b905060008113611f8257604051630e520c3b60e11b815260048101829052602401610657565b60008060008312613c3b576001613c3f565b6000195b9050613c56613be585613c5186614193565b61362c565b6138f09082615c25565b600080613c6d8684613ce1565b9050670de0b6b3a7640000811215613c9b5760405163329e322960e21b815260048101829052602401610657565b6000613cb1613caa878a615a8a565b8990614052565b90506000613cbe826141a5565b9050613cca8187614052565b613cd49084615c71565b9998505050505050505050565b600080613cf36201518061016d615988565b613cfd8486615988565b613d0791906159c8565b90506138f0613d1582612ff5565b6141f8565b600080828560200151613d2d9190615c71565b90506000613d3b8585615a8a565b9050600082138015613d4d5750600081135b613d8e5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b6044820152606401610657565b6000613dbc613d9d8484615c25565b6020890151613dac9089615a8a565b613db69088615c25565b90614052565b90506000613dd2613dcd8486614052565b61460d565b8851909150600090613ded90670de0b6b3a764000090614052565b9050613e0381613dfd8486615c71565b90614081565b8960400151613cd49190615c71565b600080613e1f8385615988565b670de0b6b3a76400009004949350505050565b60608315613e41575081611ef6565b825115613e515782518084602001fd5b8160405162461bcd60e51b81526004016106579190615cc6565b606082471015613ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610657565b613ed585611a3c565b613f215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610657565b600080866001600160a01b03168587604051613f3d9190615c13565b60006040518083038185875af1925050503d8060008114613f7a576040519150601f19603f3d011682016040523d82523d6000602084013e613f7f565b606091505b5091509150613f8f828286613e32565b979650505050505050565b600080613fa787846140f9565b90506000613fbf613fb8888a615a8a565b8390614052565b9050670d529ae9e8600000811315613ff65780670d529ae9e8600000604051637e34684f60e11b8152600401610657929190614ea2565b6000614001826141a5565b90508561400e8289614052565b6140189190615a8a565b9350670de0b6b3a76400008412156140465760405163329e322960e21b815260048101859052602401610657565b50505095945050505050565b600080614067670de0b6b3a764000085615c25565b9050828181614078576140786159b2565b05949350505050565b60008061408e8385615c25565b9050670de0b6b3a764000081614078565b600080600083126140b15760016140b5565b6000195b9050613c56613be5856140c786614193565b61360d565b600080600083126140de5760016140e2565b6000195b9050613c56613be5856140f486614193565b61469e565b6000818312156141365760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b6044820152606401610657565b611ef68284615c71565b600080614151878787876000613f9a565b905060006141616125808361460d565b9050836141736201518061016d615988565b61417d9083615988565b61418791906159c8565b98975050505050505050565b6000808213612fb157611f7b82615c55565b6000670de0b6b3a764000082036141cf5760405163a9c8b14d60e01b815260040160405180910390fd5b60006141ed6141e684670de0b6b3a7640000615c71565b8490614052565b9050611ef68161460d565b6000680238fd42c5cf03ffff19821215801561421d575068070c1cc73b00c800008213155b61425c5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610657565b600082121561429457614271826000036141f8565b6a0c097ce7bc90715b34b9f160241b8161428d5761428d6159b2565b0592915050565b60006806f05b59d3b200000083126142d257506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b614308565b6803782dace9d9000000831261430457506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380614308565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126143585768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412614394576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b1880000084126143ce57682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412614408576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac6200000841261444157680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d63100000841261447a5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b188000084126144b3576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126144ec5768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080821361464e5760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610657565b670c7d713b49da00008213801561466c5750670f43fc2c04ee000082125b1561469057670de0b6b3a7640000614683836146ca565b8161428d5761428d6159b2565b611f82826147e9565b919050565b6000826001816146b6670de0b6b3a764000086615988565b6146c09190615938565b613622919061599f565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028161470b5761470b6159b2565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121561482a57614821826a0c097ce7bc90715b34b9f160241b8161481b5761481b6159b2565b056147e9565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126148755772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b83126148ac576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff008400083126148f4576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a700831261492f576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf850831261496657693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e2831261499d57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126149d25768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb4174612111083126149fd57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312614a32576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312614a67576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312614a9b576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312614acf576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d631000008086030281614af857614af86159b2565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060600160405280614c1760405180610120016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200160008152602001600081525090565b6040518060600160405280614c3e614b8c565b8152602001614c4b614bb4565b8152602001614c896040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b905290565b6001600160a01b03811681146107f757600080fd5b803561469981614c8e565b80151581146107f757600080fd5b600080600060608486031215614cd157600080fd5b8335614cdc81614c8e565b92506020840135614cec81614cae565b91506040840135614cfc81614cae565b809150509250925092565b600060208284031215614d1957600080fd5b8135611ef681614c8e565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715614d5d57614d5d614d24565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614d8b57614d8b614d24565b604052919050565b600060c08284031215614da557600080fd5b60405160c081016001600160401b0381118282101715614dc757614dc7614d24565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b60008083601f840112614e1e57600080fd5b5081356001600160401b03811115614e3557600080fd5b6020830191508360208260051b8501011115614e5057600080fd5b9250929050565b600080600060408486031215614e6c57600080fd5b83356001600160401b03811115614e8257600080fd5b614e8e86828701614e0c565b909790965060209590950135949350505050565b918252602082015260400190565b600060208284031215614ec257600080fd5b5035919050565b600082601f830112614eda57600080fd5b81356001600160401b03811115614ef357614ef3614d24565b614f06601f8201601f1916602001614d63565b818152846020838601011115614f1b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614f4b57600080fd5b8235614f5681614c8e565b915060208301356001600160401b03811115614f7157600080fd5b614f7d85828601614ec9565b9150509250929050565b805182526020810151602083015260408101516040830152606081015160608301525050565b60808101611f828284614f87565b805180518352602081015160208401526040810151604084015260018060a01b0360608201511660608401526080810151608084015260a081015160a084015260c081015160c084015260e081015160e084015261010080820151818501525050602081015161012083015260408101516101408301525050565b6101608101611f828284614fbb565b6001600160a01b0391909116815260200190565b60008060006060848603121561506e57600080fd5b505081359360208301359350604090920135919050565b6000610100828403121561509857600080fd5b50919050565b9283526020830191909152604082015260600190565b600060c0828403121561509857600080fd5b600060c082840312156150d857600080fd5b611ef683836150b4565b600080602083850312156150f557600080fd5b82356001600160401b0381111561510b57600080fd5b61511785828601614e0c565b90969095509350505050565b6000806040838503121561513657600080fd5b82356001600160401b0381111561514c57600080fd5b615158858286016150b4565b95602094909401359450505050565b6000806040838503121561517a57600080fd5b823561518581614c8e565b946020939093013593505050565b602080825282518282018190526000919060409081850190868401855b828110156151de57815180516001600160a01b031685528601518685015292840192908501906001016151b0565b5091979650505050505050565b6151f6828251614f87565b60208101516152086080840182614fbb565b5060409081015180516101e08401526020810151610200840152908101516102208301526060810151610240830152608081015161026083015260a0015161028090910152565b6102a08101611f8282846151eb565b60006101a0828403121561509857600080fd5b6000806000806060858703121561528757600080fd5b843593506020850135925060408501356001600160401b03808211156152ac57600080fd5b818701915087601f8301126152c057600080fd5b8135818111156152cf57600080fd5b8860208285010111156152e157600080fd5b95989497505060200194505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c90820152600080516020615cda83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020615cda83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b805161469981614c8e565b600061012082840312156153b757600080fd5b6153bf614d3a565b8251815260208301516020820152604083015160408201526153e360608401615399565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b60006020828403121561543857600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b80358252602081013560208301526040810135604083015260608101356060830152608081013560808301525050565b610440810161549482896151eb565b600387106154a4576154a461543f565b866102a0830152856102c0830152846102e08301526154c7610300830185615455565b613f8f6103a0830184615455565b60e081016154e38286615455565b60a082019390935260c00152919050565b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261552057600080fd5b9190910192915050565b6000808335601e1984360301811261554157600080fd5b8301803591506001600160401b0382111561555b57600080fd5b6020019150600581901b3603821315614e5057600080fd5b60006080828403121561558557600080fd5b604051608081016001600160401b0380821183831017156155a8576155a8614d24565b8160405282935084359150600482106155c057600080fd5b9082526020840135906155d282614c8e565b81602084015260408501359150808211156155ec57600080fd5b506155f985828601614ec9565b604083015250606083013561560d81614cae565b6060919091015292915050565b600060c0823603121561562c57600080fd5b60405160c081016001600160401b03808211838310171561564f5761564f614d24565b816040528435915061566082614c8e565b818352602085013560208401526040850135915061567d82614c8e565b8160408401526060850135915061569382614c8e565b8160608401526156a560808601614ca3565b608084015260a08501359150808211156156be57600080fd5b506156cb36828601615573565b60a08301525092915050565b60006001600160401b038211156156f0576156f0614d24565b5060051b60200190565b6000602080838503121561570d57600080fd5b82516001600160401b0381111561572357600080fd5b8301601f8101851361573457600080fd5b8051615747615742826156d7565b614d63565b81815260059190911b8201830190838101908783111561576657600080fd5b928401925b82841015613f8f57835161577e81614c8e565b8252928401929084019061576b565b6001600160a01b0393909316835290151560208301521515604082015260600190565b600082601f8301126157c157600080fd5b815160206157d1615742836156d7565b82815260059290921b840181019181810190868411156157f057600080fd5b8286015b8481101561580b57805183529183019183016157f4565b509695505050505050565b6000806040838503121561582957600080fd5b825160208401519092506001600160401b0381111561584757600080fd5b614f7d858286016157b0565b60006020828403121561586557600080fd5b81516001600160401b0381111561587b57600080fd5b6138f0848285016157b0565b600060a0828403121561589957600080fd5b60405160a081016001600160401b03811182821017156158bb576158bb614d24565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b634e487b7160e01b600052600160045260246000fd5b6000823560be1983360301811261552057600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115611f8257611f82615922565b60006001820161595d5761595d615922565b5060010190565b6000806040838503121561597757600080fd5b505080516020909101519092909150565b8082028115828204841417611f8257611f82615922565b81810381811115611f8257611f82615922565b634e487b7160e01b600052601260045260246000fd5b6000826159d7576159d76159b2565b500490565b60005b838110156159f75781810151838201526020016159df565b50506000910152565b60008151808452615a188160208601602086016159dc565b601f01601f19169290920160200192915050565b60018060a01b0384168152826020820152606060408201526000615a536060830184615a00565b95945050505050565b600080600060608486031215615a7157600080fd5b8351925060208401519150604084015190509250925092565b8082018281126000831280158216821582161715615aaa57615aaa615922565b505092915050565b60006001600160601b0383811680615acc57615acc6159b2565b92169190910492915050565b6001600160a01b0392831681529116602082015260400190565b600060018060a01b038087168352808616602084015284604084015260806060840152808451166080840152602084015160a08401528060408501511660c08401528060608501511660e08401528060808501511661010084015260a084015160c0610120850152805160048110615b6c57615b6c61543f565b61014085015260208101519091166101608401526040810151608061018085015290615b9c6101c0850183615a00565b9150606081015115156101a0850152508091505095945050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615bef57600080fd5b8151611ef681614cae565b6001600160a01b03929092168252602082015260400190565b600082516155208184602087016159dc565b80820260008212600160ff1b84141615615c4157615c41615922565b8181058314821517611f8257611f82615922565b6000600160ff1b8201615c6a57615c6a615922565b5060000390565b8181036000831280158383131683831282161715615c9157615c91615922565b5092915050565b600082615ca757615ca76159b2565b600160ff1b821460001984141615615cc157615cc1615922565b500590565b602081526000611ef66020830184615a0056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207e924be362f76861359f4beaf85e1678c9d701a69c2ffed50ef1c920cbdd391f64736f6c63430008110033",
1668
+ "deployedBytecode": "0x60806040526004361061016c5760003560e01c8063078dfbe7146101785780633659cfe61461019a57806337deed8d146101ba57806343833bd6146101da5780634e71e0c8146102115780634f0364b1146102265780634f1ef2861461024657806352d1902d1461025957806365b800e61461027c5780636f8d61971461029e578063781c18db146102c05780637cf738d21461030157806380f55605146103355780638195f674146103695780638da5cb5b1461038957806396aba492146103a9578063a7584e5e146103d8578063acdb32df146103f8578063adb7c3f714610418578063afd27bf514610470578063c09aa0d2146104a4578063c1075329146104b7578063d94073d4146104d7578063dbeadc071461050b578063e138b2ee1461052d578063e30c397814610543578063e82cee7914610563578063eb983ce514610597578063ebff5439146105b9578063f887ea40146105d9578063fa483e721461060d57600080fd5b3661017357005b600080fd5b34801561018457600080fd5b50610198610193366004614cbc565b61062d565b005b3480156101a657600080fd5b506101986101b5366004614d07565b610732565b3480156101c657600080fd5b506101986101d5366004614d93565b6107fa565b3480156101e657600080fd5b506101fa6101f5366004614e57565b610933565b604051610208929190614ea2565b60405180910390f35b34801561021d57600080fd5b50610198610a1a565b34801561023257600080fd5b50610198610241366004614eb0565b610ac5565b610198610254366004614f38565b610b50565b34801561026557600080fd5b5061026e610c05565b604051908152602001610208565b34801561028857600080fd5b50610291610cb3565b6040516102089190614fad565b3480156102aa57600080fd5b506102b3610d4d565b6040516102089190615036565b3480156102cc57600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b6040516102089190615045565b34801561030d57600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561034157600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561037557600080fd5b506101fa610384366004615059565b610e45565b34801561039557600080fd5b506000546102f4906001600160a01b031681565b3480156103b557600080fd5b506103c96103c4366004615085565b610ed7565b6040516102089392919061509e565b3480156103e457600080fd5b506101986103f33660046150c6565b6110fc565b34801561040457600080fd5b506101986104133660046150e2565b61113d565b34801561042457600080fd5b5060335460345460355460365460375460385461044395949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610208565b34801561047c57600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b6101986104b2366004615123565b611208565b3480156104c357600080fd5b506101986104d2366004615167565b6112b7565b3480156104e357600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561051757600080fd5b5061052061133c565b6040516102089190615193565b34801561053957600080fd5b5061026e60325481565b34801561054f57600080fd5b506001546102f4906001600160a01b031681565b34801561056f57600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a357600080fd5b506105ac611703565b604051610208919061524f565b3480156105c557600080fd5b506101fa6105d436600461525e565b611764565b3480156105e557600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b50610198610628366004615271565b61198f565b6000546001600160a01b031633146106605760405162461bcd60e51b8152600401610657906152f0565b60405180910390fd5b8115610711576001600160a01b03831615158061067a5750805b6106be5760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606401610657565b600080546040516001600160a01b0380871693921691600080516020615d1a83398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361077a5760405162461bcd60e51b815260040161065790615325565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107ac611a4b565b6001600160a01b0316146107d25760405162461bcd60e51b81526004016106579061535f565b6107db81611a67565b604080516000808252602082019092526107f791839190611a91565b50565b600154600160a81b900460ff1615808015610820575060018054600160a01b900460ff16105b80610847575061082f30611a3c565b158015610847575060018054600160a01b900460ff16145b6108aa5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610657565b6001805460ff60a01b1916600160a01b17905580156108d7576001805460ff60a81b1916600160a81b1790555b6108e082611bfc565b6108e8611c2f565b801561092f576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000805481906001600160a01b031633146109605760405162461bcd60e51b8152600401610657906152f0565b610968611cb0565b610973858585611e71565b915061099e7f0000000000000000000000000000000000000000000000000000000000000000611efd565b6000549091506109d9907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031683611f88565b7f9fdfc39e9c36ec108e0a3b25ecb0818f9dba6993f27c8ab183d6f707c0a0e3198282604051610a0a929190614ea2565b60405180910390a1935093915050565b6001546001600160a01b0316338114610a755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606401610657565b600080546040516001600160a01b0380851693921691600080516020615d1a83398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b03163314610aef5760405162461bcd60e51b8152600401610657906152f0565b610b1a7f00000000000000000000000000000000000000000000000000000000000000003383612052565b6040518181527ffbf5b64cc7bd746fa51ff05d539d45d159c0bd41ae16d90375281f2925062bb19060200160405180910390a150565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610b985760405162461bcd60e51b815260040161065790615325565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bca611a4b565b6001600160a01b031614610bf05760405162461bcd60e51b81526004016106579061535f565b610bf982611a67565b61092f82826001611a91565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ca05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610657565b50600080516020615cfa83398151915290565b610cbb614b8c565b610ce47f0000000000000000000000000000000000000000000000000000000000000000611efd565b8152610d0f7f0000000000000000000000000000000000000000000000000000000000000000611efd565b6040820152610d3d7f0000000000000000000000000000000000000000000000000000000000000000611efd565b6020820152603254606082015290565b610d55614bb4565b60405163794052f360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063794052f390610dc1907f000000000000000000000000000000000000000000000000000000000000000090600401615045565b61012060405180830381865afa158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0391906153a4565b8152610e376001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166120b9565b602082015242604082015290565b6000805481906001600160a01b03163314610e725760405162461bcd60e51b8152600401610657906152f0565b610e9e7f000000000000000000000000000000000000000000000000000000000000000086868661211f565b60405191935091507f48f22f4bc9aee5b703ec4521f5f611eb37d722e592a0545e957f00ce8e9bd3ec90610a0a9087908590859061509e565b60008054819081906001600160a01b03163314610f065760405162461bcd60e51b8152600401610657906152f0565b6000610f10611703565b90508460e001357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d8b88a1a836040518263ffffffff1660e01b8152600401610f63919061524f565b602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615426565b14610ff15760405162461bcd60e51b815260206004820152601f60248201527f6164644c697146726f6d59743a2062696e2073746174652065787069726564006044820152606401610657565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166333a26e85611028611703565b6040516001600160e01b031960e084901b16815261105a919060019060c08b013590600019908c908190600401615485565b602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b9190615426565b93506110ab848660a001356121d7565b90935091506110b86124cc565b6040517fba4064507fa740cdd61480d0c0ce70e6b4e0f349dda4cd52184466a3c1993643906110ec908790859087906154d5565b60405180910390a1509193909250565b6000546001600160a01b031633146111265760405162461bcd60e51b8152600401610657906152f0565b6107f761113836839003830183614d93565b611bfc565b6000546001600160a01b031633146111675760405162461bcd60e51b8152600401610657906152f0565b60005b8181101561072d5736838383818110611185576111856154f4565b9050602002810190611197919061550a565b905060005b6111a6828061552a565b90508110156111fe576111f66111bc838061552a565b838181106111cc576111cc6154f4565b90506020020160208101906111e19190614d07565b6111f16040850160208601614d07565b61258a565b60010161119c565b505060010161116a565b6000546001600160a01b031633146112325760405162461bcd60e51b8152600401610657906152f0565b61124d6112426020840184614d07565b338460200135612052565b61125f6112598361561a565b82612645565b5061126d6020830183614d07565b6001600160a01b03167f2d0c0a8842b9944ece1495eb61121621b5e36bd6af3bba0318c695f525aef79f83602001356040516112ab91815260200190565b60405180910390a25050565b6000546001600160a01b031633146112e15760405162461bcd60e51b8152600401610657906152f0565b60001981036112f6576112f382611efd565b90505b611301823383611f88565b816001600160a01b03167f21901fa892c430ea8bd38b9390225ac8e67eac75ee10ffba16feefc539a288f9826040516112ab91815260200190565b6000546060906001600160a01b031633146113695760405162461bcd60e51b8152600401610657906152f0565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156113c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113f191908101906156fa565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637d24da4d306001806040518463ffffffff1660e01b81526004016114469392919061578d565b6000604051808303816000875af1158015611465573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261148d9190810190615816565b915061149c9050838383612732565b925060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156114fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261152691908101906156fa565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef5cfb8c306040518263ffffffff1660e01b81526004016115769190615045565b6000604051808303816000875af1158015611595573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115bd9190810190615853565b90506115ca858383612732565b945060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b8152600401600060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261165491908101906156fa565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639262187b306040518263ffffffff1660e01b81526004016116a49190615045565b6000604051808303816000875af11580156116c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116eb9190810190615853565b90506116f8878383612732565b965050505050505090565b61170b614c2b565b611713610cb3565b815261171d610d4d565b6020808301919091526040805160c081018252603354815260345492810192909252603554828201526036546060830152603754608083015260385460a083015282015290565b6000805481906001600160a01b031633146117915760405162461bcd60e51b8152600401610657906152f0565b600061179b611703565b90508361018001357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d8b88a1a836040518263ffffffff1660e01b81526004016117ef919061524f565b602060405180830381865afa15801561180c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118309190615426565b1461187d5760405162461bcd60e51b815260206004820181905260248201527f72656d6f76654c6971546f59743a2062696e20737461746520657870697265646044820152606401610657565b6040516333a26e8560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906333a26e85906118de9084906002906101608a013590600019908b9060a0820190600401615485565b602060405180830381865afa1580156118fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191f9190615426565b92506119428361193736879003870160a08801615887565b8661014001356127ea565b50915061194d6124cc565b6040517f43950417e0eb7225b8f42332a069bc35fbdf65f3d90c124210b3d3aefc3d6a4090611981908690869086906154d5565b60405180910390a150915091565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681146119db578060405163719d6b0360e01b81526004016106579190615045565b823560018160028111156119f1576119f161543f565b03611a0757611a0286868686612b01565b611a34565b6002816002811115611a1b57611a1b61543f565b03611a2c57611a0286868686612d37565b611a346158f6565b505050505050565b6001600160a01b03163b151590565b600080516020615cfa833981519152546001600160a01b031690565b6000546001600160a01b031633146107f75760405162461bcd60e51b8152600401610657906152f0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611ac45761072d83612e18565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b1e575060408051601f3d908101601f19168201909252611b1b91810190615426565b60015b611b815760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610657565b600080516020615cfa8339815191528114611bf05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610657565b5061072d838383612eb2565b8051603355602081015160345560408101516035556060810151603655608081015160375560a001516038819055603255565b600154600160a81b900460ff16611c9c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610657565b600080546001600160a01b03191633179055565b604051637d24da4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637d24da4d90611d01903090600190819060040161578d565b6000604051808303816000875af1158015611d20573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d489190810190615816565b5050604051633bd73ee360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ef5cfb8c90611d96903090600401615045565b6000604051808303816000875af1158015611db5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ddd9190810190615853565b50604051639262187b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639262187b90611e2a903090600401615045565b6000604051808303816000875af1158015611e49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107f79190810190615853565b6000805b83811015611ed057611eb4858583818110611e9257611e926154f4565b9050602002810190611ea4919061590c565b611ead9061561a565b6000612645565b611ebe9083615938565b9150611ec98161594b565b9050611e75565b5081811015611ef657808260405163d294eca360e01b8152600401610657929190614ea2565b9392505050565b60006001600160a01b03821615611f80576040516370a0823160e01b81526001600160a01b038316906370a0823190611f3a903090600401615045565b602060405180830381865afa158015611f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7b9190615426565b611f82565b475b92915050565b80600003611f9557505050565b6001600160a01b03831661203e576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ff0576040519150601f19603f3d011682016040523d82523d6000602084013e611ff5565b606091505b50509050806120385760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b6044820152606401610657565b50505050565b61072d6001600160a01b0384168383612ed7565b6001600160a01b03831661209e5780341461072d5760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b6044820152606401610657565b801561072d5761072d6001600160a01b038416833084612f2d565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f829190615426565b604051634221c25560e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018590526064820184905260848201839052600091829187169063844384aa9060a40160408051808303816000875af11580156121a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ca9190615964565b9150915094509492505050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663794052f3306040518263ffffffff1660e01b81526004016122289190615045565b61012060405180830381865afa158015612246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226a91906153a4565b905060006122a07f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166120b9565b905060006122b083838942612f4e565b5090915082905060006122c38284615988565b6122d5670de0b6b3a76400008b615988565b6122df919061599f565b905060006122f08660000151612fa2565b836122fe8860200151612fa2565b6123089190615988565b61231291906159c8565b61232490670de0b6b3a7640000615938565b9050600061233282846159c8565b905061233e818c61599f565b97507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635b709f17308d61237a8c612fb5565b6040518463ffffffff1660e01b815260040161239893929190615a2c565b60408051808303816000875af11580156123b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123da9190615964565b50600090506123e9878a612fe9565b905060006123f7878361599f565b604051630ab714fb60e11b815230600482015260248101829052604481018590529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063156e29f6906064016060604051808303816000875af115801561246e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124929190615a5c565b50909b50508b8b10156124bc578a8c60405163066d180b60e01b8152600401610657929190614ea2565b5050505050505050509250929050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d8b88a1a612505611703565b6040518263ffffffff1660e01b8152600401612521919061524f565b602060405180830381865afa15801561253e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125629190615426565b90506107f761258582612576603254612ff5565b6125809190615a8a565b612fa2565b603255565b6001600160a01b03821661259c575050565b6125ae60026001600160601b03615ab2565b6001600160601b0316826001600160a01b031663dd62ed3e30846040518363ffffffff1660e01b81526004016125e5929190615ad8565b602060405180830381865afa158015612602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126269190615426565b101561092f576126388282600061300b565b61092f828260001961300b565b600060001983602001510361266557825161265f90611efd565b60208401525b82516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163443e65129116156126a65760006126ac565b84602001515b307f000000000000000000000000000000000000000000000000000000000000000086886040518663ffffffff1660e01b81526004016126ef9493929190615af2565b60206040518083038185885af115801561270d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ef69190615426565b805182518491146127855760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e416d6f756e744c69623a206c656e677468206d69736d61746368006044820152606401610657565b60005b83518110156127e2576127ce828583815181106127a7576127a76154f4565b60200260200101518584815181106127c1576127c16154f4565b602002602001015161311f565b9150806127da8161594b565b915050612788565b509392505050565b6000806128387f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000087611f88565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f6b911bc7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008a6040518463ffffffff1660e01b81526004016128cb93929190615bb9565b60408051808303816000875af11580156128e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290d9190615964565b9150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663794052f3306040518263ffffffff1660e01b815260040161295f9190615045565b61012060405180830381865afa15801561297d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a191906153a4565b905060006129d77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166120b9565b905060006129e582866132e1565b90506000612a01836129f78488615938565b869190428e6132ed565b5097509050612a108282615938565b975088881015612a3757878960405163716d9a5760e11b8152600401610657929190614ea2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166329910b117f000000000000000000000000000000000000000000000000000000000000000089612a918d61340e565b6040518463ffffffff1660e01b8152600401612aaf93929190615a2c565b60408051808303816000875af1158015612acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af19190615964565b5050505050505050935093915050565b6020820135612b517f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000083611f88565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632f13b60c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd59190615bdd565b1590508015612c2957612c297f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084611f88565b60405163bcb7ea5d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bcb7ea5d90612c95907f000000000000000000000000000000000000000000000000000000000000000090600401615045565b6020604051808303816000875af1158015612cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd89190615426565b50611a347f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084612d288a612fa2565b612d32919061599f565b611f88565b60405163db74aa1560e01b81526020830135906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063db74aa1590612dae907f0000000000000000000000000000000000000000000000000000000000000000903090600401615ad8565b6020604051808303816000875af1158015612dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df19190615426565b905081811015611a3457808260405163716d9a5760e11b8152600401610657929190614ea2565b612e2181611a3c565b612e835760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610657565b600080516020615cfa83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612ebb83613435565b600082511180612ec85750805b1561072d576120388383613475565b61072d8363a9059cbb60e01b8484604051602401612ef6929190615bfa565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261349a565b612038846323b872dd60e01b858585604051602401612ef693929190615bb9565b600080600080600080612f6b8a8a612f658b612ff5565b8a61356c565b925092509250612f7d612580846135ff565b9550612f8882612fa2565b9450612f9381612fa2565b93505050509450945094915050565b600080821215612fb157600080fd5b5090565b604080518181526060818101835291602082018180368337019050509050600060015b602083015250604081019190915290565b6000611ef6838361360d565b60006001600160ff1b03821115612fb157600080fd5b600080846001600160a01b031663095ea7b360e01b8585604051602401613033929190615bfa565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516130719190615c13565b6000604051808303816000865af19150503d80600081146130ae576040519150601f19603f3d011682016040523d82523d6000602084013e6130b3565b606091505b50915091508180156130dd5750805115806130dd5750808060200190518101906130dd9190615bdd565b6131185760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b6044820152606401610657565b5050505050565b606081600003613130575082611ef6565b835160005b855181101561318e57846001600160a01b031686828151811061315a5761315a6154f4565b6020026020010151600001516001600160a01b03160361317c5780915061318e565b806131868161594b565b915050613135565b508451811461319e5760006131a1565b60015b60ff1685516131b09190615938565b6001600160401b038111156131c7576131c7614d24565b60405190808252806020026020018201604052801561320c57816020015b60408051808201909152600080825260208201528152602001906001900390816131e55790505b50915060005b85518110156132655785818151811061322d5761322d6154f4565b6020026020010151838281518110613247576132476154f4565b6020026020010181905250808061325d9061594b565b915050613212565b506040518060400160405280856001600160a01b0316815260200184875184146132ac5787848151811061329b5761329b6154f4565b6020026020010151602001516132af565b60005b6132b99190615938565b8152508282815181106132ce576132ce6154f4565b6020026020010181905250509392505050565b6000611ef6838361362c565b60008080806132fd898988613641565b9050846040015160000361333f578451613317908861373b565b855260208501516133319061332c8b84613751565b6137cd565b602086015261333f856137dc565b60005b85606001518110156133e957600061335a8783613827565b905060008061336b8d868e86613893565b509092509050600061337d8d846132e1565b9050600061338b828661599f565b90508c81116133c2576133a3818e8d608001516138c4565b156133ba5750975091955090935061340392505050565b848b526133d3565b6133cd60018661599f565b60208c01525b5050505050806133e29061594b565b9050613342565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b60408051818152606081810183529160208201818036833701905050905060006002612fd8565b61343e81612e18565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611ef68383604051806060016040528060278152602001615d3a602791396138f8565b60006134ef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166139d39092919063ffffffff16565b80519091501561072d578080602001905181019061350d9190615bdd565b61072d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610657565b600080600061357f8760a0015185101590565b1561359d5760405163b2094b5960e01b815260040160405180910390fd5b865185126135c3578651604051632185509b60e21b815261065791908790600401614ea2565b60006135d0888887613641565b90506135de888289896139e2565b919550935091506135f48882898988878b613b36565b509450945094915050565b6000611f8282600019615c25565b600082613622670de0b6b3a764000084615988565b611ef691906159c8565b6000670de0b6b3a76400006136228484615988565b61366c6040518060800160405280600081526020016000815260200160008152602001600081525090565b60a084015182106136905760405163b2094b5960e01b815260040160405180910390fd5b6000828560a001516136a2919061599f565b90506136ae8582613bc8565b825260208501516136c0908590613c29565b6020830152845115806136d557506020820151155b156136fc578451602083015160405163b1c4aefb60e01b8152610657929190600401614ea2565b61371a85600001518661010001518460200151856000015185613c60565b604083015260c085015161372e9082613ce1565b6060830152509392505050565b600081831161374a5781611ef6565b5090919050565b6000806000905060006001846020015161376b919061599f565b90505b8082146127e257600060026137838385615938565b61378e906001615938565b61379891906159c8565b905060006137ab86886000015184613d1a565b12156137c3576137bc60018261599f565b91506137c7565b8092505b5061376e565b600081831061374a5781611ef6565b6020810151815111806137fa5750670de0b6b3a76400008160800151115b156107f757805160208201516080830151604051632cc06bc160e21b81526106579392919060040161509e565b60008115801561383a5750604083015115155b1561384a57506040820151611f82565b602083015183511161387a576020830151835160029161386991615938565b61387391906159c8565b9050611f82565b604051637d388ed960e11b815260040160405180910390fd5b600080808080806138b189896138a88a615c55565b8d9291906139e2565b919c909b50909950975050505050505050565b60008284111580156138f057506138ec836138e784670de0b6b3a764000061599f565b613e12565b8410155b949350505050565b606061390384611a3c565b61395e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610657565b600080856001600160a01b0316856040516139799190615c13565b600060405180830381855af49150503d80600081146139b4576040519150601f19603f3d011682016040523d82523d6000602084013e6139b9565b606091505b50915091506139c9828286613e32565b9695505050505050565b60606138f08484600085613e6b565b600080600080613a058860000151886020015189600001518a6040015189613f9a565b90506000613a1b613a168784614052565b6135ff565b60608901519091506000871315613a8a576000613a388483614052565b9050670de0b6b3a7640000811215613a665760405163329e322960e21b815260048101829052602401610657565b613a82613a7b83670de0b6b3a7640000615c71565b8490614081565b915050613ab7565b613ab481613aa081670de0b6b3a7640000615c71565b613aaa9085615c25565b613a169190615c98565b90505b60006064613ac88c60e00151612ff5565b613ad29084615c25565b613adc9190615c98565b90506000613aea8385615c71565b905060008112613b0357613afe8a8261409f565b613b0d565b613b0d8a826140cc565b9750613b198a8461409f565b9650613b258a8361409f565b955050505050509450945094915050565b6000818860a00151613b48919061599f565b8851909150613b5790866140f9565b8852613b71613b668486615a8a565b60208a0151906140f9565b602089018190528851613b9691613b89908990613c29565b895160408b015185614140565b6101008901819052600003613bbe57604051635534d70f60e11b815260040160405180910390fd5b5050505050505050565b6000613bd382612ff5565b613bea613be56201518061016d615988565b612ff5565b8460800151613bf99190615c25565b613c039190615c98565b905060008113611f8257604051630e520c3b60e11b815260048101829052602401610657565b60008060008312613c3b576001613c3f565b6000195b9050613c56613be585613c5186614193565b61362c565b6138f09082615c25565b600080613c6d8684613ce1565b9050670de0b6b3a7640000811215613c9b5760405163329e322960e21b815260048101829052602401610657565b6000613cb1613caa878a615a8a565b8990614052565b90506000613cbe826141a5565b9050613cca8187614052565b613cd49084615c71565b9998505050505050505050565b600080613cf36201518061016d615988565b613cfd8486615988565b613d0791906159c8565b90506138f0613d1582612ff5565b6141f8565b600080828560200151613d2d9190615c71565b90506000613d3b8585615a8a565b9050600082138015613d4d5750600081135b613d8e5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b6044820152606401610657565b6000613dbc613d9d8484615c25565b6020890151613dac9089615a8a565b613db69088615c25565b90614052565b90506000613dd2613dcd8486614052565b61460d565b8851909150600090613ded90670de0b6b3a764000090614052565b9050613e0381613dfd8486615c71565b90614081565b8960400151613cd49190615c71565b600080613e1f8385615988565b670de0b6b3a76400009004949350505050565b60608315613e41575081611ef6565b825115613e515782518084602001fd5b8160405162461bcd60e51b81526004016106579190615cc6565b606082471015613ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610657565b613ed585611a3c565b613f215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610657565b600080866001600160a01b03168587604051613f3d9190615c13565b60006040518083038185875af1925050503d8060008114613f7a576040519150601f19603f3d011682016040523d82523d6000602084013e613f7f565b606091505b5091509150613f8f828286613e32565b979650505050505050565b600080613fa787846140f9565b90506000613fbf613fb8888a615a8a565b8390614052565b9050670d529ae9e8600000811315613ff65780670d529ae9e8600000604051637e34684f60e11b8152600401610657929190614ea2565b6000614001826141a5565b90508561400e8289614052565b6140189190615a8a565b9350670de0b6b3a76400008412156140465760405163329e322960e21b815260048101859052602401610657565b50505095945050505050565b600080614067670de0b6b3a764000085615c25565b9050828181614078576140786159b2565b05949350505050565b60008061408e8385615c25565b9050670de0b6b3a764000081614078565b600080600083126140b15760016140b5565b6000195b9050613c56613be5856140c786614193565b61360d565b600080600083126140de5760016140e2565b6000195b9050613c56613be5856140f486614193565b61469e565b6000818312156141365760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b6044820152606401610657565b611ef68284615c71565b600080614151878787876000613f9a565b905060006141616125808361460d565b9050836141736201518061016d615988565b61417d9083615988565b61418791906159c8565b98975050505050505050565b6000808213612fb157611f7b82615c55565b6000670de0b6b3a764000082036141cf5760405163a9c8b14d60e01b815260040160405180910390fd5b60006141ed6141e684670de0b6b3a7640000615c71565b8490614052565b9050611ef68161460d565b6000680238fd42c5cf03ffff19821215801561421d575068070c1cc73b00c800008213155b61425c5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610657565b600082121561429457614271826000036141f8565b6a0c097ce7bc90715b34b9f160241b8161428d5761428d6159b2565b0592915050565b60006806f05b59d3b200000083126142d257506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b614308565b6803782dace9d9000000831261430457506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380614308565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126143585768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412614394576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b1880000084126143ce57682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412614408576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac6200000841261444157680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d63100000841261447a5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b188000084126144b3576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126144ec5768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080821361464e5760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610657565b670c7d713b49da00008213801561466c5750670f43fc2c04ee000082125b1561469057670de0b6b3a7640000614683836146ca565b8161428d5761428d6159b2565b611f82826147e9565b919050565b6000826001816146b6670de0b6b3a764000086615988565b6146c09190615938565b613622919061599f565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028161470b5761470b6159b2565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121561482a57614821826a0c097ce7bc90715b34b9f160241b8161481b5761481b6159b2565b056147e9565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126148755772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b83126148ac576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff008400083126148f4576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a700831261492f576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf850831261496657693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e2831261499d57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126149d25768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb4174612111083126149fd57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312614a32576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312614a67576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312614a9b576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312614acf576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d631000008086030281614af857614af86159b2565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060600160405280614c1760405180610120016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200160008152602001600081525090565b6040518060600160405280614c3e614b8c565b8152602001614c4b614bb4565b8152602001614c896040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b905290565b6001600160a01b03811681146107f757600080fd5b803561469981614c8e565b80151581146107f757600080fd5b600080600060608486031215614cd157600080fd5b8335614cdc81614c8e565b92506020840135614cec81614cae565b91506040840135614cfc81614cae565b809150509250925092565b600060208284031215614d1957600080fd5b8135611ef681614c8e565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715614d5d57614d5d614d24565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614d8b57614d8b614d24565b604052919050565b600060c08284031215614da557600080fd5b60405160c081016001600160401b0381118282101715614dc757614dc7614d24565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b60008083601f840112614e1e57600080fd5b5081356001600160401b03811115614e3557600080fd5b6020830191508360208260051b8501011115614e5057600080fd5b9250929050565b600080600060408486031215614e6c57600080fd5b83356001600160401b03811115614e8257600080fd5b614e8e86828701614e0c565b909790965060209590950135949350505050565b918252602082015260400190565b600060208284031215614ec257600080fd5b5035919050565b600082601f830112614eda57600080fd5b81356001600160401b03811115614ef357614ef3614d24565b614f06601f8201601f1916602001614d63565b818152846020838601011115614f1b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614f4b57600080fd5b8235614f5681614c8e565b915060208301356001600160401b03811115614f7157600080fd5b614f7d85828601614ec9565b9150509250929050565b805182526020810151602083015260408101516040830152606081015160608301525050565b60808101611f828284614f87565b805180518352602081015160208401526040810151604084015260018060a01b0360608201511660608401526080810151608084015260a081015160a084015260c081015160c084015260e081015160e084015261010080820151818501525050602081015161012083015260408101516101408301525050565b6101608101611f828284614fbb565b6001600160a01b0391909116815260200190565b60008060006060848603121561506e57600080fd5b505081359360208301359350604090920135919050565b6000610100828403121561509857600080fd5b50919050565b9283526020830191909152604082015260600190565b600060c0828403121561509857600080fd5b600060c082840312156150d857600080fd5b611ef683836150b4565b600080602083850312156150f557600080fd5b82356001600160401b0381111561510b57600080fd5b61511785828601614e0c565b90969095509350505050565b6000806040838503121561513657600080fd5b82356001600160401b0381111561514c57600080fd5b615158858286016150b4565b95602094909401359450505050565b6000806040838503121561517a57600080fd5b823561518581614c8e565b946020939093013593505050565b602080825282518282018190526000919060409081850190868401855b828110156151de57815180516001600160a01b031685528601518685015292840192908501906001016151b0565b5091979650505050505050565b6151f6828251614f87565b60208101516152086080840182614fbb565b5060409081015180516101e08401526020810151610200840152908101516102208301526060810151610240830152608081015161026083015260a0015161028090910152565b6102a08101611f8282846151eb565b60006101a0828403121561509857600080fd5b6000806000806060858703121561528757600080fd5b843593506020850135925060408501356001600160401b03808211156152ac57600080fd5b818701915087601f8301126152c057600080fd5b8135818111156152cf57600080fd5b8860208285010111156152e157600080fd5b95989497505060200194505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c90820152600080516020615cda83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020615cda83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b805161469981614c8e565b600061012082840312156153b757600080fd5b6153bf614d3a565b8251815260208301516020820152604083015160408201526153e360608401615399565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b60006020828403121561543857600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b80358252602081013560208301526040810135604083015260608101356060830152608081013560808301525050565b610440810161549482896151eb565b600387106154a4576154a461543f565b866102a0830152856102c0830152846102e08301526154c7610300830185615455565b613f8f6103a0830184615455565b60e081016154e38286615455565b60a082019390935260c00152919050565b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261552057600080fd5b9190910192915050565b6000808335601e1984360301811261554157600080fd5b8301803591506001600160401b0382111561555b57600080fd5b6020019150600581901b3603821315614e5057600080fd5b60006080828403121561558557600080fd5b604051608081016001600160401b0380821183831017156155a8576155a8614d24565b8160405282935084359150600482106155c057600080fd5b9082526020840135906155d282614c8e565b81602084015260408501359150808211156155ec57600080fd5b506155f985828601614ec9565b604083015250606083013561560d81614cae565b6060919091015292915050565b600060c0823603121561562c57600080fd5b60405160c081016001600160401b03808211838310171561564f5761564f614d24565b816040528435915061566082614c8e565b818352602085013560208401526040850135915061567d82614c8e565b8160408401526060850135915061569382614c8e565b8160608401526156a560808601614ca3565b608084015260a08501359150808211156156be57600080fd5b506156cb36828601615573565b60a08301525092915050565b60006001600160401b038211156156f0576156f0614d24565b5060051b60200190565b6000602080838503121561570d57600080fd5b82516001600160401b0381111561572357600080fd5b8301601f8101851361573457600080fd5b8051615747615742826156d7565b614d63565b81815260059190911b8201830190838101908783111561576657600080fd5b928401925b82841015613f8f57835161577e81614c8e565b8252928401929084019061576b565b6001600160a01b0393909316835290151560208301521515604082015260600190565b600082601f8301126157c157600080fd5b815160206157d1615742836156d7565b82815260059290921b840181019181810190868411156157f057600080fd5b8286015b8481101561580b57805183529183019183016157f4565b509695505050505050565b6000806040838503121561582957600080fd5b825160208401519092506001600160401b0381111561584757600080fd5b614f7d858286016157b0565b60006020828403121561586557600080fd5b81516001600160401b0381111561587b57600080fd5b6138f0848285016157b0565b600060a0828403121561589957600080fd5b60405160a081016001600160401b03811182821017156158bb576158bb614d24565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b634e487b7160e01b600052600160045260246000fd5b6000823560be1983360301811261552057600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115611f8257611f82615922565b60006001820161595d5761595d615922565b5060010190565b6000806040838503121561597757600080fd5b505080516020909101519092909150565b8082028115828204841417611f8257611f82615922565b81810381811115611f8257611f82615922565b634e487b7160e01b600052601260045260246000fd5b6000826159d7576159d76159b2565b500490565b60005b838110156159f75781810151838201526020016159df565b50506000910152565b60008151808452615a188160208601602086016159dc565b601f01601f19169290920160200192915050565b60018060a01b0384168152826020820152606060408201526000615a536060830184615a00565b95945050505050565b600080600060608486031215615a7157600080fd5b8351925060208401519150604084015190509250925092565b8082018281126000831280158216821582161715615aaa57615aaa615922565b505092915050565b60006001600160601b0383811680615acc57615acc6159b2565b92169190910492915050565b6001600160a01b0392831681529116602082015260400190565b600060018060a01b038087168352808616602084015284604084015260806060840152808451166080840152602084015160a08401528060408501511660c08401528060608501511660e08401528060808501511661010084015260a084015160c0610120850152805160048110615b6c57615b6c61543f565b61014085015260208101519091166101608401526040810151608061018085015290615b9c6101c0850183615a00565b9150606081015115156101a0850152508091505095945050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615bef57600080fd5b8151611ef681614cae565b6001600160a01b03929092168252602082015260400190565b600082516155208184602087016159dc565b80820260008212600160ff1b84141615615c4157615c41615922565b8181058314821517611f8257611f82615922565b6000600160ff1b8201615c6a57615c6a615922565b5060000390565b8181036000831280158383131683831282161715615c9157615c91615922565b5092915050565b600082615ca757615ca76159b2565b600160ff1b821460001984141615615cc157615cc1615922565b500590565b602081526000611ef66020830184615a0056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207e924be362f76861359f4beaf85e1678c9d701a69c2ffed50ef1c920cbdd391f64736f6c63430008110033",
1669
+ "linkReferences": {},
1670
+ "deployedLinkReferences": {}
1671
+ }