ETH Price: $2,379.28 (-10.45%)

Token

Based Retard Autistic Gang (BRAG)
 

Overview

Max Total Supply

100,000,000 BRAG

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
485,100 BRAG

Value
$0.00
0x6ee19d6fc1a778f85146F3D8A9CF4f6052610C9E
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:
BRAG

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**

Website: https://www.bragcoin.xyz
Twitter: https://twitter.com/BRAG_ERC20
Telegram: https://t.me/BRAG_ERC20

**/

pragma solidity 0.8.15;

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

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

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

}

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

contract BRAG is ERC20, Ownable {

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

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address taxAddress;

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

     // Anti-sandwithc-bot mappings and variables
    mapping(address => uint256) private _holderLastBuyBlock; // to hold last Buy temporarily
    bool public transferDelayEnabled = true;

    uint256 public buyFee;
    uint256 public sellFee;


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

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

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

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

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedBuyFee(uint256 buyFee);

    event UpdatedSellFee(uint256 sellFee);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("Based Retard Autistic Gang","BRAG") {

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

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

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

        uint256 totalSupply = 1 * 1e8 * 1e18;

        maxBuyAmount = totalSupply * 7 / 1000;
        maxSellAmount = totalSupply * 7 / 1000;
        maxWalletAmount = totalSupply * 7 / 1000;
        swapTokensAtAmount = totalSupply * 1 / 100;

        buyFee = 30;
        sellFee = 70;

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

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


        taxAddress = address(newOwner);

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

    receive() external payable {}

    // only enable if no plan to airdrop

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

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

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

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

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

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

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

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

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _buyFee) external onlyOwner {
        buyFee = _buyFee;
        emit UpdatedBuyFee(buyFee);
    }

    function updateSellFees(uint256 _sellFee) external onlyOwner {
        sellFee = _sellFee;
        emit UpdatedSellFee(sellFee);
    }

    function returnToNormalTax() external onlyOwner {
        sellFee = 0;
        buyFee = 0;
    }

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

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

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

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

        // anti sandwich bot
        if (automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && to != address(this) && to != address(dexRouter)){
            _holderLastBuyBlock[to] = block.number;
        }
        require(_holderLastBuyBlock[from] < block.number, "_transfer:: Anti sandwich bot enabled. Please try again later.");

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
    
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");            
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        if(amount > maxSellAmount){
                            amount = maxSellAmount;
                        }
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max tokens per wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

        // only take fees on buys/sells, do not take on wallet transfers
        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
            uint256 fees = 0;
            // on sell
            if (automatedMarketMakerPairs[to] && sellFee > 0){
                fees = amount * sellFee / 100;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyFee > 0) {
        	    fees = amount * buyFee / 100;
            }
            if(fees > 0){
                super._transfer(from, address(this), fees);
            }
        	amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance == 0) {return;}

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

        bool success;

        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance;
        
        if(ethBalance > 0){
            (success,) = address(taxAddress).call{value: ethBalance}("");
        }
        
    }

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

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


    // function setTaxAddress(address _taxAddress) external onlyOwner {
    //     require(_taxAddress != address(0), "_taxAddress address cannot be 0");
    //     taxAddress = payable(_taxAddress);
    // }

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"UpdatedBuyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"UpdatedSellFee","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnToNormalTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600c60146101000a81548160ff0219169083151502179055506000600c60156101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280601a81526020017f4261736564205265746172642041757469737469632047616e670000000000008152506040518060400160405280600481526020017f42524147000000000000000000000000000000000000000000000000000000008152508160039081620000e0919062000e17565b508060049081620000f2919062000e17565b505050600062000107620005db60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000251573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000277919062000f68565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000305919062000f68565b6040518363ffffffff1660e01b81526004016200032492919062000fab565b6020604051808303816000875af115801562000344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036a919062000f68565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003df600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005e360201b60201c565b62000414600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005e360201b60201c565b62000449600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200067960201b60201c565b60006a52b7d2dcc80cd2e400000090506103e86007826200046b919062001007565b62000477919062001097565b6006819055506103e86007826200048f919062001007565b6200049b919062001097565b6007819055506103e8600782620004b3919062001007565b620004bf919062001097565b6008819055506064600182620004d6919062001007565b620004e2919062001097565b600b81905550601e600f8190555060466010819055506200050b836001620005e360201b60201c565b6200051e306001620005e360201b60201c565b6200053361dead6001620005e360201b60201c565b620005468360016200072c60201b60201c565b620005593060016200072c60201b60201c565b6200056e61dead60016200072c60201b60201c565b82600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005c183826200087960201b60201c565b620005d283620009c960201b60201c565b5050506200134e565b600033905090565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200066d929190620010ec565b60405180910390a15050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006e28282620005e360201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6200073c620005db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c5906200117a565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200086d91906200119c565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e29062001209565b60405180910390fd5b8060026000828254620008ff91906200122b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200095691906200122b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009bd919062001299565b60405180910390a35050565b620009d9620005db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a62906200117a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad4906200132c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c1f57607f821691505b60208210810362000c355762000c3462000bd7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c9f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c60565b62000cab868362000c60565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cf862000cf262000cec8462000cc3565b62000ccd565b62000cc3565b9050919050565b6000819050919050565b62000d148362000cd7565b62000d2c62000d238262000cff565b84845462000c6d565b825550505050565b600090565b62000d4362000d34565b62000d5081848462000d09565b505050565b5b8181101562000d785762000d6c60008262000d39565b60018101905062000d56565b5050565b601f82111562000dc75762000d918162000c3b565b62000d9c8462000c50565b8101602085101562000dac578190505b62000dc462000dbb8562000c50565b83018262000d55565b50505b505050565b600082821c905092915050565b600062000dec6000198460080262000dcc565b1980831691505092915050565b600062000e07838362000dd9565b9150826002028217905092915050565b62000e228262000b9d565b67ffffffffffffffff81111562000e3e5762000e3d62000ba8565b5b62000e4a825462000c06565b62000e5782828562000d7c565b600060209050601f83116001811462000e8f576000841562000e7a578287015190505b62000e86858262000df9565b86555062000ef6565b601f19841662000e9f8662000c3b565b60005b8281101562000ec95784890151825560018201915060208501945060208101905062000ea2565b8683101562000ee9578489015162000ee5601f89168262000dd9565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f308262000f03565b9050919050565b62000f428162000f23565b811462000f4e57600080fd5b50565b60008151905062000f628162000f37565b92915050565b60006020828403121562000f815762000f8062000efe565b5b600062000f918482850162000f51565b91505092915050565b62000fa58162000f23565b82525050565b600060408201905062000fc2600083018562000f9a565b62000fd1602083018462000f9a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010148262000cc3565b9150620010218362000cc3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200105d576200105c62000fd8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010a48262000cc3565b9150620010b18362000cc3565b925082620010c457620010c362001068565b5b828204905092915050565b60008115159050919050565b620010e681620010cf565b82525050565b600060408201905062001103600083018562000f9a565b620011126020830184620010db565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200116260208362001119565b91506200116f826200112a565b602082019050919050565b60006020820190508181036000830152620011958162001153565b9050919050565b6000602082019050620011b36000830184620010db565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011f1601f8362001119565b9150620011fe82620011b9565b602082019050919050565b600060208201905081810360008301526200122481620011e2565b9050919050565b6000620012388262000cc3565b9150620012458362000cc3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200127d576200127c62000fd8565b5b828201905092915050565b620012938162000cc3565b82525050565b6000602082019050620012b0600083018462001288565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200131460268362001119565b91506200132182620012b6565b604082019050919050565b60006020820190508181036000830152620013478162001305565b9050919050565b6154e9806200135e6000396000f3fe60806040526004361061024a5760003560e01c80638366e79a11610139578063bbc0c742116100b6578063e2cd5fcd1161007a578063e2cd5fcd1461088f578063e2f45605146108a6578063eba4c333146108d1578063f2fde38b146108fa578063f5648a4f14610923578063fc155d1d1461093a57610251565b8063bbc0c742146107aa578063c0246668146107d5578063c876d0b9146107fe578063d257b34f14610829578063dd62ed3e1461085257610251565b80639a7a23d6116100fd5780639a7a23d61461069f578063a457c2d7146106c8578063a9059cbb14610705578063aa4bde2814610742578063b62496f51461076d57610251565b80638366e79a146105ca57806388e765ff146106075780638a8c523c146106325780638da5cb5b1461064957806395d89b411461067457610251565b8063452ed4f1116101c757806370a082311161018b57806370a082311461050d578063715018a61461054a57806371fc468814610561578063751039fc1461058a5780637571336a146105a157610251565b8063452ed4f11461044a57806347062402146104755780634a62bb65146104a057806351f205e4146104cb57806366d602ae146104e257610251565b80632307b4411161020e5780632307b4411461035157806323b872dd1461037a5780632b14ca56146103b7578063313ce567146103e2578063395093511461040d57610251565b806306fdde03146102565780630758d92414610281578063095ea7b3146102ac57806310d5de53146102e957806318160ddd1461032657610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b610963565b6040516102789190613b81565b60405180910390f35b34801561028d57600080fd5b506102966109f5565b6040516102a39190613c22565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190613cc5565b610a1b565b6040516102e09190613d20565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613d3b565b610a39565b60405161031d9190613d20565b60405180910390f35b34801561033257600080fd5b5061033b610a59565b6040516103489190613d77565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190613f9d565b610a63565b005b34801561038657600080fd5b506103a1600480360381019061039c9190614015565b610bf2565b6040516103ae9190613d20565b60405180910390f35b3480156103c357600080fd5b506103cc610cea565b6040516103d99190613d77565b60405180910390f35b3480156103ee57600080fd5b506103f7610cf0565b6040516104049190614084565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190613cc5565b610cf9565b6040516104419190613d20565b60405180910390f35b34801561045657600080fd5b5061045f610da5565b60405161046c91906140ae565b60405180910390f35b34801561048157600080fd5b5061048a610dcb565b6040516104979190613d77565b60405180910390f35b3480156104ac57600080fd5b506104b5610dd1565b6040516104c29190613d20565b60405180910390f35b3480156104d757600080fd5b506104e0610de4565b005b3480156104ee57600080fd5b506104f7610f3f565b6040516105049190613d77565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190613d3b565b610f45565b6040516105419190613d77565b60405180910390f35b34801561055657600080fd5b5061055f610f8d565b005b34801561056d57600080fd5b50610588600480360381019061058391906140c9565b6110e5565b005b34801561059657600080fd5b5061059f6111bf565b005b3480156105ad57600080fd5b506105c860048036038101906105c39190614122565b61129f565b005b3480156105d657600080fd5b506105f160048036038101906105ec9190614162565b611427565b6040516105fe9190613d20565b60405180910390f35b34801561061357600080fd5b5061061c6116db565b6040516106299190613d77565b60405180910390f35b34801561063e57600080fd5b506106476116e1565b005b34801561065557600080fd5b5061065e611811565b60405161066b91906140ae565b60405180910390f35b34801561068057600080fd5b5061068961183b565b6040516106969190613b81565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190614122565b6118cd565b005b3480156106d457600080fd5b506106ef60048036038101906106ea9190613cc5565b611a48565b6040516106fc9190613d20565b60405180910390f35b34801561071157600080fd5b5061072c60048036038101906107279190613cc5565b611b33565b6040516107399190613d20565b60405180910390f35b34801561074e57600080fd5b50610757611b51565b6040516107649190613d77565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f9190613d3b565b611b57565b6040516107a19190613d20565b60405180910390f35b3480156107b657600080fd5b506107bf611b77565b6040516107cc9190613d20565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f79190614122565b611b8a565b005b34801561080a57600080fd5b50610813611cca565b6040516108209190613d20565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b91906140c9565b611cdd565b005b34801561085e57600080fd5b5061087960048036038101906108749190614162565b611e43565b6040516108869190613d77565b60405180910390f35b34801561089b57600080fd5b506108a4611eca565b005b3480156108b257600080fd5b506108bb611f73565b6040516108c89190613d77565b60405180910390f35b3480156108dd57600080fd5b506108f860048036038101906108f391906140c9565b611f79565b005b34801561090657600080fd5b50610921600480360381019061091c9190613d3b565b612053565b005b34801561092f57600080fd5b50610938612219565b005b34801561094657600080fd5b50610961600480360381019061095c91906140c9565b612321565b005b606060038054610972906141d1565b80601f016020809104026020016040519081016040528092919081815260200182805461099e906141d1565b80156109eb5780601f106109c0576101008083540402835291602001916109eb565b820191906000526020600020905b8154815290600101906020018083116109ce57829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a2f610a28612651565b8484612659565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b610a6b612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af19061424e565b60405180910390fd5b8051825114610b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b35906142ba565b60405180910390fd5b610258825110610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a9061434c565b60405180910390fd5b60005b8251811015610bed576000838281518110610ba457610ba361436c565b5b602002602001015190506000838381518110610bc357610bc261436c565b5b60200260200101519050610bd8338383612822565b50508080610be5906143ca565b915050610b86565b505050565b6000610bff848484612a8b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c4a612651565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190614484565b60405180910390fd5b610cde85610cd6612651565b858403612659565b60019150509392505050565b60105481565b60006012905090565b6000610d9b610d06612651565b848460016000610d14612651565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d9691906144a4565b612659565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600c60149054906101000a900460ff1681565b610dec612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e729061424e565b60405180910390fd5b600b54610e8730610f45565b1015610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf9061456c565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550610eeb613675565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051610f359190613d77565b60405180910390a1565b60075481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f95612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b9061424e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110ed612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111739061424e565b60405180910390fd5b80600f819055507f03cd3090e7c409e4a7ffd2d90ff610979f4a94a87a512188b7b615671bfb772f600f546040516111b49190613d77565b60405180910390a150565b6111c7612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124d9061424e565b60405180910390fd5b6000600c60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6112a7612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d9061424e565b60405180910390fd5b806113cc57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c2906145fe565b60405180910390fd5b5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611431612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b79061424e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361152f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115269061466a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361159d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611594906146d6565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115d891906140ae565b602060405180830381865afa1580156115f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611619919061470b565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611656929190614738565b6020604051808303816000875af1158015611675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116999190614776565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43884826040516116cc929190614738565b60405180910390a15092915050565b60065481565b6116e9612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f9061424e565b60405180910390fd5b600c60159054906101000a900460ff16156117c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bf906147ef565b60405180910390fd5b6001600c60156101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461184a906141d1565b80601f0160208091040260200160405190810160405280929190818152602001828054611876906141d1565b80156118c35780601f10611898576101008083540402835291602001916118c3565b820191906000526020600020905b8154815290600101906020018083116118a657829003601f168201915b5050505050905090565b6118d5612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b9061424e565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb90614881565b60405180910390fd5b6119fe8282613766565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000611a57612651565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0b90614913565b60405180910390fd5b611b28611b1f612651565b85858403612659565b600191505092915050565b6000611b47611b40612651565b8484612a8b565b6001905092915050565b60085481565b60136020528060005260406000206000915054906101000a900460ff1681565b600c60159054906101000a900460ff1681565b611b92612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c189061424e565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611cbe9190613d20565b60405180910390a25050565b600e60009054906101000a900460ff1681565b611ce5612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6b9061424e565b60405180910390fd5b6103e86001611d81610a59565b611d8b9190614933565b611d9591906149bc565b811015611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce90614a5f565b60405180910390fd5b60146001611de3610a59565b611ded9190614933565b611df791906149bc565b811115611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090614af1565b60405180910390fd5b80600b8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ed2612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f589061424e565b60405180910390fd5b60006010819055506000600f81905550565b600b5481565b611f81612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612010576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120079061424e565b60405180910390fd5b806010819055507f274faecd49018fb411281f27986b6b4acc86e5db4100735531acd18b7b6d5f936010546040516120489190613d77565b60405180910390a150565b61205b612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e19061424e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215090614b83565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612221612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a79061424e565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516122d690614bd4565b60006040518083038185875af1925050503d8060008114612313576040519150601f19603f3d011682016040523d82523d6000602084013e612318565b606091505b50508091505050565b612329612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123af9061424e565b60405180910390fd5b678ac7230489e80000811115612403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fa90614c81565b60405180910390fd5b6000600267ffffffffffffffff8111156124205761241f613d97565b5b60405190808252806020026020018201604052801561244e5781602001602082028036833780820191505090505b509050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e29190614cb6565b816000815181106124f6576124f561436c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106125455761254461436c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b81526004016125e49493929190614ddc565b6000604051808303818588803b1580156125fd57600080fd5b505af1158015612611573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d684820568826040516126459190613d77565b60405180910390a15050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bf90614e9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272e90614f2c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128159190613d77565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890614fbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f790615050565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d906150e2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a1991906144a4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a7d9190613d77565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af190614fbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6090615050565b60405180910390fd5b60008111612bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba39061514e565b60405180910390fd5b600c60159054906101000a900460ff16612ca157601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c615750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c97906151ba565b60405180910390fd5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d445750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d7c57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dd65750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e205743600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b43600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e989061524c565b60405180910390fd5b600c60149054906101000a900460ff161561330557612ebe611811565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f2c5750612efc611811565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f655750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f9f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ff55750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561304b5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561330457601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130f35750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561319a5760065481111561313d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613134906152de565b60405180910390fd5b60085461314983610f45565b8261315491906144a4565b1115613195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318c9061534a565b60405180910390fd5b613303565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561323d5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613257576007548111156132525760075490505b613302565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613301576008546132b483610f45565b826132bf91906144a4565b1115613300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f7906153dc565b60405180910390fd5b5b5b5b5b5b600061331030610f45565b90506000600b5482101590508080156133355750600c60159054906101000a900460ff165b801561334e5750600a60149054906101000a900460ff16155b80156133a45750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133fa5750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134505750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613494576001600a60146101000a81548160ff021916908315150217905550613478613675565b6000600a60146101000a81548160ff0219169083151502179055505b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135385750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613663576000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561359a57506000601054115b156135c0576064601054856135af9190614933565b6135b991906149bc565b905061363e565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561361b57506000600f54115b1561363d576064600f54856136309190614933565b61363a91906149bc565b90505b5b600081111561365357613652863083612822565b5b808461365f91906153fc565b9350505b61366e858585612822565b5050505050565b600061368030610f45565b9050600081036136905750613764565b6006600b5461369f9190614933565b8111156136b8576006600b546136b59190614933565b90505b60006136c382613811565b6000479050600081111561376057600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161371790614bd4565b60006040518083038185875af1925050503d8060008114613754576040519150601f19603f3d011682016040523d82523d6000602084013e613759565b606091505b5050809250505b5050505b565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506137c78282613a54565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff81111561382e5761382d613d97565b5b60405190808252806020026020018201604052801561385c5781602001602082028036833780820191505090505b50905030816000815181106138745761387361436c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561391b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393f9190614cb6565b816001815181106139535761395261436c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139ba30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612659565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613a1e959493929190615430565b600060405180830381600087803b158015613a3857600080fd5b505af1158015613a4c573d6000803e3d6000fd5b505050505050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613adc92919061548a565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b22578082015181840152602081019050613b07565b83811115613b31576000848401525b50505050565b6000601f19601f8301169050919050565b6000613b5382613ae8565b613b5d8185613af3565b9350613b6d818560208601613b04565b613b7681613b37565b840191505092915050565b60006020820190508181036000830152613b9b8184613b48565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613be8613be3613bde84613ba3565b613bc3565b613ba3565b9050919050565b6000613bfa82613bcd565b9050919050565b6000613c0c82613bef565b9050919050565b613c1c81613c01565b82525050565b6000602082019050613c376000830184613c13565b92915050565b6000604051905090565b600080fd5b600080fd5b6000613c5c82613ba3565b9050919050565b613c6c81613c51565b8114613c7757600080fd5b50565b600081359050613c8981613c63565b92915050565b6000819050919050565b613ca281613c8f565b8114613cad57600080fd5b50565b600081359050613cbf81613c99565b92915050565b60008060408385031215613cdc57613cdb613c47565b5b6000613cea85828601613c7a565b9250506020613cfb85828601613cb0565b9150509250929050565b60008115159050919050565b613d1a81613d05565b82525050565b6000602082019050613d356000830184613d11565b92915050565b600060208284031215613d5157613d50613c47565b5b6000613d5f84828501613c7a565b91505092915050565b613d7181613c8f565b82525050565b6000602082019050613d8c6000830184613d68565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613dcf82613b37565b810181811067ffffffffffffffff82111715613dee57613ded613d97565b5b80604052505050565b6000613e01613c3d565b9050613e0d8282613dc6565b919050565b600067ffffffffffffffff821115613e2d57613e2c613d97565b5b602082029050602081019050919050565b600080fd5b6000613e56613e5184613e12565b613df7565b90508083825260208201905060208402830185811115613e7957613e78613e3e565b5b835b81811015613ea25780613e8e8882613c7a565b845260208401935050602081019050613e7b565b5050509392505050565b600082601f830112613ec157613ec0613d92565b5b8135613ed1848260208601613e43565b91505092915050565b600067ffffffffffffffff821115613ef557613ef4613d97565b5b602082029050602081019050919050565b6000613f19613f1484613eda565b613df7565b90508083825260208201905060208402830185811115613f3c57613f3b613e3e565b5b835b81811015613f655780613f518882613cb0565b845260208401935050602081019050613f3e565b5050509392505050565b600082601f830112613f8457613f83613d92565b5b8135613f94848260208601613f06565b91505092915050565b60008060408385031215613fb457613fb3613c47565b5b600083013567ffffffffffffffff811115613fd257613fd1613c4c565b5b613fde85828601613eac565b925050602083013567ffffffffffffffff811115613fff57613ffe613c4c565b5b61400b85828601613f6f565b9150509250929050565b60008060006060848603121561402e5761402d613c47565b5b600061403c86828701613c7a565b935050602061404d86828701613c7a565b925050604061405e86828701613cb0565b9150509250925092565b600060ff82169050919050565b61407e81614068565b82525050565b60006020820190506140996000830184614075565b92915050565b6140a881613c51565b82525050565b60006020820190506140c3600083018461409f565b92915050565b6000602082840312156140df576140de613c47565b5b60006140ed84828501613cb0565b91505092915050565b6140ff81613d05565b811461410a57600080fd5b50565b60008135905061411c816140f6565b92915050565b6000806040838503121561413957614138613c47565b5b600061414785828601613c7a565b92505060206141588582860161410d565b9150509250929050565b6000806040838503121561417957614178613c47565b5b600061418785828601613c7a565b925050602061419885828601613c7a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806141e957607f821691505b6020821081036141fc576141fb6141a2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614238602083613af3565b915061424382614202565b602082019050919050565b600060208201905081810360008301526142678161422b565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b60006142a4601e83613af3565b91506142af8261426e565b602082019050919050565b600060208201905081810360008301526142d381614297565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000614336603683613af3565b9150614341826142da565b604082019050919050565b6000602082019050818103600083015261436581614329565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006143d582613c8f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144075761440661439b565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061446e602883613af3565b915061447982614412565b604082019050919050565b6000602082019050818103600083015261449d81614461565b9050919050565b60006144af82613c8f565b91506144ba83613c8f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144ef576144ee61439b565b5b828201905092915050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b6000614556604083613af3565b9150614561826144fa565b604082019050919050565b6000602082019050818103600083015261458581614549565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b60006145e8602783613af3565b91506145f38261458c565b604082019050919050565b60006020820190508181036000830152614617816145db565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614654601a83613af3565b915061465f8261461e565b602082019050919050565b6000602082019050818103600083015261468381614647565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006146c0601c83613af3565b91506146cb8261468a565b602082019050919050565b600060208201905081810360008301526146ef816146b3565b9050919050565b60008151905061470581613c99565b92915050565b60006020828403121561472157614720613c47565b5b600061472f848285016146f6565b91505092915050565b600060408201905061474d600083018561409f565b61475a6020830184613d68565b9392505050565b600081519050614770816140f6565b92915050565b60006020828403121561478c5761478b613c47565b5b600061479a84828501614761565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b60006147d9601783613af3565b91506147e4826147a3565b602082019050919050565b60006020820190508181036000830152614808816147cc565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061486b603983613af3565b91506148768261480f565b604082019050919050565b6000602082019050818103600083015261489a8161485e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006148fd602583613af3565b9150614908826148a1565b604082019050919050565b6000602082019050818103600083015261492c816148f0565b9050919050565b600061493e82613c8f565b915061494983613c8f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149825761498161439b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006149c782613c8f565b91506149d283613c8f565b9250826149e2576149e161498d565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e312520746f74616c20737570706c792e00000000000000000000000000602082015250565b6000614a49603383613af3565b9150614a54826149ed565b604082019050919050565b60006020820190508181036000830152614a7881614a3c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20352520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614adb603283613af3565b9150614ae682614a7f565b604082019050919050565b60006020820190508181036000830152614b0a81614ace565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b6d602683613af3565b9150614b7882614b11565b604082019050919050565b60006020820190508181036000830152614b9c81614b60565b9050919050565b600081905092915050565b50565b6000614bbe600083614ba3565b9150614bc982614bae565b600082019050919050565b6000614bdf82614bb1565b9150819050919050565b7f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060008201527f612073696e676c652062757920746f207265647563652073616e64776963682060208201527f61747461636b7300000000000000000000000000000000000000000000000000604082015250565b6000614c6b604783613af3565b9150614c7682614be9565b606082019050919050565b60006020820190508181036000830152614c9a81614c5e565b9050919050565b600081519050614cb081613c63565b92915050565b600060208284031215614ccc57614ccb613c47565b5b6000614cda84828501614ca1565b91505092915050565b6000819050919050565b6000614d08614d03614cfe84614ce3565b613bc3565b613c8f565b9050919050565b614d1881614ced565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d5381613c51565b82525050565b6000614d658383614d4a565b60208301905092915050565b6000602082019050919050565b6000614d8982614d1e565b614d938185614d29565b9350614d9e83614d3a565b8060005b83811015614dcf578151614db68882614d59565b9750614dc183614d71565b925050600181019050614da2565b5085935050505092915050565b6000608082019050614df16000830187614d0f565b8181036020830152614e038186614d7e565b9050614e12604083018561409f565b614e1f6060830184613d68565b95945050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614e84602483613af3565b9150614e8f82614e28565b604082019050919050565b60006020820190508181036000830152614eb381614e77565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f16602283613af3565b9150614f2182614eba565b604082019050919050565b60006020820190508181036000830152614f4581614f09565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614fa8602583613af3565b9150614fb382614f4c565b604082019050919050565b60006020820190508181036000830152614fd781614f9b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061503a602383613af3565b915061504582614fde565b604082019050919050565b600060208201905081810360008301526150698161502d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006150cc602683613af3565b91506150d782615070565b604082019050919050565b600060208201905081810360008301526150fb816150bf565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615138601d83613af3565b915061514382615102565b602082019050919050565b600060208201905081810360008301526151678161512b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006151a4601683613af3565b91506151af8261516e565b602082019050919050565b600060208201905081810360008301526151d381615197565b9050919050565b7f5f7472616e736665723a3a20416e74692073616e647769636820626f7420656e60008201527f61626c65642e20506c656173652074727920616761696e206c617465722e0000602082015250565b6000615236603e83613af3565b9150615241826151da565b604082019050919050565b6000602082019050818103600083015261526581615229565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b60006152c8602883613af3565b91506152d38261526c565b604082019050919050565b600060208201905081810360008301526152f7816152bb565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615334601883613af3565b915061533f826152fe565b602082019050919050565b6000602082019050818103600083015261536381615327565b9050919050565b7f43616e6e6f7420457863656564206d617820746f6b656e73207065722077616c60008201527f6c65740000000000000000000000000000000000000000000000000000000000602082015250565b60006153c6602383613af3565b91506153d18261536a565b604082019050919050565b600060208201905081810360008301526153f5816153b9565b9050919050565b600061540782613c8f565b915061541283613c8f565b9250828210156154255761542461439b565b5b828203905092915050565b600060a0820190506154456000830188613d68565b6154526020830187614d0f565b81810360408301526154648186614d7e565b9050615473606083018561409f565b6154806080830184613d68565b9695505050505050565b600060408201905061549f600083018561409f565b6154ac6020830184613d11565b939250505056fea2646970667358221220f55b102ec1cab163be0c1bb9a8872a9d835b223756651d999c7dcd5eeb27150e64736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c80638366e79a11610139578063bbc0c742116100b6578063e2cd5fcd1161007a578063e2cd5fcd1461088f578063e2f45605146108a6578063eba4c333146108d1578063f2fde38b146108fa578063f5648a4f14610923578063fc155d1d1461093a57610251565b8063bbc0c742146107aa578063c0246668146107d5578063c876d0b9146107fe578063d257b34f14610829578063dd62ed3e1461085257610251565b80639a7a23d6116100fd5780639a7a23d61461069f578063a457c2d7146106c8578063a9059cbb14610705578063aa4bde2814610742578063b62496f51461076d57610251565b80638366e79a146105ca57806388e765ff146106075780638a8c523c146106325780638da5cb5b1461064957806395d89b411461067457610251565b8063452ed4f1116101c757806370a082311161018b57806370a082311461050d578063715018a61461054a57806371fc468814610561578063751039fc1461058a5780637571336a146105a157610251565b8063452ed4f11461044a57806347062402146104755780634a62bb65146104a057806351f205e4146104cb57806366d602ae146104e257610251565b80632307b4411161020e5780632307b4411461035157806323b872dd1461037a5780632b14ca56146103b7578063313ce567146103e2578063395093511461040d57610251565b806306fdde03146102565780630758d92414610281578063095ea7b3146102ac57806310d5de53146102e957806318160ddd1461032657610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b610963565b6040516102789190613b81565b60405180910390f35b34801561028d57600080fd5b506102966109f5565b6040516102a39190613c22565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190613cc5565b610a1b565b6040516102e09190613d20565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613d3b565b610a39565b60405161031d9190613d20565b60405180910390f35b34801561033257600080fd5b5061033b610a59565b6040516103489190613d77565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190613f9d565b610a63565b005b34801561038657600080fd5b506103a1600480360381019061039c9190614015565b610bf2565b6040516103ae9190613d20565b60405180910390f35b3480156103c357600080fd5b506103cc610cea565b6040516103d99190613d77565b60405180910390f35b3480156103ee57600080fd5b506103f7610cf0565b6040516104049190614084565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190613cc5565b610cf9565b6040516104419190613d20565b60405180910390f35b34801561045657600080fd5b5061045f610da5565b60405161046c91906140ae565b60405180910390f35b34801561048157600080fd5b5061048a610dcb565b6040516104979190613d77565b60405180910390f35b3480156104ac57600080fd5b506104b5610dd1565b6040516104c29190613d20565b60405180910390f35b3480156104d757600080fd5b506104e0610de4565b005b3480156104ee57600080fd5b506104f7610f3f565b6040516105049190613d77565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190613d3b565b610f45565b6040516105419190613d77565b60405180910390f35b34801561055657600080fd5b5061055f610f8d565b005b34801561056d57600080fd5b50610588600480360381019061058391906140c9565b6110e5565b005b34801561059657600080fd5b5061059f6111bf565b005b3480156105ad57600080fd5b506105c860048036038101906105c39190614122565b61129f565b005b3480156105d657600080fd5b506105f160048036038101906105ec9190614162565b611427565b6040516105fe9190613d20565b60405180910390f35b34801561061357600080fd5b5061061c6116db565b6040516106299190613d77565b60405180910390f35b34801561063e57600080fd5b506106476116e1565b005b34801561065557600080fd5b5061065e611811565b60405161066b91906140ae565b60405180910390f35b34801561068057600080fd5b5061068961183b565b6040516106969190613b81565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190614122565b6118cd565b005b3480156106d457600080fd5b506106ef60048036038101906106ea9190613cc5565b611a48565b6040516106fc9190613d20565b60405180910390f35b34801561071157600080fd5b5061072c60048036038101906107279190613cc5565b611b33565b6040516107399190613d20565b60405180910390f35b34801561074e57600080fd5b50610757611b51565b6040516107649190613d77565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f9190613d3b565b611b57565b6040516107a19190613d20565b60405180910390f35b3480156107b657600080fd5b506107bf611b77565b6040516107cc9190613d20565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f79190614122565b611b8a565b005b34801561080a57600080fd5b50610813611cca565b6040516108209190613d20565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b91906140c9565b611cdd565b005b34801561085e57600080fd5b5061087960048036038101906108749190614162565b611e43565b6040516108869190613d77565b60405180910390f35b34801561089b57600080fd5b506108a4611eca565b005b3480156108b257600080fd5b506108bb611f73565b6040516108c89190613d77565b60405180910390f35b3480156108dd57600080fd5b506108f860048036038101906108f391906140c9565b611f79565b005b34801561090657600080fd5b50610921600480360381019061091c9190613d3b565b612053565b005b34801561092f57600080fd5b50610938612219565b005b34801561094657600080fd5b50610961600480360381019061095c91906140c9565b612321565b005b606060038054610972906141d1565b80601f016020809104026020016040519081016040528092919081815260200182805461099e906141d1565b80156109eb5780601f106109c0576101008083540402835291602001916109eb565b820191906000526020600020905b8154815290600101906020018083116109ce57829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a2f610a28612651565b8484612659565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b610a6b612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af19061424e565b60405180910390fd5b8051825114610b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b35906142ba565b60405180910390fd5b610258825110610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a9061434c565b60405180910390fd5b60005b8251811015610bed576000838281518110610ba457610ba361436c565b5b602002602001015190506000838381518110610bc357610bc261436c565b5b60200260200101519050610bd8338383612822565b50508080610be5906143ca565b915050610b86565b505050565b6000610bff848484612a8b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c4a612651565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190614484565b60405180910390fd5b610cde85610cd6612651565b858403612659565b60019150509392505050565b60105481565b60006012905090565b6000610d9b610d06612651565b848460016000610d14612651565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d9691906144a4565b612659565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600c60149054906101000a900460ff1681565b610dec612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e729061424e565b60405180910390fd5b600b54610e8730610f45565b1015610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf9061456c565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550610eeb613675565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051610f359190613d77565b60405180910390a1565b60075481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f95612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b9061424e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110ed612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111739061424e565b60405180910390fd5b80600f819055507f03cd3090e7c409e4a7ffd2d90ff610979f4a94a87a512188b7b615671bfb772f600f546040516111b49190613d77565b60405180910390a150565b6111c7612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124d9061424e565b60405180910390fd5b6000600c60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6112a7612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d9061424e565b60405180910390fd5b806113cc57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c2906145fe565b60405180910390fd5b5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611431612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b79061424e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361152f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115269061466a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361159d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611594906146d6565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115d891906140ae565b602060405180830381865afa1580156115f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611619919061470b565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611656929190614738565b6020604051808303816000875af1158015611675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116999190614776565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43884826040516116cc929190614738565b60405180910390a15092915050565b60065481565b6116e9612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f9061424e565b60405180910390fd5b600c60159054906101000a900460ff16156117c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bf906147ef565b60405180910390fd5b6001600c60156101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461184a906141d1565b80601f0160208091040260200160405190810160405280929190818152602001828054611876906141d1565b80156118c35780601f10611898576101008083540402835291602001916118c3565b820191906000526020600020905b8154815290600101906020018083116118a657829003601f168201915b5050505050905090565b6118d5612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b9061424e565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb90614881565b60405180910390fd5b6119fe8282613766565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000611a57612651565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0b90614913565b60405180910390fd5b611b28611b1f612651565b85858403612659565b600191505092915050565b6000611b47611b40612651565b8484612a8b565b6001905092915050565b60085481565b60136020528060005260406000206000915054906101000a900460ff1681565b600c60159054906101000a900460ff1681565b611b92612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c189061424e565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611cbe9190613d20565b60405180910390a25050565b600e60009054906101000a900460ff1681565b611ce5612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6b9061424e565b60405180910390fd5b6103e86001611d81610a59565b611d8b9190614933565b611d9591906149bc565b811015611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce90614a5f565b60405180910390fd5b60146001611de3610a59565b611ded9190614933565b611df791906149bc565b811115611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090614af1565b60405180910390fd5b80600b8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ed2612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f589061424e565b60405180910390fd5b60006010819055506000600f81905550565b600b5481565b611f81612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612010576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120079061424e565b60405180910390fd5b806010819055507f274faecd49018fb411281f27986b6b4acc86e5db4100735531acd18b7b6d5f936010546040516120489190613d77565b60405180910390a150565b61205b612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e19061424e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215090614b83565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612221612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a79061424e565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516122d690614bd4565b60006040518083038185875af1925050503d8060008114612313576040519150601f19603f3d011682016040523d82523d6000602084013e612318565b606091505b50508091505050565b612329612651565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123af9061424e565b60405180910390fd5b678ac7230489e80000811115612403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fa90614c81565b60405180910390fd5b6000600267ffffffffffffffff8111156124205761241f613d97565b5b60405190808252806020026020018201604052801561244e5781602001602082028036833780820191505090505b509050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e29190614cb6565b816000815181106124f6576124f561436c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106125455761254461436c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b81526004016125e49493929190614ddc565b6000604051808303818588803b1580156125fd57600080fd5b505af1158015612611573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d684820568826040516126459190613d77565b60405180910390a15050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bf90614e9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272e90614f2c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128159190613d77565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890614fbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f790615050565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d906150e2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a1991906144a4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a7d9190613d77565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af190614fbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6090615050565b60405180910390fd5b60008111612bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba39061514e565b60405180910390fd5b600c60159054906101000a900460ff16612ca157601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c615750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c97906151ba565b60405180910390fd5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d445750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d7c57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dd65750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e205743600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b43600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e989061524c565b60405180910390fd5b600c60149054906101000a900460ff161561330557612ebe611811565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f2c5750612efc611811565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f655750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f9f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ff55750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561304b5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561330457601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130f35750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561319a5760065481111561313d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613134906152de565b60405180910390fd5b60085461314983610f45565b8261315491906144a4565b1115613195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318c9061534a565b60405180910390fd5b613303565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561323d5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613257576007548111156132525760075490505b613302565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613301576008546132b483610f45565b826132bf91906144a4565b1115613300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f7906153dc565b60405180910390fd5b5b5b5b5b5b600061331030610f45565b90506000600b5482101590508080156133355750600c60159054906101000a900460ff165b801561334e5750600a60149054906101000a900460ff16155b80156133a45750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133fa5750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134505750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613494576001600a60146101000a81548160ff021916908315150217905550613478613675565b6000600a60146101000a81548160ff0219169083151502179055505b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135385750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613663576000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561359a57506000601054115b156135c0576064601054856135af9190614933565b6135b991906149bc565b905061363e565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561361b57506000600f54115b1561363d576064600f54856136309190614933565b61363a91906149bc565b90505b5b600081111561365357613652863083612822565b5b808461365f91906153fc565b9350505b61366e858585612822565b5050505050565b600061368030610f45565b9050600081036136905750613764565b6006600b5461369f9190614933565b8111156136b8576006600b546136b59190614933565b90505b60006136c382613811565b6000479050600081111561376057600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161371790614bd4565b60006040518083038185875af1925050503d8060008114613754576040519150601f19603f3d011682016040523d82523d6000602084013e613759565b606091505b5050809250505b5050505b565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506137c78282613a54565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff81111561382e5761382d613d97565b5b60405190808252806020026020018201604052801561385c5781602001602082028036833780820191505090505b50905030816000815181106138745761387361436c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561391b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393f9190614cb6565b816001815181106139535761395261436c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139ba30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612659565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613a1e959493929190615430565b600060405180830381600087803b158015613a3857600080fd5b505af1158015613a4c573d6000803e3d6000fd5b505050505050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613adc92919061548a565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b22578082015181840152602081019050613b07565b83811115613b31576000848401525b50505050565b6000601f19601f8301169050919050565b6000613b5382613ae8565b613b5d8185613af3565b9350613b6d818560208601613b04565b613b7681613b37565b840191505092915050565b60006020820190508181036000830152613b9b8184613b48565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613be8613be3613bde84613ba3565b613bc3565b613ba3565b9050919050565b6000613bfa82613bcd565b9050919050565b6000613c0c82613bef565b9050919050565b613c1c81613c01565b82525050565b6000602082019050613c376000830184613c13565b92915050565b6000604051905090565b600080fd5b600080fd5b6000613c5c82613ba3565b9050919050565b613c6c81613c51565b8114613c7757600080fd5b50565b600081359050613c8981613c63565b92915050565b6000819050919050565b613ca281613c8f565b8114613cad57600080fd5b50565b600081359050613cbf81613c99565b92915050565b60008060408385031215613cdc57613cdb613c47565b5b6000613cea85828601613c7a565b9250506020613cfb85828601613cb0565b9150509250929050565b60008115159050919050565b613d1a81613d05565b82525050565b6000602082019050613d356000830184613d11565b92915050565b600060208284031215613d5157613d50613c47565b5b6000613d5f84828501613c7a565b91505092915050565b613d7181613c8f565b82525050565b6000602082019050613d8c6000830184613d68565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613dcf82613b37565b810181811067ffffffffffffffff82111715613dee57613ded613d97565b5b80604052505050565b6000613e01613c3d565b9050613e0d8282613dc6565b919050565b600067ffffffffffffffff821115613e2d57613e2c613d97565b5b602082029050602081019050919050565b600080fd5b6000613e56613e5184613e12565b613df7565b90508083825260208201905060208402830185811115613e7957613e78613e3e565b5b835b81811015613ea25780613e8e8882613c7a565b845260208401935050602081019050613e7b565b5050509392505050565b600082601f830112613ec157613ec0613d92565b5b8135613ed1848260208601613e43565b91505092915050565b600067ffffffffffffffff821115613ef557613ef4613d97565b5b602082029050602081019050919050565b6000613f19613f1484613eda565b613df7565b90508083825260208201905060208402830185811115613f3c57613f3b613e3e565b5b835b81811015613f655780613f518882613cb0565b845260208401935050602081019050613f3e565b5050509392505050565b600082601f830112613f8457613f83613d92565b5b8135613f94848260208601613f06565b91505092915050565b60008060408385031215613fb457613fb3613c47565b5b600083013567ffffffffffffffff811115613fd257613fd1613c4c565b5b613fde85828601613eac565b925050602083013567ffffffffffffffff811115613fff57613ffe613c4c565b5b61400b85828601613f6f565b9150509250929050565b60008060006060848603121561402e5761402d613c47565b5b600061403c86828701613c7a565b935050602061404d86828701613c7a565b925050604061405e86828701613cb0565b9150509250925092565b600060ff82169050919050565b61407e81614068565b82525050565b60006020820190506140996000830184614075565b92915050565b6140a881613c51565b82525050565b60006020820190506140c3600083018461409f565b92915050565b6000602082840312156140df576140de613c47565b5b60006140ed84828501613cb0565b91505092915050565b6140ff81613d05565b811461410a57600080fd5b50565b60008135905061411c816140f6565b92915050565b6000806040838503121561413957614138613c47565b5b600061414785828601613c7a565b92505060206141588582860161410d565b9150509250929050565b6000806040838503121561417957614178613c47565b5b600061418785828601613c7a565b925050602061419885828601613c7a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806141e957607f821691505b6020821081036141fc576141fb6141a2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614238602083613af3565b915061424382614202565b602082019050919050565b600060208201905081810360008301526142678161422b565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b60006142a4601e83613af3565b91506142af8261426e565b602082019050919050565b600060208201905081810360008301526142d381614297565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000614336603683613af3565b9150614341826142da565b604082019050919050565b6000602082019050818103600083015261436581614329565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006143d582613c8f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144075761440661439b565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061446e602883613af3565b915061447982614412565b604082019050919050565b6000602082019050818103600083015261449d81614461565b9050919050565b60006144af82613c8f565b91506144ba83613c8f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144ef576144ee61439b565b5b828201905092915050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b6000614556604083613af3565b9150614561826144fa565b604082019050919050565b6000602082019050818103600083015261458581614549565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b60006145e8602783613af3565b91506145f38261458c565b604082019050919050565b60006020820190508181036000830152614617816145db565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614654601a83613af3565b915061465f8261461e565b602082019050919050565b6000602082019050818103600083015261468381614647565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006146c0601c83613af3565b91506146cb8261468a565b602082019050919050565b600060208201905081810360008301526146ef816146b3565b9050919050565b60008151905061470581613c99565b92915050565b60006020828403121561472157614720613c47565b5b600061472f848285016146f6565b91505092915050565b600060408201905061474d600083018561409f565b61475a6020830184613d68565b9392505050565b600081519050614770816140f6565b92915050565b60006020828403121561478c5761478b613c47565b5b600061479a84828501614761565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b60006147d9601783613af3565b91506147e4826147a3565b602082019050919050565b60006020820190508181036000830152614808816147cc565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061486b603983613af3565b91506148768261480f565b604082019050919050565b6000602082019050818103600083015261489a8161485e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006148fd602583613af3565b9150614908826148a1565b604082019050919050565b6000602082019050818103600083015261492c816148f0565b9050919050565b600061493e82613c8f565b915061494983613c8f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149825761498161439b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006149c782613c8f565b91506149d283613c8f565b9250826149e2576149e161498d565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e312520746f74616c20737570706c792e00000000000000000000000000602082015250565b6000614a49603383613af3565b9150614a54826149ed565b604082019050919050565b60006020820190508181036000830152614a7881614a3c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20352520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614adb603283613af3565b9150614ae682614a7f565b604082019050919050565b60006020820190508181036000830152614b0a81614ace565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b6d602683613af3565b9150614b7882614b11565b604082019050919050565b60006020820190508181036000830152614b9c81614b60565b9050919050565b600081905092915050565b50565b6000614bbe600083614ba3565b9150614bc982614bae565b600082019050919050565b6000614bdf82614bb1565b9150819050919050565b7f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060008201527f612073696e676c652062757920746f207265647563652073616e64776963682060208201527f61747461636b7300000000000000000000000000000000000000000000000000604082015250565b6000614c6b604783613af3565b9150614c7682614be9565b606082019050919050565b60006020820190508181036000830152614c9a81614c5e565b9050919050565b600081519050614cb081613c63565b92915050565b600060208284031215614ccc57614ccb613c47565b5b6000614cda84828501614ca1565b91505092915050565b6000819050919050565b6000614d08614d03614cfe84614ce3565b613bc3565b613c8f565b9050919050565b614d1881614ced565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d5381613c51565b82525050565b6000614d658383614d4a565b60208301905092915050565b6000602082019050919050565b6000614d8982614d1e565b614d938185614d29565b9350614d9e83614d3a565b8060005b83811015614dcf578151614db68882614d59565b9750614dc183614d71565b925050600181019050614da2565b5085935050505092915050565b6000608082019050614df16000830187614d0f565b8181036020830152614e038186614d7e565b9050614e12604083018561409f565b614e1f6060830184613d68565b95945050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614e84602483613af3565b9150614e8f82614e28565b604082019050919050565b60006020820190508181036000830152614eb381614e77565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f16602283613af3565b9150614f2182614eba565b604082019050919050565b60006020820190508181036000830152614f4581614f09565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614fa8602583613af3565b9150614fb382614f4c565b604082019050919050565b60006020820190508181036000830152614fd781614f9b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061503a602383613af3565b915061504582614fde565b604082019050919050565b600060208201905081810360008301526150698161502d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006150cc602683613af3565b91506150d782615070565b604082019050919050565b600060208201905081810360008301526150fb816150bf565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615138601d83613af3565b915061514382615102565b602082019050919050565b600060208201905081810360008301526151678161512b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006151a4601683613af3565b91506151af8261516e565b602082019050919050565b600060208201905081810360008301526151d381615197565b9050919050565b7f5f7472616e736665723a3a20416e74692073616e647769636820626f7420656e60008201527f61626c65642e20506c656173652074727920616761696e206c617465722e0000602082015250565b6000615236603e83613af3565b9150615241826151da565b604082019050919050565b6000602082019050818103600083015261526581615229565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b60006152c8602883613af3565b91506152d38261526c565b604082019050919050565b600060208201905081810360008301526152f7816152bb565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615334601883613af3565b915061533f826152fe565b602082019050919050565b6000602082019050818103600083015261536381615327565b9050919050565b7f43616e6e6f7420457863656564206d617820746f6b656e73207065722077616c60008201527f6c65740000000000000000000000000000000000000000000000000000000000602082015250565b60006153c6602383613af3565b91506153d18261536a565b604082019050919050565b600060208201905081810360008301526153f5816153b9565b9050919050565b600061540782613c8f565b915061541283613c8f565b9250828210156154255761542461439b565b5b828203905092915050565b600060a0820190506154456000830188613d68565b6154526020830187614d0f565b81810360408301526154648186614d7e565b9050615473606083018561409f565b6154806080830184613d68565b9695505050505050565b600060408201905061549f600083018561409f565b6154ac6020830184613d11565b939250505056fea2646970667358221220f55b102ec1cab163be0c1bb9a8872a9d835b223756651d999c7dcd5eeb27150e64736f6c634300080f0033

