@pendle/core-v2 6.3.2-swaphubtest → 6.3.2-swaphubtest3

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 (248) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  10. package/build/artifacts/contracts/LiquidityMining/PendleMerkleDistributor.sol/PendleMerkleDistributor.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/PendleMultiTokenMerkleDistributor.sol/PendleMultiTokenMerkleDistributor.dbg.json +1 -1
  12. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  15. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  17. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  19. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
  21. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  22. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  23. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  24. package/build/artifacts/contracts/core/Market/PendleMarketFactoryV6Upg.sol/PendleMarketFactoryV6Upg.dbg.json +1 -1
  25. package/build/artifacts/contracts/core/Market/PendleMarketV6.sol/PendleMarketV6.dbg.json +1 -1
  26. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  27. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  28. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/StandardizedYield/SYUtils.sol/SYUtils.dbg.json +1 -1
  30. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactoryUpg.sol/PendleYieldContractFactoryUpg.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeableV2.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeableV2.sol/BoringOwnableUpgradeableV2.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/libraries/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/libraries/StringLib.sol/StringLib.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/libraries/math/PMath.sol/PMath.dbg.json +1 -1
  47. package/build/artifacts/contracts/cross-chain/FixedPricePTAMM.sol/FixedPricePTAMM.dbg.json +1 -1
  48. package/build/artifacts/contracts/cross-chain/factory/hub/PendlePTOFTAdapterFactory.sol/PendlePTOFTAdapterFactory.dbg.json +1 -1
  49. package/build/artifacts/contracts/cross-chain/oftImpl/hub/OFTAdapterImpl.sol/OFTAdapterImpl.dbg.json +1 -1
  50. package/build/artifacts/contracts/cross-chain/oftImpl/spoke/PendleBridgedPrincipalToken.sol/PendleBridgedPrincipalToken.dbg.json +1 -1
  51. package/build/artifacts/contracts/cross-chain/swap-hub/DepositBox.sol/DepositBox.dbg.json +1 -1
  52. package/build/artifacts/contracts/cross-chain/swap-hub/PendleCrossChainSwapHub.sol/PendleCrossChainSwapHub.dbg.json +1 -1
  53. package/build/artifacts/contracts/cross-chain/swap-hub/PendleCrossChainSwapHub.sol/PendleCrossChainSwapHub.json +143 -262
  54. package/build/artifacts/contracts/cross-chain/swap-hub/SwapHubBase.sol/SwapHubBase.dbg.json +1 -1
  55. package/build/artifacts/contracts/cross-chain/swap-hub/SwapHubBase.sol/SwapHubBase.json +141 -260
  56. package/build/artifacts/contracts/cross-chain/swap-hub/swap/IPSwapExecutor.sol/IPSwapExecutor.dbg.json +1 -1
  57. package/build/artifacts/contracts/cross-chain/swap-hub/swap/SwapExecutor.sol/SwapExecutor.dbg.json +1 -1
  58. package/build/artifacts/contracts/cross-chain/swap-hub/swap/SwapExecutor.sol/SwapExecutor.json +2 -2
  59. package/build/artifacts/contracts/deprecated/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  60. package/build/artifacts/contracts/deprecated/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.dbg.json +1 -1
  61. package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.dbg.json +1 -1
  62. package/build/artifacts/contracts/interfaces/ILPWrapper.sol/ILPWrapper.dbg.json +1 -1
  63. package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
  64. package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
  65. package/build/artifacts/contracts/interfaces/IMarketSweed.sol/IMarketSweed.dbg.json +1 -1
  66. package/build/artifacts/contracts/interfaces/IOwnable.sol/IOwnable.dbg.json +1 -1
  67. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiqV3.sol/IPActionAddRemoveLiqV3.dbg.json +1 -1
  68. package/build/artifacts/contracts/interfaces/IPActionCallbackV3.sol/IPActionCallbackV3.dbg.json +1 -1
  69. package/build/artifacts/contracts/interfaces/IPActionInfoStatic.sol/IPActionInfoStatic.dbg.json +1 -1
  70. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  71. package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
  72. package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.dbg.json +1 -1
  73. package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.dbg.json +1 -1
  74. package/build/artifacts/contracts/interfaces/IPActionSimple.sol/IPActionSimple.dbg.json +1 -1
  75. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IPActionStorageV4.sol/IPActionStorageV4.dbg.json +1 -1
  77. package/build/artifacts/contracts/interfaces/IPActionSwapPTV3.sol/IPActionSwapPTV3.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IPActionSwapYTV3.sol/IPActionSwapYTV3.dbg.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IPActionVePendleStatic.sol/IPActionVePendleStatic.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.dbg.json +1 -1
  81. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionAddRemoveLiqV3Events.dbg.json +1 -1
  82. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionMiscV3Events.dbg.json +1 -1
  83. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionStorageEvents.dbg.json +1 -1
  84. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapPTV3Events.dbg.json +1 -1
  85. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapYTV3Events.dbg.json +1 -1
  86. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPAllEventsV3.dbg.json +1 -1
  87. package/build/artifacts/contracts/interfaces/IPBridgedPrincipalToken.sol/IPBridgedPrincipalToken.dbg.json +1 -1
  88. package/build/artifacts/contracts/interfaces/IPChainlinkOracle.sol/IPChainlinkOracle.dbg.json +1 -1
  89. package/build/artifacts/contracts/interfaces/IPChainlinkOracleEssential.sol/IPChainlinkOracleEssential.dbg.json +1 -1
  90. package/build/artifacts/contracts/interfaces/IPChainlinkOracleFactory.sol/IPChainlinkOracleFactory.dbg.json +1 -1
  91. package/build/artifacts/contracts/interfaces/IPChainlinkOracleWithQuote.sol/IPChainlinkOracleWithQuote.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/IPCommonPoolDeployHelperV2.sol/IPCommonPoolDeployHelperV2.dbg.json +1 -1
  93. package/build/artifacts/contracts/interfaces/IPCommonSYFactory.sol/IPCommonSYFactory.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IPCrossChainSwapHub.sol/IPCrossChainSwapHub.dbg.json +1 -1
  95. package/build/artifacts/contracts/interfaces/IPCrossChainSwapHub.sol/IPCrossChainSwapHub.json +140 -259
  96. package/build/artifacts/contracts/interfaces/IPDepositBox.sol/IPDepositBox.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/IPExchangeRateOracle.sol/IPExchangeRateOracle.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/IPExchangeRateOracleApp.sol/IPExchangeRateOracleApp.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/IPFeeDistributorV2.sol/IPFeeDistributorV2.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IPFixedPricePTAMM.sol/IPFixedPricePTAMM.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IPFixedPricePTAMM.sol/IPFixedPricePTAMMSwapCallback.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IPGovernanceProxy.sol/IPGovernanceProxy.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/IPLPWrapperFactory.sol/IPLPWrapperFactory.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitOrderType.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouter.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouterCallback.dbg.json +1 -1
  113. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  115. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/IPMerkleDistributor.sol/IPMerkleDistributor.dbg.json +1 -1
  117. package/build/artifacts/contracts/interfaces/IPMiniDiamond.sol/IPMiniDiamond.dbg.json +1 -1
  118. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
  119. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
  120. package/build/artifacts/contracts/interfaces/IPMultiTokenMerkleDistributor.sol/IPMultiTokenMerkleDistributor.dbg.json +1 -1
  121. package/build/artifacts/contracts/interfaces/IPOffchainStorage.sol/IPOffchainStorage.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/IPOracleForSy.sol/IPOracleForSy.dbg.json +1 -1
  123. package/build/artifacts/contracts/interfaces/IPPTOFTAdapterFactory.sol/IPPTOFTAdapterFactory.dbg.json +1 -1
  124. package/build/artifacts/contracts/interfaces/IPPYLpOracle.sol/IPPYLpOracle.dbg.json +1 -1
  125. package/build/artifacts/contracts/interfaces/IPPausingInterface.sol/IPPausingInterface.dbg.json +1 -1
  126. package/build/artifacts/contracts/interfaces/IPPoolDeployHelperV2.sol/IPPoolDeployHelperV2.dbg.json +1 -1
  127. package/build/artifacts/contracts/interfaces/IPPriceFeed.sol/IPPriceFeed.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  129. package/build/artifacts/contracts/interfaces/IPReflector.sol/IPReflector.dbg.json +1 -1
  130. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  131. package/build/artifacts/contracts/interfaces/IPTokenWithSupplyCap.sol/IPTokenWithSupplyCap.dbg.json +1 -1
  132. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  133. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  134. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  135. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  136. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  137. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.dbg.json +1 -1
  138. package/build/artifacts/contracts/interfaces/IRedstonePriceFeed.sol/IRedstonePriceFeed.dbg.json +1 -1
  139. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  140. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  141. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  142. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  143. package/build/artifacts/contracts/limit/LimitMathCore.sol/LimitMathCore.dbg.json +1 -1
  144. package/build/artifacts/contracts/limit/LimitRouterBase.sol/LimitRouterBase.dbg.json +1 -1
  145. package/build/artifacts/contracts/limit/helpers/NonceManager.sol/NonceManager.dbg.json +1 -1
  146. package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.dbg.json +1 -1
  147. package/build/artifacts/contracts/offchain-helpers/AutomateReady.sol/AutomateReady.dbg.json +1 -1
  148. package/build/artifacts/contracts/offchain-helpers/AutomateReady.sol/IAutomate.dbg.json +1 -1
  149. package/build/artifacts/contracts/offchain-helpers/AutomateReady.sol/IOpsProxyFactory.dbg.json +1 -1
  150. package/build/artifacts/contracts/offchain-helpers/AutomateReady.sol/ITaskTreasuryUpgradable.dbg.json +1 -1
  151. package/build/artifacts/contracts/offchain-helpers/BalanceReader.sol/BalanceReader.dbg.json +1 -1
  152. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
  153. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
  154. package/build/artifacts/contracts/offchain-helpers/BytesLib.sol/BytesLib.dbg.json +1 -1
  155. package/build/artifacts/contracts/offchain-helpers/EmptyUUPS.sol/EmptyUUPS.dbg.json +1 -1
  156. package/build/artifacts/contracts/offchain-helpers/ExpiredLpPtRedeemer.sol/ExpiredLpPtRedeemer.dbg.json +1 -1
  157. package/build/artifacts/contracts/offchain-helpers/LegacyNFTHelper.sol/LegacyNFTHelper.dbg.json +1 -1
  158. package/build/artifacts/contracts/offchain-helpers/LegacyNFTHelper.sol/StarNFTV1.dbg.json +1 -1
  159. package/build/artifacts/contracts/offchain-helpers/LimitBackendHelperV2.sol/LimitBackendHelperV2.dbg.json +1 -1
  160. package/build/artifacts/contracts/offchain-helpers/MarketSweed.sol/MarketSweed.dbg.json +1 -1
  161. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +1 -1
  162. package/build/artifacts/contracts/offchain-helpers/PendleExchangeRateOracle.sol/PendleExchangeRateOracle.dbg.json +1 -1
  163. package/build/artifacts/contracts/offchain-helpers/PendleFeeSetter.sol/PendleFeeSetter.dbg.json +1 -1
  164. package/build/artifacts/contracts/offchain-helpers/PendleGovernanceProxy.sol/PendleGovernanceProxy.dbg.json +1 -1
  165. package/build/artifacts/contracts/offchain-helpers/PendleLPWrapper.sol/PendleLPWrapper.dbg.json +1 -1
  166. package/build/artifacts/contracts/offchain-helpers/PendleLPWrapperFactory.sol/PendleLPWrapperFactory.dbg.json +1 -1
  167. package/build/artifacts/contracts/offchain-helpers/PendleMulticallOwnerV1.sol/PendleMulticallOwnerV1.dbg.json +1 -1
  168. package/build/artifacts/contracts/offchain-helpers/PendleMulticallV1.sol/PendleMulticallV1.dbg.json +1 -1
  169. package/build/artifacts/contracts/offchain-helpers/PendleMulticallV2.sol/PendleMulticallV2.dbg.json +1 -1
  170. package/build/artifacts/contracts/offchain-helpers/PendleOffchainStorage.sol/PendleOffchainStorage.dbg.json +1 -1
  171. package/build/artifacts/contracts/offchain-helpers/PendleWstETHPriceFeed.sol/PendleWstETHPriceFeed.dbg.json +1 -1
  172. package/build/artifacts/contracts/offchain-helpers/SimulateHelper.sol/SimulateHelper.dbg.json +1 -1
  173. package/build/artifacts/contracts/offchain-helpers/SupplyCapReader.sol/IPossibleSupplyCapInterface.dbg.json +1 -1
  174. package/build/artifacts/contracts/offchain-helpers/SupplyCapReader.sol/SupplyCapReader.dbg.json +1 -1
  175. package/build/artifacts/contracts/offchain-helpers/deploy/PendleCommonPoolDeployHelperV2.sol/PendleCommonPoolDeployHelperV2.dbg.json +1 -1
  176. package/build/artifacts/contracts/offchain-helpers/deploy/PendleCommonSYFactory.sol/PendleCommonSYFactory.dbg.json +1 -1
  177. package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.dbg.json +1 -1
  178. package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelperV2.sol/PendlePoolDeployHelperV2.dbg.json +1 -1
  179. package/build/artifacts/contracts/offchain-helpers/deploy/lib/MarketDeployLib.sol/MarketDeployLib.dbg.json +1 -1
  180. package/build/artifacts/contracts/offchain-helpers/errors/SDKErrorsDirectory.sol/SDKErrorsDirectory.dbg.json +1 -1
  181. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  182. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  183. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  184. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  185. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  186. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  187. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  188. package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtInLibV1.dbg.json +1 -1
  189. package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtOutLibV1.dbg.json +1 -1
  190. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  191. package/build/artifacts/contracts/oracles/CrossChainOracle/base/PendleCrossChainOracleBaseApp_Init.sol/PendleCrossChainOracleBaseApp_Init.dbg.json +1 -1
  192. package/build/artifacts/contracts/oracles/CrossChainOracle/exchangeRate/PendleExchangeRateOracleApp.sol/PendleExchangeRateOracleApp.dbg.json +1 -1
  193. package/build/artifacts/contracts/oracles/CrossChainOracle/exchangeRate/PendleExchangeRateOracleV2.sol/PendleExchangeRateOracleV2.dbg.json +1 -1
  194. package/build/artifacts/contracts/oracles/CrossChainOracle/libraries/ExchangeRateMsgCodec.sol/ExchangeRateMsgCodec.dbg.json +1 -1
  195. package/build/artifacts/contracts/oracles/PtYtLpOracle/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
  196. package/build/artifacts/contracts/oracles/PtYtLpOracle/PendlePYLpOracle.sol/PendlePYLpOracle.dbg.json +1 -1
  197. package/build/artifacts/contracts/oracles/PtYtLpOracle/PendlePYOracleLib.sol/PendlePYOracleLib.dbg.json +1 -1
  198. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracle.sol/PendleChainlinkOracle.dbg.json +1 -1
  199. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleFactory.sol/PendleChainlinkOracleFactory.dbg.json +1 -1
  200. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleWithQuote.sol/PendleChainlinkOracleWithQuote.dbg.json +1 -1
  201. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringLpSeller.sol/BoringLpSeller.dbg.json +1 -1
  202. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.dbg.json +1 -1
  203. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.dbg.json +1 -1
  204. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
  205. package/build/artifacts/contracts/oracles/StatelessWrapper/PendleLinearDiscountOracleWrapper.sol/PendleLinearDiscountOracleWrapper.dbg.json +1 -1
  206. package/build/artifacts/contracts/oracles/StatelessWrapper/PendleSparkLinearDiscountOracleFactoryWrapper.sol/PendleSparkLinearDiscountOracleFactoryWrapper.dbg.json +1 -1
  207. package/build/artifacts/contracts/oracles/internal/PendleBoringOneracle.sol/PendleBoringOneracle.dbg.json +1 -1
  208. package/build/artifacts/contracts/oracles/internal/PendleBoringSolvBTCOneracle.sol/PendleBoringSolvBTCOneracle.dbg.json +1 -1
  209. package/build/artifacts/contracts/oracles/internal/PendleLpLinearDiscountOracle.sol/LPExpiry.dbg.json +1 -1
  210. package/build/artifacts/contracts/oracles/internal/PendleLpLinearDiscountOracle.sol/PendleLpLinearDiscountOracle.dbg.json +1 -1
  211. package/build/artifacts/contracts/oracles/internal/PendleLpLinearDiscountOracleFactory.sol/PendleLpLinearDiscountOracleFactory.dbg.json +1 -1
  212. package/build/artifacts/contracts/oracles/internal/PendleRedStoneRateOracleAdapter.sol/PendleRedStoneRateOracleAdapter.dbg.json +1 -1
  213. package/build/artifacts/contracts/oracles/internal/PendleSparkLinearDiscountOracle.sol/PTExpiry.dbg.json +1 -1
  214. package/build/artifacts/contracts/oracles/internal/PendleSparkLinearDiscountOracle.sol/PendleSparkLinearDiscountOracle.dbg.json +1 -1
  215. package/build/artifacts/contracts/oracles/internal/PendleSparkLinearDiscountOracleFactory.sol/PendleSparkLinearDiscountOracleFactory.dbg.json +1 -1
  216. package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.dbg.json +1 -1
  217. package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.dbg.json +1 -1
  218. package/build/artifacts/contracts/router/Reflector.sol/Reflector.dbg.json +1 -1
  219. package/build/artifacts/contracts/router/RouterStorage.sol/RouterStorage.dbg.json +1 -1
  220. package/build/artifacts/contracts/router/base/ActionBase.sol/ActionBase.dbg.json +1 -1
  221. package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.dbg.json +1 -1
  222. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  223. package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.dbg.json +1 -1
  224. package/build/artifacts/contracts/router/math/MarketApproxEstimateLib.sol/MarketApproxEstimateLib.dbg.json +1 -1
  225. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.dbg.json +1 -1
  226. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.dbg.json +1 -1
  227. package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtInLibV2.dbg.json +1 -1
  228. package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtOutLibV2.dbg.json +1 -1
  229. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +1 -1
  230. package/build/artifacts/contracts/router/swap-aggregator/OKXScaleHelper.sol/IOKXDexRouter.dbg.json +1 -1
  231. package/build/artifacts/contracts/router/swap-aggregator/OKXScaleHelper.sol/OKXScaleHelper.dbg.json +1 -1
  232. package/build/artifacts/contracts/router/swap-aggregator/ParaswapScaleHelper.sol/IAugustusV6.dbg.json +1 -1
  233. package/build/artifacts/contracts/router/swap-aggregator/ParaswapScaleHelper.sol/ParaswapScaleHelper.dbg.json +1 -1
  234. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IKyberScalingHelper.dbg.json +1 -1
  235. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IOdosRouterV2.dbg.json +1 -1
  236. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
  237. package/contracts/cross-chain/swap-hub/PendleCrossChainSwapHub.sol +81 -68
  238. package/contracts/cross-chain/swap-hub/SwapHubBase.sol +56 -95
  239. package/contracts/cross-chain/swap-hub/swap/SwapExecutor.sol +2 -7
  240. package/contracts/interfaces/IPCrossChainSwapHub.sol +34 -51
  241. package/package.json +1 -1
  242. package/typechain-types/IPCrossChainSwapHub.ts +172 -295
  243. package/typechain-types/PendleCrossChainSwapHub.ts +172 -295
  244. package/typechain-types/SwapHubBase.ts +172 -295
  245. package/typechain-types/factories/IPCrossChainSwapHub__factory.ts +140 -261
  246. package/typechain-types/factories/PendleCrossChainSwapHub__factory.ts +142 -263
  247. package/typechain-types/factories/SwapExecutor__factory.ts +1 -1
  248. package/typechain-types/factories/SwapHubBase__factory.ts +141 -262
