ETH Price: $3,453.83 (+1.83%)
Gas: 4 Gwei

Token

YASHADAO (YASHA)
 

Overview

Max Total Supply

100,000,000,000 YASHA

Holders

1,934 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
33,412,248.421857442054876705 YASHA

Value
$0.00
0xa1a08453352eaec251a5b15e9f9fb8b3cb327f4b
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:
YASHA

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-13
*/

// SPDX-License-Identifier: MIT                                                                               
                                                    
pragma solidity 0.8.11;

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 _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 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 YASHA is ERC20, Ownable {

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public operationsAddress;

    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;

    uint256 public lpWithdrawRequestTimestamp;
    uint256 public lpWithdrawRequestDuration = 3 days;
    bool public lpWithdrawRequestPending;
    uint256 public lpPercToWithDraw;
    
    /******************/

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

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

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedOperationsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event RequestedLPWithdraw();
    
    event WithdrewLPForMigration();

    event EnabledTrading();

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("YASHADAO", "YASHA") {
        
        address newOwner = msg.sender; // can leave alone if owner is deployer.
        
        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 totalSupply = 100 * 1e9 * 1e18;
        
        swapTokensAtAmount = totalSupply * 25 / 100000; // 0.025% swap amount

        buyOperationsFee = 7;
        buyLiquidityFee = 3;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;

        sellOperationsFee = 7;
        sellLiquidityFee = 3;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;

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

        operationsAddress = address(newOwner);
        
        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        emit EnabledTrading();
    }
       
    // 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 airdropToWallets(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "arrays must be the same length");
        require(wallets.length < 200, "Can only airdrop 200 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]*1e18;
            super._transfer(msg.sender, wallet, amount);
        }
    }
    


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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;
        require(buyTotalFees <= 15, "Must keep fees at 15% or less");
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;
        require(sellTotalFees <= 20, "Must keep fees at 20% or less");
    }

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

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

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
        
        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }
        
        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){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
        	
        	amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.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 = tokensForLiquidity + tokensForOperations;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

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

        bool success;
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        
        swapTokensForEth(contractBalance - liquidityTokens); 
        
        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

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

        ethForLiquidity -= ethForOperations;
            
        tokensForLiquidity = 0;
        tokensForOperations = 0;
        
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

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

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        require(_token != uniswapV2Pair, "Cannot withdraw LP tokens this way.  Use LP Withdraw.");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // 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 setOperationsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
        emit UpdatedOperationsAddress(_operationsAddress);
    }

    function requestToWithdrawLP(uint256 percToWithdraw) external onlyOwner {
        require(!lpWithdrawRequestPending, "Cannot request again until first request is over.");
        require(percToWithdraw <= 100 && percToWithdraw > 0, "Need to set between 1-100%");
        lpWithdrawRequestTimestamp = block.timestamp;
        lpWithdrawRequestPending = true;
        lpPercToWithDraw = percToWithdraw;
        emit RequestedLPWithdraw();
    }

    function nextAvailableLpWithdrawDate() public view returns (uint256){
        if(lpWithdrawRequestPending){
            return lpWithdrawRequestTimestamp + lpWithdrawRequestDuration;
        }
        else {
            return 0;  // 0 means no open requests
        }
    }

    function withdrawRequestedLP() external onlyOwner {
        require(block.timestamp >= nextAvailableLpWithdrawDate() && nextAvailableLpWithdrawDate() > 0, "Must request and wait.");
        lpWithdrawRequestTimestamp = 0;
        lpWithdrawRequestPending = false;

        uint256 amtToWithdraw = IERC20(address(uniswapV2Pair)).balanceOf(address(this)) * lpPercToWithDraw / 100;
        
        lpPercToWithDraw = 0;

        IERC20(uniswapV2Pair).transfer(msg.sender, amtToWithdraw);
    }
}

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":[],"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RequestedLPWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrewLPForMigration","type":"event"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPercToWithDraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWithdrawRequestDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWithdrawRequestPending","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWithdrawRequestTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextAvailableLpWithdrawDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percToWithdraw","type":"uint256"}],"name":"requestToWithdrawLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","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":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawRequestedLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526007805461ffff60a01b191690556203f4806011553480156200002657600080fd5b506040805180820182526008815267594153484144414f60c01b602080830191825283518085019094526005845264594153484160d81b908401528151919291620000749160039162000612565b5080516200008a90600490602084019062000612565b50505060006200009f6200032a60201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003221833981519152908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000137573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015d9190620006b8565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d19190620006b8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200021f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002459190620006b8565b6001600160a01b031660a0819052620002609060016200032e565b6c01431e0fae6d7217caa0000000620186a06200027f82601962000700565b6200028b919062000722565b600655600760098190556003600a819055620002a79162000745565b6008556007600c8190556003600d819055620002c39162000745565b600b55620002d383600162000382565b620002e030600162000382565b620002ef61dead600162000382565b600780546001600160a01b0319166001600160a01b03851617905562000316838262000430565b620003218362000515565b5050506200079d565b3390565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620003d15760405162461bcd60e51b815260206004820181905260248201526000805160206200320183398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620004885760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620003c8565b80600260008282546200049c919062000745565b90915550506001600160a01b03821660009081526020819052604081208054839290620004cb90849062000745565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620005605760405162461bcd60e51b81526020600482018190526024820152600080516020620032018339815191526044820152606401620003c8565b6001600160a01b038116620005c75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620003c8565b6005546040516001600160a01b038084169216906000805160206200322183398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b828054620006209062000760565b90600052602060002090601f0160209004810192826200064457600085556200068f565b82601f106200065f57805160ff19168380011785556200068f565b828001600101855582156200068f579182015b828111156200068f57825182559160200191906001019062000672565b506200069d929150620006a1565b5090565b5b808211156200069d5760008155600101620006a2565b600060208284031215620006cb57600080fd5b81516001600160a01b0381168114620006e357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200071d576200071d620006ea565b500290565b6000826200074057634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200075b576200075b620006ea565b500190565b600181811c908216806200077557607f821691505b602082108114156200079757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a0516129ff620008026000396000818161044f01528181610e8d01528181610f380152818161108b015261135601526000818161033c01528181612198015281816122510152818161228d01528181612307015261236401526129ff6000f3fe6080604052600436106102815760003560e01c80638366e79a1161014f578063d257b34f116100c1578063f11a24d31161007a578063f11a24d3146107a0578063f2fde38b146107b6578063f5648a4f146107d6578063f6374342146107eb578063fb002c9714610801578063fd361d0e1461081757600080fd5b8063d257b34f146106d8578063d85ba063146106f8578063dd62ed3e1461070e578063e2f4560514610754578063ea4cfe121461076a578063ee44b44e1461078a57600080fd5b8063a457c2d711610113578063a457c2d714610607578063a9059cbb14610627578063b62496f514610647578063bbc0c74214610677578063befd2fac14610698578063c0246668146106b857600080fd5b80638366e79a1461057f5780638a8c523c1461059f5780638da5cb5b146105b457806395d89b41146105d25780639a7a23d6146105e757600080fd5b8063499b8394116101f35780636ddd1713116101ac5780636ddd1713146104d357806370a08231146104f4578063712c29851461052a578063715018a61461053f578063763cef4914610554578063783102eb1461056957600080fd5b8063499b83941461041d57806349bd5a5e1461043d5780634f77f6c0146104715780635a139dd41461048757806366ca9b831461049d5780636a486a8e146104bd57600080fd5b806318160ddd1161024557806318160ddd146103765780631a8145bb1461038b5780632307b441146103a157806323b872dd146103c1578063313ce567146103e157806339509351146103fd57600080fd5b806302dbd8f81461028d578063058054c9146102af57806306fdde03146102d8578063095ea7b3146102fa5780631694505e1461032a57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a83660046123e2565b610831565b005b3480156102bb57600080fd5b506102c560105481565b6040519081526020015b60405180910390f35b3480156102e457600080fd5b506102ed6108d1565b6040516102cf9190612404565b34801561030657600080fd5b5061031a610315366004612471565b610963565b60405190151581526020016102cf565b34801561033657600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102cf565b34801561038257600080fd5b506002546102c5565b34801561039757600080fd5b506102c5600f5481565b3480156103ad57600080fd5b506102ad6103bc366004612573565b610979565b3480156103cd57600080fd5b5061031a6103dc366004612635565b610ae4565b3480156103ed57600080fd5b50604051601281526020016102cf565b34801561040957600080fd5b5061031a610418366004612471565b610b8e565b34801561042957600080fd5b506102ad610438366004612676565b610bca565b34801561044957600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561047d57600080fd5b506102c5600c5481565b34801561049357600080fd5b506102c560095481565b3480156104a957600080fd5b506102ad6104b83660046123e2565b610ca3565b3480156104c957600080fd5b506102c5600b5481565b3480156104df57600080fd5b5060075461031a90600160a81b900460ff1681565b34801561050057600080fd5b506102c561050f366004612676565b6001600160a01b031660009081526020819052604090205490565b34801561053657600080fd5b506102c5610d36565b34801561054b57600080fd5b506102ad610d5f565b34801561056057600080fd5b506102ad610dd3565b34801561057557600080fd5b506102c560135481565b34801561058b57600080fd5b5061031a61059a36600461269a565b610fad565b3480156105ab57600080fd5b506102ad611257565b3480156105c057600080fd5b506005546001600160a01b031661035e565b3480156105de57600080fd5b506102ed61131b565b3480156105f357600080fd5b506102ad6106023660046126e1565b61132a565b34801561061357600080fd5b5061031a610622366004612471565b611406565b34801561063357600080fd5b5061031a610642366004612471565b61149f565b34801561065357600080fd5b5061031a610662366004612676565b60156020526000908152604090205460ff1681565b34801561068357600080fd5b5060075461031a90600160a01b900460ff1681565b3480156106a457600080fd5b506102ad6106b336600461270f565b6114ac565b3480156106c457600080fd5b506102ad6106d33660046126e1565b6115e2565b3480156106e457600080fd5b506102ad6106f336600461270f565b61166b565b34801561070457600080fd5b506102c560085481565b34801561071a57600080fd5b506102c561072936600461269a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561076057600080fd5b506102c560065481565b34801561077657600080fd5b5060075461035e906001600160a01b031681565b34801561079657600080fd5b506102c560115481565b3480156107ac57600080fd5b506102c5600a5481565b3480156107c257600080fd5b506102ad6107d1366004612676565b6117b6565b3480156107e257600080fd5b506102ad6118a1565b3480156107f757600080fd5b506102c5600d5481565b34801561080d57600080fd5b506102c5600e5481565b34801561082357600080fd5b5060125461031a9060ff1681565b6005546001600160a01b031633146108645760405162461bcd60e51b815260040161085b90612728565b60405180910390fd5b600c829055600d8190556108788183612773565b600b819055601410156108cd5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c657373000000604482015260640161085b565b5050565b6060600380546108e09061278b565b80601f016020809104026020016040519081016040528092919081815260200182805461090c9061278b565b80156109595780601f1061092e57610100808354040283529160200191610959565b820191906000526020600020905b81548152906001019060200180831161093c57829003601f168201915b5050505050905090565b6000610970338484611918565b50600192915050565b6005546001600160a01b031633146109a35760405162461bcd60e51b815260040161085b90612728565b80518251146109f45760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161085b565b60c8825110610a645760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b606482015260840161085b565b60005b8251811015610adf576000838281518110610a8457610a846127c6565b602002602001015190506000838381518110610aa257610aa26127c6565b6020026020010151670de0b6b3a7640000610abd91906127dc565b9050610aca338383611a3c565b50508080610ad7906127fb565b915050610a67565b505050565b6000610af1848484611b91565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b765760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161085b565b610b838533858403611918565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610970918590610bc5908690612773565b611918565b6005546001600160a01b03163314610bf45760405162461bcd60e51b815260040161085b90612728565b6001600160a01b038116610c595760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b606482015260840161085b565b600780546001600160a01b0319166001600160a01b0383169081179091556040517f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298290600090a250565b6005546001600160a01b03163314610ccd5760405162461bcd60e51b815260040161085b90612728565b6009829055600a819055610ce18183612773565b6008819055600f10156108cd5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c657373000000604482015260640161085b565b60125460009060ff1615610d5957601154601054610d549190612773565b905090565b50600090565b6005546001600160a01b03163314610d895760405162461bcd60e51b815260040161085b90612728565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610dfd5760405162461bcd60e51b815260040161085b90612728565b610e05610d36565b4210158015610e1b57506000610e19610d36565b115b610e605760405162461bcd60e51b815260206004820152601660248201527526bab9ba103932b8bab2b9ba1030b732103bb0b4ba1760511b604482015260640161085b565b600060108190556012805460ff191690556013546040516370a0823160e01b8152306004820152606491907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f009190612816565b610f0a91906127dc565b610f14919061282f565b600060135560405163a9059cbb60e01b8152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd9190612851565b6005546000906001600160a01b03163314610fda5760405162461bcd60e51b815260040161085b90612728565b6001600160a01b0383166110305760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000604482015260640161085b565b6001600160a01b0383163014156110895760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e7300000000604482015260640161085b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614156111295760405162461bcd60e51b815260206004820152603560248201527f43616e6e6f74207769746864726177204c5020746f6b656e732074686973207760448201527430bc9710102ab9b2902628102bb4ba34323930bb9760591b606482015260840161085b565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190612816565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156111e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120b9190612851565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146112815760405162461bcd60e51b815260040161085b90612728565b600754600160a01b900460ff16156112db5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e67000000000000000000604482015260640161085b565b6007805461ffff60a01b191661010160a01b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b6060600480546108e09061278b565b6005546001600160a01b031633146113545760405162461bcd60e51b815260040161085b90612728565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156113fc5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161085b565b6108cd8282611f86565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114885760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161085b565b6114953385858403611918565b5060019392505050565b6000610970338484611b91565b6005546001600160a01b031633146114d65760405162461bcd60e51b815260040161085b90612728565b60125460ff16156115435760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f74207265717565737420616761696e20756e74696c206669727374604482015270103932b8bab2b9ba1034b99037bb32b91760791b606482015260840161085b565b606481111580156115545750600081115b6115a05760405162461bcd60e51b815260206004820152601a60248201527f4e65656420746f20736574206265747765656e20312d31303025000000000000604482015260640161085b565b426010556012805460ff1916600117905560138190556040517fd99a77b2f3951cd076e75814e44db497e6abc203dd251329da0b62c288f9f48b90600090a150565b6005546001600160a01b0316331461160c5760405162461bcd60e51b815260040161085b90612728565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116955760405162461bcd60e51b815260040161085b90612728565b620186a06116a260025490565b6116ad9060016127dc565b6116b7919061282f565b8110156117245760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161085b565b6103e861173060025490565b61173b9060016127dc565b611745919061282f565b8111156117b15760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b606482015260840161085b565b600655565b6005546001600160a01b031633146117e05760405162461bcd60e51b815260040161085b90612728565b6001600160a01b0381166118455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161085b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146118cb5760405162461bcd60e51b815260040161085b90612728565b604051600090339047908381818185875af1925050503d806000811461190d576040519150601f19603f3d011682016040523d82523d6000602084013e611912565b606091505b50505050565b6001600160a01b03831661197a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161085b565b6001600160a01b0382166119db5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161085b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a625760405162461bcd60e51b815260040161085b9061286e565b6001600160a01b038216611a885760405162461bcd60e51b815260040161085b906128b3565b6001600160a01b03831660009081526020819052604090205481811015611b005760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161085b565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611b37908490612773565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b8391815260200190565b60405180910390a350505050565b6001600160a01b038316611bb75760405162461bcd60e51b815260040161085b9061286e565b6001600160a01b038216611bdd5760405162461bcd60e51b815260040161085b906128b3565b60008111611c2d5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161085b565b600754600160a01b900460ff16611cc2576001600160a01b03831660009081526014602052604090205460ff1680611c7d57506001600160a01b03821660009081526014602052604090205460ff165b611cc25760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161085b565b3060009081526020819052604090205460065481108015908190611cef5750600754600160a81b900460ff165b8015611d055750600554600160a01b900460ff16155b8015611d2a57506001600160a01b03851660009081526015602052604090205460ff16155b8015611d4f57506001600160a01b03851660009081526014602052604090205460ff16155b8015611d7457506001600160a01b03841660009081526014602052604090205460ff16155b15611da2576005805460ff60a01b1916600160a01b179055611d94611fda565b6005805460ff60a01b191690555b6001600160a01b03851660009081526014602052604090205460019060ff1680611de457506001600160a01b03851660009081526014602052604090205460ff165b15611ded575060005b60008115611f72576001600160a01b03861660009081526015602052604090205460ff168015611e1f57506000600b54115b15611ea7576064600b5486611e3491906127dc565b611e3e919061282f565b9050600b54600d5482611e5191906127dc565b611e5b919061282f565b600f6000828254611e6c9190612773565b9091555050600b54600c54611e8190836127dc565b611e8b919061282f565b600e6000828254611e9c9190612773565b90915550611f549050565b6001600160a01b03871660009081526015602052604090205460ff168015611ed157506000600854115b15611f5457606460085486611ee691906127dc565b611ef0919061282f565b9050600854600a5482611f0391906127dc565b611f0d919061282f565b600f6000828254611f1e9190612773565b9091555050600854600954611f3390836127dc565b611f3d919061282f565b600e6000828254611f4e9190612773565b90915550505b8015611f6557611f65873083611a3c565b611f6f81866128f6565b94505b611f7d878787611a3c565b50505050505050565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b3060009081526020819052604081205490506000600e54600f54611ffe9190612773565b905081158061200b575080155b15612014575050565b60065461202290600a6127dc565b82111561203a5760065461203790600a6127dc565b91505b600080600283600f548661204e91906127dc565b612058919061282f565b612062919061282f565b905061207661207182866128f6565b612141565b600f544790819060009061208c9060029061282f565b61209690876128f6565b600e546120a390856127dc565b6120ad919061282f565b90506120b981836128f6565b6000600f819055600e55915083158015906120d45750600082115b156120e3576120e38483612301565b6007546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612130576040519150601f19603f3d011682016040523d82523d6000602084013e612135565b606091505b50505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612176576121766127c6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612218919061290d565b8160018151811061222b5761222b6127c6565b60200260200101906001600160a01b031690816001600160a01b031681525050612276307f000000000000000000000000000000000000000000000000000000000000000084611918565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906122cb90859060009086903090429060040161292a565b600060405180830381600087803b1580156122e557600080fd5b505af11580156122f9573d6000803e3d6000fd5b505050505050565b61232c307f000000000000000000000000000000000000000000000000000000000000000084611918565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af11580156123b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123db919061299b565b5050505050565b600080604083850312156123f557600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561243157858101830151858201604001528201612415565b81811115612443576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461246e57600080fd5b50565b6000806040838503121561248457600080fd5b823561248f81612459565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124dc576124dc61249d565b604052919050565b600067ffffffffffffffff8211156124fe576124fe61249d565b5060051b60200190565b600082601f83011261251957600080fd5b8135602061252e612529836124e4565b6124b3565b82815260059290921b8401810191818101908684111561254d57600080fd5b8286015b848110156125685780358352918301918301612551565b509695505050505050565b6000806040838503121561258657600080fd5b823567ffffffffffffffff8082111561259e57600080fd5b818501915085601f8301126125b257600080fd5b813560206125c2612529836124e4565b82815260059290921b840181019181810190898411156125e157600080fd5b948201945b838610156126085785356125f981612459565b825294820194908201906125e6565b9650508601359250508082111561261e57600080fd5b5061262b85828601612508565b9150509250929050565b60008060006060848603121561264a57600080fd5b833561265581612459565b9250602084013561266581612459565b929592945050506040919091013590565b60006020828403121561268857600080fd5b813561269381612459565b9392505050565b600080604083850312156126ad57600080fd5b82356126b881612459565b915060208301356126c881612459565b809150509250929050565b801515811461246e57600080fd5b600080604083850312156126f457600080fd5b82356126ff81612459565b915060208301356126c8816126d3565b60006020828403121561272157600080fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156127865761278661275d565b500190565b600181811c9082168061279f57607f821691505b602082108114156127c057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156127f6576127f661275d565b500290565b600060001982141561280f5761280f61275d565b5060010190565b60006020828403121561282857600080fd5b5051919050565b60008261284c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561286357600080fd5b8151612693816126d3565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156129085761290861275d565b500390565b60006020828403121561291f57600080fd5b815161269381612459565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561297a5784516001600160a01b031683529383019391830191600101612955565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156129b057600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b42c0b656f43a9bcb348fe1c900374739aef81e691b1a01d4b141d77850212e264736f6c634300080b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102815760003560e01c80638366e79a1161014f578063d257b34f116100c1578063f11a24d31161007a578063f11a24d3146107a0578063f2fde38b146107b6578063f5648a4f146107d6578063f6374342146107eb578063fb002c9714610801578063fd361d0e1461081757600080fd5b8063d257b34f146106d8578063d85ba063146106f8578063dd62ed3e1461070e578063e2f4560514610754578063ea4cfe121461076a578063ee44b44e1461078a57600080fd5b8063a457c2d711610113578063a457c2d714610607578063a9059cbb14610627578063b62496f514610647578063bbc0c74214610677578063befd2fac14610698578063c0246668146106b857600080fd5b80638366e79a1461057f5780638a8c523c1461059f5780638da5cb5b146105b457806395d89b41146105d25780639a7a23d6146105e757600080fd5b8063499b8394116101f35780636ddd1713116101ac5780636ddd1713146104d357806370a08231146104f4578063712c29851461052a578063715018a61461053f578063763cef4914610554578063783102eb1461056957600080fd5b8063499b83941461041d57806349bd5a5e1461043d5780634f77f6c0146104715780635a139dd41461048757806366ca9b831461049d5780636a486a8e146104bd57600080fd5b806318160ddd1161024557806318160ddd146103765780631a8145bb1461038b5780632307b441146103a157806323b872dd146103c1578063313ce567146103e157806339509351146103fd57600080fd5b806302dbd8f81461028d578063058054c9146102af57806306fdde03146102d8578063095ea7b3146102fa5780631694505e1461032a57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a83660046123e2565b610831565b005b3480156102bb57600080fd5b506102c560105481565b6040519081526020015b60405180910390f35b3480156102e457600080fd5b506102ed6108d1565b6040516102cf9190612404565b34801561030657600080fd5b5061031a610315366004612471565b610963565b60405190151581526020016102cf565b34801561033657600080fd5b5061035e7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102cf565b34801561038257600080fd5b506002546102c5565b34801561039757600080fd5b506102c5600f5481565b3480156103ad57600080fd5b506102ad6103bc366004612573565b610979565b3480156103cd57600080fd5b5061031a6103dc366004612635565b610ae4565b3480156103ed57600080fd5b50604051601281526020016102cf565b34801561040957600080fd5b5061031a610418366004612471565b610b8e565b34801561042957600080fd5b506102ad610438366004612676565b610bca565b34801561044957600080fd5b5061035e7f0000000000000000000000004d7be7624f1cedb843848bc3fb8a1057daf6e84381565b34801561047d57600080fd5b506102c5600c5481565b34801561049357600080fd5b506102c560095481565b3480156104a957600080fd5b506102ad6104b83660046123e2565b610ca3565b3480156104c957600080fd5b506102c5600b5481565b3480156104df57600080fd5b5060075461031a90600160a81b900460ff1681565b34801561050057600080fd5b506102c561050f366004612676565b6001600160a01b031660009081526020819052604090205490565b34801561053657600080fd5b506102c5610d36565b34801561054b57600080fd5b506102ad610d5f565b34801561056057600080fd5b506102ad610dd3565b34801561057557600080fd5b506102c560135481565b34801561058b57600080fd5b5061031a61059a36600461269a565b610fad565b3480156105ab57600080fd5b506102ad611257565b3480156105c057600080fd5b506005546001600160a01b031661035e565b3480156105de57600080fd5b506102ed61131b565b3480156105f357600080fd5b506102ad6106023660046126e1565b61132a565b34801561061357600080fd5b5061031a610622366004612471565b611406565b34801561063357600080fd5b5061031a610642366004612471565b61149f565b34801561065357600080fd5b5061031a610662366004612676565b60156020526000908152604090205460ff1681565b34801561068357600080fd5b5060075461031a90600160a01b900460ff1681565b3480156106a457600080fd5b506102ad6106b336600461270f565b6114ac565b3480156106c457600080fd5b506102ad6106d33660046126e1565b6115e2565b3480156106e457600080fd5b506102ad6106f336600461270f565b61166b565b34801561070457600080fd5b506102c560085481565b34801561071a57600080fd5b506102c561072936600461269a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561076057600080fd5b506102c560065481565b34801561077657600080fd5b5060075461035e906001600160a01b031681565b34801561079657600080fd5b506102c560115481565b3480156107ac57600080fd5b506102c5600a5481565b3480156107c257600080fd5b506102ad6107d1366004612676565b6117b6565b3480156107e257600080fd5b506102ad6118a1565b3480156107f757600080fd5b506102c5600d5481565b34801561080d57600080fd5b506102c5600e5481565b34801561082357600080fd5b5060125461031a9060ff1681565b6005546001600160a01b031633146108645760405162461bcd60e51b815260040161085b90612728565b60405180910390fd5b600c829055600d8190556108788183612773565b600b819055601410156108cd5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c657373000000604482015260640161085b565b5050565b6060600380546108e09061278b565b80601f016020809104026020016040519081016040528092919081815260200182805461090c9061278b565b80156109595780601f1061092e57610100808354040283529160200191610959565b820191906000526020600020905b81548152906001019060200180831161093c57829003601f168201915b5050505050905090565b6000610970338484611918565b50600192915050565b6005546001600160a01b031633146109a35760405162461bcd60e51b815260040161085b90612728565b80518251146109f45760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161085b565b60c8825110610a645760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b606482015260840161085b565b60005b8251811015610adf576000838281518110610a8457610a846127c6565b602002602001015190506000838381518110610aa257610aa26127c6565b6020026020010151670de0b6b3a7640000610abd91906127dc565b9050610aca338383611a3c565b50508080610ad7906127fb565b915050610a67565b505050565b6000610af1848484611b91565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b765760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161085b565b610b838533858403611918565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610970918590610bc5908690612773565b611918565b6005546001600160a01b03163314610bf45760405162461bcd60e51b815260040161085b90612728565b6001600160a01b038116610c595760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b606482015260840161085b565b600780546001600160a01b0319166001600160a01b0383169081179091556040517f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298290600090a250565b6005546001600160a01b03163314610ccd5760405162461bcd60e51b815260040161085b90612728565b6009829055600a819055610ce18183612773565b6008819055600f10156108cd5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c657373000000604482015260640161085b565b60125460009060ff1615610d5957601154601054610d549190612773565b905090565b50600090565b6005546001600160a01b03163314610d895760405162461bcd60e51b815260040161085b90612728565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610dfd5760405162461bcd60e51b815260040161085b90612728565b610e05610d36565b4210158015610e1b57506000610e19610d36565b115b610e605760405162461bcd60e51b815260206004820152601660248201527526bab9ba103932b8bab2b9ba1030b732103bb0b4ba1760511b604482015260640161085b565b600060108190556012805460ff191690556013546040516370a0823160e01b8152306004820152606491907f0000000000000000000000004d7be7624f1cedb843848bc3fb8a1057daf6e8436001600160a01b0316906370a0823190602401602060405180830381865afa158015610edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f009190612816565b610f0a91906127dc565b610f14919061282f565b600060135560405163a9059cbb60e01b8152336004820152602481018290529091507f0000000000000000000000004d7be7624f1cedb843848bc3fb8a1057daf6e8436001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd9190612851565b6005546000906001600160a01b03163314610fda5760405162461bcd60e51b815260040161085b90612728565b6001600160a01b0383166110305760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000604482015260640161085b565b6001600160a01b0383163014156110895760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e7300000000604482015260640161085b565b7f0000000000000000000000004d7be7624f1cedb843848bc3fb8a1057daf6e8436001600160a01b0316836001600160a01b031614156111295760405162461bcd60e51b815260206004820152603560248201527f43616e6e6f74207769746864726177204c5020746f6b656e732074686973207760448201527430bc9710102ab9b2902628102bb4ba34323930bb9760591b606482015260840161085b565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190612816565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156111e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120b9190612851565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146112815760405162461bcd60e51b815260040161085b90612728565b600754600160a01b900460ff16156112db5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e67000000000000000000604482015260640161085b565b6007805461ffff60a01b191661010160a01b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b6060600480546108e09061278b565b6005546001600160a01b031633146113545760405162461bcd60e51b815260040161085b90612728565b7f0000000000000000000000004d7be7624f1cedb843848bc3fb8a1057daf6e8436001600160a01b0316826001600160a01b031614156113fc5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161085b565b6108cd8282611f86565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114885760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161085b565b6114953385858403611918565b5060019392505050565b6000610970338484611b91565b6005546001600160a01b031633146114d65760405162461bcd60e51b815260040161085b90612728565b60125460ff16156115435760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f74207265717565737420616761696e20756e74696c206669727374604482015270103932b8bab2b9ba1034b99037bb32b91760791b606482015260840161085b565b606481111580156115545750600081115b6115a05760405162461bcd60e51b815260206004820152601a60248201527f4e65656420746f20736574206265747765656e20312d31303025000000000000604482015260640161085b565b426010556012805460ff1916600117905560138190556040517fd99a77b2f3951cd076e75814e44db497e6abc203dd251329da0b62c288f9f48b90600090a150565b6005546001600160a01b0316331461160c5760405162461bcd60e51b815260040161085b90612728565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116955760405162461bcd60e51b815260040161085b90612728565b620186a06116a260025490565b6116ad9060016127dc565b6116b7919061282f565b8110156117245760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161085b565b6103e861173060025490565b61173b9060016127dc565b611745919061282f565b8111156117b15760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b606482015260840161085b565b600655565b6005546001600160a01b031633146117e05760405162461bcd60e51b815260040161085b90612728565b6001600160a01b0381166118455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161085b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146118cb5760405162461bcd60e51b815260040161085b90612728565b604051600090339047908381818185875af1925050503d806000811461190d576040519150601f19603f3d011682016040523d82523d6000602084013e611912565b606091505b50505050565b6001600160a01b03831661197a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161085b565b6001600160a01b0382166119db5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161085b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a625760405162461bcd60e51b815260040161085b9061286e565b6001600160a01b038216611a885760405162461bcd60e51b815260040161085b906128b3565b6001600160a01b03831660009081526020819052604090205481811015611b005760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161085b565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611b37908490612773565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b8391815260200190565b60405180910390a350505050565b6001600160a01b038316611bb75760405162461bcd60e51b815260040161085b9061286e565b6001600160a01b038216611bdd5760405162461bcd60e51b815260040161085b906128b3565b60008111611c2d5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161085b565b600754600160a01b900460ff16611cc2576001600160a01b03831660009081526014602052604090205460ff1680611c7d57506001600160a01b03821660009081526014602052604090205460ff165b611cc25760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161085b565b3060009081526020819052604090205460065481108015908190611cef5750600754600160a81b900460ff165b8015611d055750600554600160a01b900460ff16155b8015611d2a57506001600160a01b03851660009081526015602052604090205460ff16155b8015611d4f57506001600160a01b03851660009081526014602052604090205460ff16155b8015611d7457506001600160a01b03841660009081526014602052604090205460ff16155b15611da2576005805460ff60a01b1916600160a01b179055611d94611fda565b6005805460ff60a01b191690555b6001600160a01b03851660009081526014602052604090205460019060ff1680611de457506001600160a01b03851660009081526014602052604090205460ff165b15611ded575060005b60008115611f72576001600160a01b03861660009081526015602052604090205460ff168015611e1f57506000600b54115b15611ea7576064600b5486611e3491906127dc565b611e3e919061282f565b9050600b54600d5482611e5191906127dc565b611e5b919061282f565b600f6000828254611e6c9190612773565b9091555050600b54600c54611e8190836127dc565b611e8b919061282f565b600e6000828254611e9c9190612773565b90915550611f549050565b6001600160a01b03871660009081526015602052604090205460ff168015611ed157506000600854115b15611f5457606460085486611ee691906127dc565b611ef0919061282f565b9050600854600a5482611f0391906127dc565b611f0d919061282f565b600f6000828254611f1e9190612773565b9091555050600854600954611f3390836127dc565b611f3d919061282f565b600e6000828254611f4e9190612773565b90915550505b8015611f6557611f65873083611a3c565b611f6f81866128f6565b94505b611f7d878787611a3c565b50505050505050565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b3060009081526020819052604081205490506000600e54600f54611ffe9190612773565b905081158061200b575080155b15612014575050565b60065461202290600a6127dc565b82111561203a5760065461203790600a6127dc565b91505b600080600283600f548661204e91906127dc565b612058919061282f565b612062919061282f565b905061207661207182866128f6565b612141565b600f544790819060009061208c9060029061282f565b61209690876128f6565b600e546120a390856127dc565b6120ad919061282f565b90506120b981836128f6565b6000600f819055600e55915083158015906120d45750600082115b156120e3576120e38483612301565b6007546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612130576040519150601f19603f3d011682016040523d82523d6000602084013e612135565b606091505b50505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612176576121766127c6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612218919061290d565b8160018151811061222b5761222b6127c6565b60200260200101906001600160a01b031690816001600160a01b031681525050612276307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611918565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906122cb90859060009086903090429060040161292a565b600060405180830381600087803b1580156122e557600080fd5b505af11580156122f9573d6000803e3d6000fd5b505050505050565b61232c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611918565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af11580156123b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123db919061299b565b5050505050565b600080604083850312156123f557600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561243157858101830151858201604001528201612415565b81811115612443576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461246e57600080fd5b50565b6000806040838503121561248457600080fd5b823561248f81612459565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124dc576124dc61249d565b604052919050565b600067ffffffffffffffff8211156124fe576124fe61249d565b5060051b60200190565b600082601f83011261251957600080fd5b8135602061252e612529836124e4565b6124b3565b82815260059290921b8401810191818101908684111561254d57600080fd5b8286015b848110156125685780358352918301918301612551565b509695505050505050565b6000806040838503121561258657600080fd5b823567ffffffffffffffff8082111561259e57600080fd5b818501915085601f8301126125b257600080fd5b813560206125c2612529836124e4565b82815260059290921b840181019181810190898411156125e157600080fd5b948201945b838610156126085785356125f981612459565b825294820194908201906125e6565b9650508601359250508082111561261e57600080fd5b5061262b85828601612508565b9150509250929050565b60008060006060848603121561264a57600080fd5b833561265581612459565b9250602084013561266581612459565b929592945050506040919091013590565b60006020828403121561268857600080fd5b813561269381612459565b9392505050565b600080604083850312156126ad57600080fd5b82356126b881612459565b915060208301356126c881612459565b809150509250929050565b801515811461246e57600080fd5b600080604083850312156126f457600080fd5b82356126ff81612459565b915060208301356126c8816126d3565b60006020828403121561272157600080fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156127865761278661275d565b500190565b600181811c9082168061279f57607f821691505b602082108114156127c057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156127f6576127f661275d565b500290565b600060001982141561280f5761280f61275d565b5060010190565b60006020828403121561282857600080fd5b5051919050565b60008261284c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561286357600080fd5b8151612693816126d3565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156129085761290861275d565b500390565b60006020828403121561291f57600080fd5b815161269381612459565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561297a5784516001600160a01b031683529383019391830191600101612955565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156129b057600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b42c0b656f43a9bcb348fe1c900374739aef81e691b1a01d4b141d77850212e264736f6c634300080b0033

