ETH Price: $2,858.58 (-6.39%)
Gas: 7 Gwei

Token

Only Possible On Ethereum (OPOE)
 

Overview

Max Total Supply

100,000,000 OPOE

Holders

1,021

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
0.09466669 OPOE

Value
$0.00
0xc3f04f6ef4e69a04d62601f96bc97c42d7e5e5bc
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:
OPOE

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-01
*/

//  SPDX-License-Identifier: MIT
pragma solidity >=0.8.19;

/*

X: https://twitter.com/OPOEthereum
TG: https://t.me/OPOEthereum

The Starry Night

   *   *
           *
                *
                       *
               *
                     *

         .                      .
         .                      ;
         :                  - --+- -
         !           .          !
         |        .             .
         |_         +
      ,  | `.
--- --+-<#>-+- ---  --  -
      `._|_,'
         T
         |
         !
         :         . : 
         .       *

*/

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

}

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

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

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;

    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

contract OPOE 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 public marketingWallet;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

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

    uint256 public buyFees;
    uint256 public sellFees;

    uint256 public tradingActiveBlock = 0;
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public _blackList;
    uint256 public botsCaught;

    /******************/

    // 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 LimitsRemoved();

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    constructor() ERC20("Only Possible On Ethereum", "OPOE") {
        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 = 100000000 * 1e8;

        maxTransactionAmount = (totalSupply * 1) /100;
        maxWallet = (totalSupply * 2)/ 100;
        swapTokensAtAmount = (totalSupply * 1) / 1000; // 0.1% swap wallet

        buyFees = 5 * 1e15;
        sellFees = 5 * 1e15;

        marketingWallet = msg.sender;

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(marketingWallet, true);

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

        _blackList[0xdB5889E35e379Ef0498aaE126fc2CCE1fbD23216] = 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 enableTrading(uint256 blocksForPenalty) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        require(
            blocksForPenalty <= 10,
            "Cannot make penalty blocks more than 10"
        );
        tradingActive = true;
        swapEnabled = false;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + blocksForPenalty;
    }

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

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= ((totalSupply() * 1) / 10000) / 1e8,
            "Swap amount cannot be lower than 0.01% total supply."
        );
        require(
            newAmount <= ((totalSupply() * 5) / 1000) / 1e8,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount * 1e8;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 100) / 1e8,
            "Cannot set maxTransactionAmount lower than 1%"
        );
        maxTransactionAmount = newNum * 1e8;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 100) / 1e8,
            "Cannot set maxWallet lower than 1%"
        );
        maxWallet = newNum * 1e8;
    }

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

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _buyFee
    ) external onlyOwner {
         require(_buyFee<= 50000000000000000 ,"Buy fee cant be sent more than 0.05 eth");
        buyFees = _buyFee;
    }

    function updateSellFees(
        uint256 _sellFee
    ) external onlyOwner {
        require(_sellFee <= 50000000000000000 ,"Sell fee cant be sent more than 0.05 eth");
        sellFees = _sellFee;
    }

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

    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 updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    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");
        require(!_blackList[from] || !_blackList[to]);

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

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

        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] && sellFees > 0) {
                fees = calculateSellFees();
                require(amount > fees , "Sell amount is less than fees.");
                amount -= fees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyFees > 0) {
                if (blockForPenaltyEnd > block.number){
                    _blackList[to] = true;
                }
                fees = calculateBuyFees();
                require(amount > fees , "Buy amount is less than fees.");
                amount -= fees;
            }

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

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

    function calculateBuyFees() internal view returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uint256[] memory amounts = uniswapV2Router.getAmountsIn(buyFees, path);
        return amounts[0];
    }

    function calculateSellFees() internal view returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uint256[] memory amounts = uniswapV2Router.getAmountsIn(sellFees, path);
        return amounts[0];
    }

    function manageBlackListAddress(address bot, bool value) public onlyOwner{
        require(bot != uniswapV2Pair);
        _blackList[bot] = value;
    }

    function manageBlackListAddresses(address[] memory bots, bool value) public onlyOwner{
        for(uint256 i = 0; i < bots.length; i++){
            require(bots[i] != uniswapV2Pair);
            _blackList[bots[i]] = value;
        }
    }

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

        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount) {
            contractBalance = swapTokensAtAmount;
        }

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

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

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":[],"name":"LimitsRemoved","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","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":"uint256","name":"blocksForPenalty","type":"uint256"}],"name":"enableTrading","outputs":[],"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":[{"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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"manageBlackListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"manageBlackListAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","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":"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":"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":[],"name":"tradingActiveBlock","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":"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"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a805462ffffff191660011790555f600d5534801562000023575f80fd5b506040518060400160405280601981526020017f4f6e6c7920506f737369626c65204f6e20457468657265756d00000000000000815250604051806040016040528060048152602001634f504f4560e01b81525081600390816200008891906200072a565b5060046200009782826200072a565b505050620000b4620000ae620003dc60201b60201c565b620003e0565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000d681600162000431565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200011f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001459190620007f2565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000191573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b79190620007f2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000202573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002289190620007f2565b6001600160a01b031660a08190526200024390600162000431565b60a05162000253906001620004a9565b662386f26fc1000060646200026a82600162000835565b62000276919062000855565b60075560646200028882600262000835565b62000294919062000855565b6009556103e8620002a782600162000835565b620002b3919062000855565b6008556611c37937e08000600b819055600c55600680546001600160a01b03191633179055620002f7620002ef6005546001600160a01b031690565b6001620004fc565b62000304306001620004fc565b6200031361dead6001620004fc565b6006546200032c906001600160a01b03166001620004fc565b6200034b620003436005546001600160a01b031690565b600162000431565b6200035830600162000431565b6200036761dead600162000431565b60065462000380906001600160a01b0316600162000431565b73db5889e35e379ef0498aae126fc2cce1fbd232165f52600f6020527fa23f23eff1c5d65c8a53c42866e95795d5a07be0cb252f76abd2b852074aa6e8805460ff19166001179055620003d43382620005a4565b50506200088b565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b031633146200047f5760405162461bcd60e51b815260206004820181905260248201525f805160206200330983398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6001600160a01b0382165f81815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005465760405162461bcd60e51b815260206004820181905260248201525f8051602062003309833981519152604482015260640162000476565b6001600160a01b0382165f81815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005fc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000476565b8060025f8282546200060f919062000875565b90915550506001600160a01b0382165f90815260208190526040812080548392906200063d90849062000875565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620006b457607f821691505b602082108103620006d357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000686575f81815260208120601f850160051c81016020861015620007015750805b601f850160051c820191505b8181101562000722578281556001016200070d565b505050505050565b81516001600160401b038111156200074657620007466200068b565b6200075e816200075784546200069f565b84620006d9565b602080601f83116001811462000794575f84156200077c5750858301515b5f19600386901b1c1916600185901b17855562000722565b5f85815260208120601f198616915b82811015620007c457888601518255948401946001909101908401620007a3565b5085821015620007e257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000803575f80fd5b81516001600160a01b03811681146200081a575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200084f576200084f62000821565b92915050565b5f826200087057634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200084f576200084f62000821565b60805160a051612a16620008f35f395f818161041e01528181610dba01528181610eed015261145a01525f818161032601528181612010015281816120cb015281816121be0152818161227901528181612304015281816123bb01526123f70152612a165ff3fe608060405260043610610283575f3560e01c806387526c5a11610155578063c18bc195116100be578063e4748b9e11610078578063e4748b9e146107f6578063eba4c3331461080b578063ee40166e1461082a578063ee876e371461083f578063f2fde38b1461085e578063f8b45b051461087d575f80fd5b8063c18bc19514610735578063c8c8ebe414610754578063d257b34f14610769578063dd62ed3e14610788578063e0f3ccf5146107cc578063e2f45605146107e1575f80fd5b8063a62068ce1161010f578063a62068ce14610677578063a9059cbb1461068c578063aacebbe3146106ab578063b62496f5146106ca578063bbc0c742146106f8578063c024666814610716575f80fd5b806387526c5a146105ca5780638da5cb5b146105e9578063924de9b71461060657806395d89b41146106255780639a7a23d614610639578063a457c2d714610658575f80fd5b80634a62bb65116101f7578063715018a6116101b1578063715018a61461052657806371fc46881461053a578063751039fc146105595780637571336a1461056d57806375f0a8741461058c57806382aa7c68146105ab575f80fd5b80634a62bb65146104405780634fbee19314610459578063595dec3c146104905780636b0a894c146104be5780636ddd1713146104d357806370a08231146104f2575f80fd5b8063203e727e11610248578063203e727e1461037e57806323b872dd1461039f57806327c8f835146103be578063313ce567146103d357806339509351146103ee57806349bd5a5e1461040d575f80fd5b806306fdde031461028e578063095ea7b3146102b857806310d5de53146102e75780631694505e1461031557806318160ddd14610360575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a2610892565b6040516102af9190612465565b60405180910390f35b3480156102c3575f80fd5b506102d76102d23660046124c4565b610922565b60405190151581526020016102af565b3480156102f2575f80fd5b506102d76103013660046124ee565b60126020525f908152604090205460ff1681565b348015610320575f80fd5b506103487f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102af565b34801561036b575f80fd5b506002545b6040519081526020016102af565b348015610389575f80fd5b5061039d610398366004612510565b610938565b005b3480156103aa575f80fd5b506102d76103b9366004612527565b610a13565b3480156103c9575f80fd5b5061034861dead81565b3480156103de575f80fd5b50604051600881526020016102af565b3480156103f9575f80fd5b506102d76104083660046124c4565b610abb565b348015610418575f80fd5b506103487f000000000000000000000000000000000000000000000000000000000000000081565b34801561044b575f80fd5b50600a546102d79060ff1681565b348015610464575f80fd5b506102d76104733660046124ee565b6001600160a01b03165f9081526011602052604090205460ff1690565b34801561049b575f80fd5b506102d76104aa3660046124ee565b600f6020525f908152604090205460ff1681565b3480156104c9575f80fd5b5061037060105481565b3480156104de575f80fd5b50600a546102d79062010000900460ff1681565b3480156104fd575f80fd5b5061037061050c3660046124ee565b6001600160a01b03165f9081526020819052604090205490565b348015610531575f80fd5b5061039d610af6565b348015610545575f80fd5b5061039d610554366004612510565b610b2b565b348015610564575f80fd5b506102d7610bc1565b348015610578575f80fd5b5061039d610587366004612574565b610c25565b348015610597575f80fd5b50600654610348906001600160a01b031681565b3480156105b6575f80fd5b5061039d6105c5366004612510565b610c79565b3480156105d5575f80fd5b5061039d6105e436600461260f565b610d83565b3480156105f4575f80fd5b506005546001600160a01b0316610348565b348015610611575f80fd5b5061039d6106203660046126bb565b610e6c565b348015610630575f80fd5b506102a2610eb2565b348015610644575f80fd5b5061039d610653366004612574565b610ec1565b348015610663575f80fd5b506102d76106723660046124c4565b610fa0565b348015610682575f80fd5b50610370600e5481565b348015610697575f80fd5b506102d76106a63660046124c4565b611038565b3480156106b6575f80fd5b5061039d6106c53660046124ee565b611044565b3480156106d5575f80fd5b506102d76106e43660046124ee565b60136020525f908152604090205460ff1681565b348015610703575f80fd5b50600a546102d790610100900460ff1681565b348015610721575f80fd5b5061039d610730366004612574565b6110ca565b348015610740575f80fd5b5061039d61074f366004612510565b611152565b34801561075f575f80fd5b5061037060075481565b348015610774575f80fd5b506102d7610783366004612510565b611219565b348015610793575f80fd5b506103706107a23660046126d4565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156107d7575f80fd5b50610370600c5481565b3480156107ec575f80fd5b5061037060085481565b348015610801575f80fd5b50610370600b5481565b348015610816575f80fd5b5061039d610825366004612510565b611397565b348015610835575f80fd5b50610370600d5481565b34801561084a575f80fd5b5061039d610859366004612574565b61142e565b348015610869575f80fd5b5061039d6108783660046124ee565b6114bf565b348015610888575f80fd5b5061037060095481565b6060600380546108a19061270b565b80601f01602080910402602001604051908101604052809291908181526020018280546108cd9061270b565b80156109185780601f106108ef57610100808354040283529160200191610918565b820191905f5260205f20905b8154815290600101906020018083116108fb57829003601f168201915b5050505050905090565b5f61092e33848461155a565b5060015b92915050565b6005546001600160a01b0316331461096b5760405162461bcd60e51b815260040161096290612743565b60405180910390fd5b6305f5e100606461097b60025490565b61098690600161278c565b61099091906127a3565b61099a91906127a3565b8110156109ff5760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526c6c6f776572207468616e20312560981b6064820152608401610962565b610a0d816305f5e10061278c565b60075550565b5f610a1f84848461167d565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610aa35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610962565b610ab0853385840361155a565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161092e918590610af19086906127c2565b61155a565b6005546001600160a01b03163314610b205760405162461bcd60e51b815260040161096290612743565b610b295f611d41565b565b6005546001600160a01b03163314610b555760405162461bcd60e51b815260040161096290612743565b66b1a2bc2ec50000811115610bbc5760405162461bcd60e51b815260206004820152602760248201527f427579206665652063616e742062652073656e74206d6f7265207468616e203060448201526605c606a40cae8d60cb1b6064820152608401610962565b600b55565b6005545f906001600160a01b03163314610bed5760405162461bcd60e51b815260040161096290612743565b600a805460ff191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef905f90a150600190565b6005546001600160a01b03163314610c4f5760405162461bcd60e51b815260040161096290612743565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ca35760405162461bcd60e51b815260040161096290612743565b600a54610100900460ff1615610cfb5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610962565b600a811115610d5c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206d616b652070656e616c747920626c6f636b73206d6f72652060448201526607468616e2031360cc1b6064820152608401610962565b600a805462ffff00191661010017905543600d819055610d7d9082906127c2565b600e5550565b6005546001600160a01b03163314610dad5760405162461bcd60e51b815260040161096290612743565b5f5b8251811015610e67577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316838281518110610df457610df46127d5565b60200260200101516001600160a01b031603610e0e575f80fd5b81600f5f858481518110610e2457610e246127d5565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610e5f816127e9565b915050610daf565b505050565b6005546001600160a01b03163314610e965760405162461bcd60e51b815260040161096290612743565b600a8054911515620100000262ff000019909216919091179055565b6060600480546108a19061270b565b6005546001600160a01b03163314610eeb5760405162461bcd60e51b815260040161096290612743565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f925760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610962565b610f9c8282611d92565b5050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156110215760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610962565b61102e338585840361155a565b5060019392505050565b5f61092e33848461167d565b6005546001600160a01b0316331461106e5760405162461bcd60e51b815260040161096290612743565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110f45760405162461bcd60e51b815260040161096290612743565b6001600160a01b0382165f81815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461117c5760405162461bcd60e51b815260040161096290612743565b6305f5e100606461118c60025490565b61119790600161278c565b6111a191906127a3565b6111ab91906127a3565b8110156112055760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b6064820152608401610962565b611213816305f5e10061278c565b60095550565b6005545f906001600160a01b031633146112455760405162461bcd60e51b815260040161096290612743565b6305f5e10061271061125660025490565b61126190600161278c565b61126b91906127a3565b61127591906127a3565b8210156112e15760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e604482015273101817181892903a37ba30b61039bab838363c9760611b6064820152608401610962565b6305f5e1006103e86112f260025490565b6112fd90600561278c565b61130791906127a3565b61131191906127a3565b82111561137d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610962565b61138b826305f5e10061278c565b6008555060015b919050565b6005546001600160a01b031633146113c15760405162461bcd60e51b815260040161096290612743565b66b1a2bc2ec500008111156114295760405162461bcd60e51b815260206004820152602860248201527f53656c6c206665652063616e742062652073656e74206d6f7265207468616e206044820152670605c606a40cae8d60c31b6064820152608401610962565b600c55565b6005546001600160a01b031633146114585760405162461bcd60e51b815260040161096290612743565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611495575f80fd5b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114e95760405162461bcd60e51b815260040161096290612743565b6001600160a01b03811661154e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610962565b61155781611d41565b50565b6001600160a01b0383166115bc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610962565b6001600160a01b03821661161d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610962565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116a35760405162461bcd60e51b815260040161096290612801565b6001600160a01b0382166116c95760405162461bcd60e51b815260040161096290612846565b6001600160a01b0383165f908152600f602052604090205460ff16158061170857506001600160a01b0382165f908152600f602052604090205460ff16155b611710575f80fd5b805f0361172257610e6783835f611de5565b600a5460ff1615611a8f576005546001600160a01b0384811691161480159061175957506005546001600160a01b03838116911614155b801561176d57506001600160a01b03821615155b801561178457506001600160a01b03821661dead14155b801561179a5750600554600160a01b900460ff16155b15611a8f57600a54610100900460ff16611830576001600160a01b0383165f9081526011602052604090205460ff16806117eb57506001600160a01b0382165f9081526011602052604090205460ff165b6118305760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610962565b6001600160a01b0383165f9081526013602052604090205460ff16801561186f57506001600160a01b0382165f9081526012602052604090205460ff16155b15611952576007548111156118e45760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610962565b6009546001600160a01b0383165f9081526020819052604090205461190990836127c2565b111561194d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610962565b611a8f565b6001600160a01b0382165f9081526013602052604090205460ff16801561199157506001600160a01b0383165f9081526012602052604090205460ff16155b15611a075760075481111561194d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610962565b6001600160a01b0382165f9081526012602052604090205460ff16611a8f576009546001600160a01b0383165f90815260208190526040902054611a4b90836127c2565b1115611a8f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610962565b305f9081526020819052604090205460085481108015908190611aba5750600a5462010000900460ff165b8015611ad05750600554600160a01b900460ff16155b8015611af457506001600160a01b0385165f9081526013602052604090205460ff16155b8015611b1857506001600160a01b0385165f9081526011602052604090205460ff16155b8015611b3c57506001600160a01b0384165f9081526011602052604090205460ff16155b15611b6a576005805460ff60a01b1916600160a01b179055611b5c611f38565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526011602052604090205460ff600160a01b909204821615911680611bb657506001600160a01b0385165f9081526011602052604090205460ff165b15611bbe57505f5b5f8115611d2d576001600160a01b0386165f9081526013602052604090205460ff168015611bed57505f600c54115b15611c5c57611bfa611fb7565b9050808511611c4b5760405162461bcd60e51b815260206004820152601e60248201527f53656c6c20616d6f756e74206973206c657373207468616e20666565732e00006044820152606401610962565b611c558186612889565b9450611d1c565b6001600160a01b0387165f9081526013602052604090205460ff168015611c8457505f600b54115b15611d1c5743600e541115611cb6576001600160a01b0386165f908152600f60205260409020805460ff191660011790555b611cbe612165565b9050808511611d0f5760405162461bcd60e51b815260206004820152601d60248201527f42757920616d6f756e74206973206c657373207468616e20666565732e0000006044820152606401610962565b611d198186612889565b94505b8015611d2d57611d2d873083611de5565b611d38878787611de5565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e0b5760405162461bcd60e51b815260040161096290612801565b6001600160a01b038216611e315760405162461bcd60e51b815260040161096290612846565b6001600160a01b0383165f9081526020819052604090205481811015611ea85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610962565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611ede9084906127c2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f2a91815260200190565b60405180910390a350505050565b305f9081526020819052604081205490818103611f53575050565b600854821115611f635760085491505b81611f6d816122af565b60065460405147916001600160a01b03169082905f81818185875af1925050503d805f8114611d38576040519150601f19603f3d011682016040523d82523d5f602084013e611d38565b6040805160028082526060820183525f928392919060208301908036833701905050905030815f81518110611fee57611fee6127d5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561206a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061208e919061289c565b816001815181106120a1576120a16127d5565b6001600160a01b039283166020918202929092010152600c546040516307c0329d60e21b81525f927f00000000000000000000000000000000000000000000000000000000000000001691631f00ca7491612101919086906004016128f9565b5f60405180830381865afa15801561211b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121429190810190612919565b9050805f81518110612156576121566127d5565b60200260200101519250505090565b6040805160028082526060820183525f928392919060208301908036833701905050905030815f8151811061219c5761219c6127d5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612218573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061223c919061289c565b8160018151811061224f5761224f6127d5565b6001600160a01b039283166020918202929092010152600b546040516307c0329d60e21b81525f927f00000000000000000000000000000000000000000000000000000000000000001691631f00ca7491612101919086906004016128f9565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106122e2576122e26127d5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612382919061289c565b81600181518110612395576123956127d5565b60200260200101906001600160a01b031690816001600160a01b0316815250506123e0307f00000000000000000000000000000000000000000000000000000000000000008461155a565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906124349085905f908690309042906004016129a5565b5f604051808303815f87803b15801561244b575f80fd5b505af115801561245d573d5f803e3d5ffd5b505050505050565b5f6020808352835180828501525f5b8181101561249057858101830151858201604001528201612474565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611557575f80fd5b5f80604083850312156124d5575f80fd5b82356124e0816124b0565b946020939093013593505050565b5f602082840312156124fe575f80fd5b8135612509816124b0565b9392505050565b5f60208284031215612520575f80fd5b5035919050565b5f805f60608486031215612539575f80fd5b8335612544816124b0565b92506020840135612554816124b0565b929592945050506040919091013590565b80358015158114611392575f80fd5b5f8060408385031215612585575f80fd5b8235612590816124b0565b915061259e60208401612565565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125e4576125e46125a7565b604052919050565b5f67ffffffffffffffff821115612605576126056125a7565b5060051b60200190565b5f8060408385031215612620575f80fd5b823567ffffffffffffffff811115612636575f80fd5b8301601f81018513612646575f80fd5b8035602061265b612656836125ec565b6125bb565b82815260059290921b83018101918181019088841115612679575f80fd5b938201935b838510156126a0578435612691816124b0565b8252938201939082019061267e565b95506126af9050868201612565565b93505050509250929050565b5f602082840312156126cb575f80fd5b61250982612565565b5f80604083850312156126e5575f80fd5b82356126f0816124b0565b91506020830135612700816124b0565b809150509250929050565b600181811c9082168061271f57607f821691505b60208210810361273d57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761093257610932612778565b5f826127bd57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561093257610932612778565b634e487b7160e01b5f52603260045260245ffd5b5f600182016127fa576127fa612778565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561093257610932612778565b5f602082840312156128ac575f80fd5b8151612509816124b0565b5f8151808452602080850194508084015f5b838110156128ee5781516001600160a01b0316875295820195908201906001016128c9565b509495945050505050565b828152604060208201525f61291160408301846128b7565b949350505050565b5f602080838503121561292a575f80fd5b825167ffffffffffffffff811115612940575f80fd5b8301601f81018513612950575f80fd5b805161295e612656826125ec565b81815260059190911b8201830190838101908783111561297c575f80fd5b928401925b8284101561299a57835182529284019290840190612981565b979650505050505050565b85815284602082015260a060408201525f6129c360a08301866128b7565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122028f206ce1152e602bbc6d787fd8801999e50f21deaacef8e28346f66ae0ebffd64736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x608060405260043610610283575f3560e01c806387526c5a11610155578063c18bc195116100be578063e4748b9e11610078578063e4748b9e146107f6578063eba4c3331461080b578063ee40166e1461082a578063ee876e371461083f578063f2fde38b1461085e578063f8b45b051461087d575f80fd5b8063c18bc19514610735578063c8c8ebe414610754578063d257b34f14610769578063dd62ed3e14610788578063e0f3ccf5146107cc578063e2f45605146107e1575f80fd5b8063a62068ce1161010f578063a62068ce14610677578063a9059cbb1461068c578063aacebbe3146106ab578063b62496f5146106ca578063bbc0c742146106f8578063c024666814610716575f80fd5b806387526c5a146105ca5780638da5cb5b146105e9578063924de9b71461060657806395d89b41146106255780639a7a23d614610639578063a457c2d714610658575f80fd5b80634a62bb65116101f7578063715018a6116101b1578063715018a61461052657806371fc46881461053a578063751039fc146105595780637571336a1461056d57806375f0a8741461058c57806382aa7c68146105ab575f80fd5b80634a62bb65146104405780634fbee19314610459578063595dec3c146104905780636b0a894c146104be5780636ddd1713146104d357806370a08231146104f2575f80fd5b8063203e727e11610248578063203e727e1461037e57806323b872dd1461039f57806327c8f835146103be578063313ce567146103d357806339509351146103ee57806349bd5a5e1461040d575f80fd5b806306fdde031461028e578063095ea7b3146102b857806310d5de53146102e75780631694505e1461031557806318160ddd14610360575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a2610892565b6040516102af9190612465565b60405180910390f35b3480156102c3575f80fd5b506102d76102d23660046124c4565b610922565b60405190151581526020016102af565b3480156102f2575f80fd5b506102d76103013660046124ee565b60126020525f908152604090205460ff1681565b348015610320575f80fd5b506103487f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102af565b34801561036b575f80fd5b506002545b6040519081526020016102af565b348015610389575f80fd5b5061039d610398366004612510565b610938565b005b3480156103aa575f80fd5b506102d76103b9366004612527565b610a13565b3480156103c9575f80fd5b5061034861dead81565b3480156103de575f80fd5b50604051600881526020016102af565b3480156103f9575f80fd5b506102d76104083660046124c4565b610abb565b348015610418575f80fd5b506103487f000000000000000000000000f60028379c813a559711bd7bd0b238261b9a648f81565b34801561044b575f80fd5b50600a546102d79060ff1681565b348015610464575f80fd5b506102d76104733660046124ee565b6001600160a01b03165f9081526011602052604090205460ff1690565b34801561049b575f80fd5b506102d76104aa3660046124ee565b600f6020525f908152604090205460ff1681565b3480156104c9575f80fd5b5061037060105481565b3480156104de575f80fd5b50600a546102d79062010000900460ff1681565b3480156104fd575f80fd5b5061037061050c3660046124ee565b6001600160a01b03165f9081526020819052604090205490565b348015610531575f80fd5b5061039d610af6565b348015610545575f80fd5b5061039d610554366004612510565b610b2b565b348015610564575f80fd5b506102d7610bc1565b348015610578575f80fd5b5061039d610587366004612574565b610c25565b348015610597575f80fd5b50600654610348906001600160a01b031681565b3480156105b6575f80fd5b5061039d6105c5366004612510565b610c79565b3480156105d5575f80fd5b5061039d6105e436600461260f565b610d83565b3480156105f4575f80fd5b506005546001600160a01b0316610348565b348015610611575f80fd5b5061039d6106203660046126bb565b610e6c565b348015610630575f80fd5b506102a2610eb2565b348015610644575f80fd5b5061039d610653366004612574565b610ec1565b348015610663575f80fd5b506102d76106723660046124c4565b610fa0565b348015610682575f80fd5b50610370600e5481565b348015610697575f80fd5b506102d76106a63660046124c4565b611038565b3480156106b6575f80fd5b5061039d6106c53660046124ee565b611044565b3480156106d5575f80fd5b506102d76106e43660046124ee565b60136020525f908152604090205460ff1681565b348015610703575f80fd5b50600a546102d790610100900460ff1681565b348015610721575f80fd5b5061039d610730366004612574565b6110ca565b348015610740575f80fd5b5061039d61074f366004612510565b611152565b34801561075f575f80fd5b5061037060075481565b348015610774575f80fd5b506102d7610783366004612510565b611219565b348015610793575f80fd5b506103706107a23660046126d4565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156107d7575f80fd5b50610370600c5481565b3480156107ec575f80fd5b5061037060085481565b348015610801575f80fd5b50610370600b5481565b348015610816575f80fd5b5061039d610825366004612510565b611397565b348015610835575f80fd5b50610370600d5481565b34801561084a575f80fd5b5061039d610859366004612574565b61142e565b348015610869575f80fd5b5061039d6108783660046124ee565b6114bf565b348015610888575f80fd5b5061037060095481565b6060600380546108a19061270b565b80601f01602080910402602001604051908101604052809291908181526020018280546108cd9061270b565b80156109185780601f106108ef57610100808354040283529160200191610918565b820191905f5260205f20905b8154815290600101906020018083116108fb57829003601f168201915b5050505050905090565b5f61092e33848461155a565b5060015b92915050565b6005546001600160a01b0316331461096b5760405162461bcd60e51b815260040161096290612743565b60405180910390fd5b6305f5e100606461097b60025490565b61098690600161278c565b61099091906127a3565b61099a91906127a3565b8110156109ff5760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526c6c6f776572207468616e20312560981b6064820152608401610962565b610a0d816305f5e10061278c565b60075550565b5f610a1f84848461167d565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610aa35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610962565b610ab0853385840361155a565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161092e918590610af19086906127c2565b61155a565b6005546001600160a01b03163314610b205760405162461bcd60e51b815260040161096290612743565b610b295f611d41565b565b6005546001600160a01b03163314610b555760405162461bcd60e51b815260040161096290612743565b66b1a2bc2ec50000811115610bbc5760405162461bcd60e51b815260206004820152602760248201527f427579206665652063616e742062652073656e74206d6f7265207468616e203060448201526605c606a40cae8d60cb1b6064820152608401610962565b600b55565b6005545f906001600160a01b03163314610bed5760405162461bcd60e51b815260040161096290612743565b600a805460ff191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef905f90a150600190565b6005546001600160a01b03163314610c4f5760405162461bcd60e51b815260040161096290612743565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ca35760405162461bcd60e51b815260040161096290612743565b600a54610100900460ff1615610cfb5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610962565b600a811115610d5c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206d616b652070656e616c747920626c6f636b73206d6f72652060448201526607468616e2031360cc1b6064820152608401610962565b600a805462ffff00191661010017905543600d819055610d7d9082906127c2565b600e5550565b6005546001600160a01b03163314610dad5760405162461bcd60e51b815260040161096290612743565b5f5b8251811015610e67577f000000000000000000000000f60028379c813a559711bd7bd0b238261b9a648f6001600160a01b0316838281518110610df457610df46127d5565b60200260200101516001600160a01b031603610e0e575f80fd5b81600f5f858481518110610e2457610e246127d5565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610e5f816127e9565b915050610daf565b505050565b6005546001600160a01b03163314610e965760405162461bcd60e51b815260040161096290612743565b600a8054911515620100000262ff000019909216919091179055565b6060600480546108a19061270b565b6005546001600160a01b03163314610eeb5760405162461bcd60e51b815260040161096290612743565b7f000000000000000000000000f60028379c813a559711bd7bd0b238261b9a648f6001600160a01b0316826001600160a01b031603610f925760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610962565b610f9c8282611d92565b5050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156110215760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610962565b61102e338585840361155a565b5060019392505050565b5f61092e33848461167d565b6005546001600160a01b0316331461106e5760405162461bcd60e51b815260040161096290612743565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110f45760405162461bcd60e51b815260040161096290612743565b6001600160a01b0382165f81815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461117c5760405162461bcd60e51b815260040161096290612743565b6305f5e100606461118c60025490565b61119790600161278c565b6111a191906127a3565b6111ab91906127a3565b8110156112055760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b6064820152608401610962565b611213816305f5e10061278c565b60095550565b6005545f906001600160a01b031633146112455760405162461bcd60e51b815260040161096290612743565b6305f5e10061271061125660025490565b61126190600161278c565b61126b91906127a3565b61127591906127a3565b8210156112e15760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e604482015273101817181892903a37ba30b61039bab838363c9760611b6064820152608401610962565b6305f5e1006103e86112f260025490565b6112fd90600561278c565b61130791906127a3565b61131191906127a3565b82111561137d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610962565b61138b826305f5e10061278c565b6008555060015b919050565b6005546001600160a01b031633146113c15760405162461bcd60e51b815260040161096290612743565b66b1a2bc2ec500008111156114295760405162461bcd60e51b815260206004820152602860248201527f53656c6c206665652063616e742062652073656e74206d6f7265207468616e206044820152670605c606a40cae8d60c31b6064820152608401610962565b600c55565b6005546001600160a01b031633146114585760405162461bcd60e51b815260040161096290612743565b7f000000000000000000000000f60028379c813a559711bd7bd0b238261b9a648f6001600160a01b0316826001600160a01b031603611495575f80fd5b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114e95760405162461bcd60e51b815260040161096290612743565b6001600160a01b03811661154e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610962565b61155781611d41565b50565b6001600160a01b0383166115bc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610962565b6001600160a01b03821661161d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610962565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116a35760405162461bcd60e51b815260040161096290612801565b6001600160a01b0382166116c95760405162461bcd60e51b815260040161096290612846565b6001600160a01b0383165f908152600f602052604090205460ff16158061170857506001600160a01b0382165f908152600f602052604090205460ff16155b611710575f80fd5b805f0361172257610e6783835f611de5565b600a5460ff1615611a8f576005546001600160a01b0384811691161480159061175957506005546001600160a01b03838116911614155b801561176d57506001600160a01b03821615155b801561178457506001600160a01b03821661dead14155b801561179a5750600554600160a01b900460ff16155b15611a8f57600a54610100900460ff16611830576001600160a01b0383165f9081526011602052604090205460ff16806117eb57506001600160a01b0382165f9081526011602052604090205460ff165b6118305760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610962565b6001600160a01b0383165f9081526013602052604090205460ff16801561186f57506001600160a01b0382165f9081526012602052604090205460ff16155b15611952576007548111156118e45760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610962565b6009546001600160a01b0383165f9081526020819052604090205461190990836127c2565b111561194d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610962565b611a8f565b6001600160a01b0382165f9081526013602052604090205460ff16801561199157506001600160a01b0383165f9081526012602052604090205460ff16155b15611a075760075481111561194d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610962565b6001600160a01b0382165f9081526012602052604090205460ff16611a8f576009546001600160a01b0383165f90815260208190526040902054611a4b90836127c2565b1115611a8f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610962565b305f9081526020819052604090205460085481108015908190611aba5750600a5462010000900460ff165b8015611ad05750600554600160a01b900460ff16155b8015611af457506001600160a01b0385165f9081526013602052604090205460ff16155b8015611b1857506001600160a01b0385165f9081526011602052604090205460ff16155b8015611b3c57506001600160a01b0384165f9081526011602052604090205460ff16155b15611b6a576005805460ff60a01b1916600160a01b179055611b5c611f38565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526011602052604090205460ff600160a01b909204821615911680611bb657506001600160a01b0385165f9081526011602052604090205460ff165b15611bbe57505f5b5f8115611d2d576001600160a01b0386165f9081526013602052604090205460ff168015611bed57505f600c54115b15611c5c57611bfa611fb7565b9050808511611c4b5760405162461bcd60e51b815260206004820152601e60248201527f53656c6c20616d6f756e74206973206c657373207468616e20666565732e00006044820152606401610962565b611c558186612889565b9450611d1c565b6001600160a01b0387165f9081526013602052604090205460ff168015611c8457505f600b54115b15611d1c5743600e541115611cb6576001600160a01b0386165f908152600f60205260409020805460ff191660011790555b611cbe612165565b9050808511611d0f5760405162461bcd60e51b815260206004820152601d60248201527f42757920616d6f756e74206973206c657373207468616e20666565732e0000006044820152606401610962565b611d198186612889565b94505b8015611d2d57611d2d873083611de5565b611d38878787611de5565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e0b5760405162461bcd60e51b815260040161096290612801565b6001600160a01b038216611e315760405162461bcd60e51b815260040161096290612846565b6001600160a01b0383165f9081526020819052604090205481811015611ea85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610962565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611ede9084906127c2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f2a91815260200190565b60405180910390a350505050565b305f9081526020819052604081205490818103611f53575050565b600854821115611f635760085491505b81611f6d816122af565b60065460405147916001600160a01b03169082905f81818185875af1925050503d805f8114611d38576040519150601f19603f3d011682016040523d82523d5f602084013e611d38565b6040805160028082526060820183525f928392919060208301908036833701905050905030815f81518110611fee57611fee6127d5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561206a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061208e919061289c565b816001815181106120a1576120a16127d5565b6001600160a01b039283166020918202929092010152600c546040516307c0329d60e21b81525f927f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1691631f00ca7491612101919086906004016128f9565b5f60405180830381865afa15801561211b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121429190810190612919565b9050805f81518110612156576121566127d5565b60200260200101519250505090565b6040805160028082526060820183525f928392919060208301908036833701905050905030815f8151811061219c5761219c6127d5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612218573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061223c919061289c565b8160018151811061224f5761224f6127d5565b6001600160a01b039283166020918202929092010152600b546040516307c0329d60e21b81525f927f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1691631f00ca7491612101919086906004016128f9565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106122e2576122e26127d5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612382919061289c565b81600181518110612395576123956127d5565b60200260200101906001600160a01b031690816001600160a01b0316815250506123e0307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461155a565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906124349085905f908690309042906004016129a5565b5f604051808303815f87803b15801561244b575f80fd5b505af115801561245d573d5f803e3d5ffd5b505050505050565b5f6020808352835180828501525f5b8181101561249057858101830151858201604001528201612474565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611557575f80fd5b5f80604083850312156124d5575f80fd5b82356124e0816124b0565b946020939093013593505050565b5f602082840312156124fe575f80fd5b8135612509816124b0565b9392505050565b5f60208284031215612520575f80fd5b5035919050565b5f805f60608486031215612539575f80fd5b8335612544816124b0565b92506020840135612554816124b0565b929592945050506040919091013590565b80358015158114611392575f80fd5b5f8060408385031215612585575f80fd5b8235612590816124b0565b915061259e60208401612565565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125e4576125e46125a7565b604052919050565b5f67ffffffffffffffff821115612605576126056125a7565b5060051b60200190565b5f8060408385031215612620575f80fd5b823567ffffffffffffffff811115612636575f80fd5b8301601f81018513612646575f80fd5b8035602061265b612656836125ec565b6125bb565b82815260059290921b83018101918181019088841115612679575f80fd5b938201935b838510156126a0578435612691816124b0565b8252938201939082019061267e565b95506126af9050868201612565565b93505050509250929050565b5f602082840312156126cb575f80fd5b61250982612565565b5f80604083850312156126e5575f80fd5b82356126f0816124b0565b91506020830135612700816124b0565b809150509250929050565b600181811c9082168061271f57607f821691505b60208210810361273d57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761093257610932612778565b5f826127bd57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561093257610932612778565b634e487b7160e01b5f52603260045260245ffd5b5f600182016127fa576127fa612778565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561093257610932612778565b5f602082840312156128ac575f80fd5b8151612509816124b0565b5f8151808452602080850194508084015f5b838110156128ee5781516001600160a01b0316875295820195908201906001016128c9565b509495945050505050565b828152604060208201525f61291160408301846128b7565b949350505050565b5f602080838503121561292a575f80fd5b825167ffffffffffffffff811115612940575f80fd5b8301601f81018513612950575f80fd5b805161295e612656826125ec565b81815260059190911b8201830190838101908783111561297c575f80fd5b928401925b8284101561299a57835182529284019290840190612981565b979650505050505050565b85815284602082015260a060408201525f6129c360a08301866128b7565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122028f206ce1152e602bbc6d787fd8801999e50f21deaacef8e28346f66ae0ebffd64736f6c63430008140033

