@pendle/core-v2 0.13.0-testnet → 0.14.0-testnet

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 (293) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
  10. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +2 -2
  12. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.json +89 -0
  14. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  15. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +91 -2
  16. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  17. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +91 -2
  18. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  19. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  20. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  21. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  22. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  23. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  24. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  25. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  29. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  30. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  31. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  32. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  34. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  36. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +26 -26
  39. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  41. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +4 -0
  43. package/build/artifacts/contracts/core/{SuperComposableYield → StandardizedYield}/PYIndex.sol/PYIndexLib.json +3 -3
  44. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +4 -0
  45. package/build/artifacts/contracts/core/{SuperComposableYield/SCYBase.sol/SCYBase.json → StandardizedYield/SYBase.sol/SYBase.json} +11 -11
  46. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +4 -0
  47. package/build/artifacts/contracts/core/{SuperComposableYield/SCYBaseWithRewards.sol/SCYBaseWithRewards.json → StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.json} +11 -11
  48. package/build/artifacts/contracts/core/StandardizedYield/SYUtils.sol/SYUtils.dbg.json +4 -0
  49. package/build/artifacts/contracts/core/{SuperComposableYield/SCYUtils.sol/SCYUtils.json → StandardizedYield/SYUtils.sol/SYUtils.json} +4 -4
  50. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +4 -0
  51. package/build/artifacts/contracts/core/{SuperComposableYield → StandardizedYield}/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +3 -3
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +4 -0
  53. package/build/artifacts/contracts/core/{SuperComposableYield/implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json → StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json} +17 -17
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSY.sol/Pendle3CrvAndTokenSY.dbg.json +4 -0
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSY.sol/Pendle3CrvAndTokenSY.json +1028 -0
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +4 -0
  57. package/build/artifacts/contracts/core/{SuperComposableYield/implementations/Convex/ConvexCurveLP/PendleConvexCurveLPSCY.sol/PendleConvexCurveLPSCY.json → StandardizedYield/implementations/Convex/ConvexCurveLP/PendleConvexLPSY.sol/PendleConvexLPSY.json} +47 -47
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/Pendle3CrvHelper.sol/Pendle3CrvHelper.dbg.json +4 -0
  59. package/build/artifacts/contracts/core/{SuperComposableYield → StandardizedYield}/implementations/Convex/Pendle3CrvHelper.sol/Pendle3CrvHelper.json +5 -5
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +4 -0
  61. package/build/artifacts/contracts/core/{SuperComposableYield/implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json → StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json} +13 -13
  62. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  63. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +4 -4
  65. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +4 -4
  67. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +24 -24
  69. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +28 -28
  71. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  72. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +30 -30
  73. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  74. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +34 -34
  75. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +20 -20
  77. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.json +2 -2
  79. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +20 -20
  81. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  82. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +106 -106
  83. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  84. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +18 -18
  85. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  86. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.json +1 -1
  87. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  88. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.json +1 -1
  89. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  90. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  91. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.json +3 -3
  93. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +6 -6
  95. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +4 -0
  96. package/build/artifacts/contracts/interfaces/{ISuperComposableYield.sol/ISuperComposableYield.json → IStandardizedYield.sol/IStandardizedYield.json} +5 -5
  97. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  98. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +7 -7
  99. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  100. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +116 -116
  101. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  102. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +35 -35
  103. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  104. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +12 -12
  105. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  106. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +41 -41
  107. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  108. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
  109. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  110. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +28 -28
  111. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
  112. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +4 -4
  113. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  114. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +22 -22
  115. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  116. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  117. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  118. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  119. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  120. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  121. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  122. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  123. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
  124. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol +96 -27
  125. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol +40 -12
  126. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol +24 -5
  127. package/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol +133 -0
  128. package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +33 -0
  129. package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +8 -1
  130. package/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +3 -3
  131. package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +2 -7
  132. package/contracts/core/Market/MarketMathCore.sol +50 -53
  133. package/contracts/core/Market/PendleGauge.sol +8 -8
  134. package/contracts/core/Market/PendleMarket.sol +49 -49
  135. package/contracts/core/Market/PendleMarketFactory.sol +1 -1
  136. package/contracts/core/RewardManager/RewardManager.sol +1 -1
  137. package/contracts/core/{SuperComposableYield → StandardizedYield}/PYIndex.sol +16 -16
  138. package/contracts/core/{SuperComposableYield/SCYBase.sol → StandardizedYield/SYBase.sol} +17 -17
  139. package/contracts/core/{SuperComposableYield/SCYBaseWithRewards.sol → StandardizedYield/SYBaseWithRewards.sol} +9 -9
  140. package/contracts/core/StandardizedYield/SYUtils.sol +26 -0
  141. package/contracts/core/{SuperComposableYield → StandardizedYield}/implementations/BenQi/PendleQiTokenHelper.sol +1 -1
  142. package/contracts/core/{SuperComposableYield/implementations/BenQi/PendleQiTokenSCY.sol → StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol} +10 -10
  143. package/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSY.sol +167 -0
  144. package/contracts/core/{SuperComposableYield/implementations/Convex/ConvexCurveLP/PendleConvexCurveLPSCY.sol → StandardizedYield/implementations/Convex/ConvexCurveLP/PendleConvexLPSY.sol} +51 -70
  145. package/contracts/core/{SuperComposableYield → StandardizedYield}/implementations/Convex/Pendle3CrvHelper.sol +7 -7
  146. package/contracts/core/{SuperComposableYield/implementations/PendleWstEthSCY.sol → StandardizedYield/implementations/PendleWstEthSY.sol} +5 -5
  147. package/contracts/core/YieldContracts/InterestManagerYT.sol +7 -7
  148. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +3 -3
  149. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +15 -15
  150. package/contracts/core/YieldContracts/PendleYieldToken.sol +71 -71
  151. package/contracts/core/libraries/Errors.sol +23 -21
  152. package/contracts/core/libraries/TokenHelper.sol +0 -33
  153. package/contracts/interfaces/Curve/ICrvPool.sol +2 -0
  154. package/contracts/interfaces/ILayerZeroEndpoint.sol +39 -0
  155. package/contracts/interfaces/ILayerZeroReceiver.sol +12 -0
  156. package/contracts/interfaces/IPActionAddRemoveLiq.sol +27 -27
  157. package/contracts/interfaces/IPActionMintRedeem.sol +30 -30
  158. package/contracts/interfaces/IPActionSwapPT.sol +16 -16
  159. package/contracts/interfaces/IPActionSwapPTYT.sol +2 -2
  160. package/contracts/interfaces/IPActionSwapYT.sol +16 -16
  161. package/contracts/interfaces/IPMarket.sol +14 -19
  162. package/contracts/interfaces/IPMarketSwapCallback.sol +1 -1
  163. package/contracts/interfaces/IPMsgSendEndpoint.sol +4 -2
  164. package/contracts/interfaces/IPPrincipalToken.sol +1 -1
  165. package/contracts/interfaces/IPYieldContractFactory.sol +3 -3
  166. package/contracts/interfaces/IPYieldToken.sol +7 -9
  167. package/contracts/interfaces/{ISuperComposableYield.sol → IStandardizedYield.sol} +6 -6
  168. package/contracts/offchain-helpers/MarketMathStatic.sol +116 -131
  169. package/contracts/offchain-helpers/RouterStatic.sol +80 -93
  170. package/contracts/router/ActionAddRemoveLiq.sol +99 -111
  171. package/contracts/router/ActionCallback.sol +46 -46
  172. package/contracts/router/ActionMintRedeem.sol +58 -58
  173. package/contracts/router/ActionSwapPT.sol +61 -69
  174. package/contracts/router/ActionSwapPTYT.sol +7 -7
  175. package/contracts/router/ActionSwapYT.sol +72 -79
  176. package/contracts/router/PendleRouter.sol +16 -16
  177. package/contracts/router/base/ActionBaseMintRedeem.sol +43 -43
  178. package/contracts/router/base/CallbackHelper.sol +20 -20
  179. package/contracts/router/base/MarketApproxLib.sol +166 -143
  180. package/contracts/router/kyberswap/KyberSwapHelper.sol +2 -2
  181. package/deployments/43113-core.json +16 -0
  182. package/deployments/43113-helper.json +3 -0
  183. package/deployments/43113-markets/benqi-market-QI-USDC-FEB-2ND.json +8 -0
  184. package/deployments/43113-markets/benqi-market-QI-WETH-DEC-1ST.json +8 -0
  185. package/deployments/43113-testenv.json +22 -0
  186. package/deployments/80001-core.json +15 -0
  187. package/deployments/80001-testenv.json +22 -0
  188. package/package.json +2 -2
  189. package/typechain-types/ActionAddRemoveLiq.ts +127 -129
  190. package/typechain-types/ActionCallback.ts +5 -5
  191. package/typechain-types/ActionMintRedeem.ts +139 -141
  192. package/typechain-types/ActionSwapPT.ts +73 -73
  193. package/typechain-types/ActionSwapPTYT.ts +2 -2
  194. package/typechain-types/ActionSwapYT.ts +73 -73
  195. package/typechain-types/IPActionAddRemoveLiq.ts +127 -129
  196. package/typechain-types/IPActionMintRedeem.ts +139 -141
  197. package/typechain-types/IPActionSwapPT.ts +73 -73
  198. package/typechain-types/IPActionSwapPTYT.ts +2 -2
  199. package/typechain-types/IPActionSwapYT.ts +73 -73
  200. package/typechain-types/IPAllAction.ts +402 -406
  201. package/typechain-types/IPMarket.ts +51 -54
  202. package/typechain-types/IPMarketSwapCallback.ts +5 -5
  203. package/typechain-types/IPPrincipalToken.ts +8 -8
  204. package/typechain-types/IPYieldContractFactory.ts +13 -13
  205. package/typechain-types/IPYieldToken.ts +17 -17
  206. package/typechain-types/IStandardizedYield.ts +895 -0
  207. package/typechain-types/ImplicitSwapfeeContract.ts +157 -0
  208. package/typechain-types/MarketMathStatic.ts +27 -27
  209. package/typechain-types/Pendle3CrvAndTokenSY.ts +1243 -0
  210. package/typechain-types/Pendle3CrvHelper.ts +13 -13
  211. package/typechain-types/PendleConvexLPSY.ts +1189 -0
  212. package/typechain-types/PendleGaugeControllerBaseUpg.ts +125 -0
  213. package/typechain-types/PendleGaugeControllerMainchainUpg.ts +125 -0
  214. package/typechain-types/PendleGaugeControllerSidechainUpg.ts +124 -0
  215. package/typechain-types/PendleMarket.ts +54 -57
  216. package/typechain-types/PendlePrincipalToken.ts +8 -8
  217. package/typechain-types/PendleQiTokenSY.ts +1166 -0
  218. package/typechain-types/PendleWstEthSY.ts +1040 -0
  219. package/typechain-types/PendleYieldContractFactory.ts +8 -8
  220. package/typechain-types/PendleYieldToken.ts +41 -44
  221. package/typechain-types/RouterStatic.ts +196 -196
  222. package/typechain-types/SYBase.ts +1001 -0
  223. package/typechain-types/SYBaseWithRewards.ts +1094 -0
  224. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +34 -34
  225. package/typechain-types/factories/ActionCallback__factory.ts +11 -11
  226. package/typechain-types/factories/ActionMintRedeem__factory.ts +38 -38
  227. package/typechain-types/factories/ActionMisc__factory.ts +1 -1
  228. package/typechain-types/factories/ActionSwapPTYT__factory.ts +3 -3
  229. package/typechain-types/factories/ActionSwapPT__factory.ts +27 -27
  230. package/typechain-types/factories/ActionSwapYT__factory.ts +21 -21
  231. package/typechain-types/factories/Errors__factory.ts +27 -27
  232. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +30 -30
  233. package/typechain-types/factories/IPActionMintRedeem__factory.ts +34 -34
  234. package/typechain-types/factories/IPActionSwapPTYT__factory.ts +2 -2
  235. package/typechain-types/factories/IPActionSwapPT__factory.ts +20 -20
  236. package/typechain-types/factories/IPActionSwapYT__factory.ts +20 -20
  237. package/typechain-types/factories/IPAllAction__factory.ts +106 -106
  238. package/typechain-types/factories/IPMarketSwapCallback__factory.ts +1 -1
  239. package/typechain-types/factories/IPMarket__factory.ts +18 -18
  240. package/typechain-types/factories/IPPrincipalToken__factory.ts +1 -1
  241. package/typechain-types/factories/IPYieldContractFactory__factory.ts +3 -3
  242. package/typechain-types/factories/IPYieldToken__factory.ts +6 -6
  243. package/typechain-types/factories/IStandardizedYield__factory.ts +658 -0
  244. package/typechain-types/factories/ImplicitSwapfeeContract__factory.ts +247 -0
  245. package/typechain-types/factories/MarketMathStatic__factory.ts +6 -6
  246. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  247. package/typechain-types/factories/Pendle3CrvAndTokenSY__factory.ts +1124 -0
  248. package/typechain-types/factories/Pendle3CrvHelper__factory.ts +3 -3
  249. package/typechain-types/factories/PendleConvexLPSY__factory.ts +963 -0
  250. package/typechain-types/factories/PendleFeeDistributorFactory__factory.ts +1 -1
  251. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  252. package/typechain-types/factories/PendleGaugeControllerBaseUpg__factory.ts +89 -0
  253. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +90 -1
  254. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +90 -1
  255. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  256. package/typechain-types/factories/PendleMarket__factory.ts +21 -21
  257. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  258. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  259. package/typechain-types/factories/PendlePrincipalToken__factory.ts +7 -7
  260. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  261. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1095 -0
  262. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  263. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  264. package/typechain-types/factories/PendleWstEthSY__factory.ts +924 -0
  265. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +3 -3
  266. package/typechain-types/factories/PendleYieldToken__factory.ts +27 -27
  267. package/typechain-types/factories/RouterStatic__factory.ts +57 -57
  268. package/typechain-types/factories/SYBaseWithRewards__factory.ts +867 -0
  269. package/typechain-types/factories/SYBase__factory.ts +795 -0
  270. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  271. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  272. package/typechain-types/hardhat.d.ts +33 -42
  273. package/typechain-types/index.ts +14 -16
  274. package/build/artifacts/contracts/core/SuperComposableYield/PYIndex.sol/PYIndexLib.dbg.json +0 -4
  275. package/build/artifacts/contracts/core/SuperComposableYield/SCYBase.sol/SCYBase.dbg.json +0 -4
  276. package/build/artifacts/contracts/core/SuperComposableYield/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +0 -4
  277. package/build/artifacts/contracts/core/SuperComposableYield/SCYUtils.sol/SCYUtils.dbg.json +0 -4
  278. package/build/artifacts/contracts/core/SuperComposableYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +0 -4
  279. package/build/artifacts/contracts/core/SuperComposableYield/implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +0 -4
  280. package/build/artifacts/contracts/core/SuperComposableYield/implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSCY.sol/Pendle3CrvAndTokenSCY.dbg.json +0 -4
  281. package/build/artifacts/contracts/core/SuperComposableYield/implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSCY.sol/Pendle3CrvAndTokenSCY.json +0 -1030
  282. package/build/artifacts/contracts/core/SuperComposableYield/implementations/Convex/ConvexCurveLP/PendleConvexCurveLP2PoolSCY.sol/PendleConvexCurveLP2PoolSCY.dbg.json +0 -4
  283. package/build/artifacts/contracts/core/SuperComposableYield/implementations/Convex/ConvexCurveLP/PendleConvexCurveLP2PoolSCY.sol/PendleConvexCurveLP2PoolSCY.json +0 -1025
  284. package/build/artifacts/contracts/core/SuperComposableYield/implementations/Convex/ConvexCurveLP/PendleConvexCurveLPSCY.sol/PendleConvexCurveLPSCY.dbg.json +0 -4
  285. package/build/artifacts/contracts/core/SuperComposableYield/implementations/Convex/Pendle3CrvHelper.sol/Pendle3CrvHelper.dbg.json +0 -4
  286. package/build/artifacts/contracts/core/SuperComposableYield/implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +0 -4
  287. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +0 -4
  288. package/contracts/core/SuperComposableYield/SCYUtils.sol +0 -34
  289. package/contracts/core/SuperComposableYield/implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSCY.sol +0 -135
  290. package/contracts/core/SuperComposableYield/implementations/Convex/ConvexCurveLP/PendleConvexCurveLP2PoolSCY.sol +0 -96
  291. package/contracts/interfaces/ICelerMessageBus.sol +0 -28
  292. package/contracts/interfaces/ICelerMessageReceiverApp.sol +0 -25
  293. package/deployments/kovan.json +0 -31
