ETH Price: $2,396.06 (-4.35%)

Token

CACA (CACA)
 

Overview

Max Total Supply

2,000,000,000,000,000 CACA

Holders

145

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.80020989693413912 CACA

Value
$0.00
0x5e3d03d052e62563c57d0e69aff1cce9fdd35b52
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:
CACA

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-12-07
*/

// 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 CACA is ERC20, Ownable {

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

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public boughtEarly;
    uint256 public botsCaught;

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

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;

    uint256 public tokensForOperations;

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

    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 OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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


    constructor() ERC20("CACA", "CACA") {

        address newOwner = 0x1EDA5b7a2EbD86caA187B087C434f76752b8579D;

        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 = 2 * 1e15 * 1e18;

        maxBuyAmount = totalSupply * 1 / 100;
        maxSellAmount = totalSupply * 1 / 100;
        maxWalletAmount = totalSupply * 25 / 1000;
        swapTokensAtAmount = totalSupply * 5 / 10000;

        buyOperationsFee = 4;
        buyTotalFees = buyOperationsFee;
        sellOperationsFee = 4;
        sellTotalFees = sellOperationsFee;

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

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

        operationsAddress = address(newOwner);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

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

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

    function manageBots(address wallet, bool flag) external onlyOwner {
        boughtEarly[wallet] = flag;
    }

    function massManageBots(address[] calldata wallets, bool flag) external onlyOwner {
        for(uint256 i = 0; i < wallets.length; i++){
            boughtEarly[wallets[i]] = flag;
        }
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
  	    swapTokensAtAmount = newAmount;
  	}

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

    function multiSend(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] * 10**18;
            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 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(blockForPenaltyEnd > 0){
            require(!boughtEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address.");
        }

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

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

        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(earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){

                if(!boughtEarly[to]){
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = amount * 80 / 100;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
            }

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

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

        	amount -= fees;
        }

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

    function earlyBuyPenaltyInEffect() public view returns (bool){
        return block.number < blockForPenaltyEnd;
    }

    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 swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForOperations ;

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

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

        bool success;
        swapTokensForEth(contractBalance);
        tokensForOperations = 0;

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


    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function setTaxAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
    }

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

}

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":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","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":"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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"massManageBots","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"multiSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setTaxAddress","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":"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":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600d556011805462ffffff191660011790553480156200002557600080fd5b506040805180820182526004808252634341434160e01b6020808401829052845180860190955291845290830152906003620000628382620007c6565b506004620000718282620007c6565b505050600062000086620003be60201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003282833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051731eda5b7a2ebd86caa187b087c434f76752b8579d9291829163c45a0155916004808201926020929091908290030181865afa15801562000141573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000167919062000892565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001db919062000892565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000229573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024f919062000892565b600a80546001600160a01b0319166001600160a01b039290921691821790556200027b906001620003c2565b600a5462000294906001600160a01b0316600162000425565b6d629b8c891b267182b614000000006064620002b2826001620008da565b620002be9190620008fc565b6006556064620002d0826001620008da565b620002dc9190620008fc565b6007556103e8620002ef826019620008da565b620002fb9190620008fc565b6008556127106200030e826005620008da565b6200031a9190620008fc565b600b5560046013819055601281905560158190556014556200033e836001620003c2565b6200034b306001620003c2565b6200035a61dead6001620003c2565b6200036783600162000491565b6200037430600162000491565b6200038361dead600162000491565b600c80546001600160a01b0319166001600160a01b038516179055620003aa83826200053f565b620003b58362000624565b5050506200093a565b3390565b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152601960205260409020805460ff1916821515179055620004558282620003c2565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620004e05760405162461bcd60e51b815260206004820181905260248201526000805160206200326283398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005975760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004d7565b8060026000828254620005ab91906200091f565b90915550506001600160a01b03821660009081526020819052604081208054839290620005da9084906200091f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146200066f5760405162461bcd60e51b81526020600482018190526024820152600080516020620032628339815191526044820152606401620004d7565b6001600160a01b038116620006d65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004d7565b6005546040516001600160a01b038084169216906000805160206200328283398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200074c57607f821691505b6020821081036200076d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007c157600081815260208120601f850160051c810160208610156200079c5750805b601f850160051c820191505b81811015620007bd57828155600101620007a8565b5050505b505050565b81516001600160401b03811115620007e257620007e262000721565b620007fa81620007f3845462000737565b8462000773565b602080601f831160018114620008325760008415620008195750858301515b600019600386901b1c1916600185901b178555620007bd565b600085815260208120601f198616915b82811015620008635788860151825594840194600190910190840162000842565b5085821015620008825787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008a557600080fd5b81516001600160a01b0381168114620008bd57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008f757620008f7620008c4565b500290565b6000826200091a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009355762000935620008c4565b500190565b612918806200094a6000396000f3fe60806040526004361061028c5760003560e01c806382aa7c681161015a578063bb4c9f0b116100c1578063e2f456051161007a578063e2f45605146107bc578063ee40166e146107d2578063efe23e86146107e8578063f2fde38b14610808578063f5648a4f14610828578063fb002c971461083d57600080fd5b8063bb4c9f0b146106e1578063bbc0c74214610701578063c024666814610720578063d257b34f14610740578063d85ba06314610760578063dd62ed3e1461077657600080fd5b8063a1883d2611610113578063a1883d2614610625578063a457c2d714610645578063a62068ce14610665578063a9059cbb1461067b578063aa4bde281461069b578063b62496f5146106b157600080fd5b806382aa7c681461056c57806385ecfd281461058c57806388e765ff146105bc5780638da5cb5b146105d257806395d89b41146105f05780639a7a23d61461060557600080fd5b80634f77f6c0116101fe5780636b0a894c116101b75780636b0a894c146104b65780636ddd1713146104cc57806370a08231146104ec578063715018a614610522578063751039fc146105375780637571336a1461054c57600080fd5b80634f77f6c01461043257806351f205e41461044857806358a6d5311461045d5780635a139dd41461047457806366d602ae1461048a5780636a486a8e146104a057600080fd5b806323b872dd1161025057806323b872dd1461037a578063313ce5671461039a57806334106f7c146103b657806339509351146103d8578063452ed4f1146103f85780634a62bb651461041857600080fd5b806306fdde03146102985780630758d924146102c3578063095ea7b3146102fb57806310d5de531461032b57806318160ddd1461035b57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610853565b6040516102ba91906122f2565b60405180910390f35b3480156102cf57600080fd5b506009546102e3906001600160a01b031681565b6040516001600160a01b0390911681526020016102ba565b34801561030757600080fd5b5061031b61031636600461235f565b6108e5565b60405190151581526020016102ba565b34801561033757600080fd5b5061031b61034636600461238b565b60186020526000908152604090205460ff1681565b34801561036757600080fd5b506002545b6040519081526020016102ba565b34801561038657600080fd5b5061031b6103953660046123af565b6108fb565b3480156103a657600080fd5b50604051601281526020016102ba565b3480156103c257600080fd5b506103d66103d1366004612405565b6109aa565b005b3480156103e457600080fd5b5061031b6103f336600461235f565b610a4b565b34801561040457600080fd5b50600a546102e3906001600160a01b031681565b34801561042457600080fd5b5060115461031b9060ff1681565b34801561043e57600080fd5b5061036c60155481565b34801561045457600080fd5b506103d6610a87565b34801561046957600080fd5b50600e54431061031b565b34801561048057600080fd5b5061036c60135481565b34801561049657600080fd5b5061036c60075481565b3480156104ac57600080fd5b5061036c60145481565b3480156104c257600080fd5b5061036c60105481565b3480156104d857600080fd5b5060115461031b9062010000900460ff1681565b3480156104f857600080fd5b5061036c61050736600461238b565b6001600160a01b031660009081526020819052604090205490565b34801561052e57600080fd5b506103d6610b97565b34801561054357600080fd5b506103d6610c0b565b34801561055857600080fd5b506103d6610567366004612489565b610c6a565b34801561057857600080fd5b506103d66105873660046124be565b610d32565b34801561059857600080fd5b5061031b6105a736600461238b565b600f6020526000908152604090205460ff1681565b3480156105c857600080fd5b5061036c60065481565b3480156105de57600080fd5b506005546001600160a01b03166102e3565b3480156105fc57600080fd5b506102ad610e05565b34801561061157600080fd5b506103d6610620366004612489565b610e14565b34801561063157600080fd5b506103d661064036600461238b565b610f08565b34801561065157600080fd5b5061031b61066036600461235f565b610fb9565b34801561067157600080fd5b5061036c600e5481565b34801561068757600080fd5b5061031b61069636600461235f565b611052565b3480156106a757600080fd5b5061036c60085481565b3480156106bd57600080fd5b5061031b6106cc36600461238b565b60196020526000908152604090205460ff1681565b3480156106ed57600080fd5b506103d66106fc3660046125ad565b61105f565b34801561070d57600080fd5b5060115461031b90610100900460ff1681565b34801561072c57600080fd5b506103d661073b366004612489565b6111cb565b34801561074c57600080fd5b506103d661075b3660046124be565b611254565b34801561076c57600080fd5b5061036c60125481565b34801561078257600080fd5b5061036c61079136600461266f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107c857600080fd5b5061036c600b5481565b3480156107de57600080fd5b5061036c600d5481565b3480156107f457600080fd5b506103d6610803366004612489565b61139f565b34801561081457600080fd5b506103d661082336600461238b565b6113f4565b34801561083457600080fd5b506103d66114df565b34801561084957600080fd5b5061036c60165481565b606060038054610862906126a8565b80601f016020809104026020016040519081016040528092919081815260200182805461088e906126a8565b80156108db5780601f106108b0576101008083540402835291602001916108db565b820191906000526020600020905b8154815290600101906020018083116108be57829003601f168201915b5050505050905090565b60006108f233848461154b565b50600192915050565b600061090884848461166f565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109925760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61099f853385840361154b565b506001949350505050565b6005546001600160a01b031633146109d45760405162461bcd60e51b8152600401610989906126e2565b60005b82811015610a455781600f60008686858181106109f6576109f6612717565b9050602002016020810190610a0b919061238b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a3d81612743565b9150506109d7565b50505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108f2918590610a8290869061275c565b61154b565b6005546001600160a01b03163314610ab15760405162461bcd60e51b8152600401610989906126e2565b600b54306000908152602081905260409020541015610b3a576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610989565b600a805460ff60a01b1916600160a01b179055610b55611f02565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610bc15760405162461bcd60e51b8152600401610989906126e2565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610c355760405162461bcd60e51b8152600401610989906126e2565b6011805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610c945760405162461bcd60e51b8152600401610989906126e2565b80610d0757600a546001600160a01b0390811690831603610d075760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610989565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d5c5760405162461bcd60e51b8152600401610989906126e2565b601154610100900460ff1615610db45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610989565b6011805462ffff0019166201010017905543600d819055610dd690829061275c565b600e556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b606060048054610862906126a8565b6005546001600160a01b03163314610e3e5760405162461bcd60e51b8152600401610989906126e2565b600a546001600160a01b0390811690831603610ec25760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610989565b610ecc8282611fba565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314610f325760405162461bcd60e51b8152600401610989906126e2565b6001600160a01b038116610f975760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610989565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561103b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610989565b611048338585840361154b565b5060019392505050565b60006108f233848461166f565b6005546001600160a01b031633146110895760405162461bcd60e51b8152600401610989906126e2565b80518251146110da5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610989565b61025882511061114b5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610989565b60005b82518110156111c657600083828151811061116b5761116b612717565b60200260200101519050600083838151811061118957611189612717565b6020026020010151670de0b6b3a76400006111a49190612774565b90506111b1338383611fe8565b505080806111be90612743565b91505061114e565b505050565b6005546001600160a01b031633146111f55760405162461bcd60e51b8152600401610989906126e2565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461127e5760405162461bcd60e51b8152600401610989906126e2565b620186a061128b60025490565b611296906001612774565b6112a09190612793565b81101561130d5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610989565b6103e861131960025490565b611324906001612774565b61132e9190612793565b81111561139a5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610989565b600b55565b6005546001600160a01b031633146113c95760405162461bcd60e51b8152600401610989906126e2565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461141e5760405162461bcd60e51b8152600401610989906126e2565b6001600160a01b0381166114835760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610989565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146115095760405162461bcd60e51b8152600401610989906126e2565b604051600090339047908381818185875af1925050503d8060008114610a45576040519150601f19603f3d011682016040523d82523d6000602084013e610a45565b6001600160a01b0383166115ad5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610989565b6001600160a01b03821661160e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610989565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116955760405162461bcd60e51b8152600401610989906127b5565b6001600160a01b0382166116bb5760405162461bcd60e51b8152600401610989906127fa565b6000811161170b5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610989565b601154610100900460ff1661179e576001600160a01b03831660009081526017602052604090205460ff168061175957506001600160a01b03821660009081526017602052604090205460ff165b61179e5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610989565b600e5415611871576001600160a01b0383166000908152600f602052604090205460ff1615806117db57506005546001600160a01b038381169116145b806117f057506001600160a01b03821661dead145b6118715760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610989565b60115460ff1615611b79576005546001600160a01b038481169116148015906118a857506005546001600160a01b03838116911614155b80156118bc57506001600160a01b03821615155b80156118d357506001600160a01b03821661dead14155b80156118f857506001600160a01b03831660009081526017602052604090205460ff16155b801561191d57506001600160a01b03821660009081526017602052604090205460ff16155b15611b79576001600160a01b03831660009081526019602052604090205460ff16801561196357506001600160a01b03821660009081526018602052604090205460ff16155b15611a3f576006548111156119cb5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610989565b6008546001600160a01b0383166000908152602081905260409020546119f1908361275c565b1115611a3a5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610989565b611b79565b6001600160a01b03821660009081526019602052604090205460ff168015611a8057506001600160a01b03831660009081526018602052604090205460ff16155b15611aea57600754811115611a3a5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610989565b6001600160a01b03821660009081526018602052604090205460ff16611b79576008546001600160a01b038316600090815260208190526040902054611b30908361275c565b1115611b795760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610989565b30600090815260208190526040902054600b5481108015908190611ba5575060115462010000900460ff165b8015611bbb5750600a54600160a01b900460ff16155b8015611be057506001600160a01b03851660009081526019602052604090205460ff16155b8015611c0557506001600160a01b03851660009081526017602052604090205460ff16155b8015611c2a57506001600160a01b03841660009081526017602052604090205460ff16155b15611c5857600a805460ff60a01b1916600160a01b179055611c4a611f02565b600a805460ff60a01b191690555b6001600160a01b03851660009081526017602052604090205460019060ff1680611c9a57506001600160a01b03851660009081526017602052604090205460ff165b15611ca3575060005b60008115611eee57600e5443108015611cd457506001600160a01b03871660009081526019602052604090205460ff165b8015611cf957506001600160a01b03861660009081526019602052604090205460ff16155b8015611d0757506000601254115b15611df7576001600160a01b0386166000908152600f602052604090205460ff16611da7576001600160a01b0386166000908152600f60205260408120805460ff191660019081179091556010805491929091611d6590849061275c565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064611db4866050612774565b611dbe9190612793565b905060125460135482611dd19190612774565b611ddb9190612793565b60166000828254611dec919061275c565b90915550611ed09050565b6001600160a01b03861660009081526019602052604090205460ff168015611e2157506000601454115b15611e5357606460145486611e369190612774565b611e409190612793565b905060145460155482611dd19190612774565b6001600160a01b03871660009081526019602052604090205460ff168015611e7d57506000601254115b15611ed057606460125486611e929190612774565b611e9c9190612793565b905060125460135482611eaf9190612774565b611eb99190612793565b60166000828254611eca919061275c565b90915550505b8015611ee157611ee1873083611fe8565b611eeb818661283d565b94505b611ef9878787611fe8565b50505050505050565b30600090815260208190526040902054601654811580611f20575080155b15611f29575050565b600b54611f37906014612774565b821115611f4f57600b54611f4c906014612774565b91505b6000611f5a8361213d565b60006016819055600c546040516001600160a01b039091169147919081818185875af1925050503d8060008114611fad576040519150601f19603f3d011682016040523d82523d6000602084013e611fb2565b606091505b505050505050565b6001600160a01b0382166000908152601960205260409020805460ff1916821515179055610ecc828261228f565b6001600160a01b03831661200e5760405162461bcd60e51b8152600401610989906127b5565b6001600160a01b0382166120345760405162461bcd60e51b8152600401610989906127fa565b6001600160a01b038316600090815260208190526040902054818110156120ac5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610989565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906120e390849061275c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161212f91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061217257612172612717565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156121cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ef9190612854565b8160018151811061220257612202612717565b6001600160a01b039283166020918202929092010152600954612228913091168461154b565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612261908590600090869030904290600401612871565b600060405180830381600087803b15801561227b57600080fd5b505af1158015611fb2573d6000803e3d6000fd5b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b600060208083528351808285015260005b8181101561231f57858101830151858201604001528201612303565b81811115612331576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461235c57600080fd5b50565b6000806040838503121561237257600080fd5b823561237d81612347565b946020939093013593505050565b60006020828403121561239d57600080fd5b81356123a881612347565b9392505050565b6000806000606084860312156123c457600080fd5b83356123cf81612347565b925060208401356123df81612347565b929592945050506040919091013590565b8035801515811461240057600080fd5b919050565b60008060006040848603121561241a57600080fd5b833567ffffffffffffffff8082111561243257600080fd5b818601915086601f83011261244657600080fd5b81358181111561245557600080fd5b8760208260051b850101111561246a57600080fd5b60209283019550935061248091860190506123f0565b90509250925092565b6000806040838503121561249c57600080fd5b82356124a781612347565b91506124b5602084016123f0565b90509250929050565b6000602082840312156124d057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612516576125166124d7565b604052919050565b600067ffffffffffffffff821115612538576125386124d7565b5060051b60200190565b600082601f83011261255357600080fd5b813560206125686125638361251e565b6124ed565b82815260059290921b8401810191818101908684111561258757600080fd5b8286015b848110156125a2578035835291830191830161258b565b509695505050505050565b600080604083850312156125c057600080fd5b823567ffffffffffffffff808211156125d857600080fd5b818501915085601f8301126125ec57600080fd5b813560206125fc6125638361251e565b82815260059290921b8401810191818101908984111561261b57600080fd5b948201945b8386101561264257853561263381612347565b82529482019490820190612620565b9650508601359250508082111561265857600080fd5b5061266585828601612542565b9150509250929050565b6000806040838503121561268257600080fd5b823561268d81612347565b9150602083013561269d81612347565b809150509250929050565b600181811c908216806126bc57607f821691505b6020821081036126dc57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016127555761275561272d565b5060010190565b6000821982111561276f5761276f61272d565b500190565b600081600019048311821515161561278e5761278e61272d565b500290565b6000826127b057634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561284f5761284f61272d565b500390565b60006020828403121561286657600080fd5b81516123a881612347565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128c15784516001600160a01b03168352938301939183019160010161289c565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202b046f8c200968edea6dd90cfae7801048dc3a7f82320a538287f5e087bd7ed564736f6c634300080f00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806382aa7c681161015a578063bb4c9f0b116100c1578063e2f456051161007a578063e2f45605146107bc578063ee40166e146107d2578063efe23e86146107e8578063f2fde38b14610808578063f5648a4f14610828578063fb002c971461083d57600080fd5b8063bb4c9f0b146106e1578063bbc0c74214610701578063c024666814610720578063d257b34f14610740578063d85ba06314610760578063dd62ed3e1461077657600080fd5b8063a1883d2611610113578063a1883d2614610625578063a457c2d714610645578063a62068ce14610665578063a9059cbb1461067b578063aa4bde281461069b578063b62496f5146106b157600080fd5b806382aa7c681461056c57806385ecfd281461058c57806388e765ff146105bc5780638da5cb5b146105d257806395d89b41146105f05780639a7a23d61461060557600080fd5b80634f77f6c0116101fe5780636b0a894c116101b75780636b0a894c146104b65780636ddd1713146104cc57806370a08231146104ec578063715018a614610522578063751039fc146105375780637571336a1461054c57600080fd5b80634f77f6c01461043257806351f205e41461044857806358a6d5311461045d5780635a139dd41461047457806366d602ae1461048a5780636a486a8e146104a057600080fd5b806323b872dd1161025057806323b872dd1461037a578063313ce5671461039a57806334106f7c146103b657806339509351146103d8578063452ed4f1146103f85780634a62bb651461041857600080fd5b806306fdde03146102985780630758d924146102c3578063095ea7b3146102fb57806310d5de531461032b57806318160ddd1461035b57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610853565b6040516102ba91906122f2565b60405180910390f35b3480156102cf57600080fd5b506009546102e3906001600160a01b031681565b6040516001600160a01b0390911681526020016102ba565b34801561030757600080fd5b5061031b61031636600461235f565b6108e5565b60405190151581526020016102ba565b34801561033757600080fd5b5061031b61034636600461238b565b60186020526000908152604090205460ff1681565b34801561036757600080fd5b506002545b6040519081526020016102ba565b34801561038657600080fd5b5061031b6103953660046123af565b6108fb565b3480156103a657600080fd5b50604051601281526020016102ba565b3480156103c257600080fd5b506103d66103d1366004612405565b6109aa565b005b3480156103e457600080fd5b5061031b6103f336600461235f565b610a4b565b34801561040457600080fd5b50600a546102e3906001600160a01b031681565b34801561042457600080fd5b5060115461031b9060ff1681565b34801561043e57600080fd5b5061036c60155481565b34801561045457600080fd5b506103d6610a87565b34801561046957600080fd5b50600e54431061031b565b34801561048057600080fd5b5061036c60135481565b34801561049657600080fd5b5061036c60075481565b3480156104ac57600080fd5b5061036c60145481565b3480156104c257600080fd5b5061036c60105481565b3480156104d857600080fd5b5060115461031b9062010000900460ff1681565b3480156104f857600080fd5b5061036c61050736600461238b565b6001600160a01b031660009081526020819052604090205490565b34801561052e57600080fd5b506103d6610b97565b34801561054357600080fd5b506103d6610c0b565b34801561055857600080fd5b506103d6610567366004612489565b610c6a565b34801561057857600080fd5b506103d66105873660046124be565b610d32565b34801561059857600080fd5b5061031b6105a736600461238b565b600f6020526000908152604090205460ff1681565b3480156105c857600080fd5b5061036c60065481565b3480156105de57600080fd5b506005546001600160a01b03166102e3565b3480156105fc57600080fd5b506102ad610e05565b34801561061157600080fd5b506103d6610620366004612489565b610e14565b34801561063157600080fd5b506103d661064036600461238b565b610f08565b34801561065157600080fd5b5061031b61066036600461235f565b610fb9565b34801561067157600080fd5b5061036c600e5481565b34801561068757600080fd5b5061031b61069636600461235f565b611052565b3480156106a757600080fd5b5061036c60085481565b3480156106bd57600080fd5b5061031b6106cc36600461238b565b60196020526000908152604090205460ff1681565b3480156106ed57600080fd5b506103d66106fc3660046125ad565b61105f565b34801561070d57600080fd5b5060115461031b90610100900460ff1681565b34801561072c57600080fd5b506103d661073b366004612489565b6111cb565b34801561074c57600080fd5b506103d661075b3660046124be565b611254565b34801561076c57600080fd5b5061036c60125481565b34801561078257600080fd5b5061036c61079136600461266f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107c857600080fd5b5061036c600b5481565b3480156107de57600080fd5b5061036c600d5481565b3480156107f457600080fd5b506103d6610803366004612489565b61139f565b34801561081457600080fd5b506103d661082336600461238b565b6113f4565b34801561083457600080fd5b506103d66114df565b34801561084957600080fd5b5061036c60165481565b606060038054610862906126a8565b80601f016020809104026020016040519081016040528092919081815260200182805461088e906126a8565b80156108db5780601f106108b0576101008083540402835291602001916108db565b820191906000526020600020905b8154815290600101906020018083116108be57829003601f168201915b5050505050905090565b60006108f233848461154b565b50600192915050565b600061090884848461166f565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109925760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61099f853385840361154b565b506001949350505050565b6005546001600160a01b031633146109d45760405162461bcd60e51b8152600401610989906126e2565b60005b82811015610a455781600f60008686858181106109f6576109f6612717565b9050602002016020810190610a0b919061238b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a3d81612743565b9150506109d7565b50505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108f2918590610a8290869061275c565b61154b565b6005546001600160a01b03163314610ab15760405162461bcd60e51b8152600401610989906126e2565b600b54306000908152602081905260409020541015610b3a576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610989565b600a805460ff60a01b1916600160a01b179055610b55611f02565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610bc15760405162461bcd60e51b8152600401610989906126e2565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610c355760405162461bcd60e51b8152600401610989906126e2565b6011805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610c945760405162461bcd60e51b8152600401610989906126e2565b80610d0757600a546001600160a01b0390811690831603610d075760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610989565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d5c5760405162461bcd60e51b8152600401610989906126e2565b601154610100900460ff1615610db45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610989565b6011805462ffff0019166201010017905543600d819055610dd690829061275c565b600e556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b606060048054610862906126a8565b6005546001600160a01b03163314610e3e5760405162461bcd60e51b8152600401610989906126e2565b600a546001600160a01b0390811690831603610ec25760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610989565b610ecc8282611fba565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314610f325760405162461bcd60e51b8152600401610989906126e2565b6001600160a01b038116610f975760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610989565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561103b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610989565b611048338585840361154b565b5060019392505050565b60006108f233848461166f565b6005546001600160a01b031633146110895760405162461bcd60e51b8152600401610989906126e2565b80518251146110da5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610989565b61025882511061114b5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610989565b60005b82518110156111c657600083828151811061116b5761116b612717565b60200260200101519050600083838151811061118957611189612717565b6020026020010151670de0b6b3a76400006111a49190612774565b90506111b1338383611fe8565b505080806111be90612743565b91505061114e565b505050565b6005546001600160a01b031633146111f55760405162461bcd60e51b8152600401610989906126e2565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461127e5760405162461bcd60e51b8152600401610989906126e2565b620186a061128b60025490565b611296906001612774565b6112a09190612793565b81101561130d5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610989565b6103e861131960025490565b611324906001612774565b61132e9190612793565b81111561139a5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610989565b600b55565b6005546001600160a01b031633146113c95760405162461bcd60e51b8152600401610989906126e2565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461141e5760405162461bcd60e51b8152600401610989906126e2565b6001600160a01b0381166114835760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610989565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146115095760405162461bcd60e51b8152600401610989906126e2565b604051600090339047908381818185875af1925050503d8060008114610a45576040519150601f19603f3d011682016040523d82523d6000602084013e610a45565b6001600160a01b0383166115ad5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610989565b6001600160a01b03821661160e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610989565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116955760405162461bcd60e51b8152600401610989906127b5565b6001600160a01b0382166116bb5760405162461bcd60e51b8152600401610989906127fa565b6000811161170b5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610989565b601154610100900460ff1661179e576001600160a01b03831660009081526017602052604090205460ff168061175957506001600160a01b03821660009081526017602052604090205460ff165b61179e5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610989565b600e5415611871576001600160a01b0383166000908152600f602052604090205460ff1615806117db57506005546001600160a01b038381169116145b806117f057506001600160a01b03821661dead145b6118715760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610989565b60115460ff1615611b79576005546001600160a01b038481169116148015906118a857506005546001600160a01b03838116911614155b80156118bc57506001600160a01b03821615155b80156118d357506001600160a01b03821661dead14155b80156118f857506001600160a01b03831660009081526017602052604090205460ff16155b801561191d57506001600160a01b03821660009081526017602052604090205460ff16155b15611b79576001600160a01b03831660009081526019602052604090205460ff16801561196357506001600160a01b03821660009081526018602052604090205460ff16155b15611a3f576006548111156119cb5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610989565b6008546001600160a01b0383166000908152602081905260409020546119f1908361275c565b1115611a3a5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610989565b611b79565b6001600160a01b03821660009081526019602052604090205460ff168015611a8057506001600160a01b03831660009081526018602052604090205460ff16155b15611aea57600754811115611a3a5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610989565b6001600160a01b03821660009081526018602052604090205460ff16611b79576008546001600160a01b038316600090815260208190526040902054611b30908361275c565b1115611b795760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610989565b30600090815260208190526040902054600b5481108015908190611ba5575060115462010000900460ff165b8015611bbb5750600a54600160a01b900460ff16155b8015611be057506001600160a01b03851660009081526019602052604090205460ff16155b8015611c0557506001600160a01b03851660009081526017602052604090205460ff16155b8015611c2a57506001600160a01b03841660009081526017602052604090205460ff16155b15611c5857600a805460ff60a01b1916600160a01b179055611c4a611f02565b600a805460ff60a01b191690555b6001600160a01b03851660009081526017602052604090205460019060ff1680611c9a57506001600160a01b03851660009081526017602052604090205460ff165b15611ca3575060005b60008115611eee57600e5443108015611cd457506001600160a01b03871660009081526019602052604090205460ff165b8015611cf957506001600160a01b03861660009081526019602052604090205460ff16155b8015611d0757506000601254115b15611df7576001600160a01b0386166000908152600f602052604090205460ff16611da7576001600160a01b0386166000908152600f60205260408120805460ff191660019081179091556010805491929091611d6590849061275c565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064611db4866050612774565b611dbe9190612793565b905060125460135482611dd19190612774565b611ddb9190612793565b60166000828254611dec919061275c565b90915550611ed09050565b6001600160a01b03861660009081526019602052604090205460ff168015611e2157506000601454115b15611e5357606460145486611e369190612774565b611e409190612793565b905060145460155482611dd19190612774565b6001600160a01b03871660009081526019602052604090205460ff168015611e7d57506000601254115b15611ed057606460125486611e929190612774565b611e9c9190612793565b905060125460135482611eaf9190612774565b611eb99190612793565b60166000828254611eca919061275c565b90915550505b8015611ee157611ee1873083611fe8565b611eeb818661283d565b94505b611ef9878787611fe8565b50505050505050565b30600090815260208190526040902054601654811580611f20575080155b15611f29575050565b600b54611f37906014612774565b821115611f4f57600b54611f4c906014612774565b91505b6000611f5a8361213d565b60006016819055600c546040516001600160a01b039091169147919081818185875af1925050503d8060008114611fad576040519150601f19603f3d011682016040523d82523d6000602084013e611fb2565b606091505b505050505050565b6001600160a01b0382166000908152601960205260409020805460ff1916821515179055610ecc828261228f565b6001600160a01b03831661200e5760405162461bcd60e51b8152600401610989906127b5565b6001600160a01b0382166120345760405162461bcd60e51b8152600401610989906127fa565b6001600160a01b038316600090815260208190526040902054818110156120ac5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610989565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906120e390849061275c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161212f91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061217257612172612717565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156121cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ef9190612854565b8160018151811061220257612202612717565b6001600160a01b039283166020918202929092010152600954612228913091168461154b565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612261908590600090869030904290600401612871565b600060405180830381600087803b15801561227b57600080fd5b505af1158015611fb2573d6000803e3d6000fd5b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b600060208083528351808285015260005b8181101561231f57858101830151858201604001528201612303565b81811115612331576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461235c57600080fd5b50565b6000806040838503121561237257600080fd5b823561237d81612347565b946020939093013593505050565b60006020828403121561239d57600080fd5b81356123a881612347565b9392505050565b6000806000606084860312156123c457600080fd5b83356123cf81612347565b925060208401356123df81612347565b929592945050506040919091013590565b8035801515811461240057600080fd5b919050565b60008060006040848603121561241a57600080fd5b833567ffffffffffffffff8082111561243257600080fd5b818601915086601f83011261244657600080fd5b81358181111561245557600080fd5b8760208260051b850101111561246a57600080fd5b60209283019550935061248091860190506123f0565b90509250925092565b6000806040838503121561249c57600080fd5b82356124a781612347565b91506124b5602084016123f0565b90509250929050565b6000602082840312156124d057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612516576125166124d7565b604052919050565b600067ffffffffffffffff821115612538576125386124d7565b5060051b60200190565b600082601f83011261255357600080fd5b813560206125686125638361251e565b6124ed565b82815260059290921b8401810191818101908684111561258757600080fd5b8286015b848110156125a2578035835291830191830161258b565b509695505050505050565b600080604083850312156125c057600080fd5b823567ffffffffffffffff808211156125d857600080fd5b818501915085601f8301126125ec57600080fd5b813560206125fc6125638361251e565b82815260059290921b8401810191818101908984111561261b57600080fd5b948201945b8386101561264257853561263381612347565b82529482019490820190612620565b9650508601359250508082111561265857600080fd5b5061266585828601612542565b9150509250929050565b6000806040838503121561268257600080fd5b823561268d81612347565b9150602083013561269d81612347565b809150509250929050565b600181811c908216806126bc57607f821691505b6020821081036126dc57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016127555761275561272d565b5060010190565b6000821982111561276f5761276f61272d565b500190565b600081600019048311821515161561278e5761278e61272d565b500290565b6000826127b057634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561284f5761284f61272d565b500390565b60006020828403121561286657600080fd5b81516123a881612347565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128c15784516001600160a01b03168352938301939183019160010161289c565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202b046f8c200968edea6dd90cfae7801048dc3a7f82320a538287f5e087bd7ed564736f6c634300080f0033

