Source Code
Overview
MOVR Balance
MOVR Value
$0.00Latest 25 from a total of 438 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw From Ga... | 7329059 | 560 days ago | IN | 0 MOVR | 0.01310829 | ||||
| Withdraw From Ga... | 5701687 | 779 days ago | IN | 0 MOVR | 0.00281008 | ||||
| Withdraw From Ga... | 5701673 | 779 days ago | IN | 0 MOVR | 0.00280976 | ||||
| Withdraw From Ga... | 5512764 | 806 days ago | IN | 0 MOVR | 0.00303164 | ||||
| Deposit Underlyi... | 5488084 | 810 days ago | IN | 0 MOVR | 0.00234977 | ||||
| Deposit Underlyi... | 5415899 | 820 days ago | IN | 0 MOVR | 0.00443302 | ||||
| Withdraw From Ga... | 5107332 | 864 days ago | IN | 0 MOVR | 0.00330201 | ||||
| Deposit Underlyi... | 5020488 | 877 days ago | IN | 0 MOVR | 0.0062337 | ||||
| Withdraw From Ga... | 4532865 | 946 days ago | IN | 0 MOVR | 0.00255814 | ||||
| Withdraw From Ga... | 4532846 | 946 days ago | IN | 0 MOVR | 0.00250734 | ||||
| Withdraw From Ga... | 4221506 | 990 days ago | IN | 0 MOVR | 0.00220053 | ||||
| Withdraw From Ga... | 4221469 | 990 days ago | IN | 0 MOVR | 0.00571682 | ||||
| Withdraw From Ga... | 4046264 | 1016 days ago | IN | 0 MOVR | 0.00293997 | ||||
| Withdraw From Ga... | 3818216 | 1048 days ago | IN | 0 MOVR | 0.00823155 | ||||
| Withdraw From Ga... | 3598662 | 1079 days ago | IN | 0 MOVR | 0.00176184 | ||||
| Withdraw From Ga... | 3522474 | 1090 days ago | IN | 0 MOVR | 0.00165494 | ||||
| Withdraw From Ga... | 3515705 | 1091 days ago | IN | 0 MOVR | 0.00169881 | ||||
| Deposit Underlyi... | 3515658 | 1091 days ago | IN | 0 MOVR | 0.00290484 | ||||
| Withdraw From Ga... | 3297302 | 1122 days ago | IN | 0 MOVR | 0.00114949 | ||||
| Withdraw From Ga... | 3297298 | 1122 days ago | IN | 0 MOVR | 0.00088971 | ||||
| Withdraw From Ga... | 3281643 | 1125 days ago | IN | 0 MOVR | 0.00075326 | ||||
| Withdraw From Ga... | 3268106 | 1127 days ago | IN | 0 MOVR | 0.00149259 | ||||
| Withdraw From Ga... | 3126409 | 1148 days ago | IN | 0 MOVR | 0.00181374 | ||||
| Withdraw From Ga... | 3106458 | 1151 days ago | IN | 0 MOVR | 0.03247642 | ||||
| Withdraw From Ga... | 2962744 | 1172 days ago | IN | 0 MOVR | 0.00072093 |
View more zero value Internal Transactions in Advanced View mode
Cross-Chain Transactions
Loading...
Loading
Contract Name:
GaugeHelper
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;
import "./Ownable.sol";
import "./SafeERC20.sol";
interface IHToken is IERC20 {
function mint() external payable returns (uint); //CEther
function mint(uint mintAmount) external returns (uint);
function redeem(uint redeemTokens) external returns (uint);
function underlying() external returns (address);
}
interface IBAMMv2 is IERC20 {
function deposit(uint amount) external;
function withdraw(uint numShares) external;
function getCollateralValue() external view returns(uint);
function collateralCount() external view returns(uint);
function collaterals(uint index) external view returns(address);
function fetchPrice(address collat) external view returns(uint);
}
interface IGauge is IERC20 {
function deposit(uint _value, address to) external;
function withdraw(uint _value) external;
}
interface IMinter {
function mint(address gauge_addr) external;
function mint_many(address[] memory gauge_addr) external;
function mint_for(address gauge_addr, address _for) external;
function toggle_approve_mint(address minting_user) external;
}
contract GaugeHelper is Ownable {
using SafeERC20 for IERC20;
/// @notice Deposit the underlying token to the Hundred market,
/// then deposit the hToken to the BAMM pool,
/// then deposit the BAMM token to the gauge,
/// finally sending the gauge token to the destination address.
/// @param underlying Underlying token to deposit, e.g. USDC.
/// @param hToken Hundred market address, e.g. hUSDC
/// @param bamm Bamm pool address, e.g. bhUSDC
/// @param gauge Gauge address, e.g. bhUSDC-gauge
/// @param underlyingAmount Underlying token shares to deposit.
/// @param to The recipient of the gauge tokens.
function depositUnderlyingToBammGauge(
address underlying,
address hToken,
address bamm,
address gauge,
uint underlyingAmount,
address to
) external {
IERC20 Underlying = IERC20(underlying);
Underlying.safeTransferFrom(msg.sender, address(this), underlyingAmount);
Underlying.approve(hToken, underlyingAmount);
IHToken HToken = IHToken(hToken);
require(HToken.mint(underlyingAmount) == 0, ""); //0 is success
uint hTokenBalance = HToken.balanceOf(address(this));
HToken.approve(bamm, hTokenBalance);
IBAMMv2 Bamm = IBAMMv2(bamm);
Bamm.deposit(hTokenBalance);
uint shares = Bamm.balanceOf(address(this));
Bamm.approve(gauge, shares);
IGauge Gauge = IGauge(gauge);
Gauge.deposit(shares, to);
}
/// @notice Deposit the underlying token to the Hundred market,
/// then deposit the hToken to the corresponding gauge,
/// finally sending the gauge token to the destination address.
/// @param underlying Underlying token to deposit, e.g. USDC.
/// @param hToken Hundred market address, e.g. hUSDC
/// @param gauge Gauge address, e.g. bhUSDC-gauge
/// @param underlyingAmount Underlying token shares to deposit.
/// @param to The recipient of the gauge tokens.
function depositUnderlyingToGauge(
address underlying,
address hToken,
address gauge,
uint underlyingAmount,
address to
) external {
IERC20 Underlying = IERC20(underlying);
Underlying.safeTransferFrom(msg.sender, address(this), underlyingAmount);
Underlying.approve(hToken, underlyingAmount);
IHToken HToken = IHToken(hToken);
require(HToken.mint(underlyingAmount) == 0, ""); //0 is success
uint hTokenBalance = HToken.balanceOf(address(this));
HToken.approve(gauge, hTokenBalance);
IGauge Gauge = IGauge(gauge);
Gauge.deposit(hTokenBalance, to);
}
/// @notice Deposit the underlying token to the Hundred market,
/// then deposit the hToken to the corresponding gauge,
/// finally sending the gauge token to the destination address.
/// @param hToken Hundred market address, e.g. hUSDC
/// @param gauge Gauge address, e.g. bhUSDC-gauge
/// @param to The recipient of the gauge tokens.
function depositEtherToGauge(
address hToken,
address gauge,
address to
) external payable {
IHToken HToken = IHToken(hToken);
require(HToken.mint{value: msg.value}() == 0, ""); //0 is success
uint hTokenBalance = HToken.balanceOf(address(this));
HToken.approve(gauge, hTokenBalance);
IGauge Gauge = IGauge(gauge);
Gauge.deposit(hTokenBalance, to);
}
/// @notice Attempts to redeem an hToken to underlying and transfer the
/// underlying to the user. If the redeem fails, transfer the
/// hToken instead.
function _tryRedeemAndTransfer(
address hToken,
address payable to,
bool isCEther
) internal {
IHToken HToken = IHToken(hToken);
uint hTokenBalance = HToken.balanceOf(address(this));
if (hTokenBalance == 0) return;
uint result = HToken.redeem(hTokenBalance);
if (result == 0) {
if (isCEther) {
to.transfer(address(this).balance);
}
else {
IERC20 Underlying = IERC20(HToken.underlying());
Underlying.safeTransfer(to, Underlying.balanceOf(address(this)));
}
}
else { //Failed to redeem, send hTokens to user
IERC20(HToken).safeTransfer(to, hTokenBalance);
}
}
/// @notice Claims HND rewards for the msg.sender, transfers gauge tokens
/// from the sender to this contract and then withdraws the BAMM
/// lp tokens from the gauge, withdraws the hTokens from the BAMM
/// (both the BAMM's underlying token and any other liquidated hTokens),
/// then redeems the hTokens into underlying and transfers all to the
/// destination address. If there is not enough liquidity to redeem
/// any of the hTokens, transfers the hToken itself instead.
/// @param minter Gauge's minter address, where HND rewards can be claimed
/// @param gauge Gauge address, e.g. bhUSDC-gauge
/// @param bamm Bamm pool address, e.g. bhUSDC
/// @param hToken Hundred market address, e.g. hUSDC
/// @param gaugeAmount Gauge tokens to withdraw.
/// @param to The recipient of the underlying and/or hTokens.
function withdrawFromBammGaugeToUnderlying(
address minter,
address gauge,
address bamm,
address hToken,
uint gaugeAmount,
address payable to,
address hETH
) external {
IMinter(minter).mint_for(gauge, msg.sender); //Requires toggle_approve_mint
IGauge Gauge = IGauge(gauge);
IERC20(Gauge).safeTransferFrom(msg.sender, address(this), gaugeAmount);
Gauge.withdraw(gaugeAmount);
IBAMMv2 Bamm = IBAMMv2(bamm);
Bamm.withdraw(Bamm.balanceOf(address(this)));
_tryRedeemAndTransfer(hToken, to, hToken == hETH);
uint collateralCount = Bamm.collateralCount();
for (uint i = 0; i < collateralCount; i++) {
address collateral = Bamm.collaterals(i);
_tryRedeemAndTransfer(collateral, to, collateral == hETH);
}
}
/// @notice Claims HND rewards for the msg.sender, transfers gauge tokens
/// from the sender to this contract and then withdraws the
/// hToken from the gauge, redeems the hTokens to underlying and
/// transfers to the destination address. If there is not enough
/// liquidity to redeem the hToken, transfers the hToken itself instead.
/// @param minter Gauge's minter address, where HND rewards can be claimed
/// @param gauge Gauge address, e.g. bhUSDC-gauge
/// @param hToken Hundred market address, e.g. hUSDC
/// @param gaugeAmount Gauge tokens to withdraw.
/// @param to The recipient of the underlying and/or hTokens.
function withdrawFromGaugeToUnderlying(
address minter,
address gauge,
address hToken,
uint gaugeAmount,
address payable to,
bool isCEther
) external {
IMinter(minter).mint_for(gauge, msg.sender); //Requires toggle_approve_mint
IGauge Gauge = IGauge(gauge);
IERC20(Gauge).safeTransferFrom(msg.sender, address(this), gaugeAmount);
Gauge.withdraw(gaugeAmount);
_tryRedeemAndTransfer(hToken, to, isCEther);
}
/// @notice Claims HND rewards for the msg.sender, transfers gauge tokens
/// from the sender to this contract and then withdraws the
/// hToken from the source gauge, and deposits it to the
/// destination gauge, on behalf of the `to` address.
/// @param minter Gauge's minter address, where HND rewards can be claimed
/// @param gaugeFrom Source gauge address, e.g. bhUSDC-gauge (old)
/// @param gaugeTo Target gauge address, e.g. bhUSDC-gauge (new)
/// @param hToken Hundred market address, e.g. hUSDC
/// @param gaugeAmount Gauge tokens to migrate.
/// @param to The recipient of the destination gaugeToken.
function migrateGauge(
address minter,
address gaugeFrom,
address hToken,
address gaugeTo,
uint gaugeAmount,
address to
) external {
IMinter(minter).mint_for(gaugeFrom, msg.sender); //Requires toggle_approve_mint
IGauge GaugeFrom = IGauge(gaugeFrom);
IERC20(GaugeFrom).safeTransferFrom(msg.sender, address(this), gaugeAmount);
GaugeFrom.withdraw(gaugeAmount);
IERC20 HToken = IERC20(hToken);
uint hTokenBalance = HToken.balanceOf(address(this));
HToken.approve(gaugeTo, hTokenBalance);
IGauge GaugeTo = IGauge(gaugeTo);
GaugeTo.deposit(hTokenBalance, to);
}
receive() external payable {}
fallback() external payable {}
function rescueErc20(address token) external {
IERC20(token).safeTransfer(owner(), IERC20(token).balanceOf(address(this)));
}
function rescueETH() external {
payable(owner()).transfer(address(this).balance);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.3.2 (access/Ownable.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
function totalSupply() external view returns (uint);
function decimals() external view returns (uint8);
function balanceOf(address account) external view returns (uint);
function transfer(address recipient, uint shares) external returns (bool);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint shares) external returns (bool);
function transferFrom(address sender, address recipient, uint shares) external returns (bool);
function permit(address target, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
function transferWithPermit(address target, address to, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external returns (bool);
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
}
library Address {
function isContract(address account) internal view returns (bool) {
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != 0x0 && codehash != accountHash);
}
}
library SafeERC20 {
using Address for address;
function safeTransfer(IERC20 token, address to, uint value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint value) internal {
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function callOptionalReturn(IERC20 token, bytes memory data) private {
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"hToken","type":"address"},{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"depositEtherToGauge","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"underlying","type":"address"},{"internalType":"address","name":"hToken","type":"address"},{"internalType":"address","name":"bamm","type":"address"},{"internalType":"address","name":"gauge","type":"address"},{"internalType":"uint256","name":"underlyingAmount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"depositUnderlyingToBammGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"underlying","type":"address"},{"internalType":"address","name":"hToken","type":"address"},{"internalType":"address","name":"gauge","type":"address"},{"internalType":"uint256","name":"underlyingAmount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"depositUnderlyingToGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"gaugeFrom","type":"address"},{"internalType":"address","name":"hToken","type":"address"},{"internalType":"address","name":"gaugeTo","type":"address"},{"internalType":"uint256","name":"gaugeAmount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"migrateGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"rescueErc20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"bamm","type":"address"},{"internalType":"address","name":"hToken","type":"address"},{"internalType":"uint256","name":"gaugeAmount","type":"uint256"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"address","name":"hETH","type":"address"}],"name":"withdrawFromBammGaugeToUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"hToken","type":"address"},{"internalType":"uint256","name":"gaugeAmount","type":"uint256"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"bool","name":"isCEther","type":"bool"}],"name":"withdrawFromGaugeToUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611b158061007e6000396000f3fe60806040526004361061009a5760003560e01c80635cc0c277116100615780635cc0c27714610138578063715018a6146101585780638da5cb5b1461016d578063a611782814610199578063dc3799fc146101ac578063f2fde38b146101cc57005b80631d062e5f146100a35780631fb0e4da146100c357806320800a00146100e35780632b88c769146100f857806332b937141461011857005b366100a157005b005b3480156100af57600080fd5b506100a16100be366004611849565b6101ec565b3480156100cf57600080fd5b506100a16100de366004611849565b6105fe565b3480156100ef57600080fd5b506100a1610845565b34801561010457600080fd5b506100a16101133660046117bd565b610882565b34801561012457600080fd5b506100a161013336600461194f565b610920565b34801561014457600080fd5b506100a16101533660046119b7565b610bcd565b34801561016457600080fd5b506100a1610cb4565b34801561017957600080fd5b50600054604080516001600160a01b039092168252519081900360200190f35b6100a16101a73660046117fe565b610d1a565b3480156101b857600080fd5b506100a16101c73660046118c2565b610f28565b3480156101d857600080fd5b506100a16101e73660046117bd565b611227565b856102026001600160a01b0382163330866112ef565b60405163095ea7b360e01b81526001600160a01b0387811660048301526024820185905282169063095ea7b390604401602060405180830381600087803b15801561024c57600080fd5b505af1158015610260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102849190611a22565b5060405163140e25ad60e31b81526004810184905286906001600160a01b0382169063a0712d6890602401602060405180830381600087803b1580156102c957600080fd5b505af11580156102dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103019190611a3f565b1561032d5760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b15801561036f57600080fd5b505afa158015610383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a79190611a3f565b60405163095ea7b360e01b81526001600160a01b038981166004830152602482018390529192509083169063095ea7b390604401602060405180830381600087803b1580156103f557600080fd5b505af1158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042d9190611a22565b5060405163b6b55f2560e01b81526004810182905287906001600160a01b0382169063b6b55f2590602401600060405180830381600087803b15801561047257600080fd5b505af1158015610486573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b03841691506370a082319060240160206040518083038186803b1580156104cc57600080fd5b505afa1580156104e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105049190611a3f565b60405163095ea7b360e01b81526001600160a01b038a81166004830152602482018390529192509083169063095ea7b390604401602060405180830381600087803b15801561055257600080fd5b505af1158015610566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058a9190611a22565b50604051636e553f6560e01b8152600481018290526001600160a01b038781166024830152899190821690636e553f6590604401600060405180830381600087803b1580156105d857600080fd5b505af11580156105ec573d6000803e3d6000fd5b50505050505050505050505050505050565b6040516327f18ae360e01b81526001600160a01b0386811660048301523360248301528716906327f18ae390604401600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b508792506106779150506001600160a01b0382163330866112ef565b604051632e1a7d4d60e01b8152600481018490526001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152879250600091506001600160a01b038316906370a082319060240160206040518083038186803b15801561071557600080fd5b505afa158015610729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074d9190611a3f565b60405163095ea7b360e01b81526001600160a01b038881166004830152602482018390529192509083169063095ea7b390604401602060405180830381600087803b15801561079b57600080fd5b505af11580156107af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d39190611a22565b50604051636e553f6560e01b8152600481018290526001600160a01b038581166024830152879190821690636e553f6590604401600060405180830381600087803b15801561082157600080fd5b505af1158015610835573d6000803e3d6000fd5b5050505050505050505050505050565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561087f573d6000803e3d6000fd5b50565b61087f6108976000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a08231906024015b60206040518083038186803b1580156108d757600080fd5b505afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f9190611a3f565b6001600160a01b0384169190611360565b846109366001600160a01b0382163330866112ef565b60405163095ea7b360e01b81526001600160a01b0386811660048301526024820185905282169063095ea7b390604401602060405180830381600087803b15801561098057600080fd5b505af1158015610994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b89190611a22565b5060405163140e25ad60e31b81526004810184905285906001600160a01b0382169063a0712d6890602401602060405180830381600087803b1580156109fd57600080fd5b505af1158015610a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a359190611a3f565b15610a5c5760405162461bcd60e51b81526020600482015260006024820152604401610324565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610a9e57600080fd5b505afa158015610ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad69190611a3f565b60405163095ea7b360e01b81526001600160a01b038881166004830152602482018390529192509083169063095ea7b390604401602060405180830381600087803b158015610b2457600080fd5b505af1158015610b38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5c9190611a22565b50604051636e553f6560e01b8152600481018290526001600160a01b038581166024830152879190821690636e553f6590604401600060405180830381600087803b158015610baa57600080fd5b505af1158015610bbe573d6000803e3d6000fd5b50505050505050505050505050565b6040516327f18ae360e01b81526001600160a01b0386811660048301523360248301528716906327f18ae390604401600060405180830381600087803b158015610c1657600080fd5b505af1158015610c2a573d6000803e3d6000fd5b50879250610c469150506001600160a01b0382163330876112ef565b604051632e1a7d4d60e01b8152600481018590526001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b158015610c8857600080fd5b505af1158015610c9c573d6000803e3d6000fd5b50505050610cab858484611395565b50505050505050565b6000546001600160a01b03163314610d0e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610324565b610d1860006115aa565b565b6000839050806001600160a01b0316631249c58b346040518263ffffffff1660e01b81526004016020604051808303818588803b158015610d5a57600080fd5b505af1158015610d6e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d939190611a3f565b15610dba5760405162461bcd60e51b81526020600482015260006024820152604401610324565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610dfc57600080fd5b505afa158015610e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e349190611a3f565b60405163095ea7b360e01b81526001600160a01b038681166004830152602482018390529192509083169063095ea7b390604401602060405180830381600087803b158015610e8257600080fd5b505af1158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba9190611a22565b50604051636e553f6560e01b8152600481018290526001600160a01b038481166024830152859190821690636e553f6590604401600060405180830381600087803b158015610f0857600080fd5b505af1158015610f1c573d6000803e3d6000fd5b50505050505050505050565b6040516327f18ae360e01b81526001600160a01b0387811660048301523360248301528816906327f18ae390604401600060405180830381600087803b158015610f7157600080fd5b505af1158015610f85573d6000803e3d6000fd5b50889250610fa19150506001600160a01b0382163330876112ef565b604051632e1a7d4d60e01b8152600481018590526001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b158015610fe357600080fd5b505af1158015610ff7573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201528892506001600160a01b0383169150632e1a7d4d9082906370a082319060240160206040518083038186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107c9190611a3f565b6040518263ffffffff1660e01b815260040161109a91815260200190565b600060405180830381600087803b1580156110b457600080fd5b505af11580156110c8573d6000803e3d6000fd5b505050506110eb8685856001600160a01b0316896001600160a01b031614611395565b6000816001600160a01b031663b6faaf8a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561112657600080fd5b505afa15801561113a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115e9190611a3f565b905060005b8181101561121a576040516324c1173b60e01b8152600481018290526000906001600160a01b038516906324c1173b9060240160206040518083038186803b1580156111ae57600080fd5b505afa1580156111c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e691906117e1565b90506112078188886001600160a01b0316846001600160a01b031614611395565b508061121281611a93565b915050611163565b5050505050505050505050565b6000546001600160a01b031633146112815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610324565b6001600160a01b0381166112e65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610324565b61087f816115aa565b6040516001600160a01b038085166024830152831660448201526064810182905261135a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526115fa565b50505050565b6040516001600160a01b03831660248201526044810182905261139090849063a9059cbb60e01b90606401611323565b505050565b6040516370a0823160e01b815230600482015283906000906001600160a01b038316906370a082319060240160206040518083038186803b1580156113d957600080fd5b505afa1580156113ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114119190611a3f565b90508061141f575050505050565b60405163db006a7560e01b8152600481018290526000906001600160a01b0384169063db006a7590602401602060405180830381600087803b15801561146457600080fd5b505af1158015611478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149c9190611a3f565b90508061158e5783156114e4576040516001600160a01b038616904780156108fc02916000818181858888f193505050501580156114de573d6000803e3d6000fd5b506115a2565b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561152157600080fd5b505af1158015611535573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155991906117e1565b6040516370a0823160e01b81523060048201529091506114de9087906001600160a01b038416906370a08231906024016108bf565b6115a26001600160a01b0384168684611360565b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61160c826001600160a01b0316611781565b6116585760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006044820152606401610324565b600080836001600160a01b0316836040516116739190611a58565b6000604051808303816000865af19150503d80600081146116b0576040519150601f19603f3d011682016040523d82523d6000602084013e6116b5565b606091505b5091509150816117075760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646044820152606401610324565b80511561135a57808060200190518101906117229190611a22565b61135a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610324565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906117b55750808214155b949350505050565b6000602082840312156117cf57600080fd5b81356117da81611abc565b9392505050565b6000602082840312156117f357600080fd5b81516117da81611abc565b60008060006060848603121561181357600080fd5b833561181e81611abc565b9250602084013561182e81611abc565b9150604084013561183e81611abc565b809150509250925092565b60008060008060008060c0878903121561186257600080fd5b863561186d81611abc565b9550602087013561187d81611abc565b9450604087013561188d81611abc565b9350606087013561189d81611abc565b92506080870135915060a08701356118b481611abc565b809150509295509295509295565b600080600080600080600060e0888a0312156118dd57600080fd5b87356118e881611abc565b965060208801356118f881611abc565b9550604088013561190881611abc565b9450606088013561191881611abc565b93506080880135925060a088013561192f81611abc565b915060c088013561193f81611abc565b8091505092959891949750929550565b600080600080600060a0868803121561196757600080fd5b853561197281611abc565b9450602086013561198281611abc565b9350604086013561199281611abc565b92506060860135915060808601356119a981611abc565b809150509295509295909350565b60008060008060008060c087890312156119d057600080fd5b86356119db81611abc565b955060208701356119eb81611abc565b945060408701356119fb81611abc565b9350606087013592506080870135611a1281611abc565b915060a08701356118b481611ad1565b600060208284031215611a3457600080fd5b81516117da81611ad1565b600060208284031215611a5157600080fd5b5051919050565b6000825160005b81811015611a795760208186018101518583015201611a5f565b81811115611a88576000828501525b509190910192915050565b6000600019821415611ab557634e487b7160e01b600052601160045260246000fd5b5060010190565b6001600160a01b038116811461087f57600080fd5b801515811461087f57600080fdfea26469706673582212206454ff04d9db491d451351c6bea590d0e0fe4450dba82d9c3fc54a838051601564736f6c63430008070033
Deployed Bytecode
0x60806040526004361061009a5760003560e01c80635cc0c277116100615780635cc0c27714610138578063715018a6146101585780638da5cb5b1461016d578063a611782814610199578063dc3799fc146101ac578063f2fde38b146101cc57005b80631d062e5f146100a35780631fb0e4da146100c357806320800a00146100e35780632b88c769146100f857806332b937141461011857005b366100a157005b005b3480156100af57600080fd5b506100a16100be366004611849565b6101ec565b3480156100cf57600080fd5b506100a16100de366004611849565b6105fe565b3480156100ef57600080fd5b506100a1610845565b34801561010457600080fd5b506100a16101133660046117bd565b610882565b34801561012457600080fd5b506100a161013336600461194f565b610920565b34801561014457600080fd5b506100a16101533660046119b7565b610bcd565b34801561016457600080fd5b506100a1610cb4565b34801561017957600080fd5b50600054604080516001600160a01b039092168252519081900360200190f35b6100a16101a73660046117fe565b610d1a565b3480156101b857600080fd5b506100a16101c73660046118c2565b610f28565b3480156101d857600080fd5b506100a16101e73660046117bd565b611227565b856102026001600160a01b0382163330866112ef565b60405163095ea7b360e01b81526001600160a01b0387811660048301526024820185905282169063095ea7b390604401602060405180830381600087803b15801561024c57600080fd5b505af1158015610260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102849190611a22565b5060405163140e25ad60e31b81526004810184905286906001600160a01b0382169063a0712d6890602401602060405180830381600087803b1580156102c957600080fd5b505af11580156102dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103019190611a3f565b1561032d5760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b15801561036f57600080fd5b505afa158015610383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a79190611a3f565b60405163095ea7b360e01b81526001600160a01b038981166004830152602482018390529192509083169063095ea7b390604401602060405180830381600087803b1580156103f557600080fd5b505af1158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042d9190611a22565b5060405163b6b55f2560e01b81526004810182905287906001600160a01b0382169063b6b55f2590602401600060405180830381600087803b15801561047257600080fd5b505af1158015610486573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b03841691506370a082319060240160206040518083038186803b1580156104cc57600080fd5b505afa1580156104e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105049190611a3f565b60405163095ea7b360e01b81526001600160a01b038a81166004830152602482018390529192509083169063095ea7b390604401602060405180830381600087803b15801561055257600080fd5b505af1158015610566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058a9190611a22565b50604051636e553f6560e01b8152600481018290526001600160a01b038781166024830152899190821690636e553f6590604401600060405180830381600087803b1580156105d857600080fd5b505af11580156105ec573d6000803e3d6000fd5b50505050505050505050505050505050565b6040516327f18ae360e01b81526001600160a01b0386811660048301523360248301528716906327f18ae390604401600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b508792506106779150506001600160a01b0382163330866112ef565b604051632e1a7d4d60e01b8152600481018490526001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152879250600091506001600160a01b038316906370a082319060240160206040518083038186803b15801561071557600080fd5b505afa158015610729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074d9190611a3f565b60405163095ea7b360e01b81526001600160a01b038881166004830152602482018390529192509083169063095ea7b390604401602060405180830381600087803b15801561079b57600080fd5b505af11580156107af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d39190611a22565b50604051636e553f6560e01b8152600481018290526001600160a01b038581166024830152879190821690636e553f6590604401600060405180830381600087803b15801561082157600080fd5b505af1158015610835573d6000803e3d6000fd5b5050505050505050505050505050565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561087f573d6000803e3d6000fd5b50565b61087f6108976000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a08231906024015b60206040518083038186803b1580156108d757600080fd5b505afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f9190611a3f565b6001600160a01b0384169190611360565b846109366001600160a01b0382163330866112ef565b60405163095ea7b360e01b81526001600160a01b0386811660048301526024820185905282169063095ea7b390604401602060405180830381600087803b15801561098057600080fd5b505af1158015610994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b89190611a22565b5060405163140e25ad60e31b81526004810184905285906001600160a01b0382169063a0712d6890602401602060405180830381600087803b1580156109fd57600080fd5b505af1158015610a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a359190611a3f565b15610a5c5760405162461bcd60e51b81526020600482015260006024820152604401610324565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610a9e57600080fd5b505afa158015610ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad69190611a3f565b60405163095ea7b360e01b81526001600160a01b038881166004830152602482018390529192509083169063095ea7b390604401602060405180830381600087803b158015610b2457600080fd5b505af1158015610b38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5c9190611a22565b50604051636e553f6560e01b8152600481018290526001600160a01b038581166024830152879190821690636e553f6590604401600060405180830381600087803b158015610baa57600080fd5b505af1158015610bbe573d6000803e3d6000fd5b50505050505050505050505050565b6040516327f18ae360e01b81526001600160a01b0386811660048301523360248301528716906327f18ae390604401600060405180830381600087803b158015610c1657600080fd5b505af1158015610c2a573d6000803e3d6000fd5b50879250610c469150506001600160a01b0382163330876112ef565b604051632e1a7d4d60e01b8152600481018590526001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b158015610c8857600080fd5b505af1158015610c9c573d6000803e3d6000fd5b50505050610cab858484611395565b50505050505050565b6000546001600160a01b03163314610d0e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610324565b610d1860006115aa565b565b6000839050806001600160a01b0316631249c58b346040518263ffffffff1660e01b81526004016020604051808303818588803b158015610d5a57600080fd5b505af1158015610d6e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d939190611a3f565b15610dba5760405162461bcd60e51b81526020600482015260006024820152604401610324565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610dfc57600080fd5b505afa158015610e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e349190611a3f565b60405163095ea7b360e01b81526001600160a01b038681166004830152602482018390529192509083169063095ea7b390604401602060405180830381600087803b158015610e8257600080fd5b505af1158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba9190611a22565b50604051636e553f6560e01b8152600481018290526001600160a01b038481166024830152859190821690636e553f6590604401600060405180830381600087803b158015610f0857600080fd5b505af1158015610f1c573d6000803e3d6000fd5b50505050505050505050565b6040516327f18ae360e01b81526001600160a01b0387811660048301523360248301528816906327f18ae390604401600060405180830381600087803b158015610f7157600080fd5b505af1158015610f85573d6000803e3d6000fd5b50889250610fa19150506001600160a01b0382163330876112ef565b604051632e1a7d4d60e01b8152600481018590526001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b158015610fe357600080fd5b505af1158015610ff7573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201528892506001600160a01b0383169150632e1a7d4d9082906370a082319060240160206040518083038186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107c9190611a3f565b6040518263ffffffff1660e01b815260040161109a91815260200190565b600060405180830381600087803b1580156110b457600080fd5b505af11580156110c8573d6000803e3d6000fd5b505050506110eb8685856001600160a01b0316896001600160a01b031614611395565b6000816001600160a01b031663b6faaf8a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561112657600080fd5b505afa15801561113a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115e9190611a3f565b905060005b8181101561121a576040516324c1173b60e01b8152600481018290526000906001600160a01b038516906324c1173b9060240160206040518083038186803b1580156111ae57600080fd5b505afa1580156111c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e691906117e1565b90506112078188886001600160a01b0316846001600160a01b031614611395565b508061121281611a93565b915050611163565b5050505050505050505050565b6000546001600160a01b031633146112815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610324565b6001600160a01b0381166112e65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610324565b61087f816115aa565b6040516001600160a01b038085166024830152831660448201526064810182905261135a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526115fa565b50505050565b6040516001600160a01b03831660248201526044810182905261139090849063a9059cbb60e01b90606401611323565b505050565b6040516370a0823160e01b815230600482015283906000906001600160a01b038316906370a082319060240160206040518083038186803b1580156113d957600080fd5b505afa1580156113ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114119190611a3f565b90508061141f575050505050565b60405163db006a7560e01b8152600481018290526000906001600160a01b0384169063db006a7590602401602060405180830381600087803b15801561146457600080fd5b505af1158015611478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149c9190611a3f565b90508061158e5783156114e4576040516001600160a01b038616904780156108fc02916000818181858888f193505050501580156114de573d6000803e3d6000fd5b506115a2565b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561152157600080fd5b505af1158015611535573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155991906117e1565b6040516370a0823160e01b81523060048201529091506114de9087906001600160a01b038416906370a08231906024016108bf565b6115a26001600160a01b0384168684611360565b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61160c826001600160a01b0316611781565b6116585760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006044820152606401610324565b600080836001600160a01b0316836040516116739190611a58565b6000604051808303816000865af19150503d80600081146116b0576040519150601f19603f3d011682016040523d82523d6000602084013e6116b5565b606091505b5091509150816117075760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646044820152606401610324565b80511561135a57808060200190518101906117229190611a22565b61135a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610324565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906117b55750808214155b949350505050565b6000602082840312156117cf57600080fd5b81356117da81611abc565b9392505050565b6000602082840312156117f357600080fd5b81516117da81611abc565b60008060006060848603121561181357600080fd5b833561181e81611abc565b9250602084013561182e81611abc565b9150604084013561183e81611abc565b809150509250925092565b60008060008060008060c0878903121561186257600080fd5b863561186d81611abc565b9550602087013561187d81611abc565b9450604087013561188d81611abc565b9350606087013561189d81611abc565b92506080870135915060a08701356118b481611abc565b809150509295509295509295565b600080600080600080600060e0888a0312156118dd57600080fd5b87356118e881611abc565b965060208801356118f881611abc565b9550604088013561190881611abc565b9450606088013561191881611abc565b93506080880135925060a088013561192f81611abc565b915060c088013561193f81611abc565b8091505092959891949750929550565b600080600080600060a0868803121561196757600080fd5b853561197281611abc565b9450602086013561198281611abc565b9350604086013561199281611abc565b92506060860135915060808601356119a981611abc565b809150509295509295909350565b60008060008060008060c087890312156119d057600080fd5b86356119db81611abc565b955060208701356119eb81611abc565b945060408701356119fb81611abc565b9350606087013592506080870135611a1281611abc565b915060a08701356118b481611ad1565b600060208284031215611a3457600080fd5b81516117da81611ad1565b600060208284031215611a5157600080fd5b5051919050565b6000825160005b81811015611a795760208186018101518583015201611a5f565b81811115611a88576000828501525b509190910192915050565b6000600019821415611ab557634e487b7160e01b600052601160045260246000fd5b5060010190565b6001600160a01b038116811461087f57600080fd5b801515811461087f57600080fdfea26469706673582212206454ff04d9db491d451351c6bea590d0e0fe4450dba82d9c3fc54a838051601564736f6c63430008070033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in MOVR
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.