Deployed Bytecode Sourcemap

12853:13001:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3102:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4015:169;;;;;;;;;;-1:-1:-1;4015:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4015:169:0;1023:187:1;13763:63:0;;;;;;;;;;-1:-1:-1;13763:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12927:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;12927:51:0;1467:230:1;3422:108:0;;;;;;;;;;-1:-1:-1;3510:12:0;;3422:108;;;1848:25:1;;;1836:2;1821:18;3422:108:0;1702:177:1;17471:266:0;;;;;;;;;;-1:-1:-1;17471:266:0;;;;;:::i;:::-;;:::i;:::-;;4192:492;;;;;;;;;;-1:-1:-1;4192:492:0;;;;;:::i;:::-;;:::i;13030:53::-;;;;;;;;;;;;13076:6;13030:53;;3322:92;;;;;;;;;;-1:-1:-1;3322:92:0;;3405:1;2880:36:1;;2868:2;2853:18;3322:92:0;2738:184:1;4692:215:0;;;;;;;;;;-1:-1:-1;4692:215:0;;;;;:::i;:::-;;:::i;12985:38::-;;;;;;;;;;;;;;;13274:33;;;;;;;;;;-1:-1:-1;13274:33:0;;;;;;;;19734:126;;;;;;;;;;-1:-1:-1;19734:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;19824:28:0;19800:4;19824:28;;;:19;:28;;;;;;;;;19734:126;13539:43;;;;;;;;;;-1:-1:-1;13539:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13589:25;;;;;;;;;;;;;;;;13354:31;;;;;;;;;;-1:-1:-1;13354:31:0;;;;;;;;;;;3538:127;;;;;;;;;;-1:-1:-1;3538:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3639:18:0;3612:7;3639:18;;;;;;;;;;;;3538:127;1220:103;;;;;;;;;;;;;:::i;18371:202::-;;;;;;;;;;-1:-1:-1;18371:202:0;;;;;:::i;:::-;;:::i;16724:152::-;;;;;;;;;;;;;:::i;18000:167::-;;;;;;;;;;-1:-1:-1;18000:167:0;;;;;:::i;:::-;;:::i;13122:30::-;;;;;;;;;;-1:-1:-1;13122:30:0;;;;-1:-1:-1;;;;;13122:30:0;;;16239:433;;;;;;;;;;-1:-1:-1;16239:433:0;;;;;:::i;:::-;;:::i;24455:245::-;;;;;;;;;;-1:-1:-1;24455:245:0;;;;;:::i;:::-;;:::i;997:87::-;;;;;;;;;;-1:-1:-1;1070:6:0;;-1:-1:-1;;;;;1070:6:0;997:87;;18263:100;;;;;;;;;;-1:-1:-1;18263:100:0;;;;;:::i;:::-;;:::i;3210:104::-;;;;;;;;;;;;;:::i;18987:304::-;;;;;;;;;;-1:-1:-1;18987:304:0;;;;;:::i;:::-;;:::i;4915:413::-;;;;;;;;;;-1:-1:-1;4915:413:0;;;;;:::i;:::-;;:::i;13499:33::-;;;;;;;;;;;;;;;;3673:175;;;;;;;;;;-1:-1:-1;3673:175:0;;;;;:::i;:::-;;:::i;19495:231::-;;;;;;;;;;-1:-1:-1;19495:231:0;;;;;:::i;:::-;;:::i;13984:57::-;;;;;;;;;;-1:-1:-1;13984:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13314:33;;;;;;;;;;-1:-1:-1;13314:33:0;;;;;;;;;;;18797:182;;;;;;;;;;-1:-1:-1;18797:182:0;;;;;:::i;:::-;;:::i;17745:247::-;;;;;;;;;;-1:-1:-1;17745:247:0;;;;;:::i;:::-;;:::i;13159:35::-;;;;;;;;;;;;;;;;16946:517;;;;;;;;;;-1:-1:-1;16946:517:0;;;;;:::i;:::-;;:::i;3856:151::-;;;;;;;;;;-1:-1:-1;3856:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3972:18:0;;;3945:7;3972:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3856:151;13423:23;;;;;;;;;;;;;;;;13201:33;;;;;;;;;;;;;;;;13394:22;;;;;;;;;;;;;;;;18581:208;;;;;;;;;;-1:-1:-1;18581:208:0;;;;;:::i;:::-;;:::i;13455:37::-;;;;;;;;;;;;;;;;24292:155;;;;;;;;;;-1:-1:-1;24292:155:0;;;;;:::i;:::-;;:::i;1331:201::-;;;;;;;;;;-1:-1:-1;1331:201:0;;;;;:::i;:::-;;:::i;13241:24::-;;;;;;;;;;;;;;;;3102:100;3156:13;3189:5;3182:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3102:100;:::o;4015:169::-;4098:4;4115:39;730:10;4138:7;4147:6;4115:8;:39::i;:::-;-1:-1:-1;4172:4:0;4015:169;;;;;:::o;17471:266::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;;;;;;;;;17607:3:::1;17600;17579:13;3510:12:::0;;;3422:108;17579:13:::1;:17;::::0;17595:1:::1;17579:17;:::i;:::-;17578:25;;;;:::i;:::-;17577:33;;;;:::i;:::-;17567:6;:43;;17545:138;;;::::0;-1:-1:-1;;;17545:138:0;;7106:2:1;17545:138:0::1;::::0;::::1;7088:21:1::0;7145:2;7125:18;;;7118:30;7184:34;7164:18;;;7157:62;-1:-1:-1;;;7235:18:1;;;7228:43;7288:19;;17545:138:0::1;6904:409:1::0;17545:138:0::1;17717:12;:6:::0;17726:3:::1;17717:12;:::i;:::-;17694:20;:35:::0;-1:-1:-1;17471:266:0:o;4192:492::-;4332:4;4349:36;4359:6;4367:9;4378:6;4349:9;:36::i;:::-;-1:-1:-1;;;;;4425:19:0;;4398:24;4425:19;;;:11;:19;;;;;;;;730:10;4425:33;;;;;;;;4477:26;;;;4469:79;;;;-1:-1:-1;;;4469:79:0;;7520:2:1;4469:79:0;;;7502:21:1;7559:2;7539:18;;;7532:30;7598:34;7578:18;;;7571:62;-1:-1:-1;;;7649:18:1;;;7642:38;7697:19;;4469:79:0;7318:404:1;4469:79:0;4584:57;4593:6;730:10;4634:6;4615:16;:25;4584:8;:57::i;:::-;-1:-1:-1;4672:4:0;;4192:492;-1:-1:-1;;;;4192:492:0:o;4692:215::-;730:10;4780:4;4829:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4829:34:0;;;;;;;;;;4780:4;;4797:80;;4820:7;;4829:47;;4866:10;;4829:47;:::i;:::-;4797:8;:80::i;1220:103::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;1285:30:::1;1312:1;1285:18;:30::i;:::-;1220:103::o:0;18371:202::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;18476:17:::1;18466:7;:27;;18458:79;;;::::0;-1:-1:-1;;;18458:79:0;;8059:2:1;18458:79:0::1;::::0;::::1;8041:21:1::0;8098:2;8078:18;;;8071:30;8137:34;8117:18;;;8110:62;-1:-1:-1;;;8188:18:1;;;8181:37;8235:19;;18458:79:0::1;7857:403:1::0;18458:79:0::1;18548:7;:17:::0;18371:202::o;16724:152::-;1070:6;;16776:4;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;16793:14:::1;:22:::0;;-1:-1:-1;;16793:22:0::1;::::0;;16831:15:::1;::::0;::::1;::::0;16810:5:::1;::::0;16831:15:::1;-1:-1:-1::0;16864:4:0::1;16724:152:::0;:::o;18000:167::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18113:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;18113:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18000:167::o;16239:433::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;16327:13:::1;::::0;::::1;::::0;::::1;;;16326:14;16318:50;;;::::0;-1:-1:-1;;;16318:50:0;;8467:2:1;16318:50:0::1;::::0;::::1;8449:21:1::0;8506:2;8486:18;;;8479:30;8545:25;8525:18;;;8518:53;8588:18;;16318:50:0::1;8265:347:1::0;16318:50:0::1;16421:2;16401:16;:22;;16379:111;;;::::0;-1:-1:-1;;;16379:111:0;;8819:2:1;16379:111:0::1;::::0;::::1;8801:21:1::0;8858:2;8838:18;;;8831:30;8897:34;8877:18;;;8870:62;-1:-1:-1;;;8948:18:1;;;8941:37;8995:19;;16379:111:0::1;8617:403:1::0;16379:111:0::1;16501:13;:20:::0;;-1:-1:-1;;16532:19:0;16501:20:::1;16532:19:::0;;;16583:12:::1;16562:18;:33:::0;;;16627:37:::1;::::0;16648:16;;16627:37:::1;:::i;:::-;16606:18;:58:::0;-1:-1:-1;16239:433:0:o;24455:245::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;24555:9:::1;24551:142;24574:4;:11;24570:1;:15;24551:142;;;24625:13;-1:-1:-1::0;;;;;24614:24:0::1;:4;24619:1;24614:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;24614:24:0::1;::::0;24606:33:::1;;;::::0;::::1;;24676:5;24654:10;:19;24665:4;24670:1;24665:7;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24654:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24654:19:0;:27;;-1:-1:-1;;24654:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24587:3;::::1;::::0;::::1;:::i;:::-;;;;24551:142;;;;24455:245:::0;;:::o;18263:100::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;18334:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;18334:21:0;;::::1;::::0;;;::::1;::::0;;18263:100::o;3210:104::-;3266:13;3299:7;3292:14;;;;;:::i;18987:304::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;19131:13:::1;-1:-1:-1::0;;;;;19123:21:0::1;:4;-1:-1:-1::0;;;;;19123:21:0::1;::::0;19101:128:::1;;;::::0;-1:-1:-1;;;19101:128:0;;9499:2:1;19101:128:0::1;::::0;::::1;9481:21:1::0;9538:2;9518:18;;;9511:30;9577:34;9557:18;;;9550:62;9648:27;9628:18;;;9621:55;9693:19;;19101:128:0::1;9297:421:1::0;19101:128:0::1;19242:41;19271:4;19277:5;19242:28;:41::i;:::-;18987:304:::0;;:::o;4915:413::-;730:10;5008:4;5052:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5052:34:0;;;;;;;;;;5105:35;;;;5097:85;;;;-1:-1:-1;;;5097:85:0;;9925:2:1;5097:85:0;;;9907:21:1;9964:2;9944:18;;;9937:30;10003:34;9983:18;;;9976:62;-1:-1:-1;;;10054:18:1;;;10047:35;10099:19;;5097:85:0;9723:401:1;5097:85:0;5218:67;730:10;5241:7;5269:15;5250:16;:34;5218:8;:67::i;:::-;-1:-1:-1;5316:4:0;;4915:413;-1:-1:-1;;;4915:413:0:o;3673:175::-;3759:4;3776:42;730:10;3800:9;3811:6;3776:9;:42::i;19495:231::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;19655:15:::1;::::0;19612:59:::1;::::0;-1:-1:-1;;;;;19655:15:0;;::::1;::::0;19612:59;::::1;::::0;::::1;::::0;19655:15:::1;::::0;19612:59:::1;19682:15;:36:::0;;-1:-1:-1;;;;;;19682:36:0::1;-1:-1:-1::0;;;;;19682:36:0;;;::::1;::::0;;;::::1;::::0;;19495:231::o;18797:182::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18882:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;18882:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18937:34;;1163:41:1;;;18937:34:0::1;::::0;1136:18:1;18937:34:0::1;;;;;;;18797:182:::0;;:::o;17745:247::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;17884:3:::1;17877;17856:13;3510:12:::0;;;3422:108;17856:13:::1;:17;::::0;17872:1:::1;17856:17;:::i;:::-;17855:25;;;;:::i;:::-;17854:33;;;;:::i;:::-;17844:6;:43;;17822:127;;;::::0;-1:-1:-1;;;17822:127:0;;10331:2:1;17822:127:0::1;::::0;::::1;10313:21:1::0;10370:2;10350:18;;;10343:30;10409:34;10389:18;;;10382:62;-1:-1:-1;;;10460:18:1;;;10453:32;10502:19;;17822:127:0::1;10129:398:1::0;17822:127:0::1;17972:12;:6:::0;17981:3:::1;17972:12;:::i;:::-;17960:9;:24:::0;-1:-1:-1;17745:247:0:o;16946:517::-;1070:6;;17054:4;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;17143:3:::1;17134:5;17113:13;3510:12:::0;;;3422:108;17113:13:::1;:17;::::0;17129:1:::1;17113:17;:::i;:::-;17112:27;;;;:::i;:::-;17111:35;;;;:::i;:::-;17098:9;:48;;17076:150;;;::::0;-1:-1:-1;;;17076:150:0;;10734:2:1;17076:150:0::1;::::0;::::1;10716:21:1::0;10773:2;10753:18;;;10746:30;10812:34;10792:18;;;10785:62;-1:-1:-1;;;10863:18:1;;;10856:50;10923:19;;17076:150:0::1;10532:416:1::0;17076:150:0::1;17303:3;17295:4;17274:13;3510:12:::0;;;3422:108;17274:13:::1;:17;::::0;17290:1:::1;17274:17;:::i;:::-;17273:26;;;;:::i;:::-;17272:34;;;;:::i;:::-;17259:9;:47;;17237:149;;;::::0;-1:-1:-1;;;17237:149:0;;11155:2:1;17237:149:0::1;::::0;::::1;11137:21:1::0;11194:2;11174:18;;;11167:30;11233:34;11213:18;;;11206:62;-1:-1:-1;;;11284:18:1;;;11277:50;11344:19;;17237:149:0::1;10953:416:1::0;17237:149:0::1;17418:15;:9:::0;17430:3:::1;17418:15;:::i;:::-;17397:18;:36:::0;-1:-1:-1;17451:4:0::1;1203:1;16946:517:::0;;;:::o;18581:208::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;18689:17:::1;18677:8;:29;;18669:82;;;::::0;-1:-1:-1;;;18669:82:0;;11576:2:1;18669:82:0::1;::::0;::::1;11558:21:1::0;11615:2;11595:18;;;11588:30;11654:34;11634:18;;;11627:62;-1:-1:-1;;;11705:18:1;;;11698:38;11753:19;;18669:82:0::1;11374:404:1::0;18669:82:0::1;18762:8;:19:::0;18581:208::o;24292:155::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;24391:13:::1;-1:-1:-1::0;;;;;24384:20:0::1;:3;-1:-1:-1::0;;;;;24384:20:0::1;::::0;24376:29:::1;;;::::0;::::1;;-1:-1:-1::0;;;;;24416:15:0;;;::::1;;::::0;;;:10:::1;:15;::::0;;;;:23;;-1:-1:-1;;24416:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24292:155::o;1331:201::-;1070:6;;-1:-1:-1;;;;;1070:6:0;730:10;1132:23;1124:68;;;;-1:-1:-1;;;1124:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1420:22:0;::::1;1412:73;;;::::0;-1:-1:-1;;;1412:73:0;;11985:2:1;1412:73:0::1;::::0;::::1;11967:21:1::0;12024:2;12004:18;;;11997:30;12063:34;12043:18;;;12036:62;-1:-1:-1;;;12114:18:1;;;12107:36;12160:19;;1412:73:0::1;11783:402:1::0;1412:73:0::1;1496:28;1515:8;1496:18;:28::i;:::-;1331:201:::0;:::o;6484:380::-;-1:-1:-1;;;;;6620:19:0;;6612:68;;;;-1:-1:-1;;;6612:68:0;;12392:2:1;6612:68:0;;;12374:21:1;12431:2;12411:18;;;12404:30;12470:34;12450:18;;;12443:62;-1:-1:-1;;;12521:18:1;;;12514:34;12565:19;;6612:68:0;12190:400:1;6612:68:0;-1:-1:-1;;;;;6699:21:0;;6691:68;;;;-1:-1:-1;;;6691:68:0;;12797:2:1;6691:68:0;;;12779:21:1;12836:2;12816:18;;;12809:30;12875:34;12855:18;;;12848:62;-1:-1:-1;;;12926:18:1;;;12919:32;12968:19;;6691:68:0;12595:398:1;6691:68:0;-1:-1:-1;;;;;6772:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6824:32;;1848:25:1;;;6824:32:0;;1821:18:1;6824:32:0;;;;;;;6484:380;;;:::o;19868:3784::-;-1:-1:-1;;;;;20000:18:0;;19992:68;;;;-1:-1:-1;;;19992:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20079:16:0;;20071:64;;;;-1:-1:-1;;;20071:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20155:16:0;;;;;;:10;:16;;;;;;;;20154:17;;:36;;-1:-1:-1;;;;;;20176:14:0;;;;;;:10;:14;;;;;;;;20175:15;20154:36;20146:45;;;;;;20208:6;20218:1;20208:11;20204:93;;20236:28;20252:4;20258:2;20262:1;20236:15;:28::i;20204:93::-;20313:14;;;;20309:1694;;;1070:6;;-1:-1:-1;;;;;20366:15:0;;;1070:6;;20366:15;;;;:49;;-1:-1:-1;1070:6:0;;-1:-1:-1;;;;;20402:13:0;;;1070:6;;20402:13;;20366:49;:86;;;;-1:-1:-1;;;;;;20436:16:0;;;;20366:86;:128;;;;-1:-1:-1;;;;;;20473:21:0;;20487:6;20473:21;;20366:128;:158;;;;-1:-1:-1;20516:8:0;;-1:-1:-1;;;20516:8:0;;;;20515:9;20366:158;20344:1648;;;20564:13;;;;;;;20559:223;;-1:-1:-1;;;;;20636:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;20665:23:0;;;;;;:19;:23;;;;;;;;20636:52;20602:160;;;;-1:-1:-1;;;20602:160:0;;14010:2:1;20602:160:0;;;13992:21:1;14049:2;14029:18;;;14022:30;-1:-1:-1;;;14068:18:1;;;14061:52;14130:18;;20602:160:0;13808:346:1;20602:160:0;-1:-1:-1;;;;;20856:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;20913:35:0;;;;;;:31;:35;;;;;;;;20912:36;20856:92;20830:1147;;;21035:20;;21025:6;:30;;20991:169;;;;-1:-1:-1;;;20991:169:0;;14361:2:1;20991:169:0;;;14343:21:1;14400:2;14380:18;;;14373:30;14439:34;14419:18;;;14412:62;-1:-1:-1;;;14490:18:1;;;14483:51;14551:19;;20991:169:0;14159:417:1;20991:169:0;21243:9;;-1:-1:-1;;;;;3639:18:0;;3612:7;3639:18;;;;;;;;;;;21217:22;;:6;:22;:::i;:::-;:35;;21183:140;;;;-1:-1:-1;;;21183:140:0;;14783:2:1;21183:140:0;;;14765:21:1;14822:2;14802:18;;;14795:30;-1:-1:-1;;;14841:18:1;;;14834:49;14900:18;;21183:140:0;14581:343:1;21183:140:0;20830:1147;;;-1:-1:-1;;;;;21421:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;21476:37:0;;;;;;:31;:37;;;;;;;;21475:38;21421:92;21395:582;;;21600:20;;21590:6;:30;;21556:170;;;;-1:-1:-1;;;21556:170:0;;15131:2:1;21556:170:0;;;15113:21:1;15170:2;15150:18;;;15143:30;15209:34;15189:18;;;15182:62;-1:-1:-1;;;15260:18:1;;;15253:52;15322:19;;21556:170:0;14929:418:1;21395:582:0;-1:-1:-1;;;;;21757:35:0;;;;;;:31;:35;;;;;;;;21752:225;;21877:9;;-1:-1:-1;;;;;3639:18:0;;3612:7;3639:18;;;;;;;;;;;21851:22;;:6;:22;:::i;:::-;:35;;21817:140;;;;-1:-1:-1;;;21817:140:0;;14783:2:1;21817:140:0;;;14765:21:1;14822:2;14802:18;;;14795:30;-1:-1:-1;;;14841:18:1;;;14834:49;14900:18;;21817:140:0;14581:343:1;21817:140:0;22064:4;22015:28;3639:18;;;;;;;;;;;22122;;22098:42;;;;;;;22171:35;;-1:-1:-1;22195:11:0;;;;;;;22171:35;:61;;;;-1:-1:-1;22224:8:0;;-1:-1:-1;;;22224:8:0;;;;22223:9;22171:61;:110;;;;-1:-1:-1;;;;;;22250:31:0;;;;;;:25;:31;;;;;;;;22249:32;22171:110;:153;;;;-1:-1:-1;;;;;;22299:25:0;;;;;;:19;:25;;;;;;;;22298:26;22171:153;:194;;;;-1:-1:-1;;;;;;22342:23:0;;;;;;:19;:23;;;;;;;;22341:24;22171:194;22153:326;;;22392:8;:15;;-1:-1:-1;;;;22392:15:0;-1:-1:-1;;;22392:15:0;;;22424:10;:8;:10::i;:::-;22451:8;:16;;-1:-1:-1;;;;22451:16:0;;;22153:326;22507:8;;-1:-1:-1;;;;;22617:25:0;;22491:12;22617:25;;;:19;:25;;;;;;22507:8;-1:-1:-1;;;22507:8:0;;;;;22506:9;;22617:25;;:52;;-1:-1:-1;;;;;;22646:23:0;;;;;;:19;:23;;;;;;;;22617:52;22613:100;;;-1:-1:-1;22696:5:0;22613:100;22725:12;22830:7;22826:773;;;-1:-1:-1;;;;;22882:29:0;;;;;;:25;:29;;;;;;;;:45;;;;;22926:1;22915:8;;:12;22882:45;22878:603;;;22955:19;:17;:19::i;:::-;22948:26;;23010:4;23001:6;:13;22993:57;;;;-1:-1:-1;;;22993:57:0;;15554:2:1;22993:57:0;;;15536:21:1;15593:2;15573:18;;;15566:30;15632:32;15612:18;;;15605:60;15682:18;;22993:57:0;15352:354:1;22993:57:0;23069:14;23079:4;23069:14;;:::i;:::-;;;22878:603;;;-1:-1:-1;;;;;23145:31:0;;;;;;:25;:31;;;;;;;;:46;;;;;23190:1;23180:7;;:11;23145:46;23141:340;;;23237:12;23216:18;;:33;23212:102;;;-1:-1:-1;;;;;23273:14:0;;;;;;:10;:14;;;;;:21;;-1:-1:-1;;23273:21:0;23290:4;23273:21;;;23212:102;23339:18;:16;:18::i;:::-;23332:25;;23393:4;23384:6;:13;23376:56;;;;-1:-1:-1;;;23376:56:0;;16046:2:1;23376:56:0;;;16028:21:1;16085:2;16065:18;;;16058:30;16124:31;16104:18;;;16097:59;16173:18;;23376:56:0;15844:353:1;23376:56:0;23451:14;23461:4;23451:14;;:::i;:::-;;;23141:340;23501:8;;23497:91;;23530:42;23546:4;23560;23567;23530:15;:42::i;:::-;23611:33;23627:4;23633:2;23637:6;23611:15;:33::i;:::-;19981:3671;;;;19868:3784;;;:::o;1540:191::-;1633:6;;;-1:-1:-1;;;;;1650:17:0;;;-1:-1:-1;;;;;;1650:17:0;;;;;;;1683:40;;1633:6;;;1650:17;1633:6;;1683:40;;1614:16;;1683:40;1603:128;1540:191;:::o;19299:188::-;-1:-1:-1;;;;;19382:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;19382:39:0;;;;;;;;;;19439:40;;19382:39;;:31;19439:40;;;19299:188;;:::o;5336:733::-;-1:-1:-1;;;;;5476:20:0;;5468:70;;;;-1:-1:-1;;;5468:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5557:23:0;;5549:71;;;;-1:-1:-1;;;5549:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5717:17:0;;5693:21;5717:17;;;;;;;;;;;5753:23;;;;5745:74;;;;-1:-1:-1;;;5745:74:0;;16404:2:1;5745:74:0;;;16386:21:1;16443:2;16423:18;;;16416:30;16482:34;16462:18;;;16455:62;-1:-1:-1;;;16533:18:1;;;16526:36;16579:19;;5745:74:0;16202:402:1;5745:74:0;-1:-1:-1;;;;;5855:17:0;;;:9;:17;;;;;;;;;;;5875:22;;;5855:42;;5919:20;;;;;;;;:30;;5891:6;;5855:9;5919:30;;5891:6;;5919:30;:::i;:::-;;;;;;;;5984:9;-1:-1:-1;;;;;5967:35:0;5976:6;-1:-1:-1;;;;;5967:35:0;;5995:6;5967:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;5967:35:0;;;;;;;;5457:612;5336:733;;;:::o;25305:546::-;25388:4;25344:23;3639:18;;;;;;;;;;;;25434:20;;;25430:59;;25471:7;;25305:546::o;25430:59::-;25523:18;;25505:15;:36;25501:105;;;25576:18;;25558:36;;25501:105;25647:15;25675:36;25647:15;25675:16;:36::i;:::-;25799:15;;25791:52;;25745:21;;-1:-1:-1;;;;;25799:15:0;;25745:21;;25791:52;;;;25745:21;25799:15;25791:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23975:309;24071:16;;;24085:1;24071:16;;;;;;;;24027:7;;;;24071:16;24085:1;24071:16;;;;;;;;;;-1:-1:-1;24071:16:0;24047:40;;24116:4;24098;24103:1;24098:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24098:23:0;;;-1:-1:-1;;;;;24098:23:0;;;;;24142:15;-1:-1:-1;;;;;24142:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24132:4;24137:1;24132:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24132:32:0;;;:7;;;;;;;;;:32;24233:8;;24204:44;;-1:-1:-1;;;24204:44:0;;24177:24;;24204:15;:28;;;;:44;;24233:8;24243:4;;24204:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24204:44:0;;;;;;;;;;;;:::i;:::-;24177:71;;24266:7;24274:1;24266:10;;;;;;;;:::i;:::-;;;;;;;24259:17;;;;23975:309;:::o;23660:307::-;23755:16;;;23769:1;23755:16;;;;;;;;23711:7;;;;23755:16;23769:1;23755:16;;;;;;;;;;-1:-1:-1;23755:16:0;23731:40;;23800:4;23782;23787:1;23782:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;23782:23:0;;;-1:-1:-1;;;;;23782:23:0;;;;;23826:15;-1:-1:-1;;;;;23826:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23816:4;23821:1;23816:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23816:32:0;;;:7;;;;;;;;;:32;23917:7;;23888:43;;-1:-1:-1;;;23888:43:0;;23861:24;;23888:15;:28;;;;:43;;23917:7;23926:4;;23888:43;;;:::i;24708:589::-;24858:16;;;24872:1;24858:16;;;;;;;;24834:21;;24858:16;;;;;;;;;;-1:-1:-1;24858:16:0;24834:40;;24903:4;24885;24890:1;24885:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24885:23:0;;;-1:-1:-1;;;;;24885:23:0;;;;;24929:15;-1:-1:-1;;;;;24929:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24919:4;24924:1;24919:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;24919:32:0;;;-1:-1:-1;;;;;24919:32:0;;;;;24964:62;24981:4;24996:15;25014:11;24964:8;:62::i;:::-;25065:224;;-1:-1:-1;;;25065:224:0;;-1:-1:-1;;;;;25065:15:0;:66;;;;:224;;25146:11;;25172:1;;25216:4;;25243;;25263:15;;25065:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24763:534;24708:589;:::o;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;:::-;1451:5;1215:247;-1:-1:-1;;;1215:247:1:o;1884:180::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;2035:23:1;;1884:180;-1:-1:-1;1884:180:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:160::-;2992:20;;3048:13;;3041:21;3031:32;;3021:60;;3077:1;3074;3067:12;3092:315;3157:6;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:52;;;3234:1;3231;3224:12;3186:52;3273:9;3260:23;3292:31;3317:5;3292:31;:::i;:::-;3342:5;-1:-1:-1;3366:35:1;3397:2;3382:18;;3366:35;:::i;:::-;3356:45;;3092:315;;;;;:::o;3412:127::-;3473:10;3468:3;3464:20;3461:1;3454:31;3504:4;3501:1;3494:15;3528:4;3525:1;3518:15;3544:275;3615:2;3609:9;3680:2;3661:13;;-1:-1:-1;;3657:27:1;3645:40;;3715:18;3700:34;;3736:22;;;3697:62;3694:88;;;3762:18;;:::i;:::-;3798:2;3791:22;3544:275;;-1:-1:-1;3544:275:1:o;3824:183::-;3884:4;3917:18;3909:6;3906:30;3903:56;;;3939:18;;:::i;:::-;-1:-1:-1;3984:1:1;3980:14;3996:4;3976:25;;3824:183::o;4012:1036::-;4102:6;4110;4163:2;4151:9;4142:7;4138:23;4134:32;4131:52;;;4179:1;4176;4169:12;4131:52;4219:9;4206:23;4252:18;4244:6;4241:30;4238:50;;;4284:1;4281;4274:12;4238:50;4307:22;;4360:4;4352:13;;4348:27;-1:-1:-1;4338:55:1;;4389:1;4386;4379:12;4338:55;4425:2;4412:16;4447:4;4471:60;4487:43;4527:2;4487:43;:::i;:::-;4471:60;:::i;:::-;4565:15;;;4647:1;4643:10;;;;4635:19;;4631:28;;;4596:12;;;;4671:19;;;4668:39;;;4703:1;4700;4693:12;4668:39;4727:11;;;;4747:217;4763:6;4758:3;4755:15;4747:217;;;4843:3;4830:17;4860:31;4885:5;4860:31;:::i;:::-;4904:18;;4780:12;;;;4942;;;;4747:217;;;4983:5;-1:-1:-1;5007:35:1;;-1:-1:-1;5023:18:1;;;5007:35;:::i;:::-;4997:45;;;;;4012:1036;;;;;:::o;5053:180::-;5109:6;5162:2;5150:9;5141:7;5137:23;5133:32;5130:52;;;5178:1;5175;5168:12;5130:52;5201:26;5217:9;5201:26;:::i;5238:388::-;5306:6;5314;5367:2;5355:9;5346:7;5342:23;5338:32;5335:52;;;5383:1;5380;5373:12;5335:52;5422:9;5409:23;5441:31;5466:5;5441:31;:::i;:::-;5491:5;-1:-1:-1;5548:2:1;5533:18;;5520:32;5561:33;5520:32;5561:33;:::i;:::-;5613:7;5603:17;;;5238:388;;;;;:::o;5631:380::-;5710:1;5706:12;;;;5753;;;5774:61;;5828:4;5820:6;5816:17;5806:27;;5774:61;5881:2;5873:6;5870:14;5850:18;5847:38;5844:161;;5927:10;5922:3;5918:20;5915:1;5908:31;5962:4;5959:1;5952:15;5990:4;5987:1;5980:15;5844:161;;5631:380;;;:::o;6016:356::-;6218:2;6200:21;;;6237:18;;;6230:30;6296:34;6291:2;6276:18;;6269:62;6363:2;6348:18;;6016:356::o;6377:127::-;6438:10;6433:3;6429:20;6426:1;6419:31;6469:4;6466:1;6459:15;6493:4;6490:1;6483:15;6509:168;6582:9;;;6613;;6630:15;;;6624:22;;6610:37;6600:71;;6651:18;;:::i;6682:217::-;6722:1;6748;6738:132;;6792:10;6787:3;6783:20;6780:1;6773:31;6827:4;6824:1;6817:15;6855:4;6852:1;6845:15;6738:132;-1:-1:-1;6884:9:1;;6682:217::o;7727:125::-;7792:9;;;7813:10;;;7810:36;;;7826:18;;:::i;9025:127::-;9086:10;9081:3;9077:20;9074:1;9067:31;9117:4;9114:1;9107:15;9141:4;9138:1;9131:15;9157:135;9196:3;9217:17;;;9214:43;;9237:18;;:::i;:::-;-1:-1:-1;9284:1:1;9273:13;;9157:135::o;12998:401::-;13200:2;13182:21;;;13239:2;13219:18;;;13212:30;13278:34;13273:2;13258:18;;13251:62;-1:-1:-1;;;13344:2:1;13329:18;;13322:35;13389:3;13374:19;;12998:401::o;13404:399::-;13606:2;13588:21;;;13645:2;13625:18;;;13618:30;13684:34;13679:2;13664:18;;13657:62;-1:-1:-1;;;13750:2:1;13735:18;;13728:33;13793:3;13778:19;;13404:399::o;15711:128::-;15778:9;;;15799:11;;;15796:37;;;15813:18;;:::i;16819:251::-;16889:6;16942:2;16930:9;16921:7;16917:23;16913:32;16910:52;;;16958:1;16955;16948:12;16910:52;16990:9;16984:16;17009:31;17034:5;17009:31;:::i;17075:461::-;17128:3;17166:5;17160:12;17193:6;17188:3;17181:19;17219:4;17248:2;17243:3;17239:12;17232:19;;17285:2;17278:5;17274:14;17306:1;17316:195;17330:6;17327:1;17324:13;17316:195;;;17395:13;;-1:-1:-1;;;;;17391:39:1;17379:52;;17451:12;;;;17486:15;;;;17427:1;17345:9;17316:195;;;-1:-1:-1;17527:3:1;;17075:461;-1:-1:-1;;;;;17075:461:1:o;17541:332::-;17748:6;17737:9;17730:25;17791:2;17786;17775:9;17771:18;17764:30;17711:4;17811:56;17863:2;17852:9;17848:18;17840:6;17811:56;:::i;:::-;17803:64;17541:332;-1:-1:-1;;;;17541:332:1:o;17878:881::-;17973:6;18004:2;18047;18035:9;18026:7;18022:23;18018:32;18015:52;;;18063:1;18060;18053:12;18015:52;18096:9;18090:16;18129:18;18121:6;18118:30;18115:50;;;18161:1;18158;18151:12;18115:50;18184:22;;18237:4;18229:13;;18225:27;-1:-1:-1;18215:55:1;;18266:1;18263;18256:12;18215:55;18295:2;18289:9;18318:60;18334:43;18374:2;18334:43;:::i;18318:60::-;18412:15;;;18494:1;18490:10;;;;18482:19;;18478:28;;;18443:12;;;;18518:19;;;18515:39;;;18550:1;18547;18540:12;18515:39;18574:11;;;;18594:135;18610:6;18605:3;18602:15;18594:135;;;18676:10;;18664:23;;18627:12;;;;18707;;;;18594:135;;;18748:5;17878:881;-1:-1:-1;;;;;;;17878:881:1:o;18764:582::-;19063:6;19052:9;19045:25;19106:6;19101:2;19090:9;19086:18;19079:34;19149:3;19144:2;19133:9;19129:18;19122:31;19026:4;19170:57;19222:3;19211:9;19207:19;19199:6;19170:57;:::i;:::-;-1:-1:-1;;;;;19263:32:1;;;;19258:2;19243:18;;19236:60;-1:-1:-1;19327:3:1;19312:19;19305:35;19162:65;18764:582;-1:-1:-1;;;18764:582:1:o

Swarm Source

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