@@ -156,16 +156,16 @@ const _abi = [
156
156
  inputs: [
157
157
  {
158
158
  internalType: "uint256",
159
- name: "actualScyOut",
159
+ name: "actualSyOut",
160
160
  type: "uint256",
161
161
  },
162
162
  {
163
163
  internalType: "uint256",
164
- name: "requiredScyOut",
164
+ name: "requiredSyOut",
165
165
  type: "uint256",
166
166
  },
167
167
  ],
168
- name: "RouterInsufficientScyOut",
168
+ name: "RouterInsufficientSyOut",
169
169
  type: "error",
170
170
  },
171
171
  {
@@ -208,7 +208,7 @@ const _abi = [
208
208
  {
209
209
  indexed: false,
210
210
  internalType: "uint256",
211
- name: "netScyUsed",
211
+ name: "netSyUsed",
212
212
  type: "uint256",
213
213
  },
214
214
  {
@@ -224,7 +224,7 @@ const _abi = [
224
224
  type: "uint256",
225
225
  },
226
226
  ],
227
- name: "AddLiquidityDualScyAndPt",
227
+ name: "AddLiquidityDualSyAndPt",
228
228
  type: "event",
229
229
  },
230
230
  {
@@ -337,7 +337,7 @@ const _abi = [
337
337
  {
338
338
  indexed: false,
339
339
  internalType: "uint256",
340
- name: "netScyIn",
340
+ name: "netSyIn",
341
341
  type: "uint256",
342
342
  },
343
343
  {
@@ -347,7 +347,7 @@ const _abi = [
347
347
  type: "uint256",
348
348
  },
349
349
  ],
350
- name: "AddLiquiditySingleScy",
350
+ name: "AddLiquiditySingleSy",
351
351
  type: "event",
352
352
  },
353
353
  {
@@ -429,11 +429,11 @@ const _abi = [
429
429
  {
430
430
  indexed: false,
431
431
  internalType: "uint256",
432
- name: "netScyOut",
432
+ name: "netSyOut",
433
433
  type: "uint256",
434
434
  },
435
435
  ],
436
- name: "RemoveLiquidityDualScyAndPt",
436
+ name: "RemoveLiquidityDualSyAndPt",
437
437
  type: "event",
438
438
  },
439
439
  {
@@ -552,11 +552,11 @@ const _abi = [
552
552
  {
553
553
  indexed: false,
554
554
  internalType: "uint256",
555
- name: "netScyOut",
555
+ name: "netSyOut",
556
556
  type: "uint256",
557
557
  },
558
558
  ],
559
- name: "RemoveLiquiditySingleScy",
559
+ name: "RemoveLiquiditySingleSy",
560
560
  type: "event",
561
561
  },
562
562
  {
@@ -616,7 +616,7 @@ const _abi = [
616
616
  },
617
617
  {
618
618
  internalType: "uint256",
619
- name: "netScyDesired",
619
+ name: "netSyDesired",
620
620
  type: "uint256",
621
621
  },
622
622
  {
@@ -630,7 +630,7 @@ const _abi = [
630
630
  type: "uint256",
631
631
  },
632
632
  ],
633
- name: "addLiquidityDualScyAndPt",
633
+ name: "addLiquidityDualSyAndPt",
634
634
  outputs: [
635
635
  {
636
636
  internalType: "uint256",
@@ -639,7 +639,7 @@ const _abi = [
639
639
  },
640
640
  {
641
641
  internalType: "uint256",
642
- name: "netScyUsed",
642
+ name: "netSyUsed",
643
643
  type: "uint256",
644
644
  },
645
645
  {
@@ -756,7 +756,7 @@ const _abi = [
756
756
  },
757
757
  ],
758
758
  internalType: "struct ApproxParams",
759
- name: "guessPtSwapToScy",
759
+ name: "guessPtSwapToSy",
760
760
  type: "tuple",
761
761
  },
762
762
  ],
@@ -769,7 +769,7 @@ const _abi = [
769
769
  },
770
770
  {
771
771
  internalType: "uint256",
772
- name: "netScyFee",
772
+ name: "netSyFee",
773
773
  type: "uint256",
774
774
  },
775
775
  ],
@@ -790,7 +790,7 @@ const _abi = [
790
790
  },
791
791
  {
792
792
  internalType: "uint256",
793
- name: "netScyIn",
793
+ name: "netSyIn",
794
794
  type: "uint256",
795
795
  },
796
796
  {
@@ -827,11 +827,11 @@ const _abi = [
827
827
  },
828
828
  ],
829
829
  internalType: "struct ApproxParams",
830
- name: "guessPtReceivedFromScy",
830
+ name: "guessPtReceivedFromSy",
831
831
  type: "tuple",
832
832
  },
833
833
  ],
834
- name: "addLiquiditySingleScy",
834
+ name: "addLiquiditySingleSy",
835
835
  outputs: [
836
836
  {
837
837
  internalType: "uint256",
@@ -840,7 +840,7 @@ const _abi = [
840
840
  },
841
841
  {
842
842
  internalType: "uint256",
843
- name: "netScyFee",
843
+ name: "netSyFee",
844
844
  type: "uint256",
845
845
  },
846
846
  ],
@@ -893,7 +893,7 @@ const _abi = [
893
893
  },
894
894
  ],
895
895
  internalType: "struct ApproxParams",
896
- name: "guessPtReceivedFromScy",
896
+ name: "guessPtReceivedFromSy",
897
897
  type: "tuple",
898
898
  },
