Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
Latest 25 from a total of 1,231 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint By Giveaway | 14872016 | 949 days ago | IN | 0 ETH | 0.00049828 | ||||
Mint By Giveaway | 14870459 | 949 days ago | IN | 0 ETH | 0.00071633 | ||||
Mint By Giveaway | 14869603 | 950 days ago | IN | 0 ETH | 0.00081986 | ||||
Mint By Giveaway | 14869602 | 950 days ago | IN | 0 ETH | 0.00077674 | ||||
Mint By Giveaway | 14869600 | 950 days ago | IN | 0 ETH | 0.00076064 | ||||
Mint By Giveaway | 14864113 | 950 days ago | IN | 0 ETH | 0.00057368 | ||||
Mint By Giveaway | 14864113 | 950 days ago | IN | 0 ETH | 0.00057655 | ||||
Mint By Giveaway | 14864113 | 950 days ago | IN | 0 ETH | 0.00058543 | ||||
Mint By Giveaway | 14864113 | 950 days ago | IN | 0 ETH | 0.00057368 | ||||
Mint By Giveaway | 14860838 | 951 days ago | IN | 0 ETH | 0.00062282 | ||||
Mint By Giveaway | 14779816 | 964 days ago | IN | 0 ETH | 0.00290526 | ||||
Mint By Giveaway | 14779814 | 964 days ago | IN | 0 ETH | 0.00274574 | ||||
Mint By Giveaway | 14779814 | 964 days ago | IN | 0 ETH | 0.00347658 | ||||
Mint By Giveaway | 14779749 | 964 days ago | IN | 0 ETH | 0.00217466 | ||||
Mint By Giveaway | 14779741 | 964 days ago | IN | 0 ETH | 0.00207507 | ||||
Mint By Giveaway | 14779740 | 964 days ago | IN | 0 ETH | 0.00187393 | ||||
Mint By Giveaway | 14779730 | 964 days ago | IN | 0 ETH | 0.00207412 | ||||
Mint By Giveaway | 14779724 | 964 days ago | IN | 0 ETH | 0.00239493 | ||||
Mint By Giveaway | 14779710 | 964 days ago | IN | 0 ETH | 0.00209699 | ||||
Mint By Giveaway | 14779690 | 964 days ago | IN | 0 ETH | 0.00213068 | ||||
Mint By Giveaway | 14779680 | 964 days ago | IN | 0 ETH | 0.00142965 | ||||
Mint By Giveaway | 14779661 | 964 days ago | IN | 0 ETH | 0.00159618 | ||||
Mint By Giveaway | 14779651 | 964 days ago | IN | 0 ETH | 0.00191663 | ||||
Mint By Giveaway | 14779628 | 964 days ago | IN | 0 ETH | 0.00157268 | ||||
Mint By Giveaway | 14779623 | 964 days ago | IN | 0 ETH | 0.0014831 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
NextTrialRunPosterMinter
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol"; interface NextTrialRunPoster { function mint(address,uint256) external; } contract NextTrialRunPosterMinter is EIP712, Ownable { NextTrialRunPoster public constant nextTrialRunPoster = NextTrialRunPoster(0x339Cac7E7719D701A251930Ebe5eA10E37A2Fd0a); /** EIP712 */ bytes32 public constant GIVEAWAY_TYPEHASH = keccak256("SignGiveaway(address receiver,uint256 maxAmount)"); struct SignGiveaway { address receiver; uint256 maxAmount; } /** Max supply */ uint256 public constant MAX_SUPPLY = 2692; /** Pause mint */ bool public mintPaused = false; /** Giveaway Mints */ // minted through giveaways uint256 public numGiveaways = 0; // max giveaways mapping(address => uint256) public giveawaysOf; /** Scheduling */ uint256 public giveawayOpeningHours = 1652270400; // Wednesday, May 11, 2022 8:00:00 PM GMT+08:00 uint256 public constant operationSeconds = 3600 * 24 * 4; // 4 days event SetGiveawayOpeningHours(uint256 giveawayOpeningHours); event MintGiveaway(address account, uint256 amount); event MintPaused(bool mintPaused); constructor() EIP712("NextTrialRunPosterMinter", "1") {} modifier whenNotPaused() { require( !mintPaused, "Store is closed" ); _; } modifier whenGiveawayOpened() { require( block.timestamp >= giveawayOpeningHours, "Store is not opened for giveaway mints" ); require( block.timestamp < giveawayOpeningHours + operationSeconds, "Store is closed for giveaway mints" ); _; } function setMintPaused(bool _mintPaused) external onlyOwner{ mintPaused = _mintPaused; emit MintPaused(_mintPaused); } function setGiveawayOpeningHours(uint256 _giveawayOpeningHours) external onlyOwner { giveawayOpeningHours = _giveawayOpeningHours; emit SetGiveawayOpeningHours(_giveawayOpeningHours); } function mintByGiveaway( uint256 _nftAmount, uint256 _maxAmount, uint8 _vSig, bytes32 _rSig, bytes32 _sSig ) external whenNotPaused whenGiveawayOpened { uint256 myGiveaways = giveawaysOf[msg.sender]; require(myGiveaways == 0, "Tsk tsk, not too greedy please"); require(numGiveaways + _nftAmount <= MAX_SUPPLY, "Max number of giveaways reached"); require(_nftAmount <= _maxAmount, "Mint amount exceeds allocated amount"); bytes32 digest = _hashTypedDataV4( keccak256(abi.encode(GIVEAWAY_TYPEHASH, msg.sender, _maxAmount)) ); address signer = ecrecover(digest, _vSig, _rSig, _sSig); require(signer == owner(), "The signature is not from us, please check again"); giveawaysOf[msg.sender] = _nftAmount; //update who has claimed their giveaways nextTrialRunPoster.mint(msg.sender, _nftAmount); numGiveaways += _nftAmount; emit MintGiveaway(msg.sender, _nftAmount); } fallback () external payable { revert(); // Reject any Ether transfer } receive () external payable { revert(); //Reject any Ether transfer } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./ECDSA.sol"; /** * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. * * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding * they need in their contracts using a combination of `abi.encode` and `keccak256`. * * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA * ({_hashTypedDataV4}). * * The implementation of the domain separator was designed to be as efficient as possible while still properly updating * the chain id to protect against replay attacks on an eventual fork of the chain. * * NOTE: This contract implements the version of the encoding known as "v4", as implemented by the JSON RPC method * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. * * _Available since v3.4._ */ abstract contract EIP712 { /* solhint-disable var-name-mixedcase */ // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to // invalidate the cached domain separator if the chain id changes. bytes32 private immutable _CACHED_DOMAIN_SEPARATOR; uint256 private immutable _CACHED_CHAIN_ID; bytes32 private immutable _HASHED_NAME; bytes32 private immutable _HASHED_VERSION; bytes32 private immutable _TYPE_HASH; /* solhint-enable var-name-mixedcase */ /** * @dev Initializes the domain separator and parameter caches. * * The meaning of `name` and `version` is specified in * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: * * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. * - `version`: the current major version of the signing domain. * * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart * contract upgrade]. */ constructor(string memory name, string memory version) { bytes32 hashedName = keccak256(bytes(name)); bytes32 hashedVersion = keccak256(bytes(version)); bytes32 typeHash = keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ); _HASHED_NAME = hashedName; _HASHED_VERSION = hashedVersion; _CACHED_CHAIN_ID = block.chainid; _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion); _TYPE_HASH = typeHash; } /** * @dev Returns the domain separator for the current chain. */ function _domainSeparatorV4() internal view returns (bytes32) { if (block.chainid == _CACHED_CHAIN_ID) { return _CACHED_DOMAIN_SEPARATOR; } else { return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION); } } function _buildDomainSeparator( bytes32 typeHash, bytes32 nameHash, bytes32 versionHash ) private view returns (bytes32) { return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this))); } /** * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this * function returns the hash of the fully encoded EIP712 message for this domain. * * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example: * * ```solidity * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode( * keccak256("Mail(address to,string contents)"), * mailTo, * keccak256(bytes(mailContents)) * ))); * address signer = ECDSA.recover(digest, signature); * ``` */ function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) { return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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() { _setOwner(_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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. * * These functions can be used to verify that a message was signed by the holder * of the private keys of a given address. */ library ECDSA { enum RecoverError { NoError, InvalidSignature, InvalidSignatureLength, InvalidSignatureS, InvalidSignatureV } function _throwError(RecoverError error) private pure { if (error == RecoverError.NoError) { return; // no error: do nothing } else if (error == RecoverError.InvalidSignature) { revert("ECDSA: invalid signature"); } else if (error == RecoverError.InvalidSignatureLength) { revert("ECDSA: invalid signature length"); } else if (error == RecoverError.InvalidSignatureS) { revert("ECDSA: invalid signature 's' value"); } else if (error == RecoverError.InvalidSignatureV) { revert("ECDSA: invalid signature 'v' value"); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature` or error string. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] * * _Available since v4.3._ */ function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) { // Check the signature length // - case 65: r,s,v signature (standard) // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._ if (signature.length == 65) { bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return tryRecover(hash, v, r, s); } else if (signature.length == 64) { bytes32 r; bytes32 vs; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) vs := mload(add(signature, 0x40)) } return tryRecover(hash, r, vs); } else { return (address(0), RecoverError.InvalidSignatureLength); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature`. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, signature); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately. * * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures] * * _Available since v4.3._ */ function tryRecover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address, RecoverError) { bytes32 s; uint8 v; assembly { s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) v := add(shr(255, vs), 27) } return tryRecover(hash, v, r, s); } /** * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately. * * _Available since v4.2._ */ function recover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, r, vs); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `v`, * `r` and `s` signature fields separately. * * _Available since v4.3._ */ function tryRecover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address, RecoverError) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return (address(0), RecoverError.InvalidSignatureS); } if (v != 27 && v != 28) { return (address(0), RecoverError.InvalidSignatureV); } // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); if (signer == address(0)) { return (address(0), RecoverError.InvalidSignature); } return (signer, RecoverError.NoError); } /** * @dev Overload of {ECDSA-recover} that receives the `v`, * `r` and `s` signature fields separately. */ function recover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, v, r, s); _throwError(error); return recovered; } /** * @dev Returns an Ethereum Signed Message, created from a `hash`. This * produces hash corresponding to the one signed with the * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] * JSON-RPC method as part of EIP-191. * * See {recover}. */ function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { // 32 is the length in bytes of hash, // enforced by the type signature above return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); } /** * @dev Returns an Ethereum Signed Typed Data, created from a * `domainSeparator` and a `structHash`. This produces hash corresponding * to the one signed with the * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] * JSON-RPC method as part of EIP-712. * * See {recover}. */ function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } }
// SPDX-License-Identifier: MIT 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; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MintGiveaway","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"mintPaused","type":"bool"}],"name":"MintPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"giveawayOpeningHours","type":"uint256"}],"name":"SetGiveawayOpeningHours","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"GIVEAWAY_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giveawayOpeningHours","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"giveawaysOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nftAmount","type":"uint256"},{"internalType":"uint256","name":"_maxAmount","type":"uint256"},{"internalType":"uint8","name":"_vSig","type":"uint8"},{"internalType":"bytes32","name":"_rSig","type":"bytes32"},{"internalType":"bytes32","name":"_sSig","type":"bytes32"}],"name":"mintByGiveaway","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextTrialRunPoster","outputs":[{"internalType":"contract NextTrialRunPoster","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numGiveaways","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_giveawayOpeningHours","type":"uint256"}],"name":"setGiveawayOpeningHours","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_mintPaused","type":"bool"}],"name":"setMintPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
61012060405260008060146101000a81548160ff021916908315150217905550600060015563627ba5406003553480156200003957600080fd5b506040518060400160405280601881526020017f4e657874547269616c52756e506f737465724d696e74657200000000000000008152506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525060008280519060200120905060008280519060200120905060007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90508260c081815250508160e081815250504660a081815250506200010e8184846200014960201b60201c565b60808181525050806101008181525050505050505062000143620001376200018560201b60201c565b6200018d60201b60201c565b62000329565b600083838346306040516020016200016695949392919062000284565b6040516020818303038152906040528051906020012090509392505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200025c81620002e1565b82525050565b6200026d81620002f5565b82525050565b6200027e816200031f565b82525050565b600060a0820190506200029b600083018862000262565b620002aa602083018762000262565b620002b9604083018662000262565b620002c8606083018562000273565b620002d7608083018462000251565b9695505050505050565b6000620002ee82620002ff565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60805160a05160c05160e051610100516117a56200036e6000396000610c7601526000610cb801526000610c9701526000610c2301526000610c4b01526117a56000f3fe6080604052600436106100e15760003560e01c8063b69355011161007f578063ec8ed84911610059578063ec8ed84914610296578063f2fde38b146102c1578063f87055e1146102ea578063fd23492a14610315576100eb565b8063b693550114610207578063d245927714610230578063e70b4db614610259576100eb565b8063715018a6116100bb578063715018a6146101715780637e4831d3146101885780638da5cb5b146101b357806397edd72f146101de576100eb565b806313d0372b146100f05780631dd082811461011b57806332cb6b0c14610146576100eb565b366100eb57600080fd5b600080fd5b3480156100fc57600080fd5b50610105610340565b6040516101129190611344565b60405180910390f35b34801561012757600080fd5b50610130610346565b60405161013d9190611209565b60405180910390f35b34801561015257600080fd5b5061015b61035e565b6040516101689190611344565b60405180910390f35b34801561017d57600080fd5b50610186610364565b005b34801561019457600080fd5b5061019d6103ec565b6040516101aa9190611104565b60405180910390f35b3480156101bf57600080fd5b506101c86103ff565b6040516101d591906110c0565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190610e3f565b610428565b005b34801561021357600080fd5b5061022e60048036038101906102299190610de5565b61086b565b005b34801561023c57600080fd5b5061025760048036038101906102529190610e12565b61093b565b005b34801561026557600080fd5b50610280600480360381019061027b9190610db8565b6109f8565b60405161028d9190611344565b60405180910390f35b3480156102a257600080fd5b506102ab610a10565b6040516102b89190611344565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e39190610db8565b610a16565b005b3480156102f657600080fd5b506102ff610b0e565b60405161030c919061111f565b60405180910390f35b34801561032157600080fd5b5061032a610b32565b6040516103379190611344565b60405180910390f35b60035481565b73339cac7e7719d701a251930ebe5ea10e37a2fd0a81565b610a8481565b61036c610b39565b73ffffffffffffffffffffffffffffffffffffffff1661038a6103ff565b73ffffffffffffffffffffffffffffffffffffffff16146103e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d790611304565b60405180910390fd5b6103ea6000610b41565b565b600060149054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060149054906101000a900460ff1615610478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046f906112c4565b60405180910390fd5b6003544210156104bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b490611284565b60405180910390fd5b620546006003546104ce919061137b565b421061050f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050690611324565b60405180910390fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114610596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058d90611224565b60405180910390fd5b610a84866001546105a7919061137b565b11156105e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105df90611264565b60405180910390fd5b8486111561062b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610622906112e4565b60405180910390fd5b60006106807f22133853d7a072629954f16241727e949abde8c7920dd24bda4aaf2261622a8a33886040516020016106659392919061113a565b60405160208183030381529060405280519060200120610c05565b90506000600182878787604051600081526020016040526040516106a794939291906111c4565b6020604051602081039080840390855afa1580156106c9573d6000803e3d6000fd5b5050506020604051035190506106dd6103ff565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461074a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610741906112a4565b60405180910390fd5b87600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073339cac7e7719d701a251930ebe5ea10e37a2fd0a73ffffffffffffffffffffffffffffffffffffffff166340c10f19338a6040518363ffffffff1660e01b81526004016107dd9291906110db565b600060405180830381600087803b1580156107f757600080fd5b505af115801561080b573d6000803e3d6000fd5b505050508760016000828254610821919061137b565b925050819055507f14ca6c119d3632627714156b3b03b313520d902516ef0089151d57384575048233896040516108599291906110db565b60405180910390a15050505050505050565b610873610b39565b73ffffffffffffffffffffffffffffffffffffffff166108916103ff565b73ffffffffffffffffffffffffffffffffffffffff16146108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108de90611304565b60405180910390fd5b80600060146101000a81548160ff0219169083151502179055507f6c5077b147ba33efb2320134a1363ca18ccbacd3e2eb73438a3d23b2d7b180ba816040516109309190611104565b60405180910390a150565b610943610b39565b73ffffffffffffffffffffffffffffffffffffffff166109616103ff565b73ffffffffffffffffffffffffffffffffffffffff16146109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90611304565b60405180910390fd5b806003819055507f4513140eaf07003e1df3963cb1ed871f6fc870916d70ef5733bc9a4a84e64827816040516109ed9190611344565b60405180910390a150565b60026020528060005260406000206000915090505481565b60015481565b610a1e610b39565b73ffffffffffffffffffffffffffffffffffffffff16610a3c6103ff565b73ffffffffffffffffffffffffffffffffffffffff1614610a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8990611304565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af990611244565b60405180910390fd5b610b0b81610b41565b50565b7f22133853d7a072629954f16241727e949abde8c7920dd24bda4aaf2261622a8a81565b6205460081565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000610c18610c12610c1f565b83610ce2565b9050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610c71577f00000000000000000000000000000000000000000000000000000000000000009050610cdf565b610cdc7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610d15565b90505b90565b60008282604051602001610cf7929190611089565b60405160208183030381529060405280519060200120905092915050565b60008383834630604051602001610d30959493929190611171565b6040516020818303038152906040528051906020012090509392505050565b600081359050610d5e816116fc565b92915050565b600081359050610d7381611713565b92915050565b600081359050610d888161172a565b92915050565b600081359050610d9d81611741565b92915050565b600081359050610db281611758565b92915050565b600060208284031215610dce57610dcd61149f565b5b6000610ddc84828501610d4f565b91505092915050565b600060208284031215610dfb57610dfa61149f565b5b6000610e0984828501610d64565b91505092915050565b600060208284031215610e2857610e2761149f565b5b6000610e3684828501610d8e565b91505092915050565b600080600080600060a08688031215610e5b57610e5a61149f565b5b6000610e6988828901610d8e565b9550506020610e7a88828901610d8e565b9450506040610e8b88828901610da3565b9350506060610e9c88828901610d79565b9250506080610ead88828901610d79565b9150509295509295909350565b610ec3816113d1565b82525050565b610ed2816113e3565b82525050565b610ee1816113ef565b82525050565b610ef8610ef3826113ef565b611466565b82525050565b610f0781611430565b82525050565b6000610f1a601e8361135f565b9150610f25826114a4565b602082019050919050565b6000610f3d60268361135f565b9150610f48826114cd565b604082019050919050565b6000610f60600283611370565b9150610f6b8261151c565b600282019050919050565b6000610f83601f8361135f565b9150610f8e82611545565b602082019050919050565b6000610fa660268361135f565b9150610fb18261156e565b604082019050919050565b6000610fc960308361135f565b9150610fd4826115bd565b604082019050919050565b6000610fec600f8361135f565b9150610ff78261160c565b602082019050919050565b600061100f60248361135f565b915061101a82611635565b604082019050919050565b600061103260208361135f565b915061103d82611684565b602082019050919050565b600061105560228361135f565b9150611060826116ad565b604082019050919050565b61107481611419565b82525050565b61108381611423565b82525050565b600061109482610f53565b91506110a08285610ee7565b6020820191506110b08284610ee7565b6020820191508190509392505050565b60006020820190506110d56000830184610eba565b92915050565b60006040820190506110f06000830185610eba565b6110fd602083018461106b565b9392505050565b60006020820190506111196000830184610ec9565b92915050565b60006020820190506111346000830184610ed8565b92915050565b600060608201905061114f6000830186610ed8565b61115c6020830185610eba565b611169604083018461106b565b949350505050565b600060a0820190506111866000830188610ed8565b6111936020830187610ed8565b6111a06040830186610ed8565b6111ad606083018561106b565b6111ba6080830184610eba565b9695505050505050565b60006080820190506111d96000830187610ed8565b6111e6602083018661107a565b6111f36040830185610ed8565b6112006060830184610ed8565b95945050505050565b600060208201905061121e6000830184610efe565b92915050565b6000602082019050818103600083015261123d81610f0d565b9050919050565b6000602082019050818103600083015261125d81610f30565b9050919050565b6000602082019050818103600083015261127d81610f76565b9050919050565b6000602082019050818103600083015261129d81610f99565b9050919050565b600060208201905081810360008301526112bd81610fbc565b9050919050565b600060208201905081810360008301526112dd81610fdf565b9050919050565b600060208201905081810360008301526112fd81611002565b9050919050565b6000602082019050818103600083015261131d81611025565b9050919050565b6000602082019050818103600083015261133d81611048565b9050919050565b6000602082019050611359600083018461106b565b92915050565b600082825260208201905092915050565b600081905092915050565b600061138682611419565b915061139183611419565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156113c6576113c5611470565b5b828201905092915050565b60006113dc826113f9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061143b82611442565b9050919050565b600061144d82611454565b9050919050565b600061145f826113f9565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b7f54736b2074736b2c206e6f7420746f6f2067726565647920706c656173650000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f4d6178206e756d626572206f6620676976656177617973207265616368656400600082015250565b7f53746f7265206973206e6f74206f70656e656420666f7220676976656177617960008201527f206d696e74730000000000000000000000000000000000000000000000000000602082015250565b7f546865207369676e6174757265206973206e6f742066726f6d2075732c20706c60008201527f6561736520636865636b20616761696e00000000000000000000000000000000602082015250565b7f53746f726520697320636c6f7365640000000000000000000000000000000000600082015250565b7f4d696e7420616d6f756e74206578636565647320616c6c6f636174656420616d60008201527f6f756e7400000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53746f726520697320636c6f73656420666f72206769766561776179206d696e60008201527f7473000000000000000000000000000000000000000000000000000000000000602082015250565b611705816113d1565b811461171057600080fd5b50565b61171c816113e3565b811461172757600080fd5b50565b611733816113ef565b811461173e57600080fd5b50565b61174a81611419565b811461175557600080fd5b50565b61176181611423565b811461176c57600080fd5b5056fea26469706673582212200a884cfd6d79afcd147ea23b5b78fe460220b9c29d602c357e1eb644d047d8b964736f6c63430008070033
Deployed Bytecode
0x6080604052600436106100e15760003560e01c8063b69355011161007f578063ec8ed84911610059578063ec8ed84914610296578063f2fde38b146102c1578063f87055e1146102ea578063fd23492a14610315576100eb565b8063b693550114610207578063d245927714610230578063e70b4db614610259576100eb565b8063715018a6116100bb578063715018a6146101715780637e4831d3146101885780638da5cb5b146101b357806397edd72f146101de576100eb565b806313d0372b146100f05780631dd082811461011b57806332cb6b0c14610146576100eb565b366100eb57600080fd5b600080fd5b3480156100fc57600080fd5b50610105610340565b6040516101129190611344565b60405180910390f35b34801561012757600080fd5b50610130610346565b60405161013d9190611209565b60405180910390f35b34801561015257600080fd5b5061015b61035e565b6040516101689190611344565b60405180910390f35b34801561017d57600080fd5b50610186610364565b005b34801561019457600080fd5b5061019d6103ec565b6040516101aa9190611104565b60405180910390f35b3480156101bf57600080fd5b506101c86103ff565b6040516101d591906110c0565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190610e3f565b610428565b005b34801561021357600080fd5b5061022e60048036038101906102299190610de5565b61086b565b005b34801561023c57600080fd5b5061025760048036038101906102529190610e12565b61093b565b005b34801561026557600080fd5b50610280600480360381019061027b9190610db8565b6109f8565b60405161028d9190611344565b60405180910390f35b3480156102a257600080fd5b506102ab610a10565b6040516102b89190611344565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e39190610db8565b610a16565b005b3480156102f657600080fd5b506102ff610b0e565b60405161030c919061111f565b60405180910390f35b34801561032157600080fd5b5061032a610b32565b6040516103379190611344565b60405180910390f35b60035481565b73339cac7e7719d701a251930ebe5ea10e37a2fd0a81565b610a8481565b61036c610b39565b73ffffffffffffffffffffffffffffffffffffffff1661038a6103ff565b73ffffffffffffffffffffffffffffffffffffffff16146103e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d790611304565b60405180910390fd5b6103ea6000610b41565b565b600060149054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060149054906101000a900460ff1615610478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046f906112c4565b60405180910390fd5b6003544210156104bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b490611284565b60405180910390fd5b620546006003546104ce919061137b565b421061050f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050690611324565b60405180910390fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114610596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058d90611224565b60405180910390fd5b610a84866001546105a7919061137b565b11156105e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105df90611264565b60405180910390fd5b8486111561062b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610622906112e4565b60405180910390fd5b60006106807f22133853d7a072629954f16241727e949abde8c7920dd24bda4aaf2261622a8a33886040516020016106659392919061113a565b60405160208183030381529060405280519060200120610c05565b90506000600182878787604051600081526020016040526040516106a794939291906111c4565b6020604051602081039080840390855afa1580156106c9573d6000803e3d6000fd5b5050506020604051035190506106dd6103ff565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461074a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610741906112a4565b60405180910390fd5b87600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073339cac7e7719d701a251930ebe5ea10e37a2fd0a73ffffffffffffffffffffffffffffffffffffffff166340c10f19338a6040518363ffffffff1660e01b81526004016107dd9291906110db565b600060405180830381600087803b1580156107f757600080fd5b505af115801561080b573d6000803e3d6000fd5b505050508760016000828254610821919061137b565b925050819055507f14ca6c119d3632627714156b3b03b313520d902516ef0089151d57384575048233896040516108599291906110db565b60405180910390a15050505050505050565b610873610b39565b73ffffffffffffffffffffffffffffffffffffffff166108916103ff565b73ffffffffffffffffffffffffffffffffffffffff16146108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108de90611304565b60405180910390fd5b80600060146101000a81548160ff0219169083151502179055507f6c5077b147ba33efb2320134a1363ca18ccbacd3e2eb73438a3d23b2d7b180ba816040516109309190611104565b60405180910390a150565b610943610b39565b73ffffffffffffffffffffffffffffffffffffffff166109616103ff565b73ffffffffffffffffffffffffffffffffffffffff16146109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90611304565b60405180910390fd5b806003819055507f4513140eaf07003e1df3963cb1ed871f6fc870916d70ef5733bc9a4a84e64827816040516109ed9190611344565b60405180910390a150565b60026020528060005260406000206000915090505481565b60015481565b610a1e610b39565b73ffffffffffffffffffffffffffffffffffffffff16610a3c6103ff565b73ffffffffffffffffffffffffffffffffffffffff1614610a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8990611304565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af990611244565b60405180910390fd5b610b0b81610b41565b50565b7f22133853d7a072629954f16241727e949abde8c7920dd24bda4aaf2261622a8a81565b6205460081565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000610c18610c12610c1f565b83610ce2565b9050919050565b60007f0000000000000000000000000000000000000000000000000000000000000001461415610c71577f02ba0deda8225c420c39f6e2450e30994aeb526ab4a65db0cae9f76e82afe81b9050610cdf565b610cdc7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7fb63978fdaa6c68066db6787db8e0c2ffe834f05e7eb87f67c0ec63c53d6c00d97fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610d15565b90505b90565b60008282604051602001610cf7929190611089565b60405160208183030381529060405280519060200120905092915050565b60008383834630604051602001610d30959493929190611171565b6040516020818303038152906040528051906020012090509392505050565b600081359050610d5e816116fc565b92915050565b600081359050610d7381611713565b92915050565b600081359050610d888161172a565b92915050565b600081359050610d9d81611741565b92915050565b600081359050610db281611758565b92915050565b600060208284031215610dce57610dcd61149f565b5b6000610ddc84828501610d4f565b91505092915050565b600060208284031215610dfb57610dfa61149f565b5b6000610e0984828501610d64565b91505092915050565b600060208284031215610e2857610e2761149f565b5b6000610e3684828501610d8e565b91505092915050565b600080600080600060a08688031215610e5b57610e5a61149f565b5b6000610e6988828901610d8e565b9550506020610e7a88828901610d8e565b9450506040610e8b88828901610da3565b9350506060610e9c88828901610d79565b9250506080610ead88828901610d79565b9150509295509295909350565b610ec3816113d1565b82525050565b610ed2816113e3565b82525050565b610ee1816113ef565b82525050565b610ef8610ef3826113ef565b611466565b82525050565b610f0781611430565b82525050565b6000610f1a601e8361135f565b9150610f25826114a4565b602082019050919050565b6000610f3d60268361135f565b9150610f48826114cd565b604082019050919050565b6000610f60600283611370565b9150610f6b8261151c565b600282019050919050565b6000610f83601f8361135f565b9150610f8e82611545565b602082019050919050565b6000610fa660268361135f565b9150610fb18261156e565b604082019050919050565b6000610fc960308361135f565b9150610fd4826115bd565b604082019050919050565b6000610fec600f8361135f565b9150610ff78261160c565b602082019050919050565b600061100f60248361135f565b915061101a82611635565b604082019050919050565b600061103260208361135f565b915061103d82611684565b602082019050919050565b600061105560228361135f565b9150611060826116ad565b604082019050919050565b61107481611419565b82525050565b61108381611423565b82525050565b600061109482610f53565b91506110a08285610ee7565b6020820191506110b08284610ee7565b6020820191508190509392505050565b60006020820190506110d56000830184610eba565b92915050565b60006040820190506110f06000830185610eba565b6110fd602083018461106b565b9392505050565b60006020820190506111196000830184610ec9565b92915050565b60006020820190506111346000830184610ed8565b92915050565b600060608201905061114f6000830186610ed8565b61115c6020830185610eba565b611169604083018461106b565b949350505050565b600060a0820190506111866000830188610ed8565b6111936020830187610ed8565b6111a06040830186610ed8565b6111ad606083018561106b565b6111ba6080830184610eba565b9695505050505050565b60006080820190506111d96000830187610ed8565b6111e6602083018661107a565b6111f36040830185610ed8565b6112006060830184610ed8565b95945050505050565b600060208201905061121e6000830184610efe565b92915050565b6000602082019050818103600083015261123d81610f0d565b9050919050565b6000602082019050818103600083015261125d81610f30565b9050919050565b6000602082019050818103600083015261127d81610f76565b9050919050565b6000602082019050818103600083015261129d81610f99565b9050919050565b600060208201905081810360008301526112bd81610fbc565b9050919050565b600060208201905081810360008301526112dd81610fdf565b9050919050565b600060208201905081810360008301526112fd81611002565b9050919050565b6000602082019050818103600083015261131d81611025565b9050919050565b6000602082019050818103600083015261133d81611048565b9050919050565b6000602082019050611359600083018461106b565b92915050565b600082825260208201905092915050565b600081905092915050565b600061138682611419565b915061139183611419565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156113c6576113c5611470565b5b828201905092915050565b60006113dc826113f9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061143b82611442565b9050919050565b600061144d82611454565b9050919050565b600061145f826113f9565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b7f54736b2074736b2c206e6f7420746f6f2067726565647920706c656173650000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f4d6178206e756d626572206f6620676976656177617973207265616368656400600082015250565b7f53746f7265206973206e6f74206f70656e656420666f7220676976656177617960008201527f206d696e74730000000000000000000000000000000000000000000000000000602082015250565b7f546865207369676e6174757265206973206e6f742066726f6d2075732c20706c60008201527f6561736520636865636b20616761696e00000000000000000000000000000000602082015250565b7f53746f726520697320636c6f7365640000000000000000000000000000000000600082015250565b7f4d696e7420616d6f756e74206578636565647320616c6c6f636174656420616d60008201527f6f756e7400000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53746f726520697320636c6f73656420666f72206769766561776179206d696e60008201527f7473000000000000000000000000000000000000000000000000000000000000602082015250565b611705816113d1565b811461171057600080fd5b50565b61171c816113e3565b811461172757600080fd5b50565b611733816113ef565b811461173e57600080fd5b50565b61174a81611419565b811461175557600080fd5b50565b61176181611423565b811461176c57600080fd5b5056fea26469706673582212200a884cfd6d79afcd147ea23b5b78fe460220b9c29d602c357e1eb644d047d8b964736f6c63430008070033
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.