ETH Price: $2,597.44 (-2.37%)
Gas: 1 Gwei

Token

Oscar (Grouch)
 

Overview

Max Total Supply

15,000,000,000 Grouch

Holders

219

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
22,804,418.62743895902556375 Grouch

Value
$0.00
0x4e53560fd5435e43eced49333128c78a1226512f
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:
Oscar

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/* 
Website: https://oscargrouch.com/
Twitter: https://twitter.com/OscarGrouchEth
Telegram: t.me/Grouchportal
*/

// SPDX-License-Identifier: MIT   

pragma solidity 0.8.19;

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 IDexFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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;
    uint8 private _decimals;

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

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

    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()];
        if (currentAllowance != type(uint256).max) {
            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);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(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);
    function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function removeLiquidity(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB);
}

interface ILpPair {
    function sync() external;
}

contract Oscar is ERC20, Ownable {

    IDexRouter public immutable dexRouter;
    address public immutable lpPair;

    bool private swapping;

    address public operationsWallet;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    
    uint256 public liquidityActiveBlock = 0; // 0 means liquidity is not active yet
    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public earlyBuyPenaltyEnd; // determines when snipers/bots can sell without extra penalty
    
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    
    uint256 public constant feeDivisor = 10000;

    uint256 public totalSellFees;
    uint256 public operationsSellFee;
    uint256 public liquiditySellFee;
    
    uint256 public totalBuyFees;
    uint256 public operationsBuyFee;
    uint256 public liquidityBuyFee;
    
    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;

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

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

    address[] private earlyBuyers;
    uint256 private deadBlocks;
    mapping (address => bool) public _isBot;

    mapping (address => bool) public _isExcludedMaxTransactionAmount;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
    event ExcludedMaxTransactionAmount(address indexed account, bool isExcluded);

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

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

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

    constructor() ERC20("Oscar", "Grouch", 18) {

        address _dexRouter;

        if(block.chainid == 1){
            _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Uni V2 Router
        } else if(block.chainid == 5){
            _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Goerli Router
        } else if(block.chainid == 56){
            _dexRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // Pancake V2 Router
        } else {
            revert("Chain not configured");
        }

        dexRouter = IDexRouter(_dexRouter);

        lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH());
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 15_000_000_000 * (10 ** decimals());
        
        maxTransactionAmount = totalSupply * 5 / 1000; // 0.5% maxTransactionAmountTxn
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap tokens amount
        maxWallet = totalSupply * 2 / 100; // 2% Max wallet

        operationsBuyFee = 3000; // 100 = 1%
        liquidityBuyFee = 0;
        totalBuyFees = operationsBuyFee + liquidityBuyFee;
        
        operationsSellFee = 4000;
        liquiditySellFee = 0;
        totalSellFees = operationsSellFee + liquiditySellFee;
    	
    	operationsWallet = address(0xA2FaE9fe6008355d44b8690eBeA5fb9CD73D0c41); // set as operations wallet
        
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(_dexRouter), true);

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

        _createInitialSupply(address(owner()), totalSupply);

        _approve(address(this), address(dexRouter), type(uint256).max);
        _approve(owner(), address(dexRouter), totalSupply);
    }

    receive() external payable {}

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
    // once enabled, can never be turned off
    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot re-enable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        deadBlocks = _deadBlocks;
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }

    function updateMaxAmount(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 1000) / (10 ** decimals()), "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10 ** decimals());
    }
    
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 100)/(10 ** decimals()), "Cannot set maxWallet lower than 1%");
        maxWallet = newNum * (10 ** decimals());
    }
    
    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        operationsBuyFee = _operationsFee;
        liquidityBuyFee = _liquidityFee;
        totalBuyFees = operationsBuyFee + liquidityBuyFee;
        require(totalBuyFees <= 6000, "Must keep fees at 100% or less");
    }
    
    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        operationsSellFee = _operationsFee;
        liquiditySellFee = _liquidityFee;
        totalSellFees = operationsSellFee + liquiditySellFee;
        require(totalSellFees <= 6000, "Must keep fees at 100% or less");
    }

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

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

        emit ExcludeFromFees(account, excluded);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

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

    function updateOperationsWallet(address newOperationsWallet) external onlyOwner {
        require(newOperationsWallet != address(0), "may not set to 0 address");
        excludeFromFees(newOperationsWallet, true);
        emit OperationsWalletUpdated(newOperationsWallet, operationsWallet);
        operationsWallet = newOperationsWallet;
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        transferDelayEnabled = false;
        return true;
    }
    
    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(!_isBot[to] && !_isBot[from], "No bots");

         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active yet.");
        }
        
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    require(_holderLastTransferTimestamp[tx.origin] + 15 < block.number, "Transfer Delay enabled.");
                    if (to != address(dexRouter) && to != address(lpPair)){
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }
                
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet");
                } 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet");
                }
            }
        }

		uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        
        // no taxes on transfers (non buys/sells)
        if(takeFee){
            if(tradingActiveBlock + deadBlocks >= block.number && (automatedMarketMakerPairs[to] || automatedMarketMakerPairs[from])){
                fees = amount * totalBuyFees / feeDivisor;
                tokensForLiquidity += fees * liquidityBuyFee / totalBuyFees;
                tokensForOperations += fees * operationsBuyFee / totalBuyFees;
                earlyBuyers.push(to);
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && totalSellFees > 0){
                fees = amount * totalSellFees / feeDivisor;
                tokensForLiquidity += fees * liquiditySellFee / totalSellFees;
                tokensForOperations += fees * operationsSellFee / totalSellFees;
            }
            
            // on buy
            else if(automatedMarketMakerPairs[from] && totalBuyFees > 0) {
        	    fees = amount * totalBuyFees / feeDivisor;
                tokensForLiquidity += fees * liquidityBuyFee / totalBuyFees;
                tokensForOperations += fees * operationsBuyFee / totalBuyFees;
            }

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

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}


        if(tokensForLiquidity > 0){
            uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap;
            super._transfer(address(this), lpPair, liquidityTokens);
            try ILpPair(lpPair).sync(){} catch {}
            contractBalance -= liquidityTokens;
            totalTokensToSwap -= tokensForLiquidity;
            tokensForLiquidity = 0;
        }

        if(contractBalance > 0){
            swapTokensForEth(contractBalance);
        }
    }

    function prisonEarlyBuyers() external onlyOwner {
        require(earlyBuyers.length > 0, "No bots to block");

        for(uint256 i = 0; i < earlyBuyers.length; i++){
            if(!_isBot[earlyBuyers[i]]){
                _isBot[earlyBuyers[i]] = true;
            }
        }

        delete earlyBuyers;
    }

    function removeBlacklist(address[] memory _addresses) external onlyOwner {
        for(uint256 i = 0; i < _addresses.length; i++){
            _isBot[_addresses[i]] = false;
        }
    }

    function addBlacklist(address[] memory _addresses) external onlyOwner {
        for(uint256 i = 0; i < _addresses.length; i++){
            _isBot[_addresses[i]] = true;
        }
    }

    function oscarToWallets(address[] memory wallets, uint256[] memory amountsInWei) external onlyOwner {
        require(wallets.length == amountsInWei.length, "arrays must be the same length");
        require(wallets.length < 600, "Can only airdrop 600 wallets per txn due to gas limits");
        for(uint256 i = 0; i < wallets.length; i++){
            super._transfer(msg.sender, wallets[i], amountsInWei[i]);
        }

    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedMaxTransactionAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"OperationsWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"addBlacklist","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquiditySellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInWei","type":"uint256[]"}],"name":"oscarToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prisonEarlyBuyers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"removeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperationsWallet","type":"address"}],"name":"updateOperationsWallet","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":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600a819055600b55600d805462ffffff19166001908117909155600f805460ff191690911790553480156200003a57600080fd5b506040518060400160405280600581526020016427b9b1b0b960d91b8152506040518060400160405280600681526020016508ee4deeac6d60d31b815250601282600390816200008b9190620009ac565b5060046200009a8382620009ac565b506005805460ff191660ff929092169190911790555060009050620000bc3390565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600046600103620001395750737a250d5630b4cf539739df2c5dacb4c659f2488d620001d0565b466005036200015e5750737a250d5630b4cf539739df2c5dacb4c659f2488d620001d0565b466038036200018357507310ed43c718714eb63d5aa57b78b54704e256024e620001d0565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e6669677572656400000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200021b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000241919062000a78565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000291573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b7919062000a78565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032b919062000a78565b6001600160a01b031660a08190526200034690600162000533565b60006200035560055460ff1690565b6200036290600a62000bbf565b620003739064037e11d60062000bd0565b90506103e86200038582600562000bd0565b62000391919062000bea565b600755612710620003a482600562000bd0565b620003b0919062000bea565b6008556064620003c282600262000bd0565b620003ce919062000bea565b600955610bb8601481905560006015819055620003eb9162000c0d565b601355610fa0601181905560006012819055620004089162000c0d565b601055600680546001600160a01b03191673a2fae9fe6008355d44b8690ebea5fb9cd73d0c41179055620004556200044d60055461010090046001600160a01b031690565b60016200059f565b620004623060016200059f565b6200047161dead60016200059f565b6200047e8260016200059f565b620004a26200049a60055461010090046001600160a01b031690565b600162000650565b620004af30600162000650565b620004bc82600162000650565b620004cb61dead600162000650565b620004ee620004e760055461010090046001600160a01b031690565b82620006fa565b6200050530608051600019620007df60201b60201c565b6200052b6200052160055461010090046001600160a01b031690565b60805183620007df565b505062000c23565b6001600160a01b0382166000908152601d60205260409020805460ff191682151517905562000563828262000650565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03610100909104163314620005f05760405162461bcd60e51b8152602060048201819052602482015260008051602062003e318339815191526044820152606401620001c7565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a25050565b6005546001600160a01b03610100909104163314620006a15760405162461bcd60e51b8152602060048201819052602482015260008051602062003e318339815191526044820152606401620001c7565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d95910162000644565b6001600160a01b038216620007525760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620001c7565b806002600082825462000766919062000c0d565b90915550506001600160a01b038216600090815260208190526040812080548392906200079590849062000c0d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038316620008435760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620001c7565b6001600160a01b038216620008a65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620001c7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200093257607f821691505b6020821081036200095357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620009a757600081815260208120601f850160051c81016020861015620009825750805b601f850160051c820191505b81811015620009a3578281556001016200098e565b5050505b505050565b81516001600160401b03811115620009c857620009c862000907565b620009e081620009d984546200091d565b8462000959565b602080601f83116001811462000a185760008415620009ff5750858301515b600019600386901b1c1916600185901b178555620009a3565b600085815260208120601f198616915b8281101562000a495788860151825594840194600190910190840162000a28565b508582101562000a685787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a8b57600080fd5b81516001600160a01b038116811462000aa357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000b0157816000190482111562000ae55762000ae562000aaa565b8085161562000af357918102915b93841c939080029062000ac5565b509250929050565b60008262000b1a5750600162000bb9565b8162000b295750600062000bb9565b816001811462000b42576002811462000b4d5762000b6d565b600191505062000bb9565b60ff84111562000b615762000b6162000aaa565b50506001821b62000bb9565b5060208310610133831016604e8410600b841016171562000b92575081810a62000bb9565b62000b9e838362000ac0565b806000190482111562000bb55762000bb562000aaa565b0290505b92915050565b600062000aa360ff84168362000b09565b808202811582820484141762000bb95762000bb962000aaa565b60008262000c0857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000bb95762000bb962000aaa565b60805160a0516131b762000c7a600039600081816105ee0152818161148001528181611fba0152818161275f015261278601526000818161040501528181611f7d01528181612879015261293401526131b76000f3fe60806040526004361061037a5760003560e01c806382aa7c68116101d1578063c492f04611610102578063e884f260116100a0578063f2fde38b1161006f578063f2fde38b14610a4a578063f8b45b0514610a6a578063fb002c9714610a80578063fd72e22a14610a9657600080fd5b8063e884f260146109f4578063e8d2bdec14610a09578063ee40166e14610a1e578063efcc1b2f14610a3457600080fd5b8063ccb61358116100dc578063ccb613581461096c578063d0a3981414610982578063dd62ed3e14610998578063e2f45605146109de57600080fd5b8063c492f0461461091c578063c876d0b91461093c578063c8c8ebe41461095657600080fd5b8063a9059cbb1161016f578063b9e9370011610149578063b9e93700146108a7578063bbc0c742146108bd578063c0246668146108dc578063c18bc195146108fc57600080fd5b8063a9059cbb14610827578063abb8105214610847578063b62496f51461087757600080fd5b806395d89b41116101ab57806395d89b41146107bc5780639a36f932146107d15780639a7a23d6146107e7578063a457c2d71461080757600080fd5b806382aa7c68146107595780638da5cb5b14610779578063924de9b71461079c57600080fd5b8063313ce567116102ab5780636ddd1713116102495780637506cbd8116102235780637506cbd8146106ee578063751039fc146107045780637571336a146107195780637911ef9d1461073957600080fd5b80636ddd17131461068357806370a08231146106a3578063715018a6146106d957600080fd5b8063452ed4f111610285578063452ed4f1146105dc5780634a62bb65146106105780634fbee1931461062a57806366ca9b831461066357600080fd5b8063313ce5671461057a578063395093511461059c5780633d2cc56c146105bc57600080fd5b8063106b5da1116103185780631a8145bb116102f25780631a8145bb1461050e5780631fc851bd1461052457806323b872dd1461053a57806330d5d18d1461055a57600080fd5b8063106b5da1146104a957806310d5de53146104c957806318160ddd146104f957600080fd5b80630758d924116103545780630758d924146103f3578063095ea7b31461043f578063099d0d301461046f5780630f4432e31461049357600080fd5b806302dbd8f81461038657806304135325146103a857806306fdde03146103c857600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103a66103a13660046129e4565b610ab6565b005b3480156103b457600080fd5b506103a66103c3366004612afa565b610b5d565b3480156103d457600080fd5b506103dd610caf565b6040516103ea9190612bb5565b60405180910390f35b3480156103ff57600080fd5b506104277f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103ea565b34801561044b57600080fd5b5061045f61045a366004612c03565b610d41565b60405190151581526020016103ea565b34801561047b57600080fd5b5061048560125481565b6040519081526020016103ea565b34801561049f57600080fd5b50610485600a5481565b3480156104b557600080fd5b506103a66104c4366004612c2f565b610d58565b3480156104d557600080fd5b5061045f6104e4366004612c48565b601c6020526000908152604090205460ff1681565b34801561050557600080fd5b50600254610485565b34801561051a57600080fd5b5061048560175481565b34801561053057600080fd5b50610485600c5481565b34801561054657600080fd5b5061045f610555366004612c6c565b610e4b565b34801561056657600080fd5b506103a6610575366004612c48565b610efe565b34801561058657600080fd5b5060055460405160ff90911681526020016103ea565b3480156105a857600080fd5b5061045f6105b7366004612c03565b610fec565b3480156105c857600080fd5b506103a66105d7366004612cad565b611028565b3480156105e857600080fd5b506104277f000000000000000000000000000000000000000000000000000000000000000081565b34801561061c57600080fd5b50600d5461045f9060ff1681565b34801561063657600080fd5b5061045f610645366004612c48565b6001600160a01b031660009081526018602052604090205460ff1690565b34801561066f57600080fd5b506103a661067e3660046129e4565b6110c0565b34801561068f57600080fd5b50600d5461045f9062010000900460ff1681565b3480156106af57600080fd5b506104856106be366004612c48565b6001600160a01b031660009081526020819052604090205490565b3480156106e557600080fd5b506103a661115a565b3480156106fa57600080fd5b5061048560115481565b34801561071057600080fd5b5061045f6111da565b34801561072557600080fd5b506103a6610734366004612cff565b611229565b34801561074557600080fd5b506103a6610754366004612cad565b6112b9565b34801561076557600080fd5b506103a6610774366004612c2f565b611351565b34801561078557600080fd5b5060055461010090046001600160a01b0316610427565b3480156107a857600080fd5b506103a66107b7366004612d34565b6113f3565b3480156107c857600080fd5b506103dd61143f565b3480156107dd57600080fd5b5061048561271081565b3480156107f357600080fd5b506103a6610802366004612cff565b61144e565b34801561081357600080fd5b5061045f610822366004612c03565b61152f565b34801561083357600080fd5b5061045f610842366004612c03565b6115c8565b34801561085357600080fd5b5061045f610862366004612c48565b601b6020526000908152604090205460ff1681565b34801561088357600080fd5b5061045f610892366004612c48565b601d6020526000908152604090205460ff1681565b3480156108b357600080fd5b5061048560135481565b3480156108c957600080fd5b50600d5461045f90610100900460ff1681565b3480156108e857600080fd5b506103a66108f7366004612cff565b6115d5565b34801561090857600080fd5b506103a6610917366004612c2f565b61165d565b34801561092857600080fd5b506103a6610937366004612d4f565b611742565b34801561094857600080fd5b50600f5461045f9060ff1681565b34801561096257600080fd5b5061048560075481565b34801561097857600080fd5b5061048560155481565b34801561098e57600080fd5b5061048560105481565b3480156109a457600080fd5b506104856109b3366004612dd3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109ea57600080fd5b5061048560085481565b348015610a0057600080fd5b5061045f611824565b348015610a1557600080fd5b506103a6611867565b348015610a2a57600080fd5b50610485600b5481565b348015610a4057600080fd5b5061048560145481565b348015610a5657600080fd5b506103a6610a65366004612c48565b611998565b348015610a7657600080fd5b5061048560095481565b348015610a8c57600080fd5b5061048560165481565b348015610aa257600080fd5b50600654610427906001600160a01b031681565b6005546001600160a01b03610100909104163314610aef5760405162461bcd60e51b8152600401610ae690612e0c565b60405180910390fd5b60118290556012819055610b038183612e57565b60108190556117701015610b595760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b65657020666565732061742031303025206f72206c65737300006044820152606401610ae6565b5050565b6005546001600160a01b03610100909104163314610b8d5760405162461bcd60e51b8152600401610ae690612e0c565b8051825114610bde5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610ae6565b610258825110610c4f5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610ae6565b60005b8251811015610caa57610c9833848381518110610c7157610c71612e6a565b6020026020010151848481518110610c8b57610c8b612e6a565b6020026020010151611a94565b80610ca281612e80565b915050610c52565b505050565b606060038054610cbe90612e99565b80601f0160208091040260200160405190810160405280929190818152602001828054610cea90612e99565b8015610d375780601f10610d0c57610100808354040283529160200191610d37565b820191906000526020600020905b815481529060010190602001808311610d1a57829003601f168201915b5050505050905090565b6000610d4e338484611be9565b5060015b92915050565b6005546001600160a01b03610100909104163314610d885760405162461bcd60e51b8152600401610ae690612e0c565b60055460ff16610d9990600a612fb7565b6103e8610da560025490565b610db0906001612fc6565b610dba9190612fdd565b610dc49190612fdd565b8111610e2a5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610ae6565b60055460ff16610e3b90600a612fb7565b610e459082612fc6565b60075550565b6000610e58848484611d0d565b6001600160a01b03841660009081526001602090815260408083203384529091529020546000198114610ef35782811015610ee65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ae6565b610ef38533858403611be9565b506001949350505050565b6005546001600160a01b03610100909104163314610f2e5760405162461bcd60e51b8152600401610ae690612e0c565b6001600160a01b038116610f845760405162461bcd60e51b815260206004820152601860248201527f6d6179206e6f742073657420746f2030206164647265737300000000000000006044820152606401610ae6565b610f8f8160016115d5565b6006546040516001600160a01b03918216918316907f086aa05ff00214e2d0c7c02b8a46b2614ad955732e6b43aa8afca69ed1ad76f890600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d4e918590611023908690612e57565b611be9565b6005546001600160a01b036101009091041633146110585760405162461bcd60e51b8152600401610ae690612e0c565b60005b8151811015610b59576001601b600084848151811061107c5761107c612e6a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806110b881612e80565b91505061105b565b6005546001600160a01b036101009091041633146110f05760405162461bcd60e51b8152600401610ae690612e0c565b601482905560158190556111048183612e57565b60138190556117701015610b595760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b65657020666565732061742031303025206f72206c65737300006044820152606401610ae6565b6005546001600160a01b0361010090910416331461118a5760405162461bcd60e51b8152600401610ae690612e0c565b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6005546000906001600160a01b0361010090910416331461120d5760405162461bcd60e51b8152600401610ae690612e0c565b50600d805460ff19908116909155600f80549091169055600190565b6005546001600160a01b036101009091041633146112595760405162461bcd60e51b8152600401610ae690612e0c565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9591015b60405180910390a25050565b6005546001600160a01b036101009091041633146112e95760405162461bcd60e51b8152600401610ae690612e0c565b60005b8151811015610b59576000601b600084848151811061130d5761130d612e6a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061134981612e80565b9150506112ec565b6005546001600160a01b036101009091041633146113815760405162461bcd60e51b8152600401610ae690612e0c565b600d54610100900460ff16156113d95760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610ae6565b600d805462ffff0019166201010017905543600b55601a55565b6005546001600160a01b036101009091041633146114235760405162461bcd60e51b8152600401610ae690612e0c565b600d8054911515620100000262ff000019909216919091179055565b606060048054610cbe90612e99565b6005546001600160a01b0361010090910416331461147e5760405162461bcd60e51b8152600401610ae690612e0c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036115255760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ae6565b610b598282612690565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ae6565b6115be3385858403611be9565b5060019392505050565b6000610d4e338484611d0d565b6005546001600160a01b036101009091041633146116055760405162461bcd60e51b8152600401610ae690612e0c565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016112ad565b6005546001600160a01b0361010090910416331461168d5760405162461bcd60e51b8152600401610ae690612e0c565b60055460ff1661169e90600a612fb7565b60646116a960025490565b6116b4906001612fc6565b6116be9190612fdd565b6116c89190612fdd565b81116117215760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b6064820152608401610ae6565b60055460ff1661173290600a612fb7565b61173c9082612fc6565b60095550565b6005546001600160a01b036101009091041633146117725760405162461bcd60e51b8152600401610ae690612e0c565b60005b828110156117e357816018600086868581811061179457611794612e6a565b90506020020160208101906117a99190612c48565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117db81612e80565b915050611775565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b3583838360405161181793929190612fff565b60405180910390a1505050565b6005546000906001600160a01b036101009091041633146118575760405162461bcd60e51b8152600401610ae690612e0c565b50600f805460ff19169055600190565b6005546001600160a01b036101009091041633146118975760405162461bcd60e51b8152600401610ae690612e0c565b6019546118d95760405162461bcd60e51b815260206004820152601060248201526f4e6f20626f747320746f20626c6f636b60801b6044820152606401610ae6565b60005b60195481101561198957601b6000601983815481106118fd576118fd612e6a565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611977576001601b60006019848154811061194257611942612e6a565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790555b8061198181612e80565b9150506118dc565b50611996601960006129aa565b565b6005546001600160a01b036101009091041633146119c85760405162461bcd60e51b8152600401610ae690612e0c565b6001600160a01b038116611a2d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae6565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b038316611aba5760405162461bcd60e51b8152600401610ae690613058565b6001600160a01b038216611ae05760405162461bcd60e51b8152600401610ae69061309d565b6001600160a01b03831660009081526020819052604090205481811015611b585760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ae6565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611b8f908490612e57565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bdb91815260200190565b60405180910390a350505050565b6001600160a01b038316611c4b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ae6565b6001600160a01b038216611cac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ae6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d335760405162461bcd60e51b8152600401610ae690613058565b6001600160a01b038216611d595760405162461bcd60e51b8152600401610ae69061309d565b6001600160a01b0382166000908152601b602052604090205460ff16158015611d9b57506001600160a01b0383166000908152601b602052604090205460ff16155b611dd15760405162461bcd60e51b81526020600482015260076024820152664e6f20626f747360c81b6044820152606401610ae6565b80600003611de557610caa83836000611a94565b600d54610100900460ff16611e7f576001600160a01b03831660009081526018602052604090205460ff1680611e3357506001600160a01b03821660009081526018602052604090205460ff165b611e7f5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420616374697665207965742e0000000000006044820152606401610ae6565b600d5460ff1615612293576005546001600160a01b038481166101009092041614801590611ec057506005546001600160a01b038381166101009092041614155b8015611ed457506001600160a01b03821615155b8015611eeb57506001600160a01b03821661dead14155b8015611f015750600554600160a81b900460ff16155b1561229357600f5460ff161561201957326000908152600e60205260409020544390611f2e90600f612e57565b10611f7b5760405162461bcd60e51b815260206004820152601760248201527f5472616e736665722044656c617920656e61626c65642e0000000000000000006044820152606401610ae6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158015611fef57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561201957326000908152600e602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601d602052604090205460ff16801561205a57506001600160a01b0382166000908152601c602052604090205460ff16155b15612148576007548111156120cf5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610ae6565b6009546001600160a01b0383166000908152602081905260409020546120f59083612e57565b11156121435760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c657400000000006044820152606401610ae6565b612293565b6001600160a01b0382166000908152601d602052604090205460ff16801561218957506001600160a01b0383166000908152601c602052604090205460ff16155b156121ff576007548111156121435760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610ae6565b6001600160a01b0382166000908152601c602052604090205460ff16612293576009546001600160a01b0383166000908152602081905260409020546122459083612e57565b11156122935760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c657400000000006044820152606401610ae6565b30600090815260208190526040902054600854811080159081906122bf5750600d5462010000900460ff165b80156122d55750600554600160a81b900460ff16155b80156122fa57506001600160a01b0385166000908152601d602052604090205460ff16155b801561231f57506001600160a01b03851660009081526018602052604090205460ff16155b801561234457506001600160a01b03841660009081526018602052604090205460ff16155b15612372576005805460ff60a81b1916600160a81b1790556123646126fa565b6005805460ff60a81b191690555b6005546001600160a01b03861660009081526018602052604090205460ff600160a81b9092048216159116806123c057506001600160a01b03851660009081526018602052604090205460ff165b156123c9575060005b6000811561267c5743601a54600b546123e29190612e57565b1015801561242a57506001600160a01b0386166000908152601d602052604090205460ff168061242a57506001600160a01b0387166000908152601d602052604090205460ff165b156124fd57612710601354866124409190612fc6565b61244a9190612fdd565b90506013546015548261245d9190612fc6565b6124679190612fdd565b601760008282546124789190612e57565b909155505060135460145461248d9083612fc6565b6124979190612fdd565b601660008282546124a89190612e57565b9091555050601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b03881617905561265e565b6001600160a01b0386166000908152601d602052604090205460ff16801561252757506000601054115b156125b0576127106010548661253d9190612fc6565b6125479190612fdd565b90506010546012548261255a9190612fc6565b6125649190612fdd565b601760008282546125759190612e57565b909155505060105460115461258a9083612fc6565b6125949190612fdd565b601660008282546125a59190612e57565b9091555061265e9050565b6001600160a01b0387166000908152601d602052604090205460ff1680156125da57506000601354115b1561265e57612710601354866125f09190612fc6565b6125fa9190612fdd565b90506013546015548261260d9190612fc6565b6126179190612fdd565b601760008282546126289190612e57565b909155505060135460145461263d9083612fc6565b6126479190612fdd565b601660008282546126589190612e57565b90915550505b801561266f5761266f873083611a94565b61267981866130e0565b94505b612687878787611a94565b50505050505050565b6001600160a01b0382166000908152601d60205260409020805460ff19168215151790556126be8282611229565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b306000908152602081905260408120549050600060165460175461271e9190612e57565b905081158061272b575080155b15612734575050565b60175415612814576000816017548461274d9190612fc6565b6127579190612fdd565b9050612784307f000000000000000000000000000000000000000000000000000000000000000083611a94565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127df57600080fd5b505af19250505080156127f0575060015b506127fb81846130e0565b92506017548261280b91906130e0565b60006017559150505b8115610b5957604080516002808252606082018352610b599285926000929091602083019080368337019050509050308160008151811061285757612857612e6a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f991906130f3565b8160018151811061290c5761290c612e6a565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81527f000000000000000000000000000000000000000000000000000000000000000083169263791ac9479261297492879260009288929116904290600401613110565b600060405180830381600087803b15801561298e57600080fd5b505af11580156129a2573d6000803e3d6000fd5b505050505050565b50805460008255906000526020600020908101906129c891906129cb565b50565b5b808211156129e057600081556001016129cc565b5090565b600080604083850312156129f757600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a4557612a45612a06565b604052919050565b600067ffffffffffffffff821115612a6757612a67612a06565b5060051b60200190565b6001600160a01b03811681146129c857600080fd5b600082601f830112612a9757600080fd5b81356020612aac612aa783612a4d565b612a1c565b82815260059290921b84018101918181019086841115612acb57600080fd5b8286015b84811015612aef578035612ae281612a71565b8352918301918301612acf565b509695505050505050565b60008060408385031215612b0d57600080fd5b823567ffffffffffffffff80821115612b2557600080fd5b612b3186838701612a86565b9350602091508185013581811115612b4857600080fd5b85019050601f81018613612b5b57600080fd5b8035612b69612aa782612a4d565b81815260059190911b82018301908381019088831115612b8857600080fd5b928401925b82841015612ba657833582529284019290840190612b8d565b80955050505050509250929050565b600060208083528351808285015260005b81811015612be257858101830151858201604001528201612bc6565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612c1657600080fd5b8235612c2181612a71565b946020939093013593505050565b600060208284031215612c4157600080fd5b5035919050565b600060208284031215612c5a57600080fd5b8135612c6581612a71565b9392505050565b600080600060608486031215612c8157600080fd5b8335612c8c81612a71565b92506020840135612c9c81612a71565b929592945050506040919091013590565b600060208284031215612cbf57600080fd5b813567ffffffffffffffff811115612cd657600080fd5b612ce284828501612a86565b949350505050565b80358015158114612cfa57600080fd5b919050565b60008060408385031215612d1257600080fd5b8235612d1d81612a71565b9150612d2b60208401612cea565b90509250929050565b600060208284031215612d4657600080fd5b612c6582612cea565b600080600060408486031215612d6457600080fd5b833567ffffffffffffffff80821115612d7c57600080fd5b818601915086601f830112612d9057600080fd5b813581811115612d9f57600080fd5b8760208260051b8501011115612db457600080fd5b602092830195509350612dca9186019050612cea565b90509250925092565b60008060408385031215612de657600080fd5b8235612df181612a71565b91506020830135612e0181612a71565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d5257610d52612e41565b634e487b7160e01b600052603260045260246000fd5b600060018201612e9257612e92612e41565b5060010190565b600181811c90821680612ead57607f821691505b602082108103612ecd57634e487b7160e01b600052602260045260246000fd5b50919050565b600181815b80851115612f0e578160001904821115612ef457612ef4612e41565b80851615612f0157918102915b93841c9390800290612ed8565b509250929050565b600082612f2557506001610d52565b81612f3257506000610d52565b8160018114612f485760028114612f5257612f6e565b6001915050610d52565b60ff841115612f6357612f63612e41565b50506001821b610d52565b5060208310610133831016604e8410600b8410161715612f91575081810a610d52565b612f9b8383612ed3565b8060001904821115612faf57612faf612e41565b029392505050565b6000612c6560ff841683612f16565b8082028115828204841417610d5257610d52612e41565b600082612ffa57634e487b7160e01b600052601260045260246000fd5b500490565b6040808252810183905260008460608301825b8681101561304257823561302581612a71565b6001600160a01b0316825260209283019290910190600101613012565b5080925050508215156020830152949350505050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610d5257610d52612e41565b60006020828403121561310557600080fd5b8151612c6581612a71565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131605784516001600160a01b03168352938301939183019160010161313b565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220b243736fcb3f603a3c19c896f9786632cf0dd1e4c2215a89d1b9648e4be3698964736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806382aa7c68116101d1578063c492f04611610102578063e884f260116100a0578063f2fde38b1161006f578063f2fde38b14610a4a578063f8b45b0514610a6a578063fb002c9714610a80578063fd72e22a14610a9657600080fd5b8063e884f260146109f4578063e8d2bdec14610a09578063ee40166e14610a1e578063efcc1b2f14610a3457600080fd5b8063ccb61358116100dc578063ccb613581461096c578063d0a3981414610982578063dd62ed3e14610998578063e2f45605146109de57600080fd5b8063c492f0461461091c578063c876d0b91461093c578063c8c8ebe41461095657600080fd5b8063a9059cbb1161016f578063b9e9370011610149578063b9e93700146108a7578063bbc0c742146108bd578063c0246668146108dc578063c18bc195146108fc57600080fd5b8063a9059cbb14610827578063abb8105214610847578063b62496f51461087757600080fd5b806395d89b41116101ab57806395d89b41146107bc5780639a36f932146107d15780639a7a23d6146107e7578063a457c2d71461080757600080fd5b806382aa7c68146107595780638da5cb5b14610779578063924de9b71461079c57600080fd5b8063313ce567116102ab5780636ddd1713116102495780637506cbd8116102235780637506cbd8146106ee578063751039fc146107045780637571336a146107195780637911ef9d1461073957600080fd5b80636ddd17131461068357806370a08231146106a3578063715018a6146106d957600080fd5b8063452ed4f111610285578063452ed4f1146105dc5780634a62bb65146106105780634fbee1931461062a57806366ca9b831461066357600080fd5b8063313ce5671461057a578063395093511461059c5780633d2cc56c146105bc57600080fd5b8063106b5da1116103185780631a8145bb116102f25780631a8145bb1461050e5780631fc851bd1461052457806323b872dd1461053a57806330d5d18d1461055a57600080fd5b8063106b5da1146104a957806310d5de53146104c957806318160ddd146104f957600080fd5b80630758d924116103545780630758d924146103f3578063095ea7b31461043f578063099d0d301461046f5780630f4432e31461049357600080fd5b806302dbd8f81461038657806304135325146103a857806306fdde03146103c857600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103a66103a13660046129e4565b610ab6565b005b3480156103b457600080fd5b506103a66103c3366004612afa565b610b5d565b3480156103d457600080fd5b506103dd610caf565b6040516103ea9190612bb5565b60405180910390f35b3480156103ff57600080fd5b506104277f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103ea565b34801561044b57600080fd5b5061045f61045a366004612c03565b610d41565b60405190151581526020016103ea565b34801561047b57600080fd5b5061048560125481565b6040519081526020016103ea565b34801561049f57600080fd5b50610485600a5481565b3480156104b557600080fd5b506103a66104c4366004612c2f565b610d58565b3480156104d557600080fd5b5061045f6104e4366004612c48565b601c6020526000908152604090205460ff1681565b34801561050557600080fd5b50600254610485565b34801561051a57600080fd5b5061048560175481565b34801561053057600080fd5b50610485600c5481565b34801561054657600080fd5b5061045f610555366004612c6c565b610e4b565b34801561056657600080fd5b506103a6610575366004612c48565b610efe565b34801561058657600080fd5b5060055460405160ff90911681526020016103ea565b3480156105a857600080fd5b5061045f6105b7366004612c03565b610fec565b3480156105c857600080fd5b506103a66105d7366004612cad565b611028565b3480156105e857600080fd5b506104277f00000000000000000000000040de6fdca1eed2c19e336e47908a25a53364707081565b34801561061c57600080fd5b50600d5461045f9060ff1681565b34801561063657600080fd5b5061045f610645366004612c48565b6001600160a01b031660009081526018602052604090205460ff1690565b34801561066f57600080fd5b506103a661067e3660046129e4565b6110c0565b34801561068f57600080fd5b50600d5461045f9062010000900460ff1681565b3480156106af57600080fd5b506104856106be366004612c48565b6001600160a01b031660009081526020819052604090205490565b3480156106e557600080fd5b506103a661115a565b3480156106fa57600080fd5b5061048560115481565b34801561071057600080fd5b5061045f6111da565b34801561072557600080fd5b506103a6610734366004612cff565b611229565b34801561074557600080fd5b506103a6610754366004612cad565b6112b9565b34801561076557600080fd5b506103a6610774366004612c2f565b611351565b34801561078557600080fd5b5060055461010090046001600160a01b0316610427565b3480156107a857600080fd5b506103a66107b7366004612d34565b6113f3565b3480156107c857600080fd5b506103dd61143f565b3480156107dd57600080fd5b5061048561271081565b3480156107f357600080fd5b506103a6610802366004612cff565b61144e565b34801561081357600080fd5b5061045f610822366004612c03565b61152f565b34801561083357600080fd5b5061045f610842366004612c03565b6115c8565b34801561085357600080fd5b5061045f610862366004612c48565b601b6020526000908152604090205460ff1681565b34801561088357600080fd5b5061045f610892366004612c48565b601d6020526000908152604090205460ff1681565b3480156108b357600080fd5b5061048560135481565b3480156108c957600080fd5b50600d5461045f90610100900460ff1681565b3480156108e857600080fd5b506103a66108f7366004612cff565b6115d5565b34801561090857600080fd5b506103a6610917366004612c2f565b61165d565b34801561092857600080fd5b506103a6610937366004612d4f565b611742565b34801561094857600080fd5b50600f5461045f9060ff1681565b34801561096257600080fd5b5061048560075481565b34801561097857600080fd5b5061048560155481565b34801561098e57600080fd5b5061048560105481565b3480156109a457600080fd5b506104856109b3366004612dd3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109ea57600080fd5b5061048560085481565b348015610a0057600080fd5b5061045f611824565b348015610a1557600080fd5b506103a6611867565b348015610a2a57600080fd5b50610485600b5481565b348015610a4057600080fd5b5061048560145481565b348015610a5657600080fd5b506103a6610a65366004612c48565b611998565b348015610a7657600080fd5b5061048560095481565b348015610a8c57600080fd5b5061048560165481565b348015610aa257600080fd5b50600654610427906001600160a01b031681565b6005546001600160a01b03610100909104163314610aef5760405162461bcd60e51b8152600401610ae690612e0c565b60405180910390fd5b60118290556012819055610b038183612e57565b60108190556117701015610b595760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b65657020666565732061742031303025206f72206c65737300006044820152606401610ae6565b5050565b6005546001600160a01b03610100909104163314610b8d5760405162461bcd60e51b8152600401610ae690612e0c565b8051825114610bde5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610ae6565b610258825110610c4f5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610ae6565b60005b8251811015610caa57610c9833848381518110610c7157610c71612e6a565b6020026020010151848481518110610c8b57610c8b612e6a565b6020026020010151611a94565b80610ca281612e80565b915050610c52565b505050565b606060038054610cbe90612e99565b80601f0160208091040260200160405190810160405280929190818152602001828054610cea90612e99565b8015610d375780601f10610d0c57610100808354040283529160200191610d37565b820191906000526020600020905b815481529060010190602001808311610d1a57829003601f168201915b5050505050905090565b6000610d4e338484611be9565b5060015b92915050565b6005546001600160a01b03610100909104163314610d885760405162461bcd60e51b8152600401610ae690612e0c565b60055460ff16610d9990600a612fb7565b6103e8610da560025490565b610db0906001612fc6565b610dba9190612fdd565b610dc49190612fdd565b8111610e2a5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610ae6565b60055460ff16610e3b90600a612fb7565b610e459082612fc6565b60075550565b6000610e58848484611d0d565b6001600160a01b03841660009081526001602090815260408083203384529091529020546000198114610ef35782811015610ee65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ae6565b610ef38533858403611be9565b506001949350505050565b6005546001600160a01b03610100909104163314610f2e5760405162461bcd60e51b8152600401610ae690612e0c565b6001600160a01b038116610f845760405162461bcd60e51b815260206004820152601860248201527f6d6179206e6f742073657420746f2030206164647265737300000000000000006044820152606401610ae6565b610f8f8160016115d5565b6006546040516001600160a01b03918216918316907f086aa05ff00214e2d0c7c02b8a46b2614ad955732e6b43aa8afca69ed1ad76f890600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d4e918590611023908690612e57565b611be9565b6005546001600160a01b036101009091041633146110585760405162461bcd60e51b8152600401610ae690612e0c565b60005b8151811015610b59576001601b600084848151811061107c5761107c612e6a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806110b881612e80565b91505061105b565b6005546001600160a01b036101009091041633146110f05760405162461bcd60e51b8152600401610ae690612e0c565b601482905560158190556111048183612e57565b60138190556117701015610b595760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b65657020666565732061742031303025206f72206c65737300006044820152606401610ae6565b6005546001600160a01b0361010090910416331461118a5760405162461bcd60e51b8152600401610ae690612e0c565b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6005546000906001600160a01b0361010090910416331461120d5760405162461bcd60e51b8152600401610ae690612e0c565b50600d805460ff19908116909155600f80549091169055600190565b6005546001600160a01b036101009091041633146112595760405162461bcd60e51b8152600401610ae690612e0c565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9591015b60405180910390a25050565b6005546001600160a01b036101009091041633146112e95760405162461bcd60e51b8152600401610ae690612e0c565b60005b8151811015610b59576000601b600084848151811061130d5761130d612e6a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061134981612e80565b9150506112ec565b6005546001600160a01b036101009091041633146113815760405162461bcd60e51b8152600401610ae690612e0c565b600d54610100900460ff16156113d95760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610ae6565b600d805462ffff0019166201010017905543600b55601a55565b6005546001600160a01b036101009091041633146114235760405162461bcd60e51b8152600401610ae690612e0c565b600d8054911515620100000262ff000019909216919091179055565b606060048054610cbe90612e99565b6005546001600160a01b0361010090910416331461147e5760405162461bcd60e51b8152600401610ae690612e0c565b7f00000000000000000000000040de6fdca1eed2c19e336e47908a25a5336470706001600160a01b0316826001600160a01b0316036115255760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ae6565b610b598282612690565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ae6565b6115be3385858403611be9565b5060019392505050565b6000610d4e338484611d0d565b6005546001600160a01b036101009091041633146116055760405162461bcd60e51b8152600401610ae690612e0c565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016112ad565b6005546001600160a01b0361010090910416331461168d5760405162461bcd60e51b8152600401610ae690612e0c565b60055460ff1661169e90600a612fb7565b60646116a960025490565b6116b4906001612fc6565b6116be9190612fdd565b6116c89190612fdd565b81116117215760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b6064820152608401610ae6565b60055460ff1661173290600a612fb7565b61173c9082612fc6565b60095550565b6005546001600160a01b036101009091041633146117725760405162461bcd60e51b8152600401610ae690612e0c565b60005b828110156117e357816018600086868581811061179457611794612e6a565b90506020020160208101906117a99190612c48565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117db81612e80565b915050611775565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b3583838360405161181793929190612fff565b60405180910390a1505050565b6005546000906001600160a01b036101009091041633146118575760405162461bcd60e51b8152600401610ae690612e0c565b50600f805460ff19169055600190565b6005546001600160a01b036101009091041633146118975760405162461bcd60e51b8152600401610ae690612e0c565b6019546118d95760405162461bcd60e51b815260206004820152601060248201526f4e6f20626f747320746f20626c6f636b60801b6044820152606401610ae6565b60005b60195481101561198957601b6000601983815481106118fd576118fd612e6a565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611977576001601b60006019848154811061194257611942612e6a565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790555b8061198181612e80565b9150506118dc565b50611996601960006129aa565b565b6005546001600160a01b036101009091041633146119c85760405162461bcd60e51b8152600401610ae690612e0c565b6001600160a01b038116611a2d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae6565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b038316611aba5760405162461bcd60e51b8152600401610ae690613058565b6001600160a01b038216611ae05760405162461bcd60e51b8152600401610ae69061309d565b6001600160a01b03831660009081526020819052604090205481811015611b585760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ae6565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611b8f908490612e57565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bdb91815260200190565b60405180910390a350505050565b6001600160a01b038316611c4b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ae6565b6001600160a01b038216611cac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ae6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d335760405162461bcd60e51b8152600401610ae690613058565b6001600160a01b038216611d595760405162461bcd60e51b8152600401610ae69061309d565b6001600160a01b0382166000908152601b602052604090205460ff16158015611d9b57506001600160a01b0383166000908152601b602052604090205460ff16155b611dd15760405162461bcd60e51b81526020600482015260076024820152664e6f20626f747360c81b6044820152606401610ae6565b80600003611de557610caa83836000611a94565b600d54610100900460ff16611e7f576001600160a01b03831660009081526018602052604090205460ff1680611e3357506001600160a01b03821660009081526018602052604090205460ff165b611e7f5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420616374697665207965742e0000000000006044820152606401610ae6565b600d5460ff1615612293576005546001600160a01b038481166101009092041614801590611ec057506005546001600160a01b038381166101009092041614155b8015611ed457506001600160a01b03821615155b8015611eeb57506001600160a01b03821661dead14155b8015611f015750600554600160a81b900460ff16155b1561229357600f5460ff161561201957326000908152600e60205260409020544390611f2e90600f612e57565b10611f7b5760405162461bcd60e51b815260206004820152601760248201527f5472616e736665722044656c617920656e61626c65642e0000000000000000006044820152606401610ae6565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614158015611fef57507f00000000000000000000000040de6fdca1eed2c19e336e47908a25a5336470706001600160a01b0316826001600160a01b031614155b1561201957326000908152600e602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601d602052604090205460ff16801561205a57506001600160a01b0382166000908152601c602052604090205460ff16155b15612148576007548111156120cf5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610ae6565b6009546001600160a01b0383166000908152602081905260409020546120f59083612e57565b11156121435760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c657400000000006044820152606401610ae6565b612293565b6001600160a01b0382166000908152601d602052604090205460ff16801561218957506001600160a01b0383166000908152601c602052604090205460ff16155b156121ff576007548111156121435760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610ae6565b6001600160a01b0382166000908152601c602052604090205460ff16612293576009546001600160a01b0383166000908152602081905260409020546122459083612e57565b11156122935760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c657400000000006044820152606401610ae6565b30600090815260208190526040902054600854811080159081906122bf5750600d5462010000900460ff165b80156122d55750600554600160a81b900460ff16155b80156122fa57506001600160a01b0385166000908152601d602052604090205460ff16155b801561231f57506001600160a01b03851660009081526018602052604090205460ff16155b801561234457506001600160a01b03841660009081526018602052604090205460ff16155b15612372576005805460ff60a81b1916600160a81b1790556123646126fa565b6005805460ff60a81b191690555b6005546001600160a01b03861660009081526018602052604090205460ff600160a81b9092048216159116806123c057506001600160a01b03851660009081526018602052604090205460ff165b156123c9575060005b6000811561267c5743601a54600b546123e29190612e57565b1015801561242a57506001600160a01b0386166000908152601d602052604090205460ff168061242a57506001600160a01b0387166000908152601d602052604090205460ff165b156124fd57612710601354866124409190612fc6565b61244a9190612fdd565b90506013546015548261245d9190612fc6565b6124679190612fdd565b601760008282546124789190612e57565b909155505060135460145461248d9083612fc6565b6124979190612fdd565b601660008282546124a89190612e57565b9091555050601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b03881617905561265e565b6001600160a01b0386166000908152601d602052604090205460ff16801561252757506000601054115b156125b0576127106010548661253d9190612fc6565b6125479190612fdd565b90506010546012548261255a9190612fc6565b6125649190612fdd565b601760008282546125759190612e57565b909155505060105460115461258a9083612fc6565b6125949190612fdd565b601660008282546125a59190612e57565b9091555061265e9050565b6001600160a01b0387166000908152601d602052604090205460ff1680156125da57506000601354115b1561265e57612710601354866125f09190612fc6565b6125fa9190612fdd565b90506013546015548261260d9190612fc6565b6126179190612fdd565b601760008282546126289190612e57565b909155505060135460145461263d9083612fc6565b6126479190612fdd565b601660008282546126589190612e57565b90915550505b801561266f5761266f873083611a94565b61267981866130e0565b94505b612687878787611a94565b50505050505050565b6001600160a01b0382166000908152601d60205260409020805460ff19168215151790556126be8282611229565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b306000908152602081905260408120549050600060165460175461271e9190612e57565b905081158061272b575080155b15612734575050565b60175415612814576000816017548461274d9190612fc6565b6127579190612fdd565b9050612784307f00000000000000000000000040de6fdca1eed2c19e336e47908a25a53364707083611a94565b7f00000000000000000000000040de6fdca1eed2c19e336e47908a25a5336470706001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127df57600080fd5b505af19250505080156127f0575060015b506127fb81846130e0565b92506017548261280b91906130e0565b60006017559150505b8115610b5957604080516002808252606082018352610b599285926000929091602083019080368337019050509050308160008151811061285757612857612e6a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f991906130f3565b8160018151811061290c5761290c612e6a565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83169263791ac9479261297492879260009288929116904290600401613110565b600060405180830381600087803b15801561298e57600080fd5b505af11580156129a2573d6000803e3d6000fd5b505050505050565b50805460008255906000526020600020908101906129c891906129cb565b50565b5b808211156129e057600081556001016129cc565b5090565b600080604083850312156129f757600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a4557612a45612a06565b604052919050565b600067ffffffffffffffff821115612a6757612a67612a06565b5060051b60200190565b6001600160a01b03811681146129c857600080fd5b600082601f830112612a9757600080fd5b81356020612aac612aa783612a4d565b612a1c565b82815260059290921b84018101918181019086841115612acb57600080fd5b8286015b84811015612aef578035612ae281612a71565b8352918301918301612acf565b509695505050505050565b60008060408385031215612b0d57600080fd5b823567ffffffffffffffff80821115612b2557600080fd5b612b3186838701612a86565b9350602091508185013581811115612b4857600080fd5b85019050601f81018613612b5b57600080fd5b8035612b69612aa782612a4d565b81815260059190911b82018301908381019088831115612b8857600080fd5b928401925b82841015612ba657833582529284019290840190612b8d565b80955050505050509250929050565b600060208083528351808285015260005b81811015612be257858101830151858201604001528201612bc6565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612c1657600080fd5b8235612c2181612a71565b946020939093013593505050565b600060208284031215612c4157600080fd5b5035919050565b600060208284031215612c5a57600080fd5b8135612c6581612a71565b9392505050565b600080600060608486031215612c8157600080fd5b8335612c8c81612a71565b92506020840135612c9c81612a71565b929592945050506040919091013590565b600060208284031215612cbf57600080fd5b813567ffffffffffffffff811115612cd657600080fd5b612ce284828501612a86565b949350505050565b80358015158114612cfa57600080fd5b919050565b60008060408385031215612d1257600080fd5b8235612d1d81612a71565b9150612d2b60208401612cea565b90509250929050565b600060208284031215612d4657600080fd5b612c6582612cea565b600080600060408486031215612d6457600080fd5b833567ffffffffffffffff80821115612d7c57600080fd5b818601915086601f830112612d9057600080fd5b813581811115612d9f57600080fd5b8760208260051b8501011115612db457600080fd5b602092830195509350612dca9186019050612cea565b90509250925092565b60008060408385031215612de657600080fd5b8235612df181612a71565b91506020830135612e0181612a71565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d5257610d52612e41565b634e487b7160e01b600052603260045260246000fd5b600060018201612e9257612e92612e41565b5060010190565b600181811c90821680612ead57607f821691505b602082108103612ecd57634e487b7160e01b600052602260045260246000fd5b50919050565b600181815b80851115612f0e578160001904821115612ef457612ef4612e41565b80851615612f0157918102915b93841c9390800290612ed8565b509250929050565b600082612f2557506001610d52565b81612f3257506000610d52565b8160018114612f485760028114612f5257612f6e565b6001915050610d52565b60ff841115612f6357612f63612e41565b50506001821b610d52565b5060208310610133831016604e8410600b8410161715612f91575081810a610d52565b612f9b8383612ed3565b8060001904821115612faf57612faf612e41565b029392505050565b6000612c6560ff841683612f16565b8082028115828204841417610d5257610d52612e41565b600082612ffa57634e487b7160e01b600052601260045260246000fd5b500490565b6040808252810183905260008460608301825b8681101561304257823561302581612a71565b6001600160a01b0316825260209283019290910190600101613012565b5080925050508215156020830152949350505050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610d5257610d52612e41565b60006020828403121561310557600080fd5b8151612c6581612a71565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131605784516001600160a01b03168352938301939183019160010161313b565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220b243736fcb3f603a3c19c896f9786632cf0dd1e4c2215a89d1b9648e4be3698964736f6c63430008130033