Deployed Bytecode Sourcemap

9811:12409:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4073:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9960:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4987:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10598:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4394:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14172:618;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5164:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10424:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4293:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5664:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9994:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10396;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10121:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21186:312;;;;;;;;;;;;;:::i;:::-;;9886:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4510:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8708:150;;;;;;;;;;;;;:::i;:::-;;15617:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13426:115;;;;;;;;;;;;;:::i;:::-;;14798:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20231:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9852:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13198:176;;;;;;;;;;;;;:::i;:::-;;8494:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4181:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15066:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5887:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4645:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9921:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10820:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10161:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16008:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10348:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13611:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4828:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15901:99;;;;;;;;;;;;;:::i;:::-;;10052:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15756:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8866:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20757:160;;;;;;;;;;;;;:::i;:::-;;21601:616;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4073:100;4127:13;4160:5;4153:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4073:100;:::o;9960:27::-;;;;;;;;;;;;;:::o;4987:169::-;5070:4;5087:39;5096:12;:10;:12::i;:::-;5110:7;5119:6;5087:8;:39::i;:::-;5144:4;5137:11;;4987:169;;;;:::o;10598:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;4394:108::-;4455:7;4482:12;;4475:19;;4394:108;:::o;14172:618::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14314:15:::1;:22;14296:7;:14;:40;14288:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;14407:3;14390:7;:14;:20;14382:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;14582:9;14578:205;14601:7;:14;14597:1;:18;14578:205;;;14636:14;14653:7;14661:1;14653:10;;;;;;;;:::i;:::-;;;;;;;;14636:27;;14678:14;14695:15;14711:1;14695:18;;;;;;;;:::i;:::-;;;;;;;;14678:35;;14728:43;14744:10;14756:6;14764;14728:15;:43::i;:::-;14621:162;;14617:3;;;;;:::i;:::-;;;;14578:205;;;;14172:618:::0;;:::o;5164:492::-;5304:4;5321:36;5331:6;5339:9;5350:6;5321:9;:36::i;:::-;5370:24;5397:11;:19;5409:6;5397:19;;;;;;;;;;;;;;;:33;5417:12;:10;:12::i;:::-;5397:33;;;;;;;;;;;;;;;;5370:60;;5469:6;5449:16;:26;;5441:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5556:57;5565:6;5573:12;:10;:12::i;:::-;5606:6;5587:16;:25;5556:8;:57::i;:::-;5644:4;5637:11;;;5164:492;;;;;:::o;10424:22::-;;;;:::o;4293:93::-;4351:5;4376:2;4369:9;;4293:93;:::o;5664:215::-;5752:4;5769:80;5778:12;:10;:12::i;:::-;5792:7;5838:10;5801:11;:25;5813:12;:10;:12::i;:::-;5801:25;;;;;;;;;;;;;;;:34;5827:7;5801:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5769:8;:80::i;:::-;5867:4;5860:11;;5664:215;;;;:::o;9994:21::-;;;;;;;;;;;;;:::o;10396:::-;;;;:::o;10121:33::-;;;;;;;;;;;;;:::o;21186:312::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21277:18:::1;;21249:24;21267:4;21249:9;:24::i;:::-;:46;;21241:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;21386:4;21375:8;;:15;;;;;;;;;;;;;;;;;;21401:10;:8;:10::i;:::-;21433:5;21422:8;;:16;;;;;;;;;;;;;;;;;;21454:36;21474:15;21454:36;;;;;;:::i;:::-;;;;;;;;21186:312::o:0;9886:28::-;;;;:::o;4510:127::-;4584:7;4611:9;:18;4621:7;4611:18;;;;;;;;;;;;;;;;4604:25;;4510:127;;;:::o;8708:150::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8817:1:::1;8780:40;;8801:6;;;;;;;;;;;8780:40;;;;;;;;;;;;8848:1;8831:6;;:19;;;;;;;;;;;;;;;;;;8708:150::o:0;15617:131::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15696:7:::1;15687:6;:16;;;;15719:21;15733:6;;15719:21;;;;;;:::i;:::-;;;;;;;;15617:131:::0;:::o;13426:115::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13497:5:::1;13480:14;;:22;;;;;;;;;;;;;;;;;;13518:15;;;;;;;;;;13426:115::o:0;14798:260::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14894:4:::1;14890:104;;14932:6;;;;;;;;;;;14922:16;;:6;:16;;::::0;14914:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14890:104;15046:4;15004:31;:39;15036:6;15004:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;14798:260:::0;;:::o;20231:456::-;20318:10;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20367:1:::1;20349:20;;:6;:20;;::::0;20341:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20437:4;20419:23;;:6;:23;;::::0;20411:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20486:24;20520:6;20513:24;;;20546:4;20513:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20486:66;;20578:6;20571:23;;;20595:3;20600:16;20571:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20563:54;;20633:46;20654:6;20662:16;20633:46;;;;;;;:::i;:::-;;;;;;;;20330:357;20231:456:::0;;;;:::o;9852:27::-;;;;:::o;13198:176::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13262:13:::1;;;;;;;;;;;13261:14;13253:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13330:4;13314:13;;:20;;;;;;;;;;;;;;;;;;13350:16;;;;;;;;;;13198:176::o:0;8494:79::-;8532:7;8559:6;;;;;;;;;;;8552:13;;8494:79;:::o;4181:104::-;4237:13;4270:7;4263:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4181:104;:::o;15066:295::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15175:6:::1;;;;;;;;;;;15167:14;;:4;:14;;::::0;15159:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15256:41;15285:4;15291:5;15256:28;:41::i;:::-;15347:5;15313:40;;15341:4;15313:40;;;;;;;;;;;;15066:295:::0;;:::o;5887:413::-;5980:4;5997:24;6024:11;:25;6036:12;:10;:12::i;:::-;6024:25;;;;;;;;;;;;;;;:34;6050:7;6024:34;;;;;;;;;;;;;;;;5997:61;;6097:15;6077:16;:35;;6069:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6190:67;6199:12;:10;:12::i;:::-;6213:7;6241:15;6222:16;:34;6190:8;:67::i;:::-;6288:4;6281:11;;;5887:413;;;;:::o;4645:175::-;4731:4;4748:42;4758:12;:10;:12::i;:::-;4772:9;4783:6;4748:9;:42::i;:::-;4808:4;4801:11;;4645:175;;;;:::o;9921:30::-;;;;:::o;10820:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10161:33::-;;;;;;;;;;;;;:::o;16008:182::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16124:8:::1;16093:19;:28;16113:7;16093:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16164:7;16148:34;;;16173:8;16148:34;;;;;;:::i;:::-;;;;;;;;16008:182:::0;;:::o;10348:39::-;;;;;;;;;;;;;:::o;13611:338::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13734:4:::1;13730:1;13714:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13701:9;:37;;13693:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;13845:2;13841:1;13825:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:22;;;;:::i;:::-;13812:9;:35;;13804:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;13933:9;13912:18;:30;;;;13611:338:::0;:::o;4828:151::-;4917:7;4944:11;:18;4956:5;4944:18;;;;;;;;;;;;;;;:27;4963:7;4944:27;;;;;;;;;;;;;;;;4937:34;;4828:151;;;;:::o;15901:99::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15970:1:::1;15960:7;:11;;;;15991:1;15982:6;:10;;;;15901:99::o:0;10052:33::-;;;;:::o;15756:137::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15838:8:::1;15828:7;:18;;;;15862:23;15877:7;;15862:23;;;;;;:::i;:::-;;;;;;;;15756:137:::0;:::o;8866:244::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8975:1:::1;8955:22;;:8;:22;;::::0;8947:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9065:8;9036:38;;9057:6;;;;;;;;;;;9036:38;;;;;;;;;;;;9094:8;9085:6;;:17;;;;;;;;;;;;;;;;;;8866:244:::0;:::o;20757:160::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20815:12:::1;20859:10;20851:24;;20883:21;20851:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20838:71;;;;;20804:113;20757:160::o:0;21601:616::-;8631:12;:10;:12::i;:::-;8621:22;;:6;;;;;;;;;;;:22;;;8613:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21698:8:::1;21683:11;:23;;21675:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;21795:21;21833:1;21819:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21795:40;;21856:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21846:4;21851:1;21846:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;::::0;::::1;21901:4;21883;21888:1;21883:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;21945:9;;;;;;;;;;;:60;;;22013:11;22040:1;22089:4;22116:6;22138:15;21945:219;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;22180:29;22197:11;22180:29;;;;;;:::i;:::-;;;;;;;;21664:553;21601:616:::0;:::o;222:98::-;275:7;302:10;295:17;;222:98;:::o;7787:380::-;7940:1;7923:19;;:5;:19;;;7915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8021:1;8002:21;;:7;:21;;;7994:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8105:6;8075:11;:18;8087:5;8075:18;;;;;;;;;;;;;;;:27;8094:7;8075:27;;;;;;;;;;;;;;;:36;;;;8143:7;8127:32;;8136:5;8127:32;;;8152:6;8127:32;;;;;;:::i;:::-;;;;;;;;7787:380;;;:::o;6308:614::-;6466:1;6448:20;;:6;:20;;;6440:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6550:1;6529:23;;:9;:23;;;6521:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6605:21;6629:9;:17;6639:6;6629:17;;;;;;;;;;;;;;;;6605:41;;6682:6;6665:13;:23;;6657:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6803:6;6787:13;:22;6767:9;:17;6777:6;6767:17;;;;;;;;;;;;;;;:42;;;;6855:6;6831:9;:20;6841:9;6831:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6896:9;6879:35;;6888:6;6879:35;;;6907:6;6879:35;;;;;;:::i;:::-;;;;;;;;6429:493;6308:614;;;:::o;16198:2911::-;16314:1;16298:18;;:4;:18;;;16290:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16391:1;16377:16;;:2;:16;;;16369:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16461:1;16452:6;:10;16444:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16513:13;;;;;;;;;;;16509:132;;16550:19;:25;16570:4;16550:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16579:19;:23;16599:2;16579:23;;;;;;;;;;;;;;;;;;;;;;;;;16550:52;16542:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;16509:132;16687:25;:31;16713:4;16687:31;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;16723:25;:29;16749:2;16723:29;;;;;;;;;;;;;;;;;;;;;;;;;16722:30;16687:65;:88;;;;;16770:4;16756:19;;:2;:19;;;;16687:88;:116;;;;;16793:9;;;;;;;;;;;16779:24;;:2;:24;;;;16687:116;16683:186;;;16845:12;16819:19;:23;16839:2;16819:23;;;;;;;;;;;;;;;:38;;;;16683:186;16915:12;16887:19;:25;16907:4;16887:25;;;;;;;;;;;;;;;;:40;16879:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;17010:14;;;;;;;;;;;17007:1046;;;17052:7;:5;:7::i;:::-;17044:15;;:4;:15;;;;:32;;;;;17069:7;:5;:7::i;:::-;17063:13;;:2;:13;;;;17044:32;:52;;;;;17094:1;17080:16;;:2;:16;;;;17044:52;:77;;;;;17114:6;17100:21;;:2;:21;;;;17044:77;:107;;;;;17126:19;:25;17146:4;17126:25;;;;;;;;;;;;;;;;;;;;;;;;;17125:26;17044:107;:135;;;;;17156:19;:23;17176:2;17156:23;;;;;;;;;;;;;;;;;;;;;;;;;17155:24;17044:135;17040:1002;;;17237:25;:31;17263:4;17237:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;17273:31;:35;17305:2;17273:35;;;;;;;;;;;;;;;;;;;;;;;;;17272:36;17237:71;17233:794;;;17355:12;;17345:6;:22;;17337:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17473:15;;17456:13;17466:2;17456:9;:13::i;:::-;17447:6;:22;;;;:::i;:::-;:41;;17439:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17233:794;;;17605:25;:29;17631:2;17605:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;17639:31;:37;17671:4;17639:37;;;;;;;;;;;;;;;;;;;;;;;;;17638:38;17605:71;17601:426;;;17717:13;;17708:6;:22;17705:107;;;17771:13;;17762:22;;17705:107;17601:426;;;17859:31;:35;17891:2;17859:35;;;;;;;;;;;;;;;;;;;;;;;;;17854:173;;17952:15;;17935:13;17945:2;17935:9;:13::i;:::-;17926:6;:22;;;;:::i;:::-;:41;;17918:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;17854:173;17601:426;17233:794;17040:1002;17007:1046;18065:28;18096:24;18114:4;18096:9;:24::i;:::-;18065:55;;18133:12;18172:18;;18148:20;:42;;18133:57;;18206:7;:24;;;;;18217:13;;;;;;;;;;;18206:24;:37;;;;;18235:8;;;;;;;;;;;18234:9;18206:37;:73;;;;;18248:25;:31;18274:4;18248:31;;;;;;;;;;;;;;;;;;;;;;;;;18247:32;18206:73;:103;;;;;18284:19;:25;18304:4;18284:25;;;;;;;;;;;;;;;;;;;;;;;;;18283:26;18206:103;:131;;;;;18314:19;:23;18334:2;18314:23;;;;;;;;;;;;;;;;;;;;;;;;;18313:24;18206:131;18203:234;;;18365:4;18354:8;;:15;;;;;;;;;;;;;;;;;;18384:10;:8;:10::i;:::-;18420:5;18409:8;;:16;;;;;;;;;;;;;;;;;;18203:234;18527:19;:25;18547:4;18527:25;;;;;;;;;;;;;;;;;;;;;;;;;18526:26;:54;;;;;18557:19;:23;18577:2;18557:23;;;;;;;;;;;;;;;;;;;;;;;;;18556:24;18526:54;18523:533;;;18596:12;18655:25;:29;18681:2;18655:29;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;18698:1;18688:7;;:11;18655:44;18651:265;;;18745:3;18735:7;;18726:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;18719:29;;18651:265;;;18809:25;:31;18835:4;18809:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;18853:1;18844:6;;:10;18809:45;18806:110;;;18897:3;18888:6;;18879;:15;;;;:::i;:::-;:21;;;;:::i;:::-;18872:28;;18806:110;18651:265;18940:1;18933:4;:8;18930:89;;;18961:42;18977:4;18991;18998;18961:15;:42::i;:::-;18930:89;19040:4;19030:14;;;;;:::i;:::-;;;18581:475;18523:533;19068:33;19084:4;19090:2;19094:6;19068:15;:33::i;:::-;16277:2832;;16198:2911;;;:::o;19698:525::-;19737:23;19763:24;19781:4;19763:9;:24::i;:::-;19737:50;;19820:1;19801:15;:20;19798:34;;19824:7;;;19798:34;19886:1;19865:18;;:22;;;;:::i;:::-;19847:15;:40;19844:111;;;19942:1;19921:18;;:22;;;;:::i;:::-;19903:40;;19844:111;19967:12;19992:33;20009:15;19992:16;:33::i;:::-;20038:18;20059:21;20038:42;;20117:1;20104:10;:14;20101:105;;;20155:10;;;;;;;;;;;20147:24;;20179:10;20147:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20134:60;;;;;20101:105;19726:497;;;19698:525;:::o;15369:240::-;15486:5;15452:25;:31;15478:4;15452:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15504;15531:4;15537:5;15504:26;:39::i;:::-;15595:5;15561:40;;15589:4;15561:40;;;;;;;;;;;;15369:240;;:::o;19117:573::-;19245:21;19283:1;19269:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19245:40;;19314:4;19296;19301:1;19296:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19340:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19330:4;19335:1;19330:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;19369:56;19386:4;19401:9;;;;;;;;;;;19413:11;19369:8;:56::i;:::-;19464:9;;;;;;;;;;;:60;;;19539:11;19565:1;19609:4;19636;19656:15;19464:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19172:518;19117:573;:::o;13957:207::-;14087:10;14045:31;:39;14077:6;14045:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;14113:43;14137:6;14145:10;14113:43;;;;;;;:::i;:::-;;;;;;;;13957:207;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:60::-;1557:3;1578:5;1571:12;;1529:60;;;:::o;1595:142::-;1645:9;1678:53;1696:34;1705:24;1723:5;1705:24;:::i;:::-;1696:34;:::i;:::-;1678:53;:::i;:::-;1665:66;;1595:142;;;:::o;1743:126::-;1793:9;1826:37;1857:5;1826:37;:::i;:::-;1813:50;;1743:126;;;:::o;1875:144::-;1943:9;1976:37;2007:5;1976:37;:::i;:::-;1963:50;;1875:144;;;:::o;2025:167::-;2130:55;2179:5;2130:55;:::i;:::-;2125:3;2118:68;2025:167;;:::o;2198:258::-;2309:4;2347:2;2336:9;2332:18;2324:26;;2360:89;2446:1;2435:9;2431:17;2422:6;2360:89;:::i;:::-;2198:258;;;;:::o;2462:75::-;2495:6;2528:2;2522:9;2512:19;;2462:75;:::o;2543:117::-;2652:1;2649;2642:12;2666:117;2775:1;2772;2765:12;2789:96;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:77::-;3201:7;3230:5;3219:16;;3164:77;;;:::o;3247:122::-;3320:24;3338:5;3320:24;:::i;:::-;3313:5;3310:35;3300:63;;3359:1;3356;3349:12;3300:63;3247:122;:::o;3375:139::-;3421:5;3459:6;3446:20;3437:29;;3475:33;3502:5;3475:33;:::i;:::-;3375:139;;;;:::o;3520:474::-;3588:6;3596;3645:2;3633:9;3624:7;3620:23;3616:32;3613:119;;;3651:79;;:::i;:::-;3613:119;3771:1;3796:53;3841:7;3832:6;3821:9;3817:22;3796:53;:::i;:::-;3786:63;;3742:117;3898:2;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3869:118;3520:474;;;;;:::o;4000:90::-;4034:7;4077:5;4070:13;4063:21;4052:32;;4000:90;;;:::o;4096:109::-;4177:21;4192:5;4177:21;:::i;:::-;4172:3;4165:34;4096:109;;:::o;4211:210::-;4298:4;4336:2;4325:9;4321:18;4313:26;;4349:65;4411:1;4400:9;4396:17;4387:6;4349:65;:::i;:::-;4211:210;;;;:::o;4427:329::-;4486:6;4535:2;4523:9;4514:7;4510:23;4506:32;4503:119;;;4541:79;;:::i;:::-;4503:119;4661:1;4686:53;4731:7;4722:6;4711:9;4707:22;4686:53;:::i;:::-;4676:63;;4632:117;4427:329;;;;:::o;4762:118::-;4849:24;4867:5;4849:24;:::i;:::-;4844:3;4837:37;4762:118;;:::o;4886:222::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:71;5098:1;5087:9;5083:17;5074:6;5030:71;:::i;:::-;4886:222;;;;:::o;5114:117::-;5223:1;5220;5213:12;5237:180;5285:77;5282:1;5275:88;5382:4;5379:1;5372:15;5406:4;5403:1;5396:15;5423:281;5506:27;5528:4;5506:27;:::i;:::-;5498:6;5494:40;5636:6;5624:10;5621:22;5600:18;5588:10;5585:34;5582:62;5579:88;;;5647:18;;:::i;:::-;5579:88;5687:10;5683:2;5676:22;5466:238;5423:281;;:::o;5710:129::-;5744:6;5771:20;;:::i;:::-;5761:30;;5800:33;5828:4;5820:6;5800:33;:::i;:::-;5710:129;;;:::o;5845:311::-;5922:4;6012:18;6004:6;6001:30;5998:56;;;6034:18;;:::i;:::-;5998:56;6084:4;6076:6;6072:17;6064:25;;6144:4;6138;6134:15;6126:23;;5845:311;;;:::o;6162:117::-;6271:1;6268;6261:12;6302:710;6398:5;6423:81;6439:64;6496:6;6439:64;:::i;:::-;6423:81;:::i;:::-;6414:90;;6524:5;6553:6;6546:5;6539:21;6587:4;6580:5;6576:16;6569:23;;6640:4;6632:6;6628:17;6620:6;6616:30;6669:3;6661:6;6658:15;6655:122;;;6688:79;;:::i;:::-;6655:122;6803:6;6786:220;6820:6;6815:3;6812:15;6786:220;;;6895:3;6924:37;6957:3;6945:10;6924:37;:::i;:::-;6919:3;6912:50;6991:4;6986:3;6982:14;6975:21;;6862:144;6846:4;6841:3;6837:14;6830:21;;6786:220;;;6790:21;6404:608;;6302:710;;;;;:::o;7035:370::-;7106:5;7155:3;7148:4;7140:6;7136:17;7132:27;7122:122;;7163:79;;:::i;:::-;7122:122;7280:6;7267:20;7305:94;7395:3;7387:6;7380:4;7372:6;7368:17;7305:94;:::i;:::-;7296:103;;7112:293;7035:370;;;;:::o;7411:311::-;7488:4;7578:18;7570:6;7567:30;7564:56;;;7600:18;;:::i;:::-;7564:56;7650:4;7642:6;7638:17;7630:25;;7710:4;7704;7700:15;7692:23;;7411:311;;;:::o;7745:710::-;7841:5;7866:81;7882:64;7939:6;7882:64;:::i;:::-;7866:81;:::i;:::-;7857:90;;7967:5;7996:6;7989:5;7982:21;8030:4;8023:5;8019:16;8012:23;;8083:4;8075:6;8071:17;8063:6;8059:30;8112:3;8104:6;8101:15;8098:122;;;8131:79;;:::i;:::-;8098:122;8246:6;8229:220;8263:6;8258:3;8255:15;8229:220;;;8338:3;8367:37;8400:3;8388:10;8367:37;:::i;:::-;8362:3;8355:50;8434:4;8429:3;8425:14;8418:21;;8305:144;8289:4;8284:3;8280:14;8273:21;;8229:220;;;8233:21;7847:608;;7745:710;;;;;:::o;8478:370::-;8549:5;8598:3;8591:4;8583:6;8579:17;8575:27;8565:122;;8606:79;;:::i;:::-;8565:122;8723:6;8710:20;8748:94;8838:3;8830:6;8823:4;8815:6;8811:17;8748:94;:::i;:::-;8739:103;;8555:293;8478:370;;;;:::o;8854:894::-;8972:6;8980;9029:2;9017:9;9008:7;9004:23;9000:32;8997:119;;;9035:79;;:::i;:::-;8997:119;9183:1;9172:9;9168:17;9155:31;9213:18;9205:6;9202:30;9199:117;;;9235:79;;:::i;:::-;9199:117;9340:78;9410:7;9401:6;9390:9;9386:22;9340:78;:::i;:::-;9330:88;;9126:302;9495:2;9484:9;9480:18;9467:32;9526:18;9518:6;9515:30;9512:117;;;9548:79;;:::i;:::-;9512:117;9653:78;9723:7;9714:6;9703:9;9699:22;9653:78;:::i;:::-;9643:88;;9438:303;8854:894;;;;;:::o;9754:619::-;9831:6;9839;9847;9896:2;9884:9;9875:7;9871:23;9867:32;9864:119;;;9902:79;;:::i;:::-;9864:119;10022:1;10047:53;10092:7;10083:6;10072:9;10068:22;10047:53;:::i;:::-;10037:63;;9993:117;10149:2;10175:53;10220:7;10211:6;10200:9;10196:22;10175:53;:::i;:::-;10165:63;;10120:118;10277:2;10303:53;10348:7;10339:6;10328:9;10324:22;10303:53;:::i;:::-;10293:63;;10248:118;9754:619;;;;;:::o;10379:86::-;10414:7;10454:4;10447:5;10443:16;10432:27;;10379:86;;;:::o;10471:112::-;10554:22;10570:5;10554:22;:::i;:::-;10549:3;10542:35;10471:112;;:::o;10589:214::-;10678:4;10716:2;10705:9;10701:18;10693:26;;10729:67;10793:1;10782:9;10778:17;10769:6;10729:67;:::i;:::-;10589:214;;;;:::o;10809:118::-;10896:24;10914:5;10896:24;:::i;:::-;10891:3;10884:37;10809:118;;:::o;10933:222::-;11026:4;11064:2;11053:9;11049:18;11041:26;;11077:71;11145:1;11134:9;11130:17;11121:6;11077:71;:::i;:::-;10933:222;;;;:::o;11161:329::-;11220:6;11269:2;11257:9;11248:7;11244:23;11240:32;11237:119;;;11275:79;;:::i;:::-;11237:119;11395:1;11420:53;11465:7;11456:6;11445:9;11441:22;11420:53;:::i;:::-;11410:63;;11366:117;11161:329;;;;:::o;11496:116::-;11566:21;11581:5;11566:21;:::i;:::-;11559:5;11556:32;11546:60;;11602:1;11599;11592:12;11546:60;11496:116;:::o;11618:133::-;11661:5;11699:6;11686:20;11677:29;;11715:30;11739:5;11715:30;:::i;:::-;11618:133;;;;:::o;11757:468::-;11822:6;11830;11879:2;11867:9;11858:7;11854:23;11850:32;11847:119;;;11885:79;;:::i;:::-;11847:119;12005:1;12030:53;12075:7;12066:6;12055:9;12051:22;12030:53;:::i;:::-;12020:63;;11976:117;12132:2;12158:50;12200:7;12191:6;12180:9;12176:22;12158:50;:::i;:::-;12148:60;;12103:115;11757:468;;;;;:::o;12231:474::-;12299:6;12307;12356:2;12344:9;12335:7;12331:23;12327:32;12324:119;;;12362:79;;:::i;:::-;12324:119;12482:1;12507:53;12552:7;12543:6;12532:9;12528:22;12507:53;:::i;:::-;12497:63;;12453:117;12609:2;12635:53;12680:7;12671:6;12660:9;12656:22;12635:53;:::i;:::-;12625:63;;12580:118;12231:474;;;;;:::o;12711:180::-;12759:77;12756:1;12749:88;12856:4;12853:1;12846:15;12880:4;12877:1;12870:15;12897:320;12941:6;12978:1;12972:4;12968:12;12958:22;;13025:1;13019:4;13015:12;13046:18;13036:81;;13102:4;13094:6;13090:17;13080:27;;13036:81;13164:2;13156:6;13153:14;13133:18;13130:38;13127:84;;13183:18;;:::i;:::-;13127:84;12948:269;12897:320;;;:::o;13223:182::-;13363:34;13359:1;13351:6;13347:14;13340:58;13223:182;:::o;13411:366::-;13553:3;13574:67;13638:2;13633:3;13574:67;:::i;:::-;13567:74;;13650:93;13739:3;13650:93;:::i;:::-;13768:2;13763:3;13759:12;13752:19;;13411:366;;;:::o;13783:419::-;13949:4;13987:2;13976:9;13972:18;13964:26;;14036:9;14030:4;14026:20;14022:1;14011:9;14007:17;14000:47;14064:131;14190:4;14064:131;:::i;:::-;14056:139;;13783:419;;;:::o;14208:180::-;14348:32;14344:1;14336:6;14332:14;14325:56;14208:180;:::o;14394:366::-;14536:3;14557:67;14621:2;14616:3;14557:67;:::i;:::-;14550:74;;14633:93;14722:3;14633:93;:::i;:::-;14751:2;14746:3;14742:12;14735:19;;14394:366;;;:::o;14766:419::-;14932:4;14970:2;14959:9;14955:18;14947:26;;15019:9;15013:4;15009:20;15005:1;14994:9;14990:17;14983:47;15047:131;15173:4;15047:131;:::i;:::-;15039:139;;14766:419;;;:::o;15191:241::-;15331:34;15327:1;15319:6;15315:14;15308:58;15400:24;15395:2;15387:6;15383:15;15376:49;15191:241;:::o;15438:366::-;15580:3;15601:67;15665:2;15660:3;15601:67;:::i;:::-;15594:74;;15677:93;15766:3;15677:93;:::i;:::-;15795:2;15790:3;15786:12;15779:19;;15438:366;;;:::o;15810:419::-;15976:4;16014:2;16003:9;15999:18;15991:26;;16063:9;16057:4;16053:20;16049:1;16038:9;16034:17;16027:47;16091:131;16217:4;16091:131;:::i;:::-;16083:139;;15810:419;;;:::o;16235:180::-;16283:77;16280:1;16273:88;16380:4;16377:1;16370:15;16404:4;16401:1;16394:15;16421:180;16469:77;16466:1;16459:88;16566:4;16563:1;16556:15;16590:4;16587:1;16580:15;16607:233;16646:3;16669:24;16687:5;16669:24;:::i;:::-;16660:33;;16715:66;16708:5;16705:77;16702:103;;16785:18;;:::i;:::-;16702:103;16832:1;16825:5;16821:13;16814:20;;16607:233;;;:::o;16846:227::-;16986:34;16982:1;16974:6;16970:14;16963:58;17055:10;17050:2;17042:6;17038:15;17031:35;16846:227;:::o;17079:366::-;17221:3;17242:67;17306:2;17301:3;17242:67;:::i;:::-;17235:74;;17318:93;17407:3;17318:93;:::i;:::-;17436:2;17431:3;17427:12;17420:19;;17079:366;;;:::o;17451:419::-;17617:4;17655:2;17644:9;17640:18;17632:26;;17704:9;17698:4;17694:20;17690:1;17679:9;17675:17;17668:47;17732:131;17858:4;17732:131;:::i;:::-;17724:139;;17451:419;;;:::o;17876:305::-;17916:3;17935:20;17953:1;17935:20;:::i;:::-;17930:25;;17969:20;17987:1;17969:20;:::i;:::-;17964:25;;18123:1;18055:66;18051:74;18048:1;18045:81;18042:107;;;18129:18;;:::i;:::-;18042:107;18173:1;18170;18166:9;18159:16;;17876:305;;;;:::o;18187:251::-;18327:34;18323:1;18315:6;18311:14;18304:58;18396:34;18391:2;18383:6;18379:15;18372:59;18187:251;:::o;18444:366::-;18586:3;18607:67;18671:2;18666:3;18607:67;:::i;:::-;18600:74;;18683:93;18772:3;18683:93;:::i;:::-;18801:2;18796:3;18792:12;18785:19;;18444:366;;;:::o;18816:419::-;18982:4;19020:2;19009:9;19005:18;18997:26;;19069:9;19063:4;19059:20;19055:1;19044:9;19040:17;19033:47;19097:131;19223:4;19097:131;:::i;:::-;19089:139;;18816:419;;;:::o;19241:226::-;19381:34;19377:1;19369:6;19365:14;19358:58;19450:9;19445:2;19437:6;19433:15;19426:34;19241:226;:::o;19473:366::-;19615:3;19636:67;19700:2;19695:3;19636:67;:::i;:::-;19629:74;;19712:93;19801:3;19712:93;:::i;:::-;19830:2;19825:3;19821:12;19814:19;;19473:366;;;:::o;19845:419::-;20011:4;20049:2;20038:9;20034:18;20026:26;;20098:9;20092:4;20088:20;20084:1;20073:9;20069:17;20062:47;20126:131;20252:4;20126:131;:::i;:::-;20118:139;;19845:419;;;:::o;20270:176::-;20410:28;20406:1;20398:6;20394:14;20387:52;20270:176;:::o;20452:366::-;20594:3;20615:67;20679:2;20674:3;20615:67;:::i;:::-;20608:74;;20691:93;20780:3;20691:93;:::i;:::-;20809:2;20804:3;20800:12;20793:19;;20452:366;;;:::o;20824:419::-;20990:4;21028:2;21017:9;21013:18;21005:26;;21077:9;21071:4;21067:20;21063:1;21052:9;21048:17;21041:47;21105:131;21231:4;21105:131;:::i;:::-;21097:139;;20824:419;;;:::o;21249:178::-;21389:30;21385:1;21377:6;21373:14;21366:54;21249:178;:::o;21433:366::-;21575:3;21596:67;21660:2;21655:3;21596:67;:::i;:::-;21589:74;;21672:93;21761:3;21672:93;:::i;:::-;21790:2;21785:3;21781:12;21774:19;;21433:366;;;:::o;21805:419::-;21971:4;22009:2;21998:9;21994:18;21986:26;;22058:9;22052:4;22048:20;22044:1;22033:9;22029:17;22022:47;22086:131;22212:4;22086:131;:::i;:::-;22078:139;;21805:419;;;:::o;22230:143::-;22287:5;22318:6;22312:13;22303:22;;22334:33;22361:5;22334:33;:::i;:::-;22230:143;;;;:::o;22379:351::-;22449:6;22498:2;22486:9;22477:7;22473:23;22469:32;22466:119;;;22504:79;;:::i;:::-;22466:119;22624:1;22649:64;22705:7;22696:6;22685:9;22681:22;22649:64;:::i;:::-;22639:74;;22595:128;22379:351;;;;:::o;22736:332::-;22857:4;22895:2;22884:9;22880:18;22872:26;;22908:71;22976:1;22965:9;22961:17;22952:6;22908:71;:::i;:::-;22989:72;23057:2;23046:9;23042:18;23033:6;22989:72;:::i;:::-;22736:332;;;;;:::o;23074:137::-;23128:5;23159:6;23153:13;23144:22;;23175:30;23199:5;23175:30;:::i;:::-;23074:137;;;;:::o;23217:345::-;23284:6;23333:2;23321:9;23312:7;23308:23;23304:32;23301:119;;;23339:79;;:::i;:::-;23301:119;23459:1;23484:61;23537:7;23528:6;23517:9;23513:22;23484:61;:::i;:::-;23474:71;;23430:125;23217:345;;;;:::o;23568:173::-;23708:25;23704:1;23696:6;23692:14;23685:49;23568:173;:::o;23747:366::-;23889:3;23910:67;23974:2;23969:3;23910:67;:::i;:::-;23903:74;;23986:93;24075:3;23986:93;:::i;:::-;24104:2;24099:3;24095:12;24088:19;;23747:366;;;:::o;24119:419::-;24285:4;24323:2;24312:9;24308:18;24300:26;;24372:9;24366:4;24362:20;24358:1;24347:9;24343:17;24336:47;24400:131;24526:4;24400:131;:::i;:::-;24392:139;;24119:419;;;:::o;24544:244::-;24684:34;24680:1;24672:6;24668:14;24661:58;24753:27;24748:2;24740:6;24736:15;24729:52;24544:244;:::o;24794:366::-;24936:3;24957:67;25021:2;25016:3;24957:67;:::i;:::-;24950:74;;25033:93;25122:3;25033:93;:::i;:::-;25151:2;25146:3;25142:12;25135:19;;24794:366;;;:::o;25166:419::-;25332:4;25370:2;25359:9;25355:18;25347:26;;25419:9;25413:4;25409:20;25405:1;25394:9;25390:17;25383:47;25447:131;25573:4;25447:131;:::i;:::-;25439:139;;25166:419;;;:::o;25591:224::-;25731:34;25727:1;25719:6;25715:14;25708:58;25800:7;25795:2;25787:6;25783:15;25776:32;25591:224;:::o;25821:366::-;25963:3;25984:67;26048:2;26043:3;25984:67;:::i;:::-;25977:74;;26060:93;26149:3;26060:93;:::i;:::-;26178:2;26173:3;26169:12;26162:19;;25821:366;;;:::o;26193:419::-;26359:4;26397:2;26386:9;26382:18;26374:26;;26446:9;26440:4;26436:20;26432:1;26421:9;26417:17;26410:47;26474:131;26600:4;26474:131;:::i;:::-;26466:139;;26193:419;;;:::o;26618:348::-;26658:7;26681:20;26699:1;26681:20;:::i;:::-;26676:25;;26715:20;26733:1;26715:20;:::i;:::-;26710:25;;26903:1;26835:66;26831:74;26828:1;26825:81;26820:1;26813:9;26806:17;26802:105;26799:131;;;26910:18;;:::i;:::-;26799:131;26958:1;26955;26951:9;26940:20;;26618:348;;;;:::o;26972:180::-;27020:77;27017:1;27010:88;27117:4;27114:1;27107:15;27141:4;27138:1;27131:15;27158:185;27198:1;27215:20;27233:1;27215:20;:::i;:::-;27210:25;;27249:20;27267:1;27249:20;:::i;:::-;27244:25;;27288:1;27278:35;;27293:18;;:::i;:::-;27278:35;27335:1;27332;27328:9;27323:14;;27158:185;;;;:::o;27349:238::-;27489:34;27485:1;27477:6;27473:14;27466:58;27558:21;27553:2;27545:6;27541:15;27534:46;27349:238;:::o;27593:366::-;27735:3;27756:67;27820:2;27815:3;27756:67;:::i;:::-;27749:74;;27832:93;27921:3;27832:93;:::i;:::-;27950:2;27945:3;27941:12;27934:19;;27593:366;;;:::o;27965:419::-;28131:4;28169:2;28158:9;28154:18;28146:26;;28218:9;28212:4;28208:20;28204:1;28193:9;28189:17;28182:47;28246:131;28372:4;28246:131;:::i;:::-;28238:139;;27965:419;;;:::o;28390:237::-;28530:34;28526:1;28518:6;28514:14;28507:58;28599:20;28594:2;28586:6;28582:15;28575:45;28390:237;:::o;28633:366::-;28775:3;28796:67;28860:2;28855:3;28796:67;:::i;:::-;28789:74;;28872:93;28961:3;28872:93;:::i;:::-;28990:2;28985:3;28981:12;28974:19;;28633:366;;;:::o;29005:419::-;29171:4;29209:2;29198:9;29194:18;29186:26;;29258:9;29252:4;29248:20;29244:1;29233:9;29229:17;29222:47;29286:131;29412:4;29286:131;:::i;:::-;29278:139;;29005:419;;;:::o;29430:225::-;29570:34;29566:1;29558:6;29554:14;29547:58;29639:8;29634:2;29626:6;29622:15;29615:33;29430:225;:::o;29661:366::-;29803:3;29824:67;29888:2;29883:3;29824:67;:::i;:::-;29817:74;;29900:93;29989:3;29900:93;:::i;:::-;30018:2;30013:3;30009:12;30002:19;;29661:366;;;:::o;30033:419::-;30199:4;30237:2;30226:9;30222:18;30214:26;;30286:9;30280:4;30276:20;30272:1;30261:9;30257:17;30250:47;30314:131;30440:4;30314:131;:::i;:::-;30306:139;;30033:419;;;:::o;30458:147::-;30559:11;30596:3;30581:18;;30458:147;;;;:::o;30611:114::-;;:::o;30731:398::-;30890:3;30911:83;30992:1;30987:3;30911:83;:::i;:::-;30904:90;;31003:93;31092:3;31003:93;:::i;:::-;31121:1;31116:3;31112:11;31105:18;;30731:398;;;:::o;31135:379::-;31319:3;31341:147;31484:3;31341:147;:::i;:::-;31334:154;;31505:3;31498:10;;31135:379;;;:::o;31520:295::-;31660:34;31656:1;31648:6;31644:14;31637:58;31729:34;31724:2;31716:6;31712:15;31705:59;31798:9;31793:2;31785:6;31781:15;31774:34;31520:295;:::o;31821:366::-;31963:3;31984:67;32048:2;32043:3;31984:67;:::i;:::-;31977:74;;32060:93;32149:3;32060:93;:::i;:::-;32178:2;32173:3;32169:12;32162:19;;31821:366;;;:::o;32193:419::-;32359:4;32397:2;32386:9;32382:18;32374:26;;32446:9;32440:4;32436:20;32432:1;32421:9;32417:17;32410:47;32474:131;32600:4;32474:131;:::i;:::-;32466:139;;32193:419;;;:::o;32618:143::-;32675:5;32706:6;32700:13;32691:22;;32722:33;32749:5;32722:33;:::i;:::-;32618:143;;;;:::o;32767:351::-;32837:6;32886:2;32874:9;32865:7;32861:23;32857:32;32854:119;;;32892:79;;:::i;:::-;32854:119;33012:1;33037:64;33093:7;33084:6;33073:9;33069:22;33037:64;:::i;:::-;33027:74;;32983:128;32767:351;;;;:::o;33124:85::-;33169:7;33198:5;33187:16;;33124:85;;;:::o;33215:158::-;33273:9;33306:61;33324:42;33333:32;33359:5;33333:32;:::i;:::-;33324:42;:::i;:::-;33306:61;:::i;:::-;33293:74;;33215:158;;;:::o;33379:147::-;33474:45;33513:5;33474:45;:::i;:::-;33469:3;33462:58;33379:147;;:::o;33532:114::-;33599:6;33633:5;33627:12;33617:22;;33532:114;;;:::o;33652:184::-;33751:11;33785:6;33780:3;33773:19;33825:4;33820:3;33816:14;33801:29;;33652:184;;;;:::o;33842:132::-;33909:4;33932:3;33924:11;;33962:4;33957:3;33953:14;33945:22;;33842:132;;;:::o;33980:108::-;34057:24;34075:5;34057:24;:::i;:::-;34052:3;34045:37;33980:108;;:::o;34094:179::-;34163:10;34184:46;34226:3;34218:6;34184:46;:::i;:::-;34262:4;34257:3;34253:14;34239:28;;34094:179;;;;:::o;34279:113::-;34349:4;34381;34376:3;34372:14;34364:22;;34279:113;;;:::o;34428:732::-;34547:3;34576:54;34624:5;34576:54;:::i;:::-;34646:86;34725:6;34720:3;34646:86;:::i;:::-;34639:93;;34756:56;34806:5;34756:56;:::i;:::-;34835:7;34866:1;34851:284;34876:6;34873:1;34870:13;34851:284;;;34952:6;34946:13;34979:63;35038:3;35023:13;34979:63;:::i;:::-;34972:70;;35065:60;35118:6;35065:60;:::i;:::-;35055:70;;34911:224;34898:1;34895;34891:9;34886:14;;34851:284;;;34855:14;35151:3;35144:10;;34552:608;;;34428:732;;;;:::o;35166:720::-;35401:4;35439:3;35428:9;35424:19;35416:27;;35453:79;35529:1;35518:9;35514:17;35505:6;35453:79;:::i;:::-;35579:9;35573:4;35569:20;35564:2;35553:9;35549:18;35542:48;35607:108;35710:4;35701:6;35607:108;:::i;:::-;35599:116;;35725:72;35793:2;35782:9;35778:18;35769:6;35725:72;:::i;:::-;35807;35875:2;35864:9;35860:18;35851:6;35807:72;:::i;:::-;35166:720;;;;;;;:::o;35892:223::-;36032:34;36028:1;36020:6;36016:14;36009:58;36101:6;36096:2;36088:6;36084:15;36077:31;35892:223;:::o;36121:366::-;36263:3;36284:67;36348:2;36343:3;36284:67;:::i;:::-;36277:74;;36360:93;36449:3;36360:93;:::i;:::-;36478:2;36473:3;36469:12;36462:19;;36121:366;;;:::o;36493:419::-;36659:4;36697:2;36686:9;36682:18;36674:26;;36746:9;36740:4;36736:20;36732:1;36721:9;36717:17;36710:47;36774:131;36900:4;36774:131;:::i;:::-;36766:139;;36493:419;;;:::o;36918:221::-;37058:34;37054:1;37046:6;37042:14;37035:58;37127:4;37122:2;37114:6;37110:15;37103:29;36918:221;:::o;37145:366::-;37287:3;37308:67;37372:2;37367:3;37308:67;:::i;:::-;37301:74;;37384:93;37473:3;37384:93;:::i;:::-;37502:2;37497:3;37493:12;37486:19;;37145:366;;;:::o;37517:419::-;37683:4;37721:2;37710:9;37706:18;37698:26;;37770:9;37764:4;37760:20;37756:1;37745:9;37741:17;37734:47;37798:131;37924:4;37798:131;:::i;:::-;37790:139;;37517:419;;;:::o;37942:224::-;38082:34;38078:1;38070:6;38066:14;38059:58;38151:7;38146:2;38138:6;38134:15;38127:32;37942:224;:::o;38172:366::-;38314:3;38335:67;38399:2;38394:3;38335:67;:::i;:::-;38328:74;;38411:93;38500:3;38411:93;:::i;:::-;38529:2;38524:3;38520:12;38513:19;;38172:366;;;:::o;38544:419::-;38710:4;38748:2;38737:9;38733:18;38725:26;;38797:9;38791:4;38787:20;38783:1;38772:9;38768:17;38761:47;38825:131;38951:4;38825:131;:::i;:::-;38817:139;;38544:419;;;:::o;38969:222::-;39109:34;39105:1;39097:6;39093:14;39086:58;39178:5;39173:2;39165:6;39161:15;39154:30;38969:222;:::o;39197:366::-;39339:3;39360:67;39424:2;39419:3;39360:67;:::i;:::-;39353:74;;39436:93;39525:3;39436:93;:::i;:::-;39554:2;39549:3;39545:12;39538:19;;39197:366;;;:::o;39569:419::-;39735:4;39773:2;39762:9;39758:18;39750:26;;39822:9;39816:4;39812:20;39808:1;39797:9;39793:17;39786:47;39850:131;39976:4;39850:131;:::i;:::-;39842:139;;39569:419;;;:::o;39994:225::-;40134:34;40130:1;40122:6;40118:14;40111:58;40203:8;40198:2;40190:6;40186:15;40179:33;39994:225;:::o;40225:366::-;40367:3;40388:67;40452:2;40447:3;40388:67;:::i;:::-;40381:74;;40464:93;40553:3;40464:93;:::i;:::-;40582:2;40577:3;40573:12;40566:19;;40225:366;;;:::o;40597:419::-;40763:4;40801:2;40790:9;40786:18;40778:26;;40850:9;40844:4;40840:20;40836:1;40825:9;40821:17;40814:47;40878:131;41004:4;40878:131;:::i;:::-;40870:139;;40597:419;;;:::o;41022:179::-;41162:31;41158:1;41150:6;41146:14;41139:55;41022:179;:::o;41207:366::-;41349:3;41370:67;41434:2;41429:3;41370:67;:::i;:::-;41363:74;;41446:93;41535:3;41446:93;:::i;:::-;41564:2;41559:3;41555:12;41548:19;;41207:366;;;:::o;41579:419::-;41745:4;41783:2;41772:9;41768:18;41760:26;;41832:9;41826:4;41822:20;41818:1;41807:9;41803:17;41796:47;41860:131;41986:4;41860:131;:::i;:::-;41852:139;;41579:419;;;:::o;42004:172::-;42144:24;42140:1;42132:6;42128:14;42121:48;42004:172;:::o;42182:366::-;42324:3;42345:67;42409:2;42404:3;42345:67;:::i;:::-;42338:74;;42421:93;42510:3;42421:93;:::i;:::-;42539:2;42534:3;42530:12;42523:19;;42182:366;;;:::o;42554:419::-;42720:4;42758:2;42747:9;42743:18;42735:26;;42807:9;42801:4;42797:20;42793:1;42782:9;42778:17;42771:47;42835:131;42961:4;42835:131;:::i;:::-;42827:139;;42554:419;;;:::o;42979:249::-;43119:34;43115:1;43107:6;43103:14;43096:58;43188:32;43183:2;43175:6;43171:15;43164:57;42979:249;:::o;43234:366::-;43376:3;43397:67;43461:2;43456:3;43397:67;:::i;:::-;43390:74;;43473:93;43562:3;43473:93;:::i;:::-;43591:2;43586:3;43582:12;43575:19;;43234:366;;;:::o;43606:419::-;43772:4;43810:2;43799:9;43795:18;43787:26;;43859:9;43853:4;43849:20;43845:1;43834:9;43830:17;43823:47;43887:131;44013:4;43887:131;:::i;:::-;43879:139;;43606:419;;;:::o;44031:227::-;44171:34;44167:1;44159:6;44155:14;44148:58;44240:10;44235:2;44227:6;44223:15;44216:35;44031:227;:::o;44264:366::-;44406:3;44427:67;44491:2;44486:3;44427:67;:::i;:::-;44420:74;;44503:93;44592:3;44503:93;:::i;:::-;44621:2;44616:3;44612:12;44605:19;;44264:366;;;:::o;44636:419::-;44802:4;44840:2;44829:9;44825:18;44817:26;;44889:9;44883:4;44879:20;44875:1;44864:9;44860:17;44853:47;44917:131;45043:4;44917:131;:::i;:::-;44909:139;;44636:419;;;:::o;45061:174::-;45201:26;45197:1;45189:6;45185:14;45178:50;45061:174;:::o;45241:366::-;45383:3;45404:67;45468:2;45463:3;45404:67;:::i;:::-;45397:74;;45480:93;45569:3;45480:93;:::i;:::-;45598:2;45593:3;45589:12;45582:19;;45241:366;;;:::o;45613:419::-;45779:4;45817:2;45806:9;45802:18;45794:26;;45866:9;45860:4;45856:20;45852:1;45841:9;45837:17;45830:47;45894:131;46020:4;45894:131;:::i;:::-;45886:139;;45613:419;;;:::o;46038:222::-;46178:34;46174:1;46166:6;46162:14;46155:58;46247:5;46242:2;46234:6;46230:15;46223:30;46038:222;:::o;46266:366::-;46408:3;46429:67;46493:2;46488:3;46429:67;:::i;:::-;46422:74;;46505:93;46594:3;46505:93;:::i;:::-;46623:2;46618:3;46614:12;46607:19;;46266:366;;;:::o;46638:419::-;46804:4;46842:2;46831:9;46827:18;46819:26;;46891:9;46885:4;46881:20;46877:1;46866:9;46862:17;46855:47;46919:131;47045:4;46919:131;:::i;:::-;46911:139;;46638:419;;;:::o;47063:191::-;47103:4;47123:20;47141:1;47123:20;:::i;:::-;47118:25;;47157:20;47175:1;47157:20;:::i;:::-;47152:25;;47196:1;47193;47190:8;47187:34;;;47201:18;;:::i;:::-;47187:34;47246:1;47243;47239:9;47231:17;;47063:191;;;;:::o;47260:831::-;47523:4;47561:3;47550:9;47546:19;47538:27;;47575:71;47643:1;47632:9;47628:17;47619:6;47575:71;:::i;:::-;47656:80;47732:2;47721:9;47717:18;47708:6;47656:80;:::i;:::-;47783:9;47777:4;47773:20;47768:2;47757:9;47753:18;47746:48;47811:108;47914:4;47905:6;47811:108;:::i;:::-;47803:116;;47929:72;47997:2;47986:9;47982:18;47973:6;47929:72;:::i;:::-;48011:73;48079:3;48068:9;48064:19;48055:6;48011:73;:::i;:::-;47260:831;;;;;;;;:::o;48097:320::-;48212:4;48250:2;48239:9;48235:18;48227:26;;48263:71;48331:1;48320:9;48316:17;48307:6;48263:71;:::i;:::-;48344:66;48406:2;48395:9;48391:18;48382:6;48344:66;:::i;:::-;48097:320;;;;;:::o

Swarm Source

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