More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 180 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Gov | 12545736 | 1303 days ago | IN | 0 ETH | 0.0008067 | ||||
End Swap | 11970375 | 1392 days ago | IN | 0 ETH | 0.00237235 | ||||
Swap | 11969807 | 1392 days ago | IN | 0 ETH | 0.02819881 | ||||
Swap | 11969239 | 1392 days ago | IN | 0 ETH | 0.02938447 | ||||
Swap | 11969194 | 1392 days ago | IN | 0 ETH | 0.03312562 | ||||
Swap | 11969022 | 1392 days ago | IN | 0 ETH | 0.0339613 | ||||
Swap | 11968558 | 1392 days ago | IN | 0 ETH | 0.03705343 | ||||
Swap | 11968483 | 1392 days ago | IN | 0 ETH | 0.03538828 | ||||
Swap | 11967513 | 1392 days ago | IN | 0 ETH | 0.03438703 | ||||
Swap | 11967461 | 1392 days ago | IN | 0 ETH | 0.03812359 | ||||
Swap | 11966460 | 1392 days ago | IN | 0 ETH | 0.01473043 | ||||
Swap | 11966171 | 1392 days ago | IN | 0 ETH | 0.03456037 | ||||
Swap | 11965400 | 1393 days ago | IN | 0 ETH | 0.02822088 | ||||
Swap | 11965391 | 1393 days ago | IN | 0 ETH | 0.01160069 | ||||
Swap | 11965348 | 1393 days ago | IN | 0 ETH | 0.029445 | ||||
Swap | 11965329 | 1393 days ago | IN | 0 ETH | 0.02938859 | ||||
Swap | 11965303 | 1393 days ago | IN | 0 ETH | 0.00668028 | ||||
Swap | 11965174 | 1393 days ago | IN | 0 ETH | 0.02709298 | ||||
Swap | 11964452 | 1393 days ago | IN | 0 ETH | 0.02250041 | ||||
Swap | 11964431 | 1393 days ago | IN | 0 ETH | 0.0276459 | ||||
Swap | 11963810 | 1393 days ago | IN | 0 ETH | 0.00872587 | ||||
Swap | 11963738 | 1393 days ago | IN | 0 ETH | 0.00693485 | ||||
Swap | 11962922 | 1393 days ago | IN | 0 ETH | 0.02424569 | ||||
Swap | 11962393 | 1393 days ago | IN | 0 ETH | 0.02202132 | ||||
Swap | 11961363 | 1393 days ago | IN | 0 ETH | 0.02211672 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
GmtSwap
Compiler Version
v0.6.12+commit.27d51765
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.6.12; import "../libraries/math/SafeMath.sol"; import "../libraries/token/IERC20.sol"; import "../libraries/utils/ReentrancyGuard.sol"; import "../interfaces/IXVIX.sol"; import "../interfaces/IBurnVault.sol"; import "../interfaces/IGmtIou.sol"; contract GmtSwap is ReentrancyGuard { using SafeMath for uint256; uint256 constant PRECISION = 1000000; bool public isInitialized; bool public isSwapActive = true; address public xvix; address public uni; address public xlge; address public gmtIou; address public weth; address public dai; address public wethDaiUni; address public wethXvixUni; address public allocator; address public burnVault; uint256 public gmtPrice; uint256 public xlgePrice; uint256 public minXvixPrice; uint256 public unlockTime; address public gov; constructor() public { gov = msg.sender; } modifier onlyGov() { require(msg.sender == gov, "GmtSwap: forbidden"); _; } function initialize( address[] memory _addresses, uint256 _gmtPrice, uint256 _xlgePrice, uint256 _minXvixPrice, uint256 _unlockTime ) public onlyGov { require(!isInitialized, "GmtSwap: already initialized"); isInitialized = true; xvix = _addresses[0]; uni = _addresses[1]; xlge = _addresses[2]; gmtIou = _addresses[3]; weth = _addresses[4]; dai = _addresses[5]; wethDaiUni = _addresses[6]; wethXvixUni = _addresses[7]; allocator = _addresses[8]; burnVault = _addresses[9]; gmtPrice = _gmtPrice; xlgePrice = _xlgePrice; minXvixPrice = _minXvixPrice; unlockTime = _unlockTime; } function setGov(address _gov) public onlyGov { gov = _gov; } function extendUnlockTime(uint256 _unlockTime) public onlyGov { require(_unlockTime > unlockTime, "GmtSwap: invalid unlockTime"); unlockTime = _unlockTime; } function withdraw(address _token, uint256 _tokenAmount, address _receiver) public onlyGov { require(block.timestamp > unlockTime, "GmtSwap: unlockTime not yet passed"); IERC20(_token).transfer(_receiver, _tokenAmount); } function swap( address _token, uint256 _tokenAmount, uint256 _allocation, uint8 _v, bytes32 _r, bytes32 _s ) public nonReentrant { require(isSwapActive, "GmtSwap: swap is no longer active"); require(_tokenAmount > 0, "GmtSwap: invalid tokenAmount"); require(_allocation > 0, "GmtSwap: invalid gmtAllocation"); _verifyAllocation(msg.sender, _allocation, _v, _r, _s); (uint256 transferAmount, uint256 mintAmount) = getSwapAmounts( msg.sender, _token, _tokenAmount, _allocation); require(transferAmount > 0, "GmtSwap: invalid transferAmount"); require(mintAmount > 0, "GmtSwap: invalid mintAmount"); IXVIX(xvix).rebase(); IERC20(_token).transferFrom(msg.sender, address(this), transferAmount); if (_token == xvix) { IERC20(_token).approve(burnVault, transferAmount); IBurnVault(burnVault).deposit(transferAmount); } IGmtIou(gmtIou).mint(msg.sender, mintAmount); } function endSwap() public onlyGov { isSwapActive = false; } function getSwapAmounts( address _account, address _token, uint256 _tokenAmount, uint256 _allocation ) public view returns (uint256, uint256) { require(_token == xvix || _token == uni || _token == xlge, "GmtSwap: unsupported token"); uint256 tokenPrice = getTokenPrice(_token); uint256 transferAmount = _tokenAmount; uint256 mintAmount = _tokenAmount.mul(tokenPrice).div(gmtPrice); uint256 gmtIouBalance = IERC20(gmtIou).balanceOf(_account); uint256 maxMintAmount = _allocation.sub(gmtIouBalance); if (mintAmount > maxMintAmount) { mintAmount = maxMintAmount; // round up the transferAmount transferAmount = mintAmount.mul(gmtPrice).mul(10).div(tokenPrice).add(9).div(10); } return (transferAmount, mintAmount); } function getTokenPrice(address _token) public view returns (uint256) { if (_token == xlge) { return xlgePrice; } if (_token == xvix) { return getXvixPrice(); } if (_token == uni) { return getUniPrice(); } revert("GmtSwap: unsupported token"); } function getEthPrice() public view returns (uint256) { uint256 wethBalance = IERC20(weth).balanceOf(wethDaiUni); uint256 daiBalance = IERC20(dai).balanceOf(wethDaiUni); return daiBalance.mul(PRECISION).div(wethBalance); } function getXvixPrice() public view returns (uint256) { uint256 ethPrice = getEthPrice(); uint256 wethBalance = IERC20(weth).balanceOf(wethXvixUni); uint256 xvixBalance = IERC20(xvix).balanceOf(wethXvixUni); uint256 price = wethBalance.mul(ethPrice).div(xvixBalance); if (price < minXvixPrice) { return minXvixPrice; } return price; } function getUniPrice() public view returns (uint256) { uint256 ethPrice = getEthPrice(); uint256 wethBalance = IERC20(weth).balanceOf(wethXvixUni); uint256 supply = IERC20(wethXvixUni).totalSupply(); return wethBalance.mul(ethPrice).mul(2).div(supply); } function _verifyAllocation( address _account, uint256 _allocation, uint8 _v, bytes32 _r, bytes32 _s ) private view { bytes32 message = keccak256(abi.encodePacked( "GmtSwap:GmtAllocation", _account, _allocation )); bytes32 messageHash = keccak256(abi.encodePacked( "\x19Ethereum Signed Message:\n32", message )); require( allocator == ecrecover(messageHash, _v, _r, _s), "GmtSwap: invalid signature" ); } }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () internal { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IXVIX { function setGov(address gov) external; function normalDivisor() external view returns (uint256); function maxSupply() external view returns (uint256); function mint(address account, uint256 amount) external returns (bool); function burn(address account, uint256 amount) external returns (bool); function toast(uint256 amount) external returns (bool); function rebase() external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IBurnVault { function deposit(uint256 amount) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IGmtIou { function mint(address account, uint256 amount) external returns (bool); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"allocator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dai","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"name":"extendUnlockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getEthPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"},{"internalType":"uint256","name":"_allocation","type":"uint256"}],"name":"getSwapAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUniPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getXvixPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gmtIou","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gmtPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_gmtPrice","type":"uint256"},{"internalType":"uint256","name":"_xlgePrice","type":"uint256"},{"internalType":"uint256","name":"_minXvixPrice","type":"uint256"},{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minXvixPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"},{"internalType":"uint256","name":"_allocation","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uni","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wethDaiUni","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wethXvixUni","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"xlge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"xlgePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"xvix","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526001805461ff00191661010017905534801561001f57600080fd5b506001600055600f80546001600160a01b03191633179055611a23806100466000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063918e5cf0116100f9578063cfad57a211610097578063e3cb6ea311610071578063e3cb6ea314610437578063ebb83f8a1461043f578063edc9af9514610494578063f4b9fa751461049c576101c4565b8063cfad57a2146103e3578063d02641a014610409578063e35bff961461042f576101c4565b8063aa5dcecc116100d3578063aa5dcecc1461036f578063c2333ee814610377578063c680711114610394578063ce0ec4741461039c576101c4565b8063918e5cf014610357578063a5017a571461035f578063a7db54c614610367576101c4565b8063428508e41161016657806369328dec1161014057806369328dec14610309578063754f59a01461033f578063769311431461034757806383298e501461034f576101c4565b8063428508e4146102435780635b257c32146102f957806367c9b01714610301576101c4565b8063268d1f53116101a2578063268d1f531461020f578063392e53cd146102175780633fc8cef31461023357806341eb09b21461023b576101c4565b806312d43a51146101c9578063213db671146101ed578063251c1aa3146101f5575b600080fd5b6101d16104a4565b604080516001600160a01b039092168252519081900360200190f35b6101d16104b3565b6101fd6104c2565b60408051918252519081900360200190f35b6101d16104c8565b61021f6104d7565b604080519115158252519081900360200190f35b6101d16104e0565b6101fd6104ef565b6102f7600480360360a081101561025957600080fd5b81019060208101813564010000000081111561027457600080fd5b82018360208201111561028657600080fd5b803590602001918460208302840111640100000000831117156102a857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050823593505050602081013590604081013590606001356104f5565b005b6101fd61080c565b6101fd61095d565b6102f76004803603606081101561031f57600080fd5b506001600160a01b03813581169160208101359160409091013516610a77565b6101d1610b93565b6101d1610ba2565b6101fd610bb1565b6101d1610bb7565b6101fd610bcc565b6101fd610bd2565b6101d1610cf1565b6102f76004803603602081101561038d57600080fd5b5035610d00565b6101d1610daf565b6102f7600480360360c08110156103b257600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610dbe565b6102f7600480360360208110156103f957600080fd5b50356001600160a01b0316611266565b6101fd6004803603602081101561041f57600080fd5b50356001600160a01b03166112dc565b61021f611399565b6102f76113a7565b61047b6004803603608081101561045557600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611408565b6040805192835260208301919091528051918290030190f35b6101d16115b7565b6101d16115c6565b600f546001600160a01b031681565b6008546001600160a01b031681565b600e5481565b6007546001600160a01b031681565b60015460ff1681565b6005546001600160a01b031681565b600d5481565b600f546001600160a01b03163314610549576040805162461bcd60e51b815260206004820152601260248201527123b6ba29bbb0b81d103337b93134b23232b760711b604482015290519081900360640190fd5b60015460ff16156105a1576040805162461bcd60e51b815260206004820152601c60248201527f476d74537761703a20616c726561647920696e697469616c697a656400000000604482015290519081900360640190fd5b6001805460ff191681179055845185906000906105ba57fe5b6020026020010151600160026101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106105f557fe5b6020026020010151600260006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460028151811061063057fe5b6020026020010151600360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460038151811061066b57fe5b6020026020010151600460006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846004815181106106a657fe5b6020026020010151600560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846005815181106106e157fe5b6020026020010151600660006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460068151811061071c57fe5b6020026020010151600760006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460078151811061075757fe5b6020026020010151600860006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460088151811061079257fe5b6020026020010151600960006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846009815181106107cd57fe5b6020908102919091010151600a80546001600160a01b0319166001600160a01b03909216919091179055600b93909355600c91909155600d55600e5550565b60008061081761095d565b600554600854604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b15801561086d57600080fd5b505afa158015610881573d6000803e3d6000fd5b505050506040513d602081101561089757600080fd5b5051600154600854604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009362010000909304909116916370a0823191602480820192602092909190829003018186803b1580156108f657600080fd5b505afa15801561090a573d6000803e3d6000fd5b505050506040513d602081101561092057600080fd5b50519050600061093a8261093485876115d5565b90611637565b9050600d5481101561095457600d5494505050505061095a565b93505050505b90565b600554600754604080516370a0823160e01b81526001600160a01b0392831660048201529051600093849316916370a08231916024808301926020929190829003018186803b1580156109af57600080fd5b505afa1580156109c3573d6000803e3d6000fd5b505050506040513d60208110156109d957600080fd5b5051600654600754604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b158015610a3157600080fd5b505afa158015610a45573d6000803e3d6000fd5b505050506040513d6020811015610a5b57600080fd5b50519050610a708261093483620f42406115d5565b9250505090565b600f546001600160a01b03163314610acb576040805162461bcd60e51b815260206004820152601260248201527123b6ba29bbb0b81d103337b93134b23232b760711b604482015290519081900360640190fd5b600e544211610b0b5760405162461bcd60e51b815260040180806020018281038252602281526020018061198a6022913960400191505060405180910390fd5b826001600160a01b031663a9059cbb82846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050506040513d6020811015610b8c57600080fd5b5050505050565b6003546001600160a01b031681565b6004546001600160a01b031681565b600c5481565b6001546201000090046001600160a01b031681565b600b5481565b600080610bdd61095d565b600554600854604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d6020811015610c5d57600080fd5b5051600854604080516318160ddd60e01b815290519293506000926001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b158015610caa57600080fd5b505afa158015610cbe573d6000803e3d6000fd5b505050506040513d6020811015610cd457600080fd5b50519050610954816109346002610ceb86886115d5565b906115d5565b6009546001600160a01b031681565b600f546001600160a01b03163314610d54576040805162461bcd60e51b815260206004820152601260248201527123b6ba29bbb0b81d103337b93134b23232b760711b604482015290519081900360640190fd5b600e548111610daa576040805162461bcd60e51b815260206004820152601b60248201527f476d74537761703a20696e76616c696420756e6c6f636b54696d650000000000604482015290519081900360640190fd5b600e55565b600a546001600160a01b031681565b60026000541415610e16576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600055600154610100900460ff16610e615760405162461bcd60e51b81526004018080602001828103825260218152602001806119cd6021913960400191505060405180910390fd5b60008511610eb6576040805162461bcd60e51b815260206004820152601c60248201527f476d74537761703a20696e76616c696420746f6b656e416d6f756e7400000000604482015290519081900360640190fd5b60008411610f0b576040805162461bcd60e51b815260206004820152601e60248201527f476d74537761703a20696e76616c696420676d74416c6c6f636174696f6e0000604482015290519081900360640190fd5b610f183385858585611679565b600080610f2733898989611408565b9150915060008211610f80576040805162461bcd60e51b815260206004820152601f60248201527f476d74537761703a20696e76616c6964207472616e73666572416d6f756e7400604482015290519081900360640190fd5b60008111610fd5576040805162461bcd60e51b815260206004820152601b60248201527f476d74537761703a20696e76616c6964206d696e74416d6f756e740000000000604482015290519081900360640190fd5b600160029054906101000a90046001600160a01b03166001600160a01b031663af14052c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561102557600080fd5b505af1158015611039573d6000803e3d6000fd5b505050506040513d602081101561104f57600080fd5b5050604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b038a16916323b872dd9160648083019260209291908290030181600087803b1580156110a657600080fd5b505af11580156110ba573d6000803e3d6000fd5b505050506040513d60208110156110d057600080fd5b50506001546001600160a01b03898116620100009092041614156111d657600a546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051918a169163095ea7b3916044808201926020929091908290030181600087803b15801561114457600080fd5b505af1158015611158573d6000803e3d6000fd5b505050506040513d602081101561116e57600080fd5b5050600a546040805163b6b55f2560e01b81526004810185905290516001600160a01b039092169163b6b55f259160248082019260009290919082900301818387803b1580156111bd57600080fd5b505af11580156111d1573d6000803e3d6000fd5b505050505b60048054604080516340c10f1960e01b8152339381019390935260248301849052516001600160a01b03909116916340c10f199160448083019260209291908290030181600087803b15801561122b57600080fd5b505af115801561123f573d6000803e3d6000fd5b505050506040513d602081101561125557600080fd5b505060016000555050505050505050565b600f546001600160a01b031633146112ba576040805162461bcd60e51b815260206004820152601260248201527123b6ba29bbb0b81d103337b93134b23232b760711b604482015290519081900360640190fd5b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6003546000906001600160a01b03838116911614156112fe5750600c54611394565b6001546001600160a01b03838116620100009092041614156113295761132261080c565b9050611394565b6002546001600160a01b038381169116141561134757611322610bd2565b6040805162461bcd60e51b815260206004820152601a60248201527f476d74537761703a20756e737570706f7274656420746f6b656e000000000000604482015290519081900360640190fd5b919050565b600154610100900460ff1681565b600f546001600160a01b031633146113fb576040805162461bcd60e51b815260206004820152601260248201527123b6ba29bbb0b81d103337b93134b23232b760711b604482015290519081900360640190fd5b6001805461ff0019169055565b60015460009081906001600160a01b038681166201000090920416148061143c57506002546001600160a01b038681169116145b8061145457506003546001600160a01b038681169116145b6114a5576040805162461bcd60e51b815260206004820152601a60248201527f476d74537761703a20756e737570706f7274656420746f6b656e000000000000604482015290519081900360640190fd5b60006114b0866112dc565b600b5490915085906000906114c99061093484866115d5565b90506000600460009054906101000a90046001600160a01b03166001600160a01b03166370a082318b6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b50519050600061156988836117f1565b9050808311156115a7578092506115a4600a610934600961159e89610934600a610ceb600b548c6115d590919063ffffffff16565b90611833565b93505b5091999098509650505050505050565b6002546001600160a01b031681565b6006546001600160a01b031681565b6000826115e457506000611631565b828202828482816115f157fe5b041461162e5760405162461bcd60e51b81526004018080602001828103825260218152602001806119ac6021913960400191505060405180910390fd5b90505b92915050565b600061162e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061188d565b604080517423b6ba29bbb0b81d23b6ba20b63637b1b0ba34b7b760591b6020808301919091526bffffffffffffffffffffffff19606089901b1660358301526049808301889052835180840390910181526069830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a333200000000608984015260a58084018290528451808503909101815260c58401808652815191840191909120600090915260e5840180865281905260ff8816610105850152610125840187905261014584018690529351909392600192610165808301939192601f198301929081900390910190855afa15801561177a573d6000803e3d6000fd5b5050604051601f1901516009546001600160a01b0390811691161490506117e8576040805162461bcd60e51b815260206004820152601a60248201527f476d74537761703a20696e76616c6964207369676e6174757265000000000000604482015290519081900360640190fd5b50505050505050565b600061162e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061192f565b60008282018381101561162e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081836119195760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118de5781810151838201526020016118c6565b50505050905090810190601f16801561190b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161192557fe5b0495945050505050565b600081848411156119815760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156118de5781810151838201526020016118c6565b50505090039056fe476d74537761703a20756e6c6f636b54696d65206e6f742079657420706173736564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77476d74537761703a2073776170206973206e6f206c6f6e67657220616374697665a2646970667358221220f67e00584053024842ca35a014cff816efd0b1fc51de2c2929397a1ecb595a0f64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063918e5cf0116100f9578063cfad57a211610097578063e3cb6ea311610071578063e3cb6ea314610437578063ebb83f8a1461043f578063edc9af9514610494578063f4b9fa751461049c576101c4565b8063cfad57a2146103e3578063d02641a014610409578063e35bff961461042f576101c4565b8063aa5dcecc116100d3578063aa5dcecc1461036f578063c2333ee814610377578063c680711114610394578063ce0ec4741461039c576101c4565b8063918e5cf014610357578063a5017a571461035f578063a7db54c614610367576101c4565b8063428508e41161016657806369328dec1161014057806369328dec14610309578063754f59a01461033f578063769311431461034757806383298e501461034f576101c4565b8063428508e4146102435780635b257c32146102f957806367c9b01714610301576101c4565b8063268d1f53116101a2578063268d1f531461020f578063392e53cd146102175780633fc8cef31461023357806341eb09b21461023b576101c4565b806312d43a51146101c9578063213db671146101ed578063251c1aa3146101f5575b600080fd5b6101d16104a4565b604080516001600160a01b039092168252519081900360200190f35b6101d16104b3565b6101fd6104c2565b60408051918252519081900360200190f35b6101d16104c8565b61021f6104d7565b604080519115158252519081900360200190f35b6101d16104e0565b6101fd6104ef565b6102f7600480360360a081101561025957600080fd5b81019060208101813564010000000081111561027457600080fd5b82018360208201111561028657600080fd5b803590602001918460208302840111640100000000831117156102a857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050823593505050602081013590604081013590606001356104f5565b005b6101fd61080c565b6101fd61095d565b6102f76004803603606081101561031f57600080fd5b506001600160a01b03813581169160208101359160409091013516610a77565b6101d1610b93565b6101d1610ba2565b6101fd610bb1565b6101d1610bb7565b6101fd610bcc565b6101fd610bd2565b6101d1610cf1565b6102f76004803603602081101561038d57600080fd5b5035610d00565b6101d1610daf565b6102f7600480360360c08110156103b257600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610dbe565b6102f7600480360360208110156103f957600080fd5b50356001600160a01b0316611266565b6101fd6004803603602081101561041f57600080fd5b50356001600160a01b03166112dc565b61021f611399565b6102f76113a7565b61047b6004803603608081101561045557600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611408565b6040805192835260208301919091528051918290030190f35b6101d16115b7565b6101d16115c6565b600f546001600160a01b031681565b6008546001600160a01b031681565b600e5481565b6007546001600160a01b031681565b60015460ff1681565b6005546001600160a01b031681565b600d5481565b600f546001600160a01b03163314610549576040805162461bcd60e51b815260206004820152601260248201527123b6ba29bbb0b81d103337b93134b23232b760711b604482015290519081900360640190fd5b60015460ff16156105a1576040805162461bcd60e51b815260206004820152601c60248201527f476d74537761703a20616c726561647920696e697469616c697a656400000000604482015290519081900360640190fd5b6001805460ff191681179055845185906000906105ba57fe5b6020026020010151600160026101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106105f557fe5b6020026020010151600260006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460028151811061063057fe5b6020026020010151600360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460038151811061066b57fe5b6020026020010151600460006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846004815181106106a657fe5b6020026020010151600560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846005815181106106e157fe5b6020026020010151600660006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460068151811061071c57fe5b6020026020010151600760006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460078151811061075757fe5b6020026020010151600860006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460088151811061079257fe5b6020026020010151600960006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846009815181106107cd57fe5b6020908102919091010151600a80546001600160a01b0319166001600160a01b03909216919091179055600b93909355600c91909155600d55600e5550565b60008061081761095d565b600554600854604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b15801561086d57600080fd5b505afa158015610881573d6000803e3d6000fd5b505050506040513d602081101561089757600080fd5b5051600154600854604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009362010000909304909116916370a0823191602480820192602092909190829003018186803b1580156108f657600080fd5b505afa15801561090a573d6000803e3d6000fd5b505050506040513d602081101561092057600080fd5b50519050600061093a8261093485876115d5565b90611637565b9050600d5481101561095457600d5494505050505061095a565b93505050505b90565b600554600754604080516370a0823160e01b81526001600160a01b0392831660048201529051600093849316916370a08231916024808301926020929190829003018186803b1580156109af57600080fd5b505afa1580156109c3573d6000803e3d6000fd5b505050506040513d60208110156109d957600080fd5b5051600654600754604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b158015610a3157600080fd5b505afa158015610a45573d6000803e3d6000fd5b505050506040513d6020811015610a5b57600080fd5b50519050610a708261093483620f42406115d5565b9250505090565b600f546001600160a01b03163314610acb576040805162461bcd60e51b815260206004820152601260248201527123b6ba29bbb0b81d103337b93134b23232b760711b604482015290519081900360640190fd5b600e544211610b0b5760405162461bcd60e51b815260040180806020018281038252602281526020018061198a6022913960400191505060405180910390fd5b826001600160a01b031663a9059cbb82846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050506040513d6020811015610b8c57600080fd5b5050505050565b6003546001600160a01b031681565b6004546001600160a01b031681565b600c5481565b6001546201000090046001600160a01b031681565b600b5481565b600080610bdd61095d565b600554600854604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d6020811015610c5d57600080fd5b5051600854604080516318160ddd60e01b815290519293506000926001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b158015610caa57600080fd5b505afa158015610cbe573d6000803e3d6000fd5b505050506040513d6020811015610cd457600080fd5b50519050610954816109346002610ceb86886115d5565b906115d5565b6009546001600160a01b031681565b600f546001600160a01b03163314610d54576040805162461bcd60e51b815260206004820152601260248201527123b6ba29bbb0b81d103337b93134b23232b760711b604482015290519081900360640190fd5b600e548111610daa576040805162461bcd60e51b815260206004820152601b60248201527f476d74537761703a20696e76616c696420756e6c6f636b54696d650000000000604482015290519081900360640190fd5b600e55565b600a546001600160a01b031681565b60026000541415610e16576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600055600154610100900460ff16610e615760405162461bcd60e51b81526004018080602001828103825260218152602001806119cd6021913960400191505060405180910390fd5b60008511610eb6576040805162461bcd60e51b815260206004820152601c60248201527f476d74537761703a20696e76616c696420746f6b656e416d6f756e7400000000604482015290519081900360640190fd5b60008411610f0b576040805162461bcd60e51b815260206004820152601e60248201527f476d74537761703a20696e76616c696420676d74416c6c6f636174696f6e0000604482015290519081900360640190fd5b610f183385858585611679565b600080610f2733898989611408565b9150915060008211610f80576040805162461bcd60e51b815260206004820152601f60248201527f476d74537761703a20696e76616c6964207472616e73666572416d6f756e7400604482015290519081900360640190fd5b60008111610fd5576040805162461bcd60e51b815260206004820152601b60248201527f476d74537761703a20696e76616c6964206d696e74416d6f756e740000000000604482015290519081900360640190fd5b600160029054906101000a90046001600160a01b03166001600160a01b031663af14052c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561102557600080fd5b505af1158015611039573d6000803e3d6000fd5b505050506040513d602081101561104f57600080fd5b5050604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b038a16916323b872dd9160648083019260209291908290030181600087803b1580156110a657600080fd5b505af11580156110ba573d6000803e3d6000fd5b505050506040513d60208110156110d057600080fd5b50506001546001600160a01b03898116620100009092041614156111d657600a546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051918a169163095ea7b3916044808201926020929091908290030181600087803b15801561114457600080fd5b505af1158015611158573d6000803e3d6000fd5b505050506040513d602081101561116e57600080fd5b5050600a546040805163b6b55f2560e01b81526004810185905290516001600160a01b039092169163b6b55f259160248082019260009290919082900301818387803b1580156111bd57600080fd5b505af11580156111d1573d6000803e3d6000fd5b505050505b60048054604080516340c10f1960e01b8152339381019390935260248301849052516001600160a01b03909116916340c10f199160448083019260209291908290030181600087803b15801561122b57600080fd5b505af115801561123f573d6000803e3d6000fd5b505050506040513d602081101561125557600080fd5b505060016000555050505050505050565b600f546001600160a01b031633146112ba576040805162461bcd60e51b815260206004820152601260248201527123b6ba29bbb0b81d103337b93134b23232b760711b604482015290519081900360640190fd5b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6003546000906001600160a01b03838116911614156112fe5750600c54611394565b6001546001600160a01b03838116620100009092041614156113295761132261080c565b9050611394565b6002546001600160a01b038381169116141561134757611322610bd2565b6040805162461bcd60e51b815260206004820152601a60248201527f476d74537761703a20756e737570706f7274656420746f6b656e000000000000604482015290519081900360640190fd5b919050565b600154610100900460ff1681565b600f546001600160a01b031633146113fb576040805162461bcd60e51b815260206004820152601260248201527123b6ba29bbb0b81d103337b93134b23232b760711b604482015290519081900360640190fd5b6001805461ff0019169055565b60015460009081906001600160a01b038681166201000090920416148061143c57506002546001600160a01b038681169116145b8061145457506003546001600160a01b038681169116145b6114a5576040805162461bcd60e51b815260206004820152601a60248201527f476d74537761703a20756e737570706f7274656420746f6b656e000000000000604482015290519081900360640190fd5b60006114b0866112dc565b600b5490915085906000906114c99061093484866115d5565b90506000600460009054906101000a90046001600160a01b03166001600160a01b03166370a082318b6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b50519050600061156988836117f1565b9050808311156115a7578092506115a4600a610934600961159e89610934600a610ceb600b548c6115d590919063ffffffff16565b90611833565b93505b5091999098509650505050505050565b6002546001600160a01b031681565b6006546001600160a01b031681565b6000826115e457506000611631565b828202828482816115f157fe5b041461162e5760405162461bcd60e51b81526004018080602001828103825260218152602001806119ac6021913960400191505060405180910390fd5b90505b92915050565b600061162e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061188d565b604080517423b6ba29bbb0b81d23b6ba20b63637b1b0ba34b7b760591b6020808301919091526bffffffffffffffffffffffff19606089901b1660358301526049808301889052835180840390910181526069830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a333200000000608984015260a58084018290528451808503909101815260c58401808652815191840191909120600090915260e5840180865281905260ff8816610105850152610125840187905261014584018690529351909392600192610165808301939192601f198301929081900390910190855afa15801561177a573d6000803e3d6000fd5b5050604051601f1901516009546001600160a01b0390811691161490506117e8576040805162461bcd60e51b815260206004820152601a60248201527f476d74537761703a20696e76616c6964207369676e6174757265000000000000604482015290519081900360640190fd5b50505050505050565b600061162e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061192f565b60008282018381101561162e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081836119195760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118de5781810151838201526020016118c6565b50505050905090810190601f16801561190b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161192557fe5b0495945050505050565b600081848411156119815760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156118de5781810151838201526020016118c6565b50505090039056fe476d74537761703a20756e6c6f636b54696d65206e6f742079657420706173736564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77476d74537761703a2073776170206973206e6f206c6f6e67657220616374697665a2646970667358221220f67e00584053024842ca35a014cff816efd0b1fc51de2c2929397a1ecb595a0f64736f6c634300060c0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.