ETH Price: $2,373.94 (-1.42%)

Token

The Naughty List (NAUGHTY)
 

Overview

Max Total Supply

1,000,000,000,000 NAUGHTY

Holders

143

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
900,000,000 NAUGHTY

Value
$0.00
0x6246a3f13a0fd7db34a8e707c4bba646b0f7ad82
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:
NAUGHTY

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-23
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;



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

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

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

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

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

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

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

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

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

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract NAUGHTY is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 private startingSupply = 1_000_000_000_000;

    string constant private _name = "The Naughty List";
    string constant private _symbol = "NAUGHTY";
    uint8 private _decimals = 9;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct StaticValuesStruct {
        uint16 maxBuyTaxes;
        uint16 maxSellTaxes;
        uint16 maxTransferTaxes;
        uint16 masterTaxDivisor;
    }

    struct Ratios {
        uint16 team;
        uint16 marketing;
        uint16 donation;
        uint16 total;
    }

    Fees public _taxRates = Fees({
        buyFee: 1000,
        sellFee: 1000,
        transferFee: 1000
        });

    Ratios public _ratios = Ratios({
        team: 3,
        marketing: 5,
        donation: 2,
        total: 10
        });

    StaticValuesStruct public staticVals = StaticValuesStruct({
        maxBuyTaxes: 2000,
        maxSellTaxes: 2000,
        maxTransferTaxes: 2000,
        masterTaxDivisor: 10000
        });

    IRouter02 public dexRouter;
    address public lpPair;

    address public currentRouter;
    // PCS ROUTER
    address private pcsV2Router = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    // UNI ROUTER
    address private uniswapV2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable team;
        address payable donation;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x47701c08E7F922819F0D4D9B8D3188d5f0cE3ecA),
        team: payable(0x47701c08E7F922819F0D4D9B8D3188d5f0cE3ecA),
        donation: payable(0xaFFbC63D7BA4c4C95EA5aE59518168B595aa7Eb3)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;

    uint256 private _maxTxAmount = (_tTotal * 5) / 1000;
    uint256 private _maxWalletSize = (_tTotal * 2) / 100;

    uint256 private swapThreshold = (_tTotal * 5) / 10000;
    uint256 private swapAmount = (_tTotal * 25) / 10000;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event ContractSwapEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56 || block.chainid == 97) {
            currentRouter = pcsV2Router;
            
        } else if (block.chainid == 1 || block.chainid == 42) {
            currentRouter = uniswapV2Router;
        }

        dexRouter = IRouter02(currentRouter);
        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(msg.sender, currentRouter, type(uint256).max);
        _approve(address(this), currentRouter, type(uint256).max);

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;

        _maxTxAmount = 1000000000e9;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner() {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external view override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveContractContingency() public onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    function changeRouterContingency(address router) external onlyOwner {
        require(!_hasLiqBeenAdded);
        currentRouter = router;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

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

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(buyFee <= staticVals.maxBuyTaxes
                && sellFee <=staticVals. maxSellTaxes
                && transferFee <= staticVals.maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 team, uint16 marketing, uint16 donation) external onlyOwner {
        _ratios.team = team;
        _ratios.marketing = marketing;
        _ratios.donation = donation;
        _ratios.total = team + marketing + donation;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Wallet amt must be above 0.1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

    function getMaxTX() public view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() public view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable marketing) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
    }

    function setContractSwapEnabled(bool _enabled) public onlyOwner {
        contractSwapEnabled = _enabled;
        emit ContractSwapEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
            if(to != currentRouter && !lpPairs[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
            }
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwap
                && contractSwapEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    contractSwap(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function contractSwap(uint256 contractTokenBalance) private lockTheSwap {
        if (_ratios.total == 0)
            return;

        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

        if (address(this).balance > 0) {
            uint256 amountBNB = address(this).balance;
            _taxWallets.team.transfer((amountBNB * _ratios.team) / _ratios.total);
            _taxWallets.donation.transfer((amountBNB * _ratios.donation) / _ratios.total);
            _taxWallets.marketing.transfer(address(this).balance);
        }
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        tradingEnabled = true;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(owner()).transfer(address(this).balance);
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (from == lpPair) {
            currentFee = _taxRates.buyFee;
        } else if (to == lpPair) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        uint256 feeAmount = amount * currentFee / staticVals.masterTaxDivisor;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"donation","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"team","type":"address"},{"internalType":"address payable","name":"donation","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"}],"name":"changeRouterContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRouter","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":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"donation","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"staticVals","outputs":[{"internalType":"uint16","name":"maxBuyTaxes","type":"uint16"},{"internalType":"uint16","name":"maxSellTaxes","type":"uint16"},{"internalType":"uint16","name":"maxTransferTaxes","type":"uint16"},{"internalType":"uint16","name":"masterTaxDivisor","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006003556009805460ff19908116600117825564e8d4a51000600b55600c8054909116821790556200003990600a620007d3565b600b5462000048919062000894565b600d8190556200005b90600019620008d0565b6200006990600019620008b6565b600e5560408051606080820183526103e88083526020808401829052928401819052600f805465ffffffffffff19166503e803e803e8179055835160808082018652600382526005828601819052600283880152600a92850192909252601080546001600160401b0319908116660a00020005000317909155865191820187526107d080835282870181905282880152612710918501919091526011805490911667271007d007d007d0179055601580547310ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b03199182161790915560168054737a250d5630b4cf539739df2c5dacb4c659f2488d908316179055855193840186527347701c08e7f922819f0d4d9b8d3188d5f0ce3eca80855294840185905273affbc63d7ba4c4c95ea5ae59518168b595aa7eb3939095018390526017805486168517905560188054861690941790935560198054909416909117909255601a805461ff0019169055600d54620001db9162000894565b620001e7919062000773565b601b556064600d546002620001fd919062000894565b62000209919062000773565b601c55612710600d54600562000220919062000894565b6200022c919062000773565b601d55612710600d54601962000243919062000894565b6200024f919062000773565b601e55601f805461ffff19169055600d543360008181526001602052604081209290925581546001600160a01b0319161790554660381480620002925750466061145b15620002c057601554601480546001600160a01b0319166001600160a01b03909216919091179055620002f9565b4660011480620002d0575046602a145b15620002f957601654601480546001600160a01b0319166001600160a01b039092169190911790555b601454601280546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200035157600080fd5b505afa15801562000366573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038c919062000743565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003e957600080fd5b505afa158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062000743565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200046c57600080fd5b505af115801562000481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a7919062000743565b601380546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff19166001179055601454620004f39133911660001962000642565b6014546200050f9030906001600160a01b031660001962000642565b600160056000620005286000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080548316600190811790915561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549093168117909255600a90620005b06000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055670de0b6b3a7640000601b55620005ec3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040516200063491815260200190565b60405180910390a362000913565b6001600160a01b038316620006945760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006e25760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016200068b565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006020828403121562000755578081fd5b81516001600160a01b03811681146200076c578182fd5b9392505050565b600082620007855762000785620008fd565b500490565b600181815b80851115620007cb578160001904821115620007af57620007af620008e7565b80851615620007bd57918102915b93841c93908002906200078f565b509250929050565b60006200076c60ff841683600082620007ef575060016200088e565b81620007fe575060006200088e565b8160018114620008175760028114620008225762000842565b60019150506200088e565b60ff841115620008365762000836620008e7565b50506001821b6200088e565b5060208310610133831016604e8410600b841016171562000867575081810a6200088e565b6200087383836200078a565b80600019048211156200088a576200088a620008e7565b0290505b92915050565b6000816000190483118215151615620008b157620008b1620008e7565b500290565b600082821015620008cb57620008cb620008e7565b500390565b600082620008e257620008e2620008fd565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6128d480620009236000396000f3fe60806040526004361061026b5760003560e01c8063590ffdce11610144578063a9059cbb116100b6578063eafb5a3c1161007a578063eafb5a3c146107fc578063eb50e70e1461081c578063ee5d9c2d1461083c578063f94aa1b414610851578063fb78680d146108a8578063fdb78c0e146108c857600080fd5b8063a9059cbb1461071d578063aa22b1721461073d578063cab5ebea1461075d578063cf8477061461077d578063dd62ed3e146107b657600080fd5b8063893d20e811610108578063893d20e8146106855780638a63bd9b146106a35780638a8c523c146106b85780638da5cb5b1461068557806395d89b41146106cd578063a457c2d7146106fd57600080fd5b8063590ffdce146105fb5780636ebd00781461061b57806370a0823114610630578063715018a61461065057806380c581d11461066557600080fd5b80632b112e49116101dd5780633f3cf56c116101a15780633f3cf56c14610529578063452ed4f1146105495780634ada218b146105695780634fb2e45d146105835780634fbee193146105a357806350a8e016146105dc57600080fd5b80632b112e4914610492578063313ce567146104a757806332cde664146104c9578063384f36b6146104e9578063395093511461050957600080fd5b80630fa604e41161022f5780630fa604e414610391578063122fea3b146103b457806318160ddd146103d45780631b6afa2d146103e957806323b872dd14610450578063260039571461047057600080fd5b806303fd2a4514610277578063069d955f146102aa57806306fdde03146102ff5780630758d92414610341578063095ea7b31461036157600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028d61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102b657600080fd5b50600f546102da9061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff948516815292841660208401529216918101919091526060016102a1565b34801561030b57600080fd5b5060408051808201909152601081526f151a194813985d59da1d1e48131a5cdd60821b60208201525b6040516102a191906125a6565b34801561034d57600080fd5b5060125461028d906001600160a01b031681565b34801561036d57600080fd5b5061038161037c3660046124cd565b6108e7565b60405190151581526020016102a1565b34801561039d57600080fd5b506103a66108fe565b6040519081526020016102a1565b3480156103c057600080fd5b5060145461028d906001600160a01b031681565b3480156103e057600080fd5b50600d546103a6565b3480156103f557600080fd5b506011546104229061ffff80821691620100008104821691600160201b8204811691600160301b90041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016102a1565b34801561045c57600080fd5b5061038161046b366004612459565b610924565b34801561047c57600080fd5b5061049061048b366004612554565b61099c565b005b34801561049e57600080fd5b506103a6610a81565b3480156104b357600080fd5b50600c5460405160ff90911681526020016102a1565b3480156104d557600080fd5b506104906104e4366004612512565b610aaf565b3480156104f557600080fd5b506104906105043660046123e9565b610baa565b34801561051557600080fd5b506103816105243660046124cd565b610c0b565b34801561053557600080fd5b50610490610544366004612554565b610c47565b34801561055557600080fd5b5060135461028d906001600160a01b031681565b34801561057557600080fd5b50601f546103819060ff1681565b34801561058f57600080fd5b5061049061059e3660046123e9565b610d2e565b3480156105af57600080fd5b506103816105be3660046123e9565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105e857600080fd5b50601f5461038190610100900460ff1681565b34801561060757600080fd5b50610490610616366004612499565b610e55565b34801561062757600080fd5b506103a6610eaa565b34801561063c57600080fd5b506103a661064b3660046123e9565b610ecb565b34801561065c57600080fd5b50610490610ee6565b34801561067157600080fd5b50610490610680366004612499565b610f65565b34801561069157600080fd5b506000546001600160a01b031661028d565b3480156106af57600080fd5b5061038161103c565b3480156106c457600080fd5b50610490611087565b3480156106d957600080fd5b506040805180820190915260078152664e41554748545960c81b6020820152610334565b34801561070957600080fd5b506103816107183660046124cd565b61116a565b34801561072957600080fd5b506103816107383660046124cd565b6111a1565b34801561074957600080fd5b50610490610758366004612512565b6111b8565b34801561076957600080fd5b506104906107783660046124f8565b611258565b34801561078957600080fd5b506010546104229061ffff80821691620100008104821691600160201b8204811691600160301b90041684565b3480156107c257600080fd5b506103a66107d1366004612421565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561080857600080fd5b506104906108173660046123e9565b6112d6565b34801561082857600080fd5b506104906108373660046123e9565b611669565b34801561084857600080fd5b506104906116b5565b34801561085d57600080fd5b5060175460185460195461087e926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016102a1565b3480156108b457600080fd5b506104906108c3366004612575565b611774565b3480156108d457600080fd5b50601a5461038190610100900460ff1681565b60006108f43384846117dd565b5060015b92915050565b600c546000906109129060ff16600a612792565b601c5461091f919061272f565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610989576001600160a01b03841660009081526004602090815260408083203384529091528120805484929061098390849061285c565b90915550505b6109948484846118d6565b949350505050565b6000546001600160a01b031633146109cf5760405162461bcd60e51b81526004016109c6906125f9565b60405180910390fd5b6103e8600d546109df919061272f565b8183600d546109ee919061283d565b6109f8919061272f565b1015610a615760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e31604482015271129037b3103a37ba30b61039bab838363c9760711b60648201526084016109c6565b8082600d54610a70919061283d565b610a7a919061272f565b601c555050565b6000610a8d6000610ecb565b610a9861dead610ecb565b610aa29190612717565b600d5461091f919061285c565b6000546001600160a01b03163314610ad95760405162461bcd60e51b81526004016109c6906125f9565b60115461ffff90811690841611801590610b03575060115461ffff62010000909104811690831611155b8015610b20575060115461ffff600160201b909104811690821611155b610b6c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016109c6565b600f805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6000546001600160a01b03163314610bd45760405162461bcd60e51b81526004016109c6906125f9565b601f54610100900460ff1615610be957600080fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916108f4918590610c42908690612717565b6117dd565b6000546001600160a01b03163314610c715760405162461bcd60e51b81526004016109c6906125f9565b6103e8600d54610c81919061272f565b8183600d54610c90919061283d565b610c9a919061272f565b1015610d0e5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e00000000000000000060648201526084016109c6565b8082600d54610d1d919061283d565b610d27919061272f565b601b555050565b6000546001600160a01b03163314610d585760405162461bcd60e51b81526004016109c6906125f9565b6001600160a01b038116610d7e5760405162461bcd60e51b81526004016109c690612624565b6001600160a01b03811661dead1415610da95760405162461bcd60e51b81526004016109c690612624565b60008054610dc2916001600160a01b0390911690610e55565b610dcd816001610e55565b60008054610de3906001600160a01b0316610ecb565b1115610e0a57600054610e08906001600160a01b031682610e0382610ecb565b6118d6565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610e7f5760405162461bcd60e51b81526004016109c6906125f9565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b600c54600090610ebe9060ff16600a612792565b601b5461091f919061272f565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610f105760405162461bcd60e51b81526004016109c6906125f9565b60008054610f29916001600160a01b0390911690610e55565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610f8f5760405162461bcd60e51b81526004016109c6906125f9565b80610fb657506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415611010576203f48060035442610fd0919061285c565b116110105760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b60448201526064016109c6565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b600080546001600160a01b031633146110675760405162461bcd60e51b81526004016109c6906125f9565b6012546110819030906001600160a01b03166000196117dd565b50600190565b6000546001600160a01b031633146110b15760405162461bcd60e51b81526004016109c6906125f9565b601f5460ff16156111045760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016109c6565b601f54610100900460ff1661115b5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016109c6565b601f805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916108f4918590610c4290869061285c565b60006111ae3384846118d6565b5060019392505050565b6000546001600160a01b031633146111e25760405162461bcd60e51b81526004016109c6906125f9565b6010805461ffff838116600160201b0265ffff0000000019868316620100000263ffffffff199094169288169290921792909217161790558061122583856126f1565b61122f91906126f1565b6010805461ffff92909216600160301b0267ffff00000000000019909216919091179055505050565b6000546001600160a01b031633146112825760405162461bcd60e51b81526004016109c6906125f9565b601a80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906112cb90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146113005760405162461bcd60e51b81526004016109c6906125f9565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561134057600080fd5b505afa158015611354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113789190612405565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c057600080fd5b505afa1580156113d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f89190612405565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561143e57600080fd5b505afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190612405565b90506001600160a01b03811661161c57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114bf57600080fd5b505afa1580156114d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f79190612405565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561153f57600080fd5b505afa158015611553573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115779190612405565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156115bf57600080fd5b505af11580156115d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f79190612405565b601380546001600160a01b0319166001600160a01b0392909216919091179055611638565b601380546001600160a01b0319166001600160a01b0383161790555b601280546001600160a01b0319166001600160a01b0384169081179091556116649030906000196117dd565b505050565b6000546001600160a01b031633146116935760405162461bcd60e51b81526004016109c6906125f9565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116df5760405162461bcd60e51b81526004016109c6906125f9565b601f54610100900460ff16156117375760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e0000000060448201526064016109c6565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611771573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461179e5760405162461bcd60e51b81526004016109c6906125f9565b8284600d546117ad919061283d565b6117b7919061272f565b601d55600d5481906117ca90849061283d565b6117d4919061272f565b601e5550505050565b6001600160a01b0383166118295760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109c6565b6001600160a01b0382166118755760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109c6565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661193c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109c6565b6001600160a01b03831661199e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109c6565b60008211611a005760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109c6565b611a0a8484611c8b565b15611bbc57601f5460ff16611a615760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016109c6565b6001600160a01b03841660009081526002602052604090205460ff1680611aa057506001600160a01b03831660009081526002602052604090205460ff165b15611b0857601b54821115611b085760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109c6565b6014546001600160a01b03848116911614801590611b3f57506001600160a01b03831660009081526002602052604090205460ff16155b15611bbc57601c5482611b5185610ecb565b611b5b9190612717565b1115611bbc5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016109c6565b6001600160a01b03841660009081526005602052604090205460019060ff1680611bfe57506001600160a01b03841660009081526005602052604090205460ff165b15611c07575060005b6001600160a01b03841660009081526002602052604090205460ff1615611c7657601a5460ff16158015611c425750601a54610100900460ff165b15611c76576000611c5230610ecb565b9050601d548110611c7457601e548110611c6b5750601e545b611c7481611d49565b505b611c828585858461204d565b95945050505050565b600080546001600160a01b03848116911614801590611cb857506000546001600160a01b03838116911614155b8015611cdd57506001600160a01b0382166000908152600a602052604090205460ff16155b8015611d0257506001600160a01b0383166000908152600a602052604090205460ff16155b8015611d1957506001600160a01b03821661dead14155b8015611d2d57506001600160a01b03821615155b8015611d4257506001600160a01b0383163014155b9392505050565b601a805460ff1916600117905560105461ffff600160301b90910416611d6e57612040565b3060009081526004602090815260408083206012546001600160a01b0316845290915290205460001914611dc7573060009081526004602090815260408083206012546001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611e5e57600080fd5b505afa158015611e72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e969190612405565b81600181518110611eb757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790611efd908590600090869030904290600401612681565b600060405180830381600087803b158015611f1757600080fd5b505af1158015611f2b573d6000803e3d6000fd5b50505050600047111561203e5760185460105447916001600160a01b0316906108fc9061ffff600160301b8204811691611f6691168561283d565b611f70919061272f565b6040518115909202916000818181858888f19350505050158015611f98573d6000803e3d6000fd5b506019546010546001600160a01b03909116906108fc9061ffff600160301b8204811691611fcf91600160201b909104168561283d565b611fd9919061272f565b6040518115909202916000818181858888f19350505050158015612001573d6000803e3d6000fd5b506017546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561203b573d6000803e3d6000fd5b50505b505b50601a805460ff19169055565b601f54600090610100900460ff166120e15761206985856121b4565b601f54610100900460ff1615801561208657506120868585611c8b565b156120e15760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016109c6565b6001600160a01b0385166000908152600160205260408120805485929061210990849061285c565b90915550600090508261211c5783612127565b6121278686866122bf565b6001600160a01b038616600090815260016020526040812080549293508392909190612154908490612717565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121a091815260200190565b60405180910390a350600195945050505050565b601f54610100900460ff16156122185760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016109c6565b6122228282611c8b565b15801561223c57506013546001600160a01b038281169116145b15611038576001600160a01b0382166000908152600a60209081526040918290208054600160ff199091168117909155601f805461010061ff00199182168117909255601a8054909116909117905591519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257910160405180910390a15050565b60135460009081906001600160a01b03868116911614156122e75750600f5461ffff16612320565b6013546001600160a01b03858116911614156123105750600f5462010000900461ffff16612320565b50600f54600160201b900461ffff165b601154600090600160301b900461ffff1661233b838661283d565b612345919061272f565b30600090815260016020526040812080549293508392909190612369908490612717565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36123b8818561285c565b9695505050505050565b803580151581146123d257600080fd5b919050565b803561ffff811681146123d257600080fd5b6000602082840312156123fa578081fd5b8135611d4281612889565b600060208284031215612416578081fd5b8151611d4281612889565b60008060408385031215612433578081fd5b823561243e81612889565b9150602083013561244e81612889565b809150509250929050565b60008060006060848603121561246d578081fd5b833561247881612889565b9250602084013561248881612889565b929592945050506040919091013590565b600080604083850312156124ab578182fd5b82356124b681612889565b91506124c4602084016123c2565b90509250929050565b600080604083850312156124df578182fd5b82356124ea81612889565b946020939093013593505050565b600060208284031215612509578081fd5b611d42826123c2565b600080600060608486031215612526578283fd5b61252f846123d7565b925061253d602085016123d7565b915061254b604085016123d7565b90509250925092565b60008060408385031215612566578182fd5b50508035926020909101359150565b6000806000806080858703121561258a578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b818110156125d2578581018301518582016040015282016125b6565b818111156125e35783604083870101525b50601f01601f1916929092016040019392505050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156126d05784516001600160a01b0316835293830193918301916001016126ab565b50506001600160a01b03969096166060850152505050608001529392505050565b600061ffff80831681851680830382111561270e5761270e612873565b01949350505050565b6000821982111561272a5761272a612873565b500190565b60008261274a57634e487b7160e01b81526012600452602481fd5b500490565b600181815b8085111561278a57816000190482111561277057612770612873565b8085161561277d57918102915b93841c9390800290612754565b509250929050565b6000611d4260ff8416836000826127ab575060016108f8565b816127b8575060006108f8565b81600181146127ce57600281146127d8576127f4565b60019150506108f8565b60ff8411156127e9576127e9612873565b50506001821b6108f8565b5060208310610133831016604e8410600b8410161715612817575081810a6108f8565b612821838361274f565b806000190482111561283557612835612873565b029392505050565b600081600019048311821515161561285757612857612873565b500290565b60008282101561286e5761286e612873565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461177157600080fdfea26469706673582212205ebce1728e7423f9a52fb484691c71ba5a88b0f0671685044b2cc7985424c5f164736f6c63430008040033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c8063590ffdce11610144578063a9059cbb116100b6578063eafb5a3c1161007a578063eafb5a3c146107fc578063eb50e70e1461081c578063ee5d9c2d1461083c578063f94aa1b414610851578063fb78680d146108a8578063fdb78c0e146108c857600080fd5b8063a9059cbb1461071d578063aa22b1721461073d578063cab5ebea1461075d578063cf8477061461077d578063dd62ed3e146107b657600080fd5b8063893d20e811610108578063893d20e8146106855780638a63bd9b146106a35780638a8c523c146106b85780638da5cb5b1461068557806395d89b41146106cd578063a457c2d7146106fd57600080fd5b8063590ffdce146105fb5780636ebd00781461061b57806370a0823114610630578063715018a61461065057806380c581d11461066557600080fd5b80632b112e49116101dd5780633f3cf56c116101a15780633f3cf56c14610529578063452ed4f1146105495780634ada218b146105695780634fb2e45d146105835780634fbee193146105a357806350a8e016146105dc57600080fd5b80632b112e4914610492578063313ce567146104a757806332cde664146104c9578063384f36b6146104e9578063395093511461050957600080fd5b80630fa604e41161022f5780630fa604e414610391578063122fea3b146103b457806318160ddd146103d45780631b6afa2d146103e957806323b872dd14610450578063260039571461047057600080fd5b806303fd2a4514610277578063069d955f146102aa57806306fdde03146102ff5780630758d92414610341578063095ea7b31461036157600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028d61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102b657600080fd5b50600f546102da9061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff948516815292841660208401529216918101919091526060016102a1565b34801561030b57600080fd5b5060408051808201909152601081526f151a194813985d59da1d1e48131a5cdd60821b60208201525b6040516102a191906125a6565b34801561034d57600080fd5b5060125461028d906001600160a01b031681565b34801561036d57600080fd5b5061038161037c3660046124cd565b6108e7565b60405190151581526020016102a1565b34801561039d57600080fd5b506103a66108fe565b6040519081526020016102a1565b3480156103c057600080fd5b5060145461028d906001600160a01b031681565b3480156103e057600080fd5b50600d546103a6565b3480156103f557600080fd5b506011546104229061ffff80821691620100008104821691600160201b8204811691600160301b90041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016102a1565b34801561045c57600080fd5b5061038161046b366004612459565b610924565b34801561047c57600080fd5b5061049061048b366004612554565b61099c565b005b34801561049e57600080fd5b506103a6610a81565b3480156104b357600080fd5b50600c5460405160ff90911681526020016102a1565b3480156104d557600080fd5b506104906104e4366004612512565b610aaf565b3480156104f557600080fd5b506104906105043660046123e9565b610baa565b34801561051557600080fd5b506103816105243660046124cd565b610c0b565b34801561053557600080fd5b50610490610544366004612554565b610c47565b34801561055557600080fd5b5060135461028d906001600160a01b031681565b34801561057557600080fd5b50601f546103819060ff1681565b34801561058f57600080fd5b5061049061059e3660046123e9565b610d2e565b3480156105af57600080fd5b506103816105be3660046123e9565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105e857600080fd5b50601f5461038190610100900460ff1681565b34801561060757600080fd5b50610490610616366004612499565b610e55565b34801561062757600080fd5b506103a6610eaa565b34801561063c57600080fd5b506103a661064b3660046123e9565b610ecb565b34801561065c57600080fd5b50610490610ee6565b34801561067157600080fd5b50610490610680366004612499565b610f65565b34801561069157600080fd5b506000546001600160a01b031661028d565b3480156106af57600080fd5b5061038161103c565b3480156106c457600080fd5b50610490611087565b3480156106d957600080fd5b506040805180820190915260078152664e41554748545960c81b6020820152610334565b34801561070957600080fd5b506103816107183660046124cd565b61116a565b34801561072957600080fd5b506103816107383660046124cd565b6111a1565b34801561074957600080fd5b50610490610758366004612512565b6111b8565b34801561076957600080fd5b506104906107783660046124f8565b611258565b34801561078957600080fd5b506010546104229061ffff80821691620100008104821691600160201b8204811691600160301b90041684565b3480156107c257600080fd5b506103a66107d1366004612421565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561080857600080fd5b506104906108173660046123e9565b6112d6565b34801561082857600080fd5b506104906108373660046123e9565b611669565b34801561084857600080fd5b506104906116b5565b34801561085d57600080fd5b5060175460185460195461087e926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016102a1565b3480156108b457600080fd5b506104906108c3366004612575565b611774565b3480156108d457600080fd5b50601a5461038190610100900460ff1681565b60006108f43384846117dd565b5060015b92915050565b600c546000906109129060ff16600a612792565b601c5461091f919061272f565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610989576001600160a01b03841660009081526004602090815260408083203384529091528120805484929061098390849061285c565b90915550505b6109948484846118d6565b949350505050565b6000546001600160a01b031633146109cf5760405162461bcd60e51b81526004016109c6906125f9565b60405180910390fd5b6103e8600d546109df919061272f565b8183600d546109ee919061283d565b6109f8919061272f565b1015610a615760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e31604482015271129037b3103a37ba30b61039bab838363c9760711b60648201526084016109c6565b8082600d54610a70919061283d565b610a7a919061272f565b601c555050565b6000610a8d6000610ecb565b610a9861dead610ecb565b610aa29190612717565b600d5461091f919061285c565b6000546001600160a01b03163314610ad95760405162461bcd60e51b81526004016109c6906125f9565b60115461ffff90811690841611801590610b03575060115461ffff62010000909104811690831611155b8015610b20575060115461ffff600160201b909104811690821611155b610b6c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016109c6565b600f805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6000546001600160a01b03163314610bd45760405162461bcd60e51b81526004016109c6906125f9565b601f54610100900460ff1615610be957600080fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916108f4918590610c42908690612717565b6117dd565b6000546001600160a01b03163314610c715760405162461bcd60e51b81526004016109c6906125f9565b6103e8600d54610c81919061272f565b8183600d54610c90919061283d565b610c9a919061272f565b1015610d0e5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e00000000000000000060648201526084016109c6565b8082600d54610d1d919061283d565b610d27919061272f565b601b555050565b6000546001600160a01b03163314610d585760405162461bcd60e51b81526004016109c6906125f9565b6001600160a01b038116610d7e5760405162461bcd60e51b81526004016109c690612624565b6001600160a01b03811661dead1415610da95760405162461bcd60e51b81526004016109c690612624565b60008054610dc2916001600160a01b0390911690610e55565b610dcd816001610e55565b60008054610de3906001600160a01b0316610ecb565b1115610e0a57600054610e08906001600160a01b031682610e0382610ecb565b6118d6565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610e7f5760405162461bcd60e51b81526004016109c6906125f9565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b600c54600090610ebe9060ff16600a612792565b601b5461091f919061272f565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610f105760405162461bcd60e51b81526004016109c6906125f9565b60008054610f29916001600160a01b0390911690610e55565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610f8f5760405162461bcd60e51b81526004016109c6906125f9565b80610fb657506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415611010576203f48060035442610fd0919061285c565b116110105760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b60448201526064016109c6565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b600080546001600160a01b031633146110675760405162461bcd60e51b81526004016109c6906125f9565b6012546110819030906001600160a01b03166000196117dd565b50600190565b6000546001600160a01b031633146110b15760405162461bcd60e51b81526004016109c6906125f9565b601f5460ff16156111045760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016109c6565b601f54610100900460ff1661115b5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016109c6565b601f805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916108f4918590610c4290869061285c565b60006111ae3384846118d6565b5060019392505050565b6000546001600160a01b031633146111e25760405162461bcd60e51b81526004016109c6906125f9565b6010805461ffff838116600160201b0265ffff0000000019868316620100000263ffffffff199094169288169290921792909217161790558061122583856126f1565b61122f91906126f1565b6010805461ffff92909216600160301b0267ffff00000000000019909216919091179055505050565b6000546001600160a01b031633146112825760405162461bcd60e51b81526004016109c6906125f9565b601a80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906112cb90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146113005760405162461bcd60e51b81526004016109c6906125f9565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561134057600080fd5b505afa158015611354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113789190612405565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c057600080fd5b505afa1580156113d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f89190612405565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561143e57600080fd5b505afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190612405565b90506001600160a01b03811661161c57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114bf57600080fd5b505afa1580156114d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f79190612405565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561153f57600080fd5b505afa158015611553573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115779190612405565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156115bf57600080fd5b505af11580156115d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f79190612405565b601380546001600160a01b0319166001600160a01b0392909216919091179055611638565b601380546001600160a01b0319166001600160a01b0383161790555b601280546001600160a01b0319166001600160a01b0384169081179091556116649030906000196117dd565b505050565b6000546001600160a01b031633146116935760405162461bcd60e51b81526004016109c6906125f9565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116df5760405162461bcd60e51b81526004016109c6906125f9565b601f54610100900460ff16156117375760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e0000000060448201526064016109c6565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611771573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461179e5760405162461bcd60e51b81526004016109c6906125f9565b8284600d546117ad919061283d565b6117b7919061272f565b601d55600d5481906117ca90849061283d565b6117d4919061272f565b601e5550505050565b6001600160a01b0383166118295760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109c6565b6001600160a01b0382166118755760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109c6565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661193c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109c6565b6001600160a01b03831661199e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109c6565b60008211611a005760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109c6565b611a0a8484611c8b565b15611bbc57601f5460ff16611a615760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016109c6565b6001600160a01b03841660009081526002602052604090205460ff1680611aa057506001600160a01b03831660009081526002602052604090205460ff165b15611b0857601b54821115611b085760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109c6565b6014546001600160a01b03848116911614801590611b3f57506001600160a01b03831660009081526002602052604090205460ff16155b15611bbc57601c5482611b5185610ecb565b611b5b9190612717565b1115611bbc5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016109c6565b6001600160a01b03841660009081526005602052604090205460019060ff1680611bfe57506001600160a01b03841660009081526005602052604090205460ff165b15611c07575060005b6001600160a01b03841660009081526002602052604090205460ff1615611c7657601a5460ff16158015611c425750601a54610100900460ff165b15611c76576000611c5230610ecb565b9050601d548110611c7457601e548110611c6b5750601e545b611c7481611d49565b505b611c828585858461204d565b95945050505050565b600080546001600160a01b03848116911614801590611cb857506000546001600160a01b03838116911614155b8015611cdd57506001600160a01b0382166000908152600a602052604090205460ff16155b8015611d0257506001600160a01b0383166000908152600a602052604090205460ff16155b8015611d1957506001600160a01b03821661dead14155b8015611d2d57506001600160a01b03821615155b8015611d4257506001600160a01b0383163014155b9392505050565b601a805460ff1916600117905560105461ffff600160301b90910416611d6e57612040565b3060009081526004602090815260408083206012546001600160a01b0316845290915290205460001914611dc7573060009081526004602090815260408083206012546001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611e5e57600080fd5b505afa158015611e72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e969190612405565b81600181518110611eb757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790611efd908590600090869030904290600401612681565b600060405180830381600087803b158015611f1757600080fd5b505af1158015611f2b573d6000803e3d6000fd5b50505050600047111561203e5760185460105447916001600160a01b0316906108fc9061ffff600160301b8204811691611f6691168561283d565b611f70919061272f565b6040518115909202916000818181858888f19350505050158015611f98573d6000803e3d6000fd5b506019546010546001600160a01b03909116906108fc9061ffff600160301b8204811691611fcf91600160201b909104168561283d565b611fd9919061272f565b6040518115909202916000818181858888f19350505050158015612001573d6000803e3d6000fd5b506017546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561203b573d6000803e3d6000fd5b50505b505b50601a805460ff19169055565b601f54600090610100900460ff166120e15761206985856121b4565b601f54610100900460ff1615801561208657506120868585611c8b565b156120e15760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016109c6565b6001600160a01b0385166000908152600160205260408120805485929061210990849061285c565b90915550600090508261211c5783612127565b6121278686866122bf565b6001600160a01b038616600090815260016020526040812080549293508392909190612154908490612717565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121a091815260200190565b60405180910390a350600195945050505050565b601f54610100900460ff16156122185760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016109c6565b6122228282611c8b565b15801561223c57506013546001600160a01b038281169116145b15611038576001600160a01b0382166000908152600a60209081526040918290208054600160ff199091168117909155601f805461010061ff00199182168117909255601a8054909116909117905591519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257910160405180910390a15050565b60135460009081906001600160a01b03868116911614156122e75750600f5461ffff16612320565b6013546001600160a01b03858116911614156123105750600f5462010000900461ffff16612320565b50600f54600160201b900461ffff165b601154600090600160301b900461ffff1661233b838661283d565b612345919061272f565b30600090815260016020526040812080549293508392909190612369908490612717565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36123b8818561285c565b9695505050505050565b803580151581146123d257600080fd5b919050565b803561ffff811681146123d257600080fd5b6000602082840312156123fa578081fd5b8135611d4281612889565b600060208284031215612416578081fd5b8151611d4281612889565b60008060408385031215612433578081fd5b823561243e81612889565b9150602083013561244e81612889565b809150509250929050565b60008060006060848603121561246d578081fd5b833561247881612889565b9250602084013561248881612889565b929592945050506040919091013590565b600080604083850312156124ab578182fd5b82356124b681612889565b91506124c4602084016123c2565b90509250929050565b600080604083850312156124df578182fd5b82356124ea81612889565b946020939093013593505050565b600060208284031215612509578081fd5b611d42826123c2565b600080600060608486031215612526578283fd5b61252f846123d7565b925061253d602085016123d7565b915061254b604085016123d7565b90509250925092565b60008060408385031215612566578182fd5b50508035926020909101359150565b6000806000806080858703121561258a578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b818110156125d2578581018301518582016040015282016125b6565b818111156125e35783604083870101525b50601f01601f1916929092016040019392505050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156126d05784516001600160a01b0316835293830193918301916001016126ab565b50506001600160a01b03969096166060850152505050608001529392505050565b600061ffff80831681851680830382111561270e5761270e612873565b01949350505050565b6000821982111561272a5761272a612873565b500190565b60008261274a57634e487b7160e01b81526012600452602481fd5b500490565b600181815b8085111561278a57816000190482111561277057612770612873565b8085161561277d57918102915b93841c9390800290612754565b509250929050565b6000611d4260ff8416836000826127ab575060016108f8565b816127b8575060006108f8565b81600181146127ce57600281146127d8576127f4565b60019150506108f8565b60ff8411156127e9576127e9612873565b50506001821b6108f8565b5060208310610133831016604e8410600b8410161715612817575081810a6108f8565b612821838361274f565b806000190482111561283557612835612873565b029392505050565b600081600019048311821515161561285757612857612873565b500290565b60008282101561286e5761286e612873565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461177157600080fdfea26469706673582212205ebce1728e7423f9a52fb484691c71ba5a88b0f0671685044b2cc7985424c5f164736f6c63430008040033

Deployed Bytecode Sourcemap

5147:17280:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7350:73;;;;;;;;;;;;7381:42;7350:73;;;;;-1:-1:-1;;;;;4040:32:1;;;4022:51;;4010:2;3995:18;7350:73:0;;;;;;;;6587:116;;;;;;;;;;-1:-1:-1;6587:116:0;;;;;;;;;;;;;;;-1:-1:-1;;;6587:116:0;;;;;;;;;;12991:6:1;13024:15;;;13006:34;;13076:15;;;13071:2;13056:18;;13049:43;13128:15;;13108:18;;;13101:43;;;;12969:2;12954:18;6587:116:0;12936:214:1;11910:80:0;;;;;;;;;;-1:-1:-1;11982:5:0;;;;;;;;;;;;-1:-1:-1;;;11982:5:0;;;;11910:80;;;;;;;:::i;7050:26::-;;;;;;;;;;-1:-1:-1;7050:26:0;;;;-1:-1:-1;;;;;7050:26:0;;;12523:161;;;;;;;;;;-1:-1:-1;12523:161:0;;;;;:::i;:::-;;:::i;:::-;;;4995:14:1;;4988:22;4970:41;;4958:2;4943:18;12523:161:0;4925:92:1;16871:112:0;;;;;;;;;;;;;:::i;:::-;;;13750:25:1;;;13738:2;13723:18;16871:112:0;13705:76:1;7113:28:0;;;;;;;;;;-1:-1:-1;7113:28:0;;;;-1:-1:-1;;;;;7113:28:0;;;11645:83;;;;;;;;;;-1:-1:-1;11718:7:0;;11645:83;;6847:194;;;;;;;;;;-1:-1:-1;6847:194:0;;;;;;;;;;;;;;;-1:-1:-1;;;6847:194:0;;;;;-1:-1:-1;;;6847:194:0;;;;;;;;;13388:6:1;13421:15;;;13403:34;;13473:15;;;13468:2;13453:18;;13446:43;13525:15;;;13505:18;;;13498:43;;;;13577:15;;;13572:2;13557:18;;13550:43;13365:3;13350:19;6847:194:0;13332:267:1;13190:306:0;;;;;;;;;;-1:-1:-1;13190:306:0;;;;;:::i;:::-;;:::i;16482:267::-;;;;;;;;;;-1:-1:-1;16482:267:0;;;;;:::i;:::-;;:::i;:::-;;15079:141;;;;;;;;;;;;;:::i;11734:80::-;;;;;;;;;;-1:-1:-1;11802:9:0;;11734:80;;11802:9;;;;14916:36:1;;14904:2;14889:18;11734:80:0;14871:87:1;15503:430:0;;;;;;;;;;-1:-1:-1;15503:430:0;;;;;:::i;:::-;;:::i;14925:146::-;;;;;;;;;;-1:-1:-1;14925:146:0;;;;;:::i;:::-;;:::i;13504:215::-;;;;;;;;;;-1:-1:-1;13504:215:0;;;;;:::i;:::-;;:::i;16205:269::-;;;;;;;;;;-1:-1:-1;16205:269:0;;;;;:::i;:::-;;:::i;7083:21::-;;;;;;;;;;-1:-1:-1;7083:21:0;;;;-1:-1:-1;;;;;7083:21:0;;;8154:34;;;;;;;;;;-1:-1:-1;8154:34:0;;;;;;;;10499:590;;;;;;;;;;-1:-1:-1;10499:590:0;;;;;:::i;:::-;;:::i;15228:125::-;;;;;;;;;;-1:-1:-1;15228:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;15317:28:0;15293:4;15317:28;;;:19;:28;;;;;;;;;15228:125;8195:36;;;;;;;;;;-1:-1:-1;8195:36:0;;;;;;;;;;;15361:134;;;;;;;;;;-1:-1:-1;15361:134:0;;;;;:::i;:::-;;:::i;16757:106::-;;;;;;;;;;;;;:::i;12223:117::-;;;;;;;;;;-1:-1:-1;12223:117:0;;;;;:::i;:::-;;:::i;11097:195::-;;;;;;;;;;;;;:::i;14510:407::-;;;;;;;;;;-1:-1:-1;14510:407:0;;;;;:::i;:::-;;:::i;11996:80::-;;;;;;;;;;-1:-1:-1;12048:7:0;10477:6;-1:-1:-1;;;;;10477:6:0;11996:80;16871:112;13009:173;;;;;;;;;;;;;:::i;20846:209::-;;;;;;;;;;;;;:::i;11820:84::-;;;;;;;;;;-1:-1:-1;11894:7:0;;;;;;;;;;;;-1:-1:-1;;;11894:7:0;;;;11820:84;;13727:225;;;;;;;;;;-1:-1:-1;13727:225:0;;;;;:::i;:::-;;:::i;12348:167::-;;;;;;;;;;-1:-1:-1;12348:167:0;;;;;:::i;:::-;;:::i;15941:256::-;;;;;;;;;;-1:-1:-1;15941:256:0;;;;;:::i;:::-;;:::i;17423:165::-;;;;;;;;;;-1:-1:-1;17423:165:0;;;;;:::i;:::-;;:::i;6712:126::-;;;;;;;;;;-1:-1:-1;6712:126:0;;;;;;;;;;;;;;;-1:-1:-1;;;6712:126:0;;;;;-1:-1:-1;;;6712:126:0;;;;;12082:133;;;;;;;;;;-1:-1:-1;12082:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12184:19:0;;;12166:7;12184:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12082:133;13960:542;;;;;;;;;;-1:-1:-1;13960:542:0;;;;;:::i;:::-;;:::i;17288:127::-;;;;;;;;;;-1:-1:-1;17288:127:0;;;;;:::i;:::-;;:::i;21063:183::-;;;;;;;;;;;;;:::i;7568:268::-;;;;;;;;;;-1:-1:-1;7568:268:0;;;;;;;;-1:-1:-1;;;;;7568:268:0;;;;;;;;;;;;;;-1:-1:-1;;;;;4390:15:1;;;4372:34;;4442:15;;;4437:2;4422:18;;4415:43;4494:15;;4474:18;;;4467:43;;;;4322:2;4307:18;7568:268:0;4289:227:1;16991:289:0;;;;;;;;;;-1:-1:-1;16991:289:0;;;;;:::i;:::-;;:::i;7867:39::-;;;;;;;;;;-1:-1:-1;7867:39:0;;;;;;;;;;;12523:161;12598:4;12615:39;193:10;12638:7;12647:6;12615:8;:39::i;:::-;-1:-1:-1;12672:4:0;12523:161;;;;;:::o;16871:112::-;16965:9;;16916:7;;16961:13;;16965:9;;16961:2;:13;:::i;:::-;16943:14;;:32;;;;:::i;:::-;16936:39;;16871:112;:::o;13190:306::-;-1:-1:-1;;;;;13311:19:0;;13290:4;13311:19;;;:11;:19;;;;;;;;13331:10;13311:31;;;;;;;;-1:-1:-1;;13311:52:0;13307:126;;-1:-1:-1;;;;;13380:19:0;;;;;;:11;:19;;;;;;;;13400:10;13380:31;;;;;;;:41;;13415:6;;13380:19;:41;;13415:6;;13380:41;:::i;:::-;;;;-1:-1:-1;;13307:126:0;13452:36;13462:6;13470:9;13481:6;13452:9;:36::i;:::-;13445:43;13190:306;-1:-1:-1;;;;13190:306:0:o;16482:267::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;;;;;;;;;16624:4:::1;16614:7;;:14;;;;:::i;:::-;16602:7;16591;16581;;:17;;;;:::i;:::-;16580:29;;;;:::i;:::-;:49;;16572:112;;;::::0;-1:-1:-1;;;16572:112:0;;8746:2:1;16572:112:0::1;::::0;::::1;8728:21:1::0;8785:2;8765:18;;;8758:30;8824:34;8804:18;;;8797:62;-1:-1:-1;;;8875:18:1;;;8868:48;8933:19;;16572:112:0::1;8718:240:1::0;16572:112:0::1;16734:7;16723;16713;;:17;;;;:::i;:::-;16712:29;;;;:::i;:::-;16695:14;:46:::0;-1:-1:-1;;16482:267:0:o;15079:141::-;15132:7;15189:21;15207:1;15189:9;:21::i;:::-;15171:15;7381:42;15171:9;:15::i;:::-;:39;;;;:::i;:::-;15160:7;;:51;;;;:::i;15503:430::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;15620:10:::1;:22:::0;::::1;::::0;;::::1;15610:32:::0;;::::1;;::::0;::::1;::::0;:87:::1;;-1:-1:-1::0;15673:10:0::1;:24:::0;::::1;::::0;;;::::1;::::0;::::1;15663:34:::0;;::::1;;;15610:87;:150;;;;-1:-1:-1::0;15733:10:0::1;:27:::0;::::1;-1:-1:-1::0;;;15733:27:0;;::::1;::::0;::::1;15718:42:::0;;::::1;;;15610:150;15602:203;;;::::0;-1:-1:-1;;;15602:203:0;;8394:2:1;15602:203:0::1;::::0;::::1;8376:21:1::0;8433:2;8413:18;;;8406:30;8472:25;8452:18;;;8445:53;8515:18;;15602:203:0::1;8366:173:1::0;15602:203:0::1;15816:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15852:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;15890:35:0::1;-1:-1:-1::0;;;15890:35:0;;;::::1;;::::0;;;::::1;::::0;;15503:430::o;14925:146::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;15013:16:::1;::::0;::::1;::::0;::::1;;;15012:17;15004:26;;;::::0;::::1;;15041:13;:22:::0;;-1:-1:-1;;;;;;15041:22:0::1;-1:-1:-1::0;;;;;15041:22:0;;;::::1;::::0;;;::::1;::::0;;14925:146::o;13504:215::-;193:10;13592:4;13641:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13641:34:0;;;;;;;;;;13592:4;;13609:80;;13632:7;;13641:47;;13678:10;;13641:47;:::i;:::-;13609:8;:80::i;16205:269::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;16346:4:::1;16336:7;;:14;;;;:::i;:::-;16324:7;16313;16303;;:17;;;;:::i;:::-;16302:29;;;;:::i;:::-;:49;;16294:117;;;::::0;-1:-1:-1;;;16294:117:0;;7564:2:1;16294:117:0::1;::::0;::::1;7546:21:1::0;7603:2;7583:18;;;7576:30;7642:34;7622:18;;;7615:62;7713:25;7693:18;;;7686:53;7756:19;;16294:117:0::1;7536:245:1::0;16294:117:0::1;16459:7;16448;16438;;:17;;;;:::i;:::-;16437:29;;;;:::i;:::-;16422:12;:44:::0;-1:-1:-1;;16205:269:0:o;10499:590::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10580:22:0;::::1;10572:96;;;;-1:-1:-1::0;;;10572:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10687:16:0;::::1;7381:42;10687:16;;10679:90;;;;-1:-1:-1::0;;;10679:90:0::1;;;;;;;:::i;:::-;10800:6;::::0;;10780:34:::1;::::0;-1:-1:-1;;;;;10800:6:0;;::::1;::::0;10780:19:::1;:34::i;:::-;10825:35;10845:8;10855:4;10825:19;:35::i;:::-;10904:1;10894:6:::0;;10884:17:::1;::::0;-1:-1:-1;;;;;10894:6:0::1;10884:9;:17::i;:::-;:21;10881:99;;;10932:6;::::0;10922:46:::1;::::0;-1:-1:-1;;;;;10932:6:0::1;10940:8:::0;10950:17:::1;10932:6:::0;10950:9:::1;:17::i;:::-;10922:9;:46::i;:::-;;10881:99;11000:6;:17:::0;;-1:-1:-1;;;;;;11000:17:0::1;-1:-1:-1::0;;;;;11000:17:0;::::1;::::0;;::::1;::::0;;11033:38:::1;::::0;11000:17;;;;11033:38:::1;::::0;11000:6;11033:38:::1;10499:590:::0;:::o;15361:134::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15449:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;15449:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15361:134::o;16757:106::-;16845:9;;16798:7;;16841:13;;16845:9;;16841:2;:13;:::i;:::-;16825:12;;:30;;;;:::i;12223:117::-;-1:-1:-1;;;;;12316:16:0;12289:7;12316:16;;;:7;:16;;;;;;;12223:117::o;11097:195::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;11184:6:::1;::::0;;11164:34:::1;::::0;-1:-1:-1;;;;;11184:6:0;;::::1;::::0;11164:19:::1;:34::i;:::-;11226:1;11209:19:::0;;-1:-1:-1;;;;;;11209:19:0::1;::::0;;11244:40:::1;::::0;11226:1;;11244:40:::1;::::0;11226:1;;11244:40:::1;11097:195::o:0;14510:407::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;14591:16;14587:323:::1;;-1:-1:-1::0;;;;;;14624:13:0::1;14640:5;14624:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;14624:21:0::1;::::0;;14510:407::o;14587:323::-:1;14682:17;::::0;:22;14678:136:::1;;14771:6;14751:17;;14733:15;:35;;;;:::i;:::-;:44;14725:73;;;::::0;-1:-1:-1;;;14725:73:0;;9165:2:1;14725:73:0::1;::::0;::::1;9147:21:1::0;9204:2;9184:18;;;9177:30;-1:-1:-1;;;9223:18:1;;;9216:46;9279:18;;14725:73:0::1;9137:166:1::0;14725:73:0::1;-1:-1:-1::0;;;;;14828:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;14828:20:0::1;14844:4;14828:20;::::0;;14883:15:::1;14863:17;:35:::0;14587:323:::1;14510:407:::0;;:::o;13009:173::-;13073:4;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;13122:9:::1;::::0;13090:62:::1;::::0;13107:4:::1;::::0;-1:-1:-1;;;;;13122:9:0::1;-1:-1:-1::0;;13090:8:0::1;:62::i;:::-;-1:-1:-1::0;13170:4:0::1;13009:173:::0;:::o;20846:209::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;20908:14:::1;::::0;::::1;;20907:15;20899:52;;;::::0;-1:-1:-1;;;20899:52:0;;12204:2:1;20899:52:0::1;::::0;::::1;12186:21:1::0;12243:2;12223:18;;;12216:30;12282:26;12262:18;;;12255:54;12326:18;;20899:52:0::1;12176:174:1::0;20899:52:0::1;20970:16;::::0;::::1;::::0;::::1;;;20962:53;;;::::0;-1:-1:-1;;;20962:53:0;;9919:2:1;20962:53:0::1;::::0;::::1;9901:21:1::0;9958:2;9938:18;;;9931:30;9997:26;9977:18;;;9970:54;10041:18;;20962:53:0::1;9891:174:1::0;20962:53:0::1;21026:14;:21:::0;;-1:-1:-1;;21026:21:0::1;21043:4;21026:21;::::0;;20846:209::o;13727:225::-;193:10;13820:4;13869:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13869:34:0;;;;;;;;;;13820:4;;13837:85;;13860:7;;13869:52;;13906:15;;13869:52;:::i;12348:167::-;12426:4;12443:42;193:10;12467:9;12478:6;12443:9;:42::i;:::-;-1:-1:-1;12503:4:0;;12348:167;-1:-1:-1;;;12348:167:0:o;15941:256::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;16038:7:::1;:19:::0;;::::1;16108:27:::0;;::::1;-1:-1:-1::0;;;16108:27:0::1;-1:-1:-1::0;;16068:29:0;;::::1;::::0;::::1;-1:-1:-1::0;;16068:29:0;;;16038:19;;::::1;16068:29:::0;;;;;;;::::1;16108:27;;::::0;;16127:8;16162:16:::1;16088:9:::0;16053:4;16162:16:::1;:::i;:::-;:27;;;;:::i;:::-;16146:7;:43:::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;16146:43:0::1;-1:-1:-1::0;;16146:43:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;15941:256:0:o;17423:165::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;17498:19:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;17498:30:0;;::::1;;::::0;;17544:36:::1;::::0;::::1;::::0;::::1;::::0;17520:8;4995:14:1;4988:22;4970:41;;4958:2;4943:18;;4925:92;17544:36:0::1;;;;;;;;17423:165:::0;:::o;13960:542::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;14031:20:::1;14064:9;14031:43;;14085:16;14115:10;-1:-1:-1::0;;;;;14115:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14104:40:0::1;;14153:4;14160:10;-1:-1:-1::0;;;;;14160:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14104:74;::::0;-1:-1:-1;;;;;;14104:74:0::1;::::0;;;;;;-1:-1:-1;;;;;4751:15:1;;;14104:74:0::1;::::0;::::1;4733:34:1::0;4803:15;;4783:18;;;4776:43;4668:18;;14104:74:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14085:93:::0;-1:-1:-1;;;;;;14193:22:0;::::1;14189:200;;14252:10;-1:-1:-1::0;;;;;14252:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14241:43:0::1;;14293:4;14300:10;-1:-1:-1::0;;;;;14300:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14241:77;::::0;-1:-1:-1;;;;;;14241:77:0::1;::::0;;;;;;-1:-1:-1;;;;;4751:15:1;;;14241:77:0::1;::::0;::::1;4733:34:1::0;4803:15;;4783:18;;;4776:43;4668:18;;14241:77:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14232:6;:86:::0;;-1:-1:-1;;;;;;14232:86:0::1;-1:-1:-1::0;;;;;14232:86:0;;;::::1;::::0;;;::::1;::::0;;14189:200:::1;;;14360:6;:17:::0;;-1:-1:-1;;;;;;14360:17:0::1;-1:-1:-1::0;;;;;14360:17:0;::::1;;::::0;;14189:200:::1;14399:9;:22:::0;;-1:-1:-1;;;;;;14399:22:0::1;-1:-1:-1::0;;;;;14399:22:0;::::1;::::0;;::::1;::::0;;;14432:62:::1;::::0;14449:4:::1;::::0;-1:-1:-1;;14432:8:0::1;:62::i;:::-;8831:1;;13960:542:::0;:::o;17288:127::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;17365:11:::1;:42:::0;;-1:-1:-1;;;;;;17365:42:0::1;-1:-1:-1::0;;;;;17365:42:0;;;::::1;::::0;;;::::1;::::0;;17288:127::o;21063:183::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;21130:16:::1;::::0;::::1;::::0;::::1;;;21129:17;21121:58;;;::::0;-1:-1:-1;;;21121:58:0;;10683:2:1;21121:58:0::1;::::0;::::1;10665:21:1::0;10722:2;10702:18;;;10695:30;10761;10741:18;;;10734:58;10809:18;;21121:58:0::1;10655:178:1::0;21121:58:0::1;10450:7:::0;10477:6;;21190:48:::1;::::0;-1:-1:-1;;;;;10477:6:0;;;;21216:21:::1;21190:48:::0;::::1;;;::::0;21216:21;;21190:48;10450:7;21190:48;21216:21;10477:6;21190:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21063:183::o:0;16991:289::-;8776:6;;-1:-1:-1;;;;;8776:6:0;193:10;8776:22;8768:52;;;;-1:-1:-1;;;8768:52:0;;;;;;;:::i;:::-;17191:16:::1;17171;17161:7;;:26;;;;:::i;:::-;17160:47;;;;:::i;:::-;17144:13;:63:::0;17232:7:::1;::::0;17259:13;;17232:23:::1;::::0;17242:13;;17232:23:::1;:::i;:::-;17231:41;;;;:::i;:::-;17218:10;:54:::0;-1:-1:-1;;;;16991:289:0:o;12692:309::-;-1:-1:-1;;;;;12786:20:0;;12778:52;;;;-1:-1:-1;;;12778:52:0;;11040:2:1;12778:52:0;;;11022:21:1;11079:2;11059:18;;;11052:30;-1:-1:-1;;;11098:18:1;;;11091:49;11157:18;;12778:52:0;11012:169:1;12778:52:0;-1:-1:-1;;;;;12849:21:0;;12841:53;;;;-1:-1:-1;;;12841:53:0;;11040:2:1;12841:53:0;;;11022:21:1;11079:2;11059:18;;;11052:30;-1:-1:-1;;;11098:18:1;;;11091:49;11157:18;;12841:53:0;11012:169:1;12841:53:0;-1:-1:-1;;;;;12907:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;12960:33;;13750:25:1;;;12960:33:0;;13723:18:1;12960:33:0;;;;;;;12692:309;;;:::o;17927:1470::-;18006:4;-1:-1:-1;;;;;18031:18:0;;18023:68;;;;-1:-1:-1;;;18023:68:0;;11798:2:1;18023:68:0;;;11780:21:1;11837:2;11817:18;;;11810:30;11876:34;11856:18;;;11849:62;-1:-1:-1;;;11927:18:1;;;11920:35;11972:19;;18023:68:0;11770:227:1;18023:68:0;-1:-1:-1;;;;;18110:16:0;;18102:64;;;;-1:-1:-1;;;18102:64:0;;6057:2:1;18102:64:0;;;6039:21:1;6096:2;6076:18;;;6069:30;6135:34;6115:18;;;6108:62;-1:-1:-1;;;6186:18:1;;;6179:33;6229:19;;18102:64:0;6029:225:1;18102:64:0;18194:1;18185:6;:10;18177:64;;;;-1:-1:-1;;;18177:64:0;;11388:2:1;18177:64:0;;;11370:21:1;11427:2;11407:18;;;11400:30;11466:34;11446:18;;;11439:62;-1:-1:-1;;;11517:18:1;;;11510:39;11566:19;;18177:64:0;11360:231:1;18177:64:0;18255:20;18266:4;18272:2;18255:10;:20::i;:::-;18252:480;;;18296:14;;;;18292:89;;18331:34;;-1:-1:-1;;;18331:34:0;;6461:2:1;18331:34:0;;;6443:21:1;6500:2;6480:18;;;6473:30;6539:26;6519:18;;;6512:54;6583:18;;18331:34:0;6433:174:1;18292:89:0;-1:-1:-1;;;;;18398:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;18415:11:0;;;;;;:7;:11;;;;;;;;18398:28;18395:142;;;18464:12;;18454:6;:22;;18446:75;;;;-1:-1:-1;;;18446:75:0;;9510:2:1;18446:75:0;;;9492:21:1;9549:2;9529:18;;;9522:30;9588:34;9568:18;;;9561:62;-1:-1:-1;;;9639:18:1;;;9632:38;9687:19;;18446:75:0;9482:230:1;18446:75:0;18560:13;;-1:-1:-1;;;;;18554:19:0;;;18560:13;;18554:19;;;;:35;;-1:-1:-1;;;;;;18578:11:0;;;;;;:7;:11;;;;;;;;18577:12;18554:35;18551:170;;;18644:14;;18634:6;18618:13;18628:2;18618:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18610:95;;;;-1:-1:-1;;;18610:95:0;;10272:2:1;18610:95:0;;;10254:21:1;10311:2;10291:18;;;10284:30;10350:34;10330:18;;;10323:62;-1:-1:-1;;;10401:18:1;;;10394:40;10451:19;;18610:95:0;10244:232:1;18610:95:0;-1:-1:-1;;;;;18777:25:0;;18744:12;18777:25;;;:19;:25;;;;;;18759:4;;18777:25;;;:52;;-1:-1:-1;;;;;;18806:23:0;;;;;;:19;:23;;;;;;;;18777:52;18774:98;;;-1:-1:-1;18855:5:0;18774:98;-1:-1:-1;;;;;18888:11:0;;;;;;:7;:11;;;;;;;;18884:443;;;18921:6;;;;18920:7;:47;;;;-1:-1:-1;18948:19:0;;;;;;;18920:47;18916:394;;;19002:28;19033:24;19051:4;19033:9;:24::i;:::-;19002:55;;19104:13;;19080:20;:37;19076:219;;19169:10;;19145:20;:34;19142:77;;-1:-1:-1;19206:10:0;;19142:77;19241:34;19254:20;19241:12;:34::i;:::-;18916:394;;19345:44;19363:4;19369:2;19373:6;19381:7;19345:17;:44::i;:::-;19338:51;17927:1470;-1:-1:-1;;;;;17927:1470:0:o;17596:323::-;17664:4;10477:6;;-1:-1:-1;;;;;17688:15:0;;;10477:6;;17688:15;;;;:45;;-1:-1:-1;10450:7:0;10477:6;-1:-1:-1;;;;;17720:13:0;;;10477:6;;17720:13;;17688:45;:84;;;;-1:-1:-1;;;;;;17751:21:0;;;;;;:17;:21;;;;;;;;17750:22;17688:84;:125;;;;-1:-1:-1;;;;;;17790:23:0;;;;;;:17;:23;;;;;;;;17789:24;17688:125;:152;;;;-1:-1:-1;;;;;;17830:10:0;;7381:42;17830:10;;17688:152;:185;;;;-1:-1:-1;;;;;;17857:16:0;;;;17688:185;:223;;;;-1:-1:-1;;;;;;17890:21:0;;17906:4;17890:21;;17688:223;17681:230;17596:323;-1:-1:-1;;;17596:323:0:o;19405:1038::-;8670:6;:13;;-1:-1:-1;;8670:13:0;8679:4;8670:13;;;19492:7:::1;:13:::0;::::1;-1:-1:-1::0;;;19492:13:0;;::::1;;19488:44;;19525:7;;19488:44;19567:4;19547:26;::::0;;;:11:::1;:26;::::0;;;;;;;19582:9:::1;::::0;-1:-1:-1;;;;;19582:9:0::1;19547:46:::0;;;;;;;;-1:-1:-1;;19547:67:0::1;19544:165;;19651:4;19631:26;::::0;;;:11:::1;:26;::::0;;;;;;;19666:9:::1;::::0;-1:-1:-1;;;;;19666:9:0::1;19631:46:::0;;;;;;;-1:-1:-1;;19631:66:0;;19544:165:::1;19753:16;::::0;;19767:1:::1;19753:16:::0;;;;;::::1;::::0;;19729:21:::1;::::0;19753:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19753:16:0::1;19729:40;;19798:4;19780;19785:1;19780:7;;;;;;-1:-1:-1::0;;;19780:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;19780:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;19824:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;19824:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;19780:7;;19824:16;;;;;:9;:16;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19814:4;19819:1;19814:7;;;;;;-1:-1:-1::0;;;19814:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;19814:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19853:9:::1;::::0;:227:::1;::::0;-1:-1:-1;;;19853:227:0;;:9;::::1;::::0;:60:::1;::::0;:227:::1;::::0;19928:20;;19853:9:::1;::::0;20007:4;;20034::::1;::::0;20054:15:::1;::::0;19853:227:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20121:1;20097:21;:25;20093:343;;;20195:16:::0;;20250:7:::1;:13:::0;20159:21:::1;::::0;-1:-1:-1;;;;;20195:16:0::1;::::0;:69:::1;::::0;20250:13:::1;-1:-1:-1::0;;;20250:13:0;::::1;::::0;::::1;::::0;20222:24:::1;::::0;20234:12:::1;20159:21:::0;20222:24:::1;:::i;:::-;20221:42;;;;:::i;:::-;20195:69;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;20279:20:0;;20342:7:::1;:13:::0;-1:-1:-1;;;;;20279:20:0;;::::1;::::0;:77:::1;::::0;20342:13:::1;-1:-1:-1::0;;;20342:13:0;::::1;::::0;::::1;::::0;20310:28:::1;::::0;-1:-1:-1;;;20322:16:0;;::::1;;20310:9:::0;:28:::1;:::i;:::-;20309:46;;;;:::i;:::-;20279:77;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;20371:11:0::1;:21:::0;:53:::1;::::0;-1:-1:-1;;;;;20371:21:0;;::::1;::::0;20402::::1;20371:53:::0;::::1;;;::::0;:21:::1;:53:::0;:21;:53;20402:21;20371;:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20093:343;;8694:1;;-1:-1:-1::0;8706:6:0;:14;;-1:-1:-1;;8706:14:0;;;19405:1038::o;21254:579::-;21376:16;;21354:4;;21376:16;;;;;21371:221;;21409:28;21428:4;21434:2;21409:18;:28::i;:::-;21457:16;;;;;;;21456:17;:41;;;;;21477:20;21488:4;21494:2;21477:10;:20::i;:::-;21452:129;;;21518:47;;-1:-1:-1;;;21518:47:0;;7988:2:1;21518:47:0;;;7970:21:1;8027:2;8007:18;;;8000:30;8066:34;8046:18;;;8039:62;-1:-1:-1;;;8117:18:1;;;8110:35;8162:19;;21518:47:0;7960:227:1;21452:129:0;-1:-1:-1;;;;;21604:13:0;;;;;;:7;:13;;;;;:23;;21621:6;;21604:13;:23;;21621:6;;21604:23;:::i;:::-;;;;-1:-1:-1;21638:22:0;;-1:-1:-1;21664:7:0;21663:48;;21705:6;21663:48;;;21675:27;21685:4;21691:2;21695:6;21675:9;:27::i;:::-;-1:-1:-1;;;;;21722:11:0;;;;;;:7;:11;;;;;:29;;21638:73;;-1:-1:-1;21638:73:0;;21722:11;;;:29;;21638:73;;21722:29;:::i;:::-;;;;;;;;21784:2;-1:-1:-1;;;;;21769:34:0;21778:4;-1:-1:-1;;;;;21769:34:0;;21788:14;21769:34;;;;13750:25:1;;13738:2;13723:18;;13705:76;21769:34:0;;;;;;;;-1:-1:-1;21821:4:0;;21254:579;-1:-1:-1;;;;;21254:579:0:o;20451:387::-;20533:16;;;;;;;20532:17;20524:65;;;;-1:-1:-1;;;20524:65:0;;7160:2:1;20524:65:0;;;7142:21:1;7199:2;7179:18;;;7172:30;7238:34;7218:18;;;7211:62;-1:-1:-1;;;7289:18:1;;;7282:33;7332:19;;20524:65:0;7132:225:1;20524:65:0;20605:20;20616:4;20622:2;20605:10;:20::i;:::-;20604:21;:37;;;;-1:-1:-1;20635:6:0;;-1:-1:-1;;;;;20629:12:0;;;20635:6;;20629:12;20604:37;20600:231;;;-1:-1:-1;;;;;20658:23:0;;;;;;:17;:23;;;;;;;;;:30;;20684:4;-1:-1:-1;;20658:30:0;;;;;;;;20703:16;:23;;20658:30;-1:-1:-1;;20703:23:0;;;;;;;;20741:19;:26;;;;;;;;;;20787:32;;4970:41:1;;;20787:32:0;;4943:18:1;20787:32:0;;;;;;;20451:387;;:::o;21841:583::-;21981:6;;21920:7;;;;-1:-1:-1;;;;;21973:14:0;;;21981:6;;21973:14;21969:224;;;-1:-1:-1;22017:9:0;:16;;;21969:224;;;22061:6;;-1:-1:-1;;;;;22055:12:0;;;22061:6;;22055:12;22051:142;;;-1:-1:-1;22097:9:0;:17;;;;;;22051:142;;;-1:-1:-1;22160:9:0;:21;-1:-1:-1;;;22160:21:0;;;;22051:142;22247:10;:27;22205:17;;-1:-1:-1;;;22247:27:0;;;;22225:19;22234:10;22225:6;:19;:::i;:::-;:49;;;;:::i;:::-;22303:4;22287:22;;;;:7;:22;;;;;:35;;22205:69;;-1:-1:-1;22205:69:0;;22287:22;;;:35;;22205:69;;22287:35;:::i;:::-;;;;-1:-1:-1;;22338:40:0;;13750:25:1;;;22361:4:0;;-1:-1:-1;;;;;22338:40:0;;;;;13738:2:1;13723:18;22338:40:0;;;;;;;22398:18;22407:9;22398:6;:18;:::i;:::-;22391:25;21841:583;-1:-1:-1;;;;;;21841:583:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:159::-;246:20;;306:6;295:18;;285:29;;275:2;;328:1;325;318:12;343:257;402:6;455:2;443:9;434:7;430:23;426:32;423:2;;;476:6;468;461:22;423:2;520:9;507:23;539:31;564:5;539:31;:::i;605:261::-;675:6;728:2;716:9;707:7;703:23;699:32;696:2;;;749:6;741;734:22;696:2;786:9;780:16;805:31;830:5;805:31;:::i;1141:398::-;1209:6;1217;1270:2;1258:9;1249:7;1245:23;1241:32;1238:2;;;1291:6;1283;1276:22;1238:2;1335:9;1322:23;1354:31;1379:5;1354:31;:::i;:::-;1404:5;-1:-1:-1;1461:2:1;1446:18;;1433:32;1474:33;1433:32;1474:33;:::i;:::-;1526:7;1516:17;;;1228:311;;;;;:::o;1544:466::-;1621:6;1629;1637;1690:2;1678:9;1669:7;1665:23;1661:32;1658:2;;;1711:6;1703;1696:22;1658:2;1755:9;1742:23;1774:31;1799:5;1774:31;:::i;:::-;1824:5;-1:-1:-1;1881:2:1;1866:18;;1853:32;1894:33;1853:32;1894:33;:::i;:::-;1648:362;;1946:7;;-1:-1:-1;;;2000:2:1;1985:18;;;;1972:32;;1648:362::o;2015:325::-;2080:6;2088;2141:2;2129:9;2120:7;2116:23;2112:32;2109:2;;;2162:6;2154;2147:22;2109:2;2206:9;2193:23;2225:31;2250:5;2225:31;:::i;:::-;2275:5;-1:-1:-1;2299:35:1;2330:2;2315:18;;2299:35;:::i;:::-;2289:45;;2099:241;;;;;:::o;2345:325::-;2413:6;2421;2474:2;2462:9;2453:7;2449:23;2445:32;2442:2;;;2495:6;2487;2480:22;2442:2;2539:9;2526:23;2558:31;2583:5;2558:31;:::i;:::-;2608:5;2660:2;2645:18;;;;2632:32;;-1:-1:-1;;;2432:238:1:o;2675:190::-;2731:6;2784:2;2772:9;2763:7;2759:23;2755:32;2752:2;;;2805:6;2797;2790:22;2752:2;2833:26;2849:9;2833:26;:::i;2870:338::-;2944:6;2952;2960;3013:2;3001:9;2992:7;2988:23;2984:32;2981:2;;;3034:6;3026;3019:22;2981:2;3062:28;3080:9;3062:28;:::i;:::-;3052:38;;3109:37;3142:2;3131:9;3127:18;3109:37;:::i;:::-;3099:47;;3165:37;3198:2;3187:9;3183:18;3165:37;:::i;:::-;3155:47;;2971:237;;;;;:::o;3213:258::-;3281:6;3289;3342:2;3330:9;3321:7;3317:23;3313:32;3310:2;;;3363:6;3355;3348:22;3310:2;-1:-1:-1;;3391:23:1;;;3461:2;3446:18;;;3433:32;;-1:-1:-1;3300:171:1:o;3476:395::-;3562:6;3570;3578;3586;3639:3;3627:9;3618:7;3614:23;3610:33;3607:2;;;3661:6;3653;3646:22;3607:2;-1:-1:-1;;3689:23:1;;;3759:2;3744:18;;3731:32;;-1:-1:-1;3810:2:1;3795:18;;3782:32;;3861:2;3846:18;3833:32;;-1:-1:-1;3597:274:1;-1:-1:-1;3597:274:1:o;5247:603::-;5359:4;5388:2;5417;5406:9;5399:21;5449:6;5443:13;5492:6;5487:2;5476:9;5472:18;5465:34;5517:4;5530:140;5544:6;5541:1;5538:13;5530:140;;;5639:14;;;5635:23;;5629:30;5605:17;;;5624:2;5601:26;5594:66;5559:10;;5530:140;;;5688:6;5685:1;5682:13;5679:2;;;5758:4;5753:2;5744:6;5733:9;5729:22;5725:31;5718:45;5679:2;-1:-1:-1;5834:2:1;5813:15;-1:-1:-1;;5809:29:1;5794:45;;;;5841:2;5790:54;;5368:482;-1:-1:-1;;;5368:482:1:o;6612:341::-;6814:2;6796:21;;;6853:2;6833:18;;;6826:30;-1:-1:-1;;;6887:2:1;6872:18;;6865:47;6944:2;6929:18;;6786:167::o;12355:425::-;12557:2;12539:21;;;12596:2;12576:18;;;12569:30;12635:34;12630:2;12615:18;;12608:62;12706:31;12701:2;12686:18;;12679:59;12770:3;12755:19;;12529:251::o;13786:983::-;14048:4;14096:3;14085:9;14081:19;14127:6;14116:9;14109:25;14153:2;14191:6;14186:2;14175:9;14171:18;14164:34;14234:3;14229:2;14218:9;14214:18;14207:31;14258:6;14293;14287:13;14324:6;14316;14309:22;14362:3;14351:9;14347:19;14340:26;;14401:2;14393:6;14389:15;14375:29;;14422:4;14435:195;14449:6;14446:1;14443:13;14435:195;;;14514:13;;-1:-1:-1;;;;;14510:39:1;14498:52;;14605:15;;;;14570:12;;;;14546:1;14464:9;14435:195;;;-1:-1:-1;;;;;;;14686:32:1;;;;14681:2;14666:18;;14659:60;-1:-1:-1;;;14750:3:1;14735:19;14728:35;14647:3;14057:712;-1:-1:-1;;;14057:712:1:o;14963:224::-;15002:3;15030:6;15063:2;15060:1;15056:10;15093:2;15090:1;15086:10;15124:3;15120:2;15116:12;15111:3;15108:21;15105:2;;;15132:18;;:::i;:::-;15168:13;;15010:177;-1:-1:-1;;;;15010:177:1:o;15192:128::-;15232:3;15263:1;15259:6;15256:1;15253:13;15250:2;;;15269:18;;:::i;:::-;-1:-1:-1;15305:9:1;;15240:80::o;15325:217::-;15365:1;15391;15381:2;;-1:-1:-1;;;15416:31:1;;15470:4;15467:1;15460:15;15498:4;15423:1;15488:15;15381:2;-1:-1:-1;15527:9:1;;15371:171::o;15547:422::-;15636:1;15679:5;15636:1;15693:270;15714:7;15704:8;15701:21;15693:270;;;15773:4;15769:1;15765:6;15761:17;15755:4;15752:27;15749:2;;;15782:18;;:::i;:::-;15832:7;15822:8;15818:22;15815:2;;;15852:16;;;;15815:2;15931:22;;;;15891:15;;;;15693:270;;;15697:3;15611:358;;;;;:::o;15974:140::-;16032:5;16061:47;16102:4;16092:8;16088:19;16082:4;16168:5;16198:8;16188:2;;-1:-1:-1;16239:1:1;16253:5;;16188:2;16287:4;16277:2;;-1:-1:-1;16324:1:1;16338:5;;16277:2;16369:4;16387:1;16382:59;;;;16455:1;16450:130;;;;16362:218;;16382:59;16412:1;16403:10;;16426:5;;;16450:130;16487:3;16477:8;16474:17;16471:2;;;16494:18;;:::i;:::-;-1:-1:-1;;16550:1:1;16536:16;;16565:5;;16362:218;;16664:2;16654:8;16651:16;16645:3;16639:4;16636:13;16632:36;16626:2;16616:8;16613:16;16608:2;16602:4;16599:12;16595:35;16592:77;16589:2;;;-1:-1:-1;16701:19:1;;;16733:5;;16589:2;16780:34;16805:8;16799:4;16780:34;:::i;:::-;16850:6;16846:1;16842:6;16838:19;16829:7;16826:32;16823:2;;;16861:18;;:::i;:::-;16899:20;;16178:747;-1:-1:-1;;;16178:747:1:o;16930:168::-;16970:7;17036:1;17032;17028:6;17024:14;17021:1;17018:21;17013:1;17006:9;16999:17;16995:45;16992:2;;;17043:18;;:::i;:::-;-1:-1:-1;17083:9:1;;16982:116::o;17103:125::-;17143:4;17171:1;17168;17165:8;17162:2;;;17176:18;;:::i;:::-;-1:-1:-1;17213:9:1;;17152:76::o;17233:127::-;17294:10;17289:3;17285:20;17282:1;17275:31;17325:4;17322:1;17315:15;17349:4;17346:1;17339:15;17365:131;-1:-1:-1;;;;;17440:31:1;;17430:42;;17420:2;;17486:1;17483;17476:12

Swarm Source

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