899
899
  {
@@ -910,7 +910,7 @@ const _abi = [
910
910
  },
911
911
  {
912
912
  internalType: "address",
913
- name: "tokenMintScy",
913
+ name: "tokenMintSy",
914
914
  type: "address",
915
915
  },
916
916
  {
@@ -933,7 +933,7 @@ const _abi = [
933
933
  },
934
934
  {
935
935
  internalType: "uint256",
936
- name: "netScyFee",
936
+ name: "netSyFee",
937
937
  type: "uint256",
938
938
  },
939
939
  ],
@@ -972,7 +972,7 @@ const _abi = [
972
972
  },
973
973
  {
974
974
  internalType: "uint256",
975
- name: "minScyOut",
975
+ name: "minSyOut",
976
976
  type: "uint256",
977
977
  },
978
978
  {
@@ -981,11 +981,11 @@ const _abi = [
981
981
  type: "uint256",
982
982
  },
983
983
  ],
984
- name: "removeLiquidityDualScyAndPt",
984
+ name: "removeLiquidityDualSyAndPt",
985
985
  outputs: [
986
986
  {
987
987
  internalType: "uint256",
988
- name: "netScyOut",
988
+ name: "netSyOut",
989
989
  type: "uint256",
990
990
  },
991
991
  {
@@ -1110,7 +1110,7 @@ const _abi = [
1110
1110
  },
1111
1111
  {
1112
1112
  internalType: "uint256",
1113
- name: "netScyFee",
1113
+ name: "netSyFee",
1114
1114
  type: "uint256",
1115
1115
  },
1116
1116
  ],
@@ -1136,20 +1136,20 @@ const _abi = [
1136
1136
  },
1137
1137
  {
1138
1138
  internalType: "uint256",
1139
- name: "minScyOut",
1139
+ name: "minSyOut",
1140
1140
  type: "uint256",
1141
1141
  },
1142
1142
  ],
1143
- name: "removeLiquiditySingleScy",
1143
+ name: "removeLiquiditySingleSy",
1144
1144
  outputs: [
1145
1145
  {
1146
1146
  internalType: "uint256",
1147
- name: "netScyOut",
1147
+ name: "netSyOut",
1148
1148
  type: "uint256",
1149
1149
  },
1150
1150
  {
1151
1151
  internalType: "uint256",
1152
- name: "netScyFee",
1152
+ name: "netSyFee",
1153
1153
  type: "uint256",
1154
1154
  },
1155
1155
  ],
@@ -1187,7 +1187,7 @@ const _abi = [
1187
1187
  },
1188
1188
  {
1189
1189
  internalType: "address",
1190
- name: "tokenRedeemScy",
1190
+ name: "tokenRedeemSy",
1191
1191
  type: "address",
1192
1192
  },
1193
1193
  {
@@ -1210,7 +1210,7 @@ const _abi = [
1210
1210
  },
1211
1211
  {
1212
1212
  internalType: "uint256",
1213
- name: "netScyFee",
1213
+ name: "netSyFee",
1214
1214
  type: "uint256",
1215
1215
  },
1216
1216
  ],
@@ -1220,7 +1220,7 @@ const _abi = [
1220
1220
  ];
1221
1221
 
1222
1222
  const _bytecode =
1223
- "0x60a06040523480156200001157600080fd5b5060405162004c2a38038062004c2a833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051614b89620000a16000396000818160a301528181612eab0152612f780152614b896000f3fe60806040526004361061008c5760003560e01c80631ef6f327146100915780631f8dfdf0146100db578063226c71f6146101095780633af1f32914610138578063694ab559146101585780637307a7a5146101785780639b4def431461018b578063eda0b715146101ab578063f17b8c4a146101cb578063f3a411b8146101de578063febde725146101fe575b600080fd5b34801561009d57600080fd5b506100c57f000000000000000000000000000000000000000000000000000000000000000081565b6040516100d291906141a8565b60405180910390f35b3480156100e757600080fd5b506100fb6100f63660046141e6565b61021e565b6040516100d2929190614243565b34801561011557600080fd5b50610129610124366004614251565b61031c565b6040516100d2939291906142a2565b34801561014457600080fd5b506100fb6101533660046141e6565b61054d565b34801561016457600080fd5b506100fb6101733660046141e6565b6107fe565b6101296101863660046142b8565b610ad0565b34801561019757600080fd5b506100fb6101a636600461431d565b610ea8565b3480156101b757600080fd5b506100fb6101c6366004614251565b610f34565b6100fb6101d9366004614375565b611070565b3480156101ea57600080fd5b506100fb6101f93660046143f4565b611177565b34801561020a57600080fd5b506100fb610219366004614459565b611379565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610262573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028691906144c4565b9193509091506102a390506001600160a01b038316338a8a61148e565b6102b18989838a8a8a6114ec565b8094508195505050886001600160a01b0316886001600160a01b0316336001600160a01b03167f6420656ef082773859a20b33d5e3ccc7f1a226c9477622c5c819c8cc097823388a88604051610308929190614243565b60405180910390a450509550959350505050565b6000806000806000886001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610362573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038691906144c4565b50915091506000896001600160a01b0316632778c3346040518163ffffffff1660e01b815260040161012060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f0919061455b565b90506103fe818a8a426116c6565b919850965094505086861015610434578587604051636a1dbf1b60e01b815260040161042b929190614243565b60405180910390fd5b6104496001600160a01b038416338c8861148e565b61045e6001600160a01b038316338c8761148e565b604051630ab714fb60e11b81526001600160a01b038b169063156e29f69061048e908e90899089906004016145dd565b6060604051808303816000875af11580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d191906145fe565b5090965050868610156104e6576104e661462c565b8a6001600160a01b03168a6001600160a01b0316336001600160a01b03167f0db691c6956ae614f5038616009ba884fade551caf94d16b641a94c578841d6088888b604051610537939291906142a2565b60405180910390a4505050955095509592505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b591906144c4565b92509250506000886001600160a01b0316632778c3346040518163ffffffff1660e01b815260040161012060405180830381865afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f919061455b565b90506000610653610638846001600160a01b0316611731565b8a42610649368c90038c018c614642565b869392919061179d565b5090915061066e90506001600160a01b038516338c8c61148e565b604080516000808252602082019283905263d8e763c160e01b9092526001600160a01b038c169063d8e763c1906106ac908e90869060248101614701565b60408051808303816000875af11580156106ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ee9190614728565b965090506001600160a01b038b1663156e29f68d8361070d868f614762565b6040518463ffffffff1660e01b815260040161072b939291906145dd565b6060604051808303816000875af115801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076e91906145fe565b509097505088871015610798578689604051636a1dbf1b60e01b815260040161042b929190614243565b8b6001600160a01b03168b6001600160a01b0316336001600160a01b03167fc87b85efc5055ef177e0092af0d4e624fff4b1d57db748857f65e4b7e4a28a368d8b6040516107e7929190614243565b60405180910390a450505050509550959350505050565b6000806000866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086591906144c4565b925061087f9150506001600160a01b03881633898961148e565b6000876001600160a01b0316632778c3346040518163ffffffff1660e01b815260040161012060405180830381865afa1580156108c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e4919061455b565b90506000806108f3838a6119a9565b91509150600061092961090e866001600160a01b0316611731565b844261091f368d90038d018d614642565b88939291906119e4565b509050886109378284614775565b1015610963576109478183614775565b89604051634e6ffe4760e11b815260040161042b929190614243565b8a6001600160a01b031663f6b911bc8c8e8d6040518463ffffffff1660e01b815260040161099393929190614788565b60408051808303816000875af11580156109b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d59190614728565b604080516000815260208101918290526307bb0e7160e41b9091529093506001600160a01b038d169150637bb0e71090610a16908f90859060248101614701565b60408051808303816000875af1158015610a34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a589190614728565b9650899050610a678284614775565b1015610a7557610a7561462c565b610a7f8183614775565b96508b6001600160a01b03168b6001600160a01b0316336001600160a01b03167fac97b87f5422fa3beec99bff8f336310d8ebc7d33d909b7d534cd7c72f61e8718d8b6040516107e7929190614243565b6000806000806000896001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3a91906144c4565b50915091506000826001600160a01b031663b8f82b268b8b6040518363ffffffff1660e01b8152600401610b6f9291906147ac565b602060405180830381865afa158015610b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb091906147c5565b90506000808c6001600160a01b0316632778c3346040518163ffffffff1660e01b815260040161012060405180830381865afa158015610bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c18919061455b565b9050610c2681848c426116c6565b919a509097509250505087871015610c55578688604051636a1dbf1b60e01b815260040161042b929190614243565b610c6a6001600160a01b038416338e8861148e565b610c7e82610c78838d6147de565b90611ae7565b95506001600160a01b038b16610d2957610c998b338c611b11565b836001600160a01b03166320e8c565878e8e8a866040518663ffffffff1660e01b8152600401610ccc94939291906147f5565b60206040518083038185885af1158015610cea573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d0f91906147c5565b50610d248b33610d1f898e614762565b611b7d565b610db5565b610d348b3388611b11565b610d3e8b85611c41565b6040516320e8c56560e01b81526001600160a01b038516906320e8c56590610d70908f908f908b9087906004016147f5565b6020604051808303816000875af1158015610d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db391906147c5565b505b8b6001600160a01b031663156e29f68e83886040518463ffffffff1660e01b8152600401610de5939291906145dd565b6060604051808303816000875af1158015610e04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2891906145fe565b509097505087871015610e3d57610e3d61462c565b604080516001600160a01b038d81168252602082018d905291810187905260608101899052818f16918e169033907f7f646a534401967ac0913451efea28d9e170ffc164efa98e3957cde363c0245f9060800160405180910390a45050505096509650969350505050565b600080610ec06001600160a01b03861633878761148e565b610ecc86868686611cf9565b8092508193505050856001600160a01b0316856001600160a01b0316336001600160a01b03167fbc3c499a1de793e234d84bc867d7a02572ffafdb65cb029004f3df0db19e1e108786604051610f23929190614243565b60405180910390a494509492505050565b600080610f4c6001600160a01b03871633888861148e565b604051633dae446f60e21b81526001600160a01b0387169063f6b911bc90610f7c908a9081908a90600401614788565b60408051808303816000875af1158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190614728565b909250905083821015610fe857818460405163cb95352560e01b815260040161042b929190614243565b8281101561100d578083604051634e6ffe4760e11b815260040161042b929190614243565b866001600160a01b0316866001600160a01b0316336001600160a01b03167f5679d08d637341ee04c1fc1dd03601a3a56736e677507260a2ade55bad840b7d88858760405161105e939291906142a2565b60405180910390a49550959350505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d891906144c4565b925050915060006110ec8984600189611db4565b90506110fc8a8a84848c8c6114ec565b909550935061110e602087018761481e565b6001600160a01b0316896001600160a01b0316336001600160a01b03167ff83776e5b667a2b471f92ddfd482749c61b5328b832d375097638c2c08818f3b8d8a602001358a604051611162939291906145dd565b60405180910390a45050509550959350505050565b6000806000876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156111ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111de91906144c4565b509091506111f990506001600160a01b038916338a8a61148e565b604051633dae446f60e21b81526000906001600160a01b038a169063f6b911bc9061122c9085908e908d90600401614788565b60408051808303816000875af115801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e9190614728565b60405163769f8e5d60e01b81529094509091506001600160a01b0383169063769f8e5d906112a9908d9085908c908c9060019060040161483b565b6020604051808303816000875af11580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906147c5565b935084831015611313578285604051634e6ffe4760e11b815260040161042b929190614243565b60408051898152602081018590526001600160a01b03898116828401526060820187905291518c8316928c169133917f0eed48ee59ddaf7384d334727280158b7a75d5e84baa5614200f0506f08bb4fb9181900360800190a45050965096945050505050565b6000806000856001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156113bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e091906144c4565b509091506113fb90506001600160a01b03871633888861148e565b600061140a8288886001611cf9565b9350905061141c888383886000611f52565b935061142b602086018661481e565b6001600160a01b0316876001600160a01b0316336001600160a01b03167f3fff08e8137afe866dce7ced13ddc12d684db61b80b0ac5cb9e54961c9dd8a218b8a8960405161147b939291906145dd565b60405180910390a4505094509492505050565b6114e6846323b872dd60e01b8585856040516024016114af93929190614788565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612142565b50505050565b6000806000876001600160a01b0316632778c3346040518163ffffffff1660e01b815260040161012060405180830381865afa158015611530573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611554919061455b565b9050600061158861156d896001600160a01b0316611731565b884261157e368a90038a018a614642565b8693929190612214565b505060408051600080825260208201928390526307bb0e7160e41b909252919250906001600160a01b038b1690637bb0e710906115cc908d90869060248101614701565b60408051808303816000875af11580156115ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160e9190614728565b945090506001600160a01b038a1663156e29f68c61162c848c614762565b856040518463ffffffff1660e01b815260040161164b939291906145dd565b6060604051808303816000875af115801561166a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168e91906145fe565b5090955050868510156116b8578487604051636a1dbf1b60e01b815260040161042b929190614243565b505050965096945050505050565b6000806000806000806000806116ee8c6116df8d6123d9565b6116e88d6123d9565b8c6123f3565b93509350935093506116ff846125ab565b975061170a836125ab565b9650611715826125ab565b9550611720816125ab565b945050505050945094509450949050565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611773573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179791906147c5565b92915050565b60008060008060405180608001604052808a81526020018981526020018881526020018781525090508060000151604001516000036117ee5760405162461bcd60e51b815260040161042b9061486f565b602081015160608201518251600092611806926125ba565b9050600061182f87600061182a866040015161182587602001516126b4565b6126cb565b6126e1565b9050611843816020015184604001516126cb565b602082015260005b81606001518110156119845760008061186e8486886000015160000151866127ac565b915091508161188257602084015250611974565b6000806118998860000151888a6020015186612814565b915091506000806000856118b48c60000151600001516125ab565b6118be9190614775565b90506000868c604001516118d29190614762565b9050600085876118e98f60000151602001516125ab565b6118f39190614762565b6118fd9190614762565b905061190983886147de565b945061191581836147de565b935050505061192982828a60800151612856565b156119435750929a50909850965061199e95505050505050565b80821161195c57611955856001614775565b885261196d565b611967600186614762565b60208901525b5050505050505b61197d81614897565b905061184b565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b6000806000806119c1866119bc876123d9565b61289f565b915091506119ce826125ab565b93506119d9816125ab565b925050509250929050565b604080516080810182528681526020810186905290810184905260608101839052600090819081611a168989886125ba565b90506000611a37866000611a328587600001516000015161296a565b612a07565b905060005b8160600151811015611984576000611a548383612a39565b9050600080611a6d876000015187896020015186612aa5565b9150915086604001518211611ab85782855260408701516080860151600091611a9891859190612ac6565b90508015611ab25750919750909550611add945050505050565b50611ac9565b611ac3600184614762565b60208601525b50505080611ad690614897565b9050611a3c565b9550959350505050565b6000816001611af68286614775565b611b009190614762565b611b0a91906148c6565b9392505050565b6001600160a01b038316611b6257803414611b5d5760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b604482015260640161042b565b505050565b8015611b5d57611b5d6001600160a01b03841683308461148e565b80600003611b8a57505050565b6001600160a01b038316611c2d576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611be5576040519150601f19603f3d011682016040523d82523d6000602084013e611bea565b606091505b50509050806114e65760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b604482015260640161042b565b611b5d6001600160a01b0384168383612af4565b6001600160a01b038216611c53575050565b611c6560026001600160601b036148da565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa158015611cbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce291906147c5565b1015611cf557611cf58282600019612b13565b5050565b600080846001600160a01b0316632f13b60c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5e9190614900565b15611d7557611d6e868686612c27565b9150611d86565b611d80868686612d8b565b90925090505b82821015611dab57818360405163cb95352560e01b815260040161042b929190614243565b94509492505050565b6000611dd1611dc6602084018461481e565b338460200135611b11565b611de1606083016040840161481e565b6001600160a01b0316611df7602084018461481e565b6001600160a01b031614611e6157611e61611e15602084018461481e565b6020840135611e276060860186614922565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ea592505050565b611e7a611e74606084016040850161481e565b85611c41565b6000611e94611e8f606085016040860161481e565b612f9f565b9050600080611ea9606086016040870161481e565b6001600160a01b031614611ebe576000611ec0565b815b90506001600160a01b0386166320e8c5658289611ee36060890160408a0161481e565b868a6040518663ffffffff1660e01b8152600401611f0494939291906147f5565b60206040518083038185885af1158015611f22573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f4791906147c5565b979650505050505050565b60008115611f6f57611f6f6001600160a01b03861633878761148e565b611f7c602084018461481e565b6001600160a01b0316611f95606085016040860161481e565b6001600160a01b031603612035576001600160a01b03851663769f8e5d8786611fc4606088016040890161481e565b876020013560016040518663ffffffff1660e01b8152600401611feb95949392919061483b565b6020604051808303816000875af115801561200a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202e91906147c5565b9050612139565b60006001600160a01b03861663769f8e5d30876120586060890160408a0161481e565b6001806040518663ffffffff1660e01b815260040161207b95949392919061483b565b6020604051808303816000875af115801561209a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120be91906147c5565b90506120e16120d3606086016040870161481e565b82611e276060880188614922565b6120f1611e8f602086018661481e565b915083602001358210156121205781846020013560405163c5b5576d60e01b815260040161042b929190614243565b612137612130602086018661481e565b8884611b7d565b505b95945050505050565b6000612197826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130299092919063ffffffff16565b805190915015611b5d57808060200190518101906121b59190614900565b611b5d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161042b565b60008060008060405180608001604052808a81526020018981526020018881526020018781525090508060000151604001516000036122655760405162461bcd60e51b815260040161042b9061486f565b60208101516060820151825160009261227d926125ba565b90506000612299876000611a328587600001516000015161296a565b905060005b81606001518110156119845760006122b68383612a39565b90506000806122cf876000015187896020015186612aa5565b9150915086604001518211156122f8576122ea600184614762565b6020860152506123c9915050565b6000806000848a6040015161230d9190614762565b90506000866123238c60000151600001516125ab565b61232d9190614762565b9050600085876123408d602001516125ab565b61234a9190614775565b6123549190614762565b905061236081896147de565b935061236c82846147de565b945050505061238081838960800151612856565b156123995750929950909750955061199e945050505050565b8181116123b2576123ab856001614775565b87526123c3565b6123bd600186614762565b60208801525b50505050505b6123d281614897565b905061229e565b60006001600160ff1b038211156123ef57600080fd5b5090565b6000808080861580612403575085155b15612421576040516325daaec360e01b815260040160405180910390fd5b60c088015185106124455760405163b2094b5960e01b815260040160405180910390fd5b8760400151600003612492576103e861247661247161246c6124678a8c61496f565b6125ab565b613038565b6123d9565b612480919061499f565b92506103e89350869150859050612535565b87516040890151600091906124a7908961496f565b6124b191906149c6565b9050600089602001518a604001518a6124ca919061496f565b6124d491906149c6565b90508082121561250a578194508792508960400151858b602001516124f9919061496f565b61250391906149c6565b9350612532565b8094508893508960400151858b60000151612525919061496f565b61252f91906149c6565b92505b50505b8260000361255657604051631997ea8d60e31b815260040160405180910390fd5b818860200181815161256891906149f4565b90525087518190899061257c9083906149f4565b90525061258984846149f4565b8860400181815161259a91906149f4565b905250929791965094509092509050565b6000808212156123ef57600080fd5b6125e56040518060800160405280600081526020016000815260200160008152602001600081525090565b60c084015182106126095760405163b2094b5960e01b815260040160405180910390fd5b6000828560c0015161261b9190614762565b905061262785826130a8565b82526020850151612639908590613104565b60208301528451158061264e57506020820151155b15612675578451602083015160405163b1c4aefb60e01b815261042b929190600401614243565b6126938560000151866101000151846020015185600001518561313b565b604083015260a08501516126a790826131bc565b6060830152509392505050565b600060016126c1836125ab565b6117979190614762565b60008183106126da5781611b0a565b5090919050565b61271a6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b835161272690846131f0565b8152602084015161273790836126cb565b60208201819052815111806127575750670de0b6b3a76400008460800151115b1561278457835160208501516080860151604051632cc06bc160e21b815261042b939291906004016142a2565b6040808501519082015260608085015190820152608093840151938101939093525090919050565b60008060006127bb8785612a39565b90508660a0015181116127d357600192509050611dab565b60006127e887876127e3856123d9565b6131ff565b905060008112156127ff5750600092509050611dab565b5060a096909601869052506001959350505050565b6000806000806128318787612828886132f1565b8b929190613308565b9150915061283e826125ab565b9350612849816125ab565b9250505094509492505050565b6000836128748461286f85670de0b6b3a7640000614762565b61344e565b1115801561289757506128938361286f84670de0b6b3a7640000614775565b8411155b949350505050565b600080826000036128c3576040516325daaec360e01b815260040160405180910390fd5b604084015160208501516128d7908561496f565b6128e191906149c6565b60408501518551919350906128f6908561496f565b61290091906149c6565b905081158061290d575080155b1561292b57604051631997ea8d60e31b815260040160405180910390fd5b604084015161293a908461346e565b6040850152835161294b908261346e565b8452602084015161295c908361346e565b602090940193909352929050565b60008061299761299285600001518660400151876060015161298c919061499f565b906134b5565b6134d8565b905060006129b76129b0670de0b6b3a7640000846149f4565b83906138ed565b905060006129d58660200151866129ce91906149f4565b83906134b5565b905060006129e3828761499f565b90506103e86129f1826125ab565b6129fd906103e76147de565b611f4791906148c6565b61271a6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b600081158015612a4c5750604083015115155b15612a5c57506040820151611797565b6020830151835111612a8c5760208301518351600291612a7b91614775565b612a8591906148c6565b9050611797565b604051637d388ed960e11b815260040160405180910390fd5b600080600080612ab98787612828886123d9565b9150915061283e82613913565b60008284111580156128975750612ae98361286f84670de0b6b3a7640000614762565b909310159392505050565b611b5d8363a9059cbb60e01b84846040516024016114af9291906147ac565b600080846001600160a01b031663095ea7b360e01b8585604051602401612b3b9291906147ac565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612b799190614a1c565b6000604051808303816000865af19150503d8060008114612bb6576040519150601f19603f3d011682016040523d82523d6000602084013e612bbb565b606091505b5091509150818015612be5575080511580612be5575080806020019051810190612be59190614900565b612c205760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b604482015260640161042b565b5050505050565b600080836001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8c91906144c4565b925050506000846001600160a01b031663f6b911bc8784876040518463ffffffff1660e01b8152600401612cc293929190614788565b60408051808303816000875af1158015612ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d049190614728565b5060405163bcb7ea5d60e01b81529091506001600160a01b0383169063bcb7ea5d90612d349089906004016141a8565b6020604051808303816000875af1158015612d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7791906147c5565b612d819082614775565b9695505050505050565b600080600080856001600160a01b031663f6b911bc8888886040518463ffffffff1660e01b8152600401612dc193929190614788565b60408051808303816000875af1158015612ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e039190614728565b604080516000808252602082019283905263d8e763c160e01b909252929450909250906001600160a01b0388169063d8e763c190612e48908b90869060248101614701565b60408051808303816000875af1158015612e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8a9190614728565b94509050612e988184614775565b9450505050935093915050565b612ecf837f0000000000000000000000000000000000000000000000000000000000000000611c41565b60405163726d379760e11b815260009073__$802f57dc5d2627d21bbb7805eff3c348c4$__9063e4da6f2e90612f0b9085908790600401614a38565b600060405180830381865af4158015612f28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f509190810190614a5a565b9050612c20816001600160a01b03861615612f6c576000612f6e565b845b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190613925565b60006001600160a01b03821615613022576040516370a0823160e01b81526001600160a01b038316906370a0823190612fdc9030906004016141a8565b602060405180830381865afa158015612ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301d91906147c5565b611797565b4792915050565b60606128978484600085613947565b6000600382111561309957508060006130526002836148c6565b61305d906001614775565b90505b818110156130935790508060028161307881866148c6565b6130829190614775565b61308c91906148c6565b9050613060565b50919050565b81156130a3575060015b919050565b60006130b3826123d9565b6130c56124716201518061016d6147de565b84608001516130d4919061496f565b6130de91906149c6565b90506000811361179757604051630e520c3b60e11b81526004810182905260240161042b565b6000806000831261311657600161311a565b6000195b90506131316124718561312c86613913565b613a6d565b612897908261496f565b60008061314886846131bc565b9050670de0b6b3a76400008112156131765760405163329e322960e21b81526004810182905260240161042b565b600061318c613185878a6149f4565b89906138ed565b9050600061319982613a82565b90506131a581876138ed565b6131af908461499f565b9998505050505050505050565b6000806131ce6201518061016d6147de565b6131d884866147de565b6131e291906148c6565b9050612897612992826123d9565b60008183116126da5781611b0a565b600080828560200151613212919061499f565b9050600061322085856149f4565b90506000821380156132325750600081135b6132735760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b604482015260640161042b565b60006132a1613282848461496f565b602089015161329190896149f4565b61329b908861496f565b906138ed565b905060006132b76132b284866138ed565b613ad1565b88519091506000906132d290670de0b6b3a7640000906138ed565b90506132e28161298c848661499f565b89604001516131af919061499f565b60006132fc826123d9565b6117979060001961496f565b600080600061332a876000015187602001518860000151896040015188613b5d565b9050600061334061333b86846138ed565b613c0e565b606088015190915060008613156133af57600061335d84836138ed565b9050670de0b6b3a764000081121561338b5760405163329e322960e21b81526004810182905260240161042b565b6133a76133a083670de0b6b3a764000061499f565b84906134b5565b9150506133dc565b6133d9816133c581670de0b6b3a764000061499f565b6133cf908561496f565b61333b91906149c6565b90505b600060646133ed8b60e001516123d9565b6133f7908461496f565b61340191906149c6565b9050600061340f838561499f565b905060008112613428576134238982613c1c565b613432565b6134328982613c49565b965061343e8983613c1c565b9550505050505094509492505050565b60008061345b83856147de565b670de0b6b3a76400009004949350505050565b6000818312156134ab5760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b604482015260640161042b565b611b0a828461499f565b6000806134c2838561496f565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff1982121580156134fd575068070c1cc73b00c800008213155b61353c5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161042b565b600082121561357457613551826000036134d8565b6a0c097ce7bc90715b34b9f160241b8161356d5761356d6148b0565b0592915050565b60006806f05b59d3b200000083126135b257506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b6135e8565b6803782dace9d900000083126135e457506803782dace9d8ffffff19909101906b1425982cf597cd205cef73806135e8565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126136385768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412613674576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b1880000084126136ae57682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c40000084126136e8576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac6200000841261372157680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d63100000841261375a5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412613793576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126137cc5768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080613902670de0b6b3a76400008561496f565b90508281816134cf576134cf6148b0565b60008082136123ef5761301d82614afb565b6060612897848484604051806060016040528060298152602001614b2b602991395b6060824710156139a85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161042b565b6001600160a01b0385163b6139ff5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161042b565b600080866001600160a01b03168587604051613a1b9190614a1c565b60006040518083038185875af1925050503d8060008114613a58576040519150601f19603f3d011682016040523d82523d6000602084013e613a5d565b606091505b5091509150611f47828286613c76565b6000670de0b6b3a7640000611b0084846147de565b6000670de0b6b3a76400008203613aac5760405163a9c8b14d60e01b815260040160405180910390fd5b6000613aca613ac384670de0b6b3a764000061499f565b84906138ed565b9050611b0a815b6000808213613b125760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015260640161042b565b670c7d713b49da000082138015613b305750670f43fc2c04ee000082125b15613b5457670de0b6b3a7640000613b4783613caf565b8161356d5761356d6148b0565b61179782613dce565b600080613b6a878461346e565b90506000613b7b6129b0888a6149f4565b9050670d529ae9e8600000811315613bb25780670d529ae9e8600000604051637e34684f60e11b815260040161042b929190614243565b6000613bbd82613a82565b905085613bca82896138ed565b613bd491906149f4565b9350670de0b6b3a7640000841215613c025760405163329e322960e21b81526004810185905260240161042b565b50505095945050505050565b60006117978260001961496f565b60008060008312613c2e576001613c32565b6000195b905061313161247185613c4486613913565b614171565b60008060008312613c5b576001613c5f565b6000195b905061313161247185613c7186613913565b614186565b60608315613c85575081611b0a565b825115613c955782518084602001fd5b8160405162461bcd60e51b815260040161042b9190614b17565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281613cf057613cf06148b0565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215613e0f57613e06826a0c097ce7bc90715b34b9f160241b81613e0057613e006148b0565b05613dce565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312613e5a5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312613e91576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312613ed9576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312613f14576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312613f4b57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312613f8257690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312613fb75768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312613fe257680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312614017576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f1775788937937831261404c576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312614080576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac83126140b4576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d6310000080860302816140dd576140dd6148b0565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b600082611b00670de0b6b3a7640000846147de565b60008260018161419e670de0b6b3a7640000866147de565b611af69190614775565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146141d157600080fd5b50565b600060a0828403121561309357600080fd5b600080600080600061012086880312156141ff57600080fd5b853561420a816141bc565b9450602086013561421a816141bc565b9350604086013592506060860135915061423787608088016141d4565b90509295509295909350565b918252602082015260400190565b600080600080600060a0868803121561426957600080fd5b8535614274816141bc565b94506020860135614284816141bc565b94979496505050506040830135926060810135926080909101359150565b9283526020830191909152604082015260600190565b60008060008060008060c087890312156142d157600080fd5b86356142dc816141bc565b955060208701356142ec816141bc565b945060408701356142fc816141bc565b959894975094956060810135955060808101359460a0909101359350915050565b6000806000806080858703121561433357600080fd5b843561433e816141bc565b9350602085013561434e816141bc565b93969395505050506040820135916060013590565b60006080828403121561309357600080fd5b6000806000806000610120868803121561438e57600080fd5b8535614399816141bc565b945060208601356143a9816141bc565b9350604086013592506143bf87606088016141d4565b91506101008601356001600160401b038111156143db57600080fd5b6143e788828901614363565b9150509295509295909350565b60008060008060008060c0878903121561440d57600080fd5b8635614418816141bc565b95506020870135614428816141bc565b945060408701359350606087013561443f816141bc565b9598949750929560808101359460a0909101359350915050565b6000806000806080858703121561446f57600080fd5b843561447a816141bc565b9350602085013561448a816141bc565b92506040850135915060608501356001600160401b038111156144ac57600080fd5b6144b887828801614363565b91505092959194509250565b6000806000606084860312156144d957600080fd5b83516144e4816141bc565b60208501519093506144f5816141bc565b6040850151909250614506816141bc565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561454a5761454a614511565b60405290565b80516130a3816141bc565b6000610120828403121561456e57600080fd5b614576614527565b82518152602083015160208201526040830151604082015261459a60608401614550565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b6001600160a01b039390931683526020830191909152604082015260600190565b60008060006060848603121561461357600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052600160045260246000fd5b600060a0828403121561465457600080fd5b60405160a081016001600160401b038111828210171561467657614676614511565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b838110156146cc5781810151838201526020016146b4565b50506000910152565b600081518084526146ed8160208601602086016146b1565b601f01601f19169290920160200192915050565b60018060a01b038416815282602082015260606040820152600061213960608301846146d5565b6000806040838503121561473b57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b818103818111156117975761179761474c565b808201808211156117975761179761474c565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6000602082840312156147d757600080fd5b5051919050565b80820281158282048414176117975761179761474c565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b60006020828403121561483057600080fd5b8135611b0a816141bc565b6001600160a01b03958616815260208101949094529190931660408301526060820192909252901515608082015260a00190565b6020808252600e908201526d06e6f206578697374696e67206c760941b604082015260600190565b6000600182016148a9576148a961474c565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148d5576148d56148b0565b500490565b60006001600160601b03838116806148f4576148f46148b0565b92169190910492915050565b60006020828403121561491257600080fd5b81518015158114611b0a57600080fd5b6000808335601e1984360301811261493957600080fd5b8301803591506001600160401b0382111561495357600080fd5b60200191503681900382131561496857600080fd5b9250929050565b80820260008212600160ff1b8414161561498b5761498b61474c565b81810583148215176117975761179761474c565b81810360008312801583831316838312821617156149bf576149bf61474c565b5092915050565b6000826149d5576149d56148b0565b600160ff1b8214600019841416156149ef576149ef61474c565b500590565b8082018281126000831280158216821582161715614a1457614a1461474c565b505092915050565b60008251614a2e8184602087016146b1565b9190910192915050565b604081526000614a4b60408301856146d5565b90508260208301529392505050565b600060208284031215614a6c57600080fd5b81516001600160401b0380821115614a8357600080fd5b818401915084601f830112614a9757600080fd5b815181811115614aa957614aa9614511565b604051601f8201601f19908116603f01168101908382118183101715614ad157614ad1614511565b81604052828152876020848701011115614aea57600080fd5b611f478360208301602088016146b1565b6000600160ff1b8201614b1057614b1061474c565b5060000390565b602081526000611b0a60208301846146d556fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220003f718c44c5b0b5af53d962447d83de446d1e09411db3c5f949e714036e737064736f6c63430008110033";
1223
+ "0x60a06040523480156200001157600080fd5b5060405162004c2a38038062004c2a833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051614b89620000a16000396000818160da01528181612eab0152612f780152614b896000f3fe60806040526004361061008c5760003560e01c8063178d29d3146100915780631ef6f327146100c85780633af1f32914610109578063409c7a8914610129578063694ab559146101495780637307a7a51461016957806397ee279e1461018b578063b7d75b8b146101ab578063f17b8c4a146101cb578063f3a411b8146101de578063febde725146101fe575b600080fd5b34801561009d57600080fd5b506100b16100ac3660046141c0565b61021e565b6040516100bf929190614206565b60405180910390f35b3480156100d457600080fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516100bf9190614214565b34801561011557600080fd5b506100b161012436600461423a565b6102aa565b34801561013557600080fd5b506100b161014436600461423a565b610564565b34801561015557600080fd5b506100b161016436600461423a565b610662565b61017c610177366004614297565b610934565b6040516100bf939291906142fc565b34801561019757600080fd5b5061017c6101a6366004614312565b610d0c565b3480156101b757600080fd5b506100b16101c6366004614312565b610f34565b6100b16101d9366004614375565b611070565b3480156101ea57600080fd5b506100b16101f93660046143f4565b611177565b34801561020a57600080fd5b506100b1610219366004614459565b611379565b6000806102366001600160a01b03861633878761148e565b610242868686866114ec565b8092508193505050856001600160a01b0316856001600160a01b0316336001600160a01b03167fd31f02c44717b409d13b92ec9d2eaf1427fb4e63f85f4777f1458fb8d93877618786604051610299929190614206565b60405180910390a494509492505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156102ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031291906144c4565b92509250506000886001600160a01b0316632778c3346040518163ffffffff1660e01b815260040161012060405180830381865afa158015610358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037c919061455b565b905060006103b0610395846001600160a01b03166115a7565b8a426103a6368c90038c018c6145dd565b8693929190611613565b509091506103cb90506001600160a01b038516338c8c61148e565b60408051600080825260208201928390526329910b1160e01b9092526001600160a01b038c16906329910b1190610409908e9086906024810161469c565b60408051808303816000875af1158015610427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044b91906146c3565b965090506001600160a01b038b1663156e29f68d8361046a868f6146fd565b6040518463ffffffff1660e01b815260040161048893929190614710565b6060604051808303816000875af11580156104a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cb9190614731565b5090975050888710156104fe578689604051636a1dbf1b60e01b81526004016104f5929190614206565b60405180910390fd5b8b6001600160a01b03168b6001600160a01b0316336001600160a01b03167fc87b85efc5055ef177e0092af0d4e624fff4b1d57db748857f65e4b7e4a28a368d8b60405161054d929190614206565b60405180910390a450505050509550959350505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156105a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cc91906144c4565b9193509091506105e990506001600160a01b038316338a8a61148e565b6105f78989838a8a8a61181f565b8094508195505050886001600160a01b0316886001600160a01b0316336001600160a01b03167fb51950711c9b21dc7888d41f68a19540231ffb5f0d19d8f75cbccaf90ffa7fa58a8860405161064e929190614206565b60405180910390a450509550959350505050565b6000806000866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156106a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c991906144c4565b92506106e39150506001600160a01b03881633898961148e565b6000876001600160a01b0316632778c3346040518163ffffffff1660e01b815260040161012060405180830381865afa158015610724573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610748919061455b565b9050600080610757838a6119f9565b91509150600061078d610772866001600160a01b03166115a7565b8442610783368d90038d018d6145dd565b8893929190611a34565b5090508861079b828461475f565b10156107c7576107ab818361475f565b89604051634e6ffe4760e11b81526004016104f5929190614206565b8a6001600160a01b031663f6b911bc8c8e8d6040518463ffffffff1660e01b81526004016107f793929190614772565b60408051808303816000875af1158015610815573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083991906146c3565b60408051600081526020810191829052635b709f1760e01b9091529093506001600160a01b038d169150635b709f179061087a908f9085906024810161469c565b60408051808303816000875af1158015610898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bc91906146c3565b96508990506108cb828461475f565b10156108d9576108d9614796565b6108e3818361475f565b96508b6001600160a01b03168b6001600160a01b0316336001600160a01b03167fac97b87f5422fa3beec99bff8f336310d8ebc7d33d909b7d534cd7c72f61e8718d8b60405161054d929190614206565b6000806000806000896001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561097a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099e91906144c4565b50915091506000826001600160a01b031663b8f82b268b8b6040518363ffffffff1660e01b81526004016109d39291906147ac565b602060405180830381865afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1491906147c5565b90506000808c6001600160a01b0316632778c3346040518163ffffffff1660e01b815260040161012060405180830381865afa158015610a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7c919061455b565b9050610a8a81848c42611b37565b919a509097509250505087871015610ab9578688604051636a1dbf1b60e01b81526004016104f5929190614206565b610ace6001600160a01b038416338e8861148e565b610ae282610adc838d6147de565b90611ba2565b95506001600160a01b038b16610b8d57610afd8b338c611bcc565b836001600160a01b03166320e8c565878e8e8a866040518663ffffffff1660e01b8152600401610b3094939291906147f5565b60206040518083038185885af1158015610b4e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b7391906147c5565b50610b888b33610b83898e6146fd565b611c38565b610c19565b610b988b3388611bcc565b610ba28b85611cfc565b6040516320e8c56560e01b81526001600160a01b038516906320e8c56590610bd4908f908f908b9087906004016147f5565b6020604051808303816000875af1158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1791906147c5565b505b8b6001600160a01b031663156e29f68e83886040518463ffffffff1660e01b8152600401610c4993929190614710565b6060604051808303816000875af1158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190614731565b509097505087871015610ca157610ca1614796565b604080516001600160a01b038d81168252602082018d905291810187905260608101899052818f16918e169033907f7f646a534401967ac0913451efea28d9e170ffc164efa98e3957cde363c0245f9060800160405180910390a45050505096509650969350505050565b6000806000806000886001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7691906144c4565b50915091506000896001600160a01b0316632778c3346040518163ffffffff1660e01b815260040161012060405180830381865afa158015610dbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de0919061455b565b9050610dee818a8a42611b37565b919850965094505086861015610e1b578587604051636a1dbf1b60e01b81526004016104f5929190614206565b610e306001600160a01b038416338c8861148e565b610e456001600160a01b038316338c8761148e565b604051630ab714fb60e11b81526001600160a01b038b169063156e29f690610e75908e9089908990600401614710565b6060604051808303816000875af1158015610e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb89190614731565b509096505086861015610ecd57610ecd614796565b8a6001600160a01b03168a6001600160a01b0316336001600160a01b03167f9334566f6358cd68e33d423fb1c9119c6837e3a2a7a8affaaa5020ed06aec06988888b604051610f1e939291906142fc565b60405180910390a4505050955095509592505050565b600080610f4c6001600160a01b03871633888861148e565b604051633dae446f60e21b81526001600160a01b0387169063f6b911bc90610f7c908a9081908a90600401614772565b60408051808303816000875af1158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe91906146c3565b909250905083821015610fe85781846040516305221cf360e11b81526004016104f5929190614206565b8281101561100d578083604051634e6ffe4760e11b81526004016104f5929190614206565b866001600160a01b0316866001600160a01b0316336001600160a01b03167fd9f35a37b64d95edfd8f26adf130ce45f3e9ddf3c7ab8c1fb7224727a339a98e88858760405161105e939291906142fc565b60405180910390a49550959350505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d891906144c4565b925050915060006110ec8984600189611db4565b90506110fc8a8a84848c8c61181f565b909550935061110e602087018761481e565b6001600160a01b0316896001600160a01b0316336001600160a01b03167ff83776e5b667a2b471f92ddfd482749c61b5328b832d375097638c2c08818f3b8d8a602001358a60405161116293929190614710565b60405180910390a45050509550959350505050565b6000806000876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156111ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111de91906144c4565b509091506111f990506001600160a01b038916338a8a61148e565b604051633dae446f60e21b81526000906001600160a01b038a169063f6b911bc9061122c9085908e908d90600401614772565b60408051808303816000875af115801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e91906146c3565b60405163769f8e5d60e01b81529094509091506001600160a01b0383169063769f8e5d906112a9908d9085908c908c9060019060040161483b565b6020604051808303816000875af11580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906147c5565b935084831015611313578285604051634e6ffe4760e11b81526004016104f5929190614206565b60408051898152602081018590526001600160a01b03898116828401526060820187905291518c8316928c169133917f0eed48ee59ddaf7384d334727280158b7a75d5e84baa5614200f0506f08bb4fb9181900360800190a45050965096945050505050565b6000806000856001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156113bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e091906144c4565b509091506113fb90506001600160a01b03871633888861148e565b600061140a82888860016114ec565b9350905061141c888383886000611f52565b935061142b602086018661481e565b6001600160a01b0316876001600160a01b0316336001600160a01b03167f3fff08e8137afe866dce7ced13ddc12d684db61b80b0ac5cb9e54961c9dd8a218b8a8960405161147b93929190614710565b60405180910390a4505094509492505050565b6114e6846323b872dd60e01b8585856040516024016114af93929190614772565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612142565b50505050565b600080846001600160a01b0316632f13b60c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561152d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611551919061486f565b1561156857611561868686612214565b9150611579565b611573868686612378565b90925090505b8282101561159e5781836040516305221cf360e11b81526004016104f5929190614206565b94509492505050565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af11580156115e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160d91906147c5565b92915050565b60008060008060405180608001604052808a81526020018981526020018881526020018781525090508060000151604001516000036116645760405162461bcd60e51b81526004016104f590614891565b60208101516060820151825160009261167c92612492565b905060006116a58760006116a0866040015161169b876020015161258c565b6125a3565b6125b9565b90506116b9816020015184604001516125a3565b602082015260005b81606001518110156117fa576000806116e4848688600001516000015186612684565b91509150816116f8576020840152506117ea565b60008061170f8860000151888a60200151866126ec565b9150915060008060008561172a8c600001516000015161272e565b611734919061475f565b90506000868c6040015161174891906146fd565b90506000858761175f8f600001516020015161272e565b61176991906146fd565b61177391906146fd565b905061177f83886147de565b945061178b81836147de565b935050505061179f82828a60800151612741565b156117b95750929a50909850965061181495505050505050565b8082116117d2576117cb85600161475f565b88526117e3565b6117dd6001866146fd565b60208901525b5050505050505b6117f3816148b9565b90506116c1565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b6000806000876001600160a01b0316632778c3346040518163ffffffff1660e01b815260040161012060405180830381865afa158015611863573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611887919061455b565b905060006118bb6118a0896001600160a01b03166115a7565b88426118b1368a90038a018a6145dd565b869392919061278a565b50506040805160008082526020820192839052635b709f1760e01b909252919250906001600160a01b038b1690635b709f17906118ff908d9086906024810161469c565b60408051808303816000875af115801561191d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194191906146c3565b945090506001600160a01b038a1663156e29f68c61195f848c6146fd565b856040518463ffffffff1660e01b815260040161197e93929190614710565b6060604051808303816000875af115801561199d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c19190614731565b5090955050868510156119eb578487604051636a1dbf1b60e01b81526004016104f5929190614206565b505050965096945050505050565b600080600080611a1186611a0c8761294f565b612965565b91509150611a1e8261272e565b9350611a298161272e565b925050509250929050565b604080516080810182528681526020810186905290810184905260608101839052600090819081611a66898988612492565b90506000611a87866000611a8285876000015160000151612a30565b612acd565b905060005b81606001518110156117fa576000611aa48383612aff565b9050600080611abd876000015187896020015186612b6b565b9150915086604001518211611b085782855260408701516080860151600091611ae891859190612b8c565b90508015611b025750919750909550611b2d945050505050565b50611b19565b611b136001846146fd565b60208601525b50505080611b26906148b9565b9050611a8c565b9550959350505050565b600080600080600080600080611b5f8c611b508d61294f565b611b598d61294f565b8c612bba565b9350935093509350611b708461272e565b9750611b7b8361272e565b9650611b868261272e565b9550611b918161272e565b945050505050945094509450949050565b6000816001611bb1828661475f565b611bbb91906146fd565b611bc591906148e8565b9392505050565b6001600160a01b038316611c1d57803414611c185760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b60448201526064016104f5565b505050565b8015611c1857611c186001600160a01b03841683308461148e565b80600003611c4557505050565b6001600160a01b038316611ce8576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ca0576040519150601f19603f3d011682016040523d82523d6000602084013e611ca5565b606091505b50509050806114e65760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b60448201526064016104f5565b611c186001600160a01b0384168383612d72565b6001600160a01b038216611d0e575050565b611d2060026001600160601b036148fc565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa158015611d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9d91906147c5565b1015611db057611db08282600019612d91565b5050565b6000611dd1611dc6602084018461481e565b338460200135611bcc565b611de1606083016040840161481e565b6001600160a01b0316611df7602084018461481e565b6001600160a01b031614611e6157611e61611e15602084018461481e565b6020840135611e276060860186614922565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ea592505050565b611e7a611e74606084016040850161481e565b85611cfc565b6000611e94611e8f606085016040860161481e565b612f9f565b9050600080611ea9606086016040870161481e565b6001600160a01b031614611ebe576000611ec0565b815b90506001600160a01b0386166320e8c5658289611ee36060890160408a0161481e565b868a6040518663ffffffff1660e01b8152600401611f0494939291906147f5565b60206040518083038185885af1158015611f22573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f4791906147c5565b979650505050505050565b60008115611f6f57611f6f6001600160a01b03861633878761148e565b611f7c602084018461481e565b6001600160a01b0316611f95606085016040860161481e565b6001600160a01b031603612035576001600160a01b03851663769f8e5d8786611fc4606088016040890161481e565b876020013560016040518663ffffffff1660e01b8152600401611feb95949392919061483b565b6020604051808303816000875af115801561200a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202e91906147c5565b9050612139565b60006001600160a01b03861663769f8e5d30876120586060890160408a0161481e565b6001806040518663ffffffff1660e01b815260040161207b95949392919061483b565b6020604051808303816000875af115801561209a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120be91906147c5565b90506120e16120d3606086016040870161481e565b82611e276060880188614922565b6120f1611e8f602086018661481e565b915083602001358210156121205781846020013560405163c5b5576d60e01b81526004016104f5929190614206565b612137612130602086018661481e565b8884611c38565b505b95945050505050565b6000612197826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130299092919063ffffffff16565b805190915015611c1857808060200190518101906121b5919061486f565b611c185760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104f5565b600080836001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612255573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227991906144c4565b925050506000846001600160a01b031663f6b911bc8784876040518463ffffffff1660e01b81526004016122af93929190614772565b60408051808303816000875af11580156122cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f191906146c3565b5060405163bcb7ea5d60e01b81529091506001600160a01b0383169063bcb7ea5d90612321908990600401614214565b6020604051808303816000875af1158015612340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236491906147c5565b61236e908261475f565b9695505050505050565b600080600080856001600160a01b031663f6b911bc8888886040518463ffffffff1660e01b81526004016123ae93929190614772565b60408051808303816000875af11580156123cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f091906146c3565b60408051600080825260208201928390526329910b1160e01b909252929450909250906001600160a01b038816906329910b1190612435908b9086906024810161469c565b60408051808303816000875af1158015612453573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247791906146c3565b94509050612485818461475f565b9450505050935093915050565b6124bd6040518060800160405280600081526020016000815260200160008152602001600081525090565b60c084015182106124e15760405163b2094b5960e01b815260040160405180910390fd5b6000828560c001516124f391906146fd565b90506124ff8582613038565b82526020850151612511908590613094565b60208301528451158061252657506020820151155b1561254d578451602083015160405163b1c4aefb60e01b81526104f5929190600401614206565b61256b856000015186610100015184602001518560000151856130cb565b604083015260a085015161257f908261314c565b6060830152509392505050565b600060016125998361272e565b61160d91906146fd565b60008183106125b25781611bc5565b5090919050565b6125f26040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b83516125fe9084613180565b8152602084015161260f90836125a3565b602082018190528151118061262f5750670de0b6b3a76400008460800151115b1561265c57835160208501516080860151604051632cc06bc160e21b81526104f5939291906004016142fc565b6040808501519082015260608085015190820152608093840151938101939093525090919050565b60008060006126938785612aff565b90508660a0015181116126ab5760019250905061159e565b60006126c087876126bb8561294f565b61318f565b905060008112156126d7575060009250905061159e565b5060a096909601869052506001959350505050565b600080600080612709878761270088613281565b8b929190613298565b915091506127168261272e565b93506127218161272e565b9250505094509492505050565b60008082121561273d57600080fd5b5090565b60008361275f8461275a85670de0b6b3a76400006146fd565b6133de565b11158015612782575061277e8361275a84670de0b6b3a764000061475f565b8411155b949350505050565b60008060008060405180608001604052808a81526020018981526020018881526020018781525090508060000151604001516000036127db5760405162461bcd60e51b81526004016104f590614891565b6020810151606082015182516000926127f392612492565b9050600061280f876000611a8285876000015160000151612a30565b905060005b81606001518110156117fa57600061282c8383612aff565b9050600080612845876000015187896020015186612b6b565b91509150866040015182111561286e576128606001846146fd565b60208601525061293f915050565b6000806000848a6040015161288391906146fd565b90506000866128998c600001516000015161272e565b6128a391906146fd565b9050600085876128b68d6020015161272e565b6128c0919061475f565b6128ca91906146fd565b90506128d681896147de565b93506128e282846147de565b94505050506128f681838960800151612741565b1561290f57509299509097509550611814945050505050565b8181116129285761292185600161475f565b8752612939565b6129336001866146fd565b60208801525b50505050505b612948816148b9565b9050612814565b60006001600160ff1b0382111561273d57600080fd5b60008082600003612989576040516325daaec360e01b815260040160405180910390fd5b6040840151602085015161299d908561496f565b6129a7919061499f565b60408501518551919350906129bc908561496f565b6129c6919061499f565b90508115806129d3575080155b156129f157604051631997ea8d60e31b815260040160405180910390fd5b6040840151612a0090846133fe565b60408501528351612a1190826133fe565b84526020840151612a2290836133fe565b602090940193909352929050565b600080612a5d612a58856000015186604001518760600151612a5291906149cd565b90613445565b613468565b90506000612a7d612a76670de0b6b3a7640000846149f4565b839061387d565b90506000612a9b866020015186612a9491906149f4565b8390613445565b90506000612aa982876149cd565b90506103e8612ab78261272e565b612ac3906103e76147de565b611f4791906148e8565b6125f26040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b600081158015612b125750604083015115155b15612b225750604082015161160d565b6020830151835111612b525760208301518351600291612b419161475f565b612b4b91906148e8565b905061160d565b604051637d388ed960e11b815260040160405180910390fd5b600080600080612b7f87876127008861294f565b91509150612716826138a3565b60008284111580156127825750612baf8361275a84670de0b6b3a76400006146fd565b909310159392505050565b6000808080861580612bca575085155b15612be8576040516325daaec360e01b815260040160405180910390fd5b60c08801518510612c0c5760405163b2094b5960e01b815260040160405180910390fd5b8760400151600003612c59576103e8612c3d612c38612c33612c2e8a8c61496f565b61272e565b6138b5565b61294f565b612c4791906149cd565b92506103e89350869150859050612cfc565b8751604089015160009190612c6e908961496f565b612c78919061499f565b9050600089602001518a604001518a612c91919061496f565b612c9b919061499f565b905080821215612cd1578194508792508960400151858b60200151612cc0919061496f565b612cca919061499f565b9350612cf9565b8094508893508960400151858b60000151612cec919061496f565b612cf6919061499f565b92505b50505b82600003612d1d57604051631997ea8d60e31b815260040160405180910390fd5b8188602001818151612d2f91906149f4565b905250875181908990612d439083906149f4565b905250612d5084846149f4565b88604001818151612d6191906149f4565b905250929791965094509092509050565b611c188363a9059cbb60e01b84846040516024016114af9291906147ac565b600080846001600160a01b031663095ea7b360e01b8585604051602401612db99291906147ac565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612df79190614a1c565b6000604051808303816000865af19150503d8060008114612e34576040519150601f19603f3d011682016040523d82523d6000602084013e612e39565b606091505b5091509150818015612e63575080511580612e63575080806020019051810190612e63919061486f565b612e9e5760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b60448201526064016104f5565b5050505050565b612ecf837f0000000000000000000000000000000000000000000000000000000000000000611cfc565b60405163726d379760e11b815260009073__$802f57dc5d2627d21bbb7805eff3c348c4$__9063e4da6f2e90612f0b9085908790600401614a38565b600060405180830381865af4158015612f28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f509190810190614a5a565b9050612e9e816001600160a01b03861615612f6c576000612f6e565b845b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190613925565b60006001600160a01b03821615613022576040516370a0823160e01b81526001600160a01b038316906370a0823190612fdc903090600401614214565b602060405180830381865afa158015612ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301d91906147c5565b61160d565b4792915050565b60606127828484600085613947565b60006130438261294f565b613055612c386201518061016d6147de565b8460800151613064919061496f565b61306e919061499f565b90506000811361160d57604051630e520c3b60e11b8152600481018290526024016104f5565b600080600083126130a65760016130aa565b6000195b90506130c1612c38856130bc866138a3565b613a6d565b612782908261496f565b6000806130d8868461314c565b9050670de0b6b3a76400008112156131065760405163329e322960e21b8152600481018290526024016104f5565b600061311c613115878a6149f4565b899061387d565b9050600061312982613a82565b9050613135818761387d565b61313f90846149cd565b9998505050505050505050565b60008061315e6201518061016d6147de565b61316884866147de565b61317291906148e8565b9050612782612a588261294f565b60008183116125b25781611bc5565b6000808285602001516131a291906149cd565b905060006131b085856149f4565b90506000821380156131c25750600081135b6132035760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b60448201526064016104f5565b6000613231613212848461496f565b602089015161322190896149f4565b61322b908861496f565b9061387d565b90506000613247613242848661387d565b613ad1565b885190915060009061326290670de0b6b3a76400009061387d565b905061327281612a5284866149cd565b896040015161313f91906149cd565b600061328c8261294f565b61160d9060001961496f565b60008060006132ba876000015187602001518860000151896040015188613b5d565b905060006132d06132cb868461387d565b613c0e565b6060880151909150600086131561333f5760006132ed848361387d565b9050670de0b6b3a764000081121561331b5760405163329e322960e21b8152600481018290526024016104f5565b61333761333083670de0b6b3a76400006149cd565b8490613445565b91505061336c565b6133698161335581670de0b6b3a76400006149cd565b61335f908561496f565b6132cb919061499f565b90505b6000606461337d8b60e0015161294f565b613387908461496f565b613391919061499f565b9050600061339f83856149cd565b9050600081126133b8576133b38982613c1c565b6133c2565b6133c28982613c49565b96506133ce8983613c1c565b9550505050505094509492505050565b6000806133eb83856147de565b670de0b6b3a76400009004949350505050565b60008183121561343b5760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b60448201526064016104f5565b611bc582846149cd565b600080613452838561496f565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff19821215801561348d575068070c1cc73b00c800008213155b6134cc5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016104f5565b6000821215613504576134e182600003613468565b6a0c097ce7bc90715b34b9f160241b816134fd576134fd6148d2565b0592915050565b60006806f05b59d3b2000000831261354257506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b613578565b6803782dace9d9000000831261357457506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380613578565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126135c85768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412613604576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261363e57682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412613678576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126136b157680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126136ea5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412613723576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c40000841261375c5768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080613892670de0b6b3a76400008561496f565b905082818161345f5761345f6148d2565b600080821361273d5761301d82614afb565b6000600382111561391657508060006138cf6002836148e8565b6138da90600161475f565b90505b81811015613910579050806002816138f581866148e8565b6138ff919061475f565b61390991906148e8565b90506138dd565b50919050565b8115613920575060015b919050565b6060612782848484604051806060016040528060298152602001614b2b602991395b6060824710156139a85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016104f5565b6001600160a01b0385163b6139ff5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104f5565b600080866001600160a01b03168587604051613a1b9190614a1c565b60006040518083038185875af1925050503d8060008114613a58576040519150601f19603f3d011682016040523d82523d6000602084013e613a5d565b606091505b5091509150611f47828286613c76565b6000670de0b6b3a7640000611bbb84846147de565b6000670de0b6b3a76400008203613aac5760405163a9c8b14d60e01b815260040160405180910390fd5b6000613aca613ac384670de0b6b3a76400006149cd565b849061387d565b9050611bc5815b6000808213613b125760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016104f5565b670c7d713b49da000082138015613b305750670f43fc2c04ee000082125b15613b5457670de0b6b3a7640000613b4783613caf565b816134fd576134fd6148d2565b61160d82613dce565b600080613b6a87846133fe565b90506000613b7b612a76888a6149f4565b9050670d529ae9e8600000811315613bb25780670d529ae9e8600000604051637e34684f60e11b81526004016104f5929190614206565b6000613bbd82613a82565b905085613bca828961387d565b613bd491906149f4565b9350670de0b6b3a7640000841215613c025760405163329e322960e21b8152600481018590526024016104f5565b50505095945050505050565b600061160d8260001961496f565b60008060008312613c2e576001613c32565b6000195b90506130c1612c3885613c44866138a3565b614171565b60008060008312613c5b576001613c5f565b6000195b90506130c1612c3885613c71866138a3565b614186565b60608315613c85575081611bc5565b825115613c955782518084602001fd5b8160405162461bcd60e51b81526004016104f59190614b17565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281613cf057613cf06148d2565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215613e0f57613e06826a0c097ce7bc90715b34b9f160241b81613e0057613e006148d2565b05613dce565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312613e5a5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312613e91576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312613ed9576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312613f14576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312613f4b57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312613f8257690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312613fb75768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312613fe257680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312614017576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f1775788937937831261404c576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312614080576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac83126140b4576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d6310000080860302816140dd576140dd6148d2565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b600082611bbb670de0b6b3a7640000846147de565b60008260018161419e670de0b6b3a7640000866147de565b611bb1919061475f565b6001600160a01b03811681146141bd57600080fd5b50565b600080600080608085870312156141d657600080fd5b84356141e1816141a8565b935060208501356141f1816141a8565b93969395505050506040820135916060013590565b918252602082015260400190565b6001600160a01b0391909116815260200190565b600060a0828403121561391057600080fd5b6000806000806000610120868803121561425357600080fd5b853561425e816141a8565b9450602086013561426e816141a8565b9350604086013592506060860135915061428b8760808801614228565b90509295509295909350565b60008060008060008060c087890312156142b057600080fd5b86356142bb816141a8565b955060208701356142cb816141a8565b945060408701356142db816141a8565b959894975094956060810135955060808101359460a0909101359350915050565b9283526020830191909152604082015260600190565b600080600080600060a0868803121561432a57600080fd5b8535614335816141a8565b94506020860135614345816141a8565b94979496505050506040830135926060810135926080909101359150565b60006080828403121561391057600080fd5b6000806000806000610120868803121561438e57600080fd5b8535614399816141a8565b945060208601356143a9816141a8565b9350604086013592506143bf8760608801614228565b91506101008601356001600160401b038111156143db57600080fd5b6143e788828901614363565b9150509295509295909350565b60008060008060008060c0878903121561440d57600080fd5b8635614418816141a8565b95506020870135614428816141a8565b945060408701359350606087013561443f816141a8565b9598949750929560808101359460a0909101359350915050565b6000806000806080858703121561446f57600080fd5b843561447a816141a8565b9350602085013561448a816141a8565b92506040850135915060608501356001600160401b038111156144ac57600080fd5b6144b887828801614363565b91505092959194509250565b6000806000606084860312156144d957600080fd5b83516144e4816141a8565b60208501519093506144f5816141a8565b6040850151909250614506816141a8565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561454a5761454a614511565b60405290565b8051613920816141a8565b6000610120828403121561456e57600080fd5b614576614527565b82518152602083015160208201526040830151604082015261459a60608401614550565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b600060a082840312156145ef57600080fd5b60405160a081016001600160401b038111828210171561461157614611614511565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561466757818101518382015260200161464f565b50506000910152565b6000815180845261468881602086016020860161464c565b601f01601f19169290920160200192915050565b60018060a01b03841681528260208201526060604082015260006121396060830184614670565b600080604083850312156146d657600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b8181038181111561160d5761160d6146e7565b6001600160a01b039390931683526020830191909152604082015260600190565b60008060006060848603121561474657600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561160d5761160d6146e7565b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03929092168252602082015260400190565b6000602082840312156147d757600080fd5b5051919050565b808202811582820484141761160d5761160d6146e7565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b60006020828403121561483057600080fd5b8135611bc5816141a8565b6001600160a01b03958616815260208101949094529190931660408301526060820192909252901515608082015260a00190565b60006020828403121561488157600080fd5b81518015158114611bc557600080fd5b6020808252600e908201526d06e6f206578697374696e67206c760941b604082015260600190565b6000600182016148cb576148cb6146e7565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826148f7576148f76148d2565b500490565b60006001600160601b0383811680614916576149166148d2565b92169190910492915050565b6000808335601e1984360301811261493957600080fd5b8301803591506001600160401b0382111561495357600080fd5b60200191503681900382131561496857600080fd5b9250929050565b80820260008212600160ff1b8414161561498b5761498b6146e7565b818105831482151761160d5761160d6146e7565b6000826149ae576149ae6148d2565b600160ff1b8214600019841416156149c8576149c86146e7565b500590565b81810360008312801583831316838312821617156149ed576149ed6146e7565b5092915050565b8082018281126000831280158216821582161715614a1457614a146146e7565b505092915050565b60008251614a2e81846020870161464c565b9190910192915050565b604081526000614a4b6040830185614670565b90508260208301529392505050565b600060208284031215614a6c57600080fd5b81516001600160401b0380821115614a8357600080fd5b818401915084601f830112614a9757600080fd5b815181811115614aa957614aa9614511565b604051601f8201601f19908116603f01168101908382118183101715614ad157614ad1614511565b81604052828152876020848701011115614aea57600080fd5b611f4783602083016020880161464c565b6000600160ff1b8201614b1057614b106146e7565b5060000390565b602081526000611bc5602083018461467056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220e582d98573f0c3b4dd1a82b168a2dd55125ceeb751a26e818b422f7e5a8a33e464736f6c63430008110033";
1224
1224
 
1225
1225
  type ActionAddRemoveLiqConstructorParams =
1226
1226
  | [linkLibraryAddresses: ActionAddRemoveLiqLibraryAddresses, signer?: Signer]
@@ -35,16 +35,16 @@ const _abi = [
35
35
  inputs: [
36
36
  {
37
37
  internalType: "uint256",
38
- name: "actualScyIn",
38
+ name: "actualSyIn",
39
39
  type: "uint256",
40
40
  },
41
41
  {
42
42
  internalType: "uint256",
43
- name: "limitScyIn",
43
+ name: "limitSyIn",
44
44
  type: "uint256",
45
45
  },
46
46
  ],
47
- name: "RouterExceededLimitScyIn",
47
+ name: "RouterExceededLimitSyIn",
48
48
  type: "error",
49
49
  },
50
50
  {
@@ -83,32 +83,32 @@ const _abi = [
83
83
  inputs: [
84
84
  {
85
85
  internalType: "uint256",
86
- name: "actualScyOut",
86
+ name: "actualSyOut",
87
87
  type: "uint256",
88
88
  },
89
89
  {
90
90
  internalType: "uint256",
91
- name: "requiredScyOut",
91
+ name: "requiredSyOut",
92
92
  type: "uint256",
93
93
  },
94
94
  ],
95
- name: "RouterInsufficientScyOut",
95
+ name: "RouterInsufficientSyOut",
96
96
  type: "error",
97
97
  },
98
98
  {
99
99
  inputs: [
100
100
  {
101
101
  internalType: "uint256",
102
- name: "actualScyRepay",
102
+ name: "actualSyRepay",
103
103
  type: "uint256",
104
104
  },
105
105
  {
106
106
  internalType: "uint256",
107
- name: "requiredScyRepay",
107
+ name: "requiredSyRepay",
108
108
  type: "uint256",
109
109
  },
110
110
  ],
111
- name: "RouterInsufficientScyRepay",
111
+ name: "RouterInsufficientSyRepay",
112
112
  type: "error",
113
113
  },
114
114
  {
@@ -149,7 +149,7 @@ const _abi = [
149
149
  },
150
150
  {
151
151
  internalType: "int256",
152
- name: "scyToAccount",
152
+ name: "syToAccount",
153
153
  type: "int256",
154
154
  },
155
155
  {
@@ -166,7 +166,7 @@ const _abi = [
166
166
  ];
167
167
 
168
168
  const _bytecode =
169
- "0x60a060405234801561001057600080fd5b5060405161165f38038061165f83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516115cf610090600039600081816040015260a601526115cf6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806306ae70951461003b578063fa483e7214610078575b600080fd5b6100627f000000000000000000000000000000000000000000000000000000000000000081565b60405161006f919061106d565b60405180910390f35b61008b610086366004611081565b61008d565b005b6040516358e6309f60e01b815233906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906358e6309f906100db90849060040161106d565b602060405180830381865afa1580156100f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011c9190611100565b610144578060405163083c2ed160e11b815260040161013b919061106d565b60405180910390fd5b6000339050600061018a85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061026092505050565b905060018160048111156101a0576101a0611122565b036101b7576101b2828888888861027c565b610257565b60008160048111156101cb576101cb611122565b036101dd576101b28288888888610402565b60028160048111156101f1576101f1611122565b03610203576101b2828888888861062b565b600381600481111561021757610217611122565b03610229576101b282888888886108f8565b600481600481111561023d5761023d611122565b0361024f576101b28288888888610ab7565b610257611138565b50505050505050565b6000818060200190518101906102769190611162565b92915050565b6000856001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156102bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e09190611195565b9250505060008061032685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c5492505050565b91509150600061033588610c76565b90506000846001600160a01b031663db74aa158b866040518363ffffffff1660e01b81526004016103679291906111e2565b6020604051808303816000875af1158015610386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103aa91906111fc565b9050818110156103d157808260405163c217d4a960e01b815260040161013b929190611215565b828110156103f657808360405163a59b8c3160e01b815260040161013b929190611215565b50505050505050505050565b604080516060810182526000808252602082018190529181019190915261045e83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c9192505050565b6040808501919091526001600160a01b03918216602085015291811683528151630b2339af60e21b8152915160009283928a1691632c8ce6bc916004808201926060929091908290030181865afa1580156104bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e19190611195565b925050915060006104fa826001600160a01b0316610cb8565b9050600061050789610c76565b905060006105158383610d1e565b905060006105228a610d31565b905060006105308383610d40565b9050876040015181111561055f5780886040015160405163ddd5bdb560e01b815260040161013b929190611215565b801561057d57875161057d906001600160a01b038916908884610d57565b6000866001600160a01b031663db74aa158f8b602001516040518363ffffffff1660e01b81526004016105b19291906111e2565b6020604051808303816000875af11580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f491906111fc565b90508481101561061b57808560405163c217d4a960e01b815260040161013b929190611215565b5050505050505050505050505050565b60008061066d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c5492505050565b915091506000876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d59190611195565b9250505060006106ed826001600160a01b0316610cb8565b905060006107026106fd89610dc8565b610d31565b60408051600280825260608201835292935060009290916020830190803683375050604080516002808252606082018352939450600093909250906020830190803683370190505090508b6107578585610dd6565b8360008151811061076a5761076a611239565b602002602001018360008151811061078457610784611239565b6020026020010182815250826001600160a01b03166001600160a01b0316815250505086816000815181106107bb576107bb611239565b60200260200101516107cc8d610d31565b6107d69190611265565b836001815181106107e9576107e9611239565b602002602001018360018151811061080357610803611239565b60209081029190910101919091526001600160a01b03918216905260405163b0d8898160e01b815260009187169063b0d88981906108479086908690600401611278565b6000604051808303816000875af1158015610866573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261088e91908101906112fc565b905086816001815181106108a4576108a4611239565b602002602001015110156108e957806001815181106108c5576108c5611239565b60200260200101518760405163cb95352560e01b815260040161013b929190611215565b50505050505050505050505050565b600080600061093c85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610deb92505050565b925092509250600080896001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190611195565b925092505060006109b789610c76565b90506109cd6001600160a01b0384168387610e04565b60405163bcb7ea5d60e01b81526000906001600160a01b0384169063bcb7ea5d906109fc908f9060040161106d565b6020604051808303816000875af1158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f91906111fc565b905081811015610a665780826040516395f6195f60e01b815260040161013b929190611215565b600086610a728d610d31565b610a7c9190611265565b905085811015610aa3578086604051634e6ffe4760e11b815260040161013b929190611215565b6108e96001600160a01b0386168983610e04565b6000806000610afb85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610deb92505050565b9250925092506000610b0c88610c76565b90506000896001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610b4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b729190611195565b925050506000816001600160a01b031663db74aa158c886040518363ffffffff1660e01b8152600401610ba69291906111e2565b6020604051808303816000875af1158015610bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be991906111fc565b905083811015610c1057808460405163a59b8c3160e01b815260040161013b929190611215565b82610c1b82876113b9565b1015610c4757610c2b81866113b9565b8360405163c217d4a960e01b815260040161013b929190611215565b5050505050505050505050565b60008082806020019051810190610c6b91906113cc565b909590945092505050565b6000808213610c8d57610c888261140c565b610276565b5090565b600080600083806020019051810190610caa9190611428565b919790965090945092505050565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610cfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906111fc565b6000610d2a8383610e39565b9392505050565b600080821215610c8d57600080fd5b600081831015610d51576000610d2a565b50900390565b6040516001600160a01b0380851660248301528316604482015260648101829052610dc29085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610e6f565b50505050565b600061027682600019611478565b600082610de38184610f41565b949350505050565b600080600083806020019051810190610caa91906114a8565b6040516001600160a01b038316602482015260448101829052610e3490849063a9059cbb60e01b90606401610d8b565b505050565b600082600181610e51670de0b6b3a7640000866114ed565b610e5b91906113b9565b610e659190611265565b610d2a9190611504565b6000610ec4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610f599092919063ffffffff16565b805190915015610e345780806020019051810190610ee29190611100565b610e345760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161013b565b6000670de0b6b3a7640000600181610e5186866114ed565b6060610de38484600085856001600160a01b0385163b610fbb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161013b565b600080866001600160a01b03168587604051610fd7919061154a565b60006040518083038185875af1925050503d8060008114611014576040519150601f19603f3d011682016040523d82523d6000602084013e611019565b606091505b5091509150611029828286611034565b979650505050505050565b60608315611043575081610d2a565b8251156110535782518084602001fd5b8160405162461bcd60e51b815260040161013b9190611566565b6001600160a01b0391909116815260200190565b6000806000806060858703121561109757600080fd5b843593506020850135925060408501356001600160401b03808211156110bc57600080fd5b818701915087601f8301126110d057600080fd5b8135818111156110df57600080fd5b8860208285010111156110f157600080fd5b95989497505060200194505050565b60006020828403121561111257600080fd5b81518015158114610d2a57600080fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b80516005811061115d57600080fd5b919050565b60006020828403121561117457600080fd5b610d2a8261114e565b6001600160a01b038116811461119257600080fd5b50565b6000806000606084860312156111aa57600080fd5b83516111b58161117d565b60208501519093506111c68161117d565b60408501519092506111d78161117d565b809150509250925092565b6001600160a01b0392831681529116602082015260400190565b60006020828403121561120e57600080fd5b5051919050565b918252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156102765761027661124f565b604080825283519082018190526000906020906060840190828701845b828110156112ba5781516001600160a01b031684529284019290840190600101611295565b5050508381038285015284518082528583019183019060005b818110156112ef578351835292840192918401916001016112d3565b5090979650505050505050565b6000602080838503121561130f57600080fd5b82516001600160401b038082111561132657600080fd5b818501915085601f83011261133a57600080fd5b81518181111561134c5761134c611223565b8060051b604051601f19603f8301168101818110858211171561137157611371611223565b60405291825284820192508381018501918883111561138f57600080fd5b938501935b828510156113ad57845184529385019392850192611394565b98975050505050505050565b808201808211156102765761027661124f565b6000806000606084860312156113e157600080fd5b6113ea8461114e565b925060208401516113fa8161117d565b80925050604084015190509250925092565b6000600160ff1b82016114215761142161124f565b5060000390565b6000806000806080858703121561143e57600080fd5b6114478561114e565b935060208501516114578161117d565b60408601519093506114688161117d565b6060959095015193969295505050565b80820260008212600160ff1b841416156114945761149461124f565b81810583148215176102765761027661124f565b600080600080608085870312156114be57600080fd5b6114c78561114e565b935060208501516114d78161117d565b6040860151606090960151949790965092505050565b80820281158282048414176102765761027661124f565b60008261152157634e487b7160e01b600052601260045260246000fd5b500490565b60005b83811015611541578181015183820152602001611529565b50506000910152565b6000825161155c818460208701611526565b9190910192915050565b6020815260008251806020840152611585816040850160208701611526565b601f01601f1916919091016040019291505056fea2646970667358221220a66b85cf73d45c4e818016cce66693425357072c442dc344c48564b04aa03f8a64736f6c63430008110033";
169
+ "0x60a060405234801561001057600080fd5b5060405161165f38038061165f83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516115cf610090600039600081816040015260a601526115cf6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806306ae70951461003b578063fa483e7214610078575b600080fd5b6100627f000000000000000000000000000000000000000000000000000000000000000081565b60405161006f919061106d565b60405180910390f35b61008b610086366004611081565b61008d565b005b6040516358e6309f60e01b815233906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906358e6309f906100db90849060040161106d565b602060405180830381865afa1580156100f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011c9190611100565b610144578060405163083c2ed160e11b815260040161013b919061106d565b60405180910390fd5b6000339050600061018a85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061026092505050565b905060018160048111156101a0576101a0611122565b036101b7576101b2828888888861027c565b610257565b60008160048111156101cb576101cb611122565b036101dd576101b28288888888610402565b60028160048111156101f1576101f1611122565b03610203576101b2828888888861062b565b600381600481111561021757610217611122565b03610229576101b282888888886108f8565b600481600481111561023d5761023d611122565b0361024f576101b28288888888610ab7565b610257611138565b50505050505050565b6000818060200190518101906102769190611162565b92915050565b6000856001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156102bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e09190611195565b9250505060008061032685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c5492505050565b91509150600061033588610c76565b90506000846001600160a01b031663db74aa158b866040518363ffffffff1660e01b81526004016103679291906111e2565b6020604051808303816000875af1158015610386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103aa91906111fc565b9050818110156103d157808260405163c217d4a960e01b815260040161013b929190611215565b828110156103f657808360405163a59b8c3160e01b815260040161013b929190611215565b50505050505050505050565b604080516060810182526000808252602082018190529181019190915261045e83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c9192505050565b6040808501919091526001600160a01b03918216602085015291811683528151630b2339af60e21b8152915160009283928a1691632c8ce6bc916004808201926060929091908290030181865afa1580156104bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e19190611195565b925050915060006104fa826001600160a01b0316610cb8565b9050600061050789610c76565b905060006105158383610d1e565b905060006105228a610d31565b905060006105308383610d40565b9050876040015181111561055f5780886040015160405163039d13e760e61b815260040161013b929190611215565b801561057d57875161057d906001600160a01b038916908884610d57565b6000866001600160a01b031663db74aa158f8b602001516040518363ffffffff1660e01b81526004016105b19291906111e2565b6020604051808303816000875af11580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f491906111fc565b90508481101561061b57808560405163c217d4a960e01b815260040161013b929190611215565b5050505050505050505050505050565b60008061066d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c5492505050565b915091506000876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d59190611195565b9250505060006106ed826001600160a01b0316610cb8565b905060006107026106fd89610dc8565b610d31565b60408051600280825260608201835292935060009290916020830190803683375050604080516002808252606082018352939450600093909250906020830190803683370190505090508b6107578585610dd6565b8360008151811061076a5761076a611239565b602002602001018360008151811061078457610784611239565b6020026020010182815250826001600160a01b03166001600160a01b0316815250505086816000815181106107bb576107bb611239565b60200260200101516107cc8d610d31565b6107d69190611265565b836001815181106107e9576107e9611239565b602002602001018360018151811061080357610803611239565b60209081029190910101919091526001600160a01b03918216905260405163b0d8898160e01b815260009187169063b0d88981906108479086908690600401611278565b6000604051808303816000875af1158015610866573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261088e91908101906112fc565b905086816001815181106108a4576108a4611239565b602002602001015110156108e957806001815181106108c5576108c5611239565b6020026020010151876040516305221cf360e11b815260040161013b929190611215565b50505050505050505050505050565b600080600061093c85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610deb92505050565b925092509250600080896001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190611195565b925092505060006109b789610c76565b90506109cd6001600160a01b0384168387610e04565b60405163bcb7ea5d60e01b81526000906001600160a01b0384169063bcb7ea5d906109fc908f9060040161106d565b6020604051808303816000875af1158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f91906111fc565b905081811015610a6657808260405163042b0dcf60e31b815260040161013b929190611215565b600086610a728d610d31565b610a7c9190611265565b905085811015610aa3578086604051634e6ffe4760e11b815260040161013b929190611215565b6108e96001600160a01b0386168983610e04565b6000806000610afb85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610deb92505050565b9250925092506000610b0c88610c76565b90506000896001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610b4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b729190611195565b925050506000816001600160a01b031663db74aa158c886040518363ffffffff1660e01b8152600401610ba69291906111e2565b6020604051808303816000875af1158015610bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be991906111fc565b905083811015610c1057808460405163a59b8c3160e01b815260040161013b929190611215565b82610c1b82876113b9565b1015610c4757610c2b81866113b9565b8360405163c217d4a960e01b815260040161013b929190611215565b5050505050505050505050565b60008082806020019051810190610c6b91906113cc565b909590945092505050565b6000808213610c8d57610c888261140c565b610276565b5090565b600080600083806020019051810190610caa9190611428565b919790965090945092505050565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610cfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906111fc565b6000610d2a8383610e39565b9392505050565b600080821215610c8d57600080fd5b600081831015610d51576000610d2a565b50900390565b6040516001600160a01b0380851660248301528316604482015260648101829052610dc29085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610e6f565b50505050565b600061027682600019611478565b600082610de38184610f41565b949350505050565b600080600083806020019051810190610caa91906114a8565b6040516001600160a01b038316602482015260448101829052610e3490849063a9059cbb60e01b90606401610d8b565b505050565b600082600181610e51670de0b6b3a7640000866114ed565b610e5b91906113b9565b610e659190611265565b610d2a9190611504565b6000610ec4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610f599092919063ffffffff16565b805190915015610e345780806020019051810190610ee29190611100565b610e345760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161013b565b6000670de0b6b3a7640000600181610e5186866114ed565b6060610de38484600085856001600160a01b0385163b610fbb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161013b565b600080866001600160a01b03168587604051610fd7919061154a565b60006040518083038185875af1925050503d8060008114611014576040519150601f19603f3d011682016040523d82523d6000602084013e611019565b606091505b5091509150611029828286611034565b979650505050505050565b60608315611043575081610d2a565b8251156110535782518084602001fd5b8160405162461bcd60e51b815260040161013b9190611566565b6001600160a01b0391909116815260200190565b6000806000806060858703121561109757600080fd5b843593506020850135925060408501356001600160401b03808211156110bc57600080fd5b818701915087601f8301126110d057600080fd5b8135818111156110df57600080fd5b8860208285010111156110f157600080fd5b95989497505060200194505050565b60006020828403121561111257600080fd5b81518015158114610d2a57600080fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b80516005811061115d57600080fd5b919050565b60006020828403121561117457600080fd5b610d2a8261114e565b6001600160a01b038116811461119257600080fd5b50565b6000806000606084860312156111aa57600080fd5b83516111b58161117d565b60208501519093506111c68161117d565b60408501519092506111d78161117d565b809150509250925092565b6001600160a01b0392831681529116602082015260400190565b60006020828403121561120e57600080fd5b5051919050565b918252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156102765761027661124f565b604080825283519082018190526000906020906060840190828701845b828110156112ba5781516001600160a01b031684529284019290840190600101611295565b5050508381038285015284518082528583019183019060005b818110156112ef578351835292840192918401916001016112d3565b5090979650505050505050565b6000602080838503121561130f57600080fd5b82516001600160401b038082111561132657600080fd5b818501915085601f83011261133a57600080fd5b81518181111561134c5761134c611223565b8060051b604051601f19603f8301168101818110858211171561137157611371611223565b60405291825284820192508381018501918883111561138f57600080fd5b938501935b828510156113ad57845184529385019392850192611394565b98975050505050505050565b808201808211156102765761027661124f565b6000806000606084860312156113e157600080fd5b6113ea8461114e565b925060208401516113fa8161117d565b80925050604084015190509250925092565b6000600160ff1b82016114215761142161124f565b5060000390565b6000806000806080858703121561143e57600080fd5b6114478561114e565b935060208501516114578161117d565b60408601519093506114688161117d565b6060959095015193969295505050565b80820260008212600160ff1b841416156114945761149461124f565b81810583148215176102765761027661124f565b600080600080608085870312156114be57600080fd5b6114c78561114e565b935060208501516114d78161117d565b6040860151606090960151949790965092505050565b80820281158282048414176102765761027661124f565b60008261152157634e487b7160e01b600052601260045260246000fd5b500490565b60005b83811015611541578181015183820152602001611529565b50506000910152565b6000825161155c818460208701611526565b9190910192915050565b6020815260008251806020840152611585816040850160208701611526565b601f01601f1916919091016040019291505056fea2646970667358221220130f99ee842f06e2d4924378548798b7c580aa0235d5c5471f0763c429ecfbeb64736f6c63430008110033";
170
170
 
171
171
  type ActionCallbackConstructorParams =
172
172
  | [signer?: Signer]