Deployed Bytecode Sourcemap

9439:12425:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14546:321;;;;;;;;;;-1:-1:-1;14546:321:0;;;;;:::i;:::-;;:::i;:::-;;10077:41;;;;;;;;;;;;;;;;;;;413:25:1;;;401:2;386:18;10077:41:0;;;;;;;;4077:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4991:169::-;;;;;;;;;;-1:-1:-1;4991:169:0;;;;;:::i;:::-;;:::i;:::-;;;1672:14:1;;1665:22;1647:41;;1635:2;1620:18;4991:169:0;1507:187:1;9481:43:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1881:32:1;;;1863:51;;1851:2;1836:18;9481:43:0;1699:221:1;4398:108:0;;;;;;;;;;-1:-1:-1;4486:12:0;;4398:108;;10035:33;;;;;;;;;;;;;;;;13135:623;;;;;;;;;;-1:-1:-1;13135:623:0;;;;;:::i;:::-;;:::i;5168:492::-;;;;;;;;;;-1:-1:-1;5168:492:0;;;;;:::i;:::-;;:::i;4297:93::-;;;;;;;;;;-1:-1:-1;4297:93:0;;4380:2;5015:36:1;;5003:2;4988:18;4297:93:0;4873:184:1;5668:215:0;;;;;;;;;;-1:-1:-1;5668:215:0;;;;;:::i;:::-;;:::i;20309:297::-;;;;;;;;;;-1:-1:-1;20309:297:0;;;;;:::i;:::-;;:::i;9531:38::-;;;;;;;;;;;;;;;9915:32;;;;;;;;;;;;;;;;9803:31;;;;;;;;;;;;;;;;14224:314;;;;;;;;;;-1:-1:-1;14224:314:0;;;;;:::i;:::-;;:::i;9880:28::-;;;;;;;;;;;;;;;;9729:31;;;;;;;;;;-1:-1:-1;9729:31:0;;;;-1:-1:-1;;;9729:31:0;;;;;;4514:127;;;;;;;;;;-1:-1:-1;4514:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4615:18:0;4588:7;4615:18;;;;;;;;;;;;4514:127;21071:281;;;;;;;;;;;;;:::i;8158:150::-;;;;;;;;;;;;;:::i;21360:501::-;;;;;;;;;;;;;:::i;10224:31::-;;;;;;;;;;;;;;;;19515:556;;;;;;;;;;-1:-1:-1;19515:556:0;;;;;:::i;:::-;;:::i;12495:205::-;;;;;;;;;;;;;:::i;7944:79::-;;;;;;;;;;-1:-1:-1;8009:6:0;;-1:-1:-1;;;;;8009:6:0;7944:79;;4185:104;;;;;;;;;;;;;:::i;13774:246::-;;;;;;;;;;-1:-1:-1;13774:246:0;;;;;:::i;:::-;;:::i;5891:413::-;;;;;;;;;;-1:-1:-1;5891:413:0;;;;;:::i;:::-;;:::i;4649:175::-;;;;;;;;;;-1:-1:-1;4649:175:0;;;;;:::i;:::-;;:::i;10560:58::-;;;;;;;;;;-1:-1:-1;10560:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9689:33;;;;;;;;;;-1:-1:-1;9689:33:0;;;;-1:-1:-1;;;9689:33:0;;;;;;20614:449;;;;;;;;;;-1:-1:-1;20614:449:0;;;;;:::i;:::-;;:::i;14875:182::-;;;;;;;;;;-1:-1:-1;14875:182:0;;;;;:::i;:::-;;:::i;12777:346::-;;;;;;;;;;-1:-1:-1;12777:346:0;;;;;:::i;:::-;;:::i;9769:27::-;;;;;;;;;;;;;;;;4832:151;;;;;;;;;;-1:-1:-1;4832:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4948:18:0;;;4921:7;4948:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4832:151;9606:33;;;;;;;;;;;;;;;;9648:32;;;;;;;;;;-1:-1:-1;9648:32:0;;;;-1:-1:-1;;;;;9648:32:0;;;10125:49;;;;;;;;;;;;;;;;9841:30;;;;;;;;;;;;;;;;8316:244;;;;;;;;;;-1:-1:-1;8316:244:0;;;;;:::i;:::-;;:::i;20141:160::-;;;;;;;;;;;;;:::i;9954:31::-;;;;;;;;;;;;;;;;9994:34;;;;;;;;;;;;;;;;10181:36;;;;;;;;;;-1:-1:-1;10181:36:0;;;;;;;;14546:321;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;;;;;;;;;14647:17:::1;:34:::0;;;14692:16:::1;:32:::0;;;14751:36:::1;14711:13:::0;14667:14;14751:36:::1;:::i;:::-;14735:13;:52:::0;;;14823:2:::1;-1:-1:-1::0;14806:19:0::1;14798:61;;;::::0;-1:-1:-1;;;14798:61:0;;7438:2:1;14798:61:0::1;::::0;::::1;7420:21:1::0;7477:2;7457:18;;;7450:30;7516:31;7496:18;;;7489:59;7565:18;;14798:61:0::1;7236:353:1::0;14798:61:0::1;14546:321:::0;;:::o;4077:100::-;4131:13;4164:5;4157:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4077:100;:::o;4991:169::-;5074:4;5091:39;306:10;5114:7;5123:6;5091:8;:39::i;:::-;-1:-1:-1;5148:4:0;4991:169;;;;:::o;13135:623::-;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;13277:15:::1;:22;13259:7;:14;:40;13251:83;;;::::0;-1:-1:-1;;;13251:83:0;;8181:2:1;13251:83:0::1;::::0;::::1;8163:21:1::0;8220:2;8200:18;;;8193:30;8259:32;8239:18;;;8232:60;8309:18;;13251:83:0::1;7979:354:1::0;13251:83:0::1;13370:3;13353:7;:14;:20;13345:87;;;::::0;-1:-1:-1;;;13345:87:0;;8540:2:1;13345:87:0::1;::::0;::::1;8522:21:1::0;8579:2;8559:18;;;8552:30;8618:34;8598:18;;;8591:62;-1:-1:-1;;;8669:18:1;;;8662:52;8731:19;;13345:87:0::1;8338:418:1::0;13345:87:0::1;13545:9;13541:210;13564:7;:14;13560:1;:18;13541:210;;;13599:14;13616:7;13624:1;13616:10;;;;;;;;:::i;:::-;;;;;;;13599:27;;13641:14;13658:15;13674:1;13658:18;;;;;;;;:::i;:::-;;;;;;;13677:4;13658:23;;;;:::i;:::-;13641:40;;13696:43;13712:10;13724:6;13732;13696:15;:43::i;:::-;13584:167;;13580:3;;;;;:::i;:::-;;;;13541:210;;;;13135:623:::0;;:::o;5168:492::-;5308:4;5325:36;5335:6;5343:9;5354:6;5325:9;:36::i;:::-;-1:-1:-1;;;;;5401:19:0;;5374:24;5401:19;;;:11;:19;;;;;;;;306:10;5401:33;;;;;;;;5453:26;;;;5445:79;;;;-1:-1:-1;;;5445:79:0;;9408:2:1;5445:79:0;;;9390:21:1;9447:2;9427:18;;;9420:30;9486:34;9466:18;;;9459:62;-1:-1:-1;;;9537:18:1;;;9530:38;9585:19;;5445:79:0;9206:404:1;5445:79:0;5560:57;5569:6;306:10;5610:6;5591:16;:25;5560:8;:57::i;:::-;-1:-1:-1;5648:4:0;;5168:492;-1:-1:-1;;;;5168:492:0:o;5668:215::-;306:10;5756:4;5805:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5805:34:0;;;;;;;;;;5756:4;;5773:80;;5796:7;;5805:47;;5842:10;;5805:47;:::i;:::-;5773:8;:80::i;20309:297::-;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20405:32:0;::::1;20397:83;;;::::0;-1:-1:-1;;;20397:83:0;;9817:2:1;20397:83:0::1;::::0;::::1;9799:21:1::0;9856:2;9836:18;;;9829:30;9895:34;9875:18;;;9868:62;-1:-1:-1;;;9946:18:1;;;9939:36;9992:19;;20397:83:0::1;9615:402:1::0;20397:83:0::1;20491:17;:47:::0;;-1:-1:-1;;;;;;20491:47:0::1;-1:-1:-1::0;;;;;20491:47:0;::::1;::::0;;::::1;::::0;;;20554:44:::1;::::0;::::1;::::0;-1:-1:-1;;20554:44:0::1;20309:297:::0;:::o;14224:314::-;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;14324:16:::1;:33:::0;;;14368:15:::1;:31:::0;;;14425:34:::1;14386:13:::0;14343:14;14425:34:::1;:::i;:::-;14410:12;:49:::0;;;14494:2:::1;-1:-1:-1::0;14478:18:0::1;14470:60;;;::::0;-1:-1:-1;;;14470:60:0;;10224:2:1;14470:60:0::1;::::0;::::1;10206:21:1::0;10263:2;10243:18;;;10236:30;10302:31;10282:18;;;10275:59;10351:18;;14470:60:0::1;10022:353:1::0;21071:281:0;21153:24;;21131:7;;21153:24;;21150:195;;;21229:25;;21200:26;;:54;;;;:::i;:::-;21193:61;;21071:281;:::o;21150:195::-;-1:-1:-1;21303:1:0;;21071:281::o;8158:150::-;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;8251:6:::1;::::0;8230:40:::1;::::0;8267:1:::1;::::0;-1:-1:-1;;;;;8251:6:0::1;::::0;8230:40:::1;::::0;8267:1;;8230:40:::1;8281:6;:19:::0;;-1:-1:-1;;;;;;8281:19:0::1;::::0;;8158:150::o;21360:501::-;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;21448:29:::1;:27;:29::i;:::-;21429:15;:48;;:85;;;;;21513:1;21481:29;:27;:29::i;:::-;:33;21429:85;21421:120;;;::::0;-1:-1:-1;;;21421:120:0;;10582:2:1;21421:120:0::1;::::0;::::1;10564:21:1::0;10621:2;10601:18;;;10594:30;-1:-1:-1;;;10640:18:1;;;10633:52;10702:18;;21421:120:0::1;10380:346:1::0;21421:120:0::1;21581:1;21552:26;:30:::0;;;21593:24:::1;:32:::0;;-1:-1:-1;;21593:32:0::1;::::0;;21720:16:::1;::::0;21662:55:::1;::::0;-1:-1:-1;;;21662:55:0;;21711:4:::1;21662:55;::::0;::::1;1863:51:1::0;21739:3:0::1;::::0;21720:16;21677:13:::1;-1:-1:-1::0;;;;;21662:40:0::1;::::0;::::1;::::0;1836:18:1;;21662:55:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:74;;;;:::i;:::-;:80;;;;:::i;:::-;21782:1;21763:16;:20:::0;21796:57:::1;::::0;-1:-1:-1;;;21796:57:0;;21827:10:::1;21796:57;::::0;::::1;11316:51:1::0;11383:18;;;11376:34;;;21638:104:0;;-1:-1:-1;21803:13:0::1;-1:-1:-1::0;;;;;21796:30:0::1;::::0;::::1;::::0;11289:18:1;;21796:57:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19515:556::-:0;8071:6;;19602:10;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19633:20:0;::::1;19625:59;;;::::0;-1:-1:-1;;;19625:59:0;;11873:2:1;19625:59:0::1;::::0;::::1;11855:21:1::0;11912:2;11892:18;;;11885:30;11951:28;11931:18;;;11924:56;11997:18;;19625:59:0::1;11671:350:1::0;19625:59:0::1;-1:-1:-1::0;;;;;19703:23:0;::::1;19721:4;19703:23;;19695:64;;;::::0;-1:-1:-1;;;19695:64:0;;12228:2:1;19695:64:0::1;::::0;::::1;12210:21:1::0;12267:2;12247:18;;;12240:30;12306;12286:18;;;12279:58;12354:18;;19695:64:0::1;12026:352:1::0;19695:64:0::1;19788:13;-1:-1:-1::0;;;;;19778:23:0::1;:6;-1:-1:-1::0;;;;;19778:23:0::1;;;19770:89;;;::::0;-1:-1:-1;;;19770:89:0;;12585:2:1;19770:89:0::1;::::0;::::1;12567:21:1::0;12624:2;12604:18;;;12597:30;12663:34;12643:18;;;12636:62;-1:-1:-1;;;12714:18:1;;;12707:51;12775:19;;19770:89:0::1;12383:417:1::0;19770:89:0::1;19897:39;::::0;-1:-1:-1;;;19897:39:0;;19930:4:::1;19897:39;::::0;::::1;1863:51:1::0;19870:24:0::1;::::0;-1:-1:-1;;;;;19897:24:0;::::1;::::0;::::1;::::0;1836:18:1;;19897:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19955:46;::::0;-1:-1:-1;;;19955:46:0;;-1:-1:-1;;;;;11334:32:1;;;19955:46:0::1;::::0;::::1;11316:51:1::0;11383:18;;;11376:34;;;19870:66:0;;-1:-1:-1;19955:23:0;;::::1;::::0;::::1;::::0;11289:18:1;;19955:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20017;::::0;;-1:-1:-1;;;;;11334:32:1;;11316:51;;11398:2;11383:18;;11376:34;;;19947:54:0;;-1:-1:-1;20017:46:0::1;::::0;11289:18:1;20017:46:0::1;;;;;;;19614:457;19515:556:::0;;;;:::o;12495:205::-;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;12559:13:::1;::::0;-1:-1:-1;;;12559:13:0;::::1;;;12558:14;12550:50;;;::::0;-1:-1:-1;;;12550:50:0;;13007:2:1;12550:50:0::1;::::0;::::1;12989:21:1::0;13046:2;13026:18;;;13019:30;13085:25;13065:18;;;13058:53;13128:18;;12550:50:0::1;12805:347:1::0;12550:50:0::1;12611:13;:20:::0;;-1:-1:-1;;;;12642:18:0;-1:-1:-1;;;12642:18:0;;;12676:16:::1;::::0;::::1;::::0;-1:-1:-1;;12676:16:0::1;12495:205::o:0;4185:104::-;4241:13;4274:7;4267:14;;;;;:::i;13774:246::-;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;13883:13:::1;-1:-1:-1::0;;;;;13875:21:0::1;:4;-1:-1:-1::0;;;;;13875:21:0::1;;;13867:91;;;::::0;-1:-1:-1;;;13867:91:0;;13359:2:1;13867:91:0::1;::::0;::::1;13341:21:1::0;13398:2;13378:18;;;13371:30;13437:34;13417:18;;;13410:62;13508:27;13488:18;;;13481:55;13553:19;;13867:91:0::1;13157:421:1::0;13867:91:0::1;13971:41;14000:4;14006:5;13971:28;:41::i;5891:413::-:0;306:10;5984:4;6028:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6028:34:0;;;;;;;;;;6081:35;;;;6073:85;;;;-1:-1:-1;;;6073:85:0;;13785:2:1;6073:85:0;;;13767:21:1;13824:2;13804:18;;;13797:30;13863:34;13843:18;;;13836:62;-1:-1:-1;;;13914:18:1;;;13907:35;13959:19;;6073:85:0;13583:401:1;6073:85:0;6194:67;306:10;6217:7;6245:15;6226:16;:34;6194:8;:67::i;:::-;-1:-1:-1;6292:4:0;;5891:413;-1:-1:-1;;;5891:413:0:o;4649:175::-;4735:4;4752:42;306:10;4776:9;4787:6;4752:9;:42::i;20614:449::-;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;20706:24:::1;::::0;::::1;;20705:25;20697:87;;;::::0;-1:-1:-1;;;20697:87:0;;14191:2:1;20697:87:0::1;::::0;::::1;14173:21:1::0;14230:2;14210:18;;;14203:30;14269:34;14249:18;;;14242:62;-1:-1:-1;;;14320:18:1;;;14313:47;14377:19;;20697:87:0::1;13989:413:1::0;20697:87:0::1;20821:3;20803:14;:21;;:43;;;;;20845:1;20828:14;:18;20803:43;20795:82;;;::::0;-1:-1:-1;;;20795:82:0;;14609:2:1;20795:82:0::1;::::0;::::1;14591:21:1::0;14648:2;14628:18;;;14621:30;14687:28;14667:18;;;14660:56;14733:18;;20795:82:0::1;14407:350:1::0;20795:82:0::1;20917:15;20888:26;:44:::0;20943:24:::1;:31:::0;;-1:-1:-1;;20943:31:0::1;20970:4;20943:31;::::0;;20985:16:::1;:33:::0;;;21034:21:::1;::::0;::::1;::::0;20943:24:::1;::::0;21034:21:::1;20614:449:::0;:::o;14875:182::-;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14960:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;14960:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15015:34;;1647:41:1;;;15015:34:0::1;::::0;1620:18:1;15015:34:0::1;;;;;;;14875:182:::0;;:::o;12777:346::-;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;12900:6:::1;12880:13;4486:12:::0;;;4398:108;12880:13:::1;:17;::::0;12896:1:::1;12880:17;:::i;:::-;:26;;;;:::i;:::-;12867:9;:39;;12859:105;;;::::0;-1:-1:-1;;;12859:105:0;;14964:2:1;12859:105:0::1;::::0;::::1;14946:21:1::0;15003:2;14983:18;;;14976:30;15042:34;15022:18;;;15015:62;-1:-1:-1;;;15093:18:1;;;15086:51;15154:19;;12859:105:0::1;14762:417:1::0;12859:105:0::1;13015:4;12995:13;4486:12:::0;;;4398:108;12995:13:::1;:17;::::0;13011:1:::1;12995:17;:::i;:::-;:24;;;;:::i;:::-;12982:9;:37;;12974:102;;;::::0;-1:-1:-1;;;12974:102:0;;15386:2:1;12974:102:0::1;::::0;::::1;15368:21:1::0;15425:2;15405:18;;;15398:30;15464:34;15444:18;;;15437:62;-1:-1:-1;;;15515:18:1;;;15508:50;15575:19;;12974:102:0::1;15184:416:1::0;12974:102:0::1;13086:18;:30:::0;12777:346::o;8316:244::-;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8405:22:0;::::1;8397:73;;;::::0;-1:-1:-1;;;8397:73:0;;15807:2:1;8397:73:0::1;::::0;::::1;15789:21:1::0;15846:2;15826:18;;;15819:30;15885:34;15865:18;;;15858:62;-1:-1:-1;;;15936:18:1;;;15929:36;15982:19;;8397:73:0::1;15605:402:1::0;8397:73:0::1;8507:6;::::0;8486:38:::1;::::0;-1:-1:-1;;;;;8486:38:0;;::::1;::::0;8507:6:::1;::::0;8486:38:::1;::::0;8507:6:::1;::::0;8486:38:::1;8535:6;:17:::0;;-1:-1:-1;;;;;;8535:17:0::1;-1:-1:-1::0;;;;;8535:17:0;;;::::1;::::0;;;::::1;::::0;;8316:244::o;20141:160::-;8071:6;;-1:-1:-1;;;;;8071:6:0;306:10;8071:22;8063:67;;;;-1:-1:-1;;;8063:67:0;;;;;;;:::i;:::-;20235:58:::1;::::0;20199:12:::1;::::0;20243:10:::1;::::0;20267:21:::1;::::0;20199:12;20235:58;20199:12;20235:58;20267:21;20243:10;20235:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;20141:160:0:o;7233:380::-;-1:-1:-1;;;;;7369:19:0;;7361:68;;;;-1:-1:-1;;;7361:68:0;;16424:2:1;7361:68:0;;;16406:21:1;16463:2;16443:18;;;16436:30;16502:34;16482:18;;;16475:62;-1:-1:-1;;;16553:18:1;;;16546:34;16597:19;;7361:68:0;16222:400:1;7361:68:0;-1:-1:-1;;;;;7448:21:0;;7440:68;;;;-1:-1:-1;;;7440:68:0;;16829:2:1;7440:68:0;;;16811:21:1;16868:2;16848:18;;;16841:30;16907:34;16887:18;;;16880:62;-1:-1:-1;;;16958:18:1;;;16951:32;17000:19;;7440:68:0;16627:398:1;7440:68:0;-1:-1:-1;;;;;7521:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7573:32;;413:25:1;;;7573:32:0;;386:18:1;7573:32:0;;;;;;;7233:380;;;:::o;6312:614::-;-1:-1:-1;;;;;6452:20:0;;6444:70;;;;-1:-1:-1;;;6444:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6533:23:0;;6525:71;;;;-1:-1:-1;;;6525:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6633:17:0;;6609:21;6633:17;;;;;;;;;;;6669:23;;;;6661:74;;;;-1:-1:-1;;;6661:74:0;;18042:2:1;6661:74:0;;;18024:21:1;18081:2;18061:18;;;18054:30;18120:34;18100:18;;;18093:62;-1:-1:-1;;;18171:18:1;;;18164:36;18217:19;;6661:74:0;17840:402:1;6661:74:0;-1:-1:-1;;;;;6771:17:0;;;:9;:17;;;;;;;;;;;6791:22;;;6771:42;;6835:20;;;;;;;;:30;;6807:6;;6771:9;6835:30;;6807:6;;6835:30;:::i;:::-;;;;;;;;6900:9;-1:-1:-1;;;;;6883:35:0;6892:6;-1:-1:-1;;;;;6883:35:0;;6911:6;6883:35;;;;413:25:1;;401:2;386:18;;267:177;6883:35:0;;;;;;;;6433:493;6312:614;;;:::o;15065:2079::-;-1:-1:-1;;;;;15165:18:0;;15157:68;;;;-1:-1:-1;;;15157:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15244:16:0;;15236:64;;;;-1:-1:-1;;;15236:64:0;;;;;;;:::i;:::-;15328:1;15319:6;:10;15311:52;;;;-1:-1:-1;;;15311:52:0;;18449:2:1;15311:52:0;;;18431:21:1;18488:2;18468:18;;;18461:30;18527:31;18507:18;;;18500:59;18576:18;;15311:52:0;18247:353:1;15311:52:0;15388:13;;-1:-1:-1;;;15388:13:0;;;;15384:132;;-1:-1:-1;;;;;15425:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;15454:23:0;;;;;;:19;:23;;;;;;;;15425:52;15417:87;;;;-1:-1:-1;;;15417:87:0;;18807:2:1;15417:87:0;;;18789:21:1;18846:2;18826:18;;;18819:30;-1:-1:-1;;;18865:18:1;;;18858:52;18927:18;;15417:87:0;18605:346:1;15417:87:0;15585:4;15536:28;4615:18;;;;;;;;;;;15651;;15627:42;;;;;;;15685:22;;-1:-1:-1;15696:11:0;;-1:-1:-1;;;15696:11:0;;;;15685:22;:35;;;;-1:-1:-1;15712:8:0;;-1:-1:-1;;;15712:8:0;;;;15711:9;15685:35;:71;;;;-1:-1:-1;;;;;;15725:31:0;;;;;;:25;:31;;;;;;;;15724:32;15685:71;:101;;;;-1:-1:-1;;;;;;15761:25:0;;;;;;:19;:25;;;;;;;;15760:26;15685:101;:129;;;;-1:-1:-1;;;;;;15791:23:0;;;;;;:19;:23;;;;;;;;15790:24;15685:129;15682:236;;;15831:8;:15;;-1:-1:-1;;;;15831:15:0;-1:-1:-1;;;15831:15:0;;;15863:10;:8;:10::i;:::-;15890:8;:16;;-1:-1:-1;;;;15890:16:0;;;15682:236;-1:-1:-1;;;;;16050:25:0;;15930:12;16050:25;;;:19;:25;;;;;;15945:4;;16050:25;;;:52;;-1:-1:-1;;;;;;16079:23:0;;;;;;:19;:23;;;;;;;;16050:52;16047:99;;;-1:-1:-1;16129:5:0;16047:99;16166:12;16270:7;16267:824;;;-1:-1:-1;;;;;16321:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;16370:1;16354:13;;:17;16321:50;16317:605;;;16422:3;16407:13;;16398:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;16391:34;;16492:13;;16473:16;;16466:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;16444:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;16574:13:0;;16554:17;;16547:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;16524:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;16317:605:0;;-1:-1:-1;16317:605:0;;-1:-1:-1;;;;;16648:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;16698:1;16683:12;;:16;16648:51;16645:277;;;16748:3;16733:12;;16724:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;16717:34;;16814:12;;16796:15;;16789:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;16767:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;16894:12:0;;16875:16;;16868:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;16845:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;16645:277:0;16953:8;;16950:93;;16985:42;17001:4;17015;17022;16985:15;:42::i;:::-;17065:14;17075:4;17065:14;;:::i;:::-;;;16267:824;17103:33;17119:4;17125:2;17129:6;17103:15;:33::i;:::-;15144:2000;;;;15065:2079;;;:::o;14028:188::-;-1:-1:-1;;;;;14111:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;14111:39:0;;;;;;;;;;14168:40;;14111:39;;:31;14168:40;;;14028:188;;:::o;18284:1223::-;18367:4;18323:23;4615:18;;;;;;;;;;;18323:50;;18384:25;18433:19;;18412:18;;:40;;;;:::i;:::-;18384:68;-1:-1:-1;18476:20:0;;;:46;;-1:-1:-1;18500:22:0;;18476:46;18473:60;;;18525:7;;18284:1223::o;18473:60::-;18566:18;;:23;;18587:2;18566:23;:::i;:::-;18548:15;:41;18545:113;;;18623:18;;:23;;18644:2;18623:23;:::i;:::-;18605:41;;18545:113;18670:12;18752:23;18837:1;18817:17;18796:18;;18778:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;18752:86;-1:-1:-1;18859:51:0;18876:33;18752:86;18876:15;:33;:::i;:::-;18859:16;:51::i;:::-;19118:18;;18953:21;;;;18932:18;;19118:20;;19137:1;;19118:20;:::i;:::-;19097:42;;:17;:42;:::i;:::-;19074:19;;19061:32;;:10;:32;:::i;:::-;:79;;;;:::i;:::-;19034:106;-1:-1:-1;19153:35:0;19034:106;19153:35;;:::i;:::-;19234:1;19213:18;:22;;;19246:19;:23;19153:35;-1:-1:-1;19293:19:0;;;;;:42;;;19334:1;19316:15;:19;19293:42;19290:119;;;19351:46;19364:15;19381;19351:12;:46::i;:::-;19442:17;;19434:65;;-1:-1:-1;;;;;19442:17:0;;;;19473:21;;19434:65;;;;19473:21;19442:17;19434:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;18284:1223:0:o;17152:591::-;17304:16;;;17318:1;17304:16;;;;;;;;17280:21;;17304:16;;;;;;;;;;-1:-1:-1;17304:16:0;17280:40;;17349:4;17331;17336:1;17331:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;17331:23:0;;;-1:-1:-1;;;;;17331:23:0;;;;;17375:15;-1:-1:-1;;;;;17375:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17365:4;17370:1;17365:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;17365:32:0;;;-1:-1:-1;;;;;17365:32:0;;;;;17410:62;17427:4;17442:15;17460:11;17410:8;:62::i;:::-;17511:224;;-1:-1:-1;;;17511:224:0;;-1:-1:-1;;;;;17511:15:0;:66;;;;:224;;17592:11;;17618:1;;17662:4;;17689;;17709:15;;17511:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17207:536;17152:591;:::o;17755:521::-;17903:62;17920:4;17935:15;17953:11;17903:8;:62::i;:::-;18008:260;;-1:-1:-1;;;18008:260:0;;18080:4;18008:260;;;20668:34:1;20718:18;;;20711:34;;;18126:1:0;20761:18:1;;;20754:34;;;20804:18;;;20797:34;18220:6:0;20847:19:1;;;20840:44;18242:15:0;20900:19:1;;;20893:35;18008:15:0;-1:-1:-1;;;;;18008:31:0;;;;18047:9;;20602:19:1;;18008:260:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17755:521;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;449:597::-;561:4;590:2;619;608:9;601:21;651:6;645:13;694:6;689:2;678:9;674:18;667:34;719:1;729:140;743:6;740:1;737:13;729:140;;;838:14;;;834:23;;828:30;804:17;;;823:2;800:26;793:66;758:10;;729:140;;;887:6;884:1;881:13;878:91;;;957:1;952:2;943:6;932:9;928:22;924:31;917:42;878:91;-1:-1:-1;1030:2:1;1009:15;-1:-1:-1;;1005:29:1;990:45;;;;1037:2;986:54;;449:597;-1:-1:-1;;;449:597:1:o;1051:131::-;-1:-1:-1;;;;;1126:31:1;;1116:42;;1106:70;;1172:1;1169;1162:12;1106:70;1051:131;:::o;1187:315::-;1255:6;1263;1316:2;1304:9;1295:7;1291:23;1287:32;1284:52;;;1332:1;1329;1322:12;1284:52;1371:9;1358:23;1390:31;1415:5;1390:31;:::i;:::-;1440:5;1492:2;1477:18;;;;1464:32;;-1:-1:-1;;;1187:315:1:o;1925:127::-;1986:10;1981:3;1977:20;1974:1;1967:31;2017:4;2014:1;2007:15;2041:4;2038:1;2031:15;2057:275;2128:2;2122:9;2193:2;2174:13;;-1:-1:-1;;2170:27:1;2158:40;;2228:18;2213:34;;2249:22;;;2210:62;2207:88;;;2275:18;;:::i;:::-;2311:2;2304:22;2057:275;;-1:-1:-1;2057:275:1:o;2337:183::-;2397:4;2430:18;2422:6;2419:30;2416:56;;;2452:18;;:::i;:::-;-1:-1:-1;2497:1:1;2493:14;2509:4;2489:25;;2337:183::o;2525:662::-;2579:5;2632:3;2625:4;2617:6;2613:17;2609:27;2599:55;;2650:1;2647;2640:12;2599:55;2686:6;2673:20;2712:4;2736:60;2752:43;2792:2;2752:43;:::i;:::-;2736:60;:::i;:::-;2830:15;;;2916:1;2912:10;;;;2900:23;;2896:32;;;2861:12;;;;2940:15;;;2937:35;;;2968:1;2965;2958:12;2937:35;3004:2;2996:6;2992:15;3016:142;3032:6;3027:3;3024:15;3016:142;;;3098:17;;3086:30;;3136:12;;;;3049;;3016:142;;;-1:-1:-1;3176:5:1;2525:662;-1:-1:-1;;;;;;2525:662:1:o;3192:1215::-;3310:6;3318;3371:2;3359:9;3350:7;3346:23;3342:32;3339:52;;;3387:1;3384;3377:12;3339:52;3427:9;3414:23;3456:18;3497:2;3489:6;3486:14;3483:34;;;3513:1;3510;3503:12;3483:34;3551:6;3540:9;3536:22;3526:32;;3596:7;3589:4;3585:2;3581:13;3577:27;3567:55;;3618:1;3615;3608:12;3567:55;3654:2;3641:16;3676:4;3700:60;3716:43;3756:2;3716:43;:::i;3700:60::-;3794:15;;;3876:1;3872:10;;;;3864:19;;3860:28;;;3825:12;;;;3900:19;;;3897:39;;;3932:1;3929;3922:12;3897:39;3956:11;;;;3976:217;3992:6;3987:3;3984:15;3976:217;;;4072:3;4059:17;4089:31;4114:5;4089:31;:::i;:::-;4133:18;;4009:12;;;;4171;;;;3976:217;;;4212:5;-1:-1:-1;;4255:18:1;;4242:32;;-1:-1:-1;;4286:16:1;;;4283:36;;;4315:1;4312;4305:12;4283:36;;4338:63;4393:7;4382:8;4371:9;4367:24;4338:63;:::i;:::-;4328:73;;;3192:1215;;;;;:::o;4412:456::-;4489:6;4497;4505;4558:2;4546:9;4537:7;4533:23;4529:32;4526:52;;;4574:1;4571;4564:12;4526:52;4613:9;4600:23;4632:31;4657:5;4632:31;:::i;:::-;4682:5;-1:-1:-1;4739:2:1;4724:18;;4711:32;4752:33;4711:32;4752:33;:::i;:::-;4412:456;;4804:7;;-1:-1:-1;;;4858:2:1;4843:18;;;;4830:32;;4412:456::o;5062:247::-;5121:6;5174:2;5162:9;5153:7;5149:23;5145:32;5142:52;;;5190:1;5187;5180:12;5142:52;5229:9;5216:23;5248:31;5273:5;5248:31;:::i;:::-;5298:5;5062:247;-1:-1:-1;;;5062:247:1:o;5522:388::-;5590:6;5598;5651:2;5639:9;5630:7;5626:23;5622:32;5619:52;;;5667:1;5664;5657:12;5619:52;5706:9;5693:23;5725:31;5750:5;5725:31;:::i;:::-;5775:5;-1:-1:-1;5832:2:1;5817:18;;5804:32;5845:33;5804:32;5845:33;:::i;:::-;5897:7;5887:17;;;5522:388;;;;;:::o;5915:118::-;6001:5;5994:13;5987:21;5980:5;5977:32;5967:60;;6023:1;6020;6013:12;6038:382;6103:6;6111;6164:2;6152:9;6143:7;6139:23;6135:32;6132:52;;;6180:1;6177;6170:12;6132:52;6219:9;6206:23;6238:31;6263:5;6238:31;:::i;:::-;6288:5;-1:-1:-1;6345:2:1;6330:18;;6317:32;6358:30;6317:32;6358:30;:::i;6425:180::-;6484:6;6537:2;6525:9;6516:7;6512:23;6508:32;6505:52;;;6553:1;6550;6543:12;6505:52;-1:-1:-1;6576:23:1;;6425:180;-1:-1:-1;6425:180:1:o;6610:356::-;6812:2;6794:21;;;6831:18;;;6824:30;6890:34;6885:2;6870:18;;6863:62;6957:2;6942:18;;6610:356::o;6971:127::-;7032:10;7027:3;7023:20;7020:1;7013:31;7063:4;7060:1;7053:15;7087:4;7084:1;7077:15;7103:128;7143:3;7174:1;7170:6;7167:1;7164:13;7161:39;;;7180:18;;:::i;:::-;-1:-1:-1;7216:9:1;;7103:128::o;7594:380::-;7673:1;7669:12;;;;7716;;;7737:61;;7791:4;7783:6;7779:17;7769:27;;7737:61;7844:2;7836:6;7833:14;7813:18;7810:38;7807:161;;;7890:10;7885:3;7881:20;7878:1;7871:31;7925:4;7922:1;7915:15;7953:4;7950:1;7943:15;7807:161;;7594:380;;;:::o;8761:127::-;8822:10;8817:3;8813:20;8810:1;8803:31;8853:4;8850:1;8843:15;8877:4;8874:1;8867:15;8893:168;8933:7;8999:1;8995;8991:6;8987:14;8984:1;8981:21;8976:1;8969:9;8962:17;8958:45;8955:71;;;9006:18;;:::i;:::-;-1:-1:-1;9046:9:1;;8893:168::o;9066:135::-;9105:3;-1:-1:-1;;9126:17:1;;9123:43;;;9146:18;;:::i;:::-;-1:-1:-1;9193:1:1;9182:13;;9066:135::o;10731:184::-;10801:6;10854:2;10842:9;10833:7;10829:23;10825:32;10822:52;;;10870:1;10867;10860:12;10822:52;-1:-1:-1;10893:16:1;;10731:184;-1:-1:-1;10731:184:1:o;10920:217::-;10960:1;10986;10976:132;;11030:10;11025:3;11021:20;11018:1;11011:31;11065:4;11062:1;11055:15;11093:4;11090:1;11083:15;10976:132;-1:-1:-1;11122:9:1;;10920:217::o;11421:245::-;11488:6;11541:2;11529:9;11520:7;11516:23;11512:32;11509:52;;;11557:1;11554;11547:12;11509:52;11589:9;11583:16;11608:28;11630:5;11608:28;:::i;17030:401::-;17232:2;17214:21;;;17271:2;17251:18;;;17244:30;17310:34;17305:2;17290:18;;17283:62;-1:-1:-1;;;17376:2:1;17361:18;;17354:35;17421:3;17406:19;;17030:401::o;17436:399::-;17638:2;17620:21;;;17677:2;17657:18;;;17650:30;17716:34;17711:2;17696:18;;17689:62;-1:-1:-1;;;17782:2:1;17767:18;;17760:33;17825:3;17810:19;;17436:399::o;18956:125::-;18996:4;19024:1;19021;19018:8;19015:34;;;19029:18;;:::i;:::-;-1:-1:-1;19066:9:1;;18956:125::o;19086:251::-;19156:6;19209:2;19197:9;19188:7;19184:23;19180:32;19177:52;;;19225:1;19222;19215:12;19177:52;19257:9;19251:16;19276:31;19301:5;19276:31;:::i;19342:980::-;19604:4;19652:3;19641:9;19637:19;19683:6;19672:9;19665:25;19709:2;19747:6;19742:2;19731:9;19727:18;19720:34;19790:3;19785:2;19774:9;19770:18;19763:31;19814:6;19849;19843:13;19880:6;19872;19865:22;19918:3;19907:9;19903:19;19896:26;;19957:2;19949:6;19945:15;19931:29;;19978:1;19988:195;20002:6;19999:1;19996:13;19988:195;;;20067:13;;-1:-1:-1;;;;;20063:39:1;20051:52;;20158:15;;;;20123:12;;;;20099:1;20017:9;19988:195;;;-1:-1:-1;;;;;;;20239:32:1;;;;20234:2;20219:18;;20212:60;-1:-1:-1;;;20303:3:1;20288:19;20281:35;20200:3;19342:980;-1:-1:-1;;;19342:980:1:o;20939:306::-;21027:6;21035;21043;21096:2;21084:9;21075:7;21071:23;21067:32;21064:52;;;21112:1;21109;21102:12;21064:52;21141:9;21135:16;21125:26;;21191:2;21180:9;21176:18;21170:25;21160:35;;21235:2;21224:9;21220:18;21214:25;21204:35;;20939:306;;;;;:::o

Swarm Source

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