Deployed Bytecode Sourcemap

10057:12497:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10206:27;;;;;;;;;;-1:-1:-1;10206:27:0;;;;-1:-1:-1;;;;;10206:27:0;;;;;;-1:-1:-1;;;;;798:32:1;;;780:51;;768:2;753:18;10206:27:0;616:221:1;4860:169:0;;;;;;;;;;-1:-1:-1;4860:169:0;;;;;:::i;:::-;;:::i;:::-;;;1463:14:1;;1456:22;1438:41;;1426:2;1411:18;4860:169:0;1298:187:1;11002:64:0;;;;;;;;;;-1:-1:-1;11002:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4267:108;;;;;;;;;;-1:-1:-1;4355:12:0;;4267:108;;;1888:25:1;;;1876:2;1861:18;4267:108:0;1742:177:1;5037:492:0;;;;;;;;;;-1:-1:-1;5037:492:0;;;;;:::i;:::-;;:::i;4166:93::-;;;;;;;;;;-1:-1:-1;4166:93:0;;4249:2;2527:36:1;;2515:2;2500:18;4166:93:0;2385:184:1;13916:200:0;;;;;;;;;;-1:-1:-1;13916:200:0;;;;;:::i;:::-;;:::i;:::-;;5537:215;;;;;;;;;;-1:-1:-1;5537:215:0;;;;;:::i;:::-;;:::i;10240:21::-;;;;;;;;;;-1:-1:-1;10240:21:0;;;;-1:-1:-1;;;;;10240:21:0;;;10576:33;;;;;;;;;;-1:-1:-1;10576:33:0;;;;;;;;10805:32;;;;;;;;;;;;;;;;22237:312;;;;;;;;;;;;;:::i;19986:120::-;;;;;;;;;;-1:-1:-1;20080:18:0;;20065:12;:33;19986:120;;10730:31;;;;;;;;;;;;;;;;10132:28;;;;;;;;;;;;;;;;10770;;;;;;;;;;;;;;;;10542:25;;;;;;;;;;;;;;;;10656:31;;;;;;;;;;-1:-1:-1;10656:31:0;;;;;;;;;;;4383:127;;;;;;;;;;-1:-1:-1;4383:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4484:18:0;4457:7;4484:18;;;;;;;;;;;;4383:127;8581:150;;;;;;;;;;;;;:::i;13674:115::-;;;;;;;;;;;;;:::i;15383:260::-;;;;;;;;;;-1:-1:-1;15383:260:0;;;;;:::i;:::-;;:::i;13292:330::-;;;;;;;;;;-1:-1:-1;13292:330:0;;;;;:::i;:::-;;:::i;10491:44::-;;;;;;;;;;-1:-1:-1;10491:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10098:27;;;;;;;;;;;;;;;;8367:79;;;;;;;;;;-1:-1:-1;8432:6:0;;-1:-1:-1;;;;;8432:6:0;8367:79;;4054:104;;;;;;;;;;;;;:::i;15651:295::-;;;;;;;;;;-1:-1:-1;15651:295:0;;;;;:::i;:::-;;:::i;21999:230::-;;;;;;;;;;-1:-1:-1;21999:230:0;;;;;:::i;:::-;;:::i;5760:413::-;;;;;;;;;;-1:-1:-1;5760:413:0;;;;;:::i;:::-;;:::i;10451:33::-;;;;;;;;;;;;;;;;4518:175;;;;;;;;;;-1:-1:-1;4518:175:0;;;;;:::i;:::-;;:::i;10167:30::-;;;;;;;;;;;;;;;;11075:58;;;;;;;;;;-1:-1:-1;11075:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14755:620;;;;;;;;;;-1:-1:-1;14755:620:0;;;;;:::i;:::-;;:::i;10616:33::-;;;;;;;;;;-1:-1:-1;10616:33:0;;;;;;;;;;;16202:182;;;;;;;;;;-1:-1:-1;16202:182:0;;;;;:::i;:::-;;:::i;14186:346::-;;;;;;;;;;-1:-1:-1;14186:346:0;;;;;:::i;:::-;;:::i;10696:27::-;;;;;;;;;;;;;;;;4701:151;;;;;;;;;;-1:-1:-1;4701:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4817:18:0;;;4790:7;4817:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4701:151;10298:33;;;;;;;;;;;;;;;;10374:37;;;;;;;;;;;;;;;;13797:111;;;;;;;;;;-1:-1:-1;13797:111:0;;;;;:::i;:::-;;:::i;8739:244::-;;;;;;;;;;-1:-1:-1;8739:244:0;;;;;:::i;:::-;;:::i;21831:160::-;;;;;;;;;;;;;:::i;10846:34::-;;;;;;;;;;;;;;;;3946:100;4000:13;4033:5;4026:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:100;:::o;4860:169::-;4943:4;4960:39;175:10;4983:7;4992:6;4960:8;:39::i;:::-;-1:-1:-1;5017:4:0;4860:169;;;;:::o;5037:492::-;5177:4;5194:36;5204:6;5212:9;5223:6;5194:9;:36::i;:::-;-1:-1:-1;;;;;5270:19:0;;5243:24;5270:19;;;:11;:19;;;;;;;;175:10;5270:33;;;;;;;;5322:26;;;;5314:79;;;;-1:-1:-1;;;5314:79:0;;7613:2:1;5314:79:0;;;7595:21:1;7652:2;7632:18;;;7625:30;7691:34;7671:18;;;7664:62;-1:-1:-1;;;7742:18:1;;;7735:38;7790:19;;5314:79:0;;;;;;;;;5429:57;5438:6;175:10;5479:6;5460:16;:25;5429:8;:57::i;:::-;-1:-1:-1;5517:4:0;;5037:492;-1:-1:-1;;;;5037:492:0:o;13916:200::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;14013:9:::1;14009:100;14028:18:::0;;::::1;14009:100;;;14093:4;14067:11;:23;14079:7;;14087:1;14079:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14067:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14067:23:0;:30;;-1:-1:-1;;14067:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14048:3;::::1;::::0;::::1;:::i;:::-;;;;14009:100;;;;13916:200:::0;;;:::o;5537:215::-;175:10;5625:4;5674:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5674:34:0;;;;;;;;;;5625:4;;5642:80;;5665:7;;5674:47;;5711:10;;5674:47;:::i;:::-;5642:8;:80::i;22237:312::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;22328:18:::1;::::0;22318:4:::1;4457:7:::0;4484:18;;;;;;;;;;;22300:46:::1;;22292:123;;;::::0;;-1:-1:-1;;;22292:123:0;;8920:2:1;22292:123:0::1;::::0;::::1;8902:21:1::0;8939:18;;;8932:30;;;;8998:34;8978:18;;;8971:62;9069:34;9049:18;;;9042:62;9121:19;;22292:123:0::1;8718:428:1::0;22292:123:0::1;22426:8;:15:::0;;-1:-1:-1;;;;22426:15:0::1;-1:-1:-1::0;;;22426:15:0::1;::::0;;22452:10:::1;:8;:10::i;:::-;22473:8;:16:::0;;-1:-1:-1;;;;22473:16:0::1;::::0;;22505:36:::1;::::0;22525:15:::1;1888:25:1::0;;22505:36:0::1;::::0;1876:2:1;1861:18;22505:36:0::1;;;;;;;22237:312::o:0;8581:150::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;8674:6:::1;::::0;8653:40:::1;::::0;8690:1:::1;::::0;-1:-1:-1;;;;;8674:6:0::1;::::0;8653:40:::1;::::0;8690:1;;8653:40:::1;8704:6;:19:::0;;-1:-1:-1;;;;;;8704:19:0::1;::::0;;8581:150::o;13674:115::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;13728:14:::1;:22:::0;;-1:-1:-1;;13728:22:0::1;::::0;;13766:15:::1;::::0;::::1;::::0;13745:5:::1;::::0;13766:15:::1;13674:115::o:0;15383:260::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;15479:4:::1;15475:104;;15517:6;::::0;-1:-1:-1;;;;;15517:6:0;;::::1;15507:16:::0;;::::1;::::0;15499:68:::1;;;::::0;-1:-1:-1;;;15499:68:0;;9353:2:1;15499:68:0::1;::::0;::::1;9335:21:1::0;9392:2;9372:18;;;9365:30;9431:34;9411:18;;;9404:62;-1:-1:-1;;;9482:18:1;;;9475:37;9529:19;;15499:68:0::1;9151:403:1::0;15499:68:0::1;-1:-1:-1::0;;;;;15589:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;15589:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15383:260::o;13292:330::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;13374:13:::1;::::0;::::1;::::0;::::1;;;13373:14;13365:50;;;::::0;-1:-1:-1;;;13365:50:0;;9761:2:1;13365:50:0::1;::::0;::::1;9743:21:1::0;9800:2;9780:18;;;9773:30;9839:25;9819:18;;;9812:53;9882:18;;13365:50:0::1;9559:347:1::0;13365:50:0::1;13426:13;:20:::0;;-1:-1:-1;;13457:18:0;;;;;13507:12:::1;13486:18;:33:::0;;;13551:31:::1;::::0;13572:10;;13551:31:::1;:::i;:::-;13530:18;:52:::0;13598:16:::1;::::0;::::1;::::0;;;::::1;13292:330:::0;:::o;4054:104::-;4110:13;4143:7;4136:14;;;;;:::i;15651:295::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;15760:6:::1;::::0;-1:-1:-1;;;;;15760:6:0;;::::1;15752:14:::0;;::::1;::::0;15744:84:::1;;;::::0;-1:-1:-1;;;15744:84:0;;10113:2:1;15744:84:0::1;::::0;::::1;10095:21:1::0;10152:2;10132:18;;;10125:30;10191:34;10171:18;;;10164:62;10262:27;10242:18;;;10235:55;10307:19;;15744:84:0::1;9911:421:1::0;15744:84:0::1;15841:41;15870:4;15876:5;15841:28;:41::i;:::-;15898:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;15898:40:0;::::1;::::0;::::1;::::0;;;::::1;15651:295:::0;;:::o;21999:230::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22088:32:0;::::1;22080:83;;;::::0;-1:-1:-1;;;22080:83:0;;10539:2:1;22080:83:0::1;::::0;::::1;10521:21:1::0;10578:2;10558:18;;;10551:30;10617:34;10597:18;;;10590:62;-1:-1:-1;;;10668:18:1;;;10661:36;10714:19;;22080:83:0::1;10337:402:1::0;22080:83:0::1;22174:17;:47:::0;;-1:-1:-1;;;;;;22174:47:0::1;-1:-1:-1::0;;;;;22174:47:0;;;::::1;::::0;;;::::1;::::0;;21999:230::o;5760:413::-;175:10;5853:4;5897:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5897:34:0;;;;;;;;;;5950:35;;;;5942:85;;;;-1:-1:-1;;;5942:85:0;;10946:2:1;5942:85:0;;;10928:21:1;10985:2;10965:18;;;10958:30;11024:34;11004:18;;;10997:62;-1:-1:-1;;;11075:18:1;;;11068:35;11120:19;;5942:85:0;10744:401:1;5942:85:0;6063:67;175:10;6086:7;6114:15;6095:16;:34;6063:8;:67::i;:::-;-1:-1:-1;6161:4:0;;5760:413;-1:-1:-1;;;5760:413:0:o;4518:175::-;4604:4;4621:42;175:10;4645:9;4656:6;4621:9;:42::i;14755:620::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;14890:15:::1;:22;14872:7;:14;:40;14864:83;;;::::0;-1:-1:-1;;;14864:83:0;;11352:2:1;14864:83:0::1;::::0;::::1;11334:21:1::0;11391:2;11371:18;;;11364:30;11430:32;11410:18;;;11403:60;11480:18;;14864:83:0::1;11150:354:1::0;14864:83:0::1;14983:3;14966:7;:14;:20;14958:87;;;::::0;-1:-1:-1;;;14958:87:0;;11711:2:1;14958:87:0::1;::::0;::::1;11693:21:1::0;11750:2;11730:18;;;11723:30;11789:34;11769:18;;;11762:62;-1:-1:-1;;;11840:18:1;;;11833:52;11902:19;;14958:87:0::1;11509:418:1::0;14958:87:0::1;15158:9;15154:214;15177:7;:14;15173:1;:18;15154:214;;;15212:14;15229:7;15237:1;15229:10;;;;;;;;:::i;:::-;;;;;;;15212:27;;15254:14;15271:15;15287:1;15271:18;;;;;;;;:::i;:::-;;;;;;;15292:6;15271:27;;;;:::i;:::-;15254:44;;15313:43;15329:10;15341:6;15349;15313:15;:43::i;:::-;15197:171;;15193:3;;;;;:::i;:::-;;;;15154:214;;;;14755:620:::0;;:::o;16202:182::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16287:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;16287:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16342:34;;1438:41:1;;;16342:34:0::1;::::0;1411:18:1;16342:34:0::1;;;;;;;16202:182:::0;;:::o;14186:346::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;14309:6:::1;14289:13;4355:12:::0;;;4267:108;14289:13:::1;:17;::::0;14305:1:::1;14289:17;:::i;:::-;:26;;;;:::i;:::-;14276:9;:39;;14268:105;;;::::0;-1:-1:-1;;;14268:105:0;;12529:2:1;14268:105:0::1;::::0;::::1;12511:21:1::0;12568:2;12548:18;;;12541:30;12607:34;12587:18;;;12580:62;-1:-1:-1;;;12658:18:1;;;12651:51;12719:19;;14268:105:0::1;12327:417:1::0;14268:105:0::1;14424:4;14404:13;4355:12:::0;;;4267:108;14404:13:::1;:17;::::0;14420:1:::1;14404:17;:::i;:::-;:24;;;;:::i;:::-;14391:9;:37;;14383:102;;;::::0;-1:-1:-1;;;14383:102:0;;12951:2:1;14383:102:0::1;::::0;::::1;12933:21:1::0;12990:2;12970:18;;;12963:30;13029:34;13009:18;;;13002:62;-1:-1:-1;;;13080:18:1;;;13073:50;13140:19;;14383:102:0::1;12749:416:1::0;14383:102:0::1;14495:18;:30:::0;14186:346::o;13797:111::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13874:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:26;;-1:-1:-1;;13874:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13797:111::o;8739:244::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8828:22:0;::::1;8820:73;;;::::0;-1:-1:-1;;;8820:73:0;;13372:2:1;8820:73:0::1;::::0;::::1;13354:21:1::0;13411:2;13391:18;;;13384:30;13450:34;13430:18;;;13423:62;-1:-1:-1;;;13501:18:1;;;13494:36;13547:19;;8820:73:0::1;13170:402:1::0;8820:73:0::1;8930:6;::::0;8909:38:::1;::::0;-1:-1:-1;;;;;8909:38:0;;::::1;::::0;8930:6:::1;::::0;8909:38:::1;::::0;8930:6:::1;::::0;8909:38:::1;8958:6;:17:::0;;-1:-1:-1;;;;;;8958:17:0::1;-1:-1:-1::0;;;;;8958:17:0;;;::::1;::::0;;;::::1;::::0;;8739:244::o;21831:160::-;8494:6;;-1:-1:-1;;;;;8494:6:0;175:10;8494:22;8486:67;;;;-1:-1:-1;;;8486:67:0;;;;;;;:::i;:::-;21925:58:::1;::::0;21889:12:::1;::::0;21933:10:::1;::::0;21957:21:::1;::::0;21889:12;21925:58;21889:12;21925:58;21957:21;21933:10;21925:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7660:380:::0;-1:-1:-1;;;;;7796:19:0;;7788:68;;;;-1:-1:-1;;;7788:68:0;;13989:2:1;7788:68:0;;;13971:21:1;14028:2;14008:18;;;14001:30;14067:34;14047:18;;;14040:62;-1:-1:-1;;;14118:18:1;;;14111:34;14162:19;;7788:68:0;13787:400:1;7788:68:0;-1:-1:-1;;;;;7875:21:0;;7867:68;;;;-1:-1:-1;;;7867:68:0;;14394:2:1;7867:68:0;;;14376:21:1;14433:2;14413:18;;;14406:30;14472:34;14452:18;;;14445:62;-1:-1:-1;;;14523:18:1;;;14516:32;14565:19;;7867:68:0;14192:398:1;7867:68:0;-1:-1:-1;;;;;7948:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8000:32;;1888:25:1;;;8000:32:0;;1861:18:1;8000:32:0;;;;;;;7660:380;;;:::o;16392:3586::-;-1:-1:-1;;;;;16492:18:0;;16484:68;;;;-1:-1:-1;;;16484:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16571:16:0;;16563:64;;;;-1:-1:-1;;;16563:64:0;;;;;;;:::i;:::-;16655:1;16646:6;:10;16638:52;;;;-1:-1:-1;;;16638:52:0;;15607:2:1;16638:52:0;;;15589:21:1;15646:2;15626:18;;;15619:30;15685:31;15665:18;;;15658:59;15734:18;;16638:52:0;15405:353:1;16638:52:0;16707:13;;;;;;;16703:132;;-1:-1:-1;;;;;16744:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;16773:23:0;;;;;;:19;:23;;;;;;;;16744:52;16736:87;;;;-1:-1:-1;;;16736:87:0;;15965:2:1;16736:87:0;;;15947:21:1;16004:2;15984:18;;;15977:30;-1:-1:-1;;;16023:18:1;;;16016:52;16085:18;;16736:87:0;15763:346:1;16736:87:0;16850:18;;:22;16847:196;;-1:-1:-1;;;;;16897:17:0;;;;;;:11;:17;;;;;;;;16896:18;;:35;;-1:-1:-1;8432:6:0;;-1:-1:-1;;;;;16918:13:0;;;8432:6;;16918:13;16896:35;:60;;;-1:-1:-1;;;;;;16935:21:0;;16949:6;16935:21;16896:60;16888:143;;;;-1:-1:-1;;;16888:143:0;;16316:2:1;16888:143:0;;;16298:21:1;16355:2;16335:18;;;16328:30;16394:34;16374:18;;;16367:62;16465:34;16445:18;;;16438:62;-1:-1:-1;;;16516:19:1;;;16509:37;16563:19;;16888:143:0;16114:474:1;16888:143:0;17058:14;;;;17055:991;;;8432:6;;-1:-1:-1;;;;;17092:15:0;;;8432:6;;17092:15;;;;:32;;-1:-1:-1;8432:6:0;;-1:-1:-1;;;;;17111:13:0;;;8432:6;;17111:13;;17092:32;:52;;;;-1:-1:-1;;;;;;17128:16:0;;;;17092:52;:77;;;;-1:-1:-1;;;;;;17148:21:0;;17162:6;17148:21;;17092:77;:107;;;;-1:-1:-1;;;;;;17174:25:0;;;;;;:19;:25;;;;;;;;17173:26;17092:107;:135;;;;-1:-1:-1;;;;;;17204:23:0;;;;;;:19;:23;;;;;;;;17203:24;17092:135;17088:947;;;-1:-1:-1;;;;;17281:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;17317:35:0;;;;;;:31;:35;;;;;;;;17316:36;17281:71;17277:743;;;17399:12;;17389:6;:22;;17381:75;;;;-1:-1:-1;;;17381:75:0;;16795:2:1;17381:75:0;;;16777:21:1;16834:2;16814:18;;;16807:30;16873:34;16853:18;;;16846:62;-1:-1:-1;;;16924:18:1;;;16917:38;16972:19;;17381:75:0;16593:404:1;17381:75:0;17517:15;;-1:-1:-1;;;;;4484:18:0;;4457:7;4484:18;;;;;;;;;;;17491:22;;:6;:22;:::i;:::-;:41;;17483:78;;;;-1:-1:-1;;;17483:78:0;;17204:2:1;17483:78:0;;;17186:21:1;17243:2;17223:18;;;17216:30;-1:-1:-1;;;17262:18:1;;;17255:54;17326:18;;17483:78:0;17002:348:1;17483:78:0;17277:743;;;-1:-1:-1;;;;;17637:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;17671:37:0;;;;;;:31;:37;;;;;;;;17670:38;17637:71;17633:387;;;17755:13;;17745:6;:23;;17737:78;;;;-1:-1:-1;;;17737:78:0;;17557:2:1;17737:78:0;;;17539:21:1;17596:2;17576:18;;;17569:30;17635:34;17615:18;;;17608:62;-1:-1:-1;;;17686:18:1;;;17679:40;17736:19;;17737:78:0;17355:406:1;17633:387:0;-1:-1:-1;;;;;17863:35:0;;;;;;:31;:35;;;;;;;;17858:162;;17956:15;;-1:-1:-1;;;;;4484:18:0;;4457:7;4484:18;;;;;;;;;;;17930:22;;:6;:22;:::i;:::-;:41;;17922:78;;;;-1:-1:-1;;;17922:78:0;;17204:2:1;17922:78:0;;;17186:21:1;17243:2;17223:18;;;17216:30;-1:-1:-1;;;17262:18:1;;;17255:54;17326:18;;17922:78:0;17002:348:1;17922:78:0;18107:4;18058:28;4484:18;;;;;;;;;;;18165;;18141:42;;;;;;;18199:22;;-1:-1:-1;18210:11:0;;;;;;;18199:22;:35;;;;-1:-1:-1;18226:8:0;;-1:-1:-1;;;18226:8:0;;;;18225:9;18199:35;:71;;;;-1:-1:-1;;;;;;18239:31:0;;;;;;:25;:31;;;;;;;;18238:32;18199:71;:101;;;;-1:-1:-1;;;;;;18275:25:0;;;;;;:19;:25;;;;;;;;18274:26;18199:101;:129;;;;-1:-1:-1;;;;;;18305:23:0;;;;;;:19;:23;;;;;;;;18304:24;18199:129;18196:236;;;18345:8;:15;;-1:-1:-1;;;;18345:15:0;-1:-1:-1;;;18345:15:0;;;18377:10;:8;:10::i;:::-;18404:8;:16;;-1:-1:-1;;;;18404:16:0;;;18196:236;-1:-1:-1;;;;;18562:25:0;;18444:12;18562:25;;;:19;:25;;;;;;18459:4;;18562:25;;;:52;;-1:-1:-1;;;;;;18591:23:0;;;;;;:19;:23;;;;;;;;18562:52;18559:99;;;-1:-1:-1;18641:5:0;18559:99;18670:12;18774:7;18771:1154;;;20080:18;;20065:12;:33;18836:60;;;;-1:-1:-1;;;;;;18865:31:0;;;;;;:25;:31;;;;;;;;18836:60;:94;;;;-1:-1:-1;;;;;;18901:29:0;;;;;;:25;:29;;;;;;;;18900:30;18836:94;:114;;;;;18949:1;18934:12;;:16;18836:114;18833:948;;;-1:-1:-1;;;;;18976:15:0;;;;;;:11;:15;;;;;;;;18972:171;;-1:-1:-1;;;;;19015:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;19015:22:0;19033:4;19015:22;;;;;;19060:10;:15;;19033:4;;19060:10;;:15;;19033:4;;19060:15;:::i;:::-;;;;-1:-1:-1;;19103:20:0;;-1:-1:-1;;;;;798:32:1;;780:51;;19103:20:0;;768:2:1;753:18;19103:20:0;;;;;;;18972:171;19184:3;19170:11;:6;19179:2;19170:11;:::i;:::-;:17;;;;:::i;:::-;19163:24;;19255:12;;19236:16;;19229:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;19206:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;18833:948:0;;-1:-1:-1;18833:948:0;;-1:-1:-1;;;;;19332:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;19381:1;19365:13;;:17;19332:50;19328:453;;;19434:3;19418:13;;19409:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;19402:35;;19506:13;;19486:17;;19479:4;:24;;;;:::i;19328:453::-;-1:-1:-1;;;;;19582:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;19632:1;19617:12;;:16;19582:51;19579:202;;;19682:3;19667:12;;19658:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;19651:34;;19753:12;;19734:16;;19727:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;19704:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;19579:202:0;19800:8;;19797:89;;19828:42;19844:4;19858;19865;19828:15;:42::i;:::-;19899:14;19909:4;19899:14;;:::i;:::-;;;18771:1154;19937:33;19953:4;19959:2;19963:6;19937:15;:33::i;:::-;16471:3507;;;;16392:3586;;;:::o;21212:547::-;21295:4;21251:23;4484:18;;;;;;;;;;;21340:19;;21376:20;;;:46;;-1:-1:-1;21400:22:0;;21376:46;21373:60;;;21425:7;;21212:547::o;21373:60::-;21466:18;;:23;;21487:2;21466:23;:::i;:::-;21448:15;:41;21445:113;;;21523:18;;:23;;21544:2;21523:23;:::i;:::-;21505:41;;21445:113;21570:12;21593:33;21610:15;21593:16;:33::i;:::-;21659:1;21637:19;:23;;;21694:17;;21686:65;;-1:-1:-1;;;;;21694:17:0;;;;21725:21;;21686:65;;21659:1;21686:65;21725:21;21694:17;21686:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21212:547:0:o;15954:240::-;-1:-1:-1;;;;;16037:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;16037:39:0;;;;;;;16089;16037:31;:39;16089:26;:39::i;6181:614::-;-1:-1:-1;;;;;6321:20:0;;6313:70;;;;-1:-1:-1;;;6313:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6402:23:0;;6394:71;;;;-1:-1:-1;;;6394:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6502:17:0;;6478:21;6502:17;;;;;;;;;;;6538:23;;;;6530:74;;;;-1:-1:-1;;;6530:74:0;;18098:2:1;6530:74:0;;;18080:21:1;18137:2;18117:18;;;18110:30;18176:34;18156:18;;;18149:62;-1:-1:-1;;;18227:18:1;;;18220:36;18273:19;;6530:74:0;17896:402:1;6530:74:0;-1:-1:-1;;;;;6640:17:0;;;:9;:17;;;;;;;;;;;6660:22;;;6640:42;;6704:20;;;;;;;;:30;;6676:6;;6640:9;6704:30;;6676:6;;6704:30;:::i;:::-;;;;;;;;6769:9;-1:-1:-1;;;;;6752:35:0;6761:6;-1:-1:-1;;;;;6752:35:0;;6780:6;6752:35;;;;1888:25:1;;1876:2;1861:18;;1742:177;6752:35:0;;;;;;;;6302:493;6181:614;;;:::o;20114:573::-;20266:16;;;20280:1;20266:16;;;;;;;;20242:21;;20266:16;;;;;;;;;;-1:-1:-1;20266:16:0;20242:40;;20311:4;20293;20298:1;20293:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20293:23:0;;;:7;;;;;;;;;;:23;;;;20337:9;;:16;;;-1:-1:-1;;;20337:16:0;;;;:9;;;;;:14;;:16;;;;;20293:7;;20337:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20327:4;20332:1;20327:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20327:26:0;;;:7;;;;;;;;;:26;20398:9;;20366:56;;20383:4;;20398:9;20410:11;20366:8;:56::i;:::-;20461:9;;:218;;-1:-1:-1;;;20461:218:0;;-1:-1:-1;;;;;20461:9:0;;;;:60;;:218;;20536:11;;20461:9;;20606:4;;20633;;20653:15;;20461:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14540:207;-1:-1:-1;;;;;14628:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;14628:52:0;;;;;;;;;;14696:43;;19712:51:1;;;19779:18;;;19772:50;14696:43:0;;19685:18:1;14696:43:0;;;;;;;14540:207;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;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:456::-;2001:6;2009;2017;2070:2;2058:9;2049:7;2045:23;2041:32;2038:52;;;2086:1;2083;2076:12;2038:52;2125:9;2112:23;2144:31;2169:5;2144:31;:::i;:::-;2194:5;-1:-1:-1;2251:2:1;2236:18;;2223:32;2264:33;2223:32;2264:33;:::i;:::-;1924:456;;2316:7;;-1:-1:-1;;;2370:2:1;2355:18;;;;2342:32;;1924:456::o;2574:160::-;2639:20;;2695:13;;2688:21;2678:32;;2668:60;;2724:1;2721;2714:12;2668:60;2574:160;;;:::o;2739:689::-;2831:6;2839;2847;2900:2;2888:9;2879:7;2875:23;2871:32;2868:52;;;2916:1;2913;2906:12;2868:52;2956:9;2943:23;2985:18;3026:2;3018:6;3015:14;3012:34;;;3042:1;3039;3032:12;3012:34;3080:6;3069:9;3065:22;3055:32;;3125:7;3118:4;3114:2;3110:13;3106:27;3096:55;;3147:1;3144;3137:12;3096:55;3187:2;3174:16;3213:2;3205:6;3202:14;3199:34;;;3229:1;3226;3219:12;3199:34;3284:7;3277:4;3267:6;3264:1;3260:14;3256:2;3252:23;3248:34;3245:47;3242:67;;;3305:1;3302;3295:12;3242:67;3336:4;3328:13;;;;-1:-1:-1;3360:6:1;-1:-1:-1;3385:37:1;;3401:20;;;-1:-1:-1;3385:37:1;:::i;:::-;3375:47;;2739:689;;;;;:::o;3641:315::-;3706:6;3714;3767:2;3755:9;3746:7;3742:23;3738:32;3735:52;;;3783:1;3780;3773:12;3735:52;3822:9;3809:23;3841:31;3866:5;3841:31;:::i;:::-;3891:5;-1:-1:-1;3915:35:1;3946:2;3931:18;;3915:35;:::i;:::-;3905:45;;3641:315;;;;;:::o;3961:180::-;4020:6;4073:2;4061:9;4052:7;4048:23;4044:32;4041:52;;;4089:1;4086;4079:12;4041:52;-1:-1:-1;4112:23:1;;3961:180;-1:-1:-1;3961:180:1:o;4146:127::-;4207:10;4202:3;4198:20;4195:1;4188:31;4238:4;4235:1;4228:15;4262:4;4259:1;4252:15;4278:275;4349:2;4343:9;4414:2;4395:13;;-1:-1:-1;;4391:27:1;4379:40;;4449:18;4434:34;;4470:22;;;4431:62;4428:88;;;4496:18;;:::i;:::-;4532:2;4525:22;4278:275;;-1:-1:-1;4278:275:1:o;4558:183::-;4618:4;4651:18;4643:6;4640:30;4637:56;;;4673:18;;:::i;:::-;-1:-1:-1;4718:1:1;4714:14;4730:4;4710:25;;4558:183::o;4746:662::-;4800:5;4853:3;4846:4;4838:6;4834:17;4830:27;4820:55;;4871:1;4868;4861:12;4820:55;4907:6;4894:20;4933:4;4957:60;4973:43;5013:2;4973:43;:::i;:::-;4957:60;:::i;:::-;5051:15;;;5137:1;5133:10;;;;5121:23;;5117:32;;;5082:12;;;;5161:15;;;5158:35;;;5189:1;5186;5179:12;5158:35;5225:2;5217:6;5213:15;5237:142;5253:6;5248:3;5245:15;5237:142;;;5319:17;;5307:30;;5357:12;;;;5270;;5237:142;;;-1:-1:-1;5397:5:1;4746:662;-1:-1:-1;;;;;;4746:662:1:o;5413:1215::-;5531:6;5539;5592:2;5580:9;5571:7;5567:23;5563:32;5560:52;;;5608:1;5605;5598:12;5560:52;5648:9;5635:23;5677:18;5718:2;5710:6;5707:14;5704:34;;;5734:1;5731;5724:12;5704:34;5772:6;5761:9;5757:22;5747:32;;5817:7;5810:4;5806:2;5802:13;5798:27;5788:55;;5839:1;5836;5829:12;5788:55;5875:2;5862:16;5897:4;5921:60;5937:43;5977:2;5937:43;:::i;5921:60::-;6015:15;;;6097:1;6093:10;;;;6085:19;;6081:28;;;6046:12;;;;6121:19;;;6118:39;;;6153:1;6150;6143:12;6118:39;6177:11;;;;6197:217;6213:6;6208:3;6205:15;6197:217;;;6293:3;6280:17;6310:31;6335:5;6310:31;:::i;:::-;6354:18;;6230:12;;;;6392;;;;6197:217;;;6433:5;-1:-1:-1;;6476:18:1;;6463:32;;-1:-1:-1;;6507:16:1;;;6504:36;;;6536:1;6533;6526:12;6504:36;;6559:63;6614:7;6603:8;6592:9;6588:24;6559:63;:::i;:::-;6549:73;;;5413:1215;;;;;:::o;6633:388::-;6701:6;6709;6762:2;6750:9;6741:7;6737:23;6733:32;6730:52;;;6778:1;6775;6768:12;6730:52;6817:9;6804:23;6836:31;6861:5;6836:31;:::i;:::-;6886:5;-1:-1:-1;6943:2:1;6928:18;;6915:32;6956:33;6915:32;6956:33;:::i;:::-;7008:7;6998:17;;;6633:388;;;;;:::o;7026:380::-;7105:1;7101:12;;;;7148;;;7169:61;;7223:4;7215:6;7211:17;7201:27;;7169:61;7276:2;7268:6;7265:14;7245:18;7242:38;7239:161;;7322:10;7317:3;7313:20;7310:1;7303:31;7357:4;7354:1;7347:15;7385:4;7382:1;7375:15;7239:161;;7026:380;;;:::o;7820:356::-;8022:2;8004:21;;;8041:18;;;8034:30;8100:34;8095:2;8080:18;;8073:62;8167:2;8152:18;;7820:356::o;8181:127::-;8242:10;8237:3;8233:20;8230:1;8223:31;8273:4;8270:1;8263:15;8297:4;8294:1;8287:15;8313:127;8374:10;8369:3;8365:20;8362:1;8355:31;8405:4;8402:1;8395:15;8429:4;8426:1;8419:15;8445:135;8484:3;8505:17;;;8502:43;;8525:18;;:::i;:::-;-1:-1:-1;8572:1:1;8561:13;;8445:135::o;8585:128::-;8625:3;8656:1;8652:6;8649:1;8646:13;8643:39;;;8662:18;;:::i;:::-;-1:-1:-1;8698:9:1;;8585:128::o;11932:168::-;11972:7;12038:1;12034;12030:6;12026:14;12023:1;12020:21;12015:1;12008:9;12001:17;11997:45;11994:71;;;12045:18;;:::i;:::-;-1:-1:-1;12085:9:1;;11932:168::o;12105:217::-;12145:1;12171;12161:132;;12215:10;12210:3;12206:20;12203:1;12196:31;12250:4;12247:1;12240:15;12278:4;12275:1;12268:15;12161:132;-1:-1:-1;12307:9:1;;12105:217::o;14595:401::-;14797:2;14779:21;;;14836:2;14816:18;;;14809:30;14875:34;14870:2;14855:18;;14848:62;-1:-1:-1;;;14941:2:1;14926:18;;14919:35;14986:3;14971:19;;14595:401::o;15001:399::-;15203:2;15185:21;;;15242:2;15222:18;;;15215:30;15281:34;15276:2;15261:18;;15254:62;-1:-1:-1;;;15347:2:1;15332:18;;15325:33;15390:3;15375:19;;15001:399::o;17766:125::-;17806:4;17834:1;17831;17828:8;17825:34;;;17839:18;;:::i;:::-;-1:-1:-1;17876:9:1;;17766:125::o;18303:251::-;18373:6;18426:2;18414:9;18405:7;18401:23;18397:32;18394:52;;;18442:1;18439;18432:12;18394:52;18474:9;18468:16;18493:31;18518:5;18493:31;:::i;18559:980::-;18821:4;18869:3;18858:9;18854:19;18900:6;18889:9;18882:25;18926:2;18964:6;18959:2;18948:9;18944:18;18937:34;19007:3;19002:2;18991:9;18987:18;18980:31;19031:6;19066;19060:13;19097:6;19089;19082:22;19135:3;19124:9;19120:19;19113:26;;19174:2;19166:6;19162:15;19148:29;;19195:1;19205:195;19219:6;19216:1;19213:13;19205:195;;;19284:13;;-1:-1:-1;;;;;19280:39:1;19268:52;;19375:15;;;;19340:12;;;;19316:1;19234:9;19205:195;;;-1:-1:-1;;;;;;;19456:32:1;;;;19451:2;19436:18;;19429:60;-1:-1:-1;;;19520:3:1;19505:19;19498:35;19417:3;18559:980;-1:-1:-1;;;18559:980:1:o

Swarm Source

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