ETH Price: $3,247.80 (+2.52%)
Gas: 3 Gwei

Token

eYe on Ethereum (eYe)
 

Overview

Max Total Supply

500,000,000 eYe

Holders

860 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
98,168.729452088943849844 eYe

Value
$0.00
0x59f94e83373a43b373308f9b4fc3c51eaa95eb2e
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Opening the Meta-Gate to the Metaverse, Web3.0 and Creator Economy with NFTs

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20_Taxed

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-15
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.9;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

/**
 * @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.zeppelin.solutions/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) internal _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:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `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;
        _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;
        }
        _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 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 {}
}

/**
 * @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.
 */
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() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract ERC20_Taxed is ERC20, Ownable {
    struct WhitelistRound {
        uint256 duration;
        uint256 amountMax;
        mapping(address => bool) addresses;
        mapping(address => uint256) purchased;
    }

    uint256 public constant TAX_RATE_DIVISOR = 10000;
    uint256 public constant MAX_TAX_RATE = 1000; // 10%
    uint256 public taxRate;
    address public taxReceiver;

    mapping(address => bool) public senderTaxWhitelist;
    mapping(address => bool) public recipientTaxWhitelist;

    WhitelistRound[] public _lgeWhitelistRounds;
    uint256 public _lgeTimestamp;
    address public _lgePairAddress;
    address public _LGEwhitelister;

    event TaxRateSet(uint256 newTaxRate);
    event TaxReceiverSet(address newTaxReceiver);
    event AddedToSenderWhitelist(address indexed whitelistAddress);
    event RemovedFromSenderWhitelist(address indexed whitelistAddress);
    event AddedToRecipientWhitelist(address indexed whitelistAddress);
    event RemovedFromRecipientWhitelist(address indexed whitelistAddress);
    event LGEWhitelisterTransferred(address indexed previousLGEWhitelister, address indexed newLGEWhitelister);

    modifier onlyLGEWhitelister() {
        require(_LGEwhitelister == _msgSender(), "Caller is not the whitelister");
        _;
    }

    constructor(string memory name_, string memory symbol_, uint256 totalSupply_, uint256 taxRate_, address taxReceiver_) 
        ERC20(name_, symbol_)
    {
        _mint(msg.sender, totalSupply_);
        taxRate = taxRate_;
        emit TaxRateSet(taxRate_);
        taxReceiver = taxReceiver_;
        emit TaxReceiverSet(taxReceiver_);
        senderTaxWhitelist[msg.sender] = true;
        emit AddedToSenderWhitelist(msg.sender);
        senderTaxWhitelist[taxReceiver_] = true;
        emit AddedToSenderWhitelist(taxReceiver_);
        recipientTaxWhitelist[msg.sender] = true;
        emit AddedToRecipientWhitelist(msg.sender);
        recipientTaxWhitelist[taxReceiver_] = true;
        emit AddedToRecipientWhitelist(taxReceiver_);
        _LGEwhitelister = msg.sender;
    }

    /*
     *  getLGEWhitelistRound
     *
     *  returns:
     *
     *  1. whitelist round number ( 0 = no active round now )
     *  2. duration, in seconds, current whitelist round is active for
     *  3. timestamp current whitelist round closes at
     *  4. maximum amount a whitelister can purchase in this round
     *  5. is caller whitelisted
     *  6. how much caller has purchased in current whitelist round
     *
     */
    function getLGEWhitelistRound()
        public
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            bool,
            uint256
        )
    {
        if (_lgeTimestamp > 0) {
            uint256 wlCloseTimestampLast = _lgeTimestamp;

            for (uint256 i = 0; i < _lgeWhitelistRounds.length; i++) {
                WhitelistRound storage wlRound = _lgeWhitelistRounds[i];

                wlCloseTimestampLast = wlCloseTimestampLast + wlRound.duration;
                if (block.timestamp <= wlCloseTimestampLast)
                    return (
                        i + 1,
                        wlRound.duration,
                        wlCloseTimestampLast,
                        wlRound.amountMax,
                        wlRound.addresses[_msgSender()],
                        wlRound.purchased[_msgSender()]
                    );
            }
        }

        return (0, 0, 0, 0, false, 0);
    }

    function setTaxRate(uint256 taxRate_) external onlyOwner {
        require(taxRate_ <= MAX_TAX_RATE, "ERC20_Taxed: tax rate too high");
        taxRate = taxRate_;
        emit TaxRateSet(taxRate_);
    }

    function setTaxReceiver(address taxReceiver_) external onlyOwner {
        taxReceiver = taxReceiver_;
        emit TaxReceiverSet(taxReceiver_);
    }

    function addToSenderWhitelist(address whitelistAddress) external onlyOwner {
        senderTaxWhitelist[whitelistAddress] = true;
        emit AddedToSenderWhitelist(whitelistAddress);
    }

    function removeFromSenderWhitelist(address whitelistAddress) external onlyOwner {
        senderTaxWhitelist[whitelistAddress] = false;
        emit RemovedFromSenderWhitelist(whitelistAddress);
    }

    function addToRecipientWhitelist(address whitelistAddress) external onlyOwner {
        recipientTaxWhitelist[whitelistAddress] = true;
        emit AddedToRecipientWhitelist(whitelistAddress);
    }

    function removeFromRecipientWhitelist(address whitelistAddress) external onlyOwner {
        recipientTaxWhitelist[whitelistAddress] = false;
        emit RemovedFromRecipientWhitelist(whitelistAddress);
    }

    function transferLGEWhitelister(address newLGEWhitelister) external onlyOwner {
        _transferLGEWhitelister(newLGEWhitelister);
    }


    /*
     * createLGEWhitelist - Call this after initial Token Generation Event (TGE)
     *
     * pairAddress - address generated from createPair() event on DEX
     * durations - array of durations (seconds) for each whitelist rounds
     * amountsMax - array of max amounts (TOKEN decimals) for each whitelist round
     *
     */

    function createLGEWhitelist(
        address pairAddress,
        uint256[] calldata durations,
        uint256[] calldata amountsMax
    ) external onlyLGEWhitelister() {
        require(durations.length == amountsMax.length, "Invalid whitelist(s)");

        _lgePairAddress = pairAddress;

        if (durations.length > 0) {
            delete _lgeWhitelistRounds;

            for (uint256 i = 0; i < durations.length; i++) {
                WhitelistRound storage whitelistRound = _lgeWhitelistRounds.push();
                whitelistRound.duration = durations[i];
                whitelistRound.amountMax = amountsMax[i];
            }
        }
    }

    /*
     * modifyLGEWhitelistAddresses - Define what addresses are included/excluded from a whitelist round
     *
     * index - 0-based index of round to modify whitelist
     * duration - period in seconds from LGE event or previous whitelist round
     * amountMax - max amount (TOKEN decimals) for each whitelist round
     *
     */
    function modifyLGEWhitelist(
        uint256 index,
        uint256 duration,
        uint256 amountMax,
        address[] calldata addresses,
        bool enabled
    ) external onlyLGEWhitelister() {
        require(index < _lgeWhitelistRounds.length, "Invalid index");
        require(amountMax > 0, "Invalid amountMax");

        if (duration != _lgeWhitelistRounds[index].duration) _lgeWhitelistRounds[index].duration = duration;

        if (amountMax != _lgeWhitelistRounds[index].amountMax) _lgeWhitelistRounds[index].amountMax = amountMax;

        for (uint256 i = 0; i < addresses.length; i++) {
            _lgeWhitelistRounds[index].addresses[addresses[i]] = enabled;
        }
    }

    /*
     *  getLGEWhitelistRound
     *
     *  returns:
     *
     *  1. whitelist round number ( 0 = no active round now )
     *  2. duration, in seconds, current whitelist round is active for
     *  3. timestamp current whitelist round closes at
     *  4. maximum amount a whitelister can purchase in this round
     *  5. is caller whitelisted
     *  6. how much caller has purchased in current whitelist round
     *
     */

    function _transfer(address sender, address recipient, uint256 amount) internal override {
        _applyLGEWhitelist(sender, recipient, amount);
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _balances[sender] -= amount;
        uint256 sendAmount = amount;
        if(!senderTaxWhitelist[sender] && !recipientTaxWhitelist[recipient]) {
            uint256 taxAmount = (amount * taxRate) / TAX_RATE_DIVISOR;
            _balances[taxReceiver] +=  taxAmount;
            emit Transfer(sender, taxReceiver, taxAmount);
            sendAmount -= taxAmount;
        }
        _balances[recipient] += sendAmount;
        emit Transfer(sender, recipient, sendAmount);
    }

    /*
     * _applyLGEWhitelist - internal function to be called initially before any transfers
     *
     */
    function _applyLGEWhitelist(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (_lgePairAddress == address(0) || _lgeWhitelistRounds.length == 0) return;

        if (_lgeTimestamp == 0 && sender != _lgePairAddress && recipient == _lgePairAddress && amount > 0)
            _lgeTimestamp = block.timestamp;

        if (sender == _lgePairAddress && recipient != _lgePairAddress) {
            //buying

            (uint256 wlRoundNumber, , , , , ) = getLGEWhitelistRound();

            if (wlRoundNumber > 0) {
                WhitelistRound storage wlRound = _lgeWhitelistRounds[wlRoundNumber - 1];

                require(wlRound.addresses[recipient], "LGE - Buyer is not whitelisted");

                uint256 amountRemaining = 0;

                if (wlRound.purchased[recipient] < wlRound.amountMax)
                    amountRemaining = wlRound.amountMax - wlRound.purchased[recipient];

                require(amount <= amountRemaining, "LGE - Amount exceeds whitelist maximum");
                wlRound.purchased[recipient] = wlRound.purchased[recipient] + amount;
            }
        }
    }

    function _transferLGEWhitelister(address newLGEWhitelister) internal {
        require(newLGEWhitelister != address(0), "New whitelister is the zero address");
        emit LGEWhitelisterTransferred(_LGEwhitelister, newLGEWhitelister);
        _LGEwhitelister = newLGEWhitelister;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"uint256","name":"taxRate_","type":"uint256"},{"internalType":"address","name":"taxReceiver_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"whitelistAddress","type":"address"}],"name":"AddedToRecipientWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"whitelistAddress","type":"address"}],"name":"AddedToSenderWhitelist","type":"event"},{"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":"previousLGEWhitelister","type":"address"},{"indexed":true,"internalType":"address","name":"newLGEWhitelister","type":"address"}],"name":"LGEWhitelisterTransferred","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":"whitelistAddress","type":"address"}],"name":"RemovedFromRecipientWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"whitelistAddress","type":"address"}],"name":"RemovedFromSenderWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newTaxRate","type":"uint256"}],"name":"TaxRateSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newTaxReceiver","type":"address"}],"name":"TaxReceiverSet","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"},{"inputs":[],"name":"MAX_TAX_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TAX_RATE_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_LGEwhitelister","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lgePairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lgeTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_lgeWhitelistRounds","outputs":[{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"amountMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"whitelistAddress","type":"address"}],"name":"addToRecipientWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"whitelistAddress","type":"address"}],"name":"addToSenderWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"pairAddress","type":"address"},{"internalType":"uint256[]","name":"durations","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsMax","type":"uint256[]"}],"name":"createLGEWhitelist","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":[],"name":"getLGEWhitelistRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"amountMax","type":"uint256"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"modifyLGEWhitelist","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"recipientTaxWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"whitelistAddress","type":"address"}],"name":"removeFromRecipientWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"whitelistAddress","type":"address"}],"name":"removeFromSenderWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"senderTaxWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxRate_","type":"uint256"}],"name":"setTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"taxReceiver_","type":"address"}],"name":"setTaxReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLGEWhitelister","type":"address"}],"name":"transferLGEWhitelister","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162002153380380620021538339810160408190526200003491620004a6565b8451859085906200004d90600390602085019062000333565b5080516200006390600490602084019062000333565b5050506000620000786200024760201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000d233846200024b565b60068290556040518281527f2cf6bdee09c3811c29dab74512064ee7a320add122b9150b166c88dd957602179060200160405180910390a1600780546001600160a01b0319166001600160a01b0383169081179091556040519081527fb637765305c2a6e716ace8b4c731e205863b495f7cc0c7810a3af93dd2808a309060200160405180910390a133600081815260086020526040808220805460ff1916600117905551600080516020620021138339815191529190a26001600160a01b038116600081815260086020526040808220805460ff1916600117905551600080516020620021138339815191529190a233600081815260096020526040808220805460ff1916600117905551600080516020620021338339815191529190a26001600160a01b038116600081815260096020526040808220805460ff1916600117905551600080516020620021338339815191529190a25050600d80546001600160a01b0319163317905550620005ac915050565b3390565b6001600160a01b038216620002a65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620002ba919062000548565b90915550506001600160a01b03821660009081526020819052604081208054839290620002e990849062000548565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b82805462000341906200056f565b90600052602060002090601f016020900481019282620003655760008555620003b0565b82601f106200038057805160ff1916838001178555620003b0565b82800160010185558215620003b0579182015b82811115620003b057825182559160200191906001019062000393565b50620003be929150620003c2565b5090565b5b80821115620003be5760008155600101620003c3565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200040157600080fd5b81516001600160401b03808211156200041e576200041e620003d9565b604051601f8301601f19908116603f01168101908282118183101715620004495762000449620003d9565b816040528381526020925086838588010111156200046657600080fd5b600091505b838210156200048a57858201830151818301840152908201906200046b565b838211156200049c5760008385830101525b9695505050505050565b600080600080600060a08688031215620004bf57600080fd5b85516001600160401b0380821115620004d757600080fd5b620004e589838a01620003ef565b96506020880151915080821115620004fc57600080fd5b506200050b88828901620003ef565b6040880151606089015160808a0151929750909550935090506001600160a01b03811681146200053a57600080fd5b809150509295509295909350565b600082198211156200056a57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200058457607f821691505b60208210811415620005a657634e487b7160e01b600052602260045260246000fd5b50919050565b611b5780620005bc6000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806370a082311161011a578063a9059cbb116100ad578063da91b76e1161007c578063da91b76e1461049b578063dd62ed3e146104a4578063de4842f7146104dd578063e6ef73d6146104f0578063f2fde38b1461050357600080fd5b8063a9059cbb14610459578063bf36e6371461046c578063c6d69a3014610475578063cd8de42c1461048857600080fd5b80638fa81732116100e95780638fa817321461040d57806395d89b4114610416578063a457c2d71461041e578063a77cac7a1461043157600080fd5b806370a08231146103c2578063715018a6146103eb578063771a3a1d146103f35780638da5cb5b146103fc57600080fd5b80633ea4534a1161019d5780634cf351031161016c5780634cf35103146103435780634f29402a14610356578063503de54914610379578063532f1fed1461039c5780635fe5a3cc146103af57600080fd5b80633ea4534a146102df57806341d79d571461030a57806344ade3c51461031d578063494488981461033057600080fd5b80631b29b0cd116101d95780631b29b0cd1461027357806323b872dd146102aa578063313ce567146102bd57806339509351146102cc57600080fd5b806306fdde031461020b578063095ea7b314610229578063113f56ed1461024c57806318160ddd14610261575b600080fd5b610213610516565b6040516102209190611770565b60405180910390f35b61023c6102373660046117e1565b6105a8565b6040519015158152602001610220565b61025f61025a36600461180b565b6105be565b005b6002545b604051908152602001610220565b61027b61063a565b6040805196875260208701959095529385019290925260608401521515608083015260a082015260c001610220565b61023c6102b836600461182d565b61071a565b60405160128152602001610220565b61023c6102da3660046117e1565b6107c4565b600d546102f2906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b61025f61031836600461180b565b610800565b61025f61032b3660046118b5565b610876565b600c546102f2906001600160a01b031681565b61025f61035136600461180b565b610a97565b61023c61036436600461180b565b60096020526000908152604090205460ff1681565b61023c61038736600461180b565b60086020526000908152604090205460ff1681565b61025f6103aa36600461192d565b610b0d565b61025f6103bd36600461180b565b610c75565b6102656103d036600461180b565b6001600160a01b031660009081526020819052604090205490565b61025f610ce8565b61026560065481565b6005546001600160a01b03166102f2565b6102656103e881565b610213610d5c565b61023c61042c3660046117e1565b610d6b565b61044461043f3660046119ae565b610e04565b60408051928352602083019190915201610220565b61023c6104673660046117e1565b610e32565b61026561271081565b61025f6104833660046119ae565b610e3f565b61025f61049636600461180b565b610ef7565b610265600b5481565b6102656104b23660046119c7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025f6104eb36600461180b565b610f6f565b6007546102f2906001600160a01b031681565b61025f61051136600461180b565b610fa5565b606060038054610525906119fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610551906119fa565b801561059e5780601f106105735761010080835404028352916020019161059e565b820191906000526020600020905b81548152906001019060200180831161058157829003601f168201915b5050505050905090565b60006105b5338484611090565b50600192915050565b6005546001600160a01b031633146105f15760405162461bcd60e51b81526004016105e890611a35565b60405180910390fd5b6001600160a01b038116600081815260086020526040808220805460ff19169055517fff15a8cbf072e9b687529819ee5ff64a5f124276b264401aba91cd738d7f17939190a250565b6000806000806000806000600b5411156106ff57600b5460005b600a548110156106fc576000600a828154811061067357610673611a6a565b906000526020600020906004020190508060000154836106939190611a96565b92508242116106e9576106a7826001611a96565b815460018301543360009081526002850160209081526040808320546003909701909152902054929b5090995093975092955060ff1693509091506107129050565b50806106f481611aae565b915050610654565b50505b5060009450849350839250829150819050805b909192939495565b60006107278484846111b4565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156107ac5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016105e8565b6107b98533858403611090565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105b59185906107fb908690611a96565b611090565b6005546001600160a01b0316331461082a5760405162461bcd60e51b81526004016105e890611a35565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517f93327bb90f4d0246f44e11e8286efad52af8d58da75757812e25d2be7357aace9190a250565b600d546001600160a01b031633146108d05760405162461bcd60e51b815260206004820152601d60248201527f43616c6c6572206973206e6f74207468652077686974656c697374657200000060448201526064016105e8565b600a5486106109115760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b60448201526064016105e8565b600084116109555760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840c2dadeeadce89ac2f607b1b60448201526064016105e8565b600a868154811061096857610968611a6a565b90600052602060002090600402016000015485146109a65784600a878154811061099457610994611a6a565b60009182526020909120600490910201555b600a86815481106109b9576109b9611a6a565b90600052602060002090600402016001015484146109fb5783600a87815481106109e5576109e5611a6a565b9060005260206000209060040201600101819055505b60005b82811015610a8e5781600a8881548110610a1a57610a1a611a6a565b90600052602060002090600402016002016000868685818110610a3f57610a3f611a6a565b9050602002016020810190610a54919061180b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a8681611aae565b9150506109fe565b50505050505050565b6005546001600160a01b03163314610ac15760405162461bcd60e51b81526004016105e890611a35565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f26c686407758c46790d9f12ec3428a52024df5ec5be0c8b1500dabc34944283b9190a250565b600d546001600160a01b03163314610b675760405162461bcd60e51b815260206004820152601d60248201527f43616c6c6572206973206e6f74207468652077686974656c697374657200000060448201526064016105e8565b828114610bad5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642077686974656c69737428732960601b60448201526064016105e8565b600c80546001600160a01b0319166001600160a01b0387161790558215610c6e57610bda600a6000611735565b60005b83811015610c6c57600a80546001810182556000919091526004027fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801858583818110610c2c57610c2c611a6a565b6020029190910135825550838383818110610c4957610c49611a6a565b905060200201358160010181905550508080610c6490611aae565b915050610bdd565b505b5050505050565b6005546001600160a01b03163314610c9f5760405162461bcd60e51b81526004016105e890611a35565b6001600160a01b038116600081815260096020526040808220805460ff19169055517f312d0da4d262b3a6a812098d89d4cdab51c59577474f729bd89f2529c8f1dada9190a250565b6005546001600160a01b03163314610d125760405162461bcd60e51b81526004016105e890611a35565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b606060048054610525906119fa565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610ded5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e8565b610dfa3385858403611090565b5060019392505050565b600a8181548110610e1457600080fd5b60009182526020909120600490910201805460019091015490915082565b60006105b53384846111b4565b6005546001600160a01b03163314610e695760405162461bcd60e51b81526004016105e890611a35565b6103e8811115610ebb5760405162461bcd60e51b815260206004820152601e60248201527f45524332305f54617865643a20746178207261746520746f6f2068696768000060448201526064016105e8565b60068190556040518181527f2cf6bdee09c3811c29dab74512064ee7a320add122b9150b166c88dd95760217906020015b60405180910390a150565b6005546001600160a01b03163314610f215760405162461bcd60e51b81526004016105e890611a35565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527fb637765305c2a6e716ace8b4c731e205863b495f7cc0c7810a3af93dd2808a3090602001610eec565b6005546001600160a01b03163314610f995760405162461bcd60e51b81526004016105e890611a35565b610fa281611421565b50565b6005546001600160a01b03163314610fcf5760405162461bcd60e51b81526004016105e890611a35565b6001600160a01b0381166110345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110f25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e8565b6001600160a01b0382166111535760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6111bf8383836114df565b6001600160a01b0383166112235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105e8565b6001600160a01b0382166112855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105e8565b6001600160a01b038316600090815260208190526040812080548392906112ad908490611ac9565b90915550506001600160a01b038316600090815260086020526040902054819060ff161580156112f657506001600160a01b03831660009081526009602052604090205460ff16155b1561139f5760006127106006548461130e9190611ae0565b6113189190611aff565b6007546001600160a01b0316600090815260208190526040812080549293508392909190611347908490611a96565b90915550506007546040518281526001600160a01b03918216918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361139b8183611ac9565b9150505b6001600160a01b038316600090815260208190526040812080548392906113c7908490611a96565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161141391815260200190565b60405180910390a350505050565b6001600160a01b0381166114835760405162461bcd60e51b815260206004820152602360248201527f4e65772077686974656c697374657220697320746865207a65726f206164647260448201526265737360e81b60648201526084016105e8565b600d546040516001600160a01b038084169216907f620f5bb871da7cc57c369f86df78dc68fa5c60b25b184897e77d415cfbc18fda90600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b031615806114f75750600a54155b1561150157505050565b600b5415801561151f5750600c546001600160a01b03848116911614155b80156115385750600c546001600160a01b038381169116145b80156115445750600081115b1561154e5742600b555b600c546001600160a01b0384811691161480156115795750600c546001600160a01b03838116911614155b1561173057600061158861063a565b50505050509050600081111561172e576000600a6115a7600184611ac9565b815481106115b7576115b7611a6a565b600091825260208083206001600160a01b03881684526002600490930201918201905260409091205490915060ff166116325760405162461bcd60e51b815260206004820152601e60248201527f4c4745202d204275796572206973206e6f742077686974656c6973746564000060448201526064016105e8565b60018101546001600160a01b038516600090815260038301602052604081205490911115611687576001600160a01b038516600090815260038301602052604090205460018301546116849190611ac9565b90505b808411156116e65760405162461bcd60e51b815260206004820152602660248201527f4c4745202d20416d6f756e7420657863656564732077686974656c697374206d6044820152656178696d756d60d01b60648201526084016105e8565b6001600160a01b038516600090815260038301602052604090205461170c908590611a96565b6001600160a01b03861660009081526003909301602052604090922091909155505b505b505050565b5080546000825560040290600052602060002090810190610fa291905b8082111561176c5760008082556001820155600401611752565b5090565b600060208083528351808285015260005b8181101561179d57858101830151858201604001528201611781565b818111156117af576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146117dc57600080fd5b919050565b600080604083850312156117f457600080fd5b6117fd836117c5565b946020939093013593505050565b60006020828403121561181d57600080fd5b611826826117c5565b9392505050565b60008060006060848603121561184257600080fd5b61184b846117c5565b9250611859602085016117c5565b9150604084013590509250925092565b60008083601f84011261187b57600080fd5b50813567ffffffffffffffff81111561189357600080fd5b6020830191508360208260051b85010111156118ae57600080fd5b9250929050565b60008060008060008060a087890312156118ce57600080fd5b863595506020870135945060408701359350606087013567ffffffffffffffff8111156118fa57600080fd5b61190689828a01611869565b9094509250506080870135801515811461191f57600080fd5b809150509295509295509295565b60008060008060006060868803121561194557600080fd5b61194e866117c5565b9450602086013567ffffffffffffffff8082111561196b57600080fd5b61197789838a01611869565b9096509450604088013591508082111561199057600080fd5b5061199d88828901611869565b969995985093965092949392505050565b6000602082840312156119c057600080fd5b5035919050565b600080604083850312156119da57600080fd5b6119e3836117c5565b91506119f1602084016117c5565b90509250929050565b600181811c90821680611a0e57607f821691505b60208210811415611a2f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115611aa957611aa9611a80565b500190565b6000600019821415611ac257611ac2611a80565b5060010190565b600082821015611adb57611adb611a80565b500390565b6000816000190483118215151615611afa57611afa611a80565b500290565b600082611b1c57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212205d12fdffa6c8ac5675aefbcdd5da316b96cb91c131a601b7471bb2be16f383c764736f6c6343000809003326c686407758c46790d9f12ec3428a52024df5ec5be0c8b1500dabc34944283b93327bb90f4d0246f44e11e8286efad52af8d58da75757812e25d2be7357aace00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000019d971e4fe8401e7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001302818823b63b8c8313a1d1444b07110cccf99b000000000000000000000000000000000000000000000000000000000000000f655965206f6e20457468657265756d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036559650000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102065760003560e01c806370a082311161011a578063a9059cbb116100ad578063da91b76e1161007c578063da91b76e1461049b578063dd62ed3e146104a4578063de4842f7146104dd578063e6ef73d6146104f0578063f2fde38b1461050357600080fd5b8063a9059cbb14610459578063bf36e6371461046c578063c6d69a3014610475578063cd8de42c1461048857600080fd5b80638fa81732116100e95780638fa817321461040d57806395d89b4114610416578063a457c2d71461041e578063a77cac7a1461043157600080fd5b806370a08231146103c2578063715018a6146103eb578063771a3a1d146103f35780638da5cb5b146103fc57600080fd5b80633ea4534a1161019d5780634cf351031161016c5780634cf35103146103435780634f29402a14610356578063503de54914610379578063532f1fed1461039c5780635fe5a3cc146103af57600080fd5b80633ea4534a146102df57806341d79d571461030a57806344ade3c51461031d578063494488981461033057600080fd5b80631b29b0cd116101d95780631b29b0cd1461027357806323b872dd146102aa578063313ce567146102bd57806339509351146102cc57600080fd5b806306fdde031461020b578063095ea7b314610229578063113f56ed1461024c57806318160ddd14610261575b600080fd5b610213610516565b6040516102209190611770565b60405180910390f35b61023c6102373660046117e1565b6105a8565b6040519015158152602001610220565b61025f61025a36600461180b565b6105be565b005b6002545b604051908152602001610220565b61027b61063a565b6040805196875260208701959095529385019290925260608401521515608083015260a082015260c001610220565b61023c6102b836600461182d565b61071a565b60405160128152602001610220565b61023c6102da3660046117e1565b6107c4565b600d546102f2906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b61025f61031836600461180b565b610800565b61025f61032b3660046118b5565b610876565b600c546102f2906001600160a01b031681565b61025f61035136600461180b565b610a97565b61023c61036436600461180b565b60096020526000908152604090205460ff1681565b61023c61038736600461180b565b60086020526000908152604090205460ff1681565b61025f6103aa36600461192d565b610b0d565b61025f6103bd36600461180b565b610c75565b6102656103d036600461180b565b6001600160a01b031660009081526020819052604090205490565b61025f610ce8565b61026560065481565b6005546001600160a01b03166102f2565b6102656103e881565b610213610d5c565b61023c61042c3660046117e1565b610d6b565b61044461043f3660046119ae565b610e04565b60408051928352602083019190915201610220565b61023c6104673660046117e1565b610e32565b61026561271081565b61025f6104833660046119ae565b610e3f565b61025f61049636600461180b565b610ef7565b610265600b5481565b6102656104b23660046119c7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025f6104eb36600461180b565b610f6f565b6007546102f2906001600160a01b031681565b61025f61051136600461180b565b610fa5565b606060038054610525906119fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610551906119fa565b801561059e5780601f106105735761010080835404028352916020019161059e565b820191906000526020600020905b81548152906001019060200180831161058157829003601f168201915b5050505050905090565b60006105b5338484611090565b50600192915050565b6005546001600160a01b031633146105f15760405162461bcd60e51b81526004016105e890611a35565b60405180910390fd5b6001600160a01b038116600081815260086020526040808220805460ff19169055517fff15a8cbf072e9b687529819ee5ff64a5f124276b264401aba91cd738d7f17939190a250565b6000806000806000806000600b5411156106ff57600b5460005b600a548110156106fc576000600a828154811061067357610673611a6a565b906000526020600020906004020190508060000154836106939190611a96565b92508242116106e9576106a7826001611a96565b815460018301543360009081526002850160209081526040808320546003909701909152902054929b5090995093975092955060ff1693509091506107129050565b50806106f481611aae565b915050610654565b50505b5060009450849350839250829150819050805b909192939495565b60006107278484846111b4565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156107ac5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016105e8565b6107b98533858403611090565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105b59185906107fb908690611a96565b611090565b6005546001600160a01b0316331461082a5760405162461bcd60e51b81526004016105e890611a35565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517f93327bb90f4d0246f44e11e8286efad52af8d58da75757812e25d2be7357aace9190a250565b600d546001600160a01b031633146108d05760405162461bcd60e51b815260206004820152601d60248201527f43616c6c6572206973206e6f74207468652077686974656c697374657200000060448201526064016105e8565b600a5486106109115760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b60448201526064016105e8565b600084116109555760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840c2dadeeadce89ac2f607b1b60448201526064016105e8565b600a868154811061096857610968611a6a565b90600052602060002090600402016000015485146109a65784600a878154811061099457610994611a6a565b60009182526020909120600490910201555b600a86815481106109b9576109b9611a6a565b90600052602060002090600402016001015484146109fb5783600a87815481106109e5576109e5611a6a565b9060005260206000209060040201600101819055505b60005b82811015610a8e5781600a8881548110610a1a57610a1a611a6a565b90600052602060002090600402016002016000868685818110610a3f57610a3f611a6a565b9050602002016020810190610a54919061180b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a8681611aae565b9150506109fe565b50505050505050565b6005546001600160a01b03163314610ac15760405162461bcd60e51b81526004016105e890611a35565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f26c686407758c46790d9f12ec3428a52024df5ec5be0c8b1500dabc34944283b9190a250565b600d546001600160a01b03163314610b675760405162461bcd60e51b815260206004820152601d60248201527f43616c6c6572206973206e6f74207468652077686974656c697374657200000060448201526064016105e8565b828114610bad5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642077686974656c69737428732960601b60448201526064016105e8565b600c80546001600160a01b0319166001600160a01b0387161790558215610c6e57610bda600a6000611735565b60005b83811015610c6c57600a80546001810182556000919091526004027fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801858583818110610c2c57610c2c611a6a565b6020029190910135825550838383818110610c4957610c49611a6a565b905060200201358160010181905550508080610c6490611aae565b915050610bdd565b505b5050505050565b6005546001600160a01b03163314610c9f5760405162461bcd60e51b81526004016105e890611a35565b6001600160a01b038116600081815260096020526040808220805460ff19169055517f312d0da4d262b3a6a812098d89d4cdab51c59577474f729bd89f2529c8f1dada9190a250565b6005546001600160a01b03163314610d125760405162461bcd60e51b81526004016105e890611a35565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b606060048054610525906119fa565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610ded5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e8565b610dfa3385858403611090565b5060019392505050565b600a8181548110610e1457600080fd5b60009182526020909120600490910201805460019091015490915082565b60006105b53384846111b4565b6005546001600160a01b03163314610e695760405162461bcd60e51b81526004016105e890611a35565b6103e8811115610ebb5760405162461bcd60e51b815260206004820152601e60248201527f45524332305f54617865643a20746178207261746520746f6f2068696768000060448201526064016105e8565b60068190556040518181527f2cf6bdee09c3811c29dab74512064ee7a320add122b9150b166c88dd95760217906020015b60405180910390a150565b6005546001600160a01b03163314610f215760405162461bcd60e51b81526004016105e890611a35565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527fb637765305c2a6e716ace8b4c731e205863b495f7cc0c7810a3af93dd2808a3090602001610eec565b6005546001600160a01b03163314610f995760405162461bcd60e51b81526004016105e890611a35565b610fa281611421565b50565b6005546001600160a01b03163314610fcf5760405162461bcd60e51b81526004016105e890611a35565b6001600160a01b0381166110345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110f25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e8565b6001600160a01b0382166111535760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6111bf8383836114df565b6001600160a01b0383166112235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105e8565b6001600160a01b0382166112855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105e8565b6001600160a01b038316600090815260208190526040812080548392906112ad908490611ac9565b90915550506001600160a01b038316600090815260086020526040902054819060ff161580156112f657506001600160a01b03831660009081526009602052604090205460ff16155b1561139f5760006127106006548461130e9190611ae0565b6113189190611aff565b6007546001600160a01b0316600090815260208190526040812080549293508392909190611347908490611a96565b90915550506007546040518281526001600160a01b03918216918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361139b8183611ac9565b9150505b6001600160a01b038316600090815260208190526040812080548392906113c7908490611a96565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161141391815260200190565b60405180910390a350505050565b6001600160a01b0381166114835760405162461bcd60e51b815260206004820152602360248201527f4e65772077686974656c697374657220697320746865207a65726f206164647260448201526265737360e81b60648201526084016105e8565b600d546040516001600160a01b038084169216907f620f5bb871da7cc57c369f86df78dc68fa5c60b25b184897e77d415cfbc18fda90600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b031615806114f75750600a54155b1561150157505050565b600b5415801561151f5750600c546001600160a01b03848116911614155b80156115385750600c546001600160a01b038381169116145b80156115445750600081115b1561154e5742600b555b600c546001600160a01b0384811691161480156115795750600c546001600160a01b03838116911614155b1561173057600061158861063a565b50505050509050600081111561172e576000600a6115a7600184611ac9565b815481106115b7576115b7611a6a565b600091825260208083206001600160a01b03881684526002600490930201918201905260409091205490915060ff166116325760405162461bcd60e51b815260206004820152601e60248201527f4c4745202d204275796572206973206e6f742077686974656c6973746564000060448201526064016105e8565b60018101546001600160a01b038516600090815260038301602052604081205490911115611687576001600160a01b038516600090815260038301602052604090205460018301546116849190611ac9565b90505b808411156116e65760405162461bcd60e51b815260206004820152602660248201527f4c4745202d20416d6f756e7420657863656564732077686974656c697374206d6044820152656178696d756d60d01b60648201526084016105e8565b6001600160a01b038516600090815260038301602052604090205461170c908590611a96565b6001600160a01b03861660009081526003909301602052604090922091909155505b505b505050565b5080546000825560040290600052602060002090810190610fa291905b8082111561176c5760008082556001820155600401611752565b5090565b600060208083528351808285015260005b8181101561179d57858101830151858201604001528201611781565b818111156117af576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146117dc57600080fd5b919050565b600080604083850312156117f457600080fd5b6117fd836117c5565b946020939093013593505050565b60006020828403121561181d57600080fd5b611826826117c5565b9392505050565b60008060006060848603121561184257600080fd5b61184b846117c5565b9250611859602085016117c5565b9150604084013590509250925092565b60008083601f84011261187b57600080fd5b50813567ffffffffffffffff81111561189357600080fd5b6020830191508360208260051b85010111156118ae57600080fd5b9250929050565b60008060008060008060a087890312156118ce57600080fd5b863595506020870135945060408701359350606087013567ffffffffffffffff8111156118fa57600080fd5b61190689828a01611869565b9094509250506080870135801515811461191f57600080fd5b809150509295509295509295565b60008060008060006060868803121561194557600080fd5b61194e866117c5565b9450602086013567ffffffffffffffff8082111561196b57600080fd5b61197789838a01611869565b9096509450604088013591508082111561199057600080fd5b5061199d88828901611869565b969995985093965092949392505050565b6000602082840312156119c057600080fd5b5035919050565b600080604083850312156119da57600080fd5b6119e3836117c5565b91506119f1602084016117c5565b90509250929050565b600181811c90821680611a0e57607f821691505b60208210811415611a2f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115611aa957611aa9611a80565b500190565b6000600019821415611ac257611ac2611a80565b5060010190565b600082821015611adb57611adb611a80565b500390565b6000816000190483118215151615611afa57611afa611a80565b500290565b600082611b1c57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212205d12fdffa6c8ac5675aefbcdd5da316b96cb91c131a601b7471bb2be16f383c764736f6c63430008090033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000019d971e4fe8401e7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001302818823b63b8c8313a1d1444b07110cccf99b000000000000000000000000000000000000000000000000000000000000000f655965206f6e20457468657265756d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036559650000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): eYe on Ethereum
