ETH Price: $3,329.58 (-4.41%)
Gas: 4 Gwei

Token

Drinking Out Of Cups (CUPS)
 

Overview

Max Total Supply

554,461,745,461,508.9264717478 CUPS

Holders

121 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,831,621,902,457.432410573101926237 CUPS

Value
$0.00
0x7860C76B245408586834BBe74024Fb30a84D551B
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

After getting rugged for the 77th time in 30 days, two strangers met in a telegram and decided enough was enough. 'If we can't find a quality token, let's just build it'. And, let's build it around the most iconic video, found deep in the YT archives from 2006. Built on integrity and transparency.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DrinkingOutOfCups

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-12
*/

// File: @openzeppelin/[email protected]/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/[email protected]/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: @openzeppelin/[email protected]/security/Pausable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        _requirePaused();
        _;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

// File: @openzeppelin/[email protected]/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool);
}

// File: @openzeppelin/[email protected]/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File: @openzeppelin/[email protected]/token/ERC20/ERC20.sol


// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override 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. This is the default value returned by this function, unless
     * it's overridden.
     *
     * 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 view virtual override returns (uint8) {
        return 18;
    }

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

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

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

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

// File: @openzeppelin/[email protected]/token/ERC20/extensions/ERC20Burnable.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)

pragma solidity ^0.8.0;



/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

// File: DrinkingOutOfCups.sol


pragma solidity ^0.8.9;