@@ -19,31 +19,11 @@
19
19
  "stateMutability": "nonpayable",
20
20
  "type": "constructor"
21
21
  },
22
- {
23
- "inputs": [],
24
- "name": "ExcessiveNativeFee",
25
- "type": "error"
26
- },
27
22
  {
28
23
  "inputs": [],
29
24
  "name": "InsufficientTokenReceived",
30
25
  "type": "error"
31
26
  },
32
- {
33
- "inputs": [],
34
- "name": "IntentExecuted",
35
- "type": "error"
36
- },
37
- {
38
- "inputs": [],
39
- "name": "IntentHashMismatch",
40
- "type": "error"
41
- },
42
- {
43
- "inputs": [],
44
- "name": "InvalidAmountIn",
45
- "type": "error"
46
- },
47
27
  {
48
28
  "inputs": [],
49
29
  "name": "InvalidNonce",
@@ -51,12 +31,12 @@
51
31
  },
52
32
  {
53
33
  "inputs": [],
54
- "name": "InvalidSignature",
34
+ "name": "InvalidReceiver",
55
35
  "type": "error"
56
36
  },
57
37
  {
58
38
  "inputs": [],
59
- "name": "InvalidValidator",
39
+ "name": "InvalidSignature",
60
40
  "type": "error"
61
41
  },
62
42
  {
@@ -94,14 +74,20 @@
94
74
  {
95
75
  "indexed": false,
96
76
  "internalType": "uint256",
97
- "name": "bridgeAmount",
77
+ "name": "amountBridge",
98
78
  "type": "uint256"
99
79
  },
100
80
  {
101
81
  "indexed": false,
102
82
  "internalType": "uint256",
103
- "name": "feeAmount",
83
+ "name": "amountFee",
104
84
  "type": "uint256"
85
+ },
86
+ {
87
+ "indexed": false,
88
+ "internalType": "bool",
89
+ "name": "pullFromOwner",
90
+ "type": "bool"
105
91
  }
106
92
  ],
107
93
  "name": "BridgeToken",
@@ -122,12 +108,6 @@
122
108
  "name": "boxId",
123
109
  "type": "uint32"
124
110
  },
125
- {
126
- "indexed": false,
127
- "internalType": "bytes32",
128
- "name": "intentHash",
129
- "type": "bytes32"
130
- },
131
111
  {
132
112
  "indexed": false,
133
113
  "internalType": "address",
@@ -140,16 +120,22 @@
140
120
  "name": "amountSpent",
141
121
  "type": "uint256"
142
122
  },
123
+ {
124
+ "indexed": false,
125
+ "internalType": "uint256",
126
+ "name": "amountFee",
127
+ "type": "uint256"
128
+ },
143
129
  {
144
130
  "indexed": false,
145
131
  "internalType": "address",
146
- "name": "pt",
132
+ "name": "ptAdapter",
147
133
  "type": "address"
148
134
  },
149
135
  {
150
136
  "indexed": false,
151
137
  "internalType": "address",
152
- "name": "ptAdapter",
138
+ "name": "pt",
153
139
  "type": "address"
154
140
  },
155
141
  {
@@ -157,6 +143,12 @@
157
143
  "internalType": "uint256",
158
144
  "name": "netPtReceived",
159
145
  "type": "uint256"
146
+ },
147
+ {
148
+ "indexed": false,
149
+ "internalType": "bool",
150
+ "name": "pullFromOwner",
151
+ "type": "bool"
160
152
  }
161
153
  ],
162
154
  "name": "BuyCrossChainPt",
@@ -219,25 +211,6 @@
219
211
  "name": "SetExecutor",
220
212
  "type": "event"
221
213
  },
222
- {
223
- "anonymous": false,
224
- "inputs": [
225
- {
226
- "indexed": true,
227
- "internalType": "address",
228
- "name": "validator",
229
- "type": "address"
230
- },
231
- {
232
- "indexed": false,
233
- "internalType": "bool",
234
- "name": "isValidator",
235
- "type": "bool"
236
- }
237
- ],
238
- "name": "SetValidator",
239
- "type": "event"
240
- },
241
214
  {
242
215
  "anonymous": false,
243
216
  "inputs": [
@@ -265,6 +238,12 @@
265
238
  "name": "amountSpent",
266
239
  "type": "uint256"
267
240
  },
241
+ {
242
+ "indexed": false,
243
+ "internalType": "uint256",
244
+ "name": "amountFee",
245
+ "type": "uint256"
246
+ },
268
247
  {
269
248
  "indexed": false,
270
249
  "internalType": "address",
@@ -276,6 +255,18 @@
276
255
  "internalType": "uint256",
277
256
  "name": "netTokenReceived",
278
257
  "type": "uint256"
258
+ },
259
+ {
260
+ "indexed": false,
261
+ "internalType": "bool",
262
+ "name": "pullFromOwner",
263
+ "type": "bool"
264
+ },
265
+ {
266
+ "indexed": false,
267
+ "internalType": "bool",
268
+ "name": "sendToOwner",
269
+ "type": "bool"
279
270
  }
280
271
  ],
281
272
  "name": "SwapToken",
@@ -296,12 +287,6 @@
296
287
  "name": "boxId",
297
288
  "type": "uint32"
298
289
  },
299
- {
300
- "indexed": false,
301
- "internalType": "address",
302
- "name": "receiver",
303
- "type": "address"
304
- },
305
290
  {
306
291
  "indexed": false,
307
292
  "internalType": "address",
@@ -311,13 +296,13 @@
311
296
  {
312
297
  "indexed": false,
313
298
  "internalType": "uint256",
314
- "name": "withdrawAmount",
299
+ "name": "amountWithdraw",
315
300
  "type": "uint256"
316
301
  },
317
302
  {
318
303
  "indexed": false,
319
304
  "internalType": "uint256",
320
- "name": "feeAmount",
305
+ "name": "amountFee",
321
306
  "type": "uint256"
322
307
  }
323
308
  ],
@@ -394,14 +379,19 @@
394
379
  },
395
380
  {
396
381
  "internalType": "uint256",
397
- "name": "bridgeAmount",
382
+ "name": "amountBridge",
398
383
  "type": "uint256"
399
384
  },
400
385
  {
401
386
  "internalType": "uint256",
402
- "name": "feeAmount",
387
+ "name": "amountFee",
403
388
  "type": "uint256"
404
389
  },
390
+ {
391
+ "internalType": "bool",
392
+ "name": "pullFromOwner",
393
+ "type": "bool"
394
+ },
405
395
  {
406
396
  "internalType": "address",
407
397
  "name": "bridgeExtRouter",
@@ -444,12 +434,12 @@
444
434
  },
445
435
  {
446
436
  "internalType": "uint256",
447
- "name": "salt",
437
+ "name": "expiry",
448
438
  "type": "uint256"
449
439
  },
450
440
  {
451
441
  "internalType": "uint256",
452
- "name": "expiry",
442
+ "name": "nonce",
453
443
  "type": "uint256"
454
444
  },
455
445
  {
@@ -459,13 +449,13 @@
459
449
  },
460
450
  {
461
451
  "internalType": "uint256",
462
- "name": "maxAmountSpent",
452
+ "name": "amountSpent",
463
453
  "type": "uint256"
464
454
  },
465
455
  {
466
- "internalType": "address",
467
- "name": "pt",
468
- "type": "address"
456
+ "internalType": "uint256",
457
+ "name": "amountFee",
458
+ "type": "uint256"
469
459
  },
470
460
  {
471
461
  "internalType": "address",
@@ -479,45 +469,18 @@
479
469
  },
480
470
  {
481
471
  "internalType": "uint32",
482
- "name": "dstLzEid",
472
+ "name": "dstEid",
483
473
  "type": "uint32"
484
474
  },
485
475
  {
486
476
  "internalType": "bytes32",
487
477
  "name": "receiver",
488
478
  "type": "bytes32"
489
- }
490
- ],
491
- "internalType": "struct IPCrossChainSwapHub.BuyCrossChainPtIntent",
492
- "name": "intent",
493
- "type": "tuple"
494
- },
495
- {
496
- "internalType": "bytes",
497
- "name": "intentSig",
498
- "type": "bytes"
499
- },
500
- {
501
- "components": [
502
- {
503
- "internalType": "address",
504
- "name": "validator",
505
- "type": "address"
506
- },
507
- {
508
- "internalType": "bytes32",
509
- "name": "intentHash",
510
- "type": "bytes32"
511
479
  },
512
480
  {
513
- "internalType": "uint256",
514
- "name": "amountSpent",
515
- "type": "uint256"
516
- },
517
- {
518
- "internalType": "uint256",
519
- "name": "feeAmount",
520
- "type": "uint256"
481
+ "internalType": "bool",
482
+ "name": "pullFromOwner",
483
+ "type": "bool"
521
484
  },
522
485
  {
523
486
  "internalType": "address",
@@ -533,20 +496,15 @@
533
496
  "internalType": "bytes",
534
497
  "name": "swapCalldata",
535
498
  "type": "bytes"
536
- },
537
- {
538
- "internalType": "uint256",
539
- "name": "expiry",
540
- "type": "uint256"
541
499
  }
542
500
  ],
543
- "internalType": "struct IPCrossChainSwapHub.ExecuteBuyCrossChainPtMessage",
544
- "name": "execMsg",
501
+ "internalType": "struct IPCrossChainSwapHub.BuyCrossChainPtMessage",
502
+ "name": "ms",
545
503
  "type": "tuple"
546
504
  },
547
505
  {
548
506
  "internalType": "bytes",
549
- "name": "execSig",
507
+ "name": "sig",
550
508
  "type": "bytes"
551
509
  }
552
510
  ],
@@ -586,6 +544,11 @@
586
544
  "internalType": "bytes32",
587
545
  "name": "salt",
588
546
  "type": "bytes32"
547
+ },
548
+ {
549
+ "internalType": "bool",
550
+ "name": "deployed",
551
+ "type": "bool"
589
552
  }
590
553
  ],
591
554
  "stateMutability": "view",
@@ -668,6 +631,11 @@
668
631
  "name": "amountSpent",
669
632
  "type": "uint256"
670
633
  },
634
+ {
635
+ "internalType": "uint256",
636
+ "name": "amountFee",
637
+ "type": "uint256"
638
+ },
671
639
  {
672
640
  "internalType": "address",
673
641
  "name": "tokenReceived",
@@ -679,9 +647,14 @@
679
647
  "type": "uint256"
680
648
  },
681
649
  {
682
- "internalType": "uint256",
683
- "name": "feeAmount",
684
- "type": "uint256"
650
+ "internalType": "bool",
651
+ "name": "pullFromOwner",
652
+ "type": "bool"
653
+ },
654
+ {
655
+ "internalType": "bool",
656
+ "name": "sendToOwner",
657
+ "type": "bool"
685
658
  },
686
659
  {
687
660
  "internalType": "address",
@@ -721,46 +694,41 @@
721
694
  "components": [
722
695
  {
723
696
  "internalType": "address",
724
- "name": "validator",
697
+ "name": "owner",
725
698
  "type": "address"
726
699
  },
727
700
  {
728
- "internalType": "bytes32",
729
- "name": "intentHash",
730
- "type": "bytes32"
701
+ "internalType": "uint32",
702
+ "name": "boxId",
703
+ "type": "uint32"
731
704
  },
732
705
  {
733
706
  "internalType": "uint256",
734
- "name": "amountSpent",
707
+ "name": "expiry",
735
708
  "type": "uint256"
736
709
  },
737
710
  {
738
711
  "internalType": "uint256",
739
- "name": "feeAmount",
712
+ "name": "nonce",
740
713
  "type": "uint256"
741
714
  },
742
715
  {
743
716
  "internalType": "address",
744
- "name": "swapExecutor",
745
- "type": "address"
746
- },
747
- {
748
- "internalType": "address",
749
- "name": "swapExtRouter",
717
+ "name": "token",
750
718
  "type": "address"
751
719
  },
752
720
  {
753
- "internalType": "bytes",
754
- "name": "swapCalldata",
755
- "type": "bytes"
721
+ "internalType": "uint256",
722
+ "name": "amountWithdraw",
723
+ "type": "uint256"
756
724
  },
757
725
  {
758
726
  "internalType": "uint256",
759
- "name": "expiry",
727
+ "name": "amountFee",
760
728
  "type": "uint256"
761
729
  }
762
730
  ],
763
- "internalType": "struct IPCrossChainSwapHub.ExecuteBuyCrossChainPtMessage",
731
+ "internalType": "struct IPCrossChainSwapHub.WithdrawTokenMessage",
764
732
  "name": "message",
765
733
  "type": "tuple"
766
734
  }
@@ -792,12 +760,12 @@
792
760
  },
793
761
  {
794
762
  "internalType": "uint256",
795
- "name": "salt",
763
+ "name": "expiry",
796
764
  "type": "uint256"
797
765
  },
798
766
  {
799
767
  "internalType": "uint256",
800
- "name": "expiry",
768
+ "name": "nonce",
801
769
  "type": "uint256"
802
770
  },
803
771
  {
@@ -807,13 +775,13 @@
807
775
  },
808
776
  {
809
777
  "internalType": "uint256",
810
- "name": "maxAmountSpent",
778
+ "name": "amountSpent",
811
779
  "type": "uint256"
812
780
  },
813
781
  {
814
- "internalType": "address",
815
- "name": "pt",
816
- "type": "address"
782
+ "internalType": "uint256",
783
+ "name": "amountFee",
784
+ "type": "uint256"
817
785
  },
818
786
  {
819
787
  "internalType": "address",
@@ -827,82 +795,36 @@
827
795
  },
828
796
  {
829
797
  "internalType": "uint32",
830
- "name": "dstLzEid",
798
+ "name": "dstEid",
831
799
  "type": "uint32"
832
800
  },