Deployed Bytecode Sourcemap

11028:15287:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17199:324;;;;;;;;;;-1:-1:-1;17199:324:0;;;;;:::i;:::-;;:::i;:::-;;25873:435;;;;;;;;;;-1:-1:-1;25873:435:0;;;;;:::i;:::-;;:::i;4270:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11070:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3623:32:1;;;3605:51;;3593:2;3578:18;11070:37:0;3441:221:1;5191:169:0;;;;;;;;;;-1:-1:-1;5191:169:0;;;;;:::i;:::-;;:::i;:::-;;;4152:14:1;;4145:22;4127:41;;4115:2;4100:18;5191:169:0;3987:187:1;12098:31:0;;;;;;;;;;;;;;;;;;;4325:25:1;;;4313:2;4298:18;12098:31:0;4179:177:1;11347:39:0;;;;;;;;;;;;;;;;16355:256;;;;;;;;;;-1:-1:-1;16355:256:0;;;;;:::i;:::-;;:::i;12600:64::-;;;;;;;;;;-1:-1:-1;12600:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4598:108;;;;;;;;;;-1:-1:-1;4686:12:0;;4598:108;;12298:33;;;;;;;;;;;;;;;;11509;;;;;;;;;;;;;;;;5368:573;;;;;;;;;;-1:-1:-1;5368:573:0;;;;;:::i;:::-;;:::i;18739:349::-;;;;;;;;;;-1:-1:-1;18739:349:0;;;;;:::i;:::-;;:::i;4490:100::-;;;;;;;;;;-1:-1:-1;4573:9:0;;4490:100;;4573:9;;;;5401:36:1;;5389:2;5374:18;4490:100:0;5259:184:1;5949:215:0;;;;;;;;;;-1:-1:-1;5949:215:0;;;;;:::i;:::-;;:::i;25676:189::-;;;;;;;;;;-1:-1:-1;25676:189:0;;;;;:::i;:::-;;:::i;11114:31::-;;;;;;;;;;;;;;;11618:33;;;;;;;;;;-1:-1:-1;11618:33:0;;;;;;;;19096:127;;;;;;;;;;-1:-1:-1;19096:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;19187:28:0;19163:4;19187:28;;;:19;:28;;;;;;;;;19096:127;16870:317;;;;;;;;;;-1:-1:-1;16870:317:0;;;;;:::i;:::-;;:::i;11698:31::-;;;;;;;;;;-1:-1:-1;11698:31:0;;;;;;;;;;;4714:127;;;;;;;;;;-1:-1:-1;4714:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4815:18:0;4788:7;4815:18;;;;;;;;;;;;4714:127;9037:148;;;;;;;;;;;;;:::i;12059:32::-;;;;;;;;;;;;;;;;19273:159;;;;;;;;;;;;;:::i;17531:202::-;;;;;;;;;;-1:-1:-1;17531:202:0;;;;;:::i;:::-;;:::i;25475:193::-;;;;;;;;;;-1:-1:-1;25475:193:0;;;;;:::i;:::-;;:::i;15874:272::-;;;;;;;;;;-1:-1:-1;15874:272:0;;;;;:::i;:::-;;:::i;8395:79::-;;;;;;;;;;-1:-1:-1;8460:6:0;;;;;-1:-1:-1;;;;;8460:6:0;8395:79;;16246:101;;;;;;;;;;-1:-1:-1;16246:101:0;;;;;:::i;:::-;;:::i;4378:104::-;;;;;;;;;;;;;:::i;11973:42::-;;;;;;;;;;;;12010:5;11973:42;;18247:239;;;;;;;;;;-1:-1:-1;18247:239:0;;;;;:::i;:::-;;:::i;6172:413::-;;;;;;;;;;-1:-1:-1;6172:413:0;;;;;:::i;:::-;;:::i;4849:175::-;;;;;;;;;;-1:-1:-1;4849:175:0;;;;;:::i;:::-;;:::i;12552:39::-;;;;;;;;;;-1:-1:-1;12552:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12822:58;;;;;;;;;;-1:-1:-1;12822:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12142:27;;;;;;;;;;;;;;;;11658:33;;;;;;;;;;-1:-1:-1;11658:33:0;;;;;;;;;;;17741:184;;;;;;;;;;-1:-1:-1;17741:184:0;;;;;:::i;:::-;;:::i;16623:235::-;;;;;;;;;;-1:-1:-1;16623:235:0;;;;;:::i;:::-;;:::i;17933:306::-;;;;;;;;;;-1:-1:-1;17933:306:0;;;;;:::i;:::-;;:::i;11921:39::-;;;;;;;;;;-1:-1:-1;11921:39:0;;;;;;;;11228:35;;;;;;;;;;;;;;;;12214:30;;;;;;;;;;;;;;;;12024:28;;;;;;;;;;;;;;;;5032:151;;;;;;;;;;-1:-1:-1;5032:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5148:18:0;;;5121:7;5148:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5032:151;11270:33;;;;;;;;;;;;;;;;15682:134;;;;;;;;;;;;;:::i;25142:325::-;;;;;;;;;;;;;:::i;11432:37::-;;;;;;;;;;;;;;;;12176:31;;;;;;;;;;;;;;;;9340:244;;;;;;;;;;-1:-1:-1;9340:244:0;;;;;:::i;:::-;;:::i;11310:24::-;;;;;;;;;;;;;;;;12257:34;;;;;;;;;;;;;;;;11184:31;;;;;;;;;;-1:-1:-1;11184:31:0;;;;-1:-1:-1;;;;;11184:31:0;;;17199:324;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;;;;;;;;;17300:17:::1;:34:::0;;;17345:16:::1;:32:::0;;;17404:36:::1;17364:13:::0;17320:14;17404:36:::1;:::i;:::-;17388:13;:52:::0;;;17476:4:::1;-1:-1:-1::0;17459:21:0::1;17451:64;;;::::0;-1:-1:-1;;;17451:64:0;;8591:2:1;17451:64:0::1;::::0;::::1;8573:21:1::0;8630:2;8610:18;;;8603:30;8669:32;8649:18;;;8642:60;8719:18;;17451:64:0::1;8389:354:1::0;17451:64:0::1;17199:324:::0;;:::o;25873:435::-;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;26010:12:::1;:19;25992:7;:14;:37;25984:80;;;::::0;-1:-1:-1;;;25984:80:0;;8950:2:1;25984:80:0::1;::::0;::::1;8932:21:1::0;8989:2;8969:18;;;8962:30;9028:32;9008:18;;;9001:60;9078:18;;25984:80:0::1;8748:354:1::0;25984:80:0::1;26100:3;26083:7;:14;:20;26075:87;;;::::0;-1:-1:-1;;;26075:87:0;;9309:2:1;26075:87:0::1;::::0;::::1;9291:21:1::0;9348:2;9328:18;;;9321:30;9387:34;9367:18;;;9360:62;-1:-1:-1;;;9438:18:1;;;9431:52;9500:19;;26075:87:0::1;9107:418:1::0;26075:87:0::1;26177:9;26173:126;26196:7;:14;26192:1;:18;26173:126;;;26231:56;26247:10;26259:7;26267:1;26259:10;;;;;;;;:::i;:::-;;;;;;;26271:12;26284:1;26271:15;;;;;;;;:::i;:::-;;;;;;;26231;:56::i;:::-;26212:3:::0;::::1;::::0;::::1;:::i;:::-;;;;26173:126;;;;25873:435:::0;;:::o;4270:100::-;4324:13;4357:5;4350:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4270:100;:::o;5191:169::-;5274:4;5291:39;298:10;5314:7;5323:6;5291:8;:39::i;:::-;-1:-1:-1;5348:4:0;5191:169;;;;;:::o;16355:256::-;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;4573:9;;;;16473:16:::1;::::0;:2:::1;:16;:::i;:::-;16464:4;16444:13;4686:12:::0;;;4598:108;16444:13:::1;:17;::::0;16460:1:::1;16444:17;:::i;:::-;:24;;;;:::i;:::-;16443:47;;;;:::i;:::-;16434:6;:56;16426:116;;;::::0;-1:-1:-1;;;16426:116:0;;12167:2:1;16426:116:0::1;::::0;::::1;12149:21:1::0;12206:2;12186:18;;;12179:30;12245:34;12225:18;;;12218:62;-1:-1:-1;;;12296:18:1;;;12289:45;12351:19;;16426:116:0::1;11965:411:1::0;16426:116:0::1;4573:9:::0;;;;16586:16:::1;::::0;:2:::1;:16;:::i;:::-;16576:27;::::0;:6;:27:::1;:::i;:::-;16553:20;:50:::0;-1:-1:-1;16355:256:0:o;5368:573::-;5508:4;5525:36;5535:6;5543:9;5554:6;5525:9;:36::i;:::-;-1:-1:-1;;;;;5601:19:0;;5574:24;5601:19;;;:11;:19;;;;;;;;298:10;5601:33;;;;;;;;-1:-1:-1;;5649:37:0;;5645:265;;5731:6;5711:16;:26;;5703:79;;;;-1:-1:-1;;;5703:79:0;;12583:2:1;5703:79:0;;;12565:21:1;12622:2;12602:18;;;12595:30;12661:34;12641:18;;;12634:62;-1:-1:-1;;;12712:18:1;;;12705:38;12760:19;;5703:79:0;12381:404:1;5703:79:0;5826:57;5835:6;298:10;5876:6;5857:16;:25;5826:8;:57::i;:::-;-1:-1:-1;5929:4:0;;5368:573;-1:-1:-1;;;;5368:573:0:o;18739:349::-;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18838:33:0;::::1;18830:70;;;::::0;-1:-1:-1;;;18830:70:0;;12992:2:1;18830:70:0::1;::::0;::::1;12974:21:1::0;13031:2;13011:18;;;13004:30;13070:26;13050:18;;;13043:54;13114:18;;18830:70:0::1;12790:348:1::0;18830:70:0::1;18911:42;18927:19;18948:4;18911:15;:42::i;:::-;19014:16;::::0;18969:62:::1;::::0;-1:-1:-1;;;;;19014:16:0;;::::1;::::0;18969:62;::::1;::::0;::::1;::::0;19014:16:::1;::::0;18969:62:::1;19042:16;:38:::0;;-1:-1:-1;;;;;;19042:38:0::1;-1:-1:-1::0;;;;;19042:38:0;;;::::1;::::0;;;::::1;::::0;;18739:349::o;5949:215::-;298:10;6037:4;6086:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6086:34:0;;;;;;;;;;6037:4;;6054:80;;6077:7;;6086:47;;6123:10;;6086:47;:::i;:::-;6054:8;:80::i;25676:189::-;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;25761:9:::1;25757:101;25780:10;:17;25776:1;:21;25757:101;;;25842:4;25818:6;:21;25825:10;25836:1;25825:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25818:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25818:21:0;:28;;-1:-1:-1;;25818:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25799:3;::::1;::::0;::::1;:::i;:::-;;;;25757:101;;16870:317:::0;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;16970:16:::1;:33:::0;;;17014:15:::1;:31:::0;;;17071:34:::1;17032:13:::0;16989:14;17071:34:::1;:::i;:::-;17056:12;:49:::0;;;17140:4:::1;-1:-1:-1::0;17124:20:0::1;17116:63;;;::::0;-1:-1:-1;;;17116:63:0;;8591:2:1;17116:63:0::1;::::0;::::1;8573:21:1::0;8630:2;8610:18;;;8603:30;8669:32;8649:18;;;8642:60;8719:18;;17116:63:0::1;8389:354:1::0;9037:148:0;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;9128:6:::1;::::0;9107:40:::1;::::0;9144:1:::1;::::0;9128:6:::1;::::0;::::1;-1:-1:-1::0;;;;;9128:6:0::1;::::0;9107:40:::1;::::0;9144:1;;9107:40:::1;9158:6;:19:::0;;-1:-1:-1;;;;;;9158:19:0::1;::::0;;9037:148::o;19273:159::-;8607:6;;19325:4;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;-1:-1:-1;19341:14:0::1;:22:::0;;-1:-1:-1;;19341:22:0;;::::1;::::0;;;19374:20:::1;:28:::0;;;;::::1;::::0;;19341:22;19273:159;:::o;17531:202::-;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17621:39:0;::::1;;::::0;;;:31:::1;:39;::::0;;;;;;;;:46;;-1:-1:-1;;17621:46:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17683:42;;4127:41:1;;;17683:42:0::1;::::0;4100:18:1;17683:42:0::1;;;;;;;;17531:202:::0;;:::o;25475:193::-;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;25563:9:::1;25559:102;25582:10;:17;25578:1;:21;25559:102;;;25644:5;25620:6;:21;25627:10;25638:1;25627:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25620:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25620:21:0;:29;;-1:-1:-1;;25620:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25601:3;::::1;::::0;::::1;:::i;:::-;;;;25559:102;;15874:272:::0;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;15957:13:::1;::::0;::::1;::::0;::::1;;;15956:14;15948:51;;;::::0;-1:-1:-1;;;15948:51:0;;13345:2:1;15948:51:0::1;::::0;::::1;13327:21:1::0;13384:2;13364:18;;;13357:30;13423:26;13403:18;;;13396:54;13467:18;;15948:51:0::1;13143:348:1::0;15948:51:0::1;16010:13;:20:::0;;-1:-1:-1;;16041:18:0;;;;;16091:12:::1;16070:18;:33:::0;16114:10:::1;:24:::0;15874:272::o;16246:101::-;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;16318:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;16318:21:0;;::::1;::::0;;;::::1;::::0;;16246:101::o;4378:104::-;4434:13;4467:7;4460:14;;;;;:::i;18247:239::-;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;18356:6:::1;-1:-1:-1::0;;;;;18348:14:0::1;:4;-1:-1:-1::0;;;;;18348:14:0::1;::::0;18340:84:::1;;;::::0;-1:-1:-1;;;18340:84:0;;13698:2:1;18340:84:0::1;::::0;::::1;13680:21:1::0;13737:2;13717:18;;;13710:30;13776:34;13756:18;;;13749:62;13847:27;13827:18;;;13820:55;13892:19;;18340:84:0::1;13496:421:1::0;18340:84:0::1;18437:41;18466:4;18472:5;18437:28;:41::i;6172:413::-:0;298:10;6265:4;6309:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6309:34:0;;;;;;;;;;6362:35;;;;6354:85;;;;-1:-1:-1;;;6354:85:0;;14124:2:1;6354:85:0;;;14106:21:1;14163:2;14143:18;;;14136:30;14202:34;14182:18;;;14175:62;-1:-1:-1;;;14253:18:1;;;14246:35;14298:19;;6354:85:0;13922:401:1;6354:85:0;6475:67;298:10;6498:7;6526:15;6507:16;:34;6475:8;:67::i;:::-;-1:-1:-1;6573:4:0;;6172:413;-1:-1:-1;;;6172:413:0:o;4849:175::-;4935:4;4952:42;298:10;4976:9;4987:6;4952:9;:42::i;17741:184::-;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17826:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;17826:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17883:34;;4127:41:1;;;17883:34:0::1;::::0;4100:18:1;17883:34:0::1;3987:187:1::0;16623:235:0;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;4573:9;;;;16744:16:::1;::::0;:2:::1;:16;:::i;:::-;16738:3;16718:13;4686:12:::0;;;4598:108;16718:13:::1;:17;::::0;16734:1:::1;16718:17;:::i;:::-;:23;;;;:::i;:::-;16717:44;;;;:::i;:::-;16708:6;:53;16700:100;;;::::0;-1:-1:-1;;;16700:100:0;;14530:2:1;16700:100:0::1;::::0;::::1;14512:21:1::0;14569:2;14549:18;;;14542:30;14608:34;14588:18;;;14581:62;-1:-1:-1;;;14659:18:1;;;14652:32;14701:19;;16700:100:0::1;14328:398:1::0;16700:100:0::1;4573:9:::0;;;;16833:16:::1;::::0;:2:::1;:16;:::i;:::-;16823:27;::::0;:6;:27:::1;:::i;:::-;16811:9;:39:::0;-1:-1:-1;16623:235:0:o;17933:306::-;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;18052:9:::1;18048:115;18067:19:::0;;::::1;18048:115;;;18143:8;18108:19;:32;18128:8;;18137:1;18128:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18108:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18108:32:0;:43;;-1:-1:-1;;18108:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18088:3;::::1;::::0;::::1;:::i;:::-;;;;18048:115;;;;18180:51;18212:8;;18222;18180:51;;;;;;;;:::i;:::-;;;;;;;;17933:306:::0;;;:::o;15682:134::-;8607:6;;15742:4;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;-1:-1:-1;15758:20:0::1;:28:::0;;-1:-1:-1;;15758:28:0::1;::::0;;;15682:134;:::o;25142:325::-;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;25209:11:::1;:18:::0;25201:51:::1;;;::::0;-1:-1:-1;;;25201:51:0;;15732:2:1;25201:51:0::1;::::0;::::1;15714:21:1::0;15771:2;15751:18;;;15744:30;-1:-1:-1;;;15790:18:1;;;15783:46;15846:18;;25201:51:0::1;15530:340:1::0;25201:51:0::1;25269:9;25265:164;25288:11;:18:::0;25284:22;::::1;25265:164;;;25331:6;:22;25338:11;25350:1;25338:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;25338:14:0::1;25331:22:::0;;;::::1;::::0;;;;;;;;;::::1;;25327:91;;25398:4;25373:6;:22;25380:11;25392:1;25380:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;::::0;-1:-1:-1;;;;;25380:14:0::1;25373:22:::0;;;::::1;::::0;;;;;;;;:29;;-1:-1:-1;;25373:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25327:91:::1;25308:3:::0;::::1;::::0;::::1;:::i;:::-;;;;25265:164;;;-1:-1:-1::0;25441:18:0::1;25448:11;;25441:18;:::i;:::-;25142:325::o:0;9340:244::-;8607:6;;-1:-1:-1;;;;;8607:6:0;;;;;298:10;8607:22;8599:67;;;;-1:-1:-1;;;8599:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9429:22:0;::::1;9421:73;;;::::0;-1:-1:-1;;;9421:73:0;;16077:2:1;9421:73:0::1;::::0;::::1;16059:21:1::0;16116:2;16096:18;;;16089:30;16155:34;16135:18;;;16128:62;-1:-1:-1;;;16206:18:1;;;16199:36;16252:19;;9421:73:0::1;15875:402:1::0;9421:73:0::1;9531:6;::::0;9510:38:::1;::::0;-1:-1:-1;;;;;9510:38:0;;::::1;::::0;9531:6:::1;::::0;::::1;;::::0;9510:38:::1;::::0;;;::::1;9559:6;:17:::0;;-1:-1:-1;;;;;9559:17:0;;::::1;;;-1:-1:-1::0;;;;;;9559:17:0;;::::1;::::0;;;::::1;::::0;;9340:244::o;6593:614::-;-1:-1:-1;;;;;6733:20:0;;6725:70;;;;-1:-1:-1;;;6725:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6814:23:0;;6806:71;;;;-1:-1:-1;;;6806:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6914:17:0;;6890:21;6914:17;;;;;;;;;;;6950:23;;;;6942:74;;;;-1:-1:-1;;;6942:74:0;;17294:2:1;6942:74:0;;;17276:21:1;17333:2;17313:18;;;17306:30;17372:34;17352:18;;;17345:62;-1:-1:-1;;;17423:18:1;;;17416:36;17469:19;;6942:74:0;17092:402:1;6942:74:0;-1:-1:-1;;;;;7052:17:0;;;:9;:17;;;;;;;;;;;7072:22;;;7052:42;;7116:20;;;;;;;;:30;;7088:6;;7052:9;7116:30;;7088:6;;7116:30;:::i;:::-;;;;;;;;7181:9;-1:-1:-1;;;;;7164:35:0;7173:6;-1:-1:-1;;;;;7164:35:0;;7192:6;7164:35;;;;4325:25:1;;4313:2;4298:18;;4179:177;7164:35:0;;;;;;;;6714:493;6593:614;;;:::o;7512:380::-;-1:-1:-1;;;;;7648:19:0;;7640:68;;;;-1:-1:-1;;;7640:68:0;;17701:2:1;7640:68:0;;;17683:21:1;17740:2;17720:18;;;17713:30;17779:34;17759:18;;;17752:62;-1:-1:-1;;;17830:18:1;;;17823:34;17874:19;;7640:68:0;17499:400:1;7640:68:0;-1:-1:-1;;;;;7727:21:0;;7719:68;;;;-1:-1:-1;;;7719:68:0;;18106:2:1;7719:68:0;;;18088:21:1;18145:2;18125:18;;;18118:30;18184:34;18164:18;;;18157:62;-1:-1:-1;;;18235:18:1;;;18228:32;18277:19;;7719:68:0;17904:398:1;7719:68:0;-1:-1:-1;;;;;7800:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7852:32;;4325:25:1;;;7852:32:0;;4298:18:1;7852:32:0;;;;;;;7512:380;;;:::o;19444:4392::-;-1:-1:-1;;;;;19576:18:0;;19568:68;;;;-1:-1:-1;;;19568:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19655:16:0;;19647:64;;;;-1:-1:-1;;;19647:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19731:10:0;;;;;;:6;:10;;;;;;;;19730:11;:28;;;;-1:-1:-1;;;;;;19746:12:0;;;;;;:6;:12;;;;;;;;19745:13;19730:28;19722:48;;;;-1:-1:-1;;;19722:48:0;;18509:2:1;19722:48:0;;;18491:21:1;18548:1;18528:18;;;18521:29;-1:-1:-1;;;18566:18:1;;;18559:37;18613:18;;19722:48:0;18307:330:1;19722:48:0;19787:6;19797:1;19787:11;19784:92;;19815:28;19831:4;19837:2;19841:1;19815:15;:28::i;19784:92::-;19900:13;;;;;;;19896:136;;-1:-1:-1;;;;;19937:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;19966:23:0;;;;;;:19;:23;;;;;;;;19937:52;19929:91;;;;-1:-1:-1;;;19929:91:0;;18844:2:1;19929:91:0;;;18826:21:1;18883:2;18863:18;;;18856:30;18922:28;18902:18;;;18895:56;18968:18;;19929:91:0;18642:350:1;19929:91:0;20055:14;;;;20052:1657;;;8460:6;;-1:-1:-1;;;;;20107:15:0;;;8460:6;;;;;20107:15;;;;:49;;-1:-1:-1;8460:6:0;;-1:-1:-1;;;;;20143:13:0;;;8460:6;;;;;20143:13;;20107:49;:86;;;;-1:-1:-1;;;;;;20177:16:0;;;;20107:86;:128;;;;-1:-1:-1;;;;;;20214:21:0;;20228:6;20214:21;;20107:128;:158;;;;-1:-1:-1;20257:8:0;;-1:-1:-1;;;20257:8:0;;;;20256:9;20107:158;20085:1613;;;20439:20;;;;20435:418;;;20520:9;20491:39;;;;:28;:39;;;;;;20538:12;;20491:44;;20533:2;20491:44;:::i;:::-;:59;20483:95;;;;-1:-1:-1;;;20483:95:0;;19199:2:1;20483:95:0;;;19181:21:1;19238:2;19218:18;;;19211:30;19277:25;19257:18;;;19250:53;19320:18;;20483:95:0;18997:347:1;20483:95:0;20619:9;-1:-1:-1;;;;;20605:24:0;:2;-1:-1:-1;;;;;20605:24:0;;;:49;;;;;20647:6;-1:-1:-1;;;;;20633:21:0;:2;-1:-1:-1;;;;;20633:21:0;;;20605:49;20601:233;;;20711:9;20682:39;;;;:28;:39;;;;;;20724:12;20682:54;;;;-1:-1:-1;;;;;20763:32:0;;;;;;:47;20601:233;-1:-1:-1;;;;;20921:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;20957:35:0;;;;;;:31;:35;;;;;;;;20956:36;20921:71;20917:766;;;21035:20;;21025:6;:30;;21017:96;;;;-1:-1:-1;;;21017:96:0;;19551:2:1;21017:96:0;;;19533:21:1;19590:2;19570:18;;;19563:30;19629:34;19609:18;;;19602:62;-1:-1:-1;;;19680:18:1;;;19673:51;19741:19;;21017:96:0;19349:417:1;21017:96:0;21170:9;;-1:-1:-1;;;;;4815:18:0;;4788:7;4815:18;;;;;;;;;;;21144:22;;:6;:22;:::i;:::-;:35;;21136:75;;;;-1:-1:-1;;;21136:75:0;;19973:2:1;21136:75:0;;;19955:21:1;20012:2;19992:18;;;19985:30;20051:29;20031:18;;;20024:57;20098:18;;21136:75:0;19771:351:1;21136:75:0;20917:766;;;-1:-1:-1;;;;;21288:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;21322:37:0;;;;;;:31;:37;;;;;;;;21321:38;21288:71;21284:399;;;21402:20;;21392:6;:30;;21384:97;;;;-1:-1:-1;;;21384:97:0;;20329:2:1;21384:97:0;;;20311:21:1;20368:2;20348:18;;;20341:30;20407:34;20387:18;;;20380:62;-1:-1:-1;;;20458:18:1;;;20451:52;20520:19;;21384:97:0;20127:418:1;21284:399:0;-1:-1:-1;;;;;21528:35:0;;;;;;:31;:35;;;;;;;;21524:159;;21622:9;;-1:-1:-1;;;;;4815:18:0;;4788:7;4815:18;;;;;;;;;;;21596:22;;:6;:22;:::i;:::-;:35;;21588:75;;;;-1:-1:-1;;;21588:75:0;;19973:2:1;21588:75:0;;;19955:21:1;20012:2;19992:18;;;19985:30;20051:29;20031:18;;;20024:57;20098:18;;21588:75:0;19771:351:1;21588:75:0;21764:4;21715:28;4815:18;;;;;;;;;;;21830;;21806:42;;;;;;;21879:35;;-1:-1:-1;21903:11:0;;;;;;;21879:35;:61;;;;-1:-1:-1;21932:8:0;;-1:-1:-1;;;21932:8:0;;;;21931:9;21879:61;:110;;;;-1:-1:-1;;;;;;21958:31:0;;;;;;:25;:31;;;;;;;;21957:32;21879:110;:153;;;;-1:-1:-1;;;;;;22007:25:0;;;;;;:19;:25;;;;;;;;22006:26;21879:153;:194;;;;-1:-1:-1;;;;;;22050:23:0;;;;;;:19;:23;;;;;;;;22049:24;21879:194;21861:322;;;22100:8;:15;;-1:-1:-1;;;;22100:15:0;-1:-1:-1;;;22100:15:0;;;22130:10;:8;:10::i;:::-;22155:8;:16;;-1:-1:-1;;;;22155:16:0;;;21861:322;22211:8;;-1:-1:-1;;;;;22320:25:0;;22195:12;22320:25;;;:19;:25;;;;;;22211:8;-1:-1:-1;;;22211:8:0;;;;;22210:9;;22320:25;;:52;;-1:-1:-1;;;;;;22349:23:0;;;;;;:19;:23;;;;;;;;22320:52;22317:99;;;-1:-1:-1;22399:5:0;22317:99;22436:12;22527:7;22524:1259;;;22588:12;22574:10;;22553:18;;:31;;;;:::i;:::-;:47;;:117;;;;-1:-1:-1;;;;;;22605:29:0;;;;;;:25;:29;;;;;;;;;:64;;-1:-1:-1;;;;;;22638:31:0;;;;;;:25;:31;;;;;;;;22605:64;22550:1076;;;12010:5;22706:12;;22697:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;22690:41;;22797:12;;22779:15;;22772:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22750:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;22877:12:0;;22858:16;;22851:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;22828:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22908:11:0;:20;;;;;;;-1:-1:-1;22908:20:0;;;;;;;;-1:-1:-1;;;;;;22908:20:0;-1:-1:-1;;;;;22908:20:0;;;;;22550:1076;;;-1:-1:-1;;;;;22993:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;23042:1;23026:13;;:17;22993:50;22989:637;;;12010:5;23079:13;;23070:6;:22;;;;:::i;:::-;:35;;;;:::i;:::-;23063:42;;23172:13;;23153:16;;23146:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;23124:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23254:13:0;;23234:17;;23227:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;23204:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;22989:637:0;;-1:-1:-1;22989:637:0;;-1:-1:-1;;;;;23342:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;23392:1;23377:12;;:16;23342:51;23339:287;;;12010:5;23427:12;;23418:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;23411:41;;23518:12;;23500:15;;23493:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;23471:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;23598:12:0;;23579:16;;23572:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;23549:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23339:287:0;23645:8;;23642:93;;23677:42;23693:4;23707;23714;23677:15;:42::i;:::-;23757:14;23767:4;23757:14;;:::i;:::-;;;22524:1259;23795:33;23811:4;23817:2;23821:6;23795:15;:33::i;:::-;19557:4279;;;;19444:4392;;;:::o;18494:237::-;-1:-1:-1;;;;;18577:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;18577:39:0;;;;;;;18629:38;18577:31;:39;18629:25;:38::i;:::-;18683:40;;;;;;-1:-1:-1;;;;;18683:40:0;;;;;;;;18494:237;;:::o;24373:761::-;24456:4;24412:23;4815:18;;;;;;;;;;;24412:50;;24473:25;24522:19;;24501:18;;:40;;;;:::i;:::-;24473:68;-1:-1:-1;24565:20:0;;;:46;;-1:-1:-1;24589:22:0;;24565:46;24562:60;;;24614:7;;24373:761::o;24562:60::-;24639:18;;:22;24636:396;;24677:23;24742:17;24721:18;;24703:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;24677:82;;24774:55;24798:4;24805:6;24813:15;24774;:55::i;:::-;24856:6;-1:-1:-1;;;;;24848:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24844:37;24895:34;24914:15;24895:34;;:::i;:::-;;;24965:18;;24944:39;;;;;:::i;:::-;25019:1;24998:18;:22;24944:39;-1:-1:-1;;24636:396:0;25047:19;;25044:83;;23996:16;;;24010:1;23996:16;;;;;;;;25082:33;;25099:15;;23972:21;;23996:16;;;;;;;;;;;;-1:-1:-1;23996:16:0;23972:40;;24041:4;24023;24028:1;24023:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24023:23:0;;;-1:-1:-1;;;;;24023:23:0;;;;;24067:9;-1:-1:-1;;;;;24067:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24057:4;24062:1;24057:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24057:26:0;;;:7;;;;;;;;;:26;24294:16;;24122:230;;-1:-1:-1;;;24122:230:0;;:9;:60;;;;;:230;;24197:11;;24223:1;;24267:4;;24294:16;;;24326:15;;24122:230;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23899:466;23844:521;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::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;267:127::-;328:10;323:3;319:20;316:1;309:31;359:4;356:1;349:15;383:4;380:1;373:15;399:275;470:2;464:9;535:2;516:13;;-1:-1:-1;;512:27:1;500:40;;570:18;555:34;;591:22;;;552:62;549:88;;;617:18;;:::i;:::-;653:2;646:22;399:275;;-1:-1:-1;399:275:1:o;679:183::-;739:4;772:18;764:6;761:30;758:56;;;794:18;;:::i;:::-;-1:-1:-1;839:1:1;835:14;851:4;831:25;;679:183::o;867:131::-;-1:-1:-1;;;;;942:31:1;;932:42;;922:70;;988:1;985;978:12;1003:737;1057:5;1110:3;1103:4;1095:6;1091:17;1087:27;1077:55;;1128:1;1125;1118:12;1077:55;1164:6;1151:20;1190:4;1214:60;1230:43;1270:2;1230:43;:::i;:::-;1214:60;:::i;:::-;1308:15;;;1394:1;1390:10;;;;1378:23;;1374:32;;;1339:12;;;;1418:15;;;1415:35;;;1446:1;1443;1436:12;1415:35;1482:2;1474:6;1470:15;1494:217;1510:6;1505:3;1502:15;1494:217;;;1590:3;1577:17;1607:31;1632:5;1607:31;:::i;:::-;1651:18;;1689:12;;;;1527;;1494:217;;;-1:-1:-1;1729:5:1;1003:737;-1:-1:-1;;;;;;1003:737:1:o;1745:1138::-;1863:6;1871;1924:2;1912:9;1903:7;1899:23;1895:32;1892:52;;;1940:1;1937;1930:12;1892:52;1980:9;1967:23;2009:18;2050:2;2042:6;2039:14;2036:34;;;2066:1;2063;2056:12;2036:34;2089:61;2142:7;2133:6;2122:9;2118:22;2089:61;:::i;:::-;2079:71;;2169:2;2159:12;;2224:2;2213:9;2209:18;2196:32;2253:2;2243:8;2240:16;2237:36;;;2269:1;2266;2259:12;2237:36;2292:24;;;-1:-1:-1;2347:4:1;2339:13;;2335:27;-1:-1:-1;2325:55:1;;2376:1;2373;2366:12;2325:55;2412:2;2399:16;2435:60;2451:43;2491:2;2451:43;:::i;2435:60::-;2529:15;;;2611:1;2607:10;;;;2599:19;;2595:28;;;2560:12;;;;2635:19;;;2632:39;;;2667:1;2664;2657:12;2632:39;2691:11;;;;2711:142;2727:6;2722:3;2719:15;2711:142;;;2793:17;;2781:30;;2744:12;;;;2831;;;;2711:142;;;2872:5;2862:15;;;;;;;1745:1138;;;;;:::o;2888:548::-;3000:4;3029:2;3058;3047:9;3040:21;3090:6;3084:13;3133:6;3128:2;3117:9;3113:18;3106:34;3158:1;3168:140;3182:6;3179:1;3176:13;3168:140;;;3277:14;;;3273:23;;3267:30;3243:17;;;3262:2;3239:26;3232:66;3197:10;;3168:140;;;3172:3;3357:1;3352:2;3343:6;3332:9;3328:22;3324:31;3317:42;3427:2;3420;3416:7;3411:2;3403:6;3399:15;3395:29;3384:9;3380:45;3376:54;3368:62;;;;2888:548;;;;:::o;3667:315::-;3735:6;3743;3796:2;3784:9;3775:7;3771:23;3767:32;3764:52;;;3812:1;3809;3802:12;3764:52;3851:9;3838:23;3870:31;3895:5;3870:31;:::i;:::-;3920:5;3972:2;3957:18;;;;3944:32;;-1:-1:-1;;;3667:315:1:o;4361:180::-;4420:6;4473:2;4461:9;4452:7;4448:23;4444:32;4441:52;;;4489:1;4486;4479:12;4441:52;-1:-1:-1;4512:23:1;;4361:180;-1:-1:-1;4361:180:1:o;4546:247::-;4605:6;4658:2;4646:9;4637:7;4633:23;4629:32;4626:52;;;4674:1;4671;4664:12;4626:52;4713:9;4700:23;4732:31;4757:5;4732:31;:::i;:::-;4782:5;4546:247;-1:-1:-1;;;4546:247:1:o;4798:456::-;4875:6;4883;4891;4944:2;4932:9;4923:7;4919:23;4915:32;4912:52;;;4960:1;4957;4950:12;4912:52;4999:9;4986:23;5018:31;5043:5;5018:31;:::i;:::-;5068:5;-1:-1:-1;5125:2:1;5110:18;;5097:32;5138:33;5097:32;5138:33;:::i;:::-;4798:456;;5190:7;;-1:-1:-1;;;5244:2:1;5229:18;;;;5216:32;;4798:456::o;5448:348::-;5532:6;5585:2;5573:9;5564:7;5560:23;5556:32;5553:52;;;5601:1;5598;5591:12;5553:52;5641:9;5628:23;5674:18;5666:6;5663:30;5660:50;;;5706:1;5703;5696:12;5660:50;5729:61;5782:7;5773:6;5762:9;5758:22;5729:61;:::i;:::-;5719:71;5448:348;-1:-1:-1;;;;5448:348:1:o;6009:160::-;6074:20;;6130:13;;6123:21;6113:32;;6103:60;;6159:1;6156;6149:12;6103:60;6009:160;;;:::o;6174:315::-;6239:6;6247;6300:2;6288:9;6279:7;6275:23;6271:32;6268:52;;;6316:1;6313;6306:12;6268:52;6355:9;6342:23;6374:31;6399:5;6374:31;:::i;:::-;6424:5;-1:-1:-1;6448:35:1;6479:2;6464:18;;6448:35;:::i;:::-;6438:45;;6174:315;;;;;:::o;6494:180::-;6550:6;6603:2;6591:9;6582:7;6578:23;6574:32;6571:52;;;6619:1;6616;6609:12;6571:52;6642:26;6658:9;6642:26;:::i;6679:689::-;6771:6;6779;6787;6840:2;6828:9;6819:7;6815:23;6811:32;6808:52;;;6856:1;6853;6846:12;6808:52;6896:9;6883:23;6925:18;6966:2;6958:6;6955:14;6952:34;;;6982:1;6979;6972:12;6952:34;7020:6;7009:9;7005:22;6995:32;;7065:7;7058:4;7054:2;7050:13;7046:27;7036:55;;7087:1;7084;7077:12;7036:55;7127:2;7114:16;7153:2;7145:6;7142:14;7139:34;;;7169:1;7166;7159:12;7139:34;7224:7;7217:4;7207:6;7204:1;7200:14;7196:2;7192:23;7188:34;7185:47;7182:67;;;7245:1;7242;7235:12;7182:67;7276:4;7268:13;;;;-1:-1:-1;7300:6:1;-1:-1:-1;7325:37:1;;7341:20;;;-1:-1:-1;7325:37:1;:::i;:::-;7315:47;;6679:689;;;;;:::o;7373:388::-;7441:6;7449;7502:2;7490:9;7481:7;7477:23;7473:32;7470:52;;;7518:1;7515;7508:12;7470:52;7557:9;7544:23;7576:31;7601:5;7576:31;:::i;:::-;7626:5;-1:-1:-1;7683:2:1;7668:18;;7655:32;7696:33;7655:32;7696:33;:::i;:::-;7748:7;7738:17;;;7373:388;;;;;:::o;7766:356::-;7968:2;7950:21;;;7987:18;;;7980:30;8046:34;8041:2;8026:18;;8019:62;8113:2;8098:18;;7766:356::o;8127:127::-;8188:10;8183:3;8179:20;8176:1;8169:31;8219:4;8216:1;8209:15;8243:4;8240:1;8233:15;8259:125;8324:9;;;8345:10;;;8342:36;;;8358:18;;:::i;9530:127::-;9591:10;9586:3;9582:20;9579:1;9572:31;9622:4;9619:1;9612:15;9646:4;9643:1;9636:15;9662:135;9701:3;9722:17;;;9719:43;;9742:18;;:::i;:::-;-1:-1:-1;9789:1:1;9778:13;;9662:135::o;9802:380::-;9881:1;9877:12;;;;9924;;;9945:61;;9999:4;9991:6;9987:17;9977:27;;9945:61;10052:2;10044:6;10041:14;10021:18;10018:38;10015:161;;10098:10;10093:3;10089:20;10086:1;10079:31;10133:4;10130:1;10123:15;10161:4;10158:1;10151:15;10015:161;;9802:380;;;:::o;10187:422::-;10276:1;10319:5;10276:1;10333:270;10354:7;10344:8;10341:21;10333:270;;;10413:4;10409:1;10405:6;10401:17;10395:4;10392:27;10389:53;;;10422:18;;:::i;:::-;10472:7;10462:8;10458:22;10455:55;;;10492:16;;;;10455:55;10571:22;;;;10531:15;;;;10333:270;;;10337:3;10187:422;;;;;:::o;10614:806::-;10663:5;10693:8;10683:80;;-1:-1:-1;10734:1:1;10748:5;;10683:80;10782:4;10772:76;;-1:-1:-1;10819:1:1;10833:5;;10772:76;10864:4;10882:1;10877:59;;;;10950:1;10945:130;;;;10857:218;;10877:59;10907:1;10898:10;;10921:5;;;10945:130;10982:3;10972:8;10969:17;10966:43;;;10989:18;;:::i;:::-;-1:-1:-1;;11045:1:1;11031:16;;11060:5;;10857:218;;11159:2;11149:8;11146:16;11140:3;11134:4;11131:13;11127:36;11121:2;11111:8;11108:16;11103:2;11097:4;11094:12;11090:35;11087:77;11084:159;;;-1:-1:-1;11196:19:1;;;11228:5;;11084:159;11275:34;11300:8;11294:4;11275:34;:::i;:::-;11345:6;11341:1;11337:6;11333:19;11324:7;11321:32;11318:58;;;11356:18;;:::i;:::-;11394:20;;10614:806;-1:-1:-1;;;10614:806:1:o;11425:140::-;11483:5;11512:47;11553:4;11543:8;11539:19;11533:4;11512:47;:::i;11570:168::-;11643:9;;;11674;;11691:15;;;11685:22;;11671:37;11661:71;;11712:18;;:::i;11743:217::-;11783:1;11809;11799:132;;11853:10;11848:3;11844:20;11841:1;11834:31;11888:4;11885:1;11878:15;11916:4;11913:1;11906:15;11799:132;-1:-1:-1;11945:9:1;;11743:217::o;14731:794::-;14953:2;14965:21;;;14938:18;;15021:22;;;14905:4;15100:6;15074:2;15059:18;;14905:4;15134:304;15148:6;15145:1;15142:13;15134:304;;;15223:6;15210:20;15243:31;15268:5;15243:31;:::i;:::-;-1:-1:-1;;;;;15299:31:1;15287:44;;15354:4;15413:15;;;;15378:12;;;;15327:1;15163:9;15134:304;;;15138:3;15455;15447:11;;;;15510:6;15503:14;15496:22;15489:4;15478:9;15474:20;15467:52;14731:794;;;;;;:::o;16282:401::-;16484:2;16466:21;;;16523:2;16503:18;;;16496:30;16562:34;16557:2;16542:18;;16535:62;-1:-1:-1;;;16628:2:1;16613:18;;16606:35;16673:3;16658:19;;16282:401::o;16688:399::-;16890:2;16872:21;;;16929:2;16909:18;;;16902:30;16968:34;16963:2;16948:18;;16941:62;-1:-1:-1;;;17034:2:1;17019:18;;17012:33;17077:3;17062:19;;16688:399::o;20550:128::-;20617:9;;;20638:11;;;20635:37;;;20652:18;;:::i;20683:251::-;20753:6;20806:2;20794:9;20785:7;20781:23;20777:32;20774:52;;;20822:1;20819;20812:12;20774:52;20854:9;20848:16;20873:31;20898:5;20873:31;:::i;20939:980::-;21201:4;21249:3;21238:9;21234:19;21280:6;21269:9;21262:25;21306:2;21344:6;21339:2;21328:9;21324:18;21317:34;21387:3;21382:2;21371:9;21367:18;21360:31;21411:6;21446;21440:13;21477:6;21469;21462:22;21515:3;21504:9;21500:19;21493:26;;21554:2;21546:6;21542:15;21528:29;;21575:1;21585:195;21599:6;21596:1;21593:13;21585:195;;;21664:13;;-1:-1:-1;;;;;21660:39:1;21648:52;;21755:15;;;;21720:12;;;;21696:1;21614:9;21585:195;;;-1:-1:-1;;;;;;;21836:32:1;;;;21831:2;21816:18;;21809:60;-1:-1:-1;;;21900:3:1;21885:19;21878:35;21797:3;20939:980;-1:-1:-1;;;20939:980:1:o

Swarm Source

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