contract DrinkingOutOfCups is ERC20, ERC20Burnable, Pausable, Ownable {
    mapping(address => bool) public blacklists;
    bool public limited;
    uint256 public maxHoldingAmount;
    uint256 public minHoldingAmount;
    address public uniswapV2Pair;

    constructor() ERC20("Drinking Out Of Cups", "CUPS") {
        _mint(msg.sender, 564300000000000 * 10 ** decimals());
    }

    function pause() public onlyOwner {
        _pause();
    }

    function unpause() public onlyOwner {
        _unpause();
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount)
        internal
        whenNotPaused
        override
    {
        require(!blacklists[to] && !blacklists[from], "Blacklisted");

        if (uniswapV2Pair == address(0)) {
            require(from == owner() || to == owner(), "Trading is not started");
            return;
        }

        if (limited && from == uniswapV2Pair) {
            require(super.balanceOf(to) + amount <= maxHoldingAmount && super.balanceOf(to) + amount >= minHoldingAmount, "Forbid");
        }

        super._beforeTokenTransfer(from, to, amount);
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    function setRule(bool _limited, address _uniswapV2Pair, uint256 _maxHoldingAmount, uint256 _minHoldingAmount) external onlyOwner {
        limited = _limited;
        uniswapV2Pair = _uniswapV2Pair;
        maxHoldingAmount = _maxHoldingAmount;
        minHoldingAmount = _minHoldingAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_limited","type":"bool"},{"internalType":"address","name":"_uniswapV2Pair","type":"address"},{"internalType":"uint256","name":"_maxHoldingAmount","type":"uint256"},{"internalType":"uint256","name":"_minHoldingAmount","type":"uint256"}],"name":"setRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280601481526020017f4472696e6b696e67204f7574204f662043757073000000000000000000000000815250604051806040016040528060048152602001634355505360e01b815250816003908162000076919062000522565b50600462000085828262000522565b50506005805460ff19169055506200009d33620000cf565b620000c933620000b06012600a62000703565b620000c3906602013a550bf8006200071b565b62000129565b6200074b565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620001855760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200019360008383620001fe565b8060026000828254620001a7919062000735565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6200020862000419565b6001600160a01b03821660009081526006602052604090205460ff161580156200024b57506001600160a01b03831660009081526006602052604090205460ff16155b620002875760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b60448201526064016200017c565b600a546001600160a01b03166200034b57620002b060055461010090046001600160a01b031690565b6001600160a01b0316836001600160a01b03161480620002f85750620002e360055461010090046001600160a01b031690565b6001600160a01b0316826001600160a01b0316145b620003465760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f7420737461727465640000000000000000000060448201526064016200017c565b505050565b60075460ff1680156200036b5750600a546001600160a01b038481169116145b156200040157600854816200038b846200046360201b620004fd1760201c565b62000397919062000735565b11158015620003ca575060095481620003bb846200046360201b620004fd1760201c565b620003c7919062000735565b10155b620004015760405162461bcd60e51b8152602060048201526006602482015265119bdc989a5960d21b60448201526064016200017c565b620003468383836200034660201b620006911760201c565b60055460ff1615620004615760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016200017c565b565b6001600160a01b031660009081526020819052604090205490565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004a957607f821691505b602082108103620004ca57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034657600081815260208120601f850160051c81016020861015620004f95750805b601f850160051c820191505b818110156200051a5782815560010162000505565b505050505050565b81516001600160401b038111156200053e576200053e6200047e565b62000556816200054f845462000494565b84620004d0565b602080601f8311600181146200058e5760008415620005755750858301515b600019600386901b1c1916600185901b1785556200051a565b600085815260208120601f198616915b82811015620005bf578886015182559484019460019091019084016200059e565b5085821015620005de5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000645578160001904821115620006295762000629620005ee565b808516156200063757918102915b93841c939080029062000609565b509250929050565b6000826200065e57506001620006fd565b816200066d57506000620006fd565b81600181146200068657600281146200069157620006b1565b6001915050620006fd565b60ff841115620006a557620006a5620005ee565b50506001821b620006fd565b5060208310610133831016604e8410600b8410161715620006d6575081810a620006fd565b620006e2838362000604565b8060001904821115620006f957620006f9620005ee565b0290505b92915050565b60006200071460ff8416836200064d565b9392505050565b8082028115828204841417620006fd57620006fd620005ee565b80820180821115620006fd57620006fd620005ee565b6110e3806200075b6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de57806389f9a1d311610097578063a457c2d711610071578063a457c2d71461032a578063a9059cbb1461033d578063dd62ed3e14610350578063f2fde38b1461036357600080fd5b806389f9a1d3146103035780638da5cb5b1461030c57806395d89b411461032257600080fd5b80635c975abb146102b557806370a08231146102c0578063715018a6146102d357806379cc6790146102db5780638456cb59146102ee578063860a32ec146102f657600080fd5b8063313ce5671161014b5780633f4ba83a116101255780633f4ba83a1461025c578063404e51291461026457806342966c681461027757806349bd5a5e1461028a57600080fd5b8063313ce5671461022557806339509351146102345780633aa633aa1461024757600080fd5b806306fdde0314610193578063095ea7b3146101b157806316c02129146101d457806318160ddd146101f75780631ab99e121461020957806323b872dd14610212575b600080fd5b61019b610376565b6040516101a89190610e98565b60405180910390f35b6101c46101bf366004610f02565b610408565b60405190151581526020016101a8565b6101c46101e2366004610f2c565b60066020526000908152604090205460ff1681565b6002545b6040519081526020016101a8565b6101fb60095481565b6101c4610220366004610f4e565b610422565b604051601281526020016101a8565b6101c4610242366004610f02565b610446565b61025a610255366004610f9a565b610468565b005b61025a6104ab565b61025a610272366004610fdc565b6104bd565b61025a61028536600461100f565b6104f0565b600a5461029d906001600160a01b031681565b6040516001600160a01b0390911681526020016101a8565b60055460ff166101c4565b6101fb6102ce366004610f2c565b6104fd565b61025a610518565b61025a6102e9366004610f02565b61052a565b61025a610543565b6007546101c49060ff1681565b6101fb60085481565b60055461010090046001600160a01b031661029d565b61019b610553565b6101c4610338366004610f02565b610562565b6101c461034b366004610f02565b6105e2565b6101fb61035e366004611028565b6105f0565b61025a610371366004610f2c565b61061b565b60606003805461038590611052565b80601f01602080910402602001604051908101604052809291908181526020018280546103b190611052565b80156103fe5780601f106103d3576101008083540402835291602001916103fe565b820191906000526020600020905b8154815290600101906020018083116103e157829003601f168201915b5050505050905090565b600033610416818585610696565b60019150505b92915050565b6000336104308582856107ba565b61043b858585610834565b506001949350505050565b60003361041681858561045983836105f0565b610463919061108c565b610696565b6104706109e3565b6007805460ff191694151594909417909355600a80546001600160a01b0319166001600160a01b039390931692909217909155600855600955565b6104b36109e3565b6104bb610a43565b565b6104c56109e3565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6104fa3382610a95565b50565b6001600160a01b031660009081526020819052604090205490565b6105206109e3565b6104bb6000610bd3565b6105358233836107ba565b61053f8282610a95565b5050565b61054b6109e3565b6104bb610c2d565b60606004805461038590611052565b6000338161057082866105f0565b9050838110156105d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61043b8286868403610696565b600033610416818585610834565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6106236109e3565b6001600160a01b0381166106885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105cc565b6104fa81610bd3565b505050565b6001600160a01b0383166106f85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105cc565b6001600160a01b0382166107595760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105cc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107c684846105f0565b9050600019811461082e57818110156108215760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105cc565b61082e8484848403610696565b50505050565b6001600160a01b0383166108985760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105cc565b6001600160a01b0382166108fa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105cc565b610905838383610c6a565b6001600160a01b0383166000908152602081905260409020548181101561097d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105cc565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361082e565b6005546001600160a01b036101009091041633146104bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105cc565b610a4b610e09565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610af55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105cc565b610b0182600083610c6a565b6001600160a01b03821660009081526020819052604090205481811015610b755760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105cc565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610c35610e52565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610a783390565b610c72610e52565b6001600160a01b03821660009081526006602052604090205460ff16158015610cb457506001600160a01b03831660009081526006602052604090205460ff16155b610cee5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b60448201526064016105cc565b600a546001600160a01b0316610d76576005546001600160a01b03848116610100909204161480610d3157506005546001600160a01b0383811661010090920416145b6106915760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd081cdd185c9d195960521b60448201526064016105cc565b60075460ff168015610d955750600a546001600160a01b038481169116145b156106915760085481610da7846104fd565b610db1919061108c565b11158015610dd4575060095481610dc7846104fd565b610dd1919061108c565b10155b6106915760405162461bcd60e51b8152602060048201526006602482015265119bdc989a5960d21b60448201526064016105cc565b60055460ff166104bb5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105cc565b60055460ff16156104bb5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105cc565b600060208083528351808285015260005b81811015610ec557858101830151858201604001528201610ea9565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610efd57600080fd5b919050565b60008060408385031215610f1557600080fd5b610f1e83610ee6565b946020939093013593505050565b600060208284031215610f3e57600080fd5b610f4782610ee6565b9392505050565b600080600060608486031215610f6357600080fd5b610f6c84610ee6565b9250610f7a60208501610ee6565b9150604084013590509250925092565b80358015158114610efd57600080fd5b60008060008060808587031215610fb057600080fd5b610fb985610f8a565b9350610fc760208601610ee6565b93969395505050506040820135916060013590565b60008060408385031215610fef57600080fd5b610ff883610ee6565b915061100660208401610f8a565b90509250929050565b60006020828403121561102157600080fd5b5035919050565b6000806040838503121561103b57600080fd5b61104483610ee6565b915061100660208401610ee6565b600181811c9082168061106657607f821691505b60208210810361108657634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561041c57634e487b7160e01b600052601160045260246000fdfea26469706673582212205d040012acbcc5d21678af29d9bfdd2b0583159a1ec9f1933885d3ef79a542de64736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de57806389f9a1d311610097578063a457c2d711610071578063a457c2d71461032a578063a9059cbb1461033d578063dd62ed3e14610350578063f2fde38b1461036357600080fd5b806389f9a1d3146103035780638da5cb5b1461030c57806395d89b411461032257600080fd5b80635c975abb146102b557806370a08231146102c0578063715018a6146102d357806379cc6790146102db5780638456cb59146102ee578063860a32ec146102f657600080fd5b8063313ce5671161014b5780633f4ba83a116101255780633f4ba83a1461025c578063404e51291461026457806342966c681461027757806349bd5a5e1461028a57600080fd5b8063313ce5671461022557806339509351146102345780633aa633aa1461024757600080fd5b806306fdde0314610193578063095ea7b3146101b157806316c02129146101d457806318160ddd146101f75780631ab99e121461020957806323b872dd14610212575b600080fd5b61019b610376565b6040516101a89190610e98565b60405180910390f35b6101c46101bf366004610f02565b610408565b60405190151581526020016101a8565b6101c46101e2366004610f2c565b60066020526000908152604090205460ff1681565b6002545b6040519081526020016101a8565b6101fb60095481565b6101c4610220366004610f4e565b610422565b604051601281526020016101a8565b6101c4610242366004610f02565b610446565b61025a610255366004610f9a565b610468565b005b61025a6104ab565b61025a610272366004610fdc565b6104bd565b61025a61028536600461100f565b6104f0565b600a5461029d906001600160a01b031681565b6040516001600160a01b0390911681526020016101a8565b60055460ff166101c4565b6101fb6102ce366004610f2c565b6104fd565b61025a610518565b61025a6102e9366004610f02565b61052a565b61025a610543565b6007546101c49060ff1681565b6101fb60085481565b60055461010090046001600160a01b031661029d565b61019b610553565b6101c4610338366004610f02565b610562565b6101c461034b366004610f02565b6105e2565b6101fb61035e366004611028565b6105f0565b61025a610371366004610f2c565b61061b565b60606003805461038590611052565b80601f01602080910402602001604051908101604052809291908181526020018280546103b190611052565b80156103fe5780601f106103d3576101008083540402835291602001916103fe565b820191906000526020600020905b8154815290600101906020018083116103e157829003601f168201915b5050505050905090565b600033610416818585610696565b60019150505b92915050565b6000336104308582856107ba565b61043b858585610834565b506001949350505050565b60003361041681858561045983836105f0565b610463919061108c565b610696565b6104706109e3565b6007805460ff191694151594909417909355600a80546001600160a01b0319166001600160a01b039390931692909217909155600855600955565b6104b36109e3565b6104bb610a43565b565b6104c56109e3565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6104fa3382610a95565b50565b6001600160a01b031660009081526020819052604090205490565b6105206109e3565b6104bb6000610bd3565b6105358233836107ba565b61053f8282610a95565b5050565b61054b6109e3565b6104bb610c2d565b60606004805461038590611052565b6000338161057082866105f0565b9050838110156105d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61043b8286868403610696565b600033610416818585610834565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6106236109e3565b6001600160a01b0381166106885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105cc565b6104fa81610bd3565b505050565b6001600160a01b0383166106f85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105cc565b6001600160a01b0382166107595760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105cc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107c684846105f0565b9050600019811461082e57818110156108215760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105cc565b61082e8484848403610696565b50505050565b6001600160a01b0383166108985760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105cc565b6001600160a01b0382166108fa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105cc565b610905838383610c6a565b6001600160a01b0383166000908152602081905260409020548181101561097d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105cc565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361082e565b6005546001600160a01b036101009091041633146104bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105cc565b610a4b610e09565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610af55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105cc565b610b0182600083610c6a565b6001600160a01b03821660009081526020819052604090205481811015610b755760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105cc565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610c35610e52565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610a783390565b610c72610e52565b6001600160a01b03821660009081526006602052604090205460ff16158015610cb457506001600160a01b03831660009081526006602052604090205460ff16155b610cee5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b60448201526064016105cc565b600a546001600160a01b0316610d76576005546001600160a01b03848116610100909204161480610d3157506005546001600160a01b0383811661010090920416145b6106915760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd081cdd185c9d195960521b60448201526064016105cc565b60075460ff168015610d955750600a546001600160a01b038481169116145b156106915760085481610da7846104fd565b610db1919061108c565b11158015610dd4575060095481610dc7846104fd565b610dd1919061108c565b10155b6106915760405162461bcd60e51b8152602060048201526006602482015265119bdc989a5960d21b60448201526064016105cc565b60055460ff166104bb5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105cc565b60055460ff16156104bb5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105cc565b600060208083528351808285015260005b81811015610ec557858101830151858201604001528201610ea9565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610efd57600080fd5b919050565b60008060408385031215610f1557600080fd5b610f1e83610ee6565b946020939093013593505050565b600060208284031215610f3e57600080fd5b610f4782610ee6565b9392505050565b600080600060608486031215610f6357600080fd5b610f6c84610ee6565b9250610f7a60208501610ee6565b9150604084013590509250925092565b80358015158114610efd57600080fd5b60008060008060808587031215610fb057600080fd5b610fb985610f8a565b9350610fc760208601610ee6565b93969395505050506040820135916060013590565b60008060408385031215610fef57600080fd5b610ff883610ee6565b915061100660208401610f8a565b90509250929050565b60006020828403121561102157600080fd5b5035919050565b6000806040838503121561103b57600080fd5b61104483610ee6565b915061100660208401610ee6565b600181811c9082168061106657607f821691505b60208210810361108657634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561041c57634e487b7160e01b600052601160045260246000fdfea26469706673582212205d040012acbcc5d21678af29d9bfdd2b0583159a1ec9f1933885d3ef79a542de64736f6c63430008120033

Deployed Bytecode Sourcemap

24239:1622:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12005:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14365:201;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;14365:201:0;1004:187:1;24316:42:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13134:108;13222:12;;13134:108;;;1533:25:1;;;1521:2;1506:18;13134:108:0;1387:177:1;24429:31:0;;;;;;15146:261;;;;;;:::i;:::-;;:::i;12976:93::-;;;13059:2;2044:36:1;;2032:2;2017:18;12976:93:0;1902:184:1;15816:238:0;;;;;;:::i;:::-;;:::i;25557:301::-;;;;;;:::i;:::-;;:::i;:::-;;24705:65;;;:::i;25414:135::-;;;;;;:::i;:::-;;:::i;23587:91::-;;;;;;:::i;:::-;;:::i;24467:28::-;;;;;-1:-1:-1;;;;;24467:28:0;;;;;;-1:-1:-1;;;;;3260:32:1;;;3242:51;;3230:2;3215:18;24467:28:0;3096:203:1;5277:86:0;5348:7;;;;5277:86;;13305:127;;;;;;:::i;:::-;;:::i;2781:103::-;;;:::i;23997:164::-;;;;;;:::i;:::-;;:::i;24636:61::-;;;:::i;24365:19::-;;;;;;;;;24391:31;;;;;;2140:87;2213:6;;;;;-1:-1:-1;;;;;2213:6:0;2140:87;;12224:104;;;:::i;16557:436::-;;;;;;:::i;:::-;;:::i;13638:193::-;;;;;;:::i;:::-;;:::i;13894:151::-;;;;;;:::i;:::-;;:::i;3039:201::-;;;;;;:::i;:::-;;:::i;12005:100::-;12059:13;12092:5;12085:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12005:100;:::o;14365:201::-;14448:4;765:10;14504:32;765:10;14520:7;14529:6;14504:8;:32::i;:::-;14554:4;14547:11;;;14365:201;;;;;:::o;15146:261::-;15243:4;765:10;15301:38;15317:4;765:10;15332:6;15301:15;:38::i;:::-;15350:27;15360:4;15366:2;15370:6;15350:9;:27::i;:::-;-1:-1:-1;15395:4:0;;15146:261;-1:-1:-1;;;;15146:261:0:o;15816:238::-;15904:4;765:10;15960:64;765:10;15976:7;16013:10;15985:25;765:10;15976:7;15985:9;:25::i;:::-;:38;;;;:::i;:::-;15960:8;:64::i;25557:301::-;2026:13;:11;:13::i;:::-;25697:7:::1;:18:::0;;-1:-1:-1;;25697:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;25726:13:::1;:30:::0;;-1:-1:-1;;;;;;25726:30:0::1;-1:-1:-1::0;;;;;25726:30:0;;;::::1;::::0;;;::::1;::::0;;;25767:16:::1;:36:::0;25814:16:::1;:36:::0;25557:301::o;24705:65::-;2026:13;:11;:13::i;:::-;24752:10:::1;:8;:10::i;:::-;24705:65::o:0;25414:135::-;2026:13;:11;:13::i;:::-;-1:-1:-1;;;;;25503:20:0;;;::::1;;::::0;;;:10:::1;:20;::::0;;;;:38;;-1:-1:-1;;25503:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25414:135::o;23587:91::-;23643:27;765:10;23663:6;23643:5;:27::i;:::-;23587:91;:::o;13305:127::-;-1:-1:-1;;;;;13406:18:0;13379:7;13406:18;;;;;;;;;;;;13305:127::o;2781:103::-;2026:13;:11;:13::i;:::-;2846:30:::1;2873:1;2846:18;:30::i;23997:164::-:0;24074:46;24090:7;765:10;24113:6;24074:15;:46::i;:::-;24131:22;24137:7;24146:6;24131:5;:22::i;:::-;23997:164;;:::o;24636:61::-;2026:13;:11;:13::i;:::-;24681:8:::1;:6;:8::i;12224:104::-:0;12280:13;12313:7;12306:14;;;;;:::i;16557:436::-;16650:4;765:10;16650:4;16733:25;765:10;16750:7;16733:9;:25::i;:::-;16706:52;;16797:15;16777:16;:35;;16769:85;;;;-1:-1:-1;;;16769:85:0;;4383:2:1;16769:85:0;;;4365:21:1;4422:2;4402:18;;;4395:30;4461:34;4441:18;;;4434:62;-1:-1:-1;;;4512:18:1;;;4505:35;4557:19;;16769:85:0;;;;;;;;;16890:60;16899:5;16906:7;16934:15;16915:16;:34;16890:8;:60::i;13638:193::-;13717:4;765:10;13773:28;765:10;13790:2;13794:6;13773:9;:28::i;13894:151::-;-1:-1:-1;;;;;14010:18:0;;;13983:7;14010:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13894:151::o;3039:201::-;2026:13;:11;:13::i;:::-;-1:-1:-1;;;;;3128:22:0;::::1;3120:73;;;::::0;-1:-1:-1;;;3120:73:0;;4789:2:1;3120:73:0::1;::::0;::::1;4771:21:1::0;4828:2;4808:18;;;4801:30;4867:34;4847:18;;;4840:62;-1:-1:-1;;;4918:18:1;;;4911:36;4964:19;;3120:73:0::1;4587:402:1::0;3120:73:0::1;3204:28;3223:8;3204:18;:28::i;22206:91::-:0;;;;:::o;20550:346::-;-1:-1:-1;;;;;20652:19:0;;20644:68;;;;-1:-1:-1;;;20644:68:0;;5196:2:1;20644:68:0;;;5178:21:1;5235:2;5215:18;;;5208:30;5274:34;5254:18;;;5247:62;-1:-1:-1;;;5325:18:1;;;5318:34;5369:19;;20644:68:0;4994:400:1;20644:68:0;-1:-1:-1;;;;;20731:21:0;;20723:68;;;;-1:-1:-1;;;20723:68:0;;5601:2:1;20723:68:0;;;5583:21:1;5640:2;5620:18;;;5613:30;5679:34;5659:18;;;5652:62;-1:-1:-1;;;5730:18:1;;;5723:32;5772:19;;20723:68:0;5399:398:1;20723:68:0;-1:-1:-1;;;;;20804:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20856:32;;1533:25:1;;;20856:32:0;;1506:18:1;20856:32:0;;;;;;;20550:346;;;:::o;21187:419::-;21288:24;21315:25;21325:5;21332:7;21315:9;:25::i;:::-;21288:52;;-1:-1:-1;;21355:16:0;:37;21351:248;;21437:6;21417:16;:26;;21409:68;;;;-1:-1:-1;;;21409:68:0;;6004:2:1;21409:68:0;;;5986:21:1;6043:2;6023:18;;;6016:30;6082:31;6062:18;;;6055:59;6131:18;;21409:68:0;5802:353:1;21409:68:0;21521:51;21530:5;21537:7;21565:6;21546:16;:25;21521:8;:51::i;:::-;21277:329;21187:419;;;:::o;17463:806::-;-1:-1:-1;;;;;17560:18:0;;17552:68;;;;-1:-1:-1;;;17552:68:0;;6362:2:1;17552:68:0;;;6344:21:1;6401:2;6381:18;;;6374:30;6440:34;6420:18;;;6413:62;-1:-1:-1;;;6491:18:1;;;6484:35;6536:19;;17552:68:0;6160:401:1;17552:68:0;-1:-1:-1;;;;;17639:16:0;;17631:64;;;;-1:-1:-1;;;17631:64:0;;6768:2:1;17631:64:0;;;6750:21:1;6807:2;6787:18;;;6780:30;6846:34;6826:18;;;6819:62;-1:-1:-1;;;6897:18:1;;;6890:33;6940:19;;17631:64:0;6566:399:1;17631:64:0;17708:38;17729:4;17735:2;17739:6;17708:20;:38::i;:::-;-1:-1:-1;;;;;17781:15:0;;17759:19;17781:15;;;;;;;;;;;17815:21;;;;17807:72;;;;-1:-1:-1;;;17807:72:0;;7172:2:1;17807:72:0;;;7154:21:1;7211:2;7191:18;;;7184:30;7250:34;7230:18;;;7223:62;-1:-1:-1;;;7301:18:1;;;7294:36;7347:19;;17807:72:0;6970:402:1;17807:72:0;-1:-1:-1;;;;;17915:15:0;;;:9;:15;;;;;;;;;;;17933:20;;;17915:38;;18133:13;;;;;;;;;;:23;;;;;;18185:26;;1533:25:1;;;18133:13:0;;18185:26;;1506:18:1;18185:26:0;;;;;;;18224:37;22206:91;2305:132;2213:6;;-1:-1:-1;;;;;2213:6:0;;;;;765:10;2369:23;2361:68;;;;-1:-1:-1;;;2361:68:0;;7579:2:1;2361:68:0;;;7561:21:1;;;7598:18;;;7591:30;7657:34;7637:18;;;7630:62;7709:18;;2361:68:0;7377:356:1;6132:120:0;5141:16;:14;:16::i;:::-;6191:7:::1;:15:::0;;-1:-1:-1;;6191:15:0::1;::::0;;6222:22:::1;765:10:::0;6231:12:::1;6222:22;::::0;-1:-1:-1;;;;;3260:32:1;;;3242:51;;3230:2;3215:18;6222:22:0::1;;;;;;;6132:120::o:0;19437:675::-;-1:-1:-1;;;;;19521:21:0;;19513:67;;;;-1:-1:-1;;;19513:67:0;;7940:2:1;19513:67:0;;;7922:21:1;7979:2;7959:18;;;7952:30;8018:34;7998:18;;;7991:62;-1:-1:-1;;;8069:18:1;;;8062:31;8110:19;;19513:67:0;7738:397:1;19513:67:0;19593:49;19614:7;19631:1;19635:6;19593:20;:49::i;:::-;-1:-1:-1;;;;;19680:18:0;;19655:22;19680:18;;;;;;;;;;;19717:24;;;;19709:71;;;;-1:-1:-1;;;19709:71:0;;8342:2:1;19709:71:0;;;8324:21:1;8381:2;8361:18;;;8354:30;8420:34;8400:18;;;8393:62;-1:-1:-1;;;8471:18:1;;;8464:32;8513:19;;19709:71:0;8140:398:1;19709:71:0;-1:-1:-1;;;;;19816:18:0;;:9;:18;;;;;;;;;;;19837:23;;;19816:44;;19955:12;:22;;;;;;;20006:37;1533:25:1;;;19816:9:0;;:18;20006:37;;1506:18:1;20006:37:0;;;;;;;22206:91;;;:::o;3400:191::-;3493:6;;;-1:-1:-1;;;;;3510:17:0;;;3493:6;3510:17;;;-1:-1:-1;;;;;;3510:17:0;;;;;;3543:40;;3493:6;;;;;;;;3543:40;;3474:16;;3543:40;3463:128;3400:191;:::o;5873:118::-;4882:19;:17;:19::i;:::-;5933:7:::1;:14:::0;;-1:-1:-1;;5933:14:0::1;5943:4;5933:14;::::0;;5963:20:::1;5970:12;765:10:::0;;685:98;24778:628;4882:19;:17;:19::i;:::-;-1:-1:-1;;;;;24934:14:0;::::1;;::::0;;;:10:::1;:14;::::0;;;;;::::1;;24933:15;:36:::0;::::1;;;-1:-1:-1::0;;;;;;24953:16:0;::::1;;::::0;;;:10:::1;:16;::::0;;;;;::::1;;24952:17;24933:36;24925:60;;;::::0;-1:-1:-1;;;24925:60:0;;8745:2:1;24925:60:0::1;::::0;::::1;8727:21:1::0;8784:2;8764:18;;;8757:30;-1:-1:-1;;;8803:18:1;;;8796:41;8854:18;;24925:60:0::1;8543:335:1::0;24925:60:0::1;25002:13;::::0;-1:-1:-1;;;;;25002:13:0::1;24998:148;;2213:6:::0;;-1:-1:-1;;;;;25054:15:0;;::::1;2213:6:::0;;;;;25054:15:::1;::::0;:32:::1;;-1:-1:-1::0;2213:6:0;;-1:-1:-1;;;;;25073:13:0;;::::1;2213:6:::0;;;;;25073:13:::1;25054:32;25046:67;;;::::0;-1:-1:-1;;;25046:67:0;;9085:2:1;25046:67:0::1;::::0;::::1;9067:21:1::0;9124:2;9104:18;;;9097:30;-1:-1:-1;;;9143:18:1;;;9136:52;9205:18;;25046:67:0::1;8883:346:1::0;24998:148:0::1;25162:7;::::0;::::1;;:32:::0;::::1;;;-1:-1:-1::0;25181:13:0::1;::::0;-1:-1:-1;;;;;25173:21:0;;::::1;25181:13:::0;::::1;25173:21;25162:32;25158:184;;;25251:16;;25241:6;25219:19;25235:2;25219:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;:100;;;;;25303:16;;25293:6;25271:19;25287:2;25271:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;25219:100;25211:119;;;::::0;-1:-1:-1;;;25211:119:0;;9436:2:1;25211:119:0::1;::::0;::::1;9418:21:1::0;9475:1;9455:18;;;9448:29;-1:-1:-1;;;9493:18:1;;;9486:36;9539:18;;25211:119:0::1;9234:329:1::0;5621:108:0;5348:7;;;;5680:41;;;;-1:-1:-1;;;5680:41:0;;9770:2:1;5680:41:0;;;9752:21:1;9809:2;9789:18;;;9782:30;-1:-1:-1;;;9828:18:1;;;9821:50;9888:18;;5680:41:0;9568:344:1;5436:108:0;5348:7;;;;5506:9;5498:38;;;;-1:-1:-1;;;5498:38:0;;10119:2:1;5498:38:0;;;10101:21:1;10158:2;10138:18;;;10131:30;-1:-1:-1;;;10177:18:1;;;10170:46;10233:18;;5498:38:0;9917:340:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1196:186::-;1255:6;1308:2;1296:9;1287:7;1283:23;1279:32;1276:52;;;1324:1;1321;1314:12;1276:52;1347:29;1366:9;1347:29;:::i;:::-;1337:39;1196:186;-1:-1:-1;;;1196:186:1:o;1569:328::-;1646:6;1654;1662;1715:2;1703:9;1694:7;1690:23;1686:32;1683:52;;;1731:1;1728;1721:12;1683:52;1754:29;1773:9;1754:29;:::i;:::-;1744:39;;1802:38;1836:2;1825:9;1821:18;1802:38;:::i;:::-;1792:48;;1887:2;1876:9;1872:18;1859:32;1849:42;;1569:328;;;;;:::o;2091:160::-;2156:20;;2212:13;;2205:21;2195:32;;2185:60;;2241:1;2238;2231:12;2256:391;2339:6;2347;2355;2363;2416:3;2404:9;2395:7;2391:23;2387:33;2384:53;;;2433:1;2430;2423:12;2384:53;2456:26;2472:9;2456:26;:::i;:::-;2446:36;;2501:38;2535:2;2524:9;2520:18;2501:38;:::i;:::-;2256:391;;2491:48;;-1:-1:-1;;;;2586:2:1;2571:18;;2558:32;;2637:2;2622:18;2609:32;;2256:391::o;2652:254::-;2717:6;2725;2778:2;2766:9;2757:7;2753:23;2749:32;2746:52;;;2794:1;2791;2784:12;2746:52;2817:29;2836:9;2817:29;:::i;:::-;2807:39;;2865:35;2896:2;2885:9;2881:18;2865:35;:::i;:::-;2855:45;;2652:254;;;;;:::o;2911:180::-;2970:6;3023:2;3011:9;3002:7;2998:23;2994:32;2991:52;;;3039:1;3036;3029:12;2991:52;-1:-1:-1;3062:23:1;;2911:180;-1:-1:-1;2911:180:1:o;3304:260::-;3372:6;3380;3433:2;3421:9;3412:7;3408:23;3404:32;3401:52;;;3449:1;3446;3439:12;3401:52;3472:29;3491:9;3472:29;:::i;:::-;3462:39;;3520:38;3554:2;3543:9;3539:18;3520:38;:::i;3569:380::-;3648:1;3644:12;;;;3691;;;3712:61;;3766:4;3758:6;3754:17;3744:27;;3712:61;3819:2;3811:6;3808:14;3788:18;3785:38;3782:161;;3865:10;3860:3;3856:20;3853:1;3846:31;3900:4;3897:1;3890:15;3928:4;3925:1;3918:15;3782:161;;3569:380;;;:::o;3954:222::-;4019:9;;;4040:10;;;4037:133;;;4092:10;4087:3;4083:20;4080:1;4073:31;4127:4;4124:1;4117:15;4155:4;4152:1;4145:15

Swarm Source

ipfs://5d040012acbcc5d21678af29d9bfdd2b0583159a1ec9f1933885d3ef79a542de
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.