ETH Price: $2,408.32 (-0.46%)

Contract

0xEdA43FA2F35EA174a7E9b73658b18a7dA00ADf38
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Namx (NAMX) (@$0.6411)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer From206534102024-09-01 4:44:1114 days ago1725165851IN
Namx: NAMX Token
0 ETH0.000030090.64815306
Approve206534092024-09-01 4:43:5914 days ago1725165839IN
Namx: NAMX Token
0 ETH0.000030480.65772943
Transfer206533732024-09-01 4:36:4714 days ago1725165407IN
Namx: NAMX Token
0 ETH0.000091921.65135113
Approve205488532024-08-17 14:10:2329 days ago1723903823IN
Namx: NAMX Token
0 ETH0.000056072.10366949
Approve205488502024-08-17 14:09:4729 days ago1723903787IN
Namx: NAMX Token
0 ETH0.000097642.09734227
Approve205488272024-08-17 14:05:1129 days ago1723903511IN
Namx: NAMX Token
0 ETH0.000106072.27534826
Approve205487012024-08-17 13:39:5929 days ago1723901999IN
Namx: NAMX Token
0 ETH0.00006741.44597133
Approve204102252024-07-29 5:48:2348 days ago1722232103IN
Namx: NAMX Token
0 ETH0.00004631
Transfer203759262024-07-24 10:52:3553 days ago1721818355IN
Namx: NAMX Token
0 ETH0.000197323.54487364
Approve202975682024-07-13 12:24:3564 days ago1720873475IN
Namx: NAMX Token
0 ETH0.000096612.07258914
Transfer202889082024-07-12 7:23:5965 days ago1720769039IN
Namx: NAMX Token
0 ETH0.000137783.36235392
Transfer202889082024-07-12 7:23:5965 days ago1720769039IN
Namx: NAMX Token
0 ETH0.000137783.36235392
Transfer202889082024-07-12 7:23:5965 days ago1720769039IN
Namx: NAMX Token
0 ETH0.000137783.36235392
Transfer202889072024-07-12 7:23:4765 days ago1720769027IN
Namx: NAMX Token
0 ETH0.000137823.36235392
Transfer202889072024-07-12 7:23:4765 days ago1720769027IN
Namx: NAMX Token
0 ETH0.000137823.36235392
Transfer202889062024-07-12 7:23:3565 days ago1720769015IN
Namx: NAMX Token
0 ETH0.000144513.52740267
Transfer202877472024-07-12 3:29:2365 days ago1720754963IN
Namx: NAMX Token
0 ETH0.000106172.59154048
Approve198577492024-05-13 1:14:35125 days ago1715562875IN
Namx: NAMX Token
0 ETH0.000076823.16471779
Approve198577442024-05-13 1:13:35125 days ago1715562815IN
Namx: NAMX Token
0 ETH0.000091713.76910314
Approve195655562024-04-02 3:52:11166 days ago1712029931IN
Namx: NAMX Token
0 ETH0.0004571118.83133745
Transfer192931932024-02-23 22:12:47204 days ago1708726367IN
Namx: NAMX Token
0 ETH0.0015111827.13658049
Approve192748332024-02-21 8:25:11207 days ago1708503911IN
Namx: NAMX Token
0 ETH0.0013946729.95572399
Transfer From191586692024-02-05 1:00:59223 days ago1707094859IN
Namx: NAMX Token
0 ETH0.0007892417
Approve191586682024-02-05 1:00:47223 days ago1707094847IN
Namx: NAMX Token
0 ETH0.0007416616
Transfer191586222024-02-05 0:51:35223 days ago1707094295IN
Namx: NAMX Token
0 ETH0.0007672613.78386904
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NAMX

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-29
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)