833
801
  {
834
802
  "internalType": "bytes32",
835
803
  "name": "receiver",
836
804
  "type": "bytes32"
837
- }
838
- ],
839
- "internalType": "struct IPCrossChainSwapHub.BuyCrossChainPtIntent",
840
- "name": "intent",
841
- "type": "tuple"
842
- }
843
- ],
844
- "name": "hashTypedData",
845
- "outputs": [
846
- {
847
- "internalType": "bytes32",
848
- "name": "",
849
- "type": "bytes32"
850
- }
851
- ],
852
- "stateMutability": "view",
853
- "type": "function"
854
- },
855
- {
856
- "inputs": [
857
- {
858
- "components": [
859
- {
860
- "internalType": "address",
861
- "name": "owner",
862
- "type": "address"
863
- },
864
- {
865
- "internalType": "uint32",
866
- "name": "boxId",
867
- "type": "uint32"
868
805
  },
869
806
  {
870
- "internalType": "uint256",
871
- "name": "expiry",
872
- "type": "uint256"
873
- },
874
- {
875
- "internalType": "uint256",
876
- "name": "nonce",
877
- "type": "uint256"
807
+ "internalType": "bool",
808
+ "name": "pullFromOwner",
809
+ "type": "bool"
878
810
  },
879
811
  {
880
812
  "internalType": "address",
881
- "name": "token",
813
+ "name": "swapExecutor",
882
814
  "type": "address"
883
815
  },
884
- {
885
- "internalType": "uint256",
886
- "name": "bridgeAmount",
887
- "type": "uint256"
888
- },
889
- {
890
- "internalType": "uint256",
891
- "name": "feeAmount",
892
- "type": "uint256"
893
- },
894
816
  {
895
817
  "internalType": "address",
896
- "name": "bridgeExtRouter",
818
+ "name": "swapExtRouter",
897
819
  "type": "address"
898
820
  },
899
821
  {
900
822
  "internalType": "bytes",
901
- "name": "bridgeCalldata",
823
+ "name": "swapCalldata",
902
824
  "type": "bytes"
903
825
  }
904
826
  ],
905
- "internalType": "struct IPCrossChainSwapHub.BridgeTokenMessage",
827
+ "internalType": "struct IPCrossChainSwapHub.BuyCrossChainPtMessage",
906
828
  "name": "message",
907
829
  "type": "tuple"
908
830
  }
@@ -942,11 +864,6 @@
942
864
  "name": "nonce",
943
865
  "type": "uint256"
944
866
  },
945
- {
946
- "internalType": "address",
947
- "name": "receiver",
948
- "type": "address"
949
- },
950
867
  {
951
868
  "internalType": "address",
952
869
  "name": "token",
@@ -954,16 +871,31 @@
954
871
  },
955
872
  {
956
873
  "internalType": "uint256",
957
- "name": "withdrawAmount",
874
+ "name": "amountBridge",
958
875
  "type": "uint256"
959
876
  },
960
877
  {
961
878
  "internalType": "uint256",
962
- "name": "feeAmount",
879
+ "name": "amountFee",
963
880
  "type": "uint256"
881
+ },
882
+ {
883
+ "internalType": "bool",
884
+ "name": "pullFromOwner",
885
+ "type": "bool"
886
+ },
887
+ {
888
+ "internalType": "address",
889
+ "name": "bridgeExtRouter",
890
+ "type": "address"
891
+ },
892
+ {
893
+ "internalType": "bytes",
894
+ "name": "bridgeCalldata",
895
+ "type": "bytes"
964
896
  }
965
897
  ],
966
- "internalType": "struct IPCrossChainSwapHub.WithdrawTokenMessage",
898
+ "internalType": "struct IPCrossChainSwapHub.BridgeTokenMessage",
967
899
  "name": "message",
968
900
  "type": "tuple"
969
901
  }
@@ -1011,44 +943,6 @@
1011
943
  "stateMutability": "view",
1012
944
  "type": "function"
1013
945
  },
1014
- {
1015
- "inputs": [
1016
- {
1017
- "internalType": "bytes32",
1018
- "name": "intentHash",
1019
- "type": "bytes32"
1020
- }
1021
- ],
1022
- "name": "isIntentExecuted",
1023
- "outputs": [
1024
- {
1025
- "internalType": "bool",
1026
- "name": "",
1027
- "type": "bool"
1028
- }
1029
- ],
1030
- "stateMutability": "view",
1031
- "type": "function"
1032
- },
1033
- {
1034
- "inputs": [
1035
- {
1036
- "internalType": "address",
1037
- "name": "validator",
1038
- "type": "address"
1039
- }
1040
- ],
1041
- "name": "isValidator",
1042
- "outputs": [
1043
- {
1044
- "internalType": "bool",
1045
- "name": "",
1046
- "type": "bool"
1047
- }
1048
- ],
1049
- "stateMutability": "view",
1050
- "type": "function"
1051
- },
1052
946
  {
1053
947
  "inputs": [],
1054
948
  "name": "owner",
@@ -1112,24 +1006,6 @@
1112
1006
  "stateMutability": "nonpayable",
1113
1007
  "type": "function"
1114
1008
  },
1115
- {
1116
- "inputs": [
1117
- {
1118
- "internalType": "address",
1119
- "name": "validator",
1120
- "type": "address"
1121
- },
1122
- {
1123
- "internalType": "bool",
1124
- "name": "isValidator_",
1125
- "type": "bool"
1126
- }
1127
- ],
1128
- "name": "setValidator",
1129
- "outputs": [],
1130
- "stateMutability": "nonpayable",
1131
- "type": "function"
1132
- },
1133
1009
  {
1134
1010
  "inputs": [
1135
1011
  {
@@ -1164,6 +1040,11 @@
1164
1040
  "name": "amountSpent",
1165
1041
  "type": "uint256"
1166
1042
  },
1043
+ {
1044
+ "internalType": "uint256",
1045
+ "name": "amountFee",
1046
+ "type": "uint256"
1047
+ },
1167
1048
  {
1168
1049
  "internalType": "address",
1169
1050
  "name": "tokenReceived",
@@ -1175,9 +1056,14 @@
1175
1056
  "type": "uint256"
1176
1057
  },
1177
1058
  {
1178
- "internalType": "uint256",
1179
- "name": "feeAmount",
1180
- "type": "uint256"
1059
+ "internalType": "bool",
1060
+ "name": "pullFromOwner",
1061
+ "type": "bool"
1062
+ },
1063
+ {
1064
+ "internalType": "bool",
1065
+ "name": "sendToOwner",
1066
+ "type": "bool"
1181
1067
  },
1182
1068
  {
1183
1069
  "internalType": "address",
@@ -1257,11 +1143,6 @@
1257
1143
  "name": "nonce",
1258
1144
  "type": "uint256"
1259
1145
  },
1260
- {
1261
- "internalType": "address",
1262
- "name": "receiver",
1263
- "type": "address"
1264
- },
1265
1146
  {
1266
1147
  "internalType": "address",
1267
1148
  "name": "token",
@@ -1269,12 +1150,12 @@
1269
1150
  },
1270
1151
  {
1271
1152
  "internalType": "uint256",
1272
- "name": "withdrawAmount",
1153
+ "name": "amountWithdraw",
1273
1154
  "type": "uint256"
1274
1155
  },
1275
1156
  {
1276
1157
  "internalType": "uint256",
1277
- "name": "feeAmount",
1158
+ "name": "amountFee",
1278
1159
  "type": "uint256"
1279
1160
  }
1280
1161
  ],
@@ -1294,8 +1175,8 @@
1294
1175
  "type": "function"
1295
1176
  }
1296
1177
  ],
