ETH Price: $2,267.01 (+2.26%)
Gas: 1.4 Gwei

Token

DO2 Token (DO2)
 

Overview

Max Total Supply

1,000,000,000,000 DO2

Holders

924

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
*埃隆马斯克.eth
Balance
0 DO2

Value
$0.00
0xbcb881aa8d0b3e786d00d0ae83c52e0ed078dcc3
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
CreateNewToken

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-17
*/

/**
 *Submitted for verification at BscScan.com on 2021-07-30
*/

/**
 *  SPDX-License-Identifier: MIT
*/

pragma solidity 0.8.0;

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


// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

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

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

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


/**
 *  dex pancake interface
 */

interface IPancakeFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IPancakeRouter {
     function WETH() external pure returns (address);
     function factory() external pure returns (address);
     function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IPancakePair{
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

 interface TokenProtect{
    function check( address sender, address receiver, uint256 amount ) external;
 }

contract CreateNewToken is Context, IERC20, IERC20Metadata,Ownable {

    using SafeMath for uint256;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _buyList;

    uint256 private _totalSupply;
    uint256 private _initSupply = 1000000000000*10**18;
    uint256 public dexTaxFee = 200; //take fee while sell token to dex
    uint256 public dexTaxBuyFee = 200; 
    uint256 public _startTime;
    uint256 private _startAddTime;
    
    string private _name = "DO2 Token";
    string private _symbol = "DO2";
    
    address public taxAddress;
    address public taxBuyAddress;
    address public  pairAddress;
    address public  routerAddress;
    // address public protectAddress;
    address public usdtAddress;
    address public tax2Address;

    bool public enableLock = true;
    /**
     * @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() {
        _mint(msg.sender, _initSupply);
        address _taxAddress = 0x693429bF4b02dF67910087Da175FB7448e1C588f;
        address _tax2Address = 0x44E8bA40327d697FAF80db045322Ab40b89F5BEF;

        taxAddress = payable(_taxAddress);
        taxBuyAddress = payable(_taxAddress);
        tax2Address = payable(_tax2Address);

        // IPancakeRouter _router = IPancakeRouter(0x1f9cDE0C9364883B2546DaD437c263886c200fd5);//bnb test
        // IPancakeRouter _router = IPancakeRouter(0xc873fEcbd354f5A56E00E710B90EF4201db2448d);//arb 
        IPancakeRouter _router = IPancakeRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//ETH
       
        
        // set the rest of the contract variables
        routerAddress = address(_router);
        createPair();

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
    }

     function createPair() public onlyOwner {
         IPancakeRouter _router = IPancakeRouter(routerAddress);//arb 
         address wethAddress = _router.WETH();
        pairAddress = IPancakeFactory(_router.factory()).createPair(address(this), wethAddress);
    }

    function stopLock() public onlyOwner {
        require(enableLock,'Error');
        enableLock = false;
    }

    // function setPairAddress(address _pairAddress) public onlyOwner {
    //     pairAddress = _pairAddress;
    // }

    function setStartTime(uint256 startTime) public onlyOwner {
        _startTime = startTime;
    }

    function setStartAddTime(uint256 startAddTime) public onlyOwner {
        _startAddTime = startAddTime;
    }

    function setBuyOne(address account,bool _type) public onlyOwner {
        _buyList[account] = _type;
    }

    function setBuyList(address[] memory _addressList,bool _type) public onlyOwner {
        for(uint256 i=0;i<_addressList.length;i++){
             _buyList[_addressList[i]] = _type;
        }
    }
    
    // function setProtectAddress(address _address) public onlyOwner {
    //     protectAddress = _address;
    // }
    
    function excludeFromFee(address account,bool _type) public onlyOwner {
        _isExcludedFromFee[account] = _type;
    }
    function excludeFromFeeList(address[] memory _addressList,bool _type) public onlyOwner {
        for(uint256 i=0;i<_addressList.length;i++){
             _isExcludedFromFee[_addressList[i]] = _type;
        }
        
    }
    

    function setTaxAddress(address _taxAddress) public onlyOwner {
        taxAddress = _taxAddress;
    }

    function setTax2Address(address _tax2Address) public onlyOwner {
        tax2Address = _tax2Address;
    }

    // function setTax(uint256 _taxFee) public onlyOwner{
    //     dexTaxFee = _taxFee;
    // }

    function setTaxBuyAddress(address _taxAddress) public onlyOwner {
        taxBuyAddress = _taxAddress;
    }



    // function setBuyTax(uint256 _taxFee) public onlyOwner{
    //     dexTaxBuyFee = _taxFee;
    // }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function amountForEth(uint256 ethAmount) public view returns(uint256 tokenAmount){
        address _token0Address = IPancakePair(pairAddress).token0();
        address wethAddress = IPancakeRouter(routerAddress).WETH();

        (uint112 _reserve0,uint112 _reserve1,) = IPancakePair(pairAddress).getReserves();
        uint256 _tokenAmount;
        uint256 _wethAmount;
        if(_token0Address==wethAddress){
            _wethAmount = _reserve0;
            _tokenAmount = _reserve1;
        }
        else{
            _wethAmount = _reserve1;
            _tokenAmount = _reserve0;
        }
        tokenAmount = ethAmount.mul(_tokenAmount).div(_wethAmount);
    }

    /**
     * @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].add(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.sub(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");
        
        if((recipient==pairAddress || sender==pairAddress)&& enableLock){
            if(!_buyList[sender] && !_buyList[recipient]){
                require(block.timestamp>=(_startTime+_startAddTime),'ERC20: ERROR!');
            }else{
                require(block.timestamp>=_startTime,'ERC20: ERROR');
            }
        }
       
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        unchecked {
            _balances[sender] = senderBalance.sub(amount);
        }

        bool takeFee = true;
        if (_isExcludedFromFee[sender]) {
            takeFee = false;
        }
        if(takeFee){
            if(recipient==pairAddress){
                if(dexTaxFee>0){
                    uint256 taxFee = amount.mul(dexTaxFee).div(10000);
                    uint256 taxFeeHalf = taxFee.div(2);
                    _balances[taxAddress] = _balances[taxAddress].add(taxFeeHalf);
                    emit Transfer(sender, taxAddress, taxFeeHalf);
                    _balances[tax2Address] = _balances[tax2Address].add(taxFeeHalf);
                    emit Transfer(sender, tax2Address, taxFeeHalf);
                    amount = amount.sub(taxFee);
                }
            }else if(sender==pairAddress){
                if(dexTaxBuyFee>0){
                    uint256 taxBuyFee = amount.mul(dexTaxBuyFee).div(10000);
                    uint256 taxBuyFeeHalf = taxBuyFee.div(2);
                    _balances[taxBuyAddress] = _balances[taxBuyAddress].add(taxBuyFeeHalf);
                    emit Transfer(sender, taxBuyAddress, taxBuyFeeHalf);
                    _balances[tax2Address] = _balances[tax2Address].add(taxBuyFeeHalf);
                    emit Transfer(sender, tax2Address, taxBuyFeeHalf);

                    amount = amount.sub(taxBuyFee);
                }
            }
        }
        

        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
    

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

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


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

}

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":"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":"_startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uint256","name":"ethAmount","type":"uint256"}],"name":"amountForEth","outputs":[{"internalType":"uint256","name":"tokenAmount","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":[],"name":"createPair","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":"dexTaxBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"_type","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addressList","type":"address[]"},{"internalType":"bool","name":"_type","type":"bool"}],"name":"excludeFromFeeList","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":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"pairAddress","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":"_addressList","type":"address[]"},{"internalType":"bool","name":"_type","type":"bool"}],"name":"setBuyList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"_type","type":"bool"}],"name":"setBuyOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startAddTime","type":"uint256"}],"name":"setStartAddTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startTime","type":"uint256"}],"name":"setStartTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tax2Address","type":"address"}],"name":"setTax2Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxAddress","type":"address"}],"name":"setTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxAddress","type":"address"}],"name":"setTaxBuyAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tax2Address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyAddress","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdtAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6c0c9f2c9cd04674edea4000000060065560c8600781905560085560c06040526009608081905268222799102a37b5b2b760b91b60a09081526200004791600b9190620004db565b506040805180820190915260038082526222279960e91b60209092019182526200007491600c91620004db565b506012805460ff60a01b1916600160a01b1790553480156200009557600080fd5b50620000aa620000a462000197565b6200019b565b620000be33600654620001eb60201b60201c565b600d805473693429bf4b02df67910087da175fb7448e1c588f6001600160a01b03199182168117909255600e8054821683179055601280547344e8ba40327d697faf80db045322ab40b89f5bef908316811790915560108054737a250d5630b4cf539739df2c5dacb4c659f2488d931683179055906200013d620002cb565b6001600360006200014d620004b7565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526003909252902080549091166001179055506200069b915050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166200021d5760405162461bcd60e51b81526004016200021490620005f9565b60405180910390fd5b6200023981600554620004c660201b620010a41790919060201c565b6005556001600160a01b0382166000908152600160209081526040909120546200026e918390620010a4620004c6821b17901c565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620002bf90859062000630565b60405180910390a35050565b620002d562000197565b6001600160a01b0316620002e8620004b7565b6001600160a01b031614620003115760405162461bcd60e51b81526004016200021490620005c4565b601054604080516315ab88c960e31b815290516001600160a01b0390921691600091839163ad5c464891600480820192602092909190829003018186803b1580156200035c57600080fd5b505afa15801562000371573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000397919062000581565b9050816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003d357600080fd5b505afa158015620003e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040e919062000581565b6001600160a01b031663c9c6539630836040518363ffffffff1660e01b81526004016200043d929190620005aa565b602060405180830381600087803b1580156200045857600080fd5b505af11580156200046d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000493919062000581565b600f80546001600160a01b0319166001600160a01b03929092169190911790555050565b6000546001600160a01b031690565b6000620004d4828462000639565b9392505050565b828054620004e9906200065e565b90600052602060002090601f0160209004810192826200050d576000855562000558565b82601f106200052857805160ff191683800117855562000558565b8280016001018555821562000558579182015b82811115620005585782518255916020019190600101906200053b565b50620005669291506200056a565b5090565b5b808211156200056657600081556001016200056b565b60006020828403121562000593578081fd5b81516001600160a01b0381168114620004d4578182fd5b6001600160a01b0392831681529116602082015260400190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b600082198211156200065957634e487b7160e01b81526011600452602481fd5b500190565b6002810460018216806200067357607f821691505b602082108114156200069557634e487b7160e01b600052602260045260246000fd5b50919050565b611dd680620006ab6000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806370a0823111610130578063a8b08982116100b8578063dd62ed3e1161007c578063dd62ed3e14610428578063df8408fe1461043b578063e6f8d3af1461044e578063f2fde38b14610456578063fa1acb5c1461046957610227565b8063a8b08982146103ea578063a9059cbb146103f2578063b7bda68f14610405578063c4a8d9d41461040d578063d9de569a1461042057610227565b80639ab4a445116100ff5780639ab4a445146103ac5780639b448c5c146103b45780639e78fb4f146103bc578063a1883d26146103c4578063a457c2d7146103d757610227565b806370a0823114610381578063715018a6146103945780638da5cb5b1461039c57806395d89b41146103a457610227565b8063374032a1116101b35780633fa24303116101825780633fa24303146103225780634cbe1f47146103355780635342acb4146103485780635cf2437d1461035b5780635d4d59651461036e57610227565b8063374032a1146102ec578063383edd55146102f457806339509351146102fc5780633e0a322d1461030f57610227565b806323b872dd116101fa57806323b872dd14610294578063250df039146102a75780632f1cec04146102af578063313ce567146102c25780633268cc56146102d757610227565b806306fdde031461022c578063095ea7b31461024a57806316a5c2b41461026a57806318160ddd1461027f575b600080fd5b610234610471565b6040516102419190611949565b60405180910390f35b61025d6102583660046117ac565b610503565b604051610241919061193e565b61027d6102783660046117d7565b610520565b005b6102876105e2565b6040516102419190611c64565b61025d6102a2366004611738565b6105e8565b61027d610678565b61027d6102bd3660046116c8565b6106ef565b6102ca610750565b6040516102419190611c6d565b6102df610755565b6040516102419190611910565b61025d610764565b6102df610774565b61025d61030a3660046117ac565b610783565b61027d61031d3660046118f8565b6107d6565b61027d610330366004611778565b61081a565b61027d6103433660046116c8565b610884565b61025d6103563660046116c8565b6108e5565b61027d6103693660046118f8565b610907565b61028761037c3660046118f8565b61094b565b61028761038f3660046116c8565b610b51565b61027d610b6c565b6102df610bb7565b610234610bc6565b6102df610bd5565b610287610be4565b61027d610bea565b61027d6103d23660046116c8565b610dc1565b61025d6103e53660046117ac565b610e22565b6102df610e9d565b61025d6104003660046117ac565b610eac565b6102df610ec0565b61027d61041b3660046117d7565b610ecf565b610287610f83565b610287610436366004611700565b610f89565b61027d610449366004611778565b610fb4565b6102df61101e565b61027d6104643660046116c8565b61102d565b61028761109e565b6060600b805461048090611ce9565b80601f01602080910402602001604051908101604052809291908181526020018280546104ac90611ce9565b80156104f95780601f106104ce576101008083540402835291602001916104f9565b820191906000526020600020905b8154815290600101906020018083116104dc57829003601f168201915b5050505050905090565b60006105176105106110b7565b84846110bb565b50600192915050565b6105286110b7565b6001600160a01b0316610539610bb7565b6001600160a01b0316146105685760405162461bcd60e51b815260040161055f90611b1b565b60405180910390fd5b60005b82518110156105dd57816004600085848151811061059957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806105d581611d24565b91505061056b565b505050565b60055490565b60006105f584848461116f565b6001600160a01b0384166000908152600260205260408120816106166110b7565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828110156106595760405162461bcd60e51b815260040161055f90611ad3565b61066d856106656110b7565b8584036110bb565b506001949350505050565b6106806110b7565b6001600160a01b0316610691610bb7565b6001600160a01b0316146106b75760405162461bcd60e51b815260040161055f90611b1b565b601254600160a01b900460ff166106e05760405162461bcd60e51b815260040161055f90611c00565b6012805460ff60a01b19169055565b6106f76110b7565b6001600160a01b0316610708610bb7565b6001600160a01b03161461072e5760405162461bcd60e51b815260040161055f90611b1b565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b601290565b6010546001600160a01b031681565b601254600160a01b900460ff1681565b6012546001600160a01b031681565b60006105176107906110b7565b846107d185600260006107a16110b7565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906110a4565b6110bb565b6107de6110b7565b6001600160a01b03166107ef610bb7565b6001600160a01b0316146108155760405162461bcd60e51b815260040161055f90611b1b565b600955565b6108226110b7565b6001600160a01b0316610833610bb7565b6001600160a01b0316146108595760405162461bcd60e51b815260040161055f90611b1b565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b61088c6110b7565b6001600160a01b031661089d610bb7565b6001600160a01b0316146108c35760405162461bcd60e51b815260040161055f90611b1b565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526003602052604090205460ff165b919050565b61090f6110b7565b6001600160a01b0316610920610bb7565b6001600160a01b0316146109465760405162461bcd60e51b815260040161055f90611b1b565b600a55565b600080600f60009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561099c57600080fd5b505afa1580156109b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d491906116e4565b90506000601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2657600080fd5b505afa158015610a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5e91906116e4565b9050600080600f60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae991906118aa565b5091509150600080846001600160a01b0316866001600160a01b03161415610b205750506001600160701b03818116908316610b31565b50506001600160701b038281169082165b610b4581610b3f8a85611622565b9061162e565b98975050505050505050565b6001600160a01b031660009081526001602052604090205490565b610b746110b7565b6001600160a01b0316610b85610bb7565b6001600160a01b031614610bab5760405162461bcd60e51b815260040161055f90611b1b565b610bb5600061163a565b565b6000546001600160a01b031690565b6060600c805461048090611ce9565b6011546001600160a01b031681565b60085481565b610bf26110b7565b6001600160a01b0316610c03610bb7565b6001600160a01b031614610c295760405162461bcd60e51b815260040161055f90611b1b565b601054604080516315ab88c960e31b815290516001600160a01b0390921691600091839163ad5c464891600480820192602092909190829003018186803b158015610c7357600080fd5b505afa158015610c87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cab91906116e4565b9050816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ce657600080fd5b505afa158015610cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1e91906116e4565b6001600160a01b031663c9c6539630836040518363ffffffff1660e01b8152600401610d4b929190611924565b602060405180830381600087803b158015610d6557600080fd5b505af1158015610d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9d91906116e4565b600f80546001600160a01b0319166001600160a01b03929092169190911790555050565b610dc96110b7565b6001600160a01b0316610dda610bb7565b6001600160a01b031614610e005760405162461bcd60e51b815260040161055f90611b1b565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60008060026000610e316110b7565b6001600160a01b0390811682526020808301939093526040918201600090812091881681529252902054905082811015610e7d5760405162461bcd60e51b815260040161055f90611c1f565b610e93610e886110b7565b856107d1848761168a565b5060019392505050565b600f546001600160a01b031681565b6000610517610eb96110b7565b848461116f565b600d546001600160a01b031681565b610ed76110b7565b6001600160a01b0316610ee8610bb7565b6001600160a01b031614610f0e5760405162461bcd60e51b815260040161055f90611b1b565b60005b82518110156105dd578160036000858481518110610f3f57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f7b81611d24565b915050610f11565b60075481565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610fbc6110b7565b6001600160a01b0316610fcd610bb7565b6001600160a01b031614610ff35760405162461bcd60e51b815260040161055f90611b1b565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b600e546001600160a01b031681565b6110356110b7565b6001600160a01b0316611046610bb7565b6001600160a01b03161461106c5760405162461bcd60e51b815260040161055f90611b1b565b6001600160a01b0381166110925760405162461bcd60e51b815260040161055f906119df565b61109b8161163a565b50565b60095481565b60006110b08284611c7b565b9392505050565b3390565b6001600160a01b0383166110e15760405162461bcd60e51b815260040161055f90611bbc565b6001600160a01b0382166111075760405162461bcd60e51b815260040161055f90611a25565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611162908590611c64565b60405180910390a3505050565b6001600160a01b0383166111955760405162461bcd60e51b815260040161055f90611b77565b6001600160a01b0382166111bb5760405162461bcd60e51b815260040161055f9061199c565b600f546001600160a01b03838116911614806111e45750600f546001600160a01b038481169116145b80156111f95750601254600160a01b900460ff165b1561129b576001600160a01b03831660009081526004602052604090205460ff1615801561124057506001600160a01b03821660009081526004602052604090205460ff16155b1561127957600a546009546112559190611c7b565b4210156112745760405162461bcd60e51b815260040161055f90611b50565b61129b565b60095442101561129b5760405162461bcd60e51b815260040161055f90611aad565b6001600160a01b038316600090815260016020526040902054818110156112d45760405162461bcd60e51b815260040161055f90611a67565b6112de818361168a565b6001600160a01b038516600090815260016020818152604080842094909455600390529190205460ff1615611311575060005b80156115b057600f546001600160a01b03858116911614156114665760075415611461576000611352612710610b3f6007548761162290919063ffffffff16565b9050600061136182600261162e565b600d546001600160a01b031660009081526001602052604090205490915061138990826110a4565b600d80546001600160a01b039081166000908152600160205260409081902093909355905491519181169190891690600080516020611d81833981519152906113d3908590611c64565b60405180910390a36012546001600160a01b031660009081526001602052604090205461140090826110a4565b601280546001600160a01b039081166000908152600160205260409081902093909355905491519181169190891690600080516020611d818339815191529061144a908590611c64565b60405180910390a361145c858361168a565b945050505b6115b0565b600f546001600160a01b03868116911614156115b057600854156115b05760006114a1612710610b3f6008548761162290919063ffffffff16565b905060006114b082600261162e565b600e546001600160a01b03166000908152600160205260409020549091506114d890826110a4565b600e80546001600160a01b039081166000908152600160205260409081902093909355905491519181169190891690600080516020611d8183398151915290611522908590611c64565b60405180910390a36012546001600160a01b031660009081526001602052604090205461154f90826110a4565b601280546001600160a01b039081166000908152600160205260409081902093909355905491519181169190891690600080516020611d8183398151915290611599908590611c64565b60405180910390a36115ab858361168a565b945050505b6001600160a01b0384166000908152600160205260409020546115d390846110a4565b6001600160a01b038086166000818152600160205260409081902093909355915190871690600080516020611d8183398151915290611613908790611c64565b60405180910390a35050505050565b60006110b08284611cb3565b60006110b08284611c93565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006110b08284611cd2565b803561090281611d6b565b8035801515811461090257600080fd5b80516001600160701b038116811461090257600080fd5b6000602082840312156116d9578081fd5b81356110b081611d6b565b6000602082840312156116f5578081fd5b81516110b081611d6b565b60008060408385031215611712578081fd5b823561171d81611d6b565b9150602083013561172d81611d6b565b809150509250929050565b60008060006060848603121561174c578081fd5b833561175781611d6b565b9250602084013561176781611d6b565b929592945050506040919091013590565b6000806040838503121561178a578182fd5b823561179581611d6b565b91506117a3602084016116a1565b90509250929050565b600080604083850312156117be578182fd5b82356117c981611d6b565b946020939093013593505050565b600080604083850312156117e9578182fd5b823567ffffffffffffffff80821115611800578384fd5b818501915085601f830112611813578384fd5b813560208282111561182757611827611d55565b8082026040518282820101818110868211171561184657611846611d55565b604052838152828101945085830182870184018b1015611864578889fd5b8896505b8487101561188d5761187981611696565b865260019690960195948301948301611868565b50965061189d90508782016116a1565b9450505050509250929050565b6000806000606084860312156118be578283fd5b6118c7846116b1565b92506118d5602085016116b1565b9150604084015163ffffffff811681146118ed578182fd5b809150509250925092565b600060208284031215611909578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b901515815260200190565b6000602080835283518082850152825b8181101561197557858101830151858201604001528201611959565b818111156119865783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b6020808252600c908201526b22a92199181d1022a92927a960a11b604082015260600190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600d908201526c45524332303a204552524f522160981b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526005908201526422b93937b960d91b604082015260600190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b90815260200190565b60ff91909116815260200190565b60008219821115611c8e57611c8e611d3f565b500190565b600082611cae57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611ccd57611ccd611d3f565b500290565b600082821015611ce457611ce4611d3f565b500390565b600281046001821680611cfd57607f821691505b60208210811415611d1e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611d3857611d38611d3f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461109b57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f1a8f87f570e8b57b0d5674299e75f87902145b3a47696daa73ef9902793761e64736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102275760003560e01c806370a0823111610130578063a8b08982116100b8578063dd62ed3e1161007c578063dd62ed3e14610428578063df8408fe1461043b578063e6f8d3af1461044e578063f2fde38b14610456578063fa1acb5c1461046957610227565b8063a8b08982146103ea578063a9059cbb146103f2578063b7bda68f14610405578063c4a8d9d41461040d578063d9de569a1461042057610227565b80639ab4a445116100ff5780639ab4a445146103ac5780639b448c5c146103b45780639e78fb4f146103bc578063a1883d26146103c4578063a457c2d7146103d757610227565b806370a0823114610381578063715018a6146103945780638da5cb5b1461039c57806395d89b41146103a457610227565b8063374032a1116101b35780633fa24303116101825780633fa24303146103225780634cbe1f47146103355780635342acb4146103485780635cf2437d1461035b5780635d4d59651461036e57610227565b8063374032a1146102ec578063383edd55146102f457806339509351146102fc5780633e0a322d1461030f57610227565b806323b872dd116101fa57806323b872dd14610294578063250df039146102a75780632f1cec04146102af578063313ce567146102c25780633268cc56146102d757610227565b806306fdde031461022c578063095ea7b31461024a57806316a5c2b41461026a57806318160ddd1461027f575b600080fd5b610234610471565b6040516102419190611949565b60405180910390f35b61025d6102583660046117ac565b610503565b604051610241919061193e565b61027d6102783660046117d7565b610520565b005b6102876105e2565b6040516102419190611c64565b61025d6102a2366004611738565b6105e8565b61027d610678565b61027d6102bd3660046116c8565b6106ef565b6102ca610750565b6040516102419190611c6d565b6102df610755565b6040516102419190611910565b61025d610764565b6102df610774565b61025d61030a3660046117ac565b610783565b61027d61031d3660046118f8565b6107d6565b61027d610330366004611778565b61081a565b61027d6103433660046116c8565b610884565b61025d6103563660046116c8565b6108e5565b61027d6103693660046118f8565b610907565b61028761037c3660046118f8565b61094b565b61028761038f3660046116c8565b610b51565b61027d610b6c565b6102df610bb7565b610234610bc6565b6102df610bd5565b610287610be4565b61027d610bea565b61027d6103d23660046116c8565b610dc1565b61025d6103e53660046117ac565b610e22565b6102df610e9d565b61025d6104003660046117ac565b610eac565b6102df610ec0565b61027d61041b3660046117d7565b610ecf565b610287610f83565b610287610436366004611700565b610f89565b61027d610449366004611778565b610fb4565b6102df61101e565b61027d6104643660046116c8565b61102d565b61028761109e565b6060600b805461048090611ce9565b80601f01602080910402602001604051908101604052809291908181526020018280546104ac90611ce9565b80156104f95780601f106104ce576101008083540402835291602001916104f9565b820191906000526020600020905b8154815290600101906020018083116104dc57829003601f168201915b5050505050905090565b60006105176105106110b7565b84846110bb565b50600192915050565b6105286110b7565b6001600160a01b0316610539610bb7565b6001600160a01b0316146105685760405162461bcd60e51b815260040161055f90611b1b565b60405180910390fd5b60005b82518110156105dd57816004600085848151811061059957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806105d581611d24565b91505061056b565b505050565b60055490565b60006105f584848461116f565b6001600160a01b0384166000908152600260205260408120816106166110b7565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828110156106595760405162461bcd60e51b815260040161055f90611ad3565b61066d856106656110b7565b8584036110bb565b506001949350505050565b6106806110b7565b6001600160a01b0316610691610bb7565b6001600160a01b0316146106b75760405162461bcd60e51b815260040161055f90611b1b565b601254600160a01b900460ff166106e05760405162461bcd60e51b815260040161055f90611c00565b6012805460ff60a01b19169055565b6106f76110b7565b6001600160a01b0316610708610bb7565b6001600160a01b03161461072e5760405162461bcd60e51b815260040161055f90611b1b565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b601290565b6010546001600160a01b031681565b601254600160a01b900460ff1681565b6012546001600160a01b031681565b60006105176107906110b7565b846107d185600260006107a16110b7565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906110a4565b6110bb565b6107de6110b7565b6001600160a01b03166107ef610bb7565b6001600160a01b0316146108155760405162461bcd60e51b815260040161055f90611b1b565b600955565b6108226110b7565b6001600160a01b0316610833610bb7565b6001600160a01b0316146108595760405162461bcd60e51b815260040161055f90611b1b565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b61088c6110b7565b6001600160a01b031661089d610bb7565b6001600160a01b0316146108c35760405162461bcd60e51b815260040161055f90611b1b565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526003602052604090205460ff165b919050565b61090f6110b7565b6001600160a01b0316610920610bb7565b6001600160a01b0316146109465760405162461bcd60e51b815260040161055f90611b1b565b600a55565b600080600f60009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561099c57600080fd5b505afa1580156109b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d491906116e4565b90506000601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2657600080fd5b505afa158015610a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5e91906116e4565b9050600080600f60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae991906118aa565b5091509150600080846001600160a01b0316866001600160a01b03161415610b205750506001600160701b03818116908316610b31565b50506001600160701b038281169082165b610b4581610b3f8a85611622565b9061162e565b98975050505050505050565b6001600160a01b031660009081526001602052604090205490565b610b746110b7565b6001600160a01b0316610b85610bb7565b6001600160a01b031614610bab5760405162461bcd60e51b815260040161055f90611b1b565b610bb5600061163a565b565b6000546001600160a01b031690565b6060600c805461048090611ce9565b6011546001600160a01b031681565b60085481565b610bf26110b7565b6001600160a01b0316610c03610bb7565b6001600160a01b031614610c295760405162461bcd60e51b815260040161055f90611b1b565b601054604080516315ab88c960e31b815290516001600160a01b0390921691600091839163ad5c464891600480820192602092909190829003018186803b158015610c7357600080fd5b505afa158015610c87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cab91906116e4565b9050816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ce657600080fd5b505afa158015610cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1e91906116e4565b6001600160a01b031663c9c6539630836040518363ffffffff1660e01b8152600401610d4b929190611924565b602060405180830381600087803b158015610d6557600080fd5b505af1158015610d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9d91906116e4565b600f80546001600160a01b0319166001600160a01b03929092169190911790555050565b610dc96110b7565b6001600160a01b0316610dda610bb7565b6001600160a01b031614610e005760405162461bcd60e51b815260040161055f90611b1b565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60008060026000610e316110b7565b6001600160a01b0390811682526020808301939093526040918201600090812091881681529252902054905082811015610e7d5760405162461bcd60e51b815260040161055f90611c1f565b610e93610e886110b7565b856107d1848761168a565b5060019392505050565b600f546001600160a01b031681565b6000610517610eb96110b7565b848461116f565b600d546001600160a01b031681565b610ed76110b7565b6001600160a01b0316610ee8610bb7565b6001600160a01b031614610f0e5760405162461bcd60e51b815260040161055f90611b1b565b60005b82518110156105dd578160036000858481518110610f3f57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f7b81611d24565b915050610f11565b60075481565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610fbc6110b7565b6001600160a01b0316610fcd610bb7565b6001600160a01b031614610ff35760405162461bcd60e51b815260040161055f90611b1b565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b600e546001600160a01b031681565b6110356110b7565b6001600160a01b0316611046610bb7565b6001600160a01b03161461106c5760405162461bcd60e51b815260040161055f90611b1b565b6001600160a01b0381166110925760405162461bcd60e51b815260040161055f906119df565b61109b8161163a565b50565b60095481565b60006110b08284611c7b565b9392505050565b3390565b6001600160a01b0383166110e15760405162461bcd60e51b815260040161055f90611bbc565b6001600160a01b0382166111075760405162461bcd60e51b815260040161055f90611a25565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611162908590611c64565b60405180910390a3505050565b6001600160a01b0383166111955760405162461bcd60e51b815260040161055f90611b77565b6001600160a01b0382166111bb5760405162461bcd60e51b815260040161055f9061199c565b600f546001600160a01b03838116911614806111e45750600f546001600160a01b038481169116145b80156111f95750601254600160a01b900460ff165b1561129b576001600160a01b03831660009081526004602052604090205460ff1615801561124057506001600160a01b03821660009081526004602052604090205460ff16155b1561127957600a546009546112559190611c7b565b4210156112745760405162461bcd60e51b815260040161055f90611b50565b61129b565b60095442101561129b5760405162461bcd60e51b815260040161055f90611aad565b6001600160a01b038316600090815260016020526040902054818110156112d45760405162461bcd60e51b815260040161055f90611a67565b6112de818361168a565b6001600160a01b038516600090815260016020818152604080842094909455600390529190205460ff1615611311575060005b80156115b057600f546001600160a01b03858116911614156114665760075415611461576000611352612710610b3f6007548761162290919063ffffffff16565b9050600061136182600261162e565b600d546001600160a01b031660009081526001602052604090205490915061138990826110a4565b600d80546001600160a01b039081166000908152600160205260409081902093909355905491519181169190891690600080516020611d81833981519152906113d3908590611c64565b60405180910390a36012546001600160a01b031660009081526001602052604090205461140090826110a4565b601280546001600160a01b039081166000908152600160205260409081902093909355905491519181169190891690600080516020611d818339815191529061144a908590611c64565b60405180910390a361145c858361168a565b945050505b6115b0565b600f546001600160a01b03868116911614156115b057600854156115b05760006114a1612710610b3f6008548761162290919063ffffffff16565b905060006114b082600261162e565b600e546001600160a01b03166000908152600160205260409020549091506114d890826110a4565b600e80546001600160a01b039081166000908152600160205260409081902093909355905491519181169190891690600080516020611d8183398151915290611522908590611c64565b60405180910390a36012546001600160a01b031660009081526001602052604090205461154f90826110a4565b601280546001600160a01b039081166000908152600160205260409081902093909355905491519181169190891690600080516020611d8183398151915290611599908590611c64565b60405180910390a36115ab858361168a565b945050505b6001600160a01b0384166000908152600160205260409020546115d390846110a4565b6001600160a01b038086166000818152600160205260409081902093909355915190871690600080516020611d8183398151915290611613908790611c64565b60405180910390a35050505050565b60006110b08284611cb3565b60006110b08284611c93565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006110b08284611cd2565b803561090281611d6b565b8035801515811461090257600080fd5b80516001600160701b038116811461090257600080fd5b6000602082840312156116d9578081fd5b81356110b081611d6b565b6000602082840312156116f5578081fd5b81516110b081611d6b565b60008060408385031215611712578081fd5b823561171d81611d6b565b9150602083013561172d81611d6b565b809150509250929050565b60008060006060848603121561174c578081fd5b833561175781611d6b565b9250602084013561176781611d6b565b929592945050506040919091013590565b6000806040838503121561178a578182fd5b823561179581611d6b565b91506117a3602084016116a1565b90509250929050565b600080604083850312156117be578182fd5b82356117c981611d6b565b946020939093013593505050565b600080604083850312156117e9578182fd5b823567ffffffffffffffff80821115611800578384fd5b818501915085601f830112611813578384fd5b813560208282111561182757611827611d55565b8082026040518282820101818110868211171561184657611846611d55565b604052838152828101945085830182870184018b1015611864578889fd5b8896505b8487101561188d5761187981611696565b865260019690960195948301948301611868565b50965061189d90508782016116a1565b9450505050509250929050565b6000806000606084860312156118be578283fd5b6118c7846116b1565b92506118d5602085016116b1565b9150604084015163ffffffff811681146118ed578182fd5b809150509250925092565b600060208284031215611909578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b901515815260200190565b6000602080835283518082850152825b8181101561197557858101830151858201604001528201611959565b818111156119865783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b6020808252600c908201526b22a92199181d1022a92927a960a11b604082015260600190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600d908201526c45524332303a204552524f522160981b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526005908201526422b93937b960d91b604082015260600190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b90815260200190565b60ff91909116815260200190565b60008219821115611c8e57611c8e611d3f565b500190565b600082611cae57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611ccd57611ccd611d3f565b500290565b600082821015611ce457611ce4611d3f565b500390565b600281046001821680611cfd57607f821691505b60208210811415611d1e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611d3857611d38611d3f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461109b57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f1a8f87f570e8b57b0d5674299e75f87902145b3a47696daa73ef9902793761e64736f6c63430008000033

Deployed Bytecode Sourcemap

14165:14376:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19392:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21559:169;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;17232:200::-;;;;;;:::i;:::-;;:::i;:::-;;20512:108;;;:::i;:::-;;;;;;;:::i;22210:492::-;;;;;;:::i;:::-;;:::i;16645:112::-;;;:::i;18274:110::-;;;;;;:::i;:::-;;:::i;20354:93::-;;;:::i;:::-;;;;;;;:::i;14974:29::-;;;:::i;:::-;;;;;;;:::i;15117:::-;;;:::i;15082:26::-;;;:::i;23111:218::-;;;;;;:::i;:::-;;:::i;16890:99::-;;;;;;:::i;:::-;;:::i;17116:108::-;;;;;;:::i;:::-;;:::i;18054:::-;;;;;;:::i;:::-;;:::i;18506:124::-;;;;;;:::i;:::-;;:::i;16997:111::-;;;;;;:::i;:::-;;:::i;18638:684::-;;;;;;:::i;:::-;;:::i;20683:127::-;;;;;;:::i;:::-;;:::i;12622:94::-;;;:::i;11971:87::-;;;:::i;19611:104::-;;;:::i;15049:26::-;;;:::i;14674:33::-;;;:::i;16372:265::-;;;:::i;17942:104::-;;;;;;:::i;:::-;;:::i;23832:416::-;;;;;;:::i;:::-;;:::i;14940:27::-;;;:::i;21023:175::-;;;;;;:::i;:::-;;:::i;14873:25::-;;;:::i;17700:228::-;;;;;;:::i;:::-;;:::i;14602:30::-;;;:::i;21261:151::-;;;;;;:::i;:::-;;:::i;17571:123::-;;;;;;:::i;:::-;;:::i;14905:28::-;;;:::i;12871:192::-;;;;;;:::i;:::-;;:::i;14715:25::-;;;:::i;19392:100::-;19446:13;19479:5;19472:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19392:100;:::o;21559:169::-;21642:4;21659:39;21668:12;:10;:12::i;:::-;21682:7;21691:6;21659:8;:39::i;:::-;-1:-1:-1;21716:4:0;21559:169;;;;:::o;17232:200::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;;;;;;;;;17326:9:::1;17322:103;17340:12;:19;17338:1;:21;17322:103;;;17408:5;17380:8;:25;17389:12;17402:1;17389:15;;;;;;-1:-1:-1::0;;;17389:15:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;17380:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;17380:25:0;:33;;-1:-1:-1;;17380:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17360:3;::::1;::::0;::::1;:::i;:::-;;;;17322:103;;;;17232:200:::0;;:::o;20512:108::-;20600:12;;20512:108;:::o;22210:492::-;22350:4;22367:36;22377:6;22385:9;22396:6;22367:9;:36::i;:::-;-1:-1:-1;;;;;22443:19:0;;22416:24;22443:19;;;:11;:19;;;;;22416:24;22463:12;:10;:12::i;:::-;-1:-1:-1;;;;;22443:33:0;-1:-1:-1;;;;;22443:33:0;;;;;;;;;;;;;22416:60;;22515:6;22495:16;:26;;22487:79;;;;-1:-1:-1;;;22487:79:0;;;;;;;:::i;:::-;22602:57;22611:6;22619:12;:10;:12::i;:::-;22652:6;22633:16;:25;22602:8;:57::i;:::-;-1:-1:-1;22690:4:0;;22210:492;-1:-1:-1;;;;22210:492:0:o;16645:112::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;16701:10:::1;::::0;-1:-1:-1;;;16701:10:0;::::1;;;16693:27;;;;-1:-1:-1::0;;;16693:27:0::1;;;;;;;:::i;:::-;16731:10;:18:::0;;-1:-1:-1;;;;16731:18:0::1;::::0;;16645:112::o;18274:110::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;18349:13:::1;:27:::0;;-1:-1:-1;;;;;;18349:27:0::1;-1:-1:-1::0;;;;;18349:27:0;;;::::1;::::0;;;::::1;::::0;;18274:110::o;20354:93::-;20437:2;20354:93;:::o;14974:29::-;;;-1:-1:-1;;;;;14974:29:0;;:::o;15117:::-;;;-1:-1:-1;;;15117:29:0;;;;;:::o;15082:26::-;;;-1:-1:-1;;;;;15082:26:0;;:::o;23111:218::-;23199:4;23216:83;23225:12;:10;:12::i;:::-;23239:7;23248:50;23287:10;23248:11;:25;23260:12;:10;:12::i;:::-;-1:-1:-1;;;;;23248:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;23248:25:0;;;:34;;;;;;;;;;;:38;:50::i;:::-;23216:8;:83::i;16890:99::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;16959:10:::1;:22:::0;16890:99::o;17116:108::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17191:17:0;;;::::1;;::::0;;;:8:::1;:17;::::0;;;;:25;;-1:-1:-1;;17191:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17116:108::o;18054:::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;18128:11:::1;:26:::0;;-1:-1:-1;;;;;;18128:26:0::1;-1:-1:-1::0;;;;;18128:26:0;;;::::1;::::0;;;::::1;::::0;;18054:108::o;18506:124::-;-1:-1:-1;;;;;18595:27:0;;18571:4;18595:27;;;:18;:27;;;;;;;;18506:124;;;;:::o;16997:111::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;17072:13:::1;:28:::0;16997:111::o;18638:684::-;18699:19;18730:22;18768:11;;;;;;;;;-1:-1:-1;;;;;18768:11:0;-1:-1:-1;;;;;18755:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18730:59;;18800:19;18837:13;;;;;;;;;-1:-1:-1;;;;;18837:13:0;-1:-1:-1;;;;;18822:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18800:58;;18872:17;18890;18925:11;;;;;;;;;-1:-1:-1;;;;;18925:11:0;-1:-1:-1;;;;;18912:37:0;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18871:80;;;;;18962:20;18993:19;19042:11;-1:-1:-1;;;;;19026:27:0;:14;-1:-1:-1;;;;;19026:27:0;;19023:223;;;-1:-1:-1;;;;;;;19107:24:0;;;;19069:23;;19023:223;;;-1:-1:-1;;;;;;;19210:24:0;;;;19172:23;;19023:223;19270:44;19302:11;19270:27;:9;19284:12;19270:13;:27::i;:::-;:31;;:44::i;:::-;19256:58;18638:684;-1:-1:-1;;;;;;;;18638:684:0:o;20683:127::-;-1:-1:-1;;;;;20784:18:0;20757:7;20784:18;;;:9;:18;;;;;;;20683:127::o;12622:94::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;12687:21:::1;12705:1;12687:9;:21::i;:::-;12622:94::o:0;11971:87::-;12017:7;12044:6;-1:-1:-1;;;;;12044:6:0;11971:87;:::o;19611:104::-;19667:13;19700:7;19693:14;;;;;:::i;15049:26::-;;;-1:-1:-1;;;;;15049:26:0;;:::o;14674:33::-;;;;:::o;16372:265::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;16463:13:::1;::::0;16517:14:::1;::::0;;-1:-1:-1;;;16517:14:0;;;;-1:-1:-1;;;;;16463:13:0;;::::1;::::0;16423:22:::1;::::0;16463:13;;16517:12:::1;::::0;:14:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;16463:13;16517:14;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16495:36;;16572:7;-1:-1:-1::0;;;;;16572:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16556:45:0::1;;16610:4;16617:11;16556:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16542:11;:87:::0;;-1:-1:-1;;;;;;16542:87:0::1;-1:-1:-1::0;;;;;16542:87:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;16372:265:0:o;17942:104::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;18014:10:::1;:24:::0;;-1:-1:-1;;;;;;18014:24:0::1;-1:-1:-1::0;;;;;18014:24:0;;;::::1;::::0;;;::::1;::::0;;17942:104::o;23832:416::-;23925:4;23942:24;23969:11;:25;23981:12;:10;:12::i;:::-;-1:-1:-1;;;;;23969:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;23969:25:0;;;:34;;;;;;;;;;;-1:-1:-1;24022:35:0;;;;24014:85;;;;-1:-1:-1;;;24014:85:0;;;;;;;:::i;:::-;24135:70;24144:12;:10;:12::i;:::-;24158:7;24167:37;:16;24188:15;24167:20;:37::i;24135:70::-;-1:-1:-1;24236:4:0;;23832:416;-1:-1:-1;;;23832:416:0:o;14940:27::-;;;-1:-1:-1;;;;;14940:27:0;;:::o;21023:175::-;21109:4;21126:42;21136:12;:10;:12::i;:::-;21150:9;21161:6;21126:9;:42::i;14873:25::-;;;-1:-1:-1;;;;;14873:25:0;;:::o;17700:228::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;17802:9:::1;17798:113;17816:12;:19;17814:1;:21;17798:113;;;17894:5;17856:18;:35;17875:12;17888:1;17875:15;;;;;;-1:-1:-1::0;;;17875:15:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;17856:35:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;17856:35:0;:43;;-1:-1:-1;;17856:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17836:3;::::1;::::0;::::1;:::i;:::-;;;;17798:113;;14602:30:::0;;;;:::o;21261:151::-;-1:-1:-1;;;;;21377:18:0;;;21350:7;21377:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;21261:151::o;17571:123::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17651:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;17651:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17571:123::o;14905:28::-;;;-1:-1:-1;;;;;14905:28:0;;:::o;12871:192::-;12202:12;:10;:12::i;:::-;-1:-1:-1;;;;;12191:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12191:23:0;;12183:68;;;;-1:-1:-1;;;12183:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12960:22:0;::::1;12952:73;;;;-1:-1:-1::0;;;12952:73:0::1;;;;;;;:::i;:::-;13036:19;13046:8;13036:9;:19::i;:::-;12871:192:::0;:::o;14715:25::-;;;;:::o;6896:98::-;6954:7;6981:5;6985:1;6981;:5;:::i;:::-;6974:12;6896:98;-1:-1:-1;;;6896:98:0:o;3979:::-;4059:10;3979:98;:::o;28156:380::-;-1:-1:-1;;;;;28292:19:0;;28284:68;;;;-1:-1:-1;;;28284:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28371:21:0;;28363:68;;;;-1:-1:-1;;;28363:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28444:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;28496:32;;;;;28474:6;;28496:32;:::i;:::-;;;;;;;;28156:380;;;:::o;24738:2377::-;-1:-1:-1;;;;;24878:20:0;;24870:70;;;;-1:-1:-1;;;24870:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24959:23:0;;24951:71;;;;-1:-1:-1;;;24951:71:0;;;;;;;:::i;:::-;25058:11;;-1:-1:-1;;;;;25047:22:0;;;25058:11;;25047:22;;:45;;-1:-1:-1;25081:11:0;;-1:-1:-1;;;;;25073:19:0;;;25081:11;;25073:19;25047:45;25046:60;;;;-1:-1:-1;25096:10:0;;-1:-1:-1;;;25096:10:0;;;;25046:60;25043:328;;;-1:-1:-1;;;;;25126:16:0;;;;;;:8;:16;;;;;;;;25125:17;:41;;;;-1:-1:-1;;;;;;25147:19:0;;;;;;:8;:19;;;;;;;;25146:20;25125:41;25122:238;;;25223:13;;25212:10;;:24;;;;:::i;:::-;25194:15;:43;;25186:68;;;;-1:-1:-1;;;25186:68:0;;;;;;;:::i;:::-;25122:238;;;25318:10;;25301:15;:27;;25293:51;;;;-1:-1:-1;;;25293:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25414:17:0;;25390:21;25414:17;;;:9;:17;;;;;;25450:23;;;;25442:74;;;;-1:-1:-1;;;25442:74:0;;;;;;;:::i;:::-;25574:25;:13;25592:6;25574:17;:25::i;:::-;-1:-1:-1;;;;;25554:17:0;;;;;;:9;:17;;;;;;;;:45;;;;25657:18;:26;;;;;;;;25653:74;;;-1:-1:-1;25710:5:0;25653:74;25740:7;25737:1242;;;25777:11;;-1:-1:-1;;;;;25766:22:0;;;25777:11;;25766:22;25763:1205;;;25811:9;;:11;25808:521;;25846:14;25863:32;25889:5;25863:21;25874:9;;25863:6;:10;;:21;;;;:::i;:32::-;25846:49;-1:-1:-1;25918:18:0;25939:13;25846:49;25950:1;25939:10;:13::i;:::-;26009:10;;-1:-1:-1;;;;;26009:10:0;25999:21;;;;:9;:21;;;;;;25918:34;;-1:-1:-1;25999:37:0;;25918:34;25999:25;:37::i;:::-;25985:10;;;-1:-1:-1;;;;;25985:10:0;;;25975:21;;;;:9;:21;;;;;;;:61;;;;26081:10;;26064:40;;26081:10;;;;26064:40;;;;-1:-1:-1;;;;;;;;;;;26064:40:0;;;26093:10;;26064:40;:::i;:::-;;;;;;;;26162:11;;-1:-1:-1;;;;;26162:11:0;26152:22;;;;:9;:22;;;;;;:38;;26179:10;26152:26;:38::i;:::-;26137:11;;;-1:-1:-1;;;;;26137:11:0;;;26127:22;;;;:9;:22;;;;;;;:63;;;;26235:11;;26218:41;;26235:11;;;;26218:41;;;;-1:-1:-1;;;;;;;;;;;26218:41:0;;;26248:10;;26218:41;:::i;:::-;;;;;;;;26291:18;:6;26302;26291:10;:18::i;:::-;26282:27;;25808:521;;;25763:1205;;;26360:11;;-1:-1:-1;;;;;26352:19:0;;;26360:11;;26352:19;26349:619;;;26394:12;;:14;26391:562;;26432:17;26452:35;26481:5;26452:24;26463:12;;26452:6;:10;;:24;;;;:::i;:35::-;26432:55;-1:-1:-1;26510:21:0;26534:16;26432:55;26548:1;26534:13;:16::i;:::-;26610:13;;-1:-1:-1;;;;;26610:13:0;26600:24;;;;:9;:24;;;;;;26510:40;;-1:-1:-1;26600:43:0;;26510:40;26600:28;:43::i;:::-;26583:13;;;-1:-1:-1;;;;;26583:13:0;;;26573:24;;;;:9;:24;;;;;;;:70;;;;26688:13;;26671:46;;26688:13;;;;26671:46;;;;-1:-1:-1;;;;;;;;;;;26671:46:0;;;26703:13;;26671:46;:::i;:::-;;;;;;;;26775:11;;-1:-1:-1;;;;;26775:11:0;26765:22;;;;:9;:22;;;;;;:41;;26792:13;26765:26;:41::i;:::-;26750:11;;;-1:-1:-1;;;;;26750:11:0;;;26740:22;;;;:9;:22;;;;;;;:66;;;;26851:11;;26834:44;;26851:11;;;;26834:44;;;;-1:-1:-1;;;;;;;;;;;26834:44:0;;;26864:13;;26834:44;:::i;:::-;;;;;;;;26912:21;:6;26923:9;26912:10;:21::i;:::-;26903:30;;26391:562;;;-1:-1:-1;;;;;27024:20:0;;;;;;:9;:20;;;;;;:32;;27049:6;27024:24;:32::i;:::-;-1:-1:-1;;;;;27001:20:0;;;;;;;:9;:20;;;;;;;:55;;;;27072:35;;;;;;-1:-1:-1;;;;;;;;;;;27072:35:0;;;27100:6;;27072:35;:::i;:::-;;;;;;;;24738:2377;;;;;:::o;7634:98::-;7692:7;7719:5;7723:1;7719;:5;:::i;8033:98::-;8091:7;8118:5;8122:1;8118;:5;:::i;13071:173::-;13127:16;13146:6;;-1:-1:-1;;;;;13163:17:0;;;-1:-1:-1;;;;;;13163:17:0;;;;;;13196:40;;13146:6;;;;;;;13196:40;;13127:16;13196:40;13071:173;;:::o;7277:98::-;7335:7;7362:5;7366:1;7362;:5;:::i;14:138:1:-;84:20;;113:33;84:20;113:33;:::i;157:162::-;224:20;;280:13;;273:21;263:32;;253:2;;309:1;306;299:12;324:190;405:13;;-1:-1:-1;;;;;447:42:1;;437:53;;427:2;;504:1;501;494:12;519:259;;631:2;619:9;610:7;606:23;602:32;599:2;;;652:6;644;637:22;599:2;696:9;683:23;715:33;742:5;715:33;:::i;783:263::-;;906:2;894:9;885:7;881:23;877:32;874:2;;;927:6;919;912:22;874:2;964:9;958:16;983:33;1010:5;983:33;:::i;1051:402::-;;;1180:2;1168:9;1159:7;1155:23;1151:32;1148:2;;;1201:6;1193;1186:22;1148:2;1245:9;1232:23;1264:33;1291:5;1264:33;:::i;:::-;1316:5;-1:-1:-1;1373:2:1;1358:18;;1345:32;1386:35;1345:32;1386:35;:::i;:::-;1440:7;1430:17;;;1138:315;;;;;:::o;1458:470::-;;;;1604:2;1592:9;1583:7;1579:23;1575:32;1572:2;;;1625:6;1617;1610:22;1572:2;1669:9;1656:23;1688:33;1715:5;1688:33;:::i;:::-;1740:5;-1:-1:-1;1797:2:1;1782:18;;1769:32;1810:35;1769:32;1810:35;:::i;:::-;1562:366;;1864:7;;-1:-1:-1;;;1918:2:1;1903:18;;;;1890:32;;1562:366::o;1933:329::-;;;2059:2;2047:9;2038:7;2034:23;2030:32;2027:2;;;2080:6;2072;2065:22;2027:2;2124:9;2111:23;2143:33;2170:5;2143:33;:::i;:::-;2195:5;-1:-1:-1;2219:37:1;2252:2;2237:18;;2219:37;:::i;:::-;2209:47;;2017:245;;;;;:::o;2267:327::-;;;2396:2;2384:9;2375:7;2371:23;2367:32;2364:2;;;2417:6;2409;2402:22;2364:2;2461:9;2448:23;2480:33;2507:5;2480:33;:::i;:::-;2532:5;2584:2;2569:18;;;;2556:32;;-1:-1:-1;;;2354:240:1:o;2599:1238::-;;;2750:2;2738:9;2729:7;2725:23;2721:32;2718:2;;;2771:6;2763;2756:22;2718:2;2816:9;2803:23;2845:18;2886:2;2878:6;2875:14;2872:2;;;2907:6;2899;2892:22;2872:2;2950:6;2939:9;2935:22;2925:32;;2995:7;2988:4;2984:2;2980:13;2976:27;2966:2;;3022:6;3014;3007:22;2966:2;3063;3050:16;3085:4;3108:2;3104;3101:10;3098:2;;;3114:18;;:::i;:::-;3161:2;3157;3153:11;3193:2;3187:9;3244:2;3239;3231:6;3227:15;3223:24;3297:6;3285:10;3282:22;3277:2;3265:10;3262:18;3259:46;3256:2;;;3308:18;;:::i;:::-;3344:2;3337:22;3394:18;;;3428:15;;;;-1:-1:-1;3463:11:1;;;3493;;;3489:20;;3486:33;-1:-1:-1;3483:2:1;;;3537:6;3529;3522:22;3483:2;3564:6;3555:15;;3579:171;3593:2;3590:1;3587:9;3579:171;;;3650:25;3671:3;3650:25;:::i;:::-;3638:38;;3611:1;3604:9;;;;;3696:12;;;;3728;;3579:171;;;-1:-1:-1;3769:6:1;-1:-1:-1;3794:37:1;;-1:-1:-1;3812:18:1;;;3794:37;:::i;:::-;3784:47;;;;;;2708:1129;;;;;:::o;3842:474::-;;;;3998:2;3986:9;3977:7;3973:23;3969:32;3966:2;;;4019:6;4011;4004:22;3966:2;4047:42;4079:9;4047:42;:::i;:::-;4037:52;;4108:51;4155:2;4144:9;4140:18;4108:51;:::i;:::-;4098:61;;4202:2;4191:9;4187:18;4181:25;4246:10;4239:5;4235:22;4228:5;4225:33;4215:2;;4277:6;4269;4262:22;4215:2;4305:5;4295:15;;;3956:360;;;;;:::o;4321:190::-;;4433:2;4421:9;4412:7;4408:23;4404:32;4401:2;;;4454:6;4446;4439:22;4401:2;-1:-1:-1;4482:23:1;;4391:120;-1:-1:-1;4391:120:1:o;4516:203::-;-1:-1:-1;;;;;4680:32:1;;;;4662:51;;4650:2;4635:18;;4617:102::o;4724:304::-;-1:-1:-1;;;;;4954:15:1;;;4936:34;;5006:15;;5001:2;4986:18;;4979:43;4886:2;4871:18;;4853:175::o;5033:187::-;5198:14;;5191:22;5173:41;;5161:2;5146:18;;5128:92::o;5225:603::-;;5366:2;5395;5384:9;5377:21;5427:6;5421:13;5470:6;5465:2;5454:9;5450:18;5443:34;5495:4;5508:140;5522:6;5519:1;5516:13;5508:140;;;5617:14;;;5613:23;;5607:30;5583:17;;;5602:2;5579:26;5572:66;5537:10;;5508:140;;;5666:6;5663:1;5660:13;5657:2;;;5736:4;5731:2;5722:6;5711:9;5707:22;5703:31;5696:45;5657:2;-1:-1:-1;5812:2:1;5791:15;-1:-1:-1;;5787:29:1;5772:45;;;;5819:2;5768:54;;5346:482;-1:-1:-1;;;5346:482:1:o;5833:399::-;6035:2;6017:21;;;6074:2;6054:18;;;6047:30;6113:34;6108:2;6093:18;;6086:62;-1:-1:-1;;;6179:2:1;6164:18;;6157:33;6222:3;6207:19;;6007:225::o;6237:402::-;6439:2;6421:21;;;6478:2;6458:18;;;6451:30;6517:34;6512:2;6497:18;;6490:62;-1:-1:-1;;;6583:2:1;6568:18;;6561:36;6629:3;6614:19;;6411:228::o;6644:398::-;6846:2;6828:21;;;6885:2;6865:18;;;6858:30;6924:34;6919:2;6904:18;;6897:62;-1:-1:-1;;;6990:2:1;6975:18;;6968:32;7032:3;7017:19;;6818:224::o;7047:402::-;7249:2;7231:21;;;7288:2;7268:18;;;7261:30;7327:34;7322:2;7307:18;;7300:62;-1:-1:-1;;;7393:2:1;7378:18;;7371:36;7439:3;7424:19;;7221:228::o;7454:336::-;7656:2;7638:21;;;7695:2;7675:18;;;7668:30;-1:-1:-1;;;7729:2:1;7714:18;;7707:42;7781:2;7766:18;;7628:162::o;7795:404::-;7997:2;7979:21;;;8036:2;8016:18;;;8009:30;8075:34;8070:2;8055:18;;8048:62;-1:-1:-1;;;8141:2:1;8126:18;;8119:38;8189:3;8174:19;;7969:230::o;8204:356::-;8406:2;8388:21;;;8425:18;;;8418:30;8484:34;8479:2;8464:18;;8457:62;8551:2;8536:18;;8378:182::o;8565:337::-;8767:2;8749:21;;;8806:2;8786:18;;;8779:30;-1:-1:-1;;;8840:2:1;8825:18;;8818:43;8893:2;8878:18;;8739:163::o;8907:401::-;9109:2;9091:21;;;9148:2;9128:18;;;9121:30;9187:34;9182:2;9167:18;;9160:62;-1:-1:-1;;;9253:2:1;9238:18;;9231:35;9298:3;9283:19;;9081:227::o;9313:400::-;9515:2;9497:21;;;9554:2;9534:18;;;9527:30;9593:34;9588:2;9573:18;;9566:62;-1:-1:-1;;;9659:2:1;9644:18;;9637:34;9703:3;9688:19;;9487:226::o;9718:328::-;9920:2;9902:21;;;9959:1;9939:18;;;9932:29;-1:-1:-1;;;9992:2:1;9977:18;;9970:35;10037:2;10022:18;;9892:154::o;10051:401::-;10253:2;10235:21;;;10292:2;10272:18;;;10265:30;10331:34;10326:2;10311:18;;10304:62;-1:-1:-1;;;10397:2:1;10382:18;;10375:35;10442:3;10427:19;;10225:227::o;10457:177::-;10603:25;;;10591:2;10576:18;;10558:76::o;10639:184::-;10811:4;10799:17;;;;10781:36;;10769:2;10754:18;;10736:87::o;10828:128::-;;10899:1;10895:6;10892:1;10889:13;10886:2;;;10905:18;;:::i;:::-;-1:-1:-1;10941:9:1;;10876:80::o;10961:217::-;;11027:1;11017:2;;-1:-1:-1;;;11052:31:1;;11106:4;11103:1;11096:15;11134:4;11059:1;11124:15;11017:2;-1:-1:-1;11163:9:1;;11007:171::o;11183:168::-;;11289:1;11285;11281:6;11277:14;11274:1;11271:21;11266:1;11259:9;11252:17;11248:45;11245:2;;;11296:18;;:::i;:::-;-1:-1:-1;11336:9:1;;11235:116::o;11356:125::-;;11424:1;11421;11418:8;11415:2;;;11429:18;;:::i;:::-;-1:-1:-1;11466:9:1;;11405:76::o;11486:380::-;11571:1;11561:12;;11618:1;11608:12;;;11629:2;;11683:4;11675:6;11671:17;11661:27;;11629:2;11736;11728:6;11725:14;11705:18;11702:38;11699:2;;;11782:10;11777:3;11773:20;11770:1;11763:31;11817:4;11814:1;11807:15;11845:4;11842:1;11835:15;11699:2;;11541:325;;;:::o;11871:135::-;;-1:-1:-1;;11931:17:1;;11928:2;;;11951:18;;:::i;:::-;-1:-1:-1;11998:1:1;11987:13;;11918:88::o;12011:127::-;12072:10;12067:3;12063:20;12060:1;12053:31;12103:4;12100:1;12093:15;12127:4;12124:1;12117:15;12143:127;12204:10;12199:3;12195:20;12192:1;12185:31;12235:4;12232:1;12225:15;12259:4;12256:1;12249:15;12275:133;-1:-1:-1;;;;;12352:31:1;;12342:42;;12332:2;;12398:1;12395;12388:12

Swarm Source

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