Arg [1] : symbol_ (string): eYe
Arg [2] : totalSupply_ (uint256): 500000000000000000000000000
Arg [3] : taxRate_ (uint256): 0
Arg [4] : taxReceiver_ (address): 0x1302818823b63B8C8313A1D1444B07110CCCF99B

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000019d971e4fe8401e74000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000001302818823b63b8c8313a1d1444b07110cccf99b
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [6] : 655965206f6e20457468657265756d0000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [8] : 6559650000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

18243:9960:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6088:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8255:169;;;;;;:::i;:::-;;:::i;:::-;;;1218:14:1;;1211:22;1193:41;;1181:2;1166:18;8255:169:0;1053:187:1;22442:203:0;;;;;;:::i;:::-;;:::i;:::-;;7208:108;7296:12;;7208:108;;;1582:25:1;;;1570:2;1555:18;7208:108:0;1436:177:1;20833:1022:0;;;:::i;:::-;;;;1899:25:1;;;1955:2;1940:18;;1933:34;;;;1983:18;;;1976:34;;;;2041:2;2026:18;;2019:34;2097:14;2090:22;2084:3;2069:19;;2062:51;2144:3;2129:19;;2122:35;1886:3;1871:19;20833:1022:0;1618:545:1;8906:492:0;;;;;;:::i;:::-;;:::i;7050:93::-;;;7133:2;2643:36:1;;2631:2;2616:18;7050:93:0;2501:184:1;9807:215:0;;;;;;:::i;:::-;;:::i;18892:30::-;;;;;-1:-1:-1;;;;;18892:30:0;;;;;;-1:-1:-1;;;;;2854:32:1;;;2836:51;;2824:2;2809:18;18892:30:0;2690:203:1;22653:202:0;;;;;;:::i;:::-;;:::i;24613:713::-;;;;;;:::i;:::-;;:::i;18855:30::-;;;;;-1:-1:-1;;;;;18855:30:0;;;22241:193;;;;;;:::i;:::-;;:::i;18708:53::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;18651:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;23579:676;;;;;;:::i;:::-;;:::i;22863:212::-;;;;;;:::i;:::-;;:::i;7379:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;7480:18:0;7453:7;7480:18;;;;;;;;;;;;7379:127;17689:148;;;:::i;18587:22::-;;;;;;17047:79;17112:6;;-1:-1:-1;;;;;17112:6:0;17047:79;;18530:43;;18569:4;18530:43;;6307:104;;;:::i;10525:413::-;;;;;;:::i;:::-;;:::i;18770:43::-;;;;;;:::i;:::-;;:::i;:::-;;;;5290:25:1;;;5346:2;5331:18;;5324:34;;;;5263:18;18770:43:0;5116:248:1;7719:175:0;;;;;;:::i;:::-;;:::i;18475:48::-;;18518:5;18475:48;;21863:208;;;;;;:::i;:::-;;:::i;22079:154::-;;;;;;:::i;:::-;;:::i;18820:28::-;;;;;;7957:151;;;;;;:::i;:::-;-1:-1:-1;;;;;8073:18:0;;;8046:7;8073:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7957:151;23083:139;;;;;;:::i;:::-;;:::i;18616:26::-;;;;;-1:-1:-1;;;;;18616:26:0;;;17992:244;;;;;;:::i;:::-;;:::i;6088:100::-;6142:13;6175:5;6168:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6088:100;:::o;8255:169::-;8338:4;8355:39;3975:10;8378:7;8387:6;8355:8;:39::i;:::-;-1:-1:-1;8412:4:0;8255:169;;;;:::o;22442:203::-;17259:6;;-1:-1:-1;;;;;17259:6:0;3975:10;17259:22;17251:67;;;;-1:-1:-1;;;17251:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;22533:36:0;::::1;22572:5;22533:36:::0;;;:18:::1;:36;::::0;;;;;:44;;-1:-1:-1;;22533:44:0::1;::::0;;22593;::::1;::::0;22572:5;22593:44:::1;22442:203:::0;:::o;20833:1022::-;20927:7;20949;20971;20993;21015:4;21034:7;21089:1;21073:13;;:17;21069:737;;;21138:13;;21107:28;21168:627;21192:19;:26;21188:30;;21168:627;;;21244:30;21277:19;21297:1;21277:22;;;;;;;;:::i;:::-;;;;;;;;;;;21244:55;;21366:7;:16;;;21343:20;:39;;;;:::i;:::-;21320:62;;21424:20;21405:15;:39;21401:378;;21501:5;:1;21505;21501:5;:::i;:::-;21533:16;;21623:17;;;;3975:10;21533:16;21667:31;;;:17;;;:31;;;;;;;;;21725:17;;;;:31;;;;;;21467:312;;-1:-1:-1;21533:16:0;;-1:-1:-1;21576:20:0;;-1:-1:-1;21623:17:0;;-1:-1:-1;21667:31:0;;;-1:-1:-1;21725:31:0;;-1:-1:-1;21467:312:0;;-1:-1:-1;21467:312:0;21401:378;-1:-1:-1;21220:3:0;;;;:::i;:::-;;;;21168:627;;;;21092:714;21069:737;-1:-1:-1;21826:1:0;;-1:-1:-1;21826:1:0;;-1:-1:-1;21826:1:0;;-1:-1:-1;21826:1:0;;-1:-1:-1;21826:1:0;;-1:-1:-1;21826:1:0;20833:1022;;;;;;;:::o;8906:492::-;9046:4;9063:36;9073:6;9081:9;9092:6;9063:9;:36::i;:::-;-1:-1:-1;;;;;9139:19:0;;9112:24;9139:19;;;:11;:19;;;;;;;;3975:10;9139:33;;;;;;;;9191:26;;;;9183:79;;;;-1:-1:-1;;;9183:79:0;;7119:2:1;9183:79:0;;;7101:21:1;7158:2;7138:18;;;7131:30;7197:34;7177:18;;;7170:62;-1:-1:-1;;;7248:18:1;;;7241:38;7296:19;;9183:79:0;6917:404:1;9183:79:0;9298:57;9307:6;3975:10;9348:6;9329:16;:25;9298:8;:57::i;:::-;-1:-1:-1;9386:4:0;;8906:492;-1:-1:-1;;;;8906:492:0:o;9807:215::-;3975:10;9895:4;9944:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9944:34:0;;;;;;;;;;9895:4;;9912:80;;9935:7;;9944:47;;9981:10;;9944:47;:::i;:::-;9912:8;:80::i;22653:202::-;17259:6;;-1:-1:-1;;;;;17259:6:0;3975:10;17259:22;17251:67;;;;-1:-1:-1;;;17251:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22742:39:0;::::1;;::::0;;;:21:::1;:39;::::0;;;;;:46;;-1:-1:-1;;22742:46:0::1;22784:4;22742:46;::::0;;22804:43;::::1;::::0;22742:39;22804:43:::1;22653:202:::0;:::o;24613:713::-;19479:15;;-1:-1:-1;;;;;19479:15:0;3975:10;19479:31;19471:73;;;;-1:-1:-1;;;19471:73:0;;7528:2:1;19471:73:0;;;7510:21:1;7567:2;7547:18;;;7540:30;7606:31;7586:18;;;7579:59;7655:18;;19471:73:0;7326:353:1;19471:73:0;24846:19:::1;:26:::0;24838:34;::::1;24830:60;;;::::0;-1:-1:-1;;;24830:60:0;;7886:2:1;24830:60:0::1;::::0;::::1;7868:21:1::0;7925:2;7905:18;;;7898:30;-1:-1:-1;;;7944:18:1;;;7937:43;7997:18;;24830:60:0::1;7684:337:1::0;24830:60:0::1;24921:1;24909:9;:13;24901:43;;;::::0;-1:-1:-1;;;24901:43:0;;8228:2:1;24901:43:0::1;::::0;::::1;8210:21:1::0;8267:2;8247:18;;;8240:30;-1:-1:-1;;;8286:18:1;;;8279:47;8343:18;;24901:43:0::1;8026:341:1::0;24901:43:0::1;24973:19;24993:5;24973:26;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;;24961:8;:47;24957:99;;25048:8;25010:19;25030:5;25010:26;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:46:::0;24957:99:::1;25086:19;25106:5;25086:26;;;;;;;;:::i;:::-;;;;;;;;;;;:36;;;25073:9;:49;25069:103;;25163:9;25124:19;25144:5;25124:26;;;;;;;;:::i;:::-;;;;;;;;;;;:36;;:48;;;;25069:103;25190:9;25185:134;25205:20:::0;;::::1;25185:134;;;25300:7;25247:19;25267:5;25247:26;;;;;;;;:::i;:::-;;;;;;;;;;;:36;;:50;25284:9;;25294:1;25284:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25247:50:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;25247:50:0;:60;;-1:-1:-1;;25247:60:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25227:3;::::1;::::0;::::1;:::i;:::-;;;;25185:134;;;;24613:713:::0;;;;;;:::o;22241:193::-;17259:6;;-1:-1:-1;;;;;17259:6:0;3975:10;17259:22;17251:67;;;;-1:-1:-1;;;17251:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22327:36:0;::::1;;::::0;;;:18:::1;:36;::::0;;;;;:43;;-1:-1:-1;;22327:43:0::1;22366:4;22327:43;::::0;;22386:40;::::1;::::0;22327:36;22386:40:::1;22241:193:::0;:::o;23579:676::-;19479:15;;-1:-1:-1;;;;;19479:15:0;3975:10;19479:31;19471:73;;;;-1:-1:-1;;;19471:73:0;;7528:2:1;19471:73:0;;;7510:21:1;7567:2;7547:18;;;7540:30;7606:31;7586:18;;;7579:59;7655:18;;19471:73:0;7326:353:1;19471:73:0;23772:37;;::::1;23764:70;;;::::0;-1:-1:-1;;;23764:70:0;;8574:2:1;23764:70:0::1;::::0;::::1;8556:21:1::0;8613:2;8593:18;;;8586:30;-1:-1:-1;;;8632:18:1;;;8625:50;8692:18;;23764:70:0::1;8372:344:1::0;23764:70:0::1;23847:15;:29:::0;;-1:-1:-1;;;;;;23847:29:0::1;-1:-1:-1::0;;;;;23847:29:0;::::1;;::::0;;23893:20;;23889:359:::1;;23930:26;23937:19;;23930:26;:::i;:::-;23978:9;23973:264;23993:20:::0;;::::1;23973:264;;;24079:19;:26:::0;;::::1;::::0;::::1;::::0;;24039:37:::1;24079:26:::0;;;;::::1;;::::0;::::1;24150:9:::0;;24160:1;24150:12;;::::1;;;;;:::i;:::-;;;::::0;;;::::1;;24124:38:::0;;-1:-1:-1;24208:10:0;;24219:1;24208:13;;::::1;;;;;:::i;:::-;;;;;;;24181:14;:24;;:40;;;;24020:217;24015:3;;;;;:::i;:::-;;;;23973:264;;;;23889:359;23579:676:::0;;;;;:::o;22863:212::-;17259:6;;-1:-1:-1;;;;;17259:6:0;3975:10;17259:22;17251:67;;;;-1:-1:-1;;;17251:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22957:39:0;::::1;22999:5;22957:39:::0;;;:21:::1;:39;::::0;;;;;:47;;-1:-1:-1;;22957:47:0::1;::::0;;23020;::::1;::::0;22999:5;23020:47:::1;22863:212:::0;:::o;17689:148::-;17259:6;;-1:-1:-1;;;;;17259:6:0;3975:10;17259:22;17251:67;;;;-1:-1:-1;;;17251:67:0;;;;;;;:::i;:::-;17780:6:::1;::::0;17759:40:::1;::::0;17796:1:::1;::::0;-1:-1:-1;;;;;17780:6:0::1;::::0;17759:40:::1;::::0;17796:1;;17759:40:::1;17810:6;:19:::0;;-1:-1:-1;;;;;;17810:19:0::1;::::0;;17689:148::o;6307:104::-;6363:13;6396:7;6389:14;;;;;:::i;10525:413::-;3975:10;10618:4;10662:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10662:34:0;;;;;;;;;;10715:35;;;;10707:85;;;;-1:-1:-1;;;10707:85:0;;8923:2:1;10707:85:0;;;8905:21:1;8962:2;8942:18;;;8935:30;9001:34;8981:18;;;8974:62;-1:-1:-1;;;9052:18:1;;;9045:35;9097:19;;10707:85:0;8721:401:1;10707:85:0;10828:67;3975:10;10851:7;10879:15;10860:16;:34;10828:8;:67::i;:::-;-1:-1:-1;10926:4:0;;10525:413;-1:-1:-1;;;10525:413:0:o;18770:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18770:43:0;:::o;7719:175::-;7805:4;7822:42;3975:10;7846:9;7857:6;7822:9;:42::i;21863:208::-;17259:6;;-1:-1:-1;;;;;17259:6:0;3975:10;17259:22;17251:67;;;;-1:-1:-1;;;17251:67:0;;;;;;;:::i;:::-;18569:4:::1;21939:8;:24;;21931:67;;;::::0;-1:-1:-1;;;21931:67:0;;9329:2:1;21931:67:0::1;::::0;::::1;9311:21:1::0;9368:2;9348:18;;;9341:30;9407:32;9387:18;;;9380:60;9457:18;;21931:67:0::1;9127:354:1::0;21931:67:0::1;22009:7;:18:::0;;;22043:20:::1;::::0;1582:25:1;;;22043:20:0::1;::::0;1570:2:1;1555:18;22043:20:0::1;;;;;;;;21863:208:::0;:::o;22079:154::-;17259:6;;-1:-1:-1;;;;;17259:6:0;3975:10;17259:22;17251:67;;;;-1:-1:-1;;;17251:67:0;;;;;;;:::i;:::-;22155:11:::1;:26:::0;;-1:-1:-1;;;;;;22155:26:0::1;-1:-1:-1::0;;;;;22155:26:0;::::1;::::0;;::::1;::::0;;;22197:28:::1;::::0;2836:51:1;;;22197:28:0::1;::::0;2824:2:1;2809:18;22197:28:0::1;2690:203:1::0;23083:139:0;17259:6;;-1:-1:-1;;;;;17259:6:0;3975:10;17259:22;17251:67;;;;-1:-1:-1;;;17251:67:0;;;;;;;:::i;:::-;23172:42:::1;23196:17;23172:23;:42::i;:::-;23083:139:::0;:::o;17992:244::-;17259:6;;-1:-1:-1;;;;;17259:6:0;3975:10;17259:22;17251:67;;;;-1:-1:-1;;;17251:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18081:22:0;::::1;18073:73;;;::::0;-1:-1:-1;;;18073:73:0;;9688:2:1;18073:73:0::1;::::0;::::1;9670:21:1::0;9727:2;9707:18;;;9700:30;9766:34;9746:18;;;9739:62;-1:-1:-1;;;9817:18:1;;;9810:36;9863:19;;18073:73:0::1;9486:402:1::0;18073:73:0::1;18183:6;::::0;18162:38:::1;::::0;-1:-1:-1;;;;;18162:38:0;;::::1;::::0;18183:6:::1;::::0;18162:38:::1;::::0;18183:6:::1;::::0;18162:38:::1;18211:6;:17:::0;;-1:-1:-1;;;;;;18211:17:0::1;-1:-1:-1::0;;;;;18211:17:0;;;::::1;::::0;;;::::1;::::0;;17992:244::o;14209:380::-;-1:-1:-1;;;;;14345:19:0;;14337:68;;;;-1:-1:-1;;;14337:68:0;;10095:2:1;14337:68:0;;;10077:21:1;10134:2;10114:18;;;10107:30;10173:34;10153:18;;;10146:62;-1:-1:-1;;;10224:18:1;;;10217:34;10268:19;;14337:68:0;9893:400:1;14337:68:0;-1:-1:-1;;;;;14424:21:0;;14416:68;;;;-1:-1:-1;;;14416:68:0;;10500:2:1;14416:68:0;;;10482:21:1;10539:2;10519:18;;;10512:30;10578:34;10558:18;;;10551:62;-1:-1:-1;;;10629:18:1;;;10622:32;10671:19;;14416:68:0;10298:398:1;14416:68:0;-1:-1:-1;;;;;14497:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14549:32;;1582:25:1;;;14549:32:0;;1555:18:1;14549:32:0;;;;;;;14209:380;;;:::o;25787:803::-;25886:45;25905:6;25913:9;25924:6;25886:18;:45::i;:::-;-1:-1:-1;;;;;25950:20:0;;25942:70;;;;-1:-1:-1;;;25942:70:0;;10903:2:1;25942:70:0;;;10885:21:1;10942:2;10922:18;;;10915:30;10981:34;10961:18;;;10954:62;-1:-1:-1;;;11032:18:1;;;11025:35;11077:19;;25942:70:0;10701:401:1;25942:70:0;-1:-1:-1;;;;;26031:23:0;;26023:71;;;;-1:-1:-1;;;26023:71:0;;11309:2:1;26023:71:0;;;11291:21:1;11348:2;11328:18;;;11321:30;11387:34;11367:18;;;11360:62;-1:-1:-1;;;11438:18:1;;;11431:33;11481:19;;26023:71:0;11107:399:1;26023:71:0;-1:-1:-1;;;;;26105:17:0;;:9;:17;;;;;;;;;;:27;;26126:6;;26105:9;:27;;26126:6;;26105:27;:::i;:::-;;;;-1:-1:-1;;;;;;;26185:26:0;;26143:18;26185:26;;;:18;:26;;;;;;26164:6;;26185:26;;26184:27;:64;;;;-1:-1:-1;;;;;;26216:32:0;;;;;;:21;:32;;;;;;;;26215:33;26184:64;26181:302;;;26265:17;18518:5;26295:7;;26286:6;:16;;;;:::i;:::-;26285:37;;;;:::i;:::-;26347:11;;-1:-1:-1;;;;;26347:11:0;26337:9;:22;;;;;;;;;;:36;;26265:57;;-1:-1:-1;26265:57:0;;26337:22;;:9;:36;;26265:57;;26337:36;:::i;:::-;;;;-1:-1:-1;;26410:11:0;;26393:40;;1582:25:1;;;-1:-1:-1;;;;;26410:11:0;;;;26393:40;;;;;1570:2:1;1555:18;26393:40:0;;;;;;;26448:23;26462:9;26448:23;;:::i;:::-;;;26250:233;26181:302;-1:-1:-1;;;;;26493:20:0;;:9;:20;;;;;;;;;;:34;;26517:10;;26493:9;:34;;26517:10;;26493:34;:::i;:::-;;;;;;;;26560:9;-1:-1:-1;;;;;26543:39:0;26552:6;-1:-1:-1;;;;;26543:39:0;;26571:10;26543:39;;;;1582:25:1;;1570:2;1555:18;;1436:177;26543:39:0;;;;;;;;25875:715;25787:803;;;:::o;27910:290::-;-1:-1:-1;;;;;27998:31:0;;27990:79;;;;-1:-1:-1;;;27990:79:0;;12238:2:1;27990:79:0;;;12220:21:1;12277:2;12257:18;;;12250:30;12316:34;12296:18;;;12289:62;-1:-1:-1;;;12367:18:1;;;12360:33;12410:19;;27990:79:0;12036:399:1;27990:79:0;28111:15;;28085:61;;-1:-1:-1;;;;;28085:61:0;;;;28111:15;;28085:61;;28111:15;;28085:61;28157:15;:35;;-1:-1:-1;;;;;;28157:35:0;-1:-1:-1;;;;;28157:35:0;;;;;;;;;;27910:290::o;26714:1188::-;26851:15;;-1:-1:-1;;;;;26851:15:0;:29;;:64;;-1:-1:-1;26884:19:0;:26;:31;26851:64;26847:77;;;26714:1188;;;:::o;26847:77::-;26940:13;;:18;:47;;;;-1:-1:-1;26972:15:0;;-1:-1:-1;;;;;26962:25:0;;;26972:15;;26962:25;;26940:47;:79;;;;-1:-1:-1;27004:15:0;;-1:-1:-1;;;;;26991:28:0;;;27004:15;;26991:28;26940:79;:93;;;;;27032:1;27023:6;:10;26940:93;26936:143;;;27064:15;27048:13;:31;26936:143;27106:15;;-1:-1:-1;;;;;27096:25:0;;;27106:15;;27096:25;:57;;;;-1:-1:-1;27138:15:0;;-1:-1:-1;;;;;27125:28:0;;;27138:15;;27125:28;;27096:57;27092:803;;;27195:21;27230:22;:20;:22::i;:::-;27194:58;;;;;;;27289:1;27273:13;:17;27269:615;;;27311:30;27344:19;27364:17;27380:1;27364:13;:17;:::i;:::-;27344:38;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;27411:28:0;;;;:17;27344:38;;;;;27411:17;;;:28;;;;;;;27344:38;;-1:-1:-1;27411:28:0;;27403:71;;;;-1:-1:-1;;;27403:71:0;;12642:2:1;27403:71:0;;;12624:21:1;12681:2;12661:18;;;12654:30;12720:32;12700:18;;;12693:60;12770:18;;27403:71:0;12440:354:1;27403:71:0;27578:17;;;;-1:-1:-1;;;;;27547:28:0;;27495:23;27547:28;;;:17;;;:28;;;;;;27495:23;;-1:-1:-1;27543:141:0;;;-1:-1:-1;;;;;27656:28:0;;;;;;:17;;;:28;;;;;;27636:17;;;;:48;;27656:28;27636:48;:::i;:::-;27618:66;;27543:141;27723:15;27713:6;:25;;27705:76;;;;-1:-1:-1;;;27705:76:0;;13001:2:1;27705:76:0;;;12983:21:1;13040:2;13020:18;;;13013:30;13079:34;13059:18;;;13052:62;-1:-1:-1;;;13130:18:1;;;13123:36;13176:19;;27705:76:0;12799:402:1;27705:76:0;-1:-1:-1;;;;;27831:28:0;;;;;;:17;;;:28;;;;;;:37;;27862:6;;27831:37;:::i;:::-;-1:-1:-1;;;;;27800:28:0;;;;;;:17;;;;:28;;;;;;:68;;;;-1:-1:-1;27269:615:0;27155:740;27092:803;26714:1188;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:597:1:-;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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:173::-;684:20;;-1:-1:-1;;;;;733:31:1;;723:42;;713:70;;779:1;776;769:12;713:70;616:173;;;:::o;794:254::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;1038:2;1023:18;;;;1010:32;;-1:-1:-1;;;794:254:1:o;1245:186::-;1304:6;1357:2;1345:9;1336:7;1332:23;1328:32;1325:52;;;1373:1;1370;1363:12;1325:52;1396:29;1415:9;1396:29;:::i;:::-;1386:39;1245:186;-1:-1:-1;;;1245:186:1:o;2168:328::-;2245:6;2253;2261;2314:2;2302:9;2293:7;2289:23;2285:32;2282:52;;;2330:1;2327;2320:12;2282:52;2353:29;2372:9;2353:29;:::i;:::-;2343:39;;2401:38;2435:2;2424:9;2420:18;2401:38;:::i;:::-;2391:48;;2486:2;2475:9;2471:18;2458:32;2448:42;;2168:328;;;;;:::o;2898:367::-;2961:8;2971:6;3025:3;3018:4;3010:6;3006:17;3002:27;2992:55;;3043:1;3040;3033:12;2992:55;-1:-1:-1;3066:20:1;;3109:18;3098:30;;3095:50;;;3141:1;3138;3131:12;3095:50;3178:4;3170:6;3166:17;3154:29;;3238:3;3231:4;3221:6;3218:1;3214:14;3206:6;3202:27;3198:38;3195:47;3192:67;;;3255:1;3252;3245:12;3192:67;2898:367;;;;;:::o;3270:804::-;3389:6;3397;3405;3413;3421;3429;3482:3;3470:9;3461:7;3457:23;3453:33;3450:53;;;3499:1;3496;3489:12;3450:53;3535:9;3522:23;3512:33;;3592:2;3581:9;3577:18;3564:32;3554:42;;3643:2;3632:9;3628:18;3615:32;3605:42;;3698:2;3687:9;3683:18;3670:32;3725:18;3717:6;3714:30;3711:50;;;3757:1;3754;3747:12;3711:50;3796:70;3858:7;3849:6;3838:9;3834:22;3796:70;:::i;:::-;3885:8;;-1:-1:-1;3770:96:1;-1:-1:-1;;3970:3:1;3955:19;;3942:33;4011:13;;4004:21;3994:32;;3984:60;;4040:1;4037;4030:12;3984:60;4063:5;4053:15;;;3270:804;;;;;;;;:::o;4079:847::-;4210:6;4218;4226;4234;4242;4295:2;4283:9;4274:7;4270:23;4266:32;4263:52;;;4311:1;4308;4301:12;4263:52;4334:29;4353:9;4334:29;:::i;:::-;4324:39;;4414:2;4403:9;4399:18;4386:32;4437:18;4478:2;4470:6;4467:14;4464:34;;;4494:1;4491;4484:12;4464:34;4533:70;4595:7;4586:6;4575:9;4571:22;4533:70;:::i;:::-;4622:8;;-1:-1:-1;4507:96:1;-1:-1:-1;4710:2:1;4695:18;;4682:32;;-1:-1:-1;4726:16:1;;;4723:36;;;4755:1;4752;4745:12;4723:36;;4794:72;4858:7;4847:8;4836:9;4832:24;4794:72;:::i;:::-;4079:847;;;;-1:-1:-1;4079:847:1;;-1:-1:-1;4885:8:1;;4768:98;4079:847;-1:-1:-1;;;4079:847:1:o;4931:180::-;4990:6;5043:2;5031:9;5022:7;5018:23;5014:32;5011:52;;;5059:1;5056;5049:12;5011:52;-1:-1:-1;5082:23:1;;4931:180;-1:-1:-1;4931:180:1:o;5369:260::-;5437:6;5445;5498:2;5486:9;5477:7;5473:23;5469:32;5466:52;;;5514:1;5511;5504:12;5466:52;5537:29;5556:9;5537:29;:::i;:::-;5527:39;;5585:38;5619:2;5608:9;5604:18;5585:38;:::i;:::-;5575:48;;5369:260;;;;;:::o;5634:380::-;5713:1;5709:12;;;;5756;;;5777:61;;5831:4;5823:6;5819:17;5809:27;;5777:61;5884:2;5876:6;5873:14;5853:18;5850:38;5847:161;;;5930:10;5925:3;5921:20;5918:1;5911:31;5965:4;5962:1;5955:15;5993:4;5990:1;5983:15;5847:161;;5634:380;;;:::o;6019:356::-;6221:2;6203:21;;;6240:18;;;6233:30;6299:34;6294:2;6279:18;;6272:62;6366:2;6351:18;;6019:356::o;6380:127::-;6441:10;6436:3;6432:20;6429:1;6422:31;6472:4;6469:1;6462:15;6496:4;6493:1;6486:15;6512:127;6573:10;6568:3;6564:20;6561:1;6554:31;6604:4;6601:1;6594:15;6628:4;6625:1;6618:15;6644:128;6684:3;6715:1;6711:6;6708:1;6705:13;6702:39;;;6721:18;;:::i;:::-;-1:-1:-1;6757:9:1;;6644:128::o;6777:135::-;6816:3;-1:-1:-1;;6837:17:1;;6834:43;;;6857:18;;:::i;:::-;-1:-1:-1;6904:1:1;6893:13;;6777:135::o;11511:125::-;11551:4;11579:1;11576;11573:8;11570:34;;;11584:18;;:::i;:::-;-1:-1:-1;11621:9:1;;11511:125::o;11641:168::-;11681:7;11747:1;11743;11739:6;11735:14;11732:1;11729:21;11724:1;11717:9;11710:17;11706:45;11703:71;;;11754:18;;:::i;:::-;-1:-1:-1;11794:9:1;;11641:168::o;11814:217::-;11854:1;11880;11870:132;;11924:10;11919:3;11915:20;11912:1;11905:31;11959:4;11956:1;11949:15;11987:4;11984:1;11977:15;11870:132;-1:-1:-1;12016:9:1;;11814:217::o

Swarm Source

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