1297
- "bytecode": "0x60e060405234801561000f575f5ffd5b5060405161354e38038061354e83398101604081905261002e916101b8565b6001600160a01b03808316608081905290821660a05260408051823b8181016020908101909352808252859385935f91908401903c604080516001600160a01b0384166020820152808201919091525f606082015260800160408051601f19818403018152908290526100a49291602001610216565b60408051601f19818403018152919052805160209091012060c052506100ca90506100d1565b5050610232565b600154600160a81b900460ff161561013f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b600154600160a01b900460ff9081161461019b576001805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146101b3575f5ffd5b919050565b5f5f604083850312156101c9575f5ffd5b6101d28361019d565b91506101e06020840161019d565b90509250929050565b5f81515f5b8181101561020857602081850181015186830152016101ee565b505f93019283525090919050565b5f61022a61022483866101e9565b846101e9565b949350505050565b60805160a05160c0516132dd6102715f395f8181610269015261138f01525f818161015b015261155201525f81816101d6015261150101526132dd5ff3fe608060405260043610610125575f3560e01c8063078dfbe7146101295780631122f54e1461014a5780631e1bff3f1461019357806322126144146101b25780632d610bb0146101c55780634623c91d146101f85780634e71e0c8146102175780635172e4141461022b5780635a3f0e6b146102585780636661b84b1461028b5780636eeee43f146102aa57806384b0196e146102e85780638da5cb5b1461030f578063b047db001461032d578063c0f29fa61461034c578063c4d66de81461035f578063c5c6e1d61461037e578063db50f4e01461039d578063debfda30146103bc578063e30c3978146103ea578063e748fd2714610409578063e8ad29b414610428578063ebf65ba614610453578063f22e9dd414610472578063facd743b1461049f575b5f5ffd5b348015610134575f5ffd5b506101486101433660046121eb565b6104cd565b005b348015610155575f5ffd5b5061017d7f000000000000000000000000000000000000000000000000000000000000000081565b60405161018a9190612238565b60405180910390f35b34801561019e575f5ffd5b506101486101ad36600461224c565b6105ce565b6101486101c0366004612539565b610656565b3480156101d0575f5ffd5b5061017d7f000000000000000000000000000000000000000000000000000000000000000081565b348015610203575f5ffd5b5061014861021236600461224c565b61089d565b348015610222575f5ffd5b5061014861091d565b348015610236575f5ffd5b5061024a6102453660046126be565b6109c5565b60405190815260200161018a565b348015610263575f5ffd5b5061024a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610296575f5ffd5b506101486102a53660046126ef565b610a6d565b3480156102b5575f5ffd5b506102d86102c4366004612752565b60676020525f908152604090205460ff1681565b604051901515815260200161018a565b3480156102f3575f5ffd5b506102fc610bf6565b60405161018a97969594939291906127b6565b34801561031a575f5ffd5b505f5461017d906001600160a01b031681565b348015610338575f5ffd5b5061024a61034736600461284c565b610c8f565b61014861035a366004612930565b610d44565b34801561036a575f5ffd5b50610148610379366004612962565b610e6e565b348015610389575f5ffd5b5061024a61039836600461297b565b610fee565b3480156103a8575f5ffd5b5061024a6103b7366004612996565b611067565b3480156103c7575f5ffd5b506102d86103d6366004612962565b60686020525f908152604090205460ff1681565b3480156103f5575f5ffd5b5060015461017d906001600160a01b031681565b348015610414575f5ffd5b50610148610423366004612a50565b61112d565b348015610433575f5ffd5b5061024a610442366004612962565b60666020525f908152604090205481565b34801561045e575f5ffd5b5061024a61046d366004612a87565b6112a8565b34801561047d575f5ffd5b5061049161048c366004612aa2565b61135c565b60405161018a929190612aca565b3480156104aa575f5ffd5b506102d86104b9366004612962565b60696020525f908152604090205460ff1681565b5f546001600160a01b031633146104ff5760405162461bcd60e51b81526004016104f690612ae3565b60405180910390fd5b81156105ad576001600160a01b0383161515806105195750805b61055d5760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016104f6565b5f80546040516001600160a01b03808716939216915f5160206132885f395f51905f5291a35f80546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b5f546001600160a01b031633146105f75760405162461bcd60e51b81526004016104f690612ae3565b6001600160a01b0382165f81815260686020908152604091829020805460ff191685151590811790915591519182527f827c394aebf0fcbf2d4f5c0107a0031a3860ec0d5e06756e03aacccfb8d2836e91015b60405180910390a25050565b335f9081526068602052604090205460ff166106845760405162461bcd60e51b81526004016104f690612b18565b61069f845f0151856060015161069987610fee565b866113bc565b6106ba825f01518360e001516106b485610c8f565b8461140a565b5f846040516020016106cc9190612b4f565b6040516020818303038152906040528051906020012090506106f283602001518261146a565b5f610704865f015187602001516114d4565b90505f8460600151610717888785611646565b6107219190612c06565b60c088015160608701516040516301de6c5360e71b81529293506001600160a01b0385169263ef3629809261075a929091600401612aca565b5f604051808303815f87803b158015610771575f5ffd5b505af1158015610783573d5f5f3e3d5ffd5b5050505060e08701516001600160a01b03166107bd5734156107b8576040516350f6bc5760e01b815260040160405180910390fd5b6107cc565b6107c9878383346116f7565b90505b8661010001518110156107f257604051632578a3d560e11b815260040160405180910390fd5b865f01516001600160a01b03167fd2bd82e459ebe49956443a8300f02a6dc2872bcf22e3fde66a5955d7896e4ae18860200151858a6080015189604001518c60c001518d60e001518860405161088c979695949392919063ffffffff97909716875260208701959095526001600160a01b0393841660408701526060860192909252821660808501521660a083015260c082015260e00190565b60405180910390a250505050505050565b5f546001600160a01b031633146108c65760405162461bcd60e51b81526004016104f690612ae3565b6001600160a01b0382165f81815260696020908152604091829020805460ff191685151590811790915591519182527ff777a2dd5104082173537070fa5bc14b35ab543cc11a90836e264f3cef55c064910161064a565b6001546001600160a01b03163381146109785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016104f6565b5f80546040516001600160a01b03808516939216915f5160206132885f395f51905f5291a35f80546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b5f610a677fe07c2f14f77ceaf30254671ba25d3940e18a280d418ec04f30a421b76fec8e21835f015184602001518560400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001518d61014001518e610160015180519060200120604051602001610a4c9d9c9b9a99989796959493929190612c25565b60405160208183030381529060405280519060200120611894565b92915050565b335f9081526068602052604090205460ff16610a9b5760405162461bcd60e51b81526004016104f690612b18565b610abb825f015183604001518460600151610ab5866109c5565b856118c0565b5f610acd835f015184602001516114d4565b90505f836101000151610ae085846118dd565b610aea9190612c06565b60c08501516101008601516040516301de6c5360e71b81529293506001600160a01b0385169263ef36298092610b24929091600401612aca565b5f604051808303815f87803b158015610b3b575f5ffd5b505af1158015610b4d573d5f5f3e3d5ffd5b505050508360e00151811015610b7657604051632578a3d560e11b815260040160405180910390fd5b835160208086015160808088015160a0808a015160c08b01516040805163ffffffff90971687526001600160a01b0394851697870197909752958501529381166060840152908201859052909216917f96af82ad65d3deec4f3d60fccfd90dccdbaab9813fb8a008aeae79742c775e01910160405180910390a250505050565b5f6060805f5f5f60606002545f5f1b148015610c125750600354155b610c565760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016104f6565b610c5e611951565b610c666119e1565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f610a677f345607f719c1866f84a751ece95dae332cdc57f1ac7b9a3c0f57d85467f6b855835f015184602001518560400151866060015187608001518860a001518960c00151805190602001208a60e00151604051602001610a4c999897969594939291909889526001600160a01b0397881660208a0152604089019690965260608801949094526080870192909252841660a086015290921660c084015260e08301919091526101008201526101200190565b335f9081526068602052604090205460ff16610d725760405162461bcd60e51b81526004016104f690612b18565b610d8c825f015183604001518460600151610ab586611067565b5f610d9e835f015184602001516114d4565b9050610dab8382346119f0565b608083015160c08401516040516301de6c5360e71b81526001600160a01b0384169263ef36298092610ddf92600401612aca565b5f604051808303815f87803b158015610df6575f5ffd5b505af1158015610e08573d5f5f3e3d5ffd5b50508451602086015160e0870151608088015160a089015160c08a01516040516001600160a01b0390961697507f0e0f64c3d50163af7cbbbfccc4856d259e68800f812d791f6310603cd734e8419650610e6195612cb2565b60405180910390a2505050565b600154600160a81b900460ff1615808015610e94575060018054600160a01b900460ff16105b80610eb45750303b158015610eb4575060018054600160a01b900460ff16145b610f175760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104f6565b6001805460ff60a01b1916600160a01b1790558015610f44576001805460ff60a81b1916600160a81b1790555b610f9a6040518060400160405280601b81526020017a2832b73236329021b937b9b99021b430b4b71029bbb0b810243ab160291b815250604051806040016040528060018152602001603160f81b815250611a97565b610fa382611aca565b8015610fea576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f610a677fb0495383b38434498bc2572bbcd98ce300312a41ea78569ae7c34883312098f8835f015184602001518560400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001518d6101400151604051602001610a4c9c9b9a99989796959493929190612ce9565b5f610a677f7ef2c3495d9c54f20199df4ec535ba2e5fdd12b43641d162c97bd6472c912ba3835f015184602001518560400151866060015187608001518860a001518960c001518a60e001518b610100015180519060200120604051602001610a4c9a99989796959493929190998a526001600160a01b0398891660208b015263ffffffff9790971660408a01526060890195909552608088019390935290851660a087015260c086015260e08501529091166101008301526101208201526101400190565b335f9081526068602052604090205460ff1661115b5760405162461bcd60e51b81526004016104f690612b18565b611175825f015183604001518460600151610ab5866112a8565b5f611187835f015184602001516114d4565b9050806001600160a01b031663c3b35a7e84608001518560a001518660c001516040518463ffffffff1660e01b81526004016111c593929190612d6d565b5f604051808303815f87803b1580156111dc575f5ffd5b505af11580156111ee573d5f5f3e3d5ffd5b5050505060a083015160e08401516040516301de6c5360e71b81526001600160a01b0384169263ef3629809261122692600401612aca565b5f604051808303815f87803b15801561123d575f5ffd5b505af115801561124f573d5f5f3e3d5ffd5b505084516020860151608087015160a088015160c089015160e08a01516040516001600160a01b0390961697507f852c900c43a40fa3535c1461c76efc47e92768df6752f1b92c782415b29bd8f89650610e6195612cb2565b5f610a677fc3a5c2101c4567506dd16b560c791a943b26fb6b941c74a0a439da06a0d5fa17835f015184602001518560400151866060015187608001518860a001518960c001518a60e00151604051602001610a4c999897969594939291909889526001600160a01b0397881660208a015263ffffffff96909616604089015260608801949094526080870192909252841660a086015290921660c084015260e08301919091526101008201526101200190565b5f5f8383604051602001611371929190612d91565b6040516020818303038152906040528051906020012090506113b3817f0000000000000000000000000000000000000000000000000000000000000000611b14565b91509250929050565b6113c7848383611b27565b6113e457604051638baa579f60e01b815260040160405180910390fd5b428311611404576040516303dd4ee960e61b815260040160405180910390fd5b50505050565b611415848383611b27565b61143257604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526069602052604090205460ff166113e457604051631a0a9b9f60e21b815260040160405180910390fd5b80821461148a57604051637e5d179b60e01b815260040160405180910390fd5b5f8181526067602052604090205460ff16156114b957604051634d6cea5760e11b815260040160405180910390fd5b5f908152606760205260409020805460ff1916600117905550565b5f5f5f6114e1858561135c565b90925090506001600160a01b0382163b156114fe57509050610a67565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b806020016040519081016040528181525f908060200190933c604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526115a59291602001612db0565b6040516020818303038152906040529050826001600160a01b03166115cb5f8484611b85565b6001600160a01b0316146115e1576115e1612dde565b60405163c5e4c9f960e01b81526001600160a01b0384169063c5e4c9f99061160f9089908990600401612d91565b5f604051808303815f87803b158015611626575f5ffd5b505af1158015611638573d5f5f3e3d5ffd5b509498975050505050505050565b5f6116628460a0015161165d848760800151611c83565b611d12565b83604001511115611686576040516365719fe160e11b815260040160405180910390fd5b5f6040518060a0016040528086608001516001600160a01b03168152602001856040015181526020018660c001516001600160a01b031681526020018560a001516001600160a01b031681526020018560c0015181525090506116ee83856080015183611d27565b95945050505050565b5f5f6040518060e0016040528087610120015163ffffffff16815260200187610140015181526020018581526020015f815260200160405180602001604052805f815250815260200160405180602001604052805f815250815260200160405180602001604052805f81525081525090505f60405180604001604052808581526020015f81525090505f60405180608001604052808960c001516001600160a01b031681526020018781526020018960e001516001600160a01b031681526020018484336040516024016117cd93929190612df2565b60408051601f198184030181529181526020820180516001600160e01b031663c7c7f5b360e01b17905291525163704a2e9b60e01b81529091505f906001600160a01b0389169063704a2e9b90889061182c9086903390600401612ea2565b5f6040518083038185885af1158015611847573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f1916820160405261186f9190810190612f03565b8060200190518101906118829190612fb7565b602001519a9950505050505050505050565b5f610a676118a0611e11565b8360405161190160f01b8152600281019290925260228201526042902090565b6118cc858584846113bc565b6118d68584611e1f565b5050505050565b5f5f6040518060a0016040528085608001516001600160a01b031681526020018560a0015181526020018560c001516001600160a01b031681526020018561014001516001600160a01b0316815260200185610160015181525090506119498385610120015183611d27565b949350505050565b6060600480546119609061303f565b80601f016020809104026020016040519081016040528092919081815260200182805461198c9061303f565b80156119d75780601f106119ae576101008083540402835291602001916119d7565b820191905f5260205f20905b8154815290600101906020018083116119ba57829003601f168201915b5050505050905090565b6060600580546119609061303f565b60408051608080820183528501516001600160a01b03908116825260a0860151602083015260e08601518116828401526101008601516060830152915163704a2e9b60e01b8152909184169063704a2e9b908490611a549085903390600401612ea2565b5f6040518083038185885af1158015611a6f573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526118d69190810190612f03565b600154600160a81b900460ff16611ac05760405162461bcd60e51b81526004016104f690613077565b610fea8282611e71565b600154600160a81b900460ff16611af35760405162461bcd60e51b81526004016104f690613077565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f611b20838330611ec1565b9392505050565b5f5f5f611b348585611eea565b90925090505f816004811115611b4c57611b4c6130c2565b148015611b6a5750856001600160a01b0316826001600160a01b0316145b80611b7b5750611b7b868686611f2c565b9695505050505050565b5f83471015611bd65760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016104f6565b81515f03611c265760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016104f6565b8282516020840186f590506001600160a01b038116611b205760405162461bcd60e51b8152602060048201526019602482015278437265617465323a204661696c6564206f6e206465706c6f7960381b60448201526064016104f6565b5f6001600160a01b03821615611d03576040516370a0823160e01b81526001600160a01b038316906370a0823190611cbf908690600401612238565b602060405180830381865afa158015611cda573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cfe91906130d6565b611b20565b50506001600160a01b03163190565b5f818310611d205781611b20565b5090919050565b805160208201516040516361d9ad3f60e11b81525f926001600160a01b0387169263c3b35a7e92611d5e9288929091600401612d6d565b5f604051808303815f87803b158015611d75575f5ffd5b505af1158015611d87573d5f5f3e3d5ffd5b505050505f611d9a858460400151611c83565b6040516361d3f0e760e11b81529091506001600160a01b0385169063c3a7e1ce90611dcb90889087906004016130ed565b5f604051808303815f87803b158015611de2575f5ffd5b505af1158015611df4573d5f5f3e3d5ffd5b5050505080611e07868560400151611c83565b6116ee9190612c06565b5f611e1a612013565b905090565b6001600160a01b0382165f908152606660205260409020548111611e5657604051633ab3447f60e11b815260040160405180910390fd5b6001600160a01b039091165f90815260666020526040902055565b600154600160a81b900460ff16611e9a5760405162461bcd60e51b81526004016104f690613077565b6004611ea6838261319a565b506005611eb3828261319a565b50505f600281905560035550565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b5f5f8251604103611f1e576020830151604084015160608501515f1a611f1287828585612086565b94509450505050611f25565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401611f54929190613254565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611f92919061326c565b5f60405180830381855afa9150503d805f8114611fca576040519150601f19603f3d011682016040523d82523d5f602084013e611fcf565b606091505b5091509150818015611fe357506020815110155b8015611b7b57508051630b135d3f60e11b9061200890830160209081019084016130d6565b149695505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61203d612139565b612045612191565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f806fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311156120b157505f90506003612130565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612102573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661212a575f60019250925050612130565b91505f90505b94509492505050565b5f5f612143611951565b80519091501561215a578051602090910120919050565b60025480156121695792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b5f5f61219b6119e1565b8051909150156121b2578051602090910120919050565b60035480156121695792915050565b80356001600160a01b03811681146121d7575f5ffd5b919050565b803580151581146121d7575f5ffd5b5f5f5f606084860312156121fd575f5ffd5b612206846121c1565b9250612214602085016121dc565b9150612222604085016121dc565b90509250925092565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b5f5f6040838503121561225d575f5ffd5b612266836121c1565b9150612274602084016121dc565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b03811182821017156122b4576122b461227d565b60405290565b60405161010081016001600160401b03811182821017156122b4576122b461227d565b60405161018081016001600160401b03811182821017156122b4576122b461227d565b60405161012081016001600160401b03811182821017156122b4576122b461227d565b604051601f8201601f191681016001600160401b038111828210171561234b5761234b61227d565b604052919050565b803563ffffffff811681146121d7575f5ffd5b5f6101608284031215612377575f5ffd5b61237f612291565b905061238a826121c1565b815261239860208301612353565b602082015260408281013590820152606080830135908201526123bd608083016121c1565b608082015260a082810135908201526123d860c083016121c1565b60c08201526123e960e083016121c1565b60e082015261010082810135908201526124066101208301612353565b6101208201526101409182013591810191909152919050565b5f6001600160401b038211156124375761243761227d565b50601f01601f191660200190565b5f82601f830112612454575f5ffd5b81356124676124628261241f565b612323565b81815284602083860101111561247b575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f61010082840312156124a8575f5ffd5b6124b06122ba565b90506124bb826121c1565b81526020828101359082015260408083013590820152606080830135908201526124e7608083016121c1565b60808201526124f860a083016121c1565b60a082015260c08201356001600160401b03811115612515575f5ffd5b61252184828501612445565b60c08301525060e09182013591810191909152919050565b5f5f5f5f6101c0858703121561254d575f5ffd5b6125578686612366565b93506101608501356001600160401b03811115612572575f5ffd5b61257e87828801612445565b9350506101808501356001600160401b0381111561259a575f5ffd5b6125a687828801612497565b9250506101a08501356001600160401b038111156125c2575f5ffd5b6125ce87828801612445565b91505092959194509250565b5f61018082840312156125eb575f5ffd5b6125f36122dd565b90506125fe826121c1565b815261260c60208301612353565b60208201526040828101359082015260608083013590820152612631608083016121c1565b608082015260a0828101359082015261264c60c083016121c1565b60c082015260e08281013590820152610100808301359082015261267361012083016121c1565b61012082015261268661014083016121c1565b6101408201526101608201356001600160401b038111156126a5575f5ffd5b6126b184828501612445565b6101608301525092915050565b5f602082840312156126ce575f5ffd5b81356001600160401b038111156126e3575f5ffd5b611949848285016125da565b5f5f60408385031215612700575f5ffd5b82356001600160401b03811115612715575f5ffd5b612721858286016125da565b92505060208301356001600160401b0381111561273c575f5ffd5b61274885828601612445565b9150509250929050565b5f60208284031215612762575f5ffd5b5035919050565b5f5b8381101561278357818101518382015260200161276b565b50505f910152565b5f81518084526127a2816020860160208601612769565b601f01601f19169290920160200192915050565b60ff60f81b8816815260e060208201525f6127d460e083018961278b565b82810360408401526127e6818961278b565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561283b57835183526020938401939092019160010161281d565b50909b9a5050505050505050505050565b5f6020828403121561285c575f5ffd5b81356001600160401b03811115612871575f5ffd5b61194984828501612497565b5f610120828403121561288e575f5ffd5b612896612300565b90506128a1826121c1565b81526128af60208301612353565b602082015260408281013590820152606080830135908201526128d4608083016121c1565b608082015260a0828101359082015260c080830135908201526128f960e083016121c1565b60e08201526101008201356001600160401b03811115612917575f5ffd5b61292384828501612445565b6101008301525092915050565b5f5f60408385031215612941575f5ffd5b82356001600160401b03811115612956575f5ffd5b6127218582860161287d565b5f60208284031215612972575f5ffd5b611b20826121c1565b5f610160828403121561298c575f5ffd5b611b208383612366565b5f602082840312156129a6575f5ffd5b81356001600160401b038111156129bb575f5ffd5b6119498482850161287d565b5f61010082840312156129d8575f5ffd5b6129e06122ba565b90506129eb826121c1565b81526129f960208301612353565b60208201526040828101359082015260608083013590820152612a1e608083016121c1565b6080820152612a2f60a083016121c1565b60a082015260c0828101359082015260e09182013591810191909152919050565b5f5f6101208385031215612a62575f5ffd5b612a6c84846129c7565b91506101008301356001600160401b0381111561273c575f5ffd5b5f6101008284031215612a98575f5ffd5b611b2083836129c7565b5f5f60408385031215612ab3575f5ffd5b612abc836121c1565b915061227460208401612353565b6001600160a01b03929092168252602082015260400190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f537761704875623a2063616c6c6572206973206e6f74206578656375746f7200604082015260600190565b5f61016082019050612b6282845161222b565b6020830151612b79602084018263ffffffff169052565b5060408301516040830152606083015160608301526080830151612ba0608084018261222b565b5060a083015160a083015260c0830151612bbd60c084018261222b565b5060e0830151612bd060e084018261222b565b50610100830151610100830152610120830151612bf661012084018263ffffffff169052565b5061014092830151919092015290565b81810381811115610a6757634e487b7160e01b5f52601160045260245ffd5b8d81526001600160a01b038d8116602083015263ffffffff8d166040830152606082018c9052608082018b905289811660a083015260c08201899052871660e0820152610100810186905261012081018590526101a08101612c8b61014083018661222b565b612c9961016083018561222b565b826101808301529e9d5050505050505050505050505050565b63ffffffff9590951685526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b8c81526001600160a01b038c8116602083015263ffffffff8c166040830152606082018b9052608082018a905288811660a083015260c0820188905286811660e0830152851661010082015261012081018490526101808101612d5561014083018563ffffffff169052565b826101608301529d9c50505050505050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0392909216825263ffffffff16602082015260400190565b5f8351612dc1818460208801612769565b835190830190612dd5818360208801612769565b01949350505050565b634e487b7160e01b5f52600160045260245ffd5b6080815263ffffffff8451166080820152602084015160a0820152604084015160c0820152606084015160e08201525f608085015160e0610100840152612e3d61016084018261278b565b905060a0860151607f1984830301610120850152612e5b828261278b565b91505060c0860151607f1984830301610140850152612e7a828261278b565b92505050612e95602083018580518252602090810151910152565b611949606083018461222b565b6040815260018060a01b0383511660408201526020830151606082015260018060a01b0360408401511660808201525f6060840151608060a0840152612eeb60c084018261278b565b91505060018060a01b03831660208301529392505050565b5f60208284031215612f13575f5ffd5b81516001600160401b03811115612f28575f5ffd5b8201601f81018413612f38575f5ffd5b8051612f466124628261241f565b818152856020838501011115612f5a575f5ffd5b6116ee826020830160208601612769565b5f60408284031215612f7b575f5ffd5b604080519081016001600160401b0381118282101715612f9d57612f9d61227d565b604052825181526020928301519281019290925250919050565b5f5f82840360c0811215612fc9575f5ffd5b6080811215612fd6575f5ffd5b50604051606081016001600160401b0381118282101715612ff957612ff961227d565b6040528351815260208401516001600160401b0381168114613019575f5ffd5b602082015261302b8560408601612f6b565b604082015291506122748460808501612f6b565b600181811c9082168061305357607f821691505b60208210810361307157634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b5f602082840312156130e6575f5ffd5b5051919050565b60018060a01b03831681526040602082015260018060a01b0382511660408201526020820151606082015260018060a01b03604083015116608082015260018060a01b0360608301511660a08201525f608083015160a060c08401526116ee60e084018261278b565b601f8211156105c957805f5260205f20601f840160051c8101602085101561317b5750805b601f840160051c820191505b818110156118d6575f8155600101613187565b81516001600160401b038111156131b3576131b361227d565b6131c7816131c1845461303f565b84613156565b6020601f8211600181146131f9575f83156131e25750848201515b5f19600385901b1c1916600184901b1784556118d6565b5f84815260208120601f198516915b828110156132285787850151825560209485019460019092019101613208565b508482101561324557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b828152604060208201525f611949604083018461278b565b5f825161327d818460208701612769565b919091019291505056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212202606bf28d44ccc348ccd7fe996f15acb07ffabb116d230ad1abbf7b6fbef885364736f6c634300081e0033",
1298
- "deployedBytecode": "0x608060405260043610610125575f3560e01c8063078dfbe7146101295780631122f54e1461014a5780631e1bff3f1461019357806322126144146101b25780632d610bb0146101c55780634623c91d146101f85780634e71e0c8146102175780635172e4141461022b5780635a3f0e6b146102585780636661b84b1461028b5780636eeee43f146102aa57806384b0196e146102e85780638da5cb5b1461030f578063b047db001461032d578063c0f29fa61461034c578063c4d66de81461035f578063c5c6e1d61461037e578063db50f4e01461039d578063debfda30146103bc578063e30c3978146103ea578063e748fd2714610409578063e8ad29b414610428578063ebf65ba614610453578063f22e9dd414610472578063facd743b1461049f575b5f5ffd5b348015610134575f5ffd5b506101486101433660046121eb565b6104cd565b005b348015610155575f5ffd5b5061017d7f000000000000000000000000000000000000000000000000000000000000000081565b60405161018a9190612238565b60405180910390f35b34801561019e575f5ffd5b506101486101ad36600461224c565b6105ce565b6101486101c0366004612539565b610656565b3480156101d0575f5ffd5b5061017d7f000000000000000000000000000000000000000000000000000000000000000081565b348015610203575f5ffd5b5061014861021236600461224c565b61089d565b348015610222575f5ffd5b5061014861091d565b348015610236575f5ffd5b5061024a6102453660046126be565b6109c5565b60405190815260200161018a565b348015610263575f5ffd5b5061024a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610296575f5ffd5b506101486102a53660046126ef565b610a6d565b3480156102b5575f5ffd5b506102d86102c4366004612752565b60676020525f908152604090205460ff1681565b604051901515815260200161018a565b3480156102f3575f5ffd5b506102fc610bf6565b60405161018a97969594939291906127b6565b34801561031a575f5ffd5b505f5461017d906001600160a01b031681565b348015610338575f5ffd5b5061024a61034736600461284c565b610c8f565b61014861035a366004612930565b610d44565b34801561036a575f5ffd5b50610148610379366004612962565b610e6e565b348015610389575f5ffd5b5061024a61039836600461297b565b610fee565b3480156103a8575f5ffd5b5061024a6103b7366004612996565b611067565b3480156103c7575f5ffd5b506102d86103d6366004612962565b60686020525f908152604090205460ff1681565b3480156103f5575f5ffd5b5060015461017d906001600160a01b031681565b348015610414575f5ffd5b50610148610423366004612a50565b61112d565b348015610433575f5ffd5b5061024a610442366004612962565b60666020525f908152604090205481565b34801561045e575f5ffd5b5061024a61046d366004612a87565b6112a8565b34801561047d575f5ffd5b5061049161048c366004612aa2565b61135c565b60405161018a929190612aca565b3480156104aa575f5ffd5b506102d86104b9366004612962565b60696020525f908152604090205460ff1681565b5f546001600160a01b031633146104ff5760405162461bcd60e51b81526004016104f690612ae3565b60405180910390fd5b81156105ad576001600160a01b0383161515806105195750805b61055d5760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016104f6565b5f80546040516001600160a01b03808716939216915f5160206132885f395f51905f5291a35f80546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b5f546001600160a01b031633146105f75760405162461bcd60e51b81526004016104f690612ae3565b6001600160a01b0382165f81815260686020908152604091829020805460ff191685151590811790915591519182527f827c394aebf0fcbf2d4f5c0107a0031a3860ec0d5e06756e03aacccfb8d2836e91015b60405180910390a25050565b335f9081526068602052604090205460ff166106845760405162461bcd60e51b81526004016104f690612b18565b61069f845f0151856060015161069987610fee565b866113bc565b6106ba825f01518360e001516106b485610c8f565b8461140a565b5f846040516020016106cc9190612b4f565b6040516020818303038152906040528051906020012090506106f283602001518261146a565b5f610704865f015187602001516114d4565b90505f8460600151610717888785611646565b6107219190612c06565b60c088015160608701516040516301de6c5360e71b81529293506001600160a01b0385169263ef3629809261075a929091600401612aca565b5f604051808303815f87803b158015610771575f5ffd5b505af1158015610783573d5f5f3e3d5ffd5b5050505060e08701516001600160a01b03166107bd5734156107b8576040516350f6bc5760e01b815260040160405180910390fd5b6107cc565b6107c9878383346116f7565b90505b8661010001518110156107f257604051632578a3d560e11b815260040160405180910390fd5b865f01516001600160a01b03167fd2bd82e459ebe49956443a8300f02a6dc2872bcf22e3fde66a5955d7896e4ae18860200151858a6080015189604001518c60c001518d60e001518860405161088c979695949392919063ffffffff97909716875260208701959095526001600160a01b0393841660408701526060860192909252821660808501521660a083015260c082015260e00190565b60405180910390a250505050505050565b5f546001600160a01b031633146108c65760405162461bcd60e51b81526004016104f690612ae3565b6001600160a01b0382165f81815260696020908152604091829020805460ff191685151590811790915591519182527ff777a2dd5104082173537070fa5bc14b35ab543cc11a90836e264f3cef55c064910161064a565b6001546001600160a01b03163381146109785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016104f6565b5f80546040516001600160a01b03808516939216915f5160206132885f395f51905f5291a35f80546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b5f610a677fe07c2f14f77ceaf30254671ba25d3940e18a280d418ec04f30a421b76fec8e21835f015184602001518560400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001518d61014001518e610160015180519060200120604051602001610a4c9d9c9b9a99989796959493929190612c25565b60405160208183030381529060405280519060200120611894565b92915050565b335f9081526068602052604090205460ff16610a9b5760405162461bcd60e51b81526004016104f690612b18565b610abb825f015183604001518460600151610ab5866109c5565b856118c0565b5f610acd835f015184602001516114d4565b90505f836101000151610ae085846118dd565b610aea9190612c06565b60c08501516101008601516040516301de6c5360e71b81529293506001600160a01b0385169263ef36298092610b24929091600401612aca565b5f604051808303815f87803b158015610b3b575f5ffd5b505af1158015610b4d573d5f5f3e3d5ffd5b505050508360e00151811015610b7657604051632578a3d560e11b815260040160405180910390fd5b835160208086015160808088015160a0808a015160c08b01516040805163ffffffff90971687526001600160a01b0394851697870197909752958501529381166060840152908201859052909216917f96af82ad65d3deec4f3d60fccfd90dccdbaab9813fb8a008aeae79742c775e01910160405180910390a250505050565b5f6060805f5f5f60606002545f5f1b148015610c125750600354155b610c565760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016104f6565b610c5e611951565b610c666119e1565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f610a677f345607f719c1866f84a751ece95dae332cdc57f1ac7b9a3c0f57d85467f6b855835f015184602001518560400151866060015187608001518860a001518960c00151805190602001208a60e00151604051602001610a4c999897969594939291909889526001600160a01b0397881660208a0152604089019690965260608801949094526080870192909252841660a086015290921660c084015260e08301919091526101008201526101200190565b335f9081526068602052604090205460ff16610d725760405162461bcd60e51b81526004016104f690612b18565b610d8c825f015183604001518460600151610ab586611067565b5f610d9e835f015184602001516114d4565b9050610dab8382346119f0565b608083015160c08401516040516301de6c5360e71b81526001600160a01b0384169263ef36298092610ddf92600401612aca565b5f604051808303815f87803b158015610df6575f5ffd5b505af1158015610e08573d5f5f3e3d5ffd5b50508451602086015160e0870151608088015160a089015160c08a01516040516001600160a01b0390961697507f0e0f64c3d50163af7cbbbfccc4856d259e68800f812d791f6310603cd734e8419650610e6195612cb2565b60405180910390a2505050565b600154600160a81b900460ff1615808015610e94575060018054600160a01b900460ff16105b80610eb45750303b158015610eb4575060018054600160a01b900460ff16145b610f175760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104f6565b6001805460ff60a01b1916600160a01b1790558015610f44576001805460ff60a81b1916600160a81b1790555b610f9a6040518060400160405280601b81526020017a2832b73236329021b937b9b99021b430b4b71029bbb0b810243ab160291b815250604051806040016040528060018152602001603160f81b815250611a97565b610fa382611aca565b8015610fea576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f610a677fb0495383b38434498bc2572bbcd98ce300312a41ea78569ae7c34883312098f8835f015184602001518560400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001518d6101400151604051602001610a4c9c9b9a99989796959493929190612ce9565b5f610a677f7ef2c3495d9c54f20199df4ec535ba2e5fdd12b43641d162c97bd6472c912ba3835f015184602001518560400151866060015187608001518860a001518960c001518a60e001518b610100015180519060200120604051602001610a4c9a99989796959493929190998a526001600160a01b0398891660208b015263ffffffff9790971660408a01526060890195909552608088019390935290851660a087015260c086015260e08501529091166101008301526101208201526101400190565b335f9081526068602052604090205460ff1661115b5760405162461bcd60e51b81526004016104f690612b18565b611175825f015183604001518460600151610ab5866112a8565b5f611187835f015184602001516114d4565b9050806001600160a01b031663c3b35a7e84608001518560a001518660c001516040518463ffffffff1660e01b81526004016111c593929190612d6d565b5f604051808303815f87803b1580156111dc575f5ffd5b505af11580156111ee573d5f5f3e3d5ffd5b5050505060a083015160e08401516040516301de6c5360e71b81526001600160a01b0384169263ef3629809261122692600401612aca565b5f604051808303815f87803b15801561123d575f5ffd5b505af115801561124f573d5f5f3e3d5ffd5b505084516020860151608087015160a088015160c089015160e08a01516040516001600160a01b0390961697507f852c900c43a40fa3535c1461c76efc47e92768df6752f1b92c782415b29bd8f89650610e6195612cb2565b5f610a677fc3a5c2101c4567506dd16b560c791a943b26fb6b941c74a0a439da06a0d5fa17835f015184602001518560400151866060015187608001518860a001518960c001518a60e00151604051602001610a4c999897969594939291909889526001600160a01b0397881660208a015263ffffffff96909616604089015260608801949094526080870192909252841660a086015290921660c084015260e08301919091526101008201526101200190565b5f5f8383604051602001611371929190612d91565b6040516020818303038152906040528051906020012090506113b3817f0000000000000000000000000000000000000000000000000000000000000000611b14565b91509250929050565b6113c7848383611b27565b6113e457604051638baa579f60e01b815260040160405180910390fd5b428311611404576040516303dd4ee960e61b815260040160405180910390fd5b50505050565b611415848383611b27565b61143257604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526069602052604090205460ff166113e457604051631a0a9b9f60e21b815260040160405180910390fd5b80821461148a57604051637e5d179b60e01b815260040160405180910390fd5b5f8181526067602052604090205460ff16156114b957604051634d6cea5760e11b815260040160405180910390fd5b5f908152606760205260409020805460ff1916600117905550565b5f5f5f6114e1858561135c565b90925090506001600160a01b0382163b156114fe57509050610a67565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b806020016040519081016040528181525f908060200190933c604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526115a59291602001612db0565b6040516020818303038152906040529050826001600160a01b03166115cb5f8484611b85565b6001600160a01b0316146115e1576115e1612dde565b60405163c5e4c9f960e01b81526001600160a01b0384169063c5e4c9f99061160f9089908990600401612d91565b5f604051808303815f87803b158015611626575f5ffd5b505af1158015611638573d5f5f3e3d5ffd5b509498975050505050505050565b5f6116628460a0015161165d848760800151611c83565b611d12565b83604001511115611686576040516365719fe160e11b815260040160405180910390fd5b5f6040518060a0016040528086608001516001600160a01b03168152602001856040015181526020018660c001516001600160a01b031681526020018560a001516001600160a01b031681526020018560c0015181525090506116ee83856080015183611d27565b95945050505050565b5f5f6040518060e0016040528087610120015163ffffffff16815260200187610140015181526020018581526020015f815260200160405180602001604052805f815250815260200160405180602001604052805f815250815260200160405180602001604052805f81525081525090505f60405180604001604052808581526020015f81525090505f60405180608001604052808960c001516001600160a01b031681526020018781526020018960e001516001600160a01b031681526020018484336040516024016117cd93929190612df2565b60408051601f198184030181529181526020820180516001600160e01b031663c7c7f5b360e01b17905291525163704a2e9b60e01b81529091505f906001600160a01b0389169063704a2e9b90889061182c9086903390600401612ea2565b5f6040518083038185885af1158015611847573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f1916820160405261186f9190810190612f03565b8060200190518101906118829190612fb7565b602001519a9950505050505050505050565b5f610a676118a0611e11565b8360405161190160f01b8152600281019290925260228201526042902090565b6118cc858584846113bc565b6118d68584611e1f565b5050505050565b5f5f6040518060a0016040528085608001516001600160a01b031681526020018560a0015181526020018560c001516001600160a01b031681526020018561014001516001600160a01b0316815260200185610160015181525090506119498385610120015183611d27565b949350505050565b6060600480546119609061303f565b80601f016020809104026020016040519081016040528092919081815260200182805461198c9061303f565b80156119d75780601f106119ae576101008083540402835291602001916119d7565b820191905f5260205f20905b8154815290600101906020018083116119ba57829003601f168201915b5050505050905090565b6060600580546119609061303f565b60408051608080820183528501516001600160a01b03908116825260a0860151602083015260e08601518116828401526101008601516060830152915163704a2e9b60e01b8152909184169063704a2e9b908490611a549085903390600401612ea2565b5f6040518083038185885af1158015611a6f573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526118d69190810190612f03565b600154600160a81b900460ff16611ac05760405162461bcd60e51b81526004016104f690613077565b610fea8282611e71565b600154600160a81b900460ff16611af35760405162461bcd60e51b81526004016104f690613077565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f611b20838330611ec1565b9392505050565b5f5f5f611b348585611eea565b90925090505f816004811115611b4c57611b4c6130c2565b148015611b6a5750856001600160a01b0316826001600160a01b0316145b80611b7b5750611b7b868686611f2c565b9695505050505050565b5f83471015611bd65760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016104f6565b81515f03611c265760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016104f6565b8282516020840186f590506001600160a01b038116611b205760405162461bcd60e51b8152602060048201526019602482015278437265617465323a204661696c6564206f6e206465706c6f7960381b60448201526064016104f6565b5f6001600160a01b03821615611d03576040516370a0823160e01b81526001600160a01b038316906370a0823190611cbf908690600401612238565b602060405180830381865afa158015611cda573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cfe91906130d6565b611b20565b50506001600160a01b03163190565b5f818310611d205781611b20565b5090919050565b805160208201516040516361d9ad3f60e11b81525f926001600160a01b0387169263c3b35a7e92611d5e9288929091600401612d6d565b5f604051808303815f87803b158015611d75575f5ffd5b505af1158015611d87573d5f5f3e3d5ffd5b505050505f611d9a858460400151611c83565b6040516361d3f0e760e11b81529091506001600160a01b0385169063c3a7e1ce90611dcb90889087906004016130ed565b5f604051808303815f87803b158015611de2575f5ffd5b505af1158015611df4573d5f5f3e3d5ffd5b5050505080611e07868560400151611c83565b6116ee9190612c06565b5f611e1a612013565b905090565b6001600160a01b0382165f908152606660205260409020548111611e5657604051633ab3447f60e11b815260040160405180910390fd5b6001600160a01b039091165f90815260666020526040902055565b600154600160a81b900460ff16611e9a5760405162461bcd60e51b81526004016104f690613077565b6004611ea6838261319a565b506005611eb3828261319a565b50505f600281905560035550565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b5f5f8251604103611f1e576020830151604084015160608501515f1a611f1287828585612086565b94509450505050611f25565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401611f54929190613254565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611f92919061326c565b5f60405180830381855afa9150503d805f8114611fca576040519150601f19603f3d011682016040523d82523d5f602084013e611fcf565b606091505b5091509150818015611fe357506020815110155b8015611b7b57508051630b135d3f60e11b9061200890830160209081019084016130d6565b149695505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61203d612139565b612045612191565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f806fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311156120b157505f90506003612130565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612102573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661212a575f60019250925050612130565b91505f90505b94509492505050565b5f5f612143611951565b80519091501561215a578051602090910120919050565b60025480156121695792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b5f5f61219b6119e1565b8051909150156121b2578051602090910120919050565b60035480156121695792915050565b80356001600160a01b03811681146121d7575f5ffd5b919050565b803580151581146121d7575f5ffd5b5f5f5f606084860312156121fd575f5ffd5b612206846121c1565b9250612214602085016121dc565b9150612222604085016121dc565b90509250925092565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b5f5f6040838503121561225d575f5ffd5b612266836121c1565b9150612274602084016121dc565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b03811182821017156122b4576122b461227d565b60405290565b60405161010081016001600160401b03811182821017156122b4576122b461227d565b60405161018081016001600160401b03811182821017156122b4576122b461227d565b60405161012081016001600160401b03811182821017156122b4576122b461227d565b604051601f8201601f191681016001600160401b038111828210171561234b5761234b61227d565b604052919050565b803563ffffffff811681146121d7575f5ffd5b5f6101608284031215612377575f5ffd5b61237f612291565b905061238a826121c1565b815261239860208301612353565b602082015260408281013590820152606080830135908201526123bd608083016121c1565b608082015260a082810135908201526123d860c083016121c1565b60c08201526123e960e083016121c1565b60e082015261010082810135908201526124066101208301612353565b6101208201526101409182013591810191909152919050565b5f6001600160401b038211156124375761243761227d565b50601f01601f191660200190565b5f82601f830112612454575f5ffd5b81356124676124628261241f565b612323565b81815284602083860101111561247b575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f61010082840312156124a8575f5ffd5b6124b06122ba565b90506124bb826121c1565b81526020828101359082015260408083013590820152606080830135908201526124e7608083016121c1565b60808201526124f860a083016121c1565b60a082015260c08201356001600160401b03811115612515575f5ffd5b61252184828501612445565b60c08301525060e09182013591810191909152919050565b5f5f5f5f6101c0858703121561254d575f5ffd5b6125578686612366565b93506101608501356001600160401b03811115612572575f5ffd5b61257e87828801612445565b9350506101808501356001600160401b0381111561259a575f5ffd5b6125a687828801612497565b9250506101a08501356001600160401b038111156125c2575f5ffd5b6125ce87828801612445565b91505092959194509250565b5f61018082840312156125eb575f5ffd5b6125f36122dd565b90506125fe826121c1565b815261260c60208301612353565b60208201526040828101359082015260608083013590820152612631608083016121c1565b608082015260a0828101359082015261264c60c083016121c1565b60c082015260e08281013590820152610100808301359082015261267361012083016121c1565b61012082015261268661014083016121c1565b6101408201526101608201356001600160401b038111156126a5575f5ffd5b6126b184828501612445565b6101608301525092915050565b5f602082840312156126ce575f5ffd5b81356001600160401b038111156126e3575f5ffd5b611949848285016125da565b5f5f60408385031215612700575f5ffd5b82356001600160401b03811115612715575f5ffd5b612721858286016125da565b92505060208301356001600160401b0381111561273c575f5ffd5b61274885828601612445565b9150509250929050565b5f60208284031215612762575f5ffd5b5035919050565b5f5b8381101561278357818101518382015260200161276b565b50505f910152565b5f81518084526127a2816020860160208601612769565b601f01601f19169290920160200192915050565b60ff60f81b8816815260e060208201525f6127d460e083018961278b565b82810360408401526127e6818961278b565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561283b57835183526020938401939092019160010161281d565b50909b9a5050505050505050505050565b5f6020828403121561285c575f5ffd5b81356001600160401b03811115612871575f5ffd5b61194984828501612497565b5f610120828403121561288e575f5ffd5b612896612300565b90506128a1826121c1565b81526128af60208301612353565b602082015260408281013590820152606080830135908201526128d4608083016121c1565b608082015260a0828101359082015260c080830135908201526128f960e083016121c1565b60e08201526101008201356001600160401b03811115612917575f5ffd5b61292384828501612445565b6101008301525092915050565b5f5f60408385031215612941575f5ffd5b82356001600160401b03811115612956575f5ffd5b6127218582860161287d565b5f60208284031215612972575f5ffd5b611b20826121c1565b5f610160828403121561298c575f5ffd5b611b208383612366565b5f602082840312156129a6575f5ffd5b81356001600160401b038111156129bb575f5ffd5b6119498482850161287d565b5f61010082840312156129d8575f5ffd5b6129e06122ba565b90506129eb826121c1565b81526129f960208301612353565b60208201526040828101359082015260608083013590820152612a1e608083016121c1565b6080820152612a2f60a083016121c1565b60a082015260c0828101359082015260e09182013591810191909152919050565b5f5f6101208385031215612a62575f5ffd5b612a6c84846129c7565b91506101008301356001600160401b0381111561273c575f5ffd5b5f6101008284031215612a98575f5ffd5b611b2083836129c7565b5f5f60408385031215612ab3575f5ffd5b612abc836121c1565b915061227460208401612353565b6001600160a01b03929092168252602082015260400190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f537761704875623a2063616c6c6572206973206e6f74206578656375746f7200604082015260600190565b5f61016082019050612b6282845161222b565b6020830151612b79602084018263ffffffff169052565b5060408301516040830152606083015160608301526080830151612ba0608084018261222b565b5060a083015160a083015260c0830151612bbd60c084018261222b565b5060e0830151612bd060e084018261222b565b50610100830151610100830152610120830151612bf661012084018263ffffffff169052565b5061014092830151919092015290565b81810381811115610a6757634e487b7160e01b5f52601160045260245ffd5b8d81526001600160a01b038d8116602083015263ffffffff8d166040830152606082018c9052608082018b905289811660a083015260c08201899052871660e0820152610100810186905261012081018590526101a08101612c8b61014083018661222b565b612c9961016083018561222b565b826101808301529e9d5050505050505050505050505050565b63ffffffff9590951685526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b8c81526001600160a01b038c8116602083015263ffffffff8c166040830152606082018b9052608082018a905288811660a083015260c0820188905286811660e0830152851661010082015261012081018490526101808101612d5561014083018563ffffffff169052565b826101608301529d9c50505050505050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0392909216825263ffffffff16602082015260400190565b5f8351612dc1818460208801612769565b835190830190612dd5818360208801612769565b01949350505050565b634e487b7160e01b5f52600160045260245ffd5b6080815263ffffffff8451166080820152602084015160a0820152604084015160c0820152606084015160e08201525f608085015160e0610100840152612e3d61016084018261278b565b905060a0860151607f1984830301610120850152612e5b828261278b565b91505060c0860151607f1984830301610140850152612e7a828261278b565b92505050612e95602083018580518252602090810151910152565b611949606083018461222b565b6040815260018060a01b0383511660408201526020830151606082015260018060a01b0360408401511660808201525f6060840151608060a0840152612eeb60c084018261278b565b91505060018060a01b03831660208301529392505050565b5f60208284031215612f13575f5ffd5b81516001600160401b03811115612f28575f5ffd5b8201601f81018413612f38575f5ffd5b8051612f466124628261241f565b818152856020838501011115612f5a575f5ffd5b6116ee826020830160208601612769565b5f60408284031215612f7b575f5ffd5b604080519081016001600160401b0381118282101715612f9d57612f9d61227d565b604052825181526020928301519281019290925250919050565b5f5f82840360c0811215612fc9575f5ffd5b6080811215612fd6575f5ffd5b50604051606081016001600160401b0381118282101715612ff957612ff961227d565b6040528351815260208401516001600160401b0381168114613019575f5ffd5b602082015261302b8560408601612f6b565b604082015291506122748460808501612f6b565b600181811c9082168061305357607f821691505b60208210810361307157634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b5f602082840312156130e6575f5ffd5b5051919050565b60018060a01b03831681526040602082015260018060a01b0382511660408201526020820151606082015260018060a01b03604083015116608082015260018060a01b0360608301511660a08201525f608083015160a060c08401526116ee60e084018261278b565b601f8211156105c957805f5260205f20601f840160051c8101602085101561317b5750805b601f840160051c820191505b818110156118d6575f8155600101613187565b81516001600160401b038111156131b3576131b361227d565b6131c7816131c1845461303f565b84613156565b6020601f8211600181146131f9575f83156131e25750848201515b5f19600385901b1c1916600184901b1784556118d6565b5f84815260208120601f198516915b828110156132285787850151825560209485019460019092019101613208565b508482101561324557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b828152604060208201525f611949604083018461278b565b5f825161327d818460208701612769565b919091019291505056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212202606bf28d44ccc348ccd7fe996f15acb07ffabb116d230ad1abbf7b6fbef885364736f6c634300081e0033",
1178
+ "bytecode": "0x60e080604052346101e357604081613f95803803809161001f82856101e7565b8339810103126101e35761003e60206100378361020a565b920161020a565b608082905260a0819052813b6001600160401b0381116101cf576100c8916100d6915f604051956100796020601f19601f86011601886101e7565b82875260208701903c6040519060018060a01b031660208201526040808201525f6060820152606081526100ae6080826101e7565b6040519283916100c260208401809761021e565b9061021e565b03601f1981018352826101e7565b51902060c05260015460ff8160a81c1661017a5760ff808260a01c1603610137575b604051613d4d90816102488239608051818181611b010152612f3d015260a051818181611c970152612fa3015260c0518181816116b40152612bf80152f35b60ff60a01b191660ff60a01b1760015560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a15f6100f8565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b601f909101601f19168101906001600160401b038211908210176101cf57604052565b51906001600160a01b03821682036101e357565b908151915f5b838110610234575050015f815290565b806020809284010151818501520161022456fe60806040526004361015610011575f80fd5b5f5f3560e01c8063078dfbe714611f205780630bb1c86414611cbb5780631122f54e14611c4c5780631e1bff3f14611b7f57806320cc564014611b255780632d610bb014611ab657806339228aae146117f25780634e71e0c8146116d75780635a3f0e6b1461167e57806369df58d31461163b57806384b0196e146114d05780638da5cb5b1461147f5780639b8e55ca14611425578063c4d66de814610d29578063da40bf8f14610a14578063debfda30146109ac578063e30c39781461095a578063e8ad29b4146108f7578063ebb1e41a146101e5578063f22e9dd4146101655763fb83402a14610101575f80fd5b346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610162576004359067ffffffffffffffff821161016257602061015a610155366004860161248e565b612c33565b604051908152f35b80fd5b50346101625760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625761019d6120f4565b6024359163ffffffff831683036101625760606101ba8484612b88565b9073ffffffffffffffffffffffffffffffffffffffff60405193168352602083015215156040820152f35b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760043567ffffffffffffffff81116108f3576102309036906004016125bd565b60243567ffffffffffffffff81116108ef5761025361029d913690600401612333565b338452606760205261026b60ff60408620541661273e565b73ffffffffffffffffffffffffffffffffffffffff835116604084015160608501519061029786612a0e565b92612d32565b73ffffffffffffffffffffffffffffffffffffffff815116906102cc602082019263ffffffff84511690612f25565b6101608201916004835115159373ffffffffffffffffffffffffffffffffffffffff835116608084019561033173ffffffffffffffffffffffffffffffffffffffff8851169160a08701928351948961032b60c08b0197885190612910565b93613321565b61035573ffffffffffffffffffffffffffffffffffffffff885116835190886131fa565b60e0850195602073ffffffffffffffffffffffffffffffffffffffff885116604051968780927ffc0c546a0000000000000000000000000000000000000000000000000000000082525afa9485156108e4578a9561088f575b506101408601805173ffffffffffffffffffffffffffffffffffffffff8851160361086757908a889493928a5173ffffffffffffffffffffffffffffffffffffffff169284516101a08b015173ffffffffffffffffffffffffffffffffffffffff16996101c08c015191604051966104258861219d565b8752602087015273ffffffffffffffffffffffffffffffffffffffff16998a6040870152606086015260808501526101808a015173ffffffffffffffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff8116946104939286926137f7565b906101208a015163ffffffff169051604051916104af836121b9565b82526020820190815260408201838152606083019085825260209d8e926040516104d985826121f1565b88815260808701908152604051906104f186836121f1565b89825260a088019182526040519261050987856121f1565b8a845260c0890193845260405195610520876121d5565b348752878701958c87525173ffffffffffffffffffffffffffffffffffffffff16986040519a8b998a017fc7c7f5b300000000000000000000000000000000000000000000000000000000905260248a01608090525163ffffffff1660a48a01525160c48901525160e48801525161010487015251610124860160e0905261018486016105ac9161257a565b9051908581037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c016101448701526105e39161257a565b9051908481037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c0161016486015261061a9161257a565b91516044840152516064830152336084830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835261065d90836121f1565b6040519261066a84612154565b8a84528c8401526040830152606082015260405192838080937f704a2e9b0000000000000000000000000000000000000000000000000000000082523360048301916106b59261352f565b039134905af190811561085c578b9161083a575b508051810181898201910360c081126108365760801361083257604051906060820182811067ffffffffffffffff82111761080557604052898301518252604083015167ffffffffffffffff81168103610801578a938360a09286610742960152604061073985606085016137cf565b910152016137cf565b01519561010081015187106107d957916101009795939173ffffffffffffffffffffffffffffffffffffffff8063ffffffff817fa9689619f27686fce49dd727e6b92a6cbcc1f2303b628462551888f4e82e32e89d9b999751169d511699511691519251935116935115159660405198895288015260408701526060860152608085015260a084015260c083015260e0820152a280f35b60048b7f4af147aa000000000000000000000000000000000000000000000000000000008152fd5b8d80fd5b60248e7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8b80fd5b8c80fd5b61085691503d808d833e61084e81836121f1565b8101906134d0565b5f6106c9565b6040513d8d823e3d90fd5b60048b7f1e4ec46b000000000000000000000000000000000000000000000000000000008152fd5b9094506020813d6020116108dc575b816108ab602093836121f1565b810103126108d8575173ffffffffffffffffffffffffffffffffffffffff811681036108d857935f6103ae565b8980fd5b3d915061089e565b6040513d8c823e3d90fd5b8280fd5b5080fd5b50346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257604060209173ffffffffffffffffffffffffffffffffffffffff6109496120f4565b168152606683522054604051908152f35b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760ff604060209273ffffffffffffffffffffffffffffffffffffffff610a006120f4565b168152606784522054166040519015158152f35b50346101625760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760043567ffffffffffffffff81116108f357610a64903690600401612379565b60243567ffffffffffffffff81116108ef57610a87610acb913690600401612333565b3384526067602052610a9f60ff60408620541661273e565b73ffffffffffffffffffffffffffffffffffffffff8351166040840151606085015190610297866127a3565b73ffffffffffffffffffffffffffffffffffffffff81511690610afa602082019263ffffffff84511690612f25565b906101208101805115159173ffffffffffffffffffffffffffffffffffffffff815116916080820194610b5873ffffffffffffffffffffffffffffffffffffffff8751169560a08501968751968461032b60c08901998a5190612910565b610b7c73ffffffffffffffffffffffffffffffffffffffff875116855190836131fa565b73ffffffffffffffffffffffffffffffffffffffff86511693610c4a86519260e086019373ffffffffffffffffffffffffffffffffffffffff85511673ffffffffffffffffffffffffffffffffffffffff61018089015116906101a0890151926040519a610be98c61219d565b8b5260208b015260408a0152606089015260808801526101408601805190979015610d0c5773ffffffffffffffffffffffffffffffffffffffff875116915b73ffffffffffffffffffffffffffffffffffffffff61016089015116906137f7565b936101008101518510610ce457917f4c8820052d6bc12246719250c47ce9c6d91f319216271c751080ab962ce4be7e9795939173ffffffffffffffffffffffffffffffffffffffff8063ffffffff816101009b999751169c511698511696519151925116925115159451151595604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152a280f35b60048a7f4af147aa000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff821691610c28565b50346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257610d616120f4565b60015460ff8160a81c161590818092611415575b80156113fb575b156113775781740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff831617600155611334575b506040918251610dd484826121f1565b601b81527f50656e646c652043726f737320436861696e20537761702048756200000000006020820152835190610e0b85836121f1565b600182527f31000000000000000000000000000000000000000000000000000000000000006020830152610e4f60ff60015460a81c16610e4a81613744565b613744565b80519067ffffffffffffffff8211611307578190610e6e60045461358b565b601f811161125c575b50602090601f831160011461119f578892611194575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176004555b80519067ffffffffffffffff821161116757610edd60055461358b565b601f81116110c6575b50602090601f8311600114610ff15773ffffffffffffffffffffffffffffffffffffffff939291879183610fe6575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176005555b8460025584600355610f6160ff60015460a81c16613744565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000845416178355610f91575080f35b60207f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498917fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff600154166001555160018152a180f35b015190505f80610f15565b600587527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08416885b8181106110ae575091600193918573ffffffffffffffffffffffffffffffffffffffff97969410611077575b505050811b01600555610f48565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080611069565b9293602060018192878601518155019501930161103d565b60058752601f830160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001906020841061113f575b601f0160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001905b8181106111345750610ee6565b878155600101611127565b7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091506110fd565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b015190505f80610e8d565b600489527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016895b818110611244575090846001959493921061120d575b505050811b01600455610ec0565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f80806111ff565b929360206001819287860151815501950193016111e9565b90915060048852601f830160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0190602084106112df575b90601f8493920160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905b8181106112d15750610e77565b8981558493506001016112c4565b7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9150611296565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501010000000000000000000000000000000000000000176001555f610dc4565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b158015610d7c5750600160ff8260a01c1614610d7c565b50600160ff8260a01c1610610d75565b50346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610162576004359067ffffffffffffffff821161016257602061015a61147a36600486016125bd565b612a0e565b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610162576002541580611631575b156115d3576115779061151a6135dc565b906115236136af565b9060206115856040519361153783866121f1565b8385525f3681376040519687967f0f00000000000000000000000000000000000000000000000000000000000000885260e08589015260e088019061257a565b90868203604088015261257a565b904660608601523060808601528260a086015284820360c08601528080855193848152019401925b8281106115bc57505050500390f35b8351855286955093810193928101926001016115ad565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b5060035415611509565b50346101625760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257602061015a61167936612243565b61294a565b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760015473ffffffffffffffffffffffffffffffffffffffff811690813303611794577fffffffffffffffffffffffff0000000000000000000000000000000000000000918284548273ffffffffffffffffffffffffffffffffffffffff82167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08880a3161783551660015580f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760043567ffffffffffffffff81116108f35761183d90369060040161248e565b60243567ffffffffffffffff81116108ef576118606118a4913690600401612333565b338452606760205261187860ff60408620541661273e565b73ffffffffffffffffffffffffffffffffffffffff835116604084015160608501519061029786612c33565b6119ea73ffffffffffffffffffffffffffffffffffffffff825116916118d6602082019363ffffffff85511690612f25565b60e08201805115159073ffffffffffffffffffffffffffffffffffffffff845116608085019261193173ffffffffffffffffffffffffffffffffffffffff8551169160a08801928351948861032b60c08c0197885190612910565b61195573ffffffffffffffffffffffffffffffffffffffff855116835190876131fa565b8873ffffffffffffffffffffffffffffffffffffffff85511682519661010089019773ffffffffffffffffffffffffffffffffffffffff8951166101208b015191604051946119a386612154565b855260208501526040840152606083015260405180809b81947f704a2e9b00000000000000000000000000000000000000000000000000000000835233906004840161352f565b039173ffffffffffffffffffffffffffffffffffffffff3491165af195898715611aaa5763ffffffff73ffffffffffffffffffffffffffffffffffffffff809381937f87ddee34ded39e330fcd8606c222a15a38a5c797f4bb924e36524f83ad66d6779c60c09c611a8f575b505051169a5116965116945116905191519251151593604051958652602086015260408501526060840152608083015260a0820152a280f35b611aa2913d8091833e61084e81836121f1565b508d5f611a56565b604051903d90823e3d90fd5b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610162576004359067ffffffffffffffff821161016257602061015a611b7a3660048601612379565b6127a3565b50346101625760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257611bb76120f4565b7f827c394aebf0fcbf2d4f5c0107a0031a3860ec0d5e06756e03aacccfb8d2836e602073ffffffffffffffffffffffffffffffffffffffff611bf7612138565b93611c068287541633146126d9565b16928385526067825260408520901515907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a280f35b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034611f1c576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611f1c57611cf536612243565b60e43567ffffffffffffffff8111611f1c57611d18611d5c913690600401612333565b335f526067602052611d3060ff60405f20541661273e565b73ffffffffffffffffffffffffffffffffffffffff83511660408401516060850151906102978661294a565b73ffffffffffffffffffffffffffffffffffffffff81511690611d8b602082019263ffffffff84511690612f25565b90608081019173ffffffffffffffffffffffffffffffffffffffff8084511691611dbc60c0850193845190836131fa565b169173ffffffffffffffffffffffffffffffffffffffff81511673ffffffffffffffffffffffffffffffffffffffff8551169060a0830194855190803b15611f1c576040517fc3b35a7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015293909216602484015260448301525f908290606490829084905af18015611f1157611ed0575b50917fb9f5ff38da0b1cafa5e46c18d59e9c91a01c9f8b1e326f1f2105444474953da2939173ffffffffffffffffffffffffffffffffffffffff63ffffffff8160809651169751169351169151905191604051938452602084015260408301526060820152a280f35b60809391965091611f035f7fb9f5ff38da0b1cafa5e46c18d59e9c91a01c9f8b1e326f1f2105444474953da296946121f1565b5f9692949193509190611e67565b6040513d5f823e3d90fd5b5f80fd5b34611f1c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611f1c57611f576120f4565b611f5f612138565b90604435918215158303611f1c57611f8f73ffffffffffffffffffffffffffffffffffffffff5f541633146126d9565b156120af5773ffffffffffffffffffffffffffffffffffffffff16908115908115916120a7575b5015612049577fffffffffffffffffffffffff00000000000000000000000000000000000000005f548273ffffffffffffffffffffffffffffffffffffffff82167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a316175f55600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b905082611fb6565b73ffffffffffffffffffffffffffffffffffffffff9150167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b6004359073ffffffffffffffffffffffffffffffffffffffff82168203611f1c57565b359073ffffffffffffffffffffffffffffffffffffffff82168203611f1c57565b602435908115158203611f1c57565b35908115158203611f1c57565b6080810190811067ffffffffffffffff82111761217057604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761217057604052565b60e0810190811067ffffffffffffffff82111761217057604052565b6040810190811067ffffffffffffffff82111761217057604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761217057604052565b359063ffffffff82168203611f1c57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60e0910112611f1c576040519061227a826121b9565b8160043573ffffffffffffffffffffffffffffffffffffffff81168103611f1c57815260243563ffffffff81168103611f1c5760208201526044356040820152606435606082015260843573ffffffffffffffffffffffffffffffffffffffff81168103611f1c57608082015260a43560a082015260c060c435910152565b67ffffffffffffffff811161217057601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f82011215611f1c5780359061234a826122f9565b9261235860405194856121f1565b82845260208383010111611f1c57815f926020809301838601378301015290565b91906101c083820312611f1c57604051906101c0820182811067ffffffffffffffff8211176121705760405281936123b081612117565b83526123be60208201612232565b602084015260408101356040840152606081013560608401526123e360808201612117565b608084015260a081013560a084015260c081013560c084015261240860e08201612117565b60e08401526101008101356101008401526124266101208201612147565b6101208401526124396101408201612147565b61014084015261244c6101608201612117565b61016084015261245f6101808201612117565b6101808401526101a08101359167ffffffffffffffff8311611f1c576101a0926124899201612333565b910152565b919061014083820312611f1c5760405190610140820182811067ffffffffffffffff8211176121705760405281936124c581612117565b83526124d360208201612232565b602084015260408101356040840152606081013560608401526124f860808201612117565b608084015260a081013560a084015260c081013560c084015261251d60e08201612147565b60e084015261252f6101008201612117565b6101008401526101208101359167ffffffffffffffff8311611f1c57610120926124899201612333565b5f5b83811061256a5750505f910152565b818101518382015260200161255b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936125b681518092818752878088019101612559565b0116010190565b91906101e083820312611f1c57604051906101e0820182811067ffffffffffffffff8211176121705760405281936125f481612117565b835261260260208201612232565b6020840152604081013560408401526060810135606084015261262760808201612117565b608084015260a081013560a084015260c081013560c084015261264c60e08201612117565b60e084015261010081013561010084015261266a6101208201612232565b6101208401526101408101356101408401526126896101608201612147565b61016084015261269c6101808201612117565b6101808401526126af6101a08201612117565b6101a08401526101c08101359167ffffffffffffffff8311611f1c576101c0926124899201612333565b156126e057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561274557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f537761704875623a2063616c6c6572206973206e6f74206578656375746f72006044820152fd5b61290d9073ffffffffffffffffffffffffffffffffffffffff8151169063ffffffff602082015116906040810151606082015173ffffffffffffffffffffffffffffffffffffffff60808401511660a084015160c085015173ffffffffffffffffffffffffffffffffffffffff60e087015116906101008701519261012088015115159461014089015115159673ffffffffffffffffffffffffffffffffffffffff6101608b015116986101a073ffffffffffffffffffffffffffffffffffffffff6101808d0151169b0151602081519101209b60606040519e8f907ff26b1014716ab3163777b4ef144a9457e2e64623847d8b4b4f05335a00349a2b60208301526040820152015260808d015260a08c015260c08b015260e08a01526101008901526101208801526101408701526101608601526101808501526101a08401526101c08301526101e08201526101e08152612901610200826121f1565b60208151910120613284565b90565b9190820180921161291d57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61290d9073ffffffffffffffffffffffffffffffffffffffff8151169063ffffffff60208201511690604081015190606081015173ffffffffffffffffffffffffffffffffffffffff6080830151169060c060a0840151930151936040519560208701977fcaa7f7696d87717a31bc145c3f672929c08e815e9b58bc5855e1d40417433faf895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152612a06610120826121f1565b519020613284565b805173ffffffffffffffffffffffffffffffffffffffff16602082015163ffffffff169160408101516060820151608083015173ffffffffffffffffffffffffffffffffffffffff1660a084015160c085015160e086015173ffffffffffffffffffffffffffffffffffffffff166101008701519161012088015163ffffffff1693610140890151956101608a01511515976101808b015173ffffffffffffffffffffffffffffffffffffffff16996101a08c015173ffffffffffffffffffffffffffffffffffffffff169b6101c00151805190602001209c6040519e8f91602083017f7c00b1bb8ac11d6b14f63f3559ba6719e88a26da11c31a1d14a5f4d1e1f18f399052604083015260608201526080015260a08d015260c08c015260e08b01526101008a01526101208901526101408801526101608701526101808601526101a08501526101c08401526101e08301526102008201526102008152612b78610220826121f1565b8051906020012061290d90613284565b6040805173ffffffffffffffffffffffffffffffffffffffff9092166020830190815263ffffffff90931690820152612bec81606081015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826121f1565b5190206055600b6040517f000000000000000000000000000000000000000000000000000000000000000060408201528360208201523081520160ff81532091823b151590565b61290d9073ffffffffffffffffffffffffffffffffffffffff8151169063ffffffff60208201511690604081015190606081015173ffffffffffffffffffffffffffffffffffffffff60808301511660a083015160c08401519160e085015115159361012073ffffffffffffffffffffffffffffffffffffffff6101008801511696015160208151910120966040519860208a019a7f82955f7c395a15068c493fc341eb22cb188b8cf8fb4f2ea70df7f0e0b58e42bb8c5260408b015260608a0152608089015260a088015260c087015260e08601526101008501526101208401526101408301526101608201526101608152612a06610180826121f1565b9293909193612d418282613aea565b6005819492941015612ef857159283612ed5575b508215612e1b575b505015612df357421015612dcb5773ffffffffffffffffffffffffffffffffffffffff16805f5260666020528160405f20541015612da3575f52606660205260405f2055565b7f756688fe000000000000000000000000000000000000000000000000000000005f5260045ffd5b7ff753ba40000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f925090612bc0612e6b849360405192839160208301957f1626ba7e000000000000000000000000000000000000000000000000000000008752602484015260406044840152606483019061257a565b5190855afa612e78613b1f565b81612ec7575b81612e8c575b505f80612d5d565b9050602081805181010312611f1c57602001517f1626ba7e00000000000000000000000000000000000000000000000000000000145f612e84565b905060208151101590612e7e565b73ffffffffffffffffffffffffffffffffffffffff86811691161492505f612d55565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90612f308183612b88565b9391936131de57613007907f0000000000000000000000000000000000000000000000000000000000000000613035813b612f6a816122f9565b90612f7860405192836121f1565b8082525f6020830180953c60206040518181019073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682526040808201525f606082015260608152612fe06080826121f1565b604051978894612ff885870198899251928391612559565b85019151809385840190612559565b0101037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846121f1565b8251156131805773ffffffffffffffffffffffffffffffffffffffff9251905ff5169283156131225773ffffffffffffffffffffffffffffffffffffffff168093036130f557823b15611f1c576040517fc5e4c9f900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91909116600482015263ffffffff9190911660248201525f8160448183865af18015611f11576130eb575090565b5f61290d916121f1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152fd5b50505073ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690813b15611f1c57604473ffffffffffffffffffffffffffffffffffffffff915f809460405196879586947fef36298000000000000000000000000000000000000000000000000000000000865216600485015260248401525af18015611f11576132785750565b5f613282916121f1565b565b60429061328f613b4e565b613297613b99565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526132e860c0826121f1565b51902090604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b9392909193613331575b50505050565b73ffffffffffffffffffffffffffffffffffffffff1690821561332b576040517f23b872dd000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff958616602483015291909416604485015260648085019390935291835261340c92915f9081906133bf6084866121f1565b604051946133ce6040876121f1565b602086527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646020870152519082855af1613406613b1f565b91613c47565b80519081159182156134ad575b505015613429575f80808061332b565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b8192509060209181010312611f1c57602001518015158103611f1c575f80613419565b602081830312611f1c5780519067ffffffffffffffff8211611f1c570181601f82011215611f1c578051613503816122f9565b9261351160405194856121f1565b81845260208284010111611f1c5761290d9160208085019101612559565b9073ffffffffffffffffffffffffffffffffffffffff61358460606020939695966040865283815116604087015284810151828701528360408201511660808701520151608060a086015260c085019061257a565b9416910152565b90600182811c921680156135d2575b60208310146135a557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161359a565b604051905f82600454916135ef8361358b565b80835292600181169081156136725750600114613613575b613282925003836121f1565b5060045f90815290917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061365657505090602061328292820101613607565b602091935080600191548385890101520191019091849261363e565b602092506132829491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b820101613607565b604051905f82600554916136c28361358b565b808352926001811690811561367257506001146136e557613282925003836121f1565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b81831061372857505090602061328292820101613607565b6020919350806001915483858901015201910190918492613710565b1561374b57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b9190826040910312611f1c576040516137e7816121d5565b6020808294805184520151910152565b73ffffffffffffffffffffffffffffffffffffffff9093919316918051925f936020830191825191813b15611f1c576040517fc3b35a7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015291909116602482015260448101929092525f908290606490829084905af18015611f1157613a26575b50604082019173ffffffffffffffffffffffffffffffffffffffff6138ba8185511686613a3b565b961691823b15613a225761399192869283608093604051968795869485937fc3a7e1ce00000000000000000000000000000000000000000000000000000000855273ffffffffffffffffffffffffffffffffffffffff8d1660048601526040602486015273ffffffffffffffffffffffffffffffffffffffff825116604486015251606485015273ffffffffffffffffffffffffffffffffffffffff8b5116608485015273ffffffffffffffffffffffffffffffffffffffff60608201511660a4850152015160a060c484015260e483019061257a565b03925af18015613a1757908491613a02575b50509073ffffffffffffffffffffffffffffffffffffffff6139c792511690613a3b565b9182039182116139d5575090565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526011600452fd5b81613a0c916121f1565b6108ef57825f6139a3565b6040513d86823e3d90fd5b8580fd5b613a339194505f906121f1565b5f925f613892565b9073ffffffffffffffffffffffffffffffffffffffff1680613a5c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115611f11575f91613abb575090565b90506020813d602011613ae2575b81613ad6602093836121f1565b81010312611f1c575190565b3d9150613ac9565b9060418151145f14613b1657613b1291602082015190606060408401519301515f1a90613bbf565b9091565b50505f90600290565b3d15613b49573d90613b30826122f9565b91613b3e60405193846121f1565b82523d5f602084013e565b606090565b613b566135dc565b8051908115613b66576020012090565b50506002548015613b745790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b613ba16136af565b8051908115613bb1576020012090565b50506003548015613b745790565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613c3c576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa15611f11575f5173ffffffffffffffffffffffffffffffffffffffff811615613c3457905f90565b505f90600190565b505050505f90600390565b91929015613cc25750815115613c5b575090565b3b15613c645790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015613cd55750805190602001fd5b613d13906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152602483019061257a565b0390fdfea26469706673582212200d1d0e4886c963c69b1a858604e33e50ae460c2c2bcdff37c96fdc03a528f16564736f6c634300081e0033",
1179
+ "deployedBytecode": "0x60806040526004361015610011575f80fd5b5f5f3560e01c8063078dfbe714611f205780630bb1c86414611cbb5780631122f54e14611c4c5780631e1bff3f14611b7f57806320cc564014611b255780632d610bb014611ab657806339228aae146117f25780634e71e0c8146116d75780635a3f0e6b1461167e57806369df58d31461163b57806384b0196e146114d05780638da5cb5b1461147f5780639b8e55ca14611425578063c4d66de814610d29578063da40bf8f14610a14578063debfda30146109ac578063e30c39781461095a578063e8ad29b4146108f7578063ebb1e41a146101e5578063f22e9dd4146101655763fb83402a14610101575f80fd5b346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610162576004359067ffffffffffffffff821161016257602061015a610155366004860161248e565b612c33565b604051908152f35b80fd5b50346101625760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625761019d6120f4565b6024359163ffffffff831683036101625760606101ba8484612b88565b9073ffffffffffffffffffffffffffffffffffffffff60405193168352602083015215156040820152f35b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760043567ffffffffffffffff81116108f3576102309036906004016125bd565b60243567ffffffffffffffff81116108ef5761025361029d913690600401612333565b338452606760205261026b60ff60408620541661273e565b73ffffffffffffffffffffffffffffffffffffffff835116604084015160608501519061029786612a0e565b92612d32565b73ffffffffffffffffffffffffffffffffffffffff815116906102cc602082019263ffffffff84511690612f25565b6101608201916004835115159373ffffffffffffffffffffffffffffffffffffffff835116608084019561033173ffffffffffffffffffffffffffffffffffffffff8851169160a08701928351948961032b60c08b0197885190612910565b93613321565b61035573ffffffffffffffffffffffffffffffffffffffff885116835190886131fa565b60e0850195602073ffffffffffffffffffffffffffffffffffffffff885116604051968780927ffc0c546a0000000000000000000000000000000000000000000000000000000082525afa9485156108e4578a9561088f575b506101408601805173ffffffffffffffffffffffffffffffffffffffff8851160361086757908a889493928a5173ffffffffffffffffffffffffffffffffffffffff169284516101a08b015173ffffffffffffffffffffffffffffffffffffffff16996101c08c015191604051966104258861219d565b8752602087015273ffffffffffffffffffffffffffffffffffffffff16998a6040870152606086015260808501526101808a015173ffffffffffffffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff8116946104939286926137f7565b906101208a015163ffffffff169051604051916104af836121b9565b82526020820190815260408201838152606083019085825260209d8e926040516104d985826121f1565b88815260808701908152604051906104f186836121f1565b89825260a088019182526040519261050987856121f1565b8a845260c0890193845260405195610520876121d5565b348752878701958c87525173ffffffffffffffffffffffffffffffffffffffff16986040519a8b998a017fc7c7f5b300000000000000000000000000000000000000000000000000000000905260248a01608090525163ffffffff1660a48a01525160c48901525160e48801525161010487015251610124860160e0905261018486016105ac9161257a565b9051908581037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c016101448701526105e39161257a565b9051908481037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c0161016486015261061a9161257a565b91516044840152516064830152336084830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835261065d90836121f1565b6040519261066a84612154565b8a84528c8401526040830152606082015260405192838080937f704a2e9b0000000000000000000000000000000000000000000000000000000082523360048301916106b59261352f565b039134905af190811561085c578b9161083a575b508051810181898201910360c081126108365760801361083257604051906060820182811067ffffffffffffffff82111761080557604052898301518252604083015167ffffffffffffffff81168103610801578a938360a09286610742960152604061073985606085016137cf565b910152016137cf565b01519561010081015187106107d957916101009795939173ffffffffffffffffffffffffffffffffffffffff8063ffffffff817fa9689619f27686fce49dd727e6b92a6cbcc1f2303b628462551888f4e82e32e89d9b999751169d511699511691519251935116935115159660405198895288015260408701526060860152608085015260a084015260c083015260e0820152a280f35b60048b7f4af147aa000000000000000000000000000000000000000000000000000000008152fd5b8d80fd5b60248e7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8b80fd5b8c80fd5b61085691503d808d833e61084e81836121f1565b8101906134d0565b5f6106c9565b6040513d8d823e3d90fd5b60048b7f1e4ec46b000000000000000000000000000000000000000000000000000000008152fd5b9094506020813d6020116108dc575b816108ab602093836121f1565b810103126108d8575173ffffffffffffffffffffffffffffffffffffffff811681036108d857935f6103ae565b8980fd5b3d915061089e565b6040513d8c823e3d90fd5b8280fd5b5080fd5b50346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257604060209173ffffffffffffffffffffffffffffffffffffffff6109496120f4565b168152606683522054604051908152f35b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760ff604060209273ffffffffffffffffffffffffffffffffffffffff610a006120f4565b168152606784522054166040519015158152f35b50346101625760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760043567ffffffffffffffff81116108f357610a64903690600401612379565b60243567ffffffffffffffff81116108ef57610a87610acb913690600401612333565b3384526067602052610a9f60ff60408620541661273e565b73ffffffffffffffffffffffffffffffffffffffff8351166040840151606085015190610297866127a3565b73ffffffffffffffffffffffffffffffffffffffff81511690610afa602082019263ffffffff84511690612f25565b906101208101805115159173ffffffffffffffffffffffffffffffffffffffff815116916080820194610b5873ffffffffffffffffffffffffffffffffffffffff8751169560a08501968751968461032b60c08901998a5190612910565b610b7c73ffffffffffffffffffffffffffffffffffffffff875116855190836131fa565b73ffffffffffffffffffffffffffffffffffffffff86511693610c4a86519260e086019373ffffffffffffffffffffffffffffffffffffffff85511673ffffffffffffffffffffffffffffffffffffffff61018089015116906101a0890151926040519a610be98c61219d565b8b5260208b015260408a0152606089015260808801526101408601805190979015610d0c5773ffffffffffffffffffffffffffffffffffffffff875116915b73ffffffffffffffffffffffffffffffffffffffff61016089015116906137f7565b936101008101518510610ce457917f4c8820052d6bc12246719250c47ce9c6d91f319216271c751080ab962ce4be7e9795939173ffffffffffffffffffffffffffffffffffffffff8063ffffffff816101009b999751169c511698511696519151925116925115159451151595604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152a280f35b60048a7f4af147aa000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff821691610c28565b50346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257610d616120f4565b60015460ff8160a81c161590818092611415575b80156113fb575b156113775781740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff831617600155611334575b506040918251610dd484826121f1565b601b81527f50656e646c652043726f737320436861696e20537761702048756200000000006020820152835190610e0b85836121f1565b600182527f31000000000000000000000000000000000000000000000000000000000000006020830152610e4f60ff60015460a81c16610e4a81613744565b613744565b80519067ffffffffffffffff8211611307578190610e6e60045461358b565b601f811161125c575b50602090601f831160011461119f578892611194575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176004555b80519067ffffffffffffffff821161116757610edd60055461358b565b601f81116110c6575b50602090601f8311600114610ff15773ffffffffffffffffffffffffffffffffffffffff939291879183610fe6575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176005555b8460025584600355610f6160ff60015460a81c16613744565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000845416178355610f91575080f35b60207f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498917fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff600154166001555160018152a180f35b015190505f80610f15565b600587527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08416885b8181106110ae575091600193918573ffffffffffffffffffffffffffffffffffffffff97969410611077575b505050811b01600555610f48565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080611069565b9293602060018192878601518155019501930161103d565b60058752601f830160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001906020841061113f575b601f0160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001905b8181106111345750610ee6565b878155600101611127565b7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091506110fd565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b015190505f80610e8d565b600489527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016895b818110611244575090846001959493921061120d575b505050811b01600455610ec0565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f80806111ff565b929360206001819287860151815501950193016111e9565b90915060048852601f830160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0190602084106112df575b90601f8493920160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905b8181106112d15750610e77565b8981558493506001016112c4565b7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9150611296565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501010000000000000000000000000000000000000000176001555f610dc4565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b158015610d7c5750600160ff8260a01c1614610d7c565b50600160ff8260a01c1610610d75565b50346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610162576004359067ffffffffffffffff821161016257602061015a61147a36600486016125bd565b612a0e565b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610162576002541580611631575b156115d3576115779061151a6135dc565b906115236136af565b9060206115856040519361153783866121f1565b8385525f3681376040519687967f0f00000000000000000000000000000000000000000000000000000000000000885260e08589015260e088019061257a565b90868203604088015261257a565b904660608601523060808601528260a086015284820360c08601528080855193848152019401925b8281106115bc57505050500390f35b8351855286955093810193928101926001016115ad565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b5060035415611509565b50346101625760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257602061015a61167936612243565b61294a565b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760015473ffffffffffffffffffffffffffffffffffffffff811690813303611794577fffffffffffffffffffffffff0000000000000000000000000000000000000000918284548273ffffffffffffffffffffffffffffffffffffffff82167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08880a3161783551660015580f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760043567ffffffffffffffff81116108f35761183d90369060040161248e565b60243567ffffffffffffffff81116108ef576118606118a4913690600401612333565b338452606760205261187860ff60408620541661273e565b73ffffffffffffffffffffffffffffffffffffffff835116604084015160608501519061029786612c33565b6119ea73ffffffffffffffffffffffffffffffffffffffff825116916118d6602082019363ffffffff85511690612f25565b60e08201805115159073ffffffffffffffffffffffffffffffffffffffff845116608085019261193173ffffffffffffffffffffffffffffffffffffffff8551169160a08801928351948861032b60c08c0197885190612910565b61195573ffffffffffffffffffffffffffffffffffffffff855116835190876131fa565b8873ffffffffffffffffffffffffffffffffffffffff85511682519661010089019773ffffffffffffffffffffffffffffffffffffffff8951166101208b015191604051946119a386612154565b855260208501526040840152606083015260405180809b81947f704a2e9b00000000000000000000000000000000000000000000000000000000835233906004840161352f565b039173ffffffffffffffffffffffffffffffffffffffff3491165af195898715611aaa5763ffffffff73ffffffffffffffffffffffffffffffffffffffff809381937f87ddee34ded39e330fcd8606c222a15a38a5c797f4bb924e36524f83ad66d6779c60c09c611a8f575b505051169a5116965116945116905191519251151593604051958652602086015260408501526060840152608083015260a0820152a280f35b611aa2913d8091833e61084e81836121f1565b508d5f611a56565b604051903d90823e3d90fd5b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610162576004359067ffffffffffffffff821161016257602061015a611b7a3660048601612379565b6127a3565b50346101625760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257611bb76120f4565b7f827c394aebf0fcbf2d4f5c0107a0031a3860ec0d5e06756e03aacccfb8d2836e602073ffffffffffffffffffffffffffffffffffffffff611bf7612138565b93611c068287541633146126d9565b16928385526067825260408520901515907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a280f35b503461016257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034611f1c576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611f1c57611cf536612243565b60e43567ffffffffffffffff8111611f1c57611d18611d5c913690600401612333565b335f526067602052611d3060ff60405f20541661273e565b73ffffffffffffffffffffffffffffffffffffffff83511660408401516060850151906102978661294a565b73ffffffffffffffffffffffffffffffffffffffff81511690611d8b602082019263ffffffff84511690612f25565b90608081019173ffffffffffffffffffffffffffffffffffffffff8084511691611dbc60c0850193845190836131fa565b169173ffffffffffffffffffffffffffffffffffffffff81511673ffffffffffffffffffffffffffffffffffffffff8551169060a0830194855190803b15611f1c576040517fc3b35a7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015293909216602484015260448301525f908290606490829084905af18015611f1157611ed0575b50917fb9f5ff38da0b1cafa5e46c18d59e9c91a01c9f8b1e326f1f2105444474953da2939173ffffffffffffffffffffffffffffffffffffffff63ffffffff8160809651169751169351169151905191604051938452602084015260408301526060820152a280f35b60809391965091611f035f7fb9f5ff38da0b1cafa5e46c18d59e9c91a01c9f8b1e326f1f2105444474953da296946121f1565b5f9692949193509190611e67565b6040513d5f823e3d90fd5b5f80fd5b34611f1c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611f1c57611f576120f4565b611f5f612138565b90604435918215158303611f1c57611f8f73ffffffffffffffffffffffffffffffffffffffff5f541633146126d9565b156120af5773ffffffffffffffffffffffffffffffffffffffff16908115908115916120a7575b5015612049577fffffffffffffffffffffffff00000000000000000000000000000000000000005f548273ffffffffffffffffffffffffffffffffffffffff82167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a316175f55600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b905082611fb6565b73ffffffffffffffffffffffffffffffffffffffff9150167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b6004359073ffffffffffffffffffffffffffffffffffffffff82168203611f1c57565b359073ffffffffffffffffffffffffffffffffffffffff82168203611f1c57565b602435908115158203611f1c57565b35908115158203611f1c57565b6080810190811067ffffffffffffffff82111761217057604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761217057604052565b60e0810190811067ffffffffffffffff82111761217057604052565b6040810190811067ffffffffffffffff82111761217057604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761217057604052565b359063ffffffff82168203611f1c57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60e0910112611f1c576040519061227a826121b9565b8160043573ffffffffffffffffffffffffffffffffffffffff81168103611f1c57815260243563ffffffff81168103611f1c5760208201526044356040820152606435606082015260843573ffffffffffffffffffffffffffffffffffffffff81168103611f1c57608082015260a43560a082015260c060c435910152565b67ffffffffffffffff811161217057601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f82011215611f1c5780359061234a826122f9565b9261235860405194856121f1565b82845260208383010111611f1c57815f926020809301838601378301015290565b91906101c083820312611f1c57604051906101c0820182811067ffffffffffffffff8211176121705760405281936123b081612117565b83526123be60208201612232565b602084015260408101356040840152606081013560608401526123e360808201612117565b608084015260a081013560a084015260c081013560c084015261240860e08201612117565b60e08401526101008101356101008401526124266101208201612147565b6101208401526124396101408201612147565b61014084015261244c6101608201612117565b61016084015261245f6101808201612117565b6101808401526101a08101359167ffffffffffffffff8311611f1c576101a0926124899201612333565b910152565b919061014083820312611f1c5760405190610140820182811067ffffffffffffffff8211176121705760405281936124c581612117565b83526124d360208201612232565b602084015260408101356040840152606081013560608401526124f860808201612117565b608084015260a081013560a084015260c081013560c084015261251d60e08201612147565b60e084015261252f6101008201612117565b6101008401526101208101359167ffffffffffffffff8311611f1c57610120926124899201612333565b5f5b83811061256a5750505f910152565b818101518382015260200161255b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936125b681518092818752878088019101612559565b0116010190565b91906101e083820312611f1c57604051906101e0820182811067ffffffffffffffff8211176121705760405281936125f481612117565b835261260260208201612232565b6020840152604081013560408401526060810135606084015261262760808201612117565b608084015260a081013560a084015260c081013560c084015261264c60e08201612117565b60e084015261010081013561010084015261266a6101208201612232565b6101208401526101408101356101408401526126896101608201612147565b61016084015261269c6101808201612117565b6101808401526126af6101a08201612117565b6101a08401526101c08101359167ffffffffffffffff8311611f1c576101c0926124899201612333565b156126e057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561274557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f537761704875623a2063616c6c6572206973206e6f74206578656375746f72006044820152fd5b61290d9073ffffffffffffffffffffffffffffffffffffffff8151169063ffffffff602082015116906040810151606082015173ffffffffffffffffffffffffffffffffffffffff60808401511660a084015160c085015173ffffffffffffffffffffffffffffffffffffffff60e087015116906101008701519261012088015115159461014089015115159673ffffffffffffffffffffffffffffffffffffffff6101608b015116986101a073ffffffffffffffffffffffffffffffffffffffff6101808d0151169b0151602081519101209b60606040519e8f907ff26b1014716ab3163777b4ef144a9457e2e64623847d8b4b4f05335a00349a2b60208301526040820152015260808d015260a08c015260c08b015260e08a01526101008901526101208801526101408701526101608601526101808501526101a08401526101c08301526101e08201526101e08152612901610200826121f1565b60208151910120613284565b90565b9190820180921161291d57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61290d9073ffffffffffffffffffffffffffffffffffffffff8151169063ffffffff60208201511690604081015190606081015173ffffffffffffffffffffffffffffffffffffffff6080830151169060c060a0840151930151936040519560208701977fcaa7f7696d87717a31bc145c3f672929c08e815e9b58bc5855e1d40417433faf895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152612a06610120826121f1565b519020613284565b805173ffffffffffffffffffffffffffffffffffffffff16602082015163ffffffff169160408101516060820151608083015173ffffffffffffffffffffffffffffffffffffffff1660a084015160c085015160e086015173ffffffffffffffffffffffffffffffffffffffff166101008701519161012088015163ffffffff1693610140890151956101608a01511515976101808b015173ffffffffffffffffffffffffffffffffffffffff16996101a08c015173ffffffffffffffffffffffffffffffffffffffff169b6101c00151805190602001209c6040519e8f91602083017f7c00b1bb8ac11d6b14f63f3559ba6719e88a26da11c31a1d14a5f4d1e1f18f399052604083015260608201526080015260a08d015260c08c015260e08b01526101008a01526101208901526101408801526101608701526101808601526101a08501526101c08401526101e08301526102008201526102008152612b78610220826121f1565b8051906020012061290d90613284565b6040805173ffffffffffffffffffffffffffffffffffffffff9092166020830190815263ffffffff90931690820152612bec81606081015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826121f1565b5190206055600b6040517f000000000000000000000000000000000000000000000000000000000000000060408201528360208201523081520160ff81532091823b151590565b61290d9073ffffffffffffffffffffffffffffffffffffffff8151169063ffffffff60208201511690604081015190606081015173ffffffffffffffffffffffffffffffffffffffff60808301511660a083015160c08401519160e085015115159361012073ffffffffffffffffffffffffffffffffffffffff6101008801511696015160208151910120966040519860208a019a7f82955f7c395a15068c493fc341eb22cb188b8cf8fb4f2ea70df7f0e0b58e42bb8c5260408b015260608a0152608089015260a088015260c087015260e08601526101008501526101208401526101408301526101608201526101608152612a06610180826121f1565b9293909193612d418282613aea565b6005819492941015612ef857159283612ed5575b508215612e1b575b505015612df357421015612dcb5773ffffffffffffffffffffffffffffffffffffffff16805f5260666020528160405f20541015612da3575f52606660205260405f2055565b7f756688fe000000000000000000000000000000000000000000000000000000005f5260045ffd5b7ff753ba40000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f925090612bc0612e6b849360405192839160208301957f1626ba7e000000000000000000000000000000000000000000000000000000008752602484015260406044840152606483019061257a565b5190855afa612e78613b1f565b81612ec7575b81612e8c575b505f80612d5d565b9050602081805181010312611f1c57602001517f1626ba7e00000000000000000000000000000000000000000000000000000000145f612e84565b905060208151101590612e7e565b73ffffffffffffffffffffffffffffffffffffffff86811691161492505f612d55565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90612f308183612b88565b9391936131de57613007907f0000000000000000000000000000000000000000000000000000000000000000613035813b612f6a816122f9565b90612f7860405192836121f1565b8082525f6020830180953c60206040518181019073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682526040808201525f606082015260608152612fe06080826121f1565b604051978894612ff885870198899251928391612559565b85019151809385840190612559565b0101037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846121f1565b8251156131805773ffffffffffffffffffffffffffffffffffffffff9251905ff5169283156131225773ffffffffffffffffffffffffffffffffffffffff168093036130f557823b15611f1c576040517fc5e4c9f900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91909116600482015263ffffffff9190911660248201525f8160448183865af18015611f11576130eb575090565b5f61290d916121f1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152fd5b50505073ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690813b15611f1c57604473ffffffffffffffffffffffffffffffffffffffff915f809460405196879586947fef36298000000000000000000000000000000000000000000000000000000000865216600485015260248401525af18015611f11576132785750565b5f613282916121f1565b565b60429061328f613b4e565b613297613b99565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526132e860c0826121f1565b51902090604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b9392909193613331575b50505050565b73ffffffffffffffffffffffffffffffffffffffff1690821561332b576040517f23b872dd000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff958616602483015291909416604485015260648085019390935291835261340c92915f9081906133bf6084866121f1565b604051946133ce6040876121f1565b602086527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646020870152519082855af1613406613b1f565b91613c47565b80519081159182156134ad575b505015613429575f80808061332b565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b8192509060209181010312611f1c57602001518015158103611f1c575f80613419565b602081830312611f1c5780519067ffffffffffffffff8211611f1c570181601f82011215611f1c578051613503816122f9565b9261351160405194856121f1565b81845260208284010111611f1c5761290d9160208085019101612559565b9073ffffffffffffffffffffffffffffffffffffffff61358460606020939695966040865283815116604087015284810151828701528360408201511660808701520151608060a086015260c085019061257a565b9416910152565b90600182811c921680156135d2575b60208310146135a557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161359a565b604051905f82600454916135ef8361358b565b80835292600181169081156136725750600114613613575b613282925003836121f1565b5060045f90815290917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061365657505090602061328292820101613607565b602091935080600191548385890101520191019091849261363e565b602092506132829491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b820101613607565b604051905f82600554916136c28361358b565b808352926001811690811561367257506001146136e557613282925003836121f1565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b81831061372857505090602061328292820101613607565b6020919350806001915483858901015201910190918492613710565b1561374b57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b9190826040910312611f1c576040516137e7816121d5565b6020808294805184520151910152565b73ffffffffffffffffffffffffffffffffffffffff9093919316918051925f936020830191825191813b15611f1c576040517fc3b35a7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015291909116602482015260448101929092525f908290606490829084905af18015611f1157613a26575b50604082019173ffffffffffffffffffffffffffffffffffffffff6138ba8185511686613a3b565b961691823b15613a225761399192869283608093604051968795869485937fc3a7e1ce00000000000000000000000000000000000000000000000000000000855273ffffffffffffffffffffffffffffffffffffffff8d1660048601526040602486015273ffffffffffffffffffffffffffffffffffffffff825116604486015251606485015273ffffffffffffffffffffffffffffffffffffffff8b5116608485015273ffffffffffffffffffffffffffffffffffffffff60608201511660a4850152015160a060c484015260e483019061257a565b03925af18015613a1757908491613a02575b50509073ffffffffffffffffffffffffffffffffffffffff6139c792511690613a3b565b9182039182116139d5575090565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526011600452fd5b81613a0c916121f1565b6108ef57825f6139a3565b6040513d86823e3d90fd5b8580fd5b613a339194505f906121f1565b5f925f613892565b9073ffffffffffffffffffffffffffffffffffffffff1680613a5c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115611f11575f91613abb575090565b90506020813d602011613ae2575b81613ad6602093836121f1565b81010312611f1c575190565b3d9150613ac9565b9060418151145f14613b1657613b1291602082015190606060408401519301515f1a90613bbf565b9091565b50505f90600290565b3d15613b49573d90613b30826122f9565b91613b3e60405193846121f1565b82523d5f602084013e565b606090565b613b566135dc565b8051908115613b66576020012090565b50506002548015613b745790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b613ba16136af565b8051908115613bb1576020012090565b50506003548015613b745790565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613c3c576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa15611f11575f5173ffffffffffffffffffffffffffffffffffffffff811615613c3457905f90565b505f90600190565b505050505f90600390565b91929015613cc25750815115613c5b575090565b3b15613c645790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015613cd55750805190602001fd5b613d13906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152602483019061257a565b0390fdfea26469706673582212200d1d0e4886c963c69b1a858604e33e50ae460c2c2bcdff37c96fdc03a528f16564736f6c634300081e0033",
1299
1180
  "linkReferences": {},
1300
1181
  "deployedLinkReferences": {}
1301
1182
  }