Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Loading...
Loading
There are no matching entries
Please try again later
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method |
Block
|
From
|
To
|
|||
|---|---|---|---|---|---|---|---|
| 0x60c03461 | 25050837 | 168 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_donationBox","type":"address"},{"internalType":"address","name":"_baseToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"AccountNotActivatedError","type":"error"},{"inputs":[],"name":"CoreUserExistsPrecompileCallFailed","type":"error"},{"inputs":[],"name":"FundedFlowNotAuthorized","type":"error"},{"inputs":[],"name":"InsufficientAmountForAccountActivation","type":"error"},{"inputs":[],"name":"InsufficientFundsForActivation","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[],"name":"SpotBalancePrecompileCallFailed","type":"error"},{"inputs":[],"name":"SpotPxPrecompileCallFailed","type":"error"},{"inputs":[],"name":"SwapAlreadyFinalized","type":"error"},{"inputs":[],"name":"SwapDoesNotExist","type":"error"},{"inputs":[],"name":"TokenInfoPrecompileCallFailed","type":"error"},{"inputs":[],"name":"TokenNotEligibleForActivation","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"}],"name":"UnsafeToBridgeError","type":"error"},{"inputs":[{"internalType":"bytes32","name":"quoteNonce","type":"bytes32"}],"name":"WrongSwapFinalizationToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint64","name":"amountCore","type":"uint64"}],"name":"AccountActivatedFromUserFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"AccountNotActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint128","name":"cloid","type":"uint128"}],"name":"CancelledLimitOrder","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"balance","type":"uint256"}],"name":"DonationBoxInsufficientFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"indexed":true,"internalType":"address","name":"finalRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"finalToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"evmAmountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bridgingFeesIncurred","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"evmAmountSponsored","type":"uint256"}],"name":"FallbackHyperEVMFlowCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"evmAmountSponsored","type":"uint256"}],"name":"SentSponsorshipFundsToSwapHandler","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint32","name":"coreIndex","type":"uint32"},{"indexed":false,"internalType":"bool","name":"canBeUsedForAccountActivation","type":"bool"},{"indexed":false,"internalType":"uint64","name":"accountActivationFeeCore","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"bridgeSafetyBufferCore","type":"uint64"}],"name":"SetCoreTokenInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint32","name":"spotIndex","type":"uint32"},{"indexed":false,"internalType":"bool","name":"isBuy","type":"bool"},{"indexed":false,"internalType":"uint32","name":"feePpm","type":"uint32"},{"indexed":true,"internalType":"address","name":"swapHandler","type":"address"},{"indexed":false,"internalType":"uint32","name":"suggestedFeeDiscountBps","type":"uint32"}],"name":"SetFinalTokenInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"indexed":true,"internalType":"address","name":"finalRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"finalToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"evmAmountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bridgingFeesIncurred","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"evmAmountSponsored","type":"uint256"}],"name":"SimpleTransferFlowCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"indexed":true,"internalType":"address","name":"finalRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"fundingToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"evmAmountSponsored","type":"uint256"}],"name":"SponsoredAccountActivation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint64","name":"priceX1e8","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"sizeX1e8","type":"uint64"},{"indexed":true,"internalType":"uint128","name":"cloid","type":"uint128"}],"name":"SubmittedLimitOrder","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"indexed":true,"internalType":"address","name":"finalRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"finalToken","type":"address"},{"indexed":false,"internalType":"uint64","name":"totalSent","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"evmAmountSponsored","type":"uint256"}],"name":"SwapFlowFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"indexed":true,"internalType":"address","name":"finalRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"finalToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"evmAmountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bridgingFeesIncurred","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coreAmountIn","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"minAmountToSend","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"maxAmountToSend","type":"uint64"}],"name":"SwapFlowInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"indexed":true,"internalType":"address","name":"finalToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"estBpsSlippage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxAllowableBpsSlippage","type":"uint256"}],"name":"SwapFlowTooExpensive","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint64","name":"amount","type":"uint64"}],"name":"UnsafeToBridge","type":"event"},{"inputs":[],"name":"AUTHORIZED_FUNDED_FLOW_SLOT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DIRECT_CALLER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FUNDS_SWEEPER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONEX1e8","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMISSIONED_BOT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PPM_DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PPM_SCALAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"internalType":"address","name":"finalRecipient","type":"address"},{"internalType":"address","name":"fundingToken","type":"address"}],"name":"activateUserAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"baseToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"finalToken","type":"address"},{"internalType":"uint128","name":"cloid","type":"uint128"}],"name":"cancelLimitOrderByCloid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"coreTokenInfos","outputs":[{"components":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint64[]","name":"spots","type":"uint64[]"},{"internalType":"uint64","name":"deployerTradingFeeShare","type":"uint64"},{"internalType":"address","name":"deployer","type":"address"},{"internalType":"address","name":"evmContract","type":"address"},{"internalType":"uint8","name":"szDecimals","type":"uint8"},{"internalType":"uint8","name":"weiDecimals","type":"uint8"},{"internalType":"int8","name":"evmExtraWeiDecimals","type":"int8"}],"internalType":"struct HyperCoreLib.TokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"uint64","name":"coreIndex","type":"uint64"},{"internalType":"bool","name":"canBeUsedForAccountActivation","type":"bool"},{"internalType":"uint256","name":"accountActivationFeeEVM","type":"uint256"},{"internalType":"uint64","name":"accountActivationFeeCore","type":"uint64"},{"internalType":"uint64","name":"bridgeSafetyBufferCore","type":"uint64"}],"internalType":"struct CoreTokenInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"cumulativeSponsoredActivationFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"cumulativeSponsoredAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"donationBox","outputs":[{"internalType":"contract DonationBox","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amountInEVM","type":"uint256"},{"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"internalType":"address","name":"finalRecipient","type":"address"},{"internalType":"address","name":"finalToken","type":"address"},{"internalType":"uint32","name":"destinationDex","type":"uint32"},{"internalType":"enum AccountCreationMode","name":"accountCreationMode","type":"uint8"},{"internalType":"uint256","name":"maxBpsToSponsor","type":"uint256"},{"internalType":"uint256","name":"extraFeesIncurred","type":"uint256"}],"internalType":"struct CommonFlowParams","name":"params","type":"tuple"},{"internalType":"uint256","name":"maxUserSlippageBps","type":"uint256"}],"name":"executeFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amountInEVM","type":"uint256"},{"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"internalType":"address","name":"finalRecipient","type":"address"},{"internalType":"address","name":"finalToken","type":"address"},{"internalType":"uint32","name":"destinationDex","type":"uint32"},{"internalType":"enum AccountCreationMode","name":"accountCreationMode","type":"uint8"},{"internalType":"uint256","name":"maxBpsToSponsor","type":"uint256"},{"internalType":"uint256","name":"extraFeesIncurred","type":"uint256"}],"internalType":"struct CommonFlowParams","name":"params","type":"tuple"}],"name":"executeSimpleTransferFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amountInEVM","type":"uint256"},{"internalType":"bytes32","name":"quoteNonce","type":"bytes32"},{"internalType":"address","name":"finalRecipient","type":"address"},{"internalType":"address","name":"finalToken","type":"address"},{"internalType":"uint32","name":"destinationDex","type":"uint32"},{"internalType":"enum AccountCreationMode","name":"accountCreationMode","type":"uint8"},{"internalType":"uint256","name":"maxBpsToSponsor","type":"uint256"},{"internalType":"uint256","name":"extraFeesIncurred","type":"uint256"}],"internalType":"struct CommonFlowParams","name":"params","type":"tuple"}],"name":"fallbackHyperEVMFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"finalTokenInfos","outputs":[{"components":[{"internalType":"uint32","name":"spotIndex","type":"uint32"},{"internalType":"bool","name":"isBuy","type":"bool"},{"internalType":"uint32","name":"feePpm","type":"uint32"},{"internalType":"uint32","name":"suggestedDiscountBps","type":"uint32"},{"internalType":"contract SwapHandler","name":"swapHandler","type":"address"}],"internalType":"struct FinalTokenInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"finalToken","type":"address"},{"internalType":"bytes32[]","name":"quoteNonces","type":"bytes32[]"},{"internalType":"uint64[]","name":"limitOrderOuts","type":"uint64[]"}],"name":"finalizeSwapFlows","outputs":[{"internalType":"uint256","name":"finalized","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"lastPullFundsBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"finalToken","type":"address"}],"name":"predictSwapHandler","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendSponsorshipFundsToSwapHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint32","name":"coreIndex","type":"uint32"},{"internalType":"bool","name":"canBeUsedForAccountActivation","type":"bool"},{"internalType":"uint64","name":"accountActivationFeeCore","type":"uint64"},{"internalType":"uint64","name":"bridgeSafetyBufferCore","type":"uint64"}],"name":"setCoreTokenInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"finalToken","type":"address"},{"internalType":"uint32","name":"spotIndex","type":"uint32"},{"internalType":"bool","name":"isBuy","type":"bool"},{"internalType":"uint32","name":"feePpm","type":"uint32"},{"internalType":"uint32","name":"suggestedDiscountBps","type":"uint32"}],"name":"setFinalTokenInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"finalToken","type":"address"},{"internalType":"uint64","name":"priceX1e8","type":"uint64"},{"internalType":"uint64","name":"sizeX1e8","type":"uint64"},{"internalType":"uint128","name":"cloid","type":"uint128"}],"name":"submitLimitOrderFromBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"quoteNonce","type":"bytes32"}],"name":"swaps","outputs":[{"components":[{"internalType":"address","name":"finalRecipient","type":"address"},{"internalType":"address","name":"finalToken","type":"address"},{"internalType":"uint32","name":"destinationDex","type":"uint32"},{"internalType":"uint64","name":"minAmountToSend","type":"uint64"},{"internalType":"uint64","name":"maxAmountToSend","type":"uint64"},{"internalType":"bool","name":"isSponsored","type":"bool"},{"internalType":"bool","name":"finalized","type":"bool"}],"internalType":"struct HyperCoreFlowExecutor.SwapFlowState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepERC20FromSwapHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepErc20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepErc20FromDonationBox","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"},{"internalType":"uint32","name":"sourceDex","type":"uint32"},{"internalType":"uint32","name":"destinationDex","type":"uint32"}],"name":"sweepOnCore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"finalToken","type":"address"},{"internalType":"uint64","name":"finalTokenAmount","type":"uint64"},{"internalType":"uint64","name":"baseTokenAmount","type":"uint64"}],"name":"sweepOnCoreFromSwapHandler","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60c0346100d157601f615fd838819003918201601f19168301916001600160401b038311848410176100d55780849260409485528339810103126100d157610052602061004b836100e9565b92016100e9565b6001600160a01b0390911660805260a052604051615eda90816100fe823960805181818161081801528181610ad701528181611586015281816117ae015281816127ce01528181613d1201528181613e0801528181614d830152614fbb015260a0518181816105d20152818161074a01528181610c7301526140110152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100d15756fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a71461237d57508063037a06a41461219e57806304c73f6014612180578063057f0370146120c65780631f74a0b51461205457806321081d3c14612019578063248a9ca314611fd95780632e748b2114611e7d5780632f2ff15d14611e32578063319adf9f14611a6a57806336568abe14611a2557806337710e2014611a015780633b1c6a01146116aa5780633cf3a02514611675578063490e662f1461164d5780634b3b029b14611612578063502a82e214611555578063521c98ba14610e8a5780635956364d14610e5157806369b97ac714610e3357806379c7b60b14610e0f57806379c7f28914610d4157806390a0827b14610d0857806391d1485414610cb15780639262e0fc14610c2b57806396cc2cfb14610a08578063a217fddf146109ec578063a38d8fa61461083c578063a4b672b6146107f8578063af5de6f91461076e578063c55dae631461072a578063ccbedaec1461053e578063d06e28ed14610451578063d4d35af814610416578063d547741f146103c2578063e38b73a9146103a6578063ea0aaf2414610348578063eb84e7f2146102185763f7e02c21146101cb575f80fd5b3461021557610100366003190112610215576101e63661253f565b5f516020615e255f395f51905f5254156102065761020390614c85565b80f35b63cd6d8f7d60e01b8252600482fd5b80fd5b50346102155760203660031901126102155760408160e09260c0835161023d81612503565b82815282602082015282858201528260608201528260808201528260a0820152015260043581527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b03602052206040519061029682612503565b6001600160a01b03815416918281526001600160401b0360018301548160208401916001600160a01b038116835263ffffffff60026040870197828460a01c168952606088019360c01c84520154966001600160a01b036080880195858a16875260ff60c060a08b019a828d60401c1615158c52019a60481c1615158a526040519a8b52511660208a015251166040880152511660608601525116608084015251151560a083015251151560c0820152f35b503461021557602036600319011261021557602061039d6103676123d0565b6001600160a01b03165f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0560205260405f2090565b54604051908152f35b5034610215578060031936011261021557602060405160068152f35b5034610215576040366003190112610215576104126004356103e26123e6565b9061040d610408825f525f516020615e655f395f51905f52602052600160405f20015490565b612e3a565b61360b565b5080f35b503461021557806003193601126102155760206040517f472a9ff14edbbbd33e77edbff56fa59e95bbaaa0c893ed10c0330e1b4d8794998152f35b50346102155760403660031901126102155761046b6123d0565b602435906fffffffffffffffffffffffffffffffff821680920361052f57610491612dcb565b8261049b82612f51565b63ffffffff6001600160a01b03608083015116915116813b1561052f57829160448392604051948593849263435354d360e01b845260048401528960248401525af180156105335761051a575b50506001600160a01b03167f02366c0d102495be1ee805b749be7baebab4fc0710c6d3f38751f1a22bd711648380a380f35b816105249161251e565b61052f57825f6104e8565b8280fd5b6040513d84823e3d90fd5b503461021557606036600319011261021557806105596123d0565b610561612461565b610569612477565b90610572612d5c565b61057b83612605565b5443111561067e574361058d84612605565b556001600160a01b0360016105a1856125cf565b015416926001600160401b038216610683575b50506001600160401b0381166105c8575050f35b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683525f516020615e455f395f51905f526020526001600160401b0360046040852001541690823b1561067e57604051633ded719760e11b81526001600160401b0392831660048201523360248201529116604482015263ffffffff60648201529082908290608490829084905af180156105335761066d5750f35b816106779161251e565b6102155780f35b505050fd5b6001600160a01b031684525f516020615e455f395f51905f526020526001600160401b03600460408620015416833b1561072657604051633ded719760e11b81526001600160401b0391821660048201523360248201529116604482015263ffffffff6064820152838160848183875af190811561071b578491156105b4578161070c9161251e565b61071757825f6105b4565b5050fd5b6040513d86823e3d90fd5b8480fd5b503461021557806003193601126102155760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102155760203660031901126102155760206001600160a01b0361079a6107956123d0565b612e87565b610c216040516107ac8583018261251e565b818152848101916152048339519020604051908482019260ff60f81b84523060601b602184015260358301526055820152605581526107ec60758261251e565b51902016604051908152f35b503461021557806003193601126102155760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461021557608036600319011261021557806108576123d0565b61085f612461565b60443563ffffffff811680910361067e576001600160a01b0361088061240f565b93610889612d5c565b1684525f516020615e455f395f51905f5260205263ffffffff6001600160401b03600460408720015416931663ffffffff8114806109df575b1561098657505061090c916001600160401b0361091a92604051923360208501526040840152166060820152606081526108fd60808261251e565b60405192839160208301614c63565b03601f19810183528261251e565b7333333333333333333333333333333333333333333b15610983578161095c91604051809381926317938e1360e01b835260206004840152602483019061248d565b0381837333333333333333333333333333333333333333335af180156105335761066d5750f35b50fd5b6109da9261090c946001600160401b0392604051943360208701528860408701526060860152608085015260a08401521660c082015260c081526109cb60e08261251e565b60405192839160208301614c40565b61091a565b5063ffffffff82146108c2565b5034610215578060031936011261021557602090604051908152f35b503461021557604036600319011261021557610a226123d0565b90610a2b612dcb565b610a3482612acd565b610a3d83612f51565b92610a5160e083510151840b602435614bbb565b946020840190610a7a6001600160401b03835116886001600160401b0360a08901511691613536565b15610c0257859650610a8b8461263b565b610a968482546126c9565b90556001600160a01b038416807f410b9a8c926b6c439cdceb39c0bb8f829838a25bc5a26af9d4c263d1313cc46b6020604051878152a26001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b15610bfe5760405163f3fef3a360e01b81526001600160a01b0383166004820152602481018690529088908290604490829084905af18015610bf35785918991610bd6575b50506001600160401b0391610b666001600160a01b0392608060e09601928484511690612fb5565b511692511694510151850b93813b15610bd257604051639c45c34b60e01b81526001600160a01b039490941660048501526001600160401b0316602484015260448301919091525f9290920b60648201529082908290608490829084905af180156105335761066d5750f35b8580fd5b81925090610be39161251e565b610bef5783875f610b3e565b8680fd5b6040513d8a823e3d90fd5b8780fd5b6377e88bc960e11b86526001600160a01b0384166004526001600160401b038716602452604486fd5b50346102155761012036600319011261021557610c473661253f565b5f516020615e255f395f51905f525415610206576001600160a01b036060820151166001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145f14610ca357610203906136be565b61020390610104359061400f565b5034610215576040366003190112610215576001600160a01b036040610cd56123e6565b9260043581525f516020615e655f395f51905f526020522091165f52602052602060ff60405f2054166040519015158152f35b503461021557604036600319011261021557610203610d256123d0565b610d2d612d5c565b602435906001600160a01b03339116612fb5565b50346102155760203660031901126102155760a0610d6e610d606123d0565b610d68612aa3565b506125cf565b6001600160a01b03600160405192610d85846124b1565b63ffffffff8154818116865260ff8160201c1615156020870152818160281c16604087015260481c1660608501520154166080820152610e0d60405180926001600160a01b036080809263ffffffff815116855260208101511515602086015263ffffffff604082015116604086015263ffffffff6060820151166060860152015116910152565bf35b503461021557602036600319011261021557602061039d610e2e6123d0565b61263b565b50346102155780600319360112610215576020604051620f42408152f35b50346102155761010036600319011261021557610e6d3661253f565b5f516020615e255f395f51905f52541561020657610203906136be565b50346102155760a036600319011261021557610ea46123d0565b610eac6123fc565b90610eb5612422565b6064356001600160401b038116810361072657608435916001600160401b0383168303610bd257610ee4612d0d565b610eec6129ea565b50610ef56129ac565b508580604051602081019063ffffffff8916825260208152610f1860408261251e565b519061080c5afa610f27612a74565b901561154657805181016020810191602081830312611522576020810151906001600160401b0382116115425701906101009082900312610bfe5760405191610f6f836124e7565b60208201516001600160401b0381116115425760209083010181601f820112156115425789815191610fa083612a59565b92610fae604051948561251e565b808452846020828401011161052f578060208093018386015e83010152835260408201516001600160401b038111611542576020908301019080601f83011215611542578151916001600160401b03831161150e578260051b9060405193611019602084018661251e565b845260208085019282010192831161153e57602001905b8282106115265750505060208301526101009061104f60608201613033565b604084015261106060808201615143565b606084015261107160a08201615143565b608084015261108260c08201615157565b60a084015261109360e08201615157565b60c0840152015180880b808203611522576110b39160e084015284613494565b50604051916110c1836124cc565b825263ffffffff87166020830152821515604083015260608201526001600160401b03831660808201526001600160401b03841660a08201526001600160a01b03851687525f516020615e455f395f51905f5260205260408720815180518051906001600160401b03821161150e5781908b61113d8654612a21565b601f81116114d3575b5050602090601f8311600114611471578c92611466575b50508160011b915f199060031b1c19161782555b6001820160208201518051906001600160401b03821161145257680100000000000000008211611452576020908c8454848655808510611406575b505001918b5260208b20908b5b8160021c81106113c157506003198116810380611365575b50505060408083015160028501805460608601516001600160e01b03199091166001600160401b039384161790841b7bffffffffffffffffffffffffffffffffffffffff00000000000000001617905560808085015160038701805460a08881015160c08a015160e0909a015176ffffffffffffffffffffffffffffffffffffffffffffff199093166001600160a01b039586161790821b60ff60a01b161760a89990991b60ff60a81b169890981760ff60b01b60b09290921b919091161790556020880151600488018054868b015168ffffffffffffffffff199091169286169290921791151590951b60ff60401b16179093557f12cf3d04179e82c834f3ee7169a5df80651aa65530127f9ddb04c8cd822443539a90999298909791969295879591945091929160069060608401516005820155019185808c83015116168619845416178355015167ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b191617905563ffffffff6040519a168a52151560208a01521660408801521660608601521692a280f35b928c938d5b8181106113835750505060021c015584848460a06111d1565b90919460206113b76001926001600160401b03895116908560031b6001600160401b03809160031b9316831b921b19161790565b960192910161136a565b8c8d5b600481106113d95750838201556001016111b9565b85519095916001916020916001600160401b0360068a901b81811b199092169216901b17920195016113c4565b838287611432945220600380870160021c820192601888831b1680611439575b500160021c01906136a8565b8c5f6111ac565b5f198501908154905f19908a03851b1c1690555f611426565b634e487b7160e01b8c52604160045260248cfd5b015190505f8061115d565b858d52818d209250601f1984168d5b8181106114bb57509084600195949392106114a3575b505050811b018255611171565b01515f1960f88460031b161c191690555f8080611496565b92936020600181928786015181550195019301611480565b602082886114fd945220601f850160051c81019160208610611504575b601f0160051c01906136a8565b8b5f611146565b90915081906114f0565b634e487b7160e01b8b52604160045260248bfd5b8880fd5b6020809161153384613033565b815201910190611030565b8b80fd5b8980fd5b639b0c335d60e01b8752600487fd5b50346102155760403660031901126102155761156f6123d0565b60243561157a612d5c565b826001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016931692803b1561160e5760405163f3fef3a360e01b81526001600160a01b0385166004820152602481018490529082908290604490829084905af18015610533576115f9575b5050610203913390612fb5565b816116039161251e565b61052f57825f6115ec565b5080fd5b503461021557806003193601126102155760206040517f5300fde95a5e446527bf6aa7c91bd6661bef5398afc77061d9bc87efb80b7ef68152f35b503461021557806003193601126102155760206040515f516020615e255f395f51905f528152f35b50346102155760203660031901126102155761168f612d5c565b80808080600435335af16116a1612a74565b50156102155780f35b5034610215576060366003190112610215576116c46123e6565b6044356001600160a01b038116918282036118f5576116e1612dcb565b6116ea82612acd565b916116f482612eca565b610726576040830151156107265760016001600160401b0360808501511601906001600160401b0382116119ed5790859161175861173960e087510151850b84613494565b509560208101936001600160401b0360a0818751169301511691613536565b1561052f57611797906001600160a01b03165f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0560205260405f2090565b6117a28582546126c9565b90556001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561052f5760405163f3fef3a360e01b81526001600160a01b0387166004820152602481018690529083908290604490829084905af19081156119e25783916119cd575b5050516001600160401b0316806118f95750506118318284614ea5565b736b9e773128f453f5c2c60935ee2de2cbc5390a243b156118f5578360405163611e2a2d60e11b81526001600160a01b038316600482015283602482015263ffffffff6044820152818160648183736b9e773128f453f5c2c60935ee2de2cbc5390a245af18015610533576118e0575b50506001600160a01b03905b60405192835216907f2b348084e891b20d449a69f90114c5ab7bf7c84d64c25445c8ab440d469a6b4d602060043592a480f35b816118ea9161251e565b6118f557835f6118a1565b8380fd5b611941816119138661190d61090c95614e3e565b89614e64565b604051906001600160a01b0386166020830152604082015260016060820152606081526108fd60808261251e565b7333333333333333333333333333333333333333333b1561160e578161198391604051809381926317938e1360e01b835260206004840152602483019061248d565b0381837333333333333333333333333333333333333333335af18015610533576119b8575b50506001600160a01b03906118ad565b816119c29161251e565b6118f557835f6119a8565b816119d79161251e565b61160e57815f611814565b6040513d85823e3d90fd5b634e487b7160e01b86526011600452602486fd5b503461021557602036600319011261021557602061039d611a206123d0565b612605565b503461021557604036600319011261021557611a3f6123e6565b336001600160a01b03821603611a5b576104129060043561360b565b63334bd91960e11b8252600482fd5b5034610215576020366003190112610215576001600160a01b03611a8c6123d0565b611a946129ea565b501681525f516020615e455f395f51905f52602052604081209060405190611abb826124cc565b604051611ac7816124e7565b60405184548184611ad783612a21565b8083529260018116908115611e135750600114611dd2575b611afb9250038261251e565b815260018401604051808260208294549384815201908652602086209286905b806003830110611d8057611b51945491818110611d66575b818110611d49575b818110611d2c575b10611d1e575b50038261251e565b60208201526001600160a01b0360028501546001600160401b038116604084015260401c16606082015260038401546001600160a01b038116608083015260ff8160a01c1660a083015260ff8160a81c1660c083015260b01c820b60e0820152825260048301549260208301906001600160401b038516825260ff604085019560401c161515855260066005820154916060860192835201549460808501926001600160401b03871684526001600160401b0360a087019760401c1687526040519560208752519460c06020880152611c38865161010060e08a01526101e089019061248d565b60208088015189830360df19016101008b015280518084529282019892910190835b818110611cff57505050926001600160401b03809693899a969360e0878c610120866040819c0151169101528c6101406001600160a01b036060840151169101528c6101606001600160a01b036080840151169101528c61018060ff60a0840151169101528c6101a060ff60c0840151169101520151900b6101c08b0152511660408901525115156060880152516080870152511660a0850152511660c08301520390f35b82516001600160401b03168a526020998a019990920191600101611c5a565b60c01c81526020015f611b49565b9260206001916001600160401b038560801c168152019301611b43565b9260206001916001600160401b038560401c168152019301611b3b565b9260206001916001600160401b0385168152019301611b33565b916004919350608060019186546001600160401b03811682526001600160401b038160401c1660208301526001600160401b0381841c16604083015260c01c6060820152019401920184929391611b1b565b5090868552602085209085915b818310611df7575050906020611afb92820101611aef565b6020919350806001915483858801015201910190918392611ddf565b60209250611afb94915060ff191682840152151560051b820101611aef565b503461021557604036600319011261021557610412600435611e526123e6565b90611e78610408825f525f516020615e655f395f51905f52602052600160405f20015490565b613564565b503461021557608036600319011261021557611e976123d0565b611e9f612461565b611ea7612477565b90606435926fffffffffffffffffffffffffffffffff841680940361072657611ece612dcb565b84611ed882612f51565b926001600160a01b0360808501511693843b1561052f57611f626101048492836001600160401b03806040519788968795636f0d192560e11b875260048701906001600160a01b036080809263ffffffff815116855260208101511515602086015263ffffffff604082015116604086015263ffffffff6060820151166060860152015116910152565b169a8b60a485015216988960c48401528b60e48401525af1801561053357611fc4575b50506001600160a01b036040917f500d805a349357fe5d4759fe052d79bd744b82c8452837f52a7456ec7d3d751c93835195865260208601521692a380f35b81611fce9161251e565b61072657845f611f85565b50346102155760203660031901126102155760206120116004355f525f516020615e655f395f51905f52602052600160405f20015490565b604051908152f35b503461021557806003193601126102155760206040517f880a9ba888678c7fe4e8c4f028c224f26ce12a3bed6e96025c61ef8a5db6312f8152f35b50346102155760603660031901126102155761206e6123d0565b6024356001600160401b03811161052f5761208d903690600401612431565b9092604435906001600160401b0382116102155760206120118686866120b63660048901612431565b9390926120c1612dcb565b6126d6565b503461217c57604036600319011261217c576120e06123d0565b906024356120ec612d5c565b6001600160a01b0360806120ff85612f51565b015116803b1561217c576040516390a0827b60e01b81526001600160a01b038516600482015260248101839052905f908290604490829084905af180156121715761215b575b5061020391926001600160a01b03339116612fb5565b61020392505f61216a9161251e565b5f91612145565b6040513d5f823e3d90fd5b5f80fd5b3461217c575f36600319011261217c5760206040516305f5e1008152f35b3461217c5760a036600319011261217c576121b76123d0565b6121bf6123fc565b6121c7612422565b916121d061240f565b926084359163ffffffff831680930361217c576121ec81612acd565b506121f5612d0d565b6001600160a01b036001612208836125cf565b01541690811561232c575b63ffffffff60405195612225876124b1565b16948581526001600160a01b03600181602084019615159586885263ffffffff604086019b1697888c52606086018a8152836080880193169c8d845263ffffffff61226f8a6125cf565b9851169263ffffffff60481b68ffffffff000000000064ff000000008b549351151560201b16935160281b16935160481b169363ffffffff60481b199168ffffffffffffffffff1916171617171785555116920191166001600160601b0360a01b8254161790556122df86612eca565b1561217c577ff0dcc8957a27613dd82c92382ad37254b9744169d0caa5f3873cfec7ba794eb9936080936001600160a01b03936040519788526020880152604087015260608601521692a3005b905061233781612e87565b604051610c218082018281106001600160401b03821117612369578291615204833903905ff580156121715790612213565b634e487b7160e01b5f52604160045260245ffd5b3461217c57602036600319011261217c576004359063ffffffff60e01b821680920361217c57602091637965db0b60e01b81149081156123bf575b5015158152f35b6301ffc9a760e01b149050836123b8565b600435906001600160a01b038216820361217c57565b602435906001600160a01b038216820361217c57565b6024359063ffffffff8216820361217c57565b6064359063ffffffff8216820361217c57565b60443590811515820361217c57565b9181601f8401121561217c578235916001600160401b03831161217c576020808501948460051b01011161217c57565b602435906001600160401b038216820361217c57565b604435906001600160401b038216820361217c57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60a081019081106001600160401b0382111761236957604052565b60c081019081106001600160401b0382111761236957604052565b61010081019081106001600160401b0382111761236957604052565b60e081019081106001600160401b0382111761236957604052565b90601f801991011681019081106001600160401b0382111761236957604052565b61010090600319011261217c5760405190612559826124e7565b81600435815260243560208201526044356001600160a01b038116810361217c5760408201526064356001600160a01b038116810361217c57606082015260843563ffffffff8116810361217c57608082015260a435600281101561217c5760a082015260c43560c082015260e060e435910152565b6001600160a01b03165f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0160205260405f2090565b6001600160a01b03165f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0260205260405f2090565b6001600160a01b03165f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0460205260405f2090565b91908110156126815760051b0190565b634e487b7160e01b5f52603260045260245ffd5b906001600160401b03809116911601906001600160401b0382116126b557565b634e487b7160e01b5f52601160045260245ffd5b919082018092116126b557565b9194935f935f9682810361217c576126ed85612605565b5443111561217c57929061270085612acd565b91608061270c87612f51565b01916001600160a01b038351169461273360208601966001600160401b0388511690613047565b965f975b818d10612941575b50508a159250612936915050574361275686612605565b556001600160401b03841680612770575b50505050505050565b6127856127a89560e0855101515f0b90613494565b6001600160401b03869792975116906001600160401b0360a08701511691613536565b1561291757506127b78561263b565b6127c28582546126c9565b90556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166001600160a01b03861690803b1561217c5760405163f3fef3a360e01b81526001600160a01b038316600482015260248101879052905f908290604490829084905af18015612171576128eb575b506001600160a01b038261285f876001600160401b03948460e097511690612fb5565b511693511691510151850b93823b15610bd257604051639c45c34b60e01b81526001600160a01b0390911660048201526001600160401b03909116602482015260448101929092525f9290920b606482015290829082908183816084810103925af18015610533576128d6575b8080808080612767565b6128e182809261251e565b61021557806128cc565b6001600160401b0391975060e09261290b5f6001600160a01b039361251e565b5f98909350915061283c565b6001600160a01b03866377e88bc960e11b5f521660045260245260445ffd5b505f96505050505050565b6129508d83879f9b9697612671565b359061295d8a8588612671565b356001600160401b038116810361217c5761298692898d926001600160a01b038b511692613129565b949091156129a45760019161299a91612695565b98019b9392612737565b989c5061273f565b604051906129b9826124e7565b5f60e08360608152606060208201528260408201528260608201528260808201528260a08201528260c08201520152565b604051906129f7826124cc565b5f60a083612a036129ac565b81528260208201528260408201528260608201528260808201520152565b90600182811c92168015612a4f575b6020831014612a3b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612a30565b6001600160401b03811161236957601f01601f191660200190565b3d15612a9e573d90612a8582612a59565b91612a93604051938461251e565b82523d5f602084013e565b606090565b60405190612ab0826124b1565b5f6080838281528260208201528260408201528260608201520152565b6001600160a01b0390612ade6129ea565b50165f525f516020615e455f395f51905f5260205260405f2060405191612b04836124cc565b60405191612b11836124e7565b6040518154815f612b2183612a21565b8083529260018116908115612cee5750600114612cad575b612b459250038261251e565b8352600181019360405180602087549182815201965f5260205f20905f915b816003840110612c615797612ba59284926001600160a01b039798999a5491818110611d6657818110611d4957818110611d2c5710611d1e5750038261251e565b60208601528160028401546001600160401b038116604088015260401c1660608601526001600160401b0360066003850154946080880197858716895260ff8760a01c1660a082015260c081019660ff8160a81c16885260b01c5f0b60e0820152845260ff6004820154848116602087015260401c1615156040850152600581015460608501520154818116608084015260401c1660a082015293511615159081612c53575b501561217c57565b60ff9150511615155f612c4b565b97600160806004928b546001600160401b03811682526001600160401b038160401c1660208301526001600160401b0381841c16604083015260c01c6060820152019901920191612b64565b5090835f5260205f20905f915b818310612cd2575050906020612b4592820101612b39565b6020919350806001915483858801015201910190918392612cba565b60209250612b4594915060ff191682840152151560051b820101612b39565b335f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615612d4557565b63e2517d3f60e01b5f52336004525f60245260445ffd5b335f9081527f176c3a4e1b4d1d61213187c0dde7f83e2e2c933a339cb5403b4090bc2f0aa49a602052604090205460ff1615612d9457565b63e2517d3f60e01b5f52336004527f880a9ba888678c7fe4e8c4f028c224f26ce12a3bed6e96025c61ef8a5db6312f60245260445ffd5b335f9081527fcf7720576cdb70176b3017d893bcb89ba0f36ed0261d4350fd0180e938b3bacd602052604090205460ff1615612e0357565b63e2517d3f60e01b5f52336004527f5300fde95a5e446527bf6aa7c91bd6661bef5398afc77061d9bc87efb80b7ef660245260445ffd5b805f525f516020615e655f395f51905f5260205260405f206001600160a01b0333165f5260205260ff60405f20541615612e715750565b63e2517d3f60e01b5f523360045260245260445ffd5b60405160208101913060601b83526001600160601b03199060601b16603482015260288152612eb760488261251e565b51902090565b5190811515820361217c57565b5f80916040516001600160a01b03602082019216825260208152612eef60408261251e565b51906108105afa612efe612a74565b9015612f425760208180518101031261217c5760405190602082018281106001600160401b0382111761236957604052612f3a90602001612ebd565b809152151590565b6313dd7ccd60e31b5f5260045ffd5b612f5d90610d68612aa3565b906001600160a01b03600160405193612f75856124b1565b63ffffffff8154818116875260ff8160201c1615156020880152818160281c16604088015260481c16606086015201541691826080820152911561217c57565b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af19060015f5114821615613012575b60405215612ff65750565b6001600160a01b0390635274afe760e01b5f521660045260245ffd5b90600181151661302a57823b15153d15161690612feb565b503d5f823e3d90fd5b51906001600160401b038216820361217c57565b5f919082916001600160401b03604051916001600160a01b0360208401941684521660408201526040815261307d60608261251e565b51906108015afa61308c612a74565b90156130fa5760608180518101031261217c576040519060608201918083106001600160401b03841117612369576001600160401b039260405260406130f360606130d960208601613033565b948585526130e8848201613033565b602086015201613033565b9101521690565b639d2c8fcb60e01b5f5260045ffd5b906001600160401b03809116911603906001600160401b0382116126b557565b959291909395805f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0360205260405f206001600160a01b0381541695861561341c57600282019889549860ff8a60481c1661340d5760018401956001600160a01b03875493166001600160a01b038416036133fa575f916131aa8b612eca565b156133da575b8360c01c9c8c60ff6001600160401b0382169160401c165f1461338057508d8e966001600160401b03811682115f14613378576131ec91613109565b9c5b6001600160401b038086169716928784111561217c578f8f966132149061321c92613109565b969f82612695565b936001600160401b03851610613363575060ff60481b1916690100000000000000000017905560019c61324e91613109565b99815160e001515f0b613261908d613494565b50986001600160a01b031691602001516001600160401b031691803b1561217c575f928360849263ffffffff6001600160401b036040519889978896633ded719760e11b885260048801526024870152169889604486015260a01c1660648401525af18015612171577f53b9d5645f8b7ccd861ebd6036860fd21716451d1f238cb3720f12f3c49b0c43946040946001600160a01b03938493613353575b508061331a575b5054169554169582519182526020820152a4565b82825416887f5adc50a7f1e65d6b397176e0807a39bd0ba27293997500a57ca2cc1359583ccb6020868d5416948a51908152a45f613306565b5f61335d9161251e565b5f6132ff565b5f9f508f9e509c505050505050505050505050565b50505f6131ec565b909d95809d96806001600160401b038316105f146133cf576133ac916133a591613109565b809e612695565b816001600160401b038216115f146133c857505b9c8d956131ee565b90506133c0565b50506133ac5f6133a5565b915060408101511561217c576001600160401b03608082015116916131b0565b8563358d72d160e01b5f5260045260245ffd5b63f7348a7960e01b5f5260045ffd5b631a40316d60e01b5f5260045ffd5b60ff16604d81116126b557600a0a90565b919082039182116126b557565b8115613453570490565b634e487b7160e01b5f52601260045260245ffd5b90620f4240820291808304620f424014901517156126b557565b818102929181159184041417156126b557565b9190805f0b80155f146134b25750506001600160401b03821691905b565b5f8113156134dd57506134ca6134d99160ff1661342b565b6001600160401b038416613481565b9190565b9050607f1981146126b5576001600160401b039261350261350b925f0360ff1661342b565b938491166126c9565b5f1981019081116126b55761353261352b846001600160401b0393613449565b9384613481565b1690565b61355c6001600160401b039293613556849361355181614e3e565b613047565b94612695565b169116101590565b805f525f516020615e655f395f51905f5260205260405f206001600160a01b0383165f5260205260ff60405f205416155f1461360557805f525f516020615e655f395f51905f5260205260405f206001600160a01b0383165f5260205260405f20600160ff198254161790556001600160a01b03339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b805f525f516020615e655f395f51905f5260205260405f206001600160a01b0383165f5260205260ff60405f2054165f1461360557805f525f516020615e655f395f51905f5260205260405f206001600160a01b0383165f5260205260405f2060ff1981541690556001600160a01b03339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b8181106136b3575050565b5f81556001016136a8565b6060810151906001600160a01b035f921691825f525f516020615e455f395f51905f5260205260405f20604051906136f5826124cc565b604051613701816124e7565b6040518254815f61371183612a21565b8083529260018116908115613ff05750600114613faf575b6137359250038261251e565b815260018201604051808260208294549384815201905f5260205f20925f905b806003830110613f5d57613787945491818110611d6657818110611d4957818110611d2c5710611d1e5750038261251e565b60208201526001600160a01b0360028301546001600160401b038116604084015260401c16606082015260038201546001600160a01b038116608083015260ff8160a01c1660a083015260ff8160a81c1660c083015260b01c5f0b60e08201528252600481015492600660208401926001600160401b038616845260ff604086019660401c16151586526005810154606086015201549260808101936001600160401b03811685526001600160401b0360a083019160401c1681525f94604088019661385c6001600160a01b03895116612eca565b15613e90575b505086519261271061388861387d60e08b01968751906126c9565b60c08b015190613481565b0494845195808711613e88575b5085613de6575b6138d46138bb6138ad888c516126c9565b60e0875101515f0b90614bbb565b919094826001600160401b038086511692511691613536565b15613d97575085613d08575b6001600160401b03906138f28b61263b565b6138fd8882546126c9565b905551169261392960e06001600160a01b038a511692510151830b63ffffffff60808c01511694614bbb565b9390916001600160401b03891695866001600160401b0387161115613cf957908392918d979695946139f8575b50505050505f516020615e855f395f51905f529561397391613109565b50806139b6575b50506139b16001600160a01b0360208701519551169551915192604051938493846040919493926060820195825260208201520152565b0390a4565b60208701517f5adc50a7f1e65d6b397176e0807a39bd0ba27293997500a57ca2cc1359583ccb60206001600160a01b0389511693604051908152a4855f61397a565b809791929394959697155f14613b63575083613a1391614ea5565b308103613abf5750736b9e773128f453f5c2c60935ee2de2cbc5390a243b1561052f5760405191630acb7f4b60e21b835260048301526024820152818160448183736b9e773128f453f5c2c60935ee2de2cbc5390a245af1801561053357908a94939291613a9c575b50505f516020615e855f395f51905f5295613973915b9181975f80613956565b818093949697989550613aae9161251e565b610215579081899396959492613a7c565b91736b9e773128f453f5c2c60935ee2de2cbc5390a243b156118f5576040519263611e2a2d60e11b8452600484015260248301526044820152818160648183736b9e773128f453f5c2c60935ee2de2cbc5390a245af1801561053357908a94939291613b40575b50505f516020615e855f395f51905f529561397391613a92565b818093949697989550613b529161251e565b610215579081899396959492613b26565b9096959493613b789061190d83959495614e3e565b308314801590613ceb575b613ba4575b505050505f516020615e855f395f51905f529561397391613a92565b90919293949550613bb58986613109565b9163ffffffff811480613ce3575b15613c945750916001600160401b03613bfd9261090c946040519360208501526040840152166060820152606081526108fd60808261251e565b7333333333333333333333333333333333333333333b1561160e5781613c3f91604051809381926317938e1360e01b835260206004840152602483019061248d565b0381837333333333333333333333333333333333333333335af1801561053357908a94939291613c71575b8080613b88565b818093949697989550613c839161251e565b610215579081899396959492613c6a565b613cde9261090c94926001600160401b039260405194602086015287604086015263ffffffff6060860152608085015260a08401521660c082015260c081526109cb60e08261251e565b613bfd565b506001613bc3565b5063ffffffff821415613b83565b6306506d5560e11b8552600485fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561217c5760405163f3fef3a360e01b81526001600160a01b038c16600482015260248101889052905f908290604490829084905af1801561217157613d7b575b506138e0565b613d889192505f9061251e565b5f906001600160401b03613d75565b989450505050507f8d61555dcf69ba745e97fdea78e2652d9cdd464ca521faad482fe796f6d5841c935060209250829150613dd181614c85565b0151926001600160401b0360405191168152a3565b613df5868b60208c0151614fac565b61389c576040516370a0823160e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201529095506020816024818d5afa908115612171575f91613e56575b509461389c565b90506020813d602011613e80575b81613e716020938361251e565b8101031261217c57515f613e4f565b3d9150613e64565b95505f613895565b9091955060a08801516002811015613f495715908180613f3c575b613f1f578115613f15575b50613ecd57516001600160401b0316935f80613862565b50505050506134b092507f31604f5790fbed7a37471cea010a8f08483441a6e1235ac48bb59337439a630d60206001600160a01b0381850151935116604051908152a2614c85565b905051155f613eb6565b6001600160a01b038851166320a2097d60e11b5f5260045260245ffd5b5060c08901511515613eab565b634e487b7160e01b5f52602160045260245ffd5b916004919350608060019186546001600160401b03811682526001600160401b038160401c1660208301526001600160401b0381841c16604083015260c01c6060820152019401920184929391613755565b5090845f5260205f20905f915b818310613fd457505090602061373592820101613729565b6020919350806001915483858801015201910190918392613fbc565b6020925061373594915060ff191682840152151560051b820101613729565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03811691825f525f516020615e455f395f51905f5260205260405f2060405193614060856124cc565b60405161406c816124e7565b6040518354815f61407c83612a21565b8083529260018116908115614b9c5750600114614b5b575b6140a09250038261251e565b815260018301604051808260208294549384815201905f5260205f20925f905b806003830110614b09576140f2945491818110611d6657818110611d4957818110611d2c5710611d1e5750038261251e565b60208201526001600160a01b0360028401546001600160401b038116604084015260401c16606082015260038301546001600160a01b038116608083015260ff8160a01c1660a083015260ff8160a81c1660c083015260b01c5f0b60e08201528552600660048301549260ff60208801946001600160401b038116865260401c1615156040880152600581015460608801520154956001600160401b03871660808701526001600160401b0360a087019760401c16875260608401936001600160a01b038551165f525f516020615e455f395f51905f5260205260405f2094604051956141de876124cc565b6040516141ea816124e7565b6040518254815f6141fa83612a21565b8083529260018116908115614aea5750600114614aa9575b61421e9250038261251e565b815260018201604051808260208294549384815201905f5260205f20925f905b806003830110614a5757614270945491818110611d6657818110611d4957818110611d2c5710611d1e5750038261251e565b60208201526001600160a01b0360028301546001600160401b038116604084015260401c16606082015260038201546001600160a01b038116608083015260ff8160a01c1660a083015260ff8160a81c1660c083015260b01c5f0b60e082015287526001600160401b03600660048301549282841660208b015260ff60408b019460401c1615158452600581015460608b0152015481811660808a015260401c1660a08801526143296001600160a01b03835116612f51565b9360408401916143426001600160a01b03845116612eca565b156149a8575b5083519760e085019182519160c087019a8b51151593614367916126c9565b8d5160e001515f0b61437891614bbb565b90508d5160c0015160ff16825160c0015160ff169061439692615179565b921561497a5782915b5f8063ffffffff8b511660405160208101918252602081526143c260408261251e565b51906108085afa6143d1612a74565b901561496b5760208180518101031261217c57898f9360ff60a061441f9260206001600160401b03614407826144259901613033565b16950197885115155f1461496057505101511661342b565b90613481565b8251156149165763ffffffff6144408160608d01511661508f565b16620f4240019081620f4240116126b557614476620f42409161441f6001600160401b039463ffffffff8f6040015116906126c9565b0416908c51908115155f1461490e5750915b51156148cd576305f5e10081101561488d57505f5b6144bd6144aa8651613467565b6144b78a518851906126c9565b906126c9565b5f198101919082116126b5576144b76144e3926144dd8b518951906126c9565b90613449565b60648083028381048214841517156126b55782116148135750505085518c5160e001515f0b61451191614bbb565b9d8e8b9c929c516001600160401b031691516001600160401b03169061453692613536565b156147c3579c8a9b9c9d85516001600160a01b03169287516001600160a01b03169460808a015163ffffffff16925115156040519561457487612503565b8652602086019687526040860193845260608601916001600160401b03169586835260808101936001600160401b03169788855260a0820192835260c08201938d5f86526020019687515f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0360205260405f2093516001600160a01b03166001600160a01b03166001600160601b0360a01b8554161784556001840192516001600160a01b03166001600160a01b03166001600160601b0360a01b84541617835551908254906001600160401b0360c01b905160c01b169163ffffffff60a01b9060a01b16906001600160a01b03161717905560020192516001600160401b03166001600160401b03166001600160401b03198454161783555115156146b290839060ff60401b825491151560401b169060ff60401b1916179055565b51151581549060481b60ff60481b169060ff60481b19161790555194516001600160a01b031695516001600160a01b03169651935160405194855260208501526001600160401b031660408401526060830152608082015260a07f550576b2f9e0ac12dfd5dd2d5743b5b7f11f34302b5f6bec6ad60db81bd6a91891a4608001516001600160a01b0316928361474792612fb5565b516001600160401b0316935160e001515f0b93813b1561217c57604051639c45c34b60e01b81526001600160a01b039490941660048501526001600160401b0316602484015260448301919091525f92830b60648301529091908290608490829084905af18015612171576147b95750565b5f6134b09161251e565b50505050509450955050925050816134b0947f8d61555dcf69ba745e97fdea78e2652d9cdd464ca521faad482fe796f6d5841c602080870151926001600160401b0360405191168152a352614c85565b999c5099509c50505050509450809650602091500151906001600160a01b03845116928181018091116126b5575f1981019081116126b5578115613453576134b0977fc8f90125c6a36c77a571201afc10310420481ab4895fadabb596d0ba71c22e3e92604092049082519182526020820152a3526136be565b6305f5e0ff19016001600160401b0381116126b5576148c76148bc6001600160401b036305f5e1009316613467565b6305f5e0ff906126c9565b0461449d565b6305f5e1008111156148e057505f61449d565b6305f5e100036001600160401b0381116126b5576148c76148bc6001600160401b036305f5e1009316613467565b905091614488565b63ffffffff61492a8160608d01511661508f565b16620f42400390620f424082116126b557614476620f42409161441f6001600160401b039463ffffffff8f60400151169061343c565b90505101511661342b565b635cffc5fb60e11b5f5260045ffd5b816127100361271081116126b55761271061499f6001600160401b0392838716613481565b0416929161439f565b60a08501516002811015613f495715908180614a4a575b614a2d578115614a23575b506149d5575f614348565b509450945095505092506134b094507f31604f5790fbed7a37471cea010a8f08483441a6e1235ac48bb59337439a630d60206001600160a01b0381870151935116604051908152a252614c85565b905051155f6149ca565b6001600160a01b038451166320a2097d60e11b5f5260045260245ffd5b5060c086015115156149bf565b916004919350608060019186546001600160401b03811682526001600160401b038160401c1660208301526001600160401b0381841c16604083015260c01c606082015201940192018492939161423e565b5090845f5260205f20905f915b818310614ace57505090602061421e92820101614212565b6020919350806001915483858801015201910190918392614ab6565b6020925061421e94915060ff191682840152151560051b820101614212565b916004919350608060019186546001600160401b03811682526001600160401b038160401c1660208301526001600160401b0381841c16604083015260c01c60608201520194019201849293916140c0565b5090855f5260205f20905f915b818310614b805750509060206140a092820101614094565b6020919350806001915483858801015201910190918392614b68565b602092506140a094915060ff191682840152151560051b820101614094565b9190805f0b9081155f14614be7575050815b6001600160401b03811161217c576001600160401b031690565b5f821315614c1f57614bfc915060ff1661342b565b91821561345357614c138184614c1a93069061343c565b9283613449565b614bcd565b505f0380805f0b036126b557614c3a614c1a9160ff1661342b565b83613481565b630100000d60e01b8152815160049290919082906020018483015e01015f815290565b6280000360e11b8152815160049290919082906020018483015e01015f815290565b8051612710614ca8614c9d60e08501938451906126c9565b60c085015190613481565b0481518181115f14614e365750905b81906020840191614cda83519460608701956001600160a01b0387511690614fac565b15614e2f575b80614d79575b7f4755f239bb1b047245415cb917deced72a3ca8baebcef109c396ff332ea6f50f916139b16001600160a01b0380614d1f858a516126c9565b96614d37828a51169860408c0199848b511690612fb5565b614d43828a511661263b565b614d4e8782546126c9565b9055519651169651169651915192604051938493846040919493926060820195825260208201520152565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916001600160a01b0385511692803b1561217c5760405163f3fef3a360e01b81526001600160a01b03949094166004850152602484018390525f908490604490829084905af1928315612171577f4755f239bb1b047245415cb917deced72a3ca8baebcef109c396ff332ea6f50f93614e1f575b509150614ce6565b5f614e299161251e565b5f614e17565b505f614ce0565b905090614cb7565b6001600160401b03166001609d1b01806001609d1b116126b5576001600160a01b031690565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526134b091614ea060648361251e565b6150aa565b9060405190602082019063095ea7b360e01b8252736b9e773128f453f5c2c60935ee2de2cbc5390a246024840152604483015260448252614ee760648361251e565b5f806001600160a01b0385169284519082855af190614f04612a74565b82614f72575b5081614f67575b5015614f1b575050565b6134b091614ea060405163095ea7b360e01b6020820152736b9e773128f453f5c2c60935ee2de2cbc5390a2460248201525f604482015260448152614f6160648261251e565b826150aa565b90503b15155f614f11565b80519192508115918215614f8a575b5050905f614f0a565b819250906020918101031261217c576020614fa59101612ebd565b5f80614f81565b6040516370a0823160e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660048301529092169392909190602082602481885afa918215612171575f9261505b575b508082109485159561501c575b50505050565b7f5180f0ad9e9bd2296de2ee38c85d11c56613fa73f8ee66792f26ac318f1274749260609260405192835260208301526040820152a25f808080615016565b9091506020813d602011615087575b816150776020938361251e565b8101031261217c5751905f615009565b3d915061506a565b63ffffffff60649116029063ffffffff82169182036126b557565b906001600160a01b0361510b92165f80604051936150c960408661251e565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af1615105612a74565b916151d8565b8051908115918215615121575b50501561217c57565b819250906020918101031261217c57602061513c9101612ebd565b5f80615118565b51906001600160a01b038216820361217c57565b519060ff8216820361217c57565b9060ff8091169116039060ff82116126b557565b9160ff811660ff83168181145f14615192575050505090565b6001600160401b0394929111156151c0576151b96151b4613532948693615165565b61342b565b9116613481565b6151d16151b4859261353295615165565b9116613449565b919250156151f4578151156151eb575090565b3b1561217c5790565b50805190811561217c57602001fdfe60a080604052346100455733608052610bd7908161004a8239608051818181607b015281816101870152818161035901528181610658015281816106ff01526108d00152f35b5f80fdfe60806040526004361015610011575f80fd5b5f5f3560e01c8063435354d31461088e5780637bdae32e1461069957806390a0827b146106345780639c45c34b1461030d578063de1a324a146100a25763eba61c0e1461005c575f80fd5b3461009f578060031936011261009f5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b503461009f57366003190161010081126102f55760a01361009f5760405160a0810181811067ffffffffffffffff8211176102f9576040526100e261095f565b918282526024359182151583036102f5576020810192835260443563ffffffff811681036102f1576040820152610117610972565b6060820152608435906001600160a01b03821682036102f1576080015260a43567ffffffffffffffff81168091036102f55760c4359067ffffffffffffffff82168092036102f15760e435946fffffffffffffffffffffffffffffffff86168096036102ed576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102ed5763ffffffff6101bc91166109d1565b935115159281156102de5782156102cf57916102509391600493506040519263ffffffff60208501971687526040840152606083015260808201525f945f60a0830152600260c083015260e082015260e0815261021b6101008261099b565b6020604051948592630100000160e01b83850152518091602485015e8201018281015f8152500301601f19810183528261099b565b7333333333333333333333333333333333333333333b156102cb575f61028a91604051809381926317938e1360e01b8352600483016109fe565b0381837333333333333333333333333333333333333333335af180156102c0576102b2575080f35b6102be91505f9061099b565b005b6040513d5f823e3d90fd5b5f80fd5b6313c0a8df60e01b8152600490fd5b63017461b760e71b8152600490fd5b8380fd5b8280fd5b5080fd5b634e487b7160e01b83526041600452602483fd5b503461009f57608036600319011261009f57610327610985565b6024359067ffffffffffffffff82168092036102f1576044359060643580850b90818103610630576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361063057816105b2575050815b67ffffffffffffffff81116105ae5767ffffffffffffffff1692831561059f5790829185936103c0575b836103bc86610b0a565b5080f35b8061055857506001600160a01b031660405183806020830163095ea7b360e01b8152736b9e773128f453f5c2c60935ee2de2cbc5390a2460248501528560448501526044845261041160648561099b565b83519082865af1610420610b26565b81610529575b508061051f575b156104c7575b5050736b9e773128f453f5c2c60935ee2de2cbc5390a243b156102f55760405190630acb7f4b60e21b8252600482015263ffffffff6024820152818160448183736b9e773128f453f5c2c60935ee2de2cbc5390a245af180156104bc576104a7575b50506103bc905b9050815f80806103b2565b816104b19161099b565b6102f557815f610495565b6040513d84823e3d90fd5b6105189161051360405163095ea7b360e01b6020820152736b9e773128f453f5c2c60935ee2de2cbc5390a2460248201528660448201526044815261050d60648261099b565b82610a79565b610a79565b5f80610433565b50813b151561042d565b805180159250821561053e575b50505f610426565b6105519250602080918301019101610a61565b5f80610536565b919250906001609d1b90810190811061058b5791610586916001600160a01b03806103bc9695169116610a28565b61049c565b634e487b7160e01b85526011600452602485fd5b6306506d5560e11b8552600485fd5b8480fd5b858213156105f4576105c7915060ff16610b65565b80156105e057808306830392831161058b578204610388565b634e487b7160e01b85526012600452602485fd5b5084038080860b0361058b5761060c9060ff16610b65565b82818102918183041490151761038857634e487b7160e01b85526011600452602485fd5b8580fd5b503461009f57604036600319011261009f5761064e610985565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102f55761069690602435906001600160a01b03339116610a28565b80f35b503461009f57608036600319011261009f578060043567ffffffffffffffff811680910361080b57602435906001600160a01b03821680920361088a576044359167ffffffffffffffff8316809303610888576106f4610972565b926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036105ae5763ffffffff602094169263ffffffff841480610880575b1561080e5761079993506040519285840152604083015260608201526060815261076760808261099b565b6004604051938492818401906280000360e11b82528051928391018483015e01015f815203601f19810183528261099b565b7333333333333333333333333333333333333333333b1561080b57816107d391604051809381926317938e1360e01b8352600483016109fe565b0381837333333333333333333333333333333333333333335af180156104bc576107fa5750f35b816108049161099b565b61009f5780f35b50fd5b61087b93604051938685015286604085015263ffffffff6060850152608084015260a083015260c082015260c0815261084860e08261099b565b600460405193849281840190630100000d60e01b82528051928391018483015e01015f815203601f19810183528261099b565b610799565b50600161073c565b505b5050fd5b50346102cb5760403660031901126102cb576108a861095f565b602435906fffffffffffffffffffffffffffffffff82168092036102cb576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102cb576004610904610250926109d1565b926040519063ffffffff602083019516855260408201526040815261092a60608261099b565b6020604051948592630100000b60e01b83850152518091602485015e8201018281015f8152500301601f19810183528261099b565b6004359063ffffffff821682036102cb57565b6064359063ffffffff821682036102cb57565b600435906001600160a01b03821682036102cb57565b90601f8019910116810190811067ffffffffffffffff8211176109bd57604052565b634e487b7160e01b5f52604160045260245ffd5b63ffffffff6127109116019063ffffffff82116109ea57565b634e487b7160e01b5f52601160045260245ffd5b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b610a5f926001600160a01b036040519363a9059cbb60e01b602086015216602484015260448301526044825261051360648361099b565b565b908160209103126102cb575180151581036102cb5790565b906001600160a01b03610ada92165f8060405193610a9860408661099b565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af1610ad4610b26565b91610b76565b8051908115918215610af0575b5050156102cb57565b610b039250602080918301019101610a61565b5f80610ae7565b67ffffffffffffffff169067ffffffffffffffff82116109ea57565b3d15610b60573d9067ffffffffffffffff82116109bd5760405191610b55601f8201601f19166020018461099b565b82523d5f602084013e565b606090565b60ff16604d81116109ea57600a0a90565b91925015610b9257815115610b89575090565b3b156102cb5790565b5080519081156102cb57602001fdfea26469706673582212206d69d489ce172fee0ac60f3a0ecadfc88c4451387668fbdbe3ea6b8cca1c70a464736f6c634300081e0033c56a3250645180a53cd9e196b2ee0a634a4f54e2edf59ea457f2083917e4d1006c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800b021c853215aadb12b6fa8afa7b3158201517d9abf7f756cdbb67bd66abc5a1ca26469706673582212209b5bbd9ad4df5c698b498d5b4897f51cf5f26ecdca5726963f0b4b40455daa6b64736f6c634300081e0033000000000000000000000000109db572e719fa363dc53fbaf3617422159060c9000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Deployed Bytecode
0x6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a71461237d57508063037a06a41461219e57806304c73f6014612180578063057f0370146120c65780631f74a0b51461205457806321081d3c14612019578063248a9ca314611fd95780632e748b2114611e7d5780632f2ff15d14611e32578063319adf9f14611a6a57806336568abe14611a2557806337710e2014611a015780633b1c6a01146116aa5780633cf3a02514611675578063490e662f1461164d5780634b3b029b14611612578063502a82e214611555578063521c98ba14610e8a5780635956364d14610e5157806369b97ac714610e3357806379c7b60b14610e0f57806379c7f28914610d4157806390a0827b14610d0857806391d1485414610cb15780639262e0fc14610c2b57806396cc2cfb14610a08578063a217fddf146109ec578063a38d8fa61461083c578063a4b672b6146107f8578063af5de6f91461076e578063c55dae631461072a578063ccbedaec1461053e578063d06e28ed14610451578063d4d35af814610416578063d547741f146103c2578063e38b73a9146103a6578063ea0aaf2414610348578063eb84e7f2146102185763f7e02c21146101cb575f80fd5b3461021557610100366003190112610215576101e63661253f565b5f516020615e255f395f51905f5254156102065761020390614c85565b80f35b63cd6d8f7d60e01b8252600482fd5b80fd5b50346102155760203660031901126102155760408160e09260c0835161023d81612503565b82815282602082015282858201528260608201528260808201528260a0820152015260043581527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b03602052206040519061029682612503565b6001600160a01b03815416918281526001600160401b0360018301548160208401916001600160a01b038116835263ffffffff60026040870197828460a01c168952606088019360c01c84520154966001600160a01b036080880195858a16875260ff60c060a08b019a828d60401c1615158c52019a60481c1615158a526040519a8b52511660208a015251166040880152511660608601525116608084015251151560a083015251151560c0820152f35b503461021557602036600319011261021557602061039d6103676123d0565b6001600160a01b03165f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0560205260405f2090565b54604051908152f35b5034610215578060031936011261021557602060405160068152f35b5034610215576040366003190112610215576104126004356103e26123e6565b9061040d610408825f525f516020615e655f395f51905f52602052600160405f20015490565b612e3a565b61360b565b5080f35b503461021557806003193601126102155760206040517f472a9ff14edbbbd33e77edbff56fa59e95bbaaa0c893ed10c0330e1b4d8794998152f35b50346102155760403660031901126102155761046b6123d0565b602435906fffffffffffffffffffffffffffffffff821680920361052f57610491612dcb565b8261049b82612f51565b63ffffffff6001600160a01b03608083015116915116813b1561052f57829160448392604051948593849263435354d360e01b845260048401528960248401525af180156105335761051a575b50506001600160a01b03167f02366c0d102495be1ee805b749be7baebab4fc0710c6d3f38751f1a22bd711648380a380f35b816105249161251e565b61052f57825f6104e8565b8280fd5b6040513d84823e3d90fd5b503461021557606036600319011261021557806105596123d0565b610561612461565b610569612477565b90610572612d5c565b61057b83612605565b5443111561067e574361058d84612605565b556001600160a01b0360016105a1856125cf565b015416926001600160401b038216610683575b50506001600160401b0381166105c8575050f35b6001600160a01b037f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb481683525f516020615e455f395f51905f526020526001600160401b0360046040852001541690823b1561067e57604051633ded719760e11b81526001600160401b0392831660048201523360248201529116604482015263ffffffff60648201529082908290608490829084905af180156105335761066d5750f35b816106779161251e565b6102155780f35b505050fd5b6001600160a01b031684525f516020615e455f395f51905f526020526001600160401b03600460408620015416833b1561072657604051633ded719760e11b81526001600160401b0391821660048201523360248201529116604482015263ffffffff6064820152838160848183875af190811561071b578491156105b4578161070c9161251e565b61071757825f6105b4565b5050fd5b6040513d86823e3d90fd5b8480fd5b503461021557806003193601126102155760206040516001600160a01b037f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48168152f35b50346102155760203660031901126102155760206001600160a01b0361079a6107956123d0565b612e87565b610c216040516107ac8583018261251e565b818152848101916152048339519020604051908482019260ff60f81b84523060601b602184015260358301526055820152605581526107ec60758261251e565b51902016604051908152f35b503461021557806003193601126102155760206040516001600160a01b037f000000000000000000000000109db572e719fa363dc53fbaf3617422159060c9168152f35b503461021557608036600319011261021557806108576123d0565b61085f612461565b60443563ffffffff811680910361067e576001600160a01b0361088061240f565b93610889612d5c565b1684525f516020615e455f395f51905f5260205263ffffffff6001600160401b03600460408720015416931663ffffffff8114806109df575b1561098657505061090c916001600160401b0361091a92604051923360208501526040840152166060820152606081526108fd60808261251e565b60405192839160208301614c63565b03601f19810183528261251e565b7333333333333333333333333333333333333333333b15610983578161095c91604051809381926317938e1360e01b835260206004840152602483019061248d565b0381837333333333333333333333333333333333333333335af180156105335761066d5750f35b50fd5b6109da9261090c946001600160401b0392604051943360208701528860408701526060860152608085015260a08401521660c082015260c081526109cb60e08261251e565b60405192839160208301614c40565b61091a565b5063ffffffff82146108c2565b5034610215578060031936011261021557602090604051908152f35b503461021557604036600319011261021557610a226123d0565b90610a2b612dcb565b610a3482612acd565b610a3d83612f51565b92610a5160e083510151840b602435614bbb565b946020840190610a7a6001600160401b03835116886001600160401b0360a08901511691613536565b15610c0257859650610a8b8461263b565b610a968482546126c9565b90556001600160a01b038416807f410b9a8c926b6c439cdceb39c0bb8f829838a25bc5a26af9d4c263d1313cc46b6020604051878152a26001600160a01b037f000000000000000000000000109db572e719fa363dc53fbaf3617422159060c916803b15610bfe5760405163f3fef3a360e01b81526001600160a01b0383166004820152602481018690529088908290604490829084905af18015610bf35785918991610bd6575b50506001600160401b0391610b666001600160a01b0392608060e09601928484511690612fb5565b511692511694510151850b93813b15610bd257604051639c45c34b60e01b81526001600160a01b039490941660048501526001600160401b0316602484015260448301919091525f9290920b60648201529082908290608490829084905af180156105335761066d5750f35b8580fd5b81925090610be39161251e565b610bef5783875f610b3e565b8680fd5b6040513d8a823e3d90fd5b8780fd5b6377e88bc960e11b86526001600160a01b0384166004526001600160401b038716602452604486fd5b50346102155761012036600319011261021557610c473661253f565b5f516020615e255f395f51905f525415610206576001600160a01b036060820151166001600160a01b037f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4816145f14610ca357610203906136be565b61020390610104359061400f565b5034610215576040366003190112610215576001600160a01b036040610cd56123e6565b9260043581525f516020615e655f395f51905f526020522091165f52602052602060ff60405f2054166040519015158152f35b503461021557604036600319011261021557610203610d256123d0565b610d2d612d5c565b602435906001600160a01b03339116612fb5565b50346102155760203660031901126102155760a0610d6e610d606123d0565b610d68612aa3565b506125cf565b6001600160a01b03600160405192610d85846124b1565b63ffffffff8154818116865260ff8160201c1615156020870152818160281c16604087015260481c1660608501520154166080820152610e0d60405180926001600160a01b036080809263ffffffff815116855260208101511515602086015263ffffffff604082015116604086015263ffffffff6060820151166060860152015116910152565bf35b503461021557602036600319011261021557602061039d610e2e6123d0565b61263b565b50346102155780600319360112610215576020604051620f42408152f35b50346102155761010036600319011261021557610e6d3661253f565b5f516020615e255f395f51905f52541561020657610203906136be565b50346102155760a036600319011261021557610ea46123d0565b610eac6123fc565b90610eb5612422565b6064356001600160401b038116810361072657608435916001600160401b0383168303610bd257610ee4612d0d565b610eec6129ea565b50610ef56129ac565b508580604051602081019063ffffffff8916825260208152610f1860408261251e565b519061080c5afa610f27612a74565b901561154657805181016020810191602081830312611522576020810151906001600160401b0382116115425701906101009082900312610bfe5760405191610f6f836124e7565b60208201516001600160401b0381116115425760209083010181601f820112156115425789815191610fa083612a59565b92610fae604051948561251e565b808452846020828401011161052f578060208093018386015e83010152835260408201516001600160401b038111611542576020908301019080601f83011215611542578151916001600160401b03831161150e578260051b9060405193611019602084018661251e565b845260208085019282010192831161153e57602001905b8282106115265750505060208301526101009061104f60608201613033565b604084015261106060808201615143565b606084015261107160a08201615143565b608084015261108260c08201615157565b60a084015261109360e08201615157565b60c0840152015180880b808203611522576110b39160e084015284613494565b50604051916110c1836124cc565b825263ffffffff87166020830152821515604083015260608201526001600160401b03831660808201526001600160401b03841660a08201526001600160a01b03851687525f516020615e455f395f51905f5260205260408720815180518051906001600160401b03821161150e5781908b61113d8654612a21565b601f81116114d3575b5050602090601f8311600114611471578c92611466575b50508160011b915f199060031b1c19161782555b6001820160208201518051906001600160401b03821161145257680100000000000000008211611452576020908c8454848655808510611406575b505001918b5260208b20908b5b8160021c81106113c157506003198116810380611365575b50505060408083015160028501805460608601516001600160e01b03199091166001600160401b039384161790841b7bffffffffffffffffffffffffffffffffffffffff00000000000000001617905560808085015160038701805460a08881015160c08a015160e0909a015176ffffffffffffffffffffffffffffffffffffffffffffff199093166001600160a01b039586161790821b60ff60a01b161760a89990991b60ff60a81b169890981760ff60b01b60b09290921b919091161790556020880151600488018054868b015168ffffffffffffffffff199091169286169290921791151590951b60ff60401b16179093557f12cf3d04179e82c834f3ee7169a5df80651aa65530127f9ddb04c8cd822443539a90999298909791969295879591945091929160069060608401516005820155019185808c83015116168619845416178355015167ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b191617905563ffffffff6040519a168a52151560208a01521660408801521660608601521692a280f35b928c938d5b8181106113835750505060021c015584848460a06111d1565b90919460206113b76001926001600160401b03895116908560031b6001600160401b03809160031b9316831b921b19161790565b960192910161136a565b8c8d5b600481106113d95750838201556001016111b9565b85519095916001916020916001600160401b0360068a901b81811b199092169216901b17920195016113c4565b838287611432945220600380870160021c820192601888831b1680611439575b500160021c01906136a8565b8c5f6111ac565b5f198501908154905f19908a03851b1c1690555f611426565b634e487b7160e01b8c52604160045260248cfd5b015190505f8061115d565b858d52818d209250601f1984168d5b8181106114bb57509084600195949392106114a3575b505050811b018255611171565b01515f1960f88460031b161c191690555f8080611496565b92936020600181928786015181550195019301611480565b602082886114fd945220601f850160051c81019160208610611504575b601f0160051c01906136a8565b8b5f611146565b90915081906114f0565b634e487b7160e01b8b52604160045260248bfd5b8880fd5b6020809161153384613033565b815201910190611030565b8b80fd5b8980fd5b639b0c335d60e01b8752600487fd5b50346102155760403660031901126102155761156f6123d0565b60243561157a612d5c565b826001600160a01b03807f000000000000000000000000109db572e719fa363dc53fbaf3617422159060c916931692803b1561160e5760405163f3fef3a360e01b81526001600160a01b0385166004820152602481018490529082908290604490829084905af18015610533576115f9575b5050610203913390612fb5565b816116039161251e565b61052f57825f6115ec565b5080fd5b503461021557806003193601126102155760206040517f5300fde95a5e446527bf6aa7c91bd6661bef5398afc77061d9bc87efb80b7ef68152f35b503461021557806003193601126102155760206040515f516020615e255f395f51905f528152f35b50346102155760203660031901126102155761168f612d5c565b80808080600435335af16116a1612a74565b50156102155780f35b5034610215576060366003190112610215576116c46123e6565b6044356001600160a01b038116918282036118f5576116e1612dcb565b6116ea82612acd565b916116f482612eca565b610726576040830151156107265760016001600160401b0360808501511601906001600160401b0382116119ed5790859161175861173960e087510151850b84613494565b509560208101936001600160401b0360a0818751169301511691613536565b1561052f57611797906001600160a01b03165f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0560205260405f2090565b6117a28582546126c9565b90556001600160a01b037f000000000000000000000000109db572e719fa363dc53fbaf3617422159060c916803b1561052f5760405163f3fef3a360e01b81526001600160a01b0387166004820152602481018690529083908290604490829084905af19081156119e25783916119cd575b5050516001600160401b0316806118f95750506118318284614ea5565b736b9e773128f453f5c2c60935ee2de2cbc5390a243b156118f5578360405163611e2a2d60e11b81526001600160a01b038316600482015283602482015263ffffffff6044820152818160648183736b9e773128f453f5c2c60935ee2de2cbc5390a245af18015610533576118e0575b50506001600160a01b03905b60405192835216907f2b348084e891b20d449a69f90114c5ab7bf7c84d64c25445c8ab440d469a6b4d602060043592a480f35b816118ea9161251e565b6118f557835f6118a1565b8380fd5b611941816119138661190d61090c95614e3e565b89614e64565b604051906001600160a01b0386166020830152604082015260016060820152606081526108fd60808261251e565b7333333333333333333333333333333333333333333b1561160e578161198391604051809381926317938e1360e01b835260206004840152602483019061248d565b0381837333333333333333333333333333333333333333335af18015610533576119b8575b50506001600160a01b03906118ad565b816119c29161251e565b6118f557835f6119a8565b816119d79161251e565b61160e57815f611814565b6040513d85823e3d90fd5b634e487b7160e01b86526011600452602486fd5b503461021557602036600319011261021557602061039d611a206123d0565b612605565b503461021557604036600319011261021557611a3f6123e6565b336001600160a01b03821603611a5b576104129060043561360b565b63334bd91960e11b8252600482fd5b5034610215576020366003190112610215576001600160a01b03611a8c6123d0565b611a946129ea565b501681525f516020615e455f395f51905f52602052604081209060405190611abb826124cc565b604051611ac7816124e7565b60405184548184611ad783612a21565b8083529260018116908115611e135750600114611dd2575b611afb9250038261251e565b815260018401604051808260208294549384815201908652602086209286905b806003830110611d8057611b51945491818110611d66575b818110611d49575b818110611d2c575b10611d1e575b50038261251e565b60208201526001600160a01b0360028501546001600160401b038116604084015260401c16606082015260038401546001600160a01b038116608083015260ff8160a01c1660a083015260ff8160a81c1660c083015260b01c820b60e0820152825260048301549260208301906001600160401b038516825260ff604085019560401c161515855260066005820154916060860192835201549460808501926001600160401b03871684526001600160401b0360a087019760401c1687526040519560208752519460c06020880152611c38865161010060e08a01526101e089019061248d565b60208088015189830360df19016101008b015280518084529282019892910190835b818110611cff57505050926001600160401b03809693899a969360e0878c610120866040819c0151169101528c6101406001600160a01b036060840151169101528c6101606001600160a01b036080840151169101528c61018060ff60a0840151169101528c6101a060ff60c0840151169101520151900b6101c08b0152511660408901525115156060880152516080870152511660a0850152511660c08301520390f35b82516001600160401b03168a526020998a019990920191600101611c5a565b60c01c81526020015f611b49565b9260206001916001600160401b038560801c168152019301611b43565b9260206001916001600160401b038560401c168152019301611b3b565b9260206001916001600160401b0385168152019301611b33565b916004919350608060019186546001600160401b03811682526001600160401b038160401c1660208301526001600160401b0381841c16604083015260c01c6060820152019401920184929391611b1b565b5090868552602085209085915b818310611df7575050906020611afb92820101611aef565b6020919350806001915483858801015201910190918392611ddf565b60209250611afb94915060ff191682840152151560051b820101611aef565b503461021557604036600319011261021557610412600435611e526123e6565b90611e78610408825f525f516020615e655f395f51905f52602052600160405f20015490565b613564565b503461021557608036600319011261021557611e976123d0565b611e9f612461565b611ea7612477565b90606435926fffffffffffffffffffffffffffffffff841680940361072657611ece612dcb565b84611ed882612f51565b926001600160a01b0360808501511693843b1561052f57611f626101048492836001600160401b03806040519788968795636f0d192560e11b875260048701906001600160a01b036080809263ffffffff815116855260208101511515602086015263ffffffff604082015116604086015263ffffffff6060820151166060860152015116910152565b169a8b60a485015216988960c48401528b60e48401525af1801561053357611fc4575b50506001600160a01b036040917f500d805a349357fe5d4759fe052d79bd744b82c8452837f52a7456ec7d3d751c93835195865260208601521692a380f35b81611fce9161251e565b61072657845f611f85565b50346102155760203660031901126102155760206120116004355f525f516020615e655f395f51905f52602052600160405f20015490565b604051908152f35b503461021557806003193601126102155760206040517f880a9ba888678c7fe4e8c4f028c224f26ce12a3bed6e96025c61ef8a5db6312f8152f35b50346102155760603660031901126102155761206e6123d0565b6024356001600160401b03811161052f5761208d903690600401612431565b9092604435906001600160401b0382116102155760206120118686866120b63660048901612431565b9390926120c1612dcb565b6126d6565b503461217c57604036600319011261217c576120e06123d0565b906024356120ec612d5c565b6001600160a01b0360806120ff85612f51565b015116803b1561217c576040516390a0827b60e01b81526001600160a01b038516600482015260248101839052905f908290604490829084905af180156121715761215b575b5061020391926001600160a01b03339116612fb5565b61020392505f61216a9161251e565b5f91612145565b6040513d5f823e3d90fd5b5f80fd5b3461217c575f36600319011261217c5760206040516305f5e1008152f35b3461217c5760a036600319011261217c576121b76123d0565b6121bf6123fc565b6121c7612422565b916121d061240f565b926084359163ffffffff831680930361217c576121ec81612acd565b506121f5612d0d565b6001600160a01b036001612208836125cf565b01541690811561232c575b63ffffffff60405195612225876124b1565b16948581526001600160a01b03600181602084019615159586885263ffffffff604086019b1697888c52606086018a8152836080880193169c8d845263ffffffff61226f8a6125cf565b9851169263ffffffff60481b68ffffffff000000000064ff000000008b549351151560201b16935160281b16935160481b169363ffffffff60481b199168ffffffffffffffffff1916171617171785555116920191166001600160601b0360a01b8254161790556122df86612eca565b1561217c577ff0dcc8957a27613dd82c92382ad37254b9744169d0caa5f3873cfec7ba794eb9936080936001600160a01b03936040519788526020880152604087015260608601521692a3005b905061233781612e87565b604051610c218082018281106001600160401b03821117612369578291615204833903905ff580156121715790612213565b634e487b7160e01b5f52604160045260245ffd5b3461217c57602036600319011261217c576004359063ffffffff60e01b821680920361217c57602091637965db0b60e01b81149081156123bf575b5015158152f35b6301ffc9a760e01b149050836123b8565b600435906001600160a01b038216820361217c57565b602435906001600160a01b038216820361217c57565b6024359063ffffffff8216820361217c57565b6064359063ffffffff8216820361217c57565b60443590811515820361217c57565b9181601f8401121561217c578235916001600160401b03831161217c576020808501948460051b01011161217c57565b602435906001600160401b038216820361217c57565b604435906001600160401b038216820361217c57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60a081019081106001600160401b0382111761236957604052565b60c081019081106001600160401b0382111761236957604052565b61010081019081106001600160401b0382111761236957604052565b60e081019081106001600160401b0382111761236957604052565b90601f801991011681019081106001600160401b0382111761236957604052565b61010090600319011261217c5760405190612559826124e7565b81600435815260243560208201526044356001600160a01b038116810361217c5760408201526064356001600160a01b038116810361217c57606082015260843563ffffffff8116810361217c57608082015260a435600281101561217c5760a082015260c43560c082015260e060e435910152565b6001600160a01b03165f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0160205260405f2090565b6001600160a01b03165f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0260205260405f2090565b6001600160a01b03165f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0460205260405f2090565b91908110156126815760051b0190565b634e487b7160e01b5f52603260045260245ffd5b906001600160401b03809116911601906001600160401b0382116126b557565b634e487b7160e01b5f52601160045260245ffd5b919082018092116126b557565b9194935f935f9682810361217c576126ed85612605565b5443111561217c57929061270085612acd565b91608061270c87612f51565b01916001600160a01b038351169461273360208601966001600160401b0388511690613047565b965f975b818d10612941575b50508a159250612936915050574361275686612605565b556001600160401b03841680612770575b50505050505050565b6127856127a89560e0855101515f0b90613494565b6001600160401b03869792975116906001600160401b0360a08701511691613536565b1561291757506127b78561263b565b6127c28582546126c9565b90556001600160a01b037f000000000000000000000000109db572e719fa363dc53fbaf3617422159060c9166001600160a01b03861690803b1561217c5760405163f3fef3a360e01b81526001600160a01b038316600482015260248101879052905f908290604490829084905af18015612171576128eb575b506001600160a01b038261285f876001600160401b03948460e097511690612fb5565b511693511691510151850b93823b15610bd257604051639c45c34b60e01b81526001600160a01b0390911660048201526001600160401b03909116602482015260448101929092525f9290920b606482015290829082908183816084810103925af18015610533576128d6575b8080808080612767565b6128e182809261251e565b61021557806128cc565b6001600160401b0391975060e09261290b5f6001600160a01b039361251e565b5f98909350915061283c565b6001600160a01b03866377e88bc960e11b5f521660045260245260445ffd5b505f96505050505050565b6129508d83879f9b9697612671565b359061295d8a8588612671565b356001600160401b038116810361217c5761298692898d926001600160a01b038b511692613129565b949091156129a45760019161299a91612695565b98019b9392612737565b989c5061273f565b604051906129b9826124e7565b5f60e08360608152606060208201528260408201528260608201528260808201528260a08201528260c08201520152565b604051906129f7826124cc565b5f60a083612a036129ac565b81528260208201528260408201528260608201528260808201520152565b90600182811c92168015612a4f575b6020831014612a3b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612a30565b6001600160401b03811161236957601f01601f191660200190565b3d15612a9e573d90612a8582612a59565b91612a93604051938461251e565b82523d5f602084013e565b606090565b60405190612ab0826124b1565b5f6080838281528260208201528260408201528260608201520152565b6001600160a01b0390612ade6129ea565b50165f525f516020615e455f395f51905f5260205260405f2060405191612b04836124cc565b60405191612b11836124e7565b6040518154815f612b2183612a21565b8083529260018116908115612cee5750600114612cad575b612b459250038261251e565b8352600181019360405180602087549182815201965f5260205f20905f915b816003840110612c615797612ba59284926001600160a01b039798999a5491818110611d6657818110611d4957818110611d2c5710611d1e5750038261251e565b60208601528160028401546001600160401b038116604088015260401c1660608601526001600160401b0360066003850154946080880197858716895260ff8760a01c1660a082015260c081019660ff8160a81c16885260b01c5f0b60e0820152845260ff6004820154848116602087015260401c1615156040850152600581015460608501520154818116608084015260401c1660a082015293511615159081612c53575b501561217c57565b60ff9150511615155f612c4b565b97600160806004928b546001600160401b03811682526001600160401b038160401c1660208301526001600160401b0381841c16604083015260c01c6060820152019901920191612b64565b5090835f5260205f20905f915b818310612cd2575050906020612b4592820101612b39565b6020919350806001915483858801015201910190918392612cba565b60209250612b4594915060ff191682840152151560051b820101612b39565b335f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615612d4557565b63e2517d3f60e01b5f52336004525f60245260445ffd5b335f9081527f176c3a4e1b4d1d61213187c0dde7f83e2e2c933a339cb5403b4090bc2f0aa49a602052604090205460ff1615612d9457565b63e2517d3f60e01b5f52336004527f880a9ba888678c7fe4e8c4f028c224f26ce12a3bed6e96025c61ef8a5db6312f60245260445ffd5b335f9081527fcf7720576cdb70176b3017d893bcb89ba0f36ed0261d4350fd0180e938b3bacd602052604090205460ff1615612e0357565b63e2517d3f60e01b5f52336004527f5300fde95a5e446527bf6aa7c91bd6661bef5398afc77061d9bc87efb80b7ef660245260445ffd5b805f525f516020615e655f395f51905f5260205260405f206001600160a01b0333165f5260205260ff60405f20541615612e715750565b63e2517d3f60e01b5f523360045260245260445ffd5b60405160208101913060601b83526001600160601b03199060601b16603482015260288152612eb760488261251e565b51902090565b5190811515820361217c57565b5f80916040516001600160a01b03602082019216825260208152612eef60408261251e565b51906108105afa612efe612a74565b9015612f425760208180518101031261217c5760405190602082018281106001600160401b0382111761236957604052612f3a90602001612ebd565b809152151590565b6313dd7ccd60e31b5f5260045ffd5b612f5d90610d68612aa3565b906001600160a01b03600160405193612f75856124b1565b63ffffffff8154818116875260ff8160201c1615156020880152818160281c16604088015260481c16606086015201541691826080820152911561217c57565b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af19060015f5114821615613012575b60405215612ff65750565b6001600160a01b0390635274afe760e01b5f521660045260245ffd5b90600181151661302a57823b15153d15161690612feb565b503d5f823e3d90fd5b51906001600160401b038216820361217c57565b5f919082916001600160401b03604051916001600160a01b0360208401941684521660408201526040815261307d60608261251e565b51906108015afa61308c612a74565b90156130fa5760608180518101031261217c576040519060608201918083106001600160401b03841117612369576001600160401b039260405260406130f360606130d960208601613033565b948585526130e8848201613033565b602086015201613033565b9101521690565b639d2c8fcb60e01b5f5260045ffd5b906001600160401b03809116911603906001600160401b0382116126b557565b959291909395805f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0360205260405f206001600160a01b0381541695861561341c57600282019889549860ff8a60481c1661340d5760018401956001600160a01b03875493166001600160a01b038416036133fa575f916131aa8b612eca565b156133da575b8360c01c9c8c60ff6001600160401b0382169160401c165f1461338057508d8e966001600160401b03811682115f14613378576131ec91613109565b9c5b6001600160401b038086169716928784111561217c578f8f966132149061321c92613109565b969f82612695565b936001600160401b03851610613363575060ff60481b1916690100000000000000000017905560019c61324e91613109565b99815160e001515f0b613261908d613494565b50986001600160a01b031691602001516001600160401b031691803b1561217c575f928360849263ffffffff6001600160401b036040519889978896633ded719760e11b885260048801526024870152169889604486015260a01c1660648401525af18015612171577f53b9d5645f8b7ccd861ebd6036860fd21716451d1f238cb3720f12f3c49b0c43946040946001600160a01b03938493613353575b508061331a575b5054169554169582519182526020820152a4565b82825416887f5adc50a7f1e65d6b397176e0807a39bd0ba27293997500a57ca2cc1359583ccb6020868d5416948a51908152a45f613306565b5f61335d9161251e565b5f6132ff565b5f9f508f9e509c505050505050505050505050565b50505f6131ec565b909d95809d96806001600160401b038316105f146133cf576133ac916133a591613109565b809e612695565b816001600160401b038216115f146133c857505b9c8d956131ee565b90506133c0565b50506133ac5f6133a5565b915060408101511561217c576001600160401b03608082015116916131b0565b8563358d72d160e01b5f5260045260245ffd5b63f7348a7960e01b5f5260045ffd5b631a40316d60e01b5f5260045ffd5b60ff16604d81116126b557600a0a90565b919082039182116126b557565b8115613453570490565b634e487b7160e01b5f52601260045260245ffd5b90620f4240820291808304620f424014901517156126b557565b818102929181159184041417156126b557565b9190805f0b80155f146134b25750506001600160401b03821691905b565b5f8113156134dd57506134ca6134d99160ff1661342b565b6001600160401b038416613481565b9190565b9050607f1981146126b5576001600160401b039261350261350b925f0360ff1661342b565b938491166126c9565b5f1981019081116126b55761353261352b846001600160401b0393613449565b9384613481565b1690565b61355c6001600160401b039293613556849361355181614e3e565b613047565b94612695565b169116101590565b805f525f516020615e655f395f51905f5260205260405f206001600160a01b0383165f5260205260ff60405f205416155f1461360557805f525f516020615e655f395f51905f5260205260405f206001600160a01b0383165f5260205260405f20600160ff198254161790556001600160a01b03339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b805f525f516020615e655f395f51905f5260205260405f206001600160a01b0383165f5260205260ff60405f2054165f1461360557805f525f516020615e655f395f51905f5260205260405f206001600160a01b0383165f5260205260405f2060ff1981541690556001600160a01b03339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b8181106136b3575050565b5f81556001016136a8565b6060810151906001600160a01b035f921691825f525f516020615e455f395f51905f5260205260405f20604051906136f5826124cc565b604051613701816124e7565b6040518254815f61371183612a21565b8083529260018116908115613ff05750600114613faf575b6137359250038261251e565b815260018201604051808260208294549384815201905f5260205f20925f905b806003830110613f5d57613787945491818110611d6657818110611d4957818110611d2c5710611d1e5750038261251e565b60208201526001600160a01b0360028301546001600160401b038116604084015260401c16606082015260038201546001600160a01b038116608083015260ff8160a01c1660a083015260ff8160a81c1660c083015260b01c5f0b60e08201528252600481015492600660208401926001600160401b038616845260ff604086019660401c16151586526005810154606086015201549260808101936001600160401b03811685526001600160401b0360a083019160401c1681525f94604088019661385c6001600160a01b03895116612eca565b15613e90575b505086519261271061388861387d60e08b01968751906126c9565b60c08b015190613481565b0494845195808711613e88575b5085613de6575b6138d46138bb6138ad888c516126c9565b60e0875101515f0b90614bbb565b919094826001600160401b038086511692511691613536565b15613d97575085613d08575b6001600160401b03906138f28b61263b565b6138fd8882546126c9565b905551169261392960e06001600160a01b038a511692510151830b63ffffffff60808c01511694614bbb565b9390916001600160401b03891695866001600160401b0387161115613cf957908392918d979695946139f8575b50505050505f516020615e855f395f51905f529561397391613109565b50806139b6575b50506139b16001600160a01b0360208701519551169551915192604051938493846040919493926060820195825260208201520152565b0390a4565b60208701517f5adc50a7f1e65d6b397176e0807a39bd0ba27293997500a57ca2cc1359583ccb60206001600160a01b0389511693604051908152a4855f61397a565b809791929394959697155f14613b63575083613a1391614ea5565b308103613abf5750736b9e773128f453f5c2c60935ee2de2cbc5390a243b1561052f5760405191630acb7f4b60e21b835260048301526024820152818160448183736b9e773128f453f5c2c60935ee2de2cbc5390a245af1801561053357908a94939291613a9c575b50505f516020615e855f395f51905f5295613973915b9181975f80613956565b818093949697989550613aae9161251e565b610215579081899396959492613a7c565b91736b9e773128f453f5c2c60935ee2de2cbc5390a243b156118f5576040519263611e2a2d60e11b8452600484015260248301526044820152818160648183736b9e773128f453f5c2c60935ee2de2cbc5390a245af1801561053357908a94939291613b40575b50505f516020615e855f395f51905f529561397391613a92565b818093949697989550613b529161251e565b610215579081899396959492613b26565b9096959493613b789061190d83959495614e3e565b308314801590613ceb575b613ba4575b505050505f516020615e855f395f51905f529561397391613a92565b90919293949550613bb58986613109565b9163ffffffff811480613ce3575b15613c945750916001600160401b03613bfd9261090c946040519360208501526040840152166060820152606081526108fd60808261251e565b7333333333333333333333333333333333333333333b1561160e5781613c3f91604051809381926317938e1360e01b835260206004840152602483019061248d565b0381837333333333333333333333333333333333333333335af1801561053357908a94939291613c71575b8080613b88565b818093949697989550613c839161251e565b610215579081899396959492613c6a565b613cde9261090c94926001600160401b039260405194602086015287604086015263ffffffff6060860152608085015260a08401521660c082015260c081526109cb60e08261251e565b613bfd565b506001613bc3565b5063ffffffff821415613b83565b6306506d5560e11b8552600485fd5b6001600160a01b037f000000000000000000000000109db572e719fa363dc53fbaf3617422159060c916803b1561217c5760405163f3fef3a360e01b81526001600160a01b038c16600482015260248101889052905f908290604490829084905af1801561217157613d7b575b506138e0565b613d889192505f9061251e565b5f906001600160401b03613d75565b989450505050507f8d61555dcf69ba745e97fdea78e2652d9cdd464ca521faad482fe796f6d5841c935060209250829150613dd181614c85565b0151926001600160401b0360405191168152a3565b613df5868b60208c0151614fac565b61389c576040516370a0823160e01b81527f000000000000000000000000109db572e719fa363dc53fbaf3617422159060c96001600160a01b031660048201529095506020816024818d5afa908115612171575f91613e56575b509461389c565b90506020813d602011613e80575b81613e716020938361251e565b8101031261217c57515f613e4f565b3d9150613e64565b95505f613895565b9091955060a08801516002811015613f495715908180613f3c575b613f1f578115613f15575b50613ecd57516001600160401b0316935f80613862565b50505050506134b092507f31604f5790fbed7a37471cea010a8f08483441a6e1235ac48bb59337439a630d60206001600160a01b0381850151935116604051908152a2614c85565b905051155f613eb6565b6001600160a01b038851166320a2097d60e11b5f5260045260245ffd5b5060c08901511515613eab565b634e487b7160e01b5f52602160045260245ffd5b916004919350608060019186546001600160401b03811682526001600160401b038160401c1660208301526001600160401b0381841c16604083015260c01c6060820152019401920184929391613755565b5090845f5260205f20905f915b818310613fd457505090602061373592820101613729565b6020919350806001915483858801015201910190918392613fbc565b6020925061373594915060ff191682840152151560051b820101613729565b7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486001600160a01b03811691825f525f516020615e455f395f51905f5260205260405f2060405193614060856124cc565b60405161406c816124e7565b6040518354815f61407c83612a21565b8083529260018116908115614b9c5750600114614b5b575b6140a09250038261251e565b815260018301604051808260208294549384815201905f5260205f20925f905b806003830110614b09576140f2945491818110611d6657818110611d4957818110611d2c5710611d1e5750038261251e565b60208201526001600160a01b0360028401546001600160401b038116604084015260401c16606082015260038301546001600160a01b038116608083015260ff8160a01c1660a083015260ff8160a81c1660c083015260b01c5f0b60e08201528552600660048301549260ff60208801946001600160401b038116865260401c1615156040880152600581015460608801520154956001600160401b03871660808701526001600160401b0360a087019760401c16875260608401936001600160a01b038551165f525f516020615e455f395f51905f5260205260405f2094604051956141de876124cc565b6040516141ea816124e7565b6040518254815f6141fa83612a21565b8083529260018116908115614aea5750600114614aa9575b61421e9250038261251e565b815260018201604051808260208294549384815201905f5260205f20925f905b806003830110614a5757614270945491818110611d6657818110611d4957818110611d2c5710611d1e5750038261251e565b60208201526001600160a01b0360028301546001600160401b038116604084015260401c16606082015260038201546001600160a01b038116608083015260ff8160a01c1660a083015260ff8160a81c1660c083015260b01c5f0b60e082015287526001600160401b03600660048301549282841660208b015260ff60408b019460401c1615158452600581015460608b0152015481811660808a015260401c1660a08801526143296001600160a01b03835116612f51565b9360408401916143426001600160a01b03845116612eca565b156149a8575b5083519760e085019182519160c087019a8b51151593614367916126c9565b8d5160e001515f0b61437891614bbb565b90508d5160c0015160ff16825160c0015160ff169061439692615179565b921561497a5782915b5f8063ffffffff8b511660405160208101918252602081526143c260408261251e565b51906108085afa6143d1612a74565b901561496b5760208180518101031261217c57898f9360ff60a061441f9260206001600160401b03614407826144259901613033565b16950197885115155f1461496057505101511661342b565b90613481565b8251156149165763ffffffff6144408160608d01511661508f565b16620f4240019081620f4240116126b557614476620f42409161441f6001600160401b039463ffffffff8f6040015116906126c9565b0416908c51908115155f1461490e5750915b51156148cd576305f5e10081101561488d57505f5b6144bd6144aa8651613467565b6144b78a518851906126c9565b906126c9565b5f198101919082116126b5576144b76144e3926144dd8b518951906126c9565b90613449565b60648083028381048214841517156126b55782116148135750505085518c5160e001515f0b61451191614bbb565b9d8e8b9c929c516001600160401b031691516001600160401b03169061453692613536565b156147c3579c8a9b9c9d85516001600160a01b03169287516001600160a01b03169460808a015163ffffffff16925115156040519561457487612503565b8652602086019687526040860193845260608601916001600160401b03169586835260808101936001600160401b03169788855260a0820192835260c08201938d5f86526020019687515f527f6c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0360205260405f2093516001600160a01b03166001600160a01b03166001600160601b0360a01b8554161784556001840192516001600160a01b03166001600160a01b03166001600160601b0360a01b84541617835551908254906001600160401b0360c01b905160c01b169163ffffffff60a01b9060a01b16906001600160a01b03161717905560020192516001600160401b03166001600160401b03166001600160401b03198454161783555115156146b290839060ff60401b825491151560401b169060ff60401b1916179055565b51151581549060481b60ff60481b169060ff60481b19161790555194516001600160a01b031695516001600160a01b03169651935160405194855260208501526001600160401b031660408401526060830152608082015260a07f550576b2f9e0ac12dfd5dd2d5743b5b7f11f34302b5f6bec6ad60db81bd6a91891a4608001516001600160a01b0316928361474792612fb5565b516001600160401b0316935160e001515f0b93813b1561217c57604051639c45c34b60e01b81526001600160a01b039490941660048501526001600160401b0316602484015260448301919091525f92830b60648301529091908290608490829084905af18015612171576147b95750565b5f6134b09161251e565b50505050509450955050925050816134b0947f8d61555dcf69ba745e97fdea78e2652d9cdd464ca521faad482fe796f6d5841c602080870151926001600160401b0360405191168152a352614c85565b999c5099509c50505050509450809650602091500151906001600160a01b03845116928181018091116126b5575f1981019081116126b5578115613453576134b0977fc8f90125c6a36c77a571201afc10310420481ab4895fadabb596d0ba71c22e3e92604092049082519182526020820152a3526136be565b6305f5e0ff19016001600160401b0381116126b5576148c76148bc6001600160401b036305f5e1009316613467565b6305f5e0ff906126c9565b0461449d565b6305f5e1008111156148e057505f61449d565b6305f5e100036001600160401b0381116126b5576148c76148bc6001600160401b036305f5e1009316613467565b905091614488565b63ffffffff61492a8160608d01511661508f565b16620f42400390620f424082116126b557614476620f42409161441f6001600160401b039463ffffffff8f60400151169061343c565b90505101511661342b565b635cffc5fb60e11b5f5260045ffd5b816127100361271081116126b55761271061499f6001600160401b0392838716613481565b0416929161439f565b60a08501516002811015613f495715908180614a4a575b614a2d578115614a23575b506149d5575f614348565b509450945095505092506134b094507f31604f5790fbed7a37471cea010a8f08483441a6e1235ac48bb59337439a630d60206001600160a01b0381870151935116604051908152a252614c85565b905051155f6149ca565b6001600160a01b038451166320a2097d60e11b5f5260045260245ffd5b5060c086015115156149bf565b916004919350608060019186546001600160401b03811682526001600160401b038160401c1660208301526001600160401b0381841c16604083015260c01c606082015201940192018492939161423e565b5090845f5260205f20905f915b818310614ace57505090602061421e92820101614212565b6020919350806001915483858801015201910190918392614ab6565b6020925061421e94915060ff191682840152151560051b820101614212565b916004919350608060019186546001600160401b03811682526001600160401b038160401c1660208301526001600160401b0381841c16604083015260c01c60608201520194019201849293916140c0565b5090855f5260205f20905f915b818310614b805750509060206140a092820101614094565b6020919350806001915483858801015201910190918392614b68565b602092506140a094915060ff191682840152151560051b820101614094565b9190805f0b9081155f14614be7575050815b6001600160401b03811161217c576001600160401b031690565b5f821315614c1f57614bfc915060ff1661342b565b91821561345357614c138184614c1a93069061343c565b9283613449565b614bcd565b505f0380805f0b036126b557614c3a614c1a9160ff1661342b565b83613481565b630100000d60e01b8152815160049290919082906020018483015e01015f815290565b6280000360e11b8152815160049290919082906020018483015e01015f815290565b8051612710614ca8614c9d60e08501938451906126c9565b60c085015190613481565b0481518181115f14614e365750905b81906020840191614cda83519460608701956001600160a01b0387511690614fac565b15614e2f575b80614d79575b7f4755f239bb1b047245415cb917deced72a3ca8baebcef109c396ff332ea6f50f916139b16001600160a01b0380614d1f858a516126c9565b96614d37828a51169860408c0199848b511690612fb5565b614d43828a511661263b565b614d4e8782546126c9565b9055519651169651169651915192604051938493846040919493926060820195825260208201520152565b6001600160a01b037f000000000000000000000000109db572e719fa363dc53fbaf3617422159060c916916001600160a01b0385511692803b1561217c5760405163f3fef3a360e01b81526001600160a01b03949094166004850152602484018390525f908490604490829084905af1928315612171577f4755f239bb1b047245415cb917deced72a3ca8baebcef109c396ff332ea6f50f93614e1f575b509150614ce6565b5f614e299161251e565b5f614e17565b505f614ce0565b905090614cb7565b6001600160401b03166001609d1b01806001609d1b116126b5576001600160a01b031690565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526134b091614ea060648361251e565b6150aa565b9060405190602082019063095ea7b360e01b8252736b9e773128f453f5c2c60935ee2de2cbc5390a246024840152604483015260448252614ee760648361251e565b5f806001600160a01b0385169284519082855af190614f04612a74565b82614f72575b5081614f67575b5015614f1b575050565b6134b091614ea060405163095ea7b360e01b6020820152736b9e773128f453f5c2c60935ee2de2cbc5390a2460248201525f604482015260448152614f6160648261251e565b826150aa565b90503b15155f614f11565b80519192508115918215614f8a575b5050905f614f0a565b819250906020918101031261217c576020614fa59101612ebd565b5f80614f81565b6040516370a0823160e01b81527f000000000000000000000000109db572e719fa363dc53fbaf3617422159060c96001600160a01b0390811660048301529092169392909190602082602481885afa918215612171575f9261505b575b508082109485159561501c575b50505050565b7f5180f0ad9e9bd2296de2ee38c85d11c56613fa73f8ee66792f26ac318f1274749260609260405192835260208301526040820152a25f808080615016565b9091506020813d602011615087575b816150776020938361251e565b8101031261217c5751905f615009565b3d915061506a565b63ffffffff60649116029063ffffffff82169182036126b557565b906001600160a01b0361510b92165f80604051936150c960408661251e565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af1615105612a74565b916151d8565b8051908115918215615121575b50501561217c57565b819250906020918101031261217c57602061513c9101612ebd565b5f80615118565b51906001600160a01b038216820361217c57565b519060ff8216820361217c57565b9060ff8091169116039060ff82116126b557565b9160ff811660ff83168181145f14615192575050505090565b6001600160401b0394929111156151c0576151b96151b4613532948693615165565b61342b565b9116613481565b6151d16151b4859261353295615165565b9116613449565b919250156151f4578151156151eb575090565b3b1561217c5790565b50805190811561217c57602001fdfe60a080604052346100455733608052610bd7908161004a8239608051818181607b015281816101870152818161035901528181610658015281816106ff01526108d00152f35b5f80fdfe60806040526004361015610011575f80fd5b5f5f3560e01c8063435354d31461088e5780637bdae32e1461069957806390a0827b146106345780639c45c34b1461030d578063de1a324a146100a25763eba61c0e1461005c575f80fd5b3461009f578060031936011261009f5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b503461009f57366003190161010081126102f55760a01361009f5760405160a0810181811067ffffffffffffffff8211176102f9576040526100e261095f565b918282526024359182151583036102f5576020810192835260443563ffffffff811681036102f1576040820152610117610972565b6060820152608435906001600160a01b03821682036102f1576080015260a43567ffffffffffffffff81168091036102f55760c4359067ffffffffffffffff82168092036102f15760e435946fffffffffffffffffffffffffffffffff86168096036102ed576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102ed5763ffffffff6101bc91166109d1565b935115159281156102de5782156102cf57916102509391600493506040519263ffffffff60208501971687526040840152606083015260808201525f945f60a0830152600260c083015260e082015260e0815261021b6101008261099b565b6020604051948592630100000160e01b83850152518091602485015e8201018281015f8152500301601f19810183528261099b565b7333333333333333333333333333333333333333333b156102cb575f61028a91604051809381926317938e1360e01b8352600483016109fe565b0381837333333333333333333333333333333333333333335af180156102c0576102b2575080f35b6102be91505f9061099b565b005b6040513d5f823e3d90fd5b5f80fd5b6313c0a8df60e01b8152600490fd5b63017461b760e71b8152600490fd5b8380fd5b8280fd5b5080fd5b634e487b7160e01b83526041600452602483fd5b503461009f57608036600319011261009f57610327610985565b6024359067ffffffffffffffff82168092036102f1576044359060643580850b90818103610630576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361063057816105b2575050815b67ffffffffffffffff81116105ae5767ffffffffffffffff1692831561059f5790829185936103c0575b836103bc86610b0a565b5080f35b8061055857506001600160a01b031660405183806020830163095ea7b360e01b8152736b9e773128f453f5c2c60935ee2de2cbc5390a2460248501528560448501526044845261041160648561099b565b83519082865af1610420610b26565b81610529575b508061051f575b156104c7575b5050736b9e773128f453f5c2c60935ee2de2cbc5390a243b156102f55760405190630acb7f4b60e21b8252600482015263ffffffff6024820152818160448183736b9e773128f453f5c2c60935ee2de2cbc5390a245af180156104bc576104a7575b50506103bc905b9050815f80806103b2565b816104b19161099b565b6102f557815f610495565b6040513d84823e3d90fd5b6105189161051360405163095ea7b360e01b6020820152736b9e773128f453f5c2c60935ee2de2cbc5390a2460248201528660448201526044815261050d60648261099b565b82610a79565b610a79565b5f80610433565b50813b151561042d565b805180159250821561053e575b50505f610426565b6105519250602080918301019101610a61565b5f80610536565b919250906001609d1b90810190811061058b5791610586916001600160a01b03806103bc9695169116610a28565b61049c565b634e487b7160e01b85526011600452602485fd5b6306506d5560e11b8552600485fd5b8480fd5b858213156105f4576105c7915060ff16610b65565b80156105e057808306830392831161058b578204610388565b634e487b7160e01b85526012600452602485fd5b5084038080860b0361058b5761060c9060ff16610b65565b82818102918183041490151761038857634e487b7160e01b85526011600452602485fd5b8580fd5b503461009f57604036600319011261009f5761064e610985565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102f55761069690602435906001600160a01b03339116610a28565b80f35b503461009f57608036600319011261009f578060043567ffffffffffffffff811680910361080b57602435906001600160a01b03821680920361088a576044359167ffffffffffffffff8316809303610888576106f4610972565b926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036105ae5763ffffffff602094169263ffffffff841480610880575b1561080e5761079993506040519285840152604083015260608201526060815261076760808261099b565b6004604051938492818401906280000360e11b82528051928391018483015e01015f815203601f19810183528261099b565b7333333333333333333333333333333333333333333b1561080b57816107d391604051809381926317938e1360e01b8352600483016109fe565b0381837333333333333333333333333333333333333333335af180156104bc576107fa5750f35b816108049161099b565b61009f5780f35b50fd5b61087b93604051938685015286604085015263ffffffff6060850152608084015260a083015260c082015260c0815261084860e08261099b565b600460405193849281840190630100000d60e01b82528051928391018483015e01015f815203601f19810183528261099b565b610799565b50600161073c565b505b5050fd5b50346102cb5760403660031901126102cb576108a861095f565b602435906fffffffffffffffffffffffffffffffff82168092036102cb576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036102cb576004610904610250926109d1565b926040519063ffffffff602083019516855260408201526040815261092a60608261099b565b6020604051948592630100000b60e01b83850152518091602485015e8201018281015f8152500301601f19810183528261099b565b6004359063ffffffff821682036102cb57565b6064359063ffffffff821682036102cb57565b600435906001600160a01b03821682036102cb57565b90601f8019910116810190811067ffffffffffffffff8211176109bd57604052565b634e487b7160e01b5f52604160045260245ffd5b63ffffffff6127109116019063ffffffff82116109ea57565b634e487b7160e01b5f52601160045260245ffd5b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b610a5f926001600160a01b036040519363a9059cbb60e01b602086015216602484015260448301526044825261051360648361099b565b565b908160209103126102cb575180151581036102cb5790565b906001600160a01b03610ada92165f8060405193610a9860408661099b565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af1610ad4610b26565b91610b76565b8051908115918215610af0575b5050156102cb57565b610b039250602080918301019101610a61565b5f80610ae7565b67ffffffffffffffff169067ffffffffffffffff82116109ea57565b3d15610b60573d9067ffffffffffffffff82116109bd5760405191610b55601f8201601f19166020018461099b565b82523d5f602084013e565b606090565b60ff16604d81116109ea57600a0a90565b91925015610b9257815115610b89575090565b3b156102cb5790565b5080519081156102cb57602001fdfea26469706673582212206d69d489ce172fee0ac60f3a0ecadfc88c4451387668fbdbe3ea6b8cca1c70a464736f6c634300081e0033c56a3250645180a53cd9e196b2ee0a634a4f54e2edf59ea457f2083917e4d1006c70e510d36398bee89cc6e19ea6807a9915863d7d724712e0b3c15b01368b0002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800b021c853215aadb12b6fa8afa7b3158201517d9abf7f756cdbb67bd66abc5a1ca26469706673582212209b5bbd9ad4df5c698b498d5b4897f51cf5f26ecdca5726963f0b4b40455daa6b64736f6c634300081e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000109db572e719fa363dc53fbaf3617422159060c9000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
-----Decoded View---------------
Arg [0] : _donationBox (address): 0x109Db572e719Fa363dC53Fbaf3617422159060c9
Arg [1] : _baseToken (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000109db572e719fa363dc53fbaf3617422159060c9
Arg [1] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
🤖 Code Reader
Generate instant answers for your smart contract questions using AI Models. Read more.
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 31 Chains
Tokens
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
DeFi
0 Protocols
Loading...
Loading
| Chain | Protocol | Positions | Portfolio % | Value |
|---|---|---|---|---|
There are no matching entries |
||||
DeFi
0 Protocols
Loading...
Loading
| Protocol | Positions | Portfolio % | Value |
|---|---|---|---|
There are no matching entries |
|||
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.


