ETH Price: $3,444.68 (-2.54%)
Gas: 4 Gwei

Token

Cunning Token (CUNT)
 

Overview

Max Total Supply

512 CUNT

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Filtered by Token Holder
chainlinkgod.eth
Balance
3 CUNT

Value
$0.00
0x190473b3071946df65306989972706a4c006a561
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Cunt

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2020-05-23
*/

pragma solidity ^0.6.0;
// SPDX-License-Identifier: GPL
// https://github.com/xtools-at/cunt

interface IERC20Stripped {
    /**
     * @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 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);
}

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.
     *
     * _Available since v2.4.0._
     */
    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.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        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 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 {
    bool private _notEntered;

    constructor () internal {
        // Storing an initial 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 percetange 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.
        _notEntered = true;
    }

    /**
     * @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(_notEntered, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _notEntered = false;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _notEntered = true;
    }
}

contract ERC20Stripped is IERC20Stripped {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    uint256 private _totalSupply;

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public override virtual returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
}

contract ERC20DetailedStatic is ERC20Stripped {
    string private constant _name = "Cunning Token";
    string private constant _symbol = "CUNT";
    uint8 private constant _decimals = 0;

    /**
     * @dev Returns the name of the token.
     */
    function name() public pure returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
}

contract Cunt is ERC20DetailedStatic, ReentrancyGuard {

    uint256 private constant _claimReward = 4;
    uint256 private constant _claimCap = 2048;
    uint256 private _claimedTokens = 0;
    mapping (address => bool) private _claimers;
    address private _creator;

    /**
     * @dev Constructor. ~1.1M Gas
     */
    constructor() public {
        _creator = msg.sender;
        _mint(msg.sender, 500);
    }

    /**
     * @dev Transfer Override. Mints a Token if balance would drop to zero. ~57k Gas , <62k max. (when minting)
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) nonReentrant public override returns (bool) {
        if (amount == balanceOf(msg.sender)) {
            _mint(msg.sender, 1);
        }
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev Multi Transfer. <20k gas base + 25k/recipient
     *
     * Requirements:
     *
     * - max 96 recipients
     * - the caller must have a balance of at least `amount` times number of recipients.
     */
    function transferMulti(address[] memory recipients, uint256 amount) nonReentrant public returns (bool) {
        require(recipients.length <= 96, "CUNT: max 96 recipients supported");

        uint256 fullAmount = amount.mul(recipients.length);
        require(balanceOf(msg.sender) >= fullAmount, "CUNT: Not enugh tokens");
        if (fullAmount == balanceOf(msg.sender)) {
            _mint(msg.sender, 1);
        }

        uint8 i = 0;
        for (i; i < recipients.length; i++) {
            _transfer(msg.sender, recipients[i], amount);
        }
        return true;
    }

    /**
     * @dev Returns claimed tokens.
     */
    function claimedTokens() public view returns (uint256) {
        return _claimedTokens;
    }

    /**
     * @dev Returns cap for claimed tokens.
     */
    function claimCap() public pure returns (uint256) {
        return _claimCap;
    }

    /**
     * @dev Internal call to claim coins
     *
     * Requirements:
     *
     * - msg.sender must not have claimed CUNT before
     * - _claimedTokens must be <= _claimCap
     *
     */
    function _claim(address account) internal {
        uint256 newClaimedTokens = claimedTokens().add(_claimReward);
        require(newClaimedTokens <= _claimCap, "CUNT: Claim cap reached");
        require(!_claimers[account], "CUNT: Wallet has claimed tokens already");
        _mint(account, _claimReward);
        _claimers[account] = true;
        _claimedTokens = newClaimedTokens;
    }

    /**
     * @dev Call to claim coins. <98k Gas
     */
    function claim() nonReentrant public returns (bool) {
        _claim(msg.sender);
        return true;
    }

    /**
     * @dev Returns the address of the creator (not the owner).
     */
    function creator() public view returns (address) {
        return _creator;
    }

    /**
     * @dev Send some dust to generate new tokens. <63k Gas
     */
    receive() nonReentrant external payable {
        if (msg.value > 0) {
            // transfer ETH to creator
            address(
                uint160(creator())
            ).transfer(msg.value);

            // mint coins depending on donation
            if (msg.value >= 500000000000000 wei) { // 0.00050 ETH
                _mint(msg.sender, uint256(msg.value).div(250000000000000)); // 1 Token per 0.00025 ETH
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"claimedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferMulti","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600060035534801561001557600080fd5b506002805460ff19166001179055600580546001600160a01b0319163390811790915561004d906101f46001600160e01b0361005216565b6101ad565b6001600160a01b0382166100ad576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6100c68160015461014c60201b6108391790919060201c565b6001556001600160a01b038216600090815260208181526040909120546100f691839061083961014c821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000828201838110156101a6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b610d71806101bc6000396000f3fe6080604052600436106100a05760003560e01c8063313ce56711610064578063313ce56714610339578063392d1452146103645780634e71d92d1461037957806370a082311461038e57806395d89b41146103c1578063a9059cbb146103d657610177565b806302d05d3f1461017c57806304f016c9146101ad57806306fdde03146102735780630d92e3e8146102fd57806318160ddd1461032457610177565b366101775760025460ff166100ea576040805162461bcd60e51b815260206004820152601f6024820152600080516020610c68833981519152604482015290519081900360640190fd5b6002805460ff1916905534156101685761010261040f565b6001600160a01b03166108fc349081150290604051600060405180830381858888f1935050505015801561013a573d6000803e3d6000fd5b506601c6bf52634000341061016857610168336101633465e35fa931a00063ffffffff61041e16565b610469565b6002805460ff19166001179055005b600080fd5b34801561018857600080fd5b5061019161040f565b604080516001600160a01b039092168252519081900360200190f35b3480156101b957600080fd5b5061025f600480360360408110156101d057600080fd5b8101906020810181356401000000008111156101eb57600080fd5b8201836020820111156101fd57600080fd5b8035906020019184602083028401116401000000008311171561021f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610559915050565b604080519115158252519081900360200190f35b34801561027f57600080fd5b506102886106c6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102c25781810151838201526020016102aa565b50505050905090810190601f1680156102ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030957600080fd5b506103126106ed565b60408051918252519081900360200190f35b34801561033057600080fd5b506103126106f3565b34801561034557600080fd5b5061034e6106f9565b6040805160ff9092168252519081900360200190f35b34801561037057600080fd5b506103126106fe565b34801561038557600080fd5b5061025f610704565b34801561039a57600080fd5b50610312600480360360208110156103b157600080fd5b50356001600160a01b0316610772565b3480156103cd57600080fd5b5061028861078d565b3480156103e257600080fd5b5061025f600480360360408110156103f957600080fd5b506001600160a01b0381351690602001356107ab565b6005546001600160a01b031690565b600061046083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610893565b90505b92915050565b6001600160a01b0382166104c4576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6001546104d7908263ffffffff61083916565b6001556001600160a01b038216600090815260208190526040902054610503908263ffffffff61083916565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60025460009060ff166105a1576040805162461bcd60e51b815260206004820152601f6024820152600080516020610c68833981519152604482015290519081900360640190fd5b6002805460ff191690558251606010156105ec5760405162461bcd60e51b8152600401808060200182810382526021815260200180610cae6021913960400191505060405180910390fd5b600061060284518461093590919063ffffffff16565b90508061060e33610772565b101561065a576040805162461bcd60e51b815260206004820152601660248201527543554e543a204e6f7420656e75676820746f6b656e7360501b604482015290519081900360640190fd5b61066333610772565b81141561067557610675336001610469565b60005b84518160ff1610156106ad576106a533868360ff168151811061069757fe5b60200260200101518661098e565b600101610678565b6001925050506002805460ff1916600117905592915050565b60408051808201909152600d81526c21bab73734b733902a37b5b2b760991b602082015290565b60035490565b60015490565b600090565b61080090565b60025460009060ff1661074c576040805162461bcd60e51b815260206004820152601f6024820152600080516020610c68833981519152604482015290519081900360640190fd5b6002805460ff1916905561075f33610aea565b5060016002805460ff1916600117905590565b6001600160a01b031660009081526020819052604090205490565b60408051808201909152600481526310d5539560e21b602082015290565b60025460009060ff166107f3576040805162461bcd60e51b815260206004820152601f6024820152600080516020610c68833981519152604482015290519081900360640190fd5b6002805460ff1916905561080633610772565b82141561081857610818336001610469565b61082333848461098e565b5060016002805460ff1916600117905592915050565b600082820183811015610460576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818361091f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108e45781810151838201526020016108cc565b50505050905090810190601f1680156109115780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161092b57fe5b0495945050505050565b60008261094457506000610463565b8282028284828161095157fe5b04146104605760405162461bcd60e51b8152600401808060200182810382526021815260200180610ccf6021913960400191505060405180910390fd5b6001600160a01b0383166109d35760405162461bcd60e51b8152600401808060200182810382526025815260200180610cf06025913960400191505060405180910390fd5b6001600160a01b038216610a185760405162461bcd60e51b8152600401808060200182810382526023815260200180610c456023913960400191505060405180910390fd5b610a5b81604051806060016040528060268152602001610c88602691396001600160a01b038616600090815260208190526040902054919063ffffffff610bea16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610a90908263ffffffff61083916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610b056004610af96106ed565b9063ffffffff61083916565b9050610800811115610b5e576040805162461bcd60e51b815260206004820152601760248201527f43554e543a20436c61696d206361702072656163686564000000000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526004602052604090205460ff1615610bb65760405162461bcd60e51b8152600401808060200182810382526027815260200180610d156027913960400191505060405180910390fd5b610bc1826004610469565b6001600160a01b039091166000908152600460205260409020805460ff19166001179055600355565b60008184841115610c3c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108e45781810151838201526020016108cc565b50505090039056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735265656e7472616e637947756172643a207265656e7472616e742063616c6c0045524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636543554e543a206d617820393620726563697069656e747320737570706f72746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e736665722066726f6d20746865207a65726f206164647265737343554e543a2057616c6c65742068617320636c61696d656420746f6b656e7320616c7265616479a264697066735822122056e144f358c62ff24bdff411510e8dd11c4cef2ef83b3be227a110835b88c3e064736f6c63430006080033

Deployed Bytecode

0x6080604052600436106100a05760003560e01c8063313ce56711610064578063313ce56714610339578063392d1452146103645780634e71d92d1461037957806370a082311461038e57806395d89b41146103c1578063a9059cbb146103d657610177565b806302d05d3f1461017c57806304f016c9146101ad57806306fdde03146102735780630d92e3e8146102fd57806318160ddd1461032457610177565b366101775760025460ff166100ea576040805162461bcd60e51b815260206004820152601f6024820152600080516020610c68833981519152604482015290519081900360640190fd5b6002805460ff1916905534156101685761010261040f565b6001600160a01b03166108fc349081150290604051600060405180830381858888f1935050505015801561013a573d6000803e3d6000fd5b506601c6bf52634000341061016857610168336101633465e35fa931a00063ffffffff61041e16565b610469565b6002805460ff19166001179055005b600080fd5b34801561018857600080fd5b5061019161040f565b604080516001600160a01b039092168252519081900360200190f35b3480156101b957600080fd5b5061025f600480360360408110156101d057600080fd5b8101906020810181356401000000008111156101eb57600080fd5b8201836020820111156101fd57600080fd5b8035906020019184602083028401116401000000008311171561021f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610559915050565b604080519115158252519081900360200190f35b34801561027f57600080fd5b506102886106c6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102c25781810151838201526020016102aa565b50505050905090810190601f1680156102ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030957600080fd5b506103126106ed565b60408051918252519081900360200190f35b34801561033057600080fd5b506103126106f3565b34801561034557600080fd5b5061034e6106f9565b6040805160ff9092168252519081900360200190f35b34801561037057600080fd5b506103126106fe565b34801561038557600080fd5b5061025f610704565b34801561039a57600080fd5b50610312600480360360208110156103b157600080fd5b50356001600160a01b0316610772565b3480156103cd57600080fd5b5061028861078d565b3480156103e257600080fd5b5061025f600480360360408110156103f957600080fd5b506001600160a01b0381351690602001356107ab565b6005546001600160a01b031690565b600061046083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610893565b90505b92915050565b6001600160a01b0382166104c4576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6001546104d7908263ffffffff61083916565b6001556001600160a01b038216600090815260208190526040902054610503908263ffffffff61083916565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60025460009060ff166105a1576040805162461bcd60e51b815260206004820152601f6024820152600080516020610c68833981519152604482015290519081900360640190fd5b6002805460ff191690558251606010156105ec5760405162461bcd60e51b8152600401808060200182810382526021815260200180610cae6021913960400191505060405180910390fd5b600061060284518461093590919063ffffffff16565b90508061060e33610772565b101561065a576040805162461bcd60e51b815260206004820152601660248201527543554e543a204e6f7420656e75676820746f6b656e7360501b604482015290519081900360640190fd5b61066333610772565b81141561067557610675336001610469565b60005b84518160ff1610156106ad576106a533868360ff168151811061069757fe5b60200260200101518661098e565b600101610678565b6001925050506002805460ff1916600117905592915050565b60408051808201909152600d81526c21bab73734b733902a37b5b2b760991b602082015290565b60035490565b60015490565b600090565b61080090565b60025460009060ff1661074c576040805162461bcd60e51b815260206004820152601f6024820152600080516020610c68833981519152604482015290519081900360640190fd5b6002805460ff1916905561075f33610aea565b5060016002805460ff1916600117905590565b6001600160a01b031660009081526020819052604090205490565b60408051808201909152600481526310d5539560e21b602082015290565b60025460009060ff166107f3576040805162461bcd60e51b815260206004820152601f6024820152600080516020610c68833981519152604482015290519081900360640190fd5b6002805460ff1916905561080633610772565b82141561081857610818336001610469565b61082333848461098e565b5060016002805460ff1916600117905592915050565b600082820183811015610460576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818361091f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108e45781810151838201526020016108cc565b50505050905090810190601f1680156109115780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161092b57fe5b0495945050505050565b60008261094457506000610463565b8282028284828161095157fe5b04146104605760405162461bcd60e51b8152600401808060200182810382526021815260200180610ccf6021913960400191505060405180910390fd5b6001600160a01b0383166109d35760405162461bcd60e51b8152600401808060200182810382526025815260200180610cf06025913960400191505060405180910390fd5b6001600160a01b038216610a185760405162461bcd60e51b8152600401808060200182810382526023815260200180610c456023913960400191505060405180910390fd5b610a5b81604051806060016040528060268152602001610c88602691396001600160a01b038616600090815260208190526040902054919063ffffffff610bea16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610a90908263ffffffff61083916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610b056004610af96106ed565b9063ffffffff61083916565b9050610800811115610b5e576040805162461bcd60e51b815260206004820152601760248201527f43554e543a20436c61696d206361702072656163686564000000000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526004602052604090205460ff1615610bb65760405162461bcd60e51b8152600401808060200182810382526027815260200180610d156027913960400191505060405180910390fd5b610bc1826004610469565b6001600160a01b039091166000908152600460205260409020805460ff19166001179055600355565b60008184841115610c3c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108e45781810151838201526020016108cc565b50505090039056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735265656e7472616e637947756172643a207265656e7472616e742063616c6c0045524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636543554e543a206d617820393620726563697069656e747320737570706f72746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e736665722066726f6d20746865207a65726f206164647265737343554e543a2057616c6c65742068617320636c61696d656420746f6b656e7320616c7265616479a264697066735822122056e144f358c62ff24bdff411510e8dd11c4cef2ef83b3be227a110835b88c3e064736f6c63430006080033

Deployed Bytecode Sourcemap

10369:3662:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6371:11;;;;6363:55;;;;;-1:-1:-1;;;6363:55:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6363:55:0;;;;;;;;;;;;;;;6496:11;:19;;-1:-1:-1;;6496:19:0;;;13622:9:::1;:13:::0;13618:403:::1;;13726:9;:7;:9::i;:::-;-1:-1:-1::0;;;;;13692:68:0::1;:79;13761:9;13692:79;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;13692:79:0;13854:19;13841:9;:32;13837:173;;13909:58;13915:10;13927:39;13935:9;13950:15;13927:39;:22;:39;:::i;:::-;13909:5;:58::i;:::-;6676:11:::0;:18;;-1:-1:-1;;6676:18:0;6690:4;6676:18;;;10369:3662;;12:1:-1;9;2:12;13397:83:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13397:83:0;;;:::i;:::-;;;;-1:-1:-1;;;;;13397:83:0;;;;;;;;;;;;;;11603:596;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11603:596:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;11603:596:0;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;11603:596:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;11603:596:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11603:596:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11603:596:0;;-1:-1:-1;;11603:596:0;;;-1:-1:-1;11603:596:0;;-1:-1:-1;;11603:596:0:i;:::-;;;;;;;;;;;;;;;;;;9427:83;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9427:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9427:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12262:95;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12262:95:0;;;:::i;:::-;;;;;;;;;;;;;;;;6941:100;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6941:100:0;;;:::i;10279:83::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10279:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12428:85;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12428:85:0;;;:::i;13195:111::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13195:111:0;;;:::i;7104:119::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7104:119:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7104:119:0;-1:-1:-1;;;;;7104:119:0;;:::i;9629:87::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9629:87:0;;;:::i;11090:272::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11090:272:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;11090:272:0;;;;;;;;:::i;13397:83::-;13464:8;;-1:-1:-1;;;;;13464:8:0;13397:83;:::o;3547:132::-;3605:7;3632:39;3636:1;3639;3632:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3625:46;;3547:132;;;;;:::o;8851:308::-;-1:-1:-1;;;;;8927:21:0;;8919:65;;;;;-1:-1:-1;;;8919:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9012:12;;:24;;9029:6;9012:24;:16;:24;:::i;:::-;8997:12;:39;-1:-1:-1;;;;;9068:18:0;;:9;:18;;;;;;;;;;;:30;;9091:6;9068:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;9047:18:0;;:9;:18;;;;;;;;;;;:51;;;;9114:37;;;;;;;9047:18;;:9;;9114:37;;;;;;;;;;8851:308;;:::o;11603:596::-;6371:11;;11700:4;;6371:11;;6363:55;;;;;-1:-1:-1;;;6363:55:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6363:55:0;;;;;;;;;;;;;;;6496:11;:19;;-1:-1:-1;;6496:19:0;;;11725:17;;11746:2:::1;-1:-1:-1::0;11725:23:0::1;11717:69;;;;-1:-1:-1::0;;;11717:69:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11799:18;11820:29;11831:10;:17;11820:6;:10;;:29;;;;:::i;:::-;11799:50;;11893:10;11868:21;11878:10;11868:9;:21::i;:::-;:35;;11860:70;;;::::0;;-1:-1:-1;;;11860:70:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;11860:70:0;;;;;;;;;;;;;::::1;;11959:21;11969:10;11959:9;:21::i;:::-;11945:10;:35;11941:88;;;11997:20;12003:10;12015:1;11997:5;:20::i;:::-;12041:7;12063:107;12075:10;:17;12071:1;:21;;;12063:107;;;12114:44;12124:10;12136;12147:1;12136:13;;;;;;;;;;;;;;;;12151:6;12114:9;:44::i;:::-;12094:3;;12063:107;;;12187:4;12180:11;;;;6676::::0;:18;;-1:-1:-1;;6676:18:0;6690:4;6676:18;;;11603:596;;-1:-1:-1;;11603:596:0:o;9427:83::-;9497:5;;;;;;;;;;;;-1:-1:-1;;;9497:5:0;;;;9427:83;:::o;12262:95::-;12335:14;;12262:95;:::o;6941:100::-;7021:12;;6941:100;:::o;10279:83::-;10320:5;10279:83;:::o;12428:85::-;10517:4;12428:85;:::o;13195:111::-;6371:11;;13241:4;;6371:11;;6363:55;;;;;-1:-1:-1;;;6363:55:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6363:55:0;;;;;;;;;;;;;;;6496:11;:19;;-1:-1:-1;;6496:19:0;;;13258:18:::1;13265:10;13258:6;:18::i;:::-;-1:-1:-1::0;13294:4:0::1;6676:11:::0;:18;;-1:-1:-1;;6676:18:0;6690:4;6676:18;;;13195:111;:::o;7104:119::-;-1:-1:-1;;;;;7197:18:0;7170:7;7197:18;;;;;;;;;;;;7104:119::o;9629:87::-;9701:7;;;;;;;;;;;;-1:-1:-1;;;9701:7:0;;;;9629:87;:::o;11090:272::-;6371:11;;11181:4;;6371:11;;6363:55;;;;;-1:-1:-1;;;6363:55:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6363:55:0;;;;;;;;;;;;;;;6496:11;:19;;-1:-1:-1;;6496:19:0;;;11212:21:::1;11222:10;11212:9;:21::i;:::-;11202:6;:31;11198:84;;;11250:20;11256:10;11268:1;11250:5;:20::i;:::-;11292:40;11302:10;11314:9;11325:6;11292:9;:40::i;:::-;-1:-1:-1::0;11350:4:0::1;6676:11:::0;:18;;-1:-1:-1;;6676:18:0;6690:4;6676:18;;;11090:272;;-1:-1:-1;;11090:272:0:o;1232:181::-;1290:7;1322:5;;;1346:6;;;;1338:46;;;;;-1:-1:-1;;;1338:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4209:345;4295:7;4397:12;4390:5;4382:28;;;;-1:-1:-1;;;4382:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4382:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4421:9;4437:1;4433;:5;;;;;;;4209:345;-1:-1:-1;;;;;4209:345:0:o;2604:471::-;2662:7;2907:6;2903:47;;-1:-1:-1;2937:1:0;2930:8;;2903:47;2974:5;;;2978:1;2974;:5;:1;2998:5;;;;;:10;2990:56;;;;-1:-1:-1;;;2990:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8099:471;-1:-1:-1;;;;;8197:20:0;;8189:70;;;;-1:-1:-1;;;8189:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8278:23:0;;8270:71;;;;-1:-1:-1;;;8270:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8374;8396:6;8374:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8374:17:0;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;8354:17:0;;;:9;:17;;;;;;;;;;;:91;;;;8479:20;;;;;;;:32;;8504:6;8479:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;8456:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;8527:35;;;;;;;8456:20;;8527:35;;;;;;;;;;;;;8099:471;;;:::o;12728:398::-;12781:24;12808:33;10472:1;12808:15;:13;:15::i;:::-;:19;:33;:19;:33;:::i;:::-;12781:60;;10517:4;12860:16;:29;;12852:65;;;;;-1:-1:-1;;;12852:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12937:18:0;;;;;;:9;:18;;;;;;;;12936:19;12928:71;;;;-1:-1:-1;;;12928:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13010:28;13016:7;10472:1;13010:5;:28::i;:::-;-1:-1:-1;;;;;13049:18:0;;;;;;;:9;:18;;;;;:25;;-1:-1:-1;;13049:25:0;13070:4;13049:25;;;13085:14;:33;12728:398::o;2161:192::-;2247:7;2283:12;2275:6;;;;2267:29;;;;-1:-1:-1;;;2267:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2267:29:0;-1:-1:-1;;;2319:5:0;;;2161:192::o

Swarm Source

ipfs://56e144f358c62ff24bdff411510e8dd11c4cef2ef83b3be227a110835b88c3e0
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.