/**
 * @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/contracts/access/Ownable.sol
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _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 anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

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

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

/**
 * @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/contracts/token/ERC20/extensions/IERC20Metadata.sol
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)


/**
 * @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/contracts/token/ERC20/ERC20.sol
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)


/**
 * @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].
 *
 * 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}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * 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 value {ERC20} uses, unless this function is
     * 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/contracts/token/ERC20/extensions/ERC20Burnable.sol
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)

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

interface IUniswapV2Factory {

    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02  {
  
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}


contract NAMX is ERC20, ERC20Burnable,  Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    mapping (address => bool) public isExcludedFromLimits;
    mapping (address => bool) public automatedMarketMakerPairs;

    uint256 public maxTxAmount;
    uint256 public maxWalletAmount;

    address public routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    event UpdateUniswapV2Router(address indexed newAddress);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor() ERC20("Namx", "NAMX") {
        maxTxAmount = 24_000_000 * 10 ** decimals(); // 1% of total supply
        maxWalletAmount = 48_000_000 * 10 ** decimals(); // 2% of total supply

        _updateUniswapV2Router(routerAddress);
        excludeFromLimits(owner(), true);
        excludeFromLimits(address(this), true);
        excludeFromLimits(address(0x0), true);
        excludeFromLimits(address(0xdead), true);

        _mint(owner(), 2_400_000_000 * 10 ** decimals());
    }

    function _updateUniswapV2Router(address newAddress) internal {
        uniswapV2Router = IUniswapV2Router02(newAddress);
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
        .createPair(address(this), uniswapV2Router.WETH());

        excludeFromLimits(newAddress, true);

        uniswapV2Pair = _uniswapV2Pair;
        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        emit UpdateUniswapV2Router(newAddress);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "NameX: The uniswapV2pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(
            automatedMarketMakerPairs[pair] != value,
            "NameX: Automated market maker pair is already set to that value"
        );
        automatedMarketMakerPairs[pair] = value;

        if (value) {
            excludeFromLimits(pair, true);
        }

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    
    function changeMaxTxAmount(uint256 amount) public onlyOwner {
        require (amount >= totalSupply() / 200,"max tx amount can't be lower than 0.5% of the supply");
        maxTxAmount = amount;
    }

    function changeMaxWalletAmount(uint256 amount) public onlyOwner {
        require (amount >= totalSupply() / 100, "max Wallet amount must be greator than 1% of the supply");
        maxWalletAmount = amount;
    }

    function excludeFromLimits(address account, bool excluded) public onlyOwner {
        isExcludedFromLimits[account] = excluded;
    }

    function claimStuckedERC20 (address token, uint256 amount) external onlyOwner {
        IERC20(token).transfer(owner(), amount);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount)
        internal
        override
    {

       /// maxTx applicable to transfers only, not buy/sell
        if (!isExcludedFromLimits[from] || (automatedMarketMakerPairs[from] && !isExcludedFromLimits[to])) {
            require(amount <= maxTxAmount, "Anti-whale: Transfer amount exceeds max limit");
        }

        /// maxWallet applicable to all user except who are not excluded from limits
        if (!isExcludedFromLimits[to]) {
            require(balanceOf(to) + amount <= maxWalletAmount, "Anti-whale: Wallet exceeds maxWallet limit");
        }

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

}

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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"UpdateUniswapV2Router","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"changeMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"changeMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimStuckedERC20","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":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromLimits","outputs":[],"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":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","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":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6080604052600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790553480156200003757600080fd5b506040518060400160405280600481526020016309cc2daf60e31b8152506040518060400160405280600481526020016309c829ab60e31b815250816003908162000083919062000895565b50600462000092828262000895565b505050620000af620000a96200019360201b60201c565b62000197565b620000bd6012600a62000a76565b620000cd9063016e360062000a8e565b600a556012620000df90600a62000a76565b620000ef906302dc6c0062000a8e565b600b55600c5462000109906001600160a01b0316620001e9565b62000128620001206005546001600160a01b031690565b6001620003d8565b62000135306001620003d8565b6200014360006001620003d8565b6200015261dead6001620003d8565b6200018d620001696005546001600160a01b031690565b620001776012600a62000a76565b6200018790638f0d180062000a8e565b6200040d565b62000ae9565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000aa8565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000aa8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000343573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000369919062000aa8565b905062000378826001620003d8565b600780546001600160a01b0319166001600160a01b038316179055620003a0816001620004e2565b6040516001600160a01b038316907f0c36f1f3a0f38cd9563b52fb110cc5b0fa22c509defc16728a6a42f1bddad22990600090a25050565b620003e2620005f1565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6001600160a01b038216620004695760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b62000477600083836200064f565b80600260008282546200048b919062000ad3565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03821660009081526009602052604090205481151560ff9091161515036200057a5760405162461bcd60e51b815260206004820152603f60248201527f4e616d65583a204175746f6d61746564206d61726b6574206d616b657220706160448201527f697220697320616c72656164792073657420746f20746861742076616c756500606482015260840162000460565b6001600160a01b0382166000908152600960205260409020805460ff19168215801591909117909155620005b557620005b5826001620003d8565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b031633146200064d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000460565b565b6001600160a01b03831660009081526008602052604090205460ff161580620006b557506001600160a01b03831660009081526009602052604090205460ff168015620006b557506001600160a01b03821660009081526008602052604090205460ff16155b156200072557600a54811115620007255760405162461bcd60e51b815260206004820152602d60248201527f416e74692d7768616c653a205472616e7366657220616d6f756e74206578636560448201526c19591cc81b585e081b1a5b5a5d609a1b606482015260840162000460565b6001600160a01b03821660009081526008602052604090205460ff16620007d957600b54816200076a846001600160a01b031660009081526020819052604090205490565b62000776919062000ad3565b1115620007d95760405162461bcd60e51b815260206004820152602a60248201527f416e74692d7768616c653a2057616c6c65742065786365656473206d617857616044820152691b1b195d081b1a5b5a5d60b21b606482015260840162000460565b620007ec8383836001600160e01b038416565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200081c57607f821691505b6020821081036200083d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007ec57600081815260208120601f850160051c810160208610156200086c5750805b601f850160051c820191505b818110156200088d5782815560010162000878565b505050505050565b81516001600160401b03811115620008b157620008b1620007f1565b620008c981620008c2845462000807565b8462000843565b602080601f831160018114620009015760008415620008e85750858301515b600019600386901b1c1916600185901b1785556200088d565b600085815260208120601f198616915b82811015620009325788860151825594840194600190910190840162000911565b5085821015620009515787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009b85781600019048211156200099c576200099c62000961565b80851615620009aa57918102915b93841c93908002906200097c565b509250929050565b600082620009d15750600162000a70565b81620009e05750600062000a70565b8160018114620009f9576002811462000a045762000a24565b600191505062000a70565b60ff84111562000a185762000a1862000961565b50506001821b62000a70565b5060208310610133831016604e8410600b841016171562000a49575081810a62000a70565b62000a55838362000977565b806000190482111562000a6c5762000a6c62000961565b0290505b92915050565b600062000a8760ff841683620009c0565b9392505050565b808202811582820484141762000a705762000a7062000961565b60006020828403121562000abb57600080fd5b81516001600160a01b038116811462000a8757600080fd5b8082018082111562000a705762000a7062000961565b6113338062000af96000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806379cc6790116100f9578063a457c2d711610097578063b62496f511610071578063b62496f5146103bb578063c0a904a2146103de578063dd62ed3e146103f1578063f2fde38b1461040457600080fd5b8063a457c2d71461038c578063a9059cbb1461039f578063aa4bde28146103b257600080fd5b80638c0b5e22116100d35780638c0b5e22146103575780638da5cb5b1461036057806395d89b41146103715780639a7a23d61461037957600080fd5b806379cc67901461031e5780637a20d3da1461033157806381bfdcca1461034457600080fd5b806339509351116101665780635cce86cd116101405780635cce86cd146102b7578063677daa57146102da57806370a08231146102ed578063715018a61461031657600080fd5b8063395093511461027c57806342966c681461028f57806349bd5a5e146102a457600080fd5b806318160ddd116101a257806318160ddd1461023557806323b872dd14610247578063313ce5671461025a5780633268cc561461026957600080fd5b806306fdde03146101c9578063095ea7b3146101e75780631694505e1461020a575b600080fd5b6101d1610417565b6040516101de91906110e0565b60405180910390f35b6101fa6101f536600461114a565b6104a9565b60405190151581526020016101de565b60065461021d906001600160a01b031681565b6040516001600160a01b0390911681526020016101de565b6002545b6040519081526020016101de565b6101fa610255366004611174565b6104c3565b604051601281526020016101de565b600c5461021d906001600160a01b031681565b6101fa61028a36600461114a565b6104e7565b6102a261029d3660046111b0565b610509565b005b60075461021d906001600160a01b031681565b6101fa6102c53660046111c9565b60086020526000908152604090205460ff1681565b6102a26102e83660046111b0565b610516565b6102396102fb3660046111c9565b6001600160a01b031660009081526020819052604090205490565b6102a26105a9565b6102a261032c36600461114a565b6105bd565b6102a261033f36600461114a565b6105d6565b6102a26103523660046111b0565b610675565b610239600a5481565b6005546001600160a01b031661021d565b6101d161070c565b6102a26103873660046111f9565b61071b565b6101fa61039a36600461114a565b6107c3565b6101fa6103ad36600461114a565b61083e565b610239600b5481565b6101fa6103c93660046111c9565b60096020526000908152604090205460ff1681565b6102a26103ec3660046111f9565b61084c565b6102396103ff366004611230565b61087f565b6102a26104123660046111c9565b6108aa565b60606003805461042690611263565b80601f016020809104026020016040519081016040528092919081815260200182805461045290611263565b801561049f5780601f106104745761010080835404028352916020019161049f565b820191906000526020600020905b81548152906001019060200180831161048257829003601f168201915b5050505050905090565b6000336104b7818585610920565b60019150505b92915050565b6000336104d1858285610a44565b6104dc858585610abe565b506001949350505050565b6000336104b78185856104fa838361087f565b610504919061129d565b610920565b6105133382610c6d565b50565b61051e610dab565b60c861052960025490565b61053391906112be565b8110156105a45760405162461bcd60e51b815260206004820152603460248201527f6d617820747820616d6f756e742063616e2774206265206c6f776572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084015b60405180910390fd5b600a55565b6105b1610dab565b6105bb6000610e05565b565b6105c8823383610a44565b6105d28282610c6d565b5050565b6105de610dab565b816001600160a01b031663a9059cbb6105ff6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561064c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067091906112e0565b505050565b61067d610dab565b606461068860025490565b61069291906112be565b8110156107075760405162461bcd60e51b815260206004820152603760248201527f6d61782057616c6c657420616d6f756e74206d7573742062652067726561746f60448201527f72207468616e203125206f662074686520737570706c79000000000000000000606482015260840161059b565b600b55565b60606004805461042690611263565b610723610dab565b6007546001600160a01b03908116908316036107b95760405162461bcd60e51b815260206004820152604960248201527f4e616d65583a2054686520756e69737761705632706169722063616e6e6f742060448201527f62652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d606482015268616b6572506169727360b81b608482015260a40161059b565b6105d28282610e57565b600033816107d1828661087f565b9050838110156108315760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161059b565b6104dc8286868403610920565b6000336104b7818585610abe565b610854610dab565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6108b2610dab565b6001600160a01b0381166109175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059b565b61051381610e05565b6001600160a01b0383166109825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161059b565b6001600160a01b0382166109e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161059b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a50848461087f565b90506000198114610ab85781811015610aab5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161059b565b610ab88484848403610920565b50505050565b6001600160a01b038316610b225760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161059b565b6001600160a01b038216610b845760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161059b565b610b8f838383610f61565b6001600160a01b03831660009081526020819052604090205481811015610c075760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161059b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ab8565b6001600160a01b038216610ccd5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161059b565b610cd982600083610f61565b6001600160a01b03821660009081526020819052604090205481811015610d4d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161059b565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6005546001600160a01b031633146105bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059b565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821660009081526009602052604090205481151560ff909116151503610eed5760405162461bcd60e51b815260206004820152603f60248201527f4e616d65583a204175746f6d61746564206d61726b6574206d616b657220706160448201527f697220697320616c72656164792073657420746f20746861742076616c756500606482015260840161059b565b6001600160a01b0382166000908152600960205260409020805460ff19168215801591909117909155610f2557610f2582600161084c565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6001600160a01b03831660009081526008602052604090205460ff161580610fc557506001600160a01b03831660009081526009602052604090205460ff168015610fc557506001600160a01b03821660009081526008602052604090205460ff16155b1561103257600a548111156110325760405162461bcd60e51b815260206004820152602d60248201527f416e74692d7768616c653a205472616e7366657220616d6f756e74206578636560448201526c19591cc81b585e081b1a5b5a5d609a1b606482015260840161059b565b6001600160a01b03821660009081526008602052604090205460ff1661067057600b5481611075846001600160a01b031660009081526020819052604090205490565b61107f919061129d565b11156106705760405162461bcd60e51b815260206004820152602a60248201527f416e74692d7768616c653a2057616c6c65742065786365656473206d617857616044820152691b1b195d081b1a5b5a5d60b21b606482015260840161059b565b600060208083528351808285015260005b8181101561110d578581018301518582016040015282016110f1565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461114557600080fd5b919050565b6000806040838503121561115d57600080fd5b6111668361112e565b946020939093013593505050565b60008060006060848603121561118957600080fd5b6111928461112e565b92506111a06020850161112e565b9150604084013590509250925092565b6000602082840312156111c257600080fd5b5035919050565b6000602082840312156111db57600080fd5b6111e48261112e565b9392505050565b801515811461051357600080fd5b6000806040838503121561120c57600080fd5b6112158361112e565b91506020830135611225816111eb565b809150509250929050565b6000806040838503121561124357600080fd5b61124c8361112e565b915061125a6020840161112e565b90509250929050565b600181811c9082168061127757607f821691505b60208210810361129757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156104bd57634e487b7160e01b600052601160045260246000fd5b6000826112db57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156112f257600080fd5b81516111e4816111eb56fea26469706673582212206879116a9c5d9056a1d646e06bad9712fa76bf3ae857c95b2e0bd84ea2e9238964736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806379cc6790116100f9578063a457c2d711610097578063b62496f511610071578063b62496f5146103bb578063c0a904a2146103de578063dd62ed3e146103f1578063f2fde38b1461040457600080fd5b8063a457c2d71461038c578063a9059cbb1461039f578063aa4bde28146103b257600080fd5b80638c0b5e22116100d35780638c0b5e22146103575780638da5cb5b1461036057806395d89b41146103715780639a7a23d61461037957600080fd5b806379cc67901461031e5780637a20d3da1461033157806381bfdcca1461034457600080fd5b806339509351116101665780635cce86cd116101405780635cce86cd146102b7578063677daa57146102da57806370a08231146102ed578063715018a61461031657600080fd5b8063395093511461027c57806342966c681461028f57806349bd5a5e146102a457600080fd5b806318160ddd116101a257806318160ddd1461023557806323b872dd14610247578063313ce5671461025a5780633268cc561461026957600080fd5b806306fdde03146101c9578063095ea7b3146101e75780631694505e1461020a575b600080fd5b6101d1610417565b6040516101de91906110e0565b60405180910390f35b6101fa6101f536600461114a565b6104a9565b60405190151581526020016101de565b60065461021d906001600160a01b031681565b6040516001600160a01b0390911681526020016101de565b6002545b6040519081526020016101de565b6101fa610255366004611174565b6104c3565b604051601281526020016101de565b600c5461021d906001600160a01b031681565b6101fa61028a36600461114a565b6104e7565b6102a261029d3660046111b0565b610509565b005b60075461021d906001600160a01b031681565b6101fa6102c53660046111c9565b60086020526000908152604090205460ff1681565b6102a26102e83660046111b0565b610516565b6102396102fb3660046111c9565b6001600160a01b031660009081526020819052604090205490565b6102a26105a9565b6102a261032c36600461114a565b6105bd565b6102a261033f36600461114a565b6105d6565b6102a26103523660046111b0565b610675565b610239600a5481565b6005546001600160a01b031661021d565b6101d161070c565b6102a26103873660046111f9565b61071b565b6101fa61039a36600461114a565b6107c3565b6101fa6103ad36600461114a565b61083e565b610239600b5481565b6101fa6103c93660046111c9565b60096020526000908152604090205460ff1681565b6102a26103ec3660046111f9565b61084c565b6102396103ff366004611230565b61087f565b6102a26104123660046111c9565b6108aa565b60606003805461042690611263565b80601f016020809104026020016040519081016040528092919081815260200182805461045290611263565b801561049f5780601f106104745761010080835404028352916020019161049f565b820191906000526020600020905b81548152906001019060200180831161048257829003601f168201915b5050505050905090565b6000336104b7818585610920565b60019150505b92915050565b6000336104d1858285610a44565b6104dc858585610abe565b506001949350505050565b6000336104b78185856104fa838361087f565b610504919061129d565b610920565b6105133382610c6d565b50565b61051e610dab565b60c861052960025490565b61053391906112be565b8110156105a45760405162461bcd60e51b815260206004820152603460248201527f6d617820747820616d6f756e742063616e2774206265206c6f776572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084015b60405180910390fd5b600a55565b6105b1610dab565b6105bb6000610e05565b565b6105c8823383610a44565b6105d28282610c6d565b5050565b6105de610dab565b816001600160a01b031663a9059cbb6105ff6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561064c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067091906112e0565b505050565b61067d610dab565b606461068860025490565b61069291906112be565b8110156107075760405162461bcd60e51b815260206004820152603760248201527f6d61782057616c6c657420616d6f756e74206d7573742062652067726561746f60448201527f72207468616e203125206f662074686520737570706c79000000000000000000606482015260840161059b565b600b55565b60606004805461042690611263565b610723610dab565b6007546001600160a01b03908116908316036107b95760405162461bcd60e51b815260206004820152604960248201527f4e616d65583a2054686520756e69737761705632706169722063616e6e6f742060448201527f62652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d606482015268616b6572506169727360b81b608482015260a40161059b565b6105d28282610e57565b600033816107d1828661087f565b9050838110156108315760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161059b565b6104dc8286868403610920565b6000336104b7818585610abe565b610854610dab565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6108b2610dab565b6001600160a01b0381166109175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059b565b61051381610e05565b6001600160a01b0383166109825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161059b565b6001600160a01b0382166109e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161059b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a50848461087f565b90506000198114610ab85781811015610aab5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161059b565b610ab88484848403610920565b50505050565b6001600160a01b038316610b225760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161059b565b6001600160a01b038216610b845760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161059b565b610b8f838383610f61565b6001600160a01b03831660009081526020819052604090205481811015610c075760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161059b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ab8565b6001600160a01b038216610ccd5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161059b565b610cd982600083610f61565b6001600160a01b03821660009081526020819052604090205481811015610d4d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161059b565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6005546001600160a01b031633146105bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059b565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821660009081526009602052604090205481151560ff909116151503610eed5760405162461bcd60e51b815260206004820152603f60248201527f4e616d65583a204175746f6d61746564206d61726b6574206d616b657220706160448201527f697220697320616c72656164792073657420746f20746861742076616c756500606482015260840161059b565b6001600160a01b0382166000908152600960205260409020805460ff19168215801591909117909155610f2557610f2582600161084c565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6001600160a01b03831660009081526008602052604090205460ff161580610fc557506001600160a01b03831660009081526009602052604090205460ff168015610fc557506001600160a01b03821660009081526008602052604090205460ff16155b1561103257600a548111156110325760405162461bcd60e51b815260206004820152602d60248201527f416e74692d7768616c653a205472616e7366657220616d6f756e74206578636560448201526c19591cc81b585e081b1a5b5a5d609a1b606482015260840161059b565b6001600160a01b03821660009081526008602052604090205460ff1661067057600b5481611075846001600160a01b031660009081526020819052604090205490565b61107f919061129d565b11156106705760405162461bcd60e51b815260206004820152602a60248201527f416e74692d7768616c653a2057616c6c65742065786365656473206d617857616044820152691b1b195d081b1a5b5a5d60b21b606482015260840161059b565b600060208083528351808285015260005b8181101561110d578581018301518582016040015282016110f1565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461114557600080fd5b919050565b6000806040838503121561115d57600080fd5b6111668361112e565b946020939093013593505050565b60008060006060848603121561118957600080fd5b6111928461112e565b92506111a06020850161112e565b9150604084013590509250925092565b6000602082840312156111c257600080fd5b5035919050565b6000602082840312156111db57600080fd5b6111e48261112e565b9392505050565b801515811461051357600080fd5b6000806040838503121561120c57600080fd5b6112158361112e565b91506020830135611225816111eb565b809150509250929050565b6000806040838503121561124357600080fd5b61124c8361112e565b915061125a6020840161112e565b90509250929050565b600181811c9082168061127757607f821691505b60208210810361129757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156104bd57634e487b7160e01b600052601160045260246000fd5b6000826112db57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156112f257600080fd5b81516111e4816111eb56fea26469706673582212206879116a9c5d9056a1d646e06bad9712fa76bf3ae857c95b2e0bd84ea2e9238964736f6c63430008130033

Deployed Bytecode Sourcemap

21941:3765:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9249:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11600:201;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;11600:201:0;1004:187:1;21996:41:0;;;;;-1:-1:-1;;;;;21996:41:0;;;;;;-1:-1:-1;;;;;1386:32:1;;;1368:51;;1356:2;1341:18;21996:41:0;1196:229:1;10369:108:0;10457:12;;10369:108;;;1576:25:1;;;1564:2;1549:18;10369:108:0;1430:177:1;12381:295:0;;;;;;:::i;:::-;;:::i;10211:93::-;;;10294:2;2087:36:1;;2075:2;2060:18;10211:93:0;1945:184:1;22280:73:0;;;;;-1:-1:-1;;;;;22280:73:0;;;13085:238;;;;;;:::i;:::-;;:::i;20985:91::-;;;;;;:::i;:::-;;:::i;:::-;;22044:28;;;;;-1:-1:-1;;;;;22044:28:0;;;22081:53;;;;;;:::i;:::-;;;;;;;;;;;;;;;;24270:204;;;;;;:::i;:::-;;:::i;10540:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;10641:18:0;10614:7;10641:18;;;;;;;;;;;;10540:127;2771:103;;;:::i;21395:164::-;;;;;;:::i;:::-;;:::i;24849:136::-;;;;;;:::i;:::-;;:::i;24482:216::-;;;;;;:::i;:::-;;:::i;22208:26::-;;;;;;2123:87;2196:6;;-1:-1:-1;;;;;2196:6:0;2123:87;;9468:104;;;:::i;23497:320::-;;;;;;:::i;:::-;;:::i;13826:436::-;;;;;;:::i;:::-;;:::i;10873:193::-;;;;;;:::i;:::-;;:::i;22241:30::-;;;;;;22141:58;;;;;;:::i;:::-;;;;;;;;;;;;;;;;24706:135;;;;;;:::i;:::-;;:::i;11129:151::-;;;;;;:::i;:::-;;:::i;3029:201::-;;;;;;:::i;:::-;;:::i;9249:100::-;9303:13;9336:5;9329:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9249:100;:::o;11600:201::-;11683:4;787:10;11739:32;787:10;11755:7;11764:6;11739:8;:32::i;:::-;11789:4;11782:11;;;11600:201;;;;;:::o;12381:295::-;12512:4;787:10;12570:38;12586:4;787:10;12601:6;12570:15;:38::i;:::-;12619:27;12629:4;12635:2;12639:6;12619:9;:27::i;:::-;-1:-1:-1;12664:4:0;;12381:295;-1:-1:-1;;;;12381:295:0:o;13085:238::-;13173:4;787:10;13229:64;787:10;13245:7;13282:10;13254:25;787:10;13245:7;13254:9;:25::i;:::-;:38;;;;:::i;:::-;13229:8;:64::i;20985:91::-;21041:27;787:10;21061:6;21041:5;:27::i;:::-;20985:91;:::o;24270:204::-;2009:13;:11;:13::i;:::-;24376:3:::1;24360:13;10457:12:::0;;;10369:108;24360:13:::1;:19;;;;:::i;:::-;24350:6;:29;;24341:94;;;::::0;-1:-1:-1;;;24341:94:0;;4462:2:1;24341:94:0::1;::::0;::::1;4444:21:1::0;4501:2;4481:18;;;4474:30;4540:34;4520:18;;;4513:62;-1:-1:-1;;;4591:18:1;;;4584:50;4651:19;;24341:94:0::1;;;;;;;;;24446:11;:20:::0;24270:204::o;2771:103::-;2009:13;:11;:13::i;:::-;2836:30:::1;2863:1;2836:18;:30::i;:::-;2771:103::o:0;21395:164::-;21472:46;21488:7;787:10;21511:6;21472:15;:46::i;:::-;21529:22;21535:7;21544:6;21529:5;:22::i;:::-;21395:164;;:::o;24849:136::-;2009:13;:11;:13::i;:::-;24945:5:::1;-1:-1:-1::0;;;;;24938:22:0::1;;24961:7;2196:6:::0;;-1:-1:-1;;;;;2196:6:0;;2123:87;24961:7:::1;24938:39;::::0;-1:-1:-1;;;;;;24938:39:0::1;::::0;;;;;;-1:-1:-1;;;;;4873:32:1;;;24938:39:0::1;::::0;::::1;4855:51:1::0;4922:18;;;4915:34;;;4828:18;;24938:39:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24849:136:::0;;:::o;24482:216::-;2009:13;:11;:13::i;:::-;24592:3:::1;24576:13;10457:12:::0;;;10369:108;24576:13:::1;:19;;;;:::i;:::-;24566:6;:29;;24557:98;;;::::0;-1:-1:-1;;;24557:98:0;;5412:2:1;24557:98:0::1;::::0;::::1;5394:21:1::0;5451:2;5431:18;;;5424:30;5490:34;5470:18;;;5463:62;5561:25;5541:18;;;5534:53;5604:19;;24557:98:0::1;5210:419:1::0;24557:98:0::1;24666:15;:24:::0;24482:216::o;9468:104::-;9524:13;9557:7;9550:14;;;;;:::i;23497:320::-;2009:13;:11;:13::i;:::-;23641::::1;::::0;-1:-1:-1;;;;;23641:13:0;;::::1;23633:21:::0;;::::1;::::0;23611:144:::1;;;::::0;-1:-1:-1;;;23611:144:0;;5836:2:1;23611:144:0::1;::::0;::::1;5818:21:1::0;5875:2;5855:18;;;5848:30;5914:34;5894:18;;;5887:62;5985:34;5965:18;;;5958:62;-1:-1:-1;;;6036:19:1;;;6029:40;6086:19;;23611:144:0::1;5634:477:1::0;23611:144:0::1;23768:41;23797:4;23803:5;23768:28;:41::i;13826:436::-:0;13919:4;787:10;13919:4;14002:25;787:10;14019:7;14002:9;:25::i;:::-;13975:52;;14066:15;14046:16;:35;;14038:85;;;;-1:-1:-1;;;14038:85:0;;6318:2:1;14038:85:0;;;6300:21:1;6357:2;6337:18;;;6330:30;6396:34;6376:18;;;6369:62;-1:-1:-1;;;6447:18:1;;;6440:35;6492:19;;14038:85:0;6116:401:1;14038:85:0;14159:60;14168:5;14175:7;14203:15;14184:16;:34;14159:8;:60::i;10873:193::-;10952:4;787:10;11008:28;787:10;11025:2;11029:6;11008:9;:28::i;24706:135::-;2009:13;:11;:13::i;:::-;-1:-1:-1;;;;;24793:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:40;;-1:-1:-1;;24793:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24706:135::o;11129:151::-;-1:-1:-1;;;;;11245:18:0;;;11218:7;11245:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11129:151::o;3029:201::-;2009:13;:11;:13::i;:::-;-1:-1:-1;;;;;3118:22:0;::::1;3110:73;;;::::0;-1:-1:-1;;;3110:73:0;;6724:2:1;3110:73:0::1;::::0;::::1;6706:21:1::0;6763:2;6743:18;;;6736:30;6802:34;6782:18;;;6775:62;-1:-1:-1;;;6853:18:1;;;6846:36;6899:19;;3110:73:0::1;6522:402:1::0;3110:73:0::1;3194:28;3213:8;3194:18;:28::i;17853:380::-:0;-1:-1:-1;;;;;17989:19:0;;17981:68;;;;-1:-1:-1;;;17981:68:0;;7131:2:1;17981:68:0;;;7113:21:1;7170:2;7150:18;;;7143:30;7209:34;7189:18;;;7182:62;-1:-1:-1;;;7260:18:1;;;7253:34;7304:19;;17981:68:0;6929:400:1;17981:68:0;-1:-1:-1;;;;;18068:21:0;;18060:68;;;;-1:-1:-1;;;18060:68:0;;7536:2:1;18060:68:0;;;7518:21:1;7575:2;7555:18;;;7548:30;7614:34;7594:18;;;7587:62;-1:-1:-1;;;7665:18:1;;;7658:32;7707:19;;18060:68:0;7334:398:1;18060:68:0;-1:-1:-1;;;;;18141:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18193:32;;1576:25:1;;;18193:32:0;;1549:18:1;18193:32:0;;;;;;;17853:380;;;:::o;18524:453::-;18659:24;18686:25;18696:5;18703:7;18686:9;:25::i;:::-;18659:52;;-1:-1:-1;;18726:16:0;:37;18722:248;;18808:6;18788:16;:26;;18780:68;;;;-1:-1:-1;;;18780:68:0;;7939:2:1;18780:68:0;;;7921:21:1;7978:2;7958:18;;;7951:30;8017:31;7997:18;;;7990:59;8066:18;;18780:68:0;7737:353:1;18780:68:0;18892:51;18901:5;18908:7;18936:6;18917:16;:25;18892:8;:51::i;:::-;18648:329;18524:453;;;:::o;14732:840::-;-1:-1:-1;;;;;14863:18:0;;14855:68;;;;-1:-1:-1;;;14855:68:0;;8297:2:1;14855:68:0;;;8279:21:1;8336:2;8316:18;;;8309:30;8375:34;8355:18;;;8348:62;-1:-1:-1;;;8426:18:1;;;8419:35;8471:19;;14855:68:0;8095:401:1;14855:68:0;-1:-1:-1;;;;;14942:16:0;;14934:64;;;;-1:-1:-1;;;14934:64:0;;8703:2:1;14934:64:0;;;8685:21:1;8742:2;8722:18;;;8715:30;8781:34;8761:18;;;8754:62;-1:-1:-1;;;8832:18:1;;;8825:33;8875:19;;14934:64:0;8501:399:1;14934:64:0;15011:38;15032:4;15038:2;15042:6;15011:20;:38::i;:::-;-1:-1:-1;;;;;15084:15:0;;15062:19;15084:15;;;;;;;;;;;15118:21;;;;15110:72;;;;-1:-1:-1;;;15110:72:0;;9107:2:1;15110:72:0;;;9089:21:1;9146:2;9126:18;;;9119:30;9185:34;9165:18;;;9158:62;-1:-1:-1;;;9236:18:1;;;9229:36;9282:19;;15110:72:0;8905:402:1;15110:72:0;-1:-1:-1;;;;;15218:15:0;;;:9;:15;;;;;;;;;;;15236:20;;;15218:38;;15436:13;;;;;;;;;;:23;;;;;;15488:26;;1576:25:1;;;15436:13:0;;15488:26;;1549:18:1;15488:26:0;;;;;;;15527:37;24849:136;16740:675;-1:-1:-1;;;;;16824:21:0;;16816:67;;;;-1:-1:-1;;;16816:67:0;;9514:2:1;16816:67:0;;;9496:21:1;9553:2;9533:18;;;9526:30;9592:34;9572:18;;;9565:62;-1:-1:-1;;;9643:18:1;;;9636:31;9684:19;;16816:67:0;9312:397:1;16816:67:0;16896:49;16917:7;16934:1;16938:6;16896:20;:49::i;:::-;-1:-1:-1;;;;;16983:18:0;;16958:22;16983:18;;;;;;;;;;;17020:24;;;;17012:71;;;;-1:-1:-1;;;17012:71:0;;9916:2:1;17012:71:0;;;9898:21:1;9955:2;9935:18;;;9928:30;9994:34;9974:18;;;9967:62;-1:-1:-1;;;10045:18:1;;;10038:32;10087:19;;17012:71:0;9714:398:1;17012:71:0;-1:-1:-1;;;;;17119:18:0;;:9;:18;;;;;;;;;;;17140:23;;;17119:44;;17258:12;:22;;;;;;;17309:37;1576:25:1;;;17119:9:0;;:18;17309:37;;1549:18:1;17309:37:0;;;;;;;24938:39:::1;24849:136:::0;;:::o;2288:132::-;2196:6;;-1:-1:-1;;;;;2196:6:0;787:10;2352:23;2344:68;;;;-1:-1:-1;;;2344:68:0;;10319:2:1;2344:68:0;;;10301:21:1;;;10338:18;;;10331:30;10397:34;10377:18;;;10370:62;10449:18;;2344:68:0;10117:356:1;3390:191:0;3483:6;;;-1:-1:-1;;;;;3500:17:0;;;-1:-1:-1;;;;;;3500:17:0;;;;;;;3533:40;;3483:6;;;3500:17;3483:6;;3533:40;;3464:16;;3533:40;3453:128;3390:191;:::o;23825:431::-;-1:-1:-1;;;;;23930:31:0;;;;;;:25;:31;;;;;;:40;;;:31;;;;:40;;;23908:153;;;;-1:-1:-1;;;23908:153:0;;10680:2:1;23908:153:0;;;10662:21:1;10719:2;10699:18;;;10692:30;10758:34;10738:18;;;10731:62;10829:33;10809:18;;;10802:61;10880:19;;23908:153:0;10478:427:1;23908:153:0;-1:-1:-1;;;;;24072:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;24072:39:0;;;;;;;;;;;;24124:67;;24150:29;24168:4;24174;24150:17;:29::i;:::-;24208:40;;;;;;-1:-1:-1;;;;;24208:40:0;;;;;;;;23825:431;;:::o;24993:708::-;-1:-1:-1;;;;;25185:26:0;;;;;;:20;:26;;;;;;;;25184:27;;:93;;-1:-1:-1;;;;;;25216:31:0;;;;;;:25;:31;;;;;;;;:60;;;;-1:-1:-1;;;;;;25252:24:0;;;;;;:20;:24;;;;;;;;25251:25;25216:60;25180:205;;;25312:11;;25302:6;:21;;25294:79;;;;-1:-1:-1;;;25294:79:0;;11112:2:1;25294:79:0;;;11094:21:1;11151:2;11131:18;;;11124:30;11190:34;11170:18;;;11163:62;-1:-1:-1;;;11241:18:1;;;11234:43;11294:19;;25294:79:0;10910:409:1;25294:79:0;-1:-1:-1;;;;;25488:24:0;;;;;;:20;:24;;;;;;;;25483:154;;25563:15;;25553:6;25537:13;25547:2;-1:-1:-1;;;;;10641:18:0;10614:7;10641:18;;;;;;;;;;;;10540:127;25537:13;:22;;;;:::i;:::-;:41;;25529:96;;;;-1:-1:-1;;;25529:96:0;;11526:2:1;25529:96:0;;;11508:21:1;11565:2;11545:18;;;11538:30;11604:34;11584:18;;;11577:62;-1:-1:-1;;;11655:18:1;;;11648:40;11705:19;;25529:96:0;11324:406: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;1612:328::-;1689:6;1697;1705;1758:2;1746:9;1737:7;1733:23;1729:32;1726:52;;;1774:1;1771;1764:12;1726:52;1797:29;1816:9;1797:29;:::i;:::-;1787:39;;1845:38;1879:2;1868:9;1864:18;1845:38;:::i;:::-;1835:48;;1930:2;1919:9;1915:18;1902:32;1892:42;;1612:328;;;;;:::o;2342:180::-;2401:6;2454:2;2442:9;2433:7;2429:23;2425:32;2422:52;;;2470:1;2467;2460:12;2422:52;-1:-1:-1;2493:23:1;;2342:180;-1:-1:-1;2342:180:1:o;2527:186::-;2586:6;2639:2;2627:9;2618:7;2614:23;2610:32;2607:52;;;2655:1;2652;2645:12;2607:52;2678:29;2697:9;2678:29;:::i;:::-;2668:39;2527:186;-1:-1:-1;;;2527:186:1:o;2718:118::-;2804:5;2797:13;2790:21;2783:5;2780:32;2770:60;;2826:1;2823;2816:12;2841:315;2906:6;2914;2967:2;2955:9;2946:7;2942:23;2938:32;2935:52;;;2983:1;2980;2973:12;2935:52;3006:29;3025:9;3006:29;:::i;:::-;2996:39;;3085:2;3074:9;3070:18;3057:32;3098:28;3120:5;3098:28;:::i;:::-;3145:5;3135:15;;;2841:315;;;;;:::o;3161:260::-;3229:6;3237;3290:2;3278:9;3269:7;3265:23;3261:32;3258:52;;;3306:1;3303;3296:12;3258:52;3329:29;3348:9;3329:29;:::i;:::-;3319:39;;3377:38;3411:2;3400:9;3396:18;3377:38;:::i;:::-;3367:48;;3161:260;;;;;:::o;3426:380::-;3505:1;3501:12;;;;3548;;;3569:61;;3623:4;3615:6;3611:17;3601:27;;3569:61;3676:2;3668:6;3665:14;3645:18;3642:38;3639:161;;3722:10;3717:3;3713:20;3710:1;3703:31;3757:4;3754:1;3747:15;3785:4;3782:1;3775:15;3639:161;;3426:380;;;:::o;3811:222::-;3876:9;;;3897:10;;;3894:133;;;3949:10;3944:3;3940:20;3937:1;3930:31;3984:4;3981:1;3974:15;4012:4;4009:1;4002:15;4038:217;4078:1;4104;4094:132;;4148:10;4143:3;4139:20;4136:1;4129:31;4183:4;4180:1;4173:15;4211:4;4208:1;4201:15;4094:132;-1:-1:-1;4240:9:1;;4038:217::o;4960:245::-;5027:6;5080:2;5068:9;5059:7;5055:23;5051:32;5048:52;;;5096:1;5093;5086:12;5048:52;5128:9;5122:16;5147:28;5169:5;5147:28;:::i

Swarm Source

ipfs://6879116a9c5d9056a1d646e06bad9712fa76bf3ae857c95b2e0bd84ea2e92389

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Namx is a utility token that's transactional data is analyzed to drive smart city objectives and incentives citizens to be a net-positive member of their community.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.