ETH Price: $3,429.28 (-2.46%)

Token

BabyGrok (BabyGrok)
 

Overview

Max Total Supply

100,000,000,000,000 BabyGrok

Holders

124

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1.143432550920559938 BabyGrok

Value
$0.00
0xe066c8fc0734715b00fbcabb4ece7fb6a557e33b
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:
BabyGrok

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**

*/

//SPDX-License-Identifier: UNLICENSED

/**

Telegram: https://t.me/BabyGrok_ERC
Twitter: https://x.com/BabyGrokErc
Website: www.babygrok.com


*/

pragma solidity ^0.8.19;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    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) internal _balances;

    mapping(address => mapping(address => uint256)) internal _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");
        _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");
        _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");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

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

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

    
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

contract BabyGrok is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool private  providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 private  tokenLiquidityThreshold = 870000000000 * 10**18;
    uint256 public maxWalletLimit = 1000000000000 * 10**18;

    uint256 private  genesis_block;
    uint256 private deadline = 1;
    uint256 private launchtax = 95;

    address private  marketingWallet = 0x1e1a6b5b7f36c52593e8c68204DF295C59B3550e;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes public taxes = Taxes(18, 2);
    Taxes public sellTaxes = Taxes(38, 2);

    mapping(address => bool) public exemptFee;
    


    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("BabyGrok", "BabyGrok") {
        _tokengeneration(msg.sender, 100000000000000 * 10**decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0xD152f549545093347A162Dce210e7293f1452150] = true;
        exemptFee[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true;
    }

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

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

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

        return true;
    }

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

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

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex) {
           
            if (recipient != pair) {
                require(balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

	if(feeswap == 0){
            return;
        }	

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

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

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity);
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity);
    }

   function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        deadline = _deadline;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function AddExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = true;
    }

    function RemoveExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = false;
    }

    function AddbulkExemptFee(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = true;
        }
    }

    function RemovebulkExemptFee(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = false;
        }
    }

    function updateMaxWalletLimit(uint256 maxWallet) external onlyOwner {
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"AddbulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"RemovebulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"UpdateBuyTaxes","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff0219169083151502179055506c0afb1f22071e93cefc700000006008556c0c9f2c9cd04674edea400000006009556001600b55605f600c55731e1a6b5b7f36c52593e8c68204df295c59b3550e600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280601281526020016002815250600e6000820151816000015560208201518160010155505060405180604001604052806026815260200160028152506010600082015181600001556020820151816001015550503480156200014157600080fd5b506040518060400160405280600881526020017f4261627947726f6b0000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f4261627947726f6b0000000000000000000000000000000000000000000000008152508160039081620001bf919062000b30565b508060049081620001d1919062000b30565b505050620001f4620001e86200069e60201b60201c565b620006a660201b60201c565b6200023633620002096200076c60201b60201c565b600a62000217919062000da7565b655af3107a40006200022a919062000df8565b6200077560201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c3919062000ead565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000351919062000ead565b6040518363ffffffff1660e01b81526004016200037092919062000ef0565b6020604051808303816000875af115801562000390573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b6919062000ead565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016012600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016012600073d152f549545093347a162dce210e7293f145215073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016012600073663a5c229c09b049e36dcc11a9b0d4a8eb9db21473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000ff4565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007de9062000fa4565b60405180910390fd5b620007fb60008383620008b160201b60201c565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008a5919062000fd7565b60405180910390a35050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200093857607f821691505b6020821081036200094e576200094d620008f0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000979565b620009c4868362000979565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a1162000a0b62000a0584620009dc565b620009e6565b620009dc565b9050919050565b6000819050919050565b62000a2d83620009f0565b62000a4562000a3c8262000a18565b84845462000986565b825550505050565b600090565b62000a5c62000a4d565b62000a6981848462000a22565b505050565b5b8181101562000a915762000a8560008262000a52565b60018101905062000a6f565b5050565b601f82111562000ae05762000aaa8162000954565b62000ab58462000969565b8101602085101562000ac5578190505b62000add62000ad48562000969565b83018262000a6e565b50505b505050565b600082821c905092915050565b600062000b056000198460080262000ae5565b1980831691505092915050565b600062000b20838362000af2565b9150826002028217905092915050565b62000b3b82620008b6565b67ffffffffffffffff81111562000b575762000b56620008c1565b5b62000b6382546200091f565b62000b7082828562000a95565b600060209050601f83116001811462000ba8576000841562000b93578287015190505b62000b9f858262000b12565b86555062000c0f565b601f19841662000bb88662000954565b60005b8281101562000be25784890151825560018201915060208501945060208101905062000bbb565b8683101562000c02578489015162000bfe601f89168262000af2565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ca55780860481111562000c7d5762000c7c62000c17565b5b600185161562000c8d5780820291505b808102905062000c9d8562000c46565b945062000c5d565b94509492505050565b60008262000cc0576001905062000d93565b8162000cd0576000905062000d93565b816001811462000ce9576002811462000cf45762000d2a565b600191505062000d93565b60ff84111562000d095762000d0862000c17565b5b8360020a91508482111562000d235762000d2262000c17565b5b5062000d93565b5060208310610133831016604e8410600b841016171562000d645782820a90508381111562000d5e5762000d5d62000c17565b5b62000d93565b62000d73848484600162000c53565b9250905081840481111562000d8d5762000d8c62000c17565b5b81810290505b9392505050565b600060ff82169050919050565b600062000db482620009dc565b915062000dc18362000d9a565b925062000df07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cae565b905092915050565b600062000e0582620009dc565b915062000e1283620009dc565b925082820262000e2281620009dc565b9150828204841483151762000e3c5762000e3b62000c17565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e758262000e48565b9050919050565b62000e878162000e68565b811462000e9357600080fd5b50565b60008151905062000ea78162000e7c565b92915050565b60006020828403121562000ec65762000ec562000e43565b5b600062000ed68482850162000e96565b91505092915050565b62000eea8162000e68565b82525050565b600060408201905062000f07600083018562000edf565b62000f16602083018462000edf565b9392505050565b600082825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600062000f8c60258362000f1d565b915062000f998262000f2e565b604082019050919050565b6000602082019050818103600083015262000fbf8162000f7d565b9050919050565b62000fd181620009dc565b82525050565b600060208201905062000fee600083018462000fc6565b92915050565b61430f80620010046000396000f3fe6080604052600436106102135760003560e01c80638a8c523c11610118578063c5d32bb2116100a0578063f2fde38b1161006f578063f2fde38b146107a7578063f52be97c146107d0578063f570d4de146107f9578063f66895a314610822578063f887ea401461084e5761021a565b8063c5d32bb2146106db578063d695609b14610718578063dd62ed3e14610741578063edaa11681461077e5761021a565b80639e252f00116100e75780639e252f00146105e4578063a457c2d71461060d578063a8aa1b311461064a578063a9059cbb14610675578063aacebbe3146106b25761021a565b80638a8c523c1461054e5780638cd4426d146105655780638da5cb5b1461058e57806395d89b41146105b95761021a565b80634324deae1161019b57806370a082311161016a57806370a082311461047a578063715018a6146104b7578063728f8eea146104ce578063832c2bd2146104fa57806385141a77146105235761021a565b80634324deae146103d25780634ada218b146103fb5780635dbdb7e31461042657806366a88d961461044f5761021a565b806323b872dd116101e257806323b872dd146102db578063251ef09514610318578063313ce56714610341578063395093511461036c57806342b6fa11146103a95761021a565b806306fdde031461021f578063095ea7b31461024a5780631340538f1461028757806318160ddd146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610879565b6040516102419190612e55565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190612f1f565b61090b565b60405161027e9190612f7a565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190612fc1565b610929565b005b3480156102bc57600080fd5b506102c56109c2565b6040516102d29190612ffd565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190613018565b6109cc565b60405161030f9190612f7a565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a91906131b3565b610acd565b005b34801561034d57600080fd5b50610356610bde565b6040516103639190613218565b60405180910390f35b34801561037857600080fd5b50610393600480360381019061038e9190612f1f565b610be7565b6040516103a09190612f7a565b60405180910390f35b3480156103b557600080fd5b506103d060048036038101906103cb9190613233565b610c93565b005b3480156103de57600080fd5b506103f960048036038101906103f49190613233565b610d37565b005b34801561040757600080fd5b50610410610ddb565b60405161041d9190612f7a565b60405180910390f35b34801561043257600080fd5b5061044d60048036038101906104489190613260565b610dee565b005b34801561045b57600080fd5b50610464610ec5565b6040516104719190612ffd565b60405180910390f35b34801561048657600080fd5b506104a1600480360381019061049c9190613260565b610ecb565b6040516104ae9190612ffd565b60405180910390f35b3480156104c357600080fd5b506104cc610f13565b005b3480156104da57600080fd5b506104e3610f9b565b6040516104f192919061328d565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190613260565b610fad565b005b34801561052f57600080fd5b50610538611084565b60405161054591906132c5565b60405180910390f35b34801561055a57600080fd5b5061056361108a565b005b34801561057157600080fd5b5061058c60048036038101906105879190612f1f565b611195565b005b34801561059a57600080fd5b506105a361129b565b6040516105b091906132c5565b60405180910390f35b3480156105c557600080fd5b506105ce6112c5565b6040516105db9190612e55565b60405180910390f35b3480156105f057600080fd5b5061060b60048036038101906106069190613233565b611357565b005b34801561061957600080fd5b50610634600480360381019061062f9190612f1f565b611424565b6040516106419190612f7a565b60405180910390f35b34801561065657600080fd5b5061065f611518565b60405161066c91906132c5565b60405180910390f35b34801561068157600080fd5b5061069c60048036038101906106979190612f1f565b61153e565b6040516106a99190612f7a565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d49190613260565b611555565b005b3480156106e757600080fd5b5061070260048036038101906106fd9190613260565b611615565b60405161070f9190612f7a565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a91906132e0565b611635565b005b34801561074d57600080fd5b5061076860048036038101906107639190613320565b6116e3565b6040516107759190612ffd565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613233565b61176a565b005b3480156107b357600080fd5b506107ce60048036038101906107c99190613260565b611840565b005b3480156107dc57600080fd5b506107f760048036038101906107f291906132e0565b611937565b005b34801561080557600080fd5b50610820600480360381019061081b91906131b3565b6119e5565b005b34801561082e57600080fd5b50610837611af6565b60405161084592919061328d565b60405180910390f35b34801561085a57600080fd5b50610863611b08565b60405161087091906133bf565b60405180910390f35b60606003805461088890613409565b80601f01602080910402602001604051908101604052809291908181526020018280546108b490613409565b80156109015780601f106108d657610100808354040283529160200191610901565b820191906000526020600020905b8154815290600101906020018083116108e457829003601f168201915b5050505050905090565b600061091f610918611b2e565b8484611b36565b6001905092915050565b610931611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661094f61129b565b73ffffffffffffffffffffffffffffffffffffffff16146109a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099c90613486565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b60006109d9848484611cff565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a24611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b90613518565b60405180910390fd5b610ac185610ab0611b2e565b8584610abc9190613567565b611b36565b60019150509392505050565b610ad5611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610af361129b565b73ffffffffffffffffffffffffffffffffffffffff1614610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090613486565b60405180910390fd5b60005b8151811015610bda57600060126000848481518110610b6e57610b6d61359b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bd2906135ca565b915050610b4c565b5050565b60006012905090565b6000610c89610bf4611b2e565b848460016000610c02611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c849190613612565b611b36565b6001905092915050565b610c9b611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610cb961129b565b73ffffffffffffffffffffffffffffffffffffffff1614610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690613486565b60405180910390fd5b610d17610bde565b600a610d239190613779565b81610d2e91906137c4565b60088190555050565b610d3f611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610d5d61129b565b73ffffffffffffffffffffffffffffffffffffffff1614610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90613486565b60405180910390fd5b610dbb610bde565b600a610dc79190613779565b81610dd291906137c4565b60098190555050565b600760169054906101000a900460ff1681565b610df6611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610e1461129b565b73ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6190613486565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f1b611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610f3961129b565b73ffffffffffffffffffffffffffffffffffffffff1614610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8690613486565b60405180910390fd5b610f9960006124a8565b565b600e8060000154908060010154905082565b610fb5611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610fd361129b565b73ffffffffffffffffffffffffffffffffffffffff1614611029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102090613486565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61dead81565b611092611b2e565b73ffffffffffffffffffffffffffffffffffffffff166110b061129b565b73ffffffffffffffffffffffffffffffffffffffff1614611106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fd90613486565b60405180910390fd5b600760169054906101000a900460ff1615611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90613852565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600a81905550565b61119d611b2e565b73ffffffffffffffffffffffffffffffffffffffff166111bb61129b565b73ffffffffffffffffffffffffffffffffffffffff1614611211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120890613486565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61123561129b565b836040518363ffffffff1660e01b8152600401611253929190613872565b6020604051808303816000875af1158015611272573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129691906138b0565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112d490613409565b80601f016020809104026020016040519081016040528092919081815260200182805461130090613409565b801561134d5780601f106113225761010080835404028352916020019161134d565b820191906000526020600020905b81548152906001019060200180831161133057829003601f168201915b5050505050905090565b61135f611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661137d61129b565b73ffffffffffffffffffffffffffffffffffffffff16146113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca90613486565b60405180910390fd5b6113db61129b565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611420573d6000803e3d6000fd5b5050565b60008060016000611433611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e79061394f565b60405180910390fd5b61150d6114fb611b2e565b8585846115089190613567565b611b36565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061154b338484611cff565b6001905092915050565b61155d611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661157b61129b565b73ffffffffffffffffffffffffffffffffffffffff16146115d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c890613486565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b61163d611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661165b61129b565b73ffffffffffffffffffffffffffffffffffffffff16146116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a890613486565b60405180910390fd5b604051806040016040528083815260200182815250600e60008201518160000155602082015181600101559050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611772611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661179061129b565b73ffffffffffffffffffffffffffffffffffffffff16146117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dd90613486565b60405180910390fd5b600760169054906101000a900460ff1615611836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182d906139e1565b60405180910390fd5b80600b8190555050565b611848611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661186661129b565b73ffffffffffffffffffffffffffffffffffffffff16146118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390613486565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361192b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192290613a73565b60405180910390fd5b611934816124a8565b50565b61193f611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661195d61129b565b73ffffffffffffffffffffffffffffffffffffffff16146119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa90613486565b60405180910390fd5b604051806040016040528083815260200182815250601060008201518160000155602082015181600101559050505050565b6119ed611b2e565b73ffffffffffffffffffffffffffffffffffffffff16611a0b61129b565b73ffffffffffffffffffffffffffffffffffffffff1614611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5890613486565b60405180910390fd5b60005b8151811015611af257600160126000848481518110611a8657611a8561359b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611aea906135ca565b915050611a64565b5050565b60108060000154908060010154905082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613b05565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0b90613b97565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cf29190612ffd565b60405180910390a3505050565b60008111611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990613c29565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611de65750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e3b57600760169054906101000a900460ff16611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190613c95565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ee25750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611efb5750600760149054906101000a900460ff16155b15611f595760095481611f0d84610ecb565b611f179190613612565b1115611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90613d01565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120015750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120575750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120705750600760149054906101000a900460ff16155b1561212457600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461212357600954816120d784610ecb565b6120e19190613612565b1115612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211990613d01565b60405180910390fd5b5b5b6000806000612131612dab565b6000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121d75750601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121f15750600b54600a546121ee9190613612565b43105b9050600760149054906101000a900460ff16806122575750601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806122ab5750601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122b957600092506123b8565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015612314575080155b1561235c5760106000015460106001015461232f9190613612565b945084935060106040518060400160405290816000820154815260200160018201548152505091506123b7565b806123a457600e60000154600e600101546123779190613612565b9450849350600e6040518060400160405290816000820154815260200160018201548152505091506123b6565b80156123b557600c549450600c5493505b5b5b5b606484876123c691906137c4565b6123d09190613d50565b9250600760159054906101000a900460ff16801561243c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b1561244c5761244b858361256e565b5b6124628888858961245d9190613567565b612712565b600083111561249e57600085111561249d5760006064868861248491906137c4565b61248e9190613d50565b905061249b893083612712565b505b5b5050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff1661270e576001600760146101000a81548160ff02191690831515021790555060008203156126f25760006125b130610ecb565b905060085481106126f057600160085411156125cd5760085490505b60006002846125dc91906137c4565b90506000818460200151846125f191906137c4565b6125fb9190613d50565b90506000818461260b9190613567565b9050600047905061261b8261298f565b600081476126299190613567565b9050600087602001518661263d9190613567565b826126489190613d50565b9050600088602001518261265c91906137c4565b90506000811115612672576126718682612bd2565b5b6000896000015160028461268691906137c4565b61269091906137c4565b905060008111156126e7576126e681600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612cb290919063ffffffff16565b5b50505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277890613df3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e790613e85565b60405180910390fd5b6127fb838383612da6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287890613f17565b60405180910390fd5b818161288d9190613567565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461291d9190613612565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129819190612ffd565b60405180910390a350505050565b6000600267ffffffffffffffff8111156129ac576129ab613070565b5b6040519080825280602002602001820160405280156129da5781602001602082028036833780820191505090505b50905030816000815181106129f2576129f161359b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abd9190613f4c565b81600181518110612ad157612ad061359b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b3830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b36565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b9c959493929190614072565b600060405180830381600087803b158015612bb657600080fd5b505af1158015612bca573d6000803e3d6000fd5b505050505050565b612bff30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b36565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612c68969594939291906140cc565b60606040518083038185885af1158015612c86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612cab9190614142565b5050505050565b80471015612cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cec906141e1565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612d1b90614232565b60006040518083038185875af1925050503d8060008114612d58576040519150601f19603f3d011682016040523d82523d6000602084013e612d5d565b606091505b5050905080612da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d98906142b9565b60405180910390fd5b505050565b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dff578082015181840152602081019050612de4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e2782612dc5565b612e318185612dd0565b9350612e41818560208601612de1565b612e4a81612e0b565b840191505092915050565b60006020820190508181036000830152612e6f8184612e1c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612eb682612e8b565b9050919050565b612ec681612eab565b8114612ed157600080fd5b50565b600081359050612ee381612ebd565b92915050565b6000819050919050565b612efc81612ee9565b8114612f0757600080fd5b50565b600081359050612f1981612ef3565b92915050565b60008060408385031215612f3657612f35612e81565b5b6000612f4485828601612ed4565b9250506020612f5585828601612f0a565b9150509250929050565b60008115159050919050565b612f7481612f5f565b82525050565b6000602082019050612f8f6000830184612f6b565b92915050565b612f9e81612f5f565b8114612fa957600080fd5b50565b600081359050612fbb81612f95565b92915050565b600060208284031215612fd757612fd6612e81565b5b6000612fe584828501612fac565b91505092915050565b612ff781612ee9565b82525050565b60006020820190506130126000830184612fee565b92915050565b60008060006060848603121561303157613030612e81565b5b600061303f86828701612ed4565b935050602061305086828701612ed4565b925050604061306186828701612f0a565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130a882612e0b565b810181811067ffffffffffffffff821117156130c7576130c6613070565b5b80604052505050565b60006130da612e77565b90506130e6828261309f565b919050565b600067ffffffffffffffff82111561310657613105613070565b5b602082029050602081019050919050565b600080fd5b600061312f61312a846130eb565b6130d0565b9050808382526020820190506020840283018581111561315257613151613117565b5b835b8181101561317b57806131678882612ed4565b845260208401935050602081019050613154565b5050509392505050565b600082601f83011261319a5761319961306b565b5b81356131aa84826020860161311c565b91505092915050565b6000602082840312156131c9576131c8612e81565b5b600082013567ffffffffffffffff8111156131e7576131e6612e86565b5b6131f384828501613185565b91505092915050565b600060ff82169050919050565b613212816131fc565b82525050565b600060208201905061322d6000830184613209565b92915050565b60006020828403121561324957613248612e81565b5b600061325784828501612f0a565b91505092915050565b60006020828403121561327657613275612e81565b5b600061328484828501612ed4565b91505092915050565b60006040820190506132a26000830185612fee565b6132af6020830184612fee565b9392505050565b6132bf81612eab565b82525050565b60006020820190506132da60008301846132b6565b92915050565b600080604083850312156132f7576132f6612e81565b5b600061330585828601612f0a565b925050602061331685828601612f0a565b9150509250929050565b6000806040838503121561333757613336612e81565b5b600061334585828601612ed4565b925050602061335685828601612ed4565b9150509250929050565b6000819050919050565b600061338561338061337b84612e8b565b613360565b612e8b565b9050919050565b60006133978261336a565b9050919050565b60006133a98261338c565b9050919050565b6133b98161339e565b82525050565b60006020820190506133d460008301846133b0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061342157607f821691505b602082108103613434576134336133da565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613470602083612dd0565b915061347b8261343a565b602082019050919050565b6000602082019050818103600083015261349f81613463565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613502602883612dd0565b915061350d826134a6565b604082019050919050565b60006020820190508181036000830152613531816134f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061357282612ee9565b915061357d83612ee9565b925082820390508181111561359557613594613538565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006135d582612ee9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361360757613606613538565b5b600182019050919050565b600061361d82612ee9565b915061362883612ee9565b92508282019050808211156136405761363f613538565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561369d5780860481111561367957613678613538565b5b60018516156136885780820291505b808102905061369685613646565b945061365d565b94509492505050565b6000826136b65760019050613772565b816136c45760009050613772565b81600181146136da57600281146136e457613713565b6001915050613772565b60ff8411156136f6576136f5613538565b5b8360020a91508482111561370d5761370c613538565b5b50613772565b5060208310610133831016604e8410600b84101617156137485782820a90508381111561374357613742613538565b5b613772565b6137558484846001613653565b9250905081840481111561376c5761376b613538565b5b81810290505b9392505050565b600061378482612ee9565b915061378f836131fc565b92506137bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846136a6565b905092915050565b60006137cf82612ee9565b91506137da83612ee9565b92508282026137e881612ee9565b915082820484148315176137ff576137fe613538565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b600061383c601a83612dd0565b915061384782613806565b602082019050919050565b6000602082019050818103600083015261386b8161382f565b9050919050565b600060408201905061388760008301856132b6565b6138946020830184612fee565b9392505050565b6000815190506138aa81612f95565b92915050565b6000602082840312156138c6576138c5612e81565b5b60006138d48482850161389b565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613939602583612dd0565b9150613944826138dd565b604082019050919050565b600060208201905081810360008301526139688161392c565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b60006139cb602583612dd0565b91506139d68261396f565b604082019050919050565b600060208201905081810360008301526139fa816139be565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a5d602683612dd0565b9150613a6882613a01565b604082019050919050565b60006020820190508181036000830152613a8c81613a50565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613aef602483612dd0565b9150613afa82613a93565b604082019050919050565b60006020820190508181036000830152613b1e81613ae2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b81602283612dd0565b9150613b8c82613b25565b604082019050919050565b60006020820190508181036000830152613bb081613b74565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c13602983612dd0565b9150613c1e82613bb7565b604082019050919050565b60006020820190508181036000830152613c4281613c06565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613c7f601383612dd0565b9150613c8a82613c49565b602082019050919050565b60006020820190508181036000830152613cae81613c72565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000613ceb602083612dd0565b9150613cf682613cb5565b602082019050919050565b60006020820190508181036000830152613d1a81613cde565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d5b82612ee9565b9150613d6683612ee9565b925082613d7657613d75613d21565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ddd602583612dd0565b9150613de882613d81565b604082019050919050565b60006020820190508181036000830152613e0c81613dd0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e6f602383612dd0565b9150613e7a82613e13565b604082019050919050565b60006020820190508181036000830152613e9e81613e62565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613f01602683612dd0565b9150613f0c82613ea5565b604082019050919050565b60006020820190508181036000830152613f3081613ef4565b9050919050565b600081519050613f4681612ebd565b92915050565b600060208284031215613f6257613f61612e81565b5b6000613f7084828501613f37565b91505092915050565b6000819050919050565b6000613f9e613f99613f9484613f79565b613360565b612ee9565b9050919050565b613fae81613f83565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fe981612eab565b82525050565b6000613ffb8383613fe0565b60208301905092915050565b6000602082019050919050565b600061401f82613fb4565b6140298185613fbf565b935061403483613fd0565b8060005b8381101561406557815161404c8882613fef565b975061405783614007565b925050600181019050614038565b5085935050505092915050565b600060a0820190506140876000830188612fee565b6140946020830187613fa5565b81810360408301526140a68186614014565b90506140b560608301856132b6565b6140c26080830184612fee565b9695505050505050565b600060c0820190506140e160008301896132b6565b6140ee6020830188612fee565b6140fb6040830187613fa5565b6141086060830186613fa5565b61411560808301856132b6565b61412260a0830184612fee565b979650505050505050565b60008151905061413c81612ef3565b92915050565b60008060006060848603121561415b5761415a612e81565b5b60006141698682870161412d565b935050602061417a8682870161412d565b925050604061418b8682870161412d565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006141cb601d83612dd0565b91506141d682614195565b602082019050919050565b600060208201905081810360008301526141fa816141be565b9050919050565b600081905092915050565b50565b600061421c600083614201565b91506142278261420c565b600082019050919050565b600061423d8261420f565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006142a3603a83612dd0565b91506142ae82614247565b604082019050919050565b600060208201905081810360008301526142d281614296565b905091905056fea26469706673582212207e1fb4bfb52692cd4bdadd55cb75c9a373979c46c6a5b48159fef50b65f5b94764736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102135760003560e01c80638a8c523c11610118578063c5d32bb2116100a0578063f2fde38b1161006f578063f2fde38b146107a7578063f52be97c146107d0578063f570d4de146107f9578063f66895a314610822578063f887ea401461084e5761021a565b8063c5d32bb2146106db578063d695609b14610718578063dd62ed3e14610741578063edaa11681461077e5761021a565b80639e252f00116100e75780639e252f00146105e4578063a457c2d71461060d578063a8aa1b311461064a578063a9059cbb14610675578063aacebbe3146106b25761021a565b80638a8c523c1461054e5780638cd4426d146105655780638da5cb5b1461058e57806395d89b41146105b95761021a565b80634324deae1161019b57806370a082311161016a57806370a082311461047a578063715018a6146104b7578063728f8eea146104ce578063832c2bd2146104fa57806385141a77146105235761021a565b80634324deae146103d25780634ada218b146103fb5780635dbdb7e31461042657806366a88d961461044f5761021a565b806323b872dd116101e257806323b872dd146102db578063251ef09514610318578063313ce56714610341578063395093511461036c57806342b6fa11146103a95761021a565b806306fdde031461021f578063095ea7b31461024a5780631340538f1461028757806318160ddd146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610879565b6040516102419190612e55565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190612f1f565b61090b565b60405161027e9190612f7a565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190612fc1565b610929565b005b3480156102bc57600080fd5b506102c56109c2565b6040516102d29190612ffd565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190613018565b6109cc565b60405161030f9190612f7a565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a91906131b3565b610acd565b005b34801561034d57600080fd5b50610356610bde565b6040516103639190613218565b60405180910390f35b34801561037857600080fd5b50610393600480360381019061038e9190612f1f565b610be7565b6040516103a09190612f7a565b60405180910390f35b3480156103b557600080fd5b506103d060048036038101906103cb9190613233565b610c93565b005b3480156103de57600080fd5b506103f960048036038101906103f49190613233565b610d37565b005b34801561040757600080fd5b50610410610ddb565b60405161041d9190612f7a565b60405180910390f35b34801561043257600080fd5b5061044d60048036038101906104489190613260565b610dee565b005b34801561045b57600080fd5b50610464610ec5565b6040516104719190612ffd565b60405180910390f35b34801561048657600080fd5b506104a1600480360381019061049c9190613260565b610ecb565b6040516104ae9190612ffd565b60405180910390f35b3480156104c357600080fd5b506104cc610f13565b005b3480156104da57600080fd5b506104e3610f9b565b6040516104f192919061328d565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190613260565b610fad565b005b34801561052f57600080fd5b50610538611084565b60405161054591906132c5565b60405180910390f35b34801561055a57600080fd5b5061056361108a565b005b34801561057157600080fd5b5061058c60048036038101906105879190612f1f565b611195565b005b34801561059a57600080fd5b506105a361129b565b6040516105b091906132c5565b60405180910390f35b3480156105c557600080fd5b506105ce6112c5565b6040516105db9190612e55565b60405180910390f35b3480156105f057600080fd5b5061060b60048036038101906106069190613233565b611357565b005b34801561061957600080fd5b50610634600480360381019061062f9190612f1f565b611424565b6040516106419190612f7a565b60405180910390f35b34801561065657600080fd5b5061065f611518565b60405161066c91906132c5565b60405180910390f35b34801561068157600080fd5b5061069c60048036038101906106979190612f1f565b61153e565b6040516106a99190612f7a565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d49190613260565b611555565b005b3480156106e757600080fd5b5061070260048036038101906106fd9190613260565b611615565b60405161070f9190612f7a565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a91906132e0565b611635565b005b34801561074d57600080fd5b5061076860048036038101906107639190613320565b6116e3565b6040516107759190612ffd565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613233565b61176a565b005b3480156107b357600080fd5b506107ce60048036038101906107c99190613260565b611840565b005b3480156107dc57600080fd5b506107f760048036038101906107f291906132e0565b611937565b005b34801561080557600080fd5b50610820600480360381019061081b91906131b3565b6119e5565b005b34801561082e57600080fd5b50610837611af6565b60405161084592919061328d565b60405180910390f35b34801561085a57600080fd5b50610863611b08565b60405161087091906133bf565b60405180910390f35b60606003805461088890613409565b80601f01602080910402602001604051908101604052809291908181526020018280546108b490613409565b80156109015780601f106108d657610100808354040283529160200191610901565b820191906000526020600020905b8154815290600101906020018083116108e457829003601f168201915b5050505050905090565b600061091f610918611b2e565b8484611b36565b6001905092915050565b610931611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661094f61129b565b73ffffffffffffffffffffffffffffffffffffffff16146109a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099c90613486565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b60006109d9848484611cff565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a24611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b90613518565b60405180910390fd5b610ac185610ab0611b2e565b8584610abc9190613567565b611b36565b60019150509392505050565b610ad5611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610af361129b565b73ffffffffffffffffffffffffffffffffffffffff1614610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090613486565b60405180910390fd5b60005b8151811015610bda57600060126000848481518110610b6e57610b6d61359b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bd2906135ca565b915050610b4c565b5050565b60006012905090565b6000610c89610bf4611b2e565b848460016000610c02611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c849190613612565b611b36565b6001905092915050565b610c9b611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610cb961129b565b73ffffffffffffffffffffffffffffffffffffffff1614610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690613486565b60405180910390fd5b610d17610bde565b600a610d239190613779565b81610d2e91906137c4565b60088190555050565b610d3f611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610d5d61129b565b73ffffffffffffffffffffffffffffffffffffffff1614610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90613486565b60405180910390fd5b610dbb610bde565b600a610dc79190613779565b81610dd291906137c4565b60098190555050565b600760169054906101000a900460ff1681565b610df6611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610e1461129b565b73ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6190613486565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f1b611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610f3961129b565b73ffffffffffffffffffffffffffffffffffffffff1614610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8690613486565b60405180910390fd5b610f9960006124a8565b565b600e8060000154908060010154905082565b610fb5611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610fd361129b565b73ffffffffffffffffffffffffffffffffffffffff1614611029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102090613486565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61dead81565b611092611b2e565b73ffffffffffffffffffffffffffffffffffffffff166110b061129b565b73ffffffffffffffffffffffffffffffffffffffff1614611106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fd90613486565b60405180910390fd5b600760169054906101000a900460ff1615611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90613852565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600a81905550565b61119d611b2e565b73ffffffffffffffffffffffffffffffffffffffff166111bb61129b565b73ffffffffffffffffffffffffffffffffffffffff1614611211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120890613486565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61123561129b565b836040518363ffffffff1660e01b8152600401611253929190613872565b6020604051808303816000875af1158015611272573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129691906138b0565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112d490613409565b80601f016020809104026020016040519081016040528092919081815260200182805461130090613409565b801561134d5780601f106113225761010080835404028352916020019161134d565b820191906000526020600020905b81548152906001019060200180831161133057829003601f168201915b5050505050905090565b61135f611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661137d61129b565b73ffffffffffffffffffffffffffffffffffffffff16146113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca90613486565b60405180910390fd5b6113db61129b565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611420573d6000803e3d6000fd5b5050565b60008060016000611433611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e79061394f565b60405180910390fd5b61150d6114fb611b2e565b8585846115089190613567565b611b36565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061154b338484611cff565b6001905092915050565b61155d611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661157b61129b565b73ffffffffffffffffffffffffffffffffffffffff16146115d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c890613486565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b61163d611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661165b61129b565b73ffffffffffffffffffffffffffffffffffffffff16146116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a890613486565b60405180910390fd5b604051806040016040528083815260200182815250600e60008201518160000155602082015181600101559050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611772611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661179061129b565b73ffffffffffffffffffffffffffffffffffffffff16146117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dd90613486565b60405180910390fd5b600760169054906101000a900460ff1615611836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182d906139e1565b60405180910390fd5b80600b8190555050565b611848611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661186661129b565b73ffffffffffffffffffffffffffffffffffffffff16146118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390613486565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361192b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192290613a73565b60405180910390fd5b611934816124a8565b50565b61193f611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661195d61129b565b73ffffffffffffffffffffffffffffffffffffffff16146119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa90613486565b60405180910390fd5b604051806040016040528083815260200182815250601060008201518160000155602082015181600101559050505050565b6119ed611b2e565b73ffffffffffffffffffffffffffffffffffffffff16611a0b61129b565b73ffffffffffffffffffffffffffffffffffffffff1614611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5890613486565b60405180910390fd5b60005b8151811015611af257600160126000848481518110611a8657611a8561359b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611aea906135ca565b915050611a64565b5050565b60108060000154908060010154905082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613b05565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0b90613b97565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cf29190612ffd565b60405180910390a3505050565b60008111611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990613c29565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611de65750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e3b57600760169054906101000a900460ff16611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190613c95565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ee25750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611efb5750600760149054906101000a900460ff16155b15611f595760095481611f0d84610ecb565b611f179190613612565b1115611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90613d01565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120015750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120575750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120705750600760149054906101000a900460ff16155b1561212457600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461212357600954816120d784610ecb565b6120e19190613612565b1115612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211990613d01565b60405180910390fd5b5b5b6000806000612131612dab565b6000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121d75750601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121f15750600b54600a546121ee9190613612565b43105b9050600760149054906101000a900460ff16806122575750601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806122ab5750601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122b957600092506123b8565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015612314575080155b1561235c5760106000015460106001015461232f9190613612565b945084935060106040518060400160405290816000820154815260200160018201548152505091506123b7565b806123a457600e60000154600e600101546123779190613612565b9450849350600e6040518060400160405290816000820154815260200160018201548152505091506123b6565b80156123b557600c549450600c5493505b5b5b5b606484876123c691906137c4565b6123d09190613d50565b9250600760159054906101000a900460ff16801561243c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b1561244c5761244b858361256e565b5b6124628888858961245d9190613567565b612712565b600083111561249e57600085111561249d5760006064868861248491906137c4565b61248e9190613d50565b905061249b893083612712565b505b5b5050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff1661270e576001600760146101000a81548160ff02191690831515021790555060008203156126f25760006125b130610ecb565b905060085481106126f057600160085411156125cd5760085490505b60006002846125dc91906137c4565b90506000818460200151846125f191906137c4565b6125fb9190613d50565b90506000818461260b9190613567565b9050600047905061261b8261298f565b600081476126299190613567565b9050600087602001518661263d9190613567565b826126489190613d50565b9050600088602001518261265c91906137c4565b90506000811115612672576126718682612bd2565b5b6000896000015160028461268691906137c4565b61269091906137c4565b905060008111156126e7576126e681600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612cb290919063ffffffff16565b5b50505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277890613df3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e790613e85565b60405180910390fd5b6127fb838383612da6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287890613f17565b60405180910390fd5b818161288d9190613567565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461291d9190613612565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129819190612ffd565b60405180910390a350505050565b6000600267ffffffffffffffff8111156129ac576129ab613070565b5b6040519080825280602002602001820160405280156129da5781602001602082028036833780820191505090505b50905030816000815181106129f2576129f161359b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abd9190613f4c565b81600181518110612ad157612ad061359b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b3830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b36565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b9c959493929190614072565b600060405180830381600087803b158015612bb657600080fd5b505af1158015612bca573d6000803e3d6000fd5b505050505050565b612bff30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b36565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612c68969594939291906140cc565b60606040518083038185885af1158015612c86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612cab9190614142565b5050505050565b80471015612cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cec906141e1565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612d1b90614232565b60006040518083038185875af1925050503d8060008114612d58576040519150601f19603f3d011682016040523d82523d6000602084013e612d5d565b606091505b5050905080612da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d98906142b9565b60405180910390fd5b505050565b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dff578082015181840152602081019050612de4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e2782612dc5565b612e318185612dd0565b9350612e41818560208601612de1565b612e4a81612e0b565b840191505092915050565b60006020820190508181036000830152612e6f8184612e1c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612eb682612e8b565b9050919050565b612ec681612eab565b8114612ed157600080fd5b50565b600081359050612ee381612ebd565b92915050565b6000819050919050565b612efc81612ee9565b8114612f0757600080fd5b50565b600081359050612f1981612ef3565b92915050565b60008060408385031215612f3657612f35612e81565b5b6000612f4485828601612ed4565b9250506020612f5585828601612f0a565b9150509250929050565b60008115159050919050565b612f7481612f5f565b82525050565b6000602082019050612f8f6000830184612f6b565b92915050565b612f9e81612f5f565b8114612fa957600080fd5b50565b600081359050612fbb81612f95565b92915050565b600060208284031215612fd757612fd6612e81565b5b6000612fe584828501612fac565b91505092915050565b612ff781612ee9565b82525050565b60006020820190506130126000830184612fee565b92915050565b60008060006060848603121561303157613030612e81565b5b600061303f86828701612ed4565b935050602061305086828701612ed4565b925050604061306186828701612f0a565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130a882612e0b565b810181811067ffffffffffffffff821117156130c7576130c6613070565b5b80604052505050565b60006130da612e77565b90506130e6828261309f565b919050565b600067ffffffffffffffff82111561310657613105613070565b5b602082029050602081019050919050565b600080fd5b600061312f61312a846130eb565b6130d0565b9050808382526020820190506020840283018581111561315257613151613117565b5b835b8181101561317b57806131678882612ed4565b845260208401935050602081019050613154565b5050509392505050565b600082601f83011261319a5761319961306b565b5b81356131aa84826020860161311c565b91505092915050565b6000602082840312156131c9576131c8612e81565b5b600082013567ffffffffffffffff8111156131e7576131e6612e86565b5b6131f384828501613185565b91505092915050565b600060ff82169050919050565b613212816131fc565b82525050565b600060208201905061322d6000830184613209565b92915050565b60006020828403121561324957613248612e81565b5b600061325784828501612f0a565b91505092915050565b60006020828403121561327657613275612e81565b5b600061328484828501612ed4565b91505092915050565b60006040820190506132a26000830185612fee565b6132af6020830184612fee565b9392505050565b6132bf81612eab565b82525050565b60006020820190506132da60008301846132b6565b92915050565b600080604083850312156132f7576132f6612e81565b5b600061330585828601612f0a565b925050602061331685828601612f0a565b9150509250929050565b6000806040838503121561333757613336612e81565b5b600061334585828601612ed4565b925050602061335685828601612ed4565b9150509250929050565b6000819050919050565b600061338561338061337b84612e8b565b613360565b612e8b565b9050919050565b60006133978261336a565b9050919050565b60006133a98261338c565b9050919050565b6133b98161339e565b82525050565b60006020820190506133d460008301846133b0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061342157607f821691505b602082108103613434576134336133da565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613470602083612dd0565b915061347b8261343a565b602082019050919050565b6000602082019050818103600083015261349f81613463565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613502602883612dd0565b915061350d826134a6565b604082019050919050565b60006020820190508181036000830152613531816134f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061357282612ee9565b915061357d83612ee9565b925082820390508181111561359557613594613538565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006135d582612ee9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361360757613606613538565b5b600182019050919050565b600061361d82612ee9565b915061362883612ee9565b92508282019050808211156136405761363f613538565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561369d5780860481111561367957613678613538565b5b60018516156136885780820291505b808102905061369685613646565b945061365d565b94509492505050565b6000826136b65760019050613772565b816136c45760009050613772565b81600181146136da57600281146136e457613713565b6001915050613772565b60ff8411156136f6576136f5613538565b5b8360020a91508482111561370d5761370c613538565b5b50613772565b5060208310610133831016604e8410600b84101617156137485782820a90508381111561374357613742613538565b5b613772565b6137558484846001613653565b9250905081840481111561376c5761376b613538565b5b81810290505b9392505050565b600061378482612ee9565b915061378f836131fc565b92506137bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846136a6565b905092915050565b60006137cf82612ee9565b91506137da83612ee9565b92508282026137e881612ee9565b915082820484148315176137ff576137fe613538565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b600061383c601a83612dd0565b915061384782613806565b602082019050919050565b6000602082019050818103600083015261386b8161382f565b9050919050565b600060408201905061388760008301856132b6565b6138946020830184612fee565b9392505050565b6000815190506138aa81612f95565b92915050565b6000602082840312156138c6576138c5612e81565b5b60006138d48482850161389b565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613939602583612dd0565b9150613944826138dd565b604082019050919050565b600060208201905081810360008301526139688161392c565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b60006139cb602583612dd0565b91506139d68261396f565b604082019050919050565b600060208201905081810360008301526139fa816139be565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a5d602683612dd0565b9150613a6882613a01565b604082019050919050565b60006020820190508181036000830152613a8c81613a50565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613aef602483612dd0565b9150613afa82613a93565b604082019050919050565b60006020820190508181036000830152613b1e81613ae2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b81602283612dd0565b9150613b8c82613b25565b604082019050919050565b60006020820190508181036000830152613bb081613b74565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c13602983612dd0565b9150613c1e82613bb7565b604082019050919050565b60006020820190508181036000830152613c4281613c06565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613c7f601383612dd0565b9150613c8a82613c49565b602082019050919050565b60006020820190508181036000830152613cae81613c72565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000613ceb602083612dd0565b9150613cf682613cb5565b602082019050919050565b60006020820190508181036000830152613d1a81613cde565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d5b82612ee9565b9150613d6683612ee9565b925082613d7657613d75613d21565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ddd602583612dd0565b9150613de882613d81565b604082019050919050565b60006020820190508181036000830152613e0c81613dd0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e6f602383612dd0565b9150613e7a82613e13565b604082019050919050565b60006020820190508181036000830152613e9e81613e62565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613f01602683612dd0565b9150613f0c82613ea5565b604082019050919050565b60006020820190508181036000830152613f3081613ef4565b9050919050565b600081519050613f4681612ebd565b92915050565b600060208284031215613f6257613f61612e81565b5b6000613f7084828501613f37565b91505092915050565b6000819050919050565b6000613f9e613f99613f9484613f79565b613360565b612ee9565b9050919050565b613fae81613f83565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fe981612eab565b82525050565b6000613ffb8383613fe0565b60208301905092915050565b6000602082019050919050565b600061401f82613fb4565b6140298185613fbf565b935061403483613fd0565b8060005b8381101561406557815161404c8882613fef565b975061405783614007565b925050600181019050614038565b5085935050505092915050565b600060a0820190506140876000830188612fee565b6140946020830187613fa5565b81810360408301526140a68186614014565b90506140b560608301856132b6565b6140c26080830184612fee565b9695505050505050565b600060c0820190506140e160008301896132b6565b6140ee6020830188612fee565b6140fb6040830187613fa5565b6141086060830186613fa5565b61411560808301856132b6565b61412260a0830184612fee565b979650505050505050565b60008151905061413c81612ef3565b92915050565b60008060006060848603121561415b5761415a612e81565b5b60006141698682870161412d565b935050602061417a8682870161412d565b925050604061418b8682870161412d565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006141cb601d83612dd0565b91506141d682614195565b602082019050919050565b600060208201905081810360008301526141fa816141be565b9050919050565b600081905092915050565b50565b600061421c600083614201565b91506142278261420c565b600082019050919050565b600061423d8261420f565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006142a3603a83612dd0565b91506142ae82614247565b604082019050919050565b600060208201905081810360008301526142d281614296565b905091905056fea26469706673582212207e1fb4bfb52692cd4bdadd55cb75c9a373979c46c6a5b48159fef50b65f5b94764736f6c63430008130033

Deployed Bytecode Sourcemap

8218:10543:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2149:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10021:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16447:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2488:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10190:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18105:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2381:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10646:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16607:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18309:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8449:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17677:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8563:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2610:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6881:94;;;;;;;;;;;;;:::i;:::-;;8991:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;17789:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8818:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17137:224;;;;;;;;;;;;;:::i;:::-;;18568:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6658:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2263:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18448:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10902:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8331:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11320:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17554:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9077:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16792:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2981:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17369:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6983:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16964:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17905:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9031:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8303:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2149:100;2203:13;2236:5;2229:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2149:100;:::o;10021:161::-;10096:4;10113:39;10122:12;:10;:12::i;:::-;10136:7;10145:6;10113:8;:39::i;:::-;10170:4;10163:11;;10021:161;;;;:::o;16447:152::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16586:5:::1;16565:18;;:26;;;;;;;;;;;;;;;;;;16447:152:::0;:::o;2488:108::-;2549:7;2576:12;;2569:19;;2488:108;:::o;10190:448::-;10322:4;10339:36;10349:6;10357:9;10368:6;10339:9;:36::i;:::-;10388:24;10415:11;:19;10427:6;10415:19;;;;;;;;;;;;;;;:33;10435:12;:10;:12::i;:::-;10415:33;;;;;;;;;;;;;;;;10388:60;;10487:6;10467:16;:26;;10459:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10549:57;10558:6;10566:12;:10;:12::i;:::-;10599:6;10580:16;:25;;;;:::i;:::-;10549:8;:57::i;:::-;10626:4;10619:11;;;10190:448;;;;;:::o;18105:196::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18196:9:::1;18191:103;18215:8;:15;18211:1;:19;18191:103;;;18277:5;18252:9;:22;18262:8;18271:1;18262:11;;;;;;;;:::i;:::-;;;;;;;;18252:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;18232:3;;;;;:::i;:::-;;;;18191:103;;;;18105:196:::0;:::o;2381:93::-;2439:5;2464:2;2457:9;;2381:93;:::o;10646:248::-;10762:4;10784:80;10793:12;:10;:12::i;:::-;10807:7;10853:10;10816:11;:25;10828:12;:10;:12::i;:::-;10816:25;;;;;;;;;;;;;;;:34;10842:7;10816:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10784:8;:80::i;:::-;10882:4;10875:11;;10646:248;;;;:::o;16607:177::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16766:10:::1;:8;:10::i;:::-;16762:2;:14;;;;:::i;:::-;16749:10;:27;;;;:::i;:::-;16723:23;:53;;;;16607:177:::0;:::o;18309:131::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18421:10:::1;:8;:10::i;:::-;18417:2;:14;;;;:::i;:::-;18405:9;:26;;;;:::i;:::-;18388:14;:43;;;;18309:131:::0;:::o;8449:34::-;;;;;;;;;;;;;:::o;17677:104::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17769:4:::1;17747:9;:19;17757:8;17747:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;17677:104:::0;:::o;8563:54::-;;;;:::o;2610:127::-;2684:7;2711:9;:18;2721:7;2711:18;;;;;;;;;;;;;;;;2704:25;;2610:127;;;:::o;6881:94::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6946:21:::1;6964:1;6946:9;:21::i;:::-;6881:94::o:0;8991:33::-;;;;;;;;;;;;;;:::o;17789:108::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17884:5:::1;17862:9;:19;17872:8;17862:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;17789:108:::0;:::o;8818:79::-;8855:42;8818:79;:::o;17137:224::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17201:14:::1;;;;;;;;;;;17200:15;17192:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;17274:4;17257:14;;:21;;;;;;;;;;;;;;;;;;17310:4;17289:18;;:25;;;;;;;;;;;;;;;;;;17341:12;17325:13;:28;;;;17137:224::o:0;18568:135::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18660:8:::1;18653:25;;;18679:7;:5;:7::i;:::-;18688:6;18653:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18568:135:::0;;:::o;6658:87::-;6704:7;6731:6;;;;;;;;;;;6724:13;;6658:87;:::o;2263:104::-;2319:13;2352:7;2345:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2263:104;:::o;18448:112::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18524:7:::1;:5;:7::i;:::-;18516:25;;:36;18542:9;18516:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18448:112:::0;:::o;10902:410::-;11023:4;11045:24;11072:11;:25;11084:12;:10;:12::i;:::-;11072:25;;;;;;;;;;;;;;;:34;11098:7;11072:34;;;;;;;;;;;;;;;;11045:61;;11145:15;11125:16;:35;;11117:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11213:67;11222:12;:10;:12::i;:::-;11236:7;11264:15;11245:16;:34;;;;:::i;:::-;11213:8;:67::i;:::-;11300:4;11293:11;;;10902:410;;;;:::o;8331:19::-;;;;;;;;;;;;;:::o;11320:165::-;11398:4;11415:40;11425:10;11437:9;11448:6;11415:9;:40::i;:::-;11473:4;11466:11;;11320:165;;;;:::o;17554:115::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17652:9:::1;17634:15;;:27;;;;;;;;;;;;;;;;;;17554:115:::0;:::o;9077:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;16792:164::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16919:29:::1;;;;;;;;16925:10;16919:29;;;;16937:10;16919:29;;::::0;16911:5:::1;:37;;;;;;;;;;;;;;;;;;;16792:164:::0;;:::o;2981:201::-;3115:7;3147:11;:18;3159:5;3147:18;;;;;;;;;;;;;;;:27;3166:7;3147:27;;;;;;;;;;;;;;;;3140:34;;2981:201;;;;:::o;17369:177::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17451:14:::1;;;;;;;;;;;17450:15;17442:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17529:9;17518:8;:20;;;;17369:177:::0;:::o;6983:192::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7092:1:::1;7072:22;;:8;:22;;::::0;7064:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7148:19;7158:8;7148:9;:19::i;:::-;6983:192:::0;:::o;16964:166::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17093:29:::1;;;;;;;;17099:10;17093:29;;;;17111:10;17093:29;;::::0;17081:9:::1;:41;;;;;;;;;;;;;;;;;;;16964:166:::0;;:::o;17905:192::-;6804:12;:10;:12::i;:::-;6793:23;;:7;:5;:7::i;:::-;:23;;;6785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17993:9:::1;17988:102;18012:8;:15;18008:1;:19;17988:102;;;18074:4;18049:9;:22;18059:8;18068:1;18059:11;;;;;;;;:::i;:::-;;;;;;;;18049:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18029:3;;;;;:::i;:::-;;;;17988:102;;;;17905:192:::0;:::o;9031:37::-;;;;;;;;;;;;;;:::o;8303:21::-;;;;;;;;;;;;;:::o;232:98::-;285:7;312:10;305:17;;232:98;:::o;5552:380::-;5705:1;5688:19;;:5;:19;;;5680:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5786:1;5767:21;;:7;:21;;;5759:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5870:6;5840:11;:18;5852:5;5840:18;;;;;;;;;;;;;;;:27;5859:7;5840:27;;;;;;;;;;;;;;;:36;;;;5908:7;5892:32;;5901:5;5892:32;;;5917:6;5892:32;;;;;;:::i;:::-;;;;;;;;5552:380;;;:::o;11493:2474::-;11643:1;11634:6;:10;11626:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11718:9;:17;11728:6;11718:17;;;;;;;;;;;;;;;;;;;;;;;;;11717:18;:43;;;;;11740:9;:20;11750:9;11740:20;;;;;;;;;;;;;;;;;;;;;;;;;11739:21;11717:43;11713:122;;;11785:14;;;;;;;;;;;11777:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11713:122;11861:4;;;;;;;;;;;11851:14;;:6;:14;;;:39;;;;;11870:9;:20;11880:9;11870:20;;;;;;;;;;;;;;;;;;;;;;;;;11869:21;11851:39;:59;;;;;11895:15;;;;;;;;;;;11894:16;11851:59;11847:215;;;11968:14;;11958:6;11935:20;11945:9;11935;:20::i;:::-;:29;;;;:::i;:::-;:47;;11927:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;11847:215;12088:4;;;;;;;;;;;12078:14;;:6;:14;;;;:39;;;;;12097:9;:20;12107:9;12097:20;;;;;;;;;;;;;;;;;;;;;;;;;12096:21;12078:39;:61;;;;;12122:9;:17;12132:6;12122:17;;;;;;;;;;;;;;;;;;;;;;;;;12121:18;12078:61;:81;;;;;12144:15;;;;;;;;;;;12143:16;12078:81;12074:315;;;12206:4;;;;;;;;;;;12193:17;;:9;:17;;;12189:189;;12272:14;;12262:6;12239:20;12249:9;12239;:20::i;:::-;:29;;;;:::i;:::-;:47;;12231:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;12189:189;12074:315;12401:15;12427:14;12452:11;12474:25;;:::i;:::-;12512:17;12533:9;:17;12543:6;12533:17;;;;;;;;;;;;;;;;;;;;;;;;;12532:18;:56;;;;;12568:9;:20;12578:9;12568:20;;;;;;;;;;;;;;;;;;;;;;;;;12567:21;12532:56;:112;;;;;12636:8;;12620:13;;:24;;;;:::i;:::-;12605:12;:39;12532:112;12512:132;;12732:15;;;;;;;;;;;:36;;;;12751:9;:17;12761:6;12751:17;;;;;;;;;;;;;;;;;;;;;;;;;12732:36;:60;;;;12772:9;:20;12782:9;12772:20;;;;;;;;;;;;;;;;;;;;;;;;;12732:60;12728:655;;;12813:1;12807:7;;12728:655;;;12878:4;;;;;;;;;;;12865:17;;:9;:17;;;:34;;;;;12887:12;12886:13;12865:34;12861:522;;;12982:9;:19;;;12943:9;:19;;;:58;;;;:::i;:::-;12916:85;;13026:7;13017:16;;13063:9;13048:24;;;;;;;;;;;;;;;;;;;;;;;;;;;12861:522;;;13095:12;13090:293;;13186:5;:15;;;13151:5;:15;;;:50;;;;:::i;:::-;13124:77;;13226:7;13217:16;;13263:5;13248:20;;;;;;;;;;;;;;;;;;;;;;;;;;;13090:293;;;13290:12;13286:97;;;13329:9;;13319:19;;13362:9;;13353:18;;13286:97;13090:293;12861:522;12728:655;13421:3;13411:6;13402;:15;;;;:::i;:::-;13401:23;;;;:::i;:::-;13395:29;;13538:18;;;;;;;;;;;:36;;;;;13570:4;;;;;;;;;;;13560:14;;:6;:14;;;;13538:36;13534:76;;;13576:34;13588:7;13597:12;13576:11;:34::i;:::-;13534:76;13652:48;13668:6;13676:9;13696:3;13687:6;:12;;;;:::i;:::-;13652:15;:48::i;:::-;13721:1;13715:3;:7;13711:249;;;13797:1;13787:7;:11;13783:164;;;13819:17;13860:3;13849:7;13840:6;:16;;;;:::i;:::-;13839:24;;;;:::i;:::-;13819:44;;13882:49;13898:6;13914:4;13921:9;13882:15;:49::i;:::-;13800:147;13783:164;13711:249;11615:2352;;;;;11493:2474;;;:::o;7183:173::-;7239:16;7258:6;;;;;;;;;;;7239:25;;7284:8;7275:6;;:17;;;;;;;;;;;;;;;;;;7339:8;7308:40;;7329:8;7308:40;;;;;;;;;;;;7228:128;7183:173;:::o;13975:1422::-;9172:15;;;;;;;;;;;9167:125;;9222:4;9204:15;;:22;;;;;;;;;;;;;;;;;;14075:1:::1;14064:7;:12:::0;14061:49;14092:7:::1;14061:49;14123:23;14149:24;14167:4;14149:9;:24::i;:::-;14123:50;;14207:23;;14188:15;:42;14184:1206;;14277:1;14251:23;;:27;14247:109;;;14317:23;;14299:41;;14247:109;14427:19;14459:1;14449:7;:11;;;;:::i;:::-;14427:33;;14475:32;14569:11;14529:9;:19;;;14511:15;:37;;;;:::i;:::-;14510:70;;;;:::i;:::-;14475:105;;14595:14;14630:24;14612:15;:42;;;;:::i;:::-;14595:59;;14671:22;14696:21;14671:46;;14734:24;14751:6;14734:16;:24::i;:::-;14775:20;14822:14;14798:21;:38;;;;:::i;:::-;14775:61;;14851:19;14903:9;:19;;;14889:11;:33;;;;:::i;:::-;14873:12;:50;;;;:::i;:::-;14851:72;;14938:29;14984:9;:19;;;14970:11;:33;;;;:::i;:::-;14938:65;;15048:1;15024:21;:25;15020:161;;;15104:61;15117:24;15143:21;15104:12;:61::i;:::-;15020:161;15197:20;15238:9;:19;;;15234:1;15220:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;15197:60;;15291:1;15276:12;:16;15272:105;;;15313:48;15348:12;15321:15;;;;;;;;;;;15313:34;;;;:48;;;;:::i;:::-;15272:105;14232:1158;;;;;;;;14184:1206;14055:1342;9241:1;9275:5:::0;9257:15;;:23;;;;;;;;;;;;;;;;;;9167:125;13975:1422;;:::o;4533:638::-;4691:1;4673:20;;:6;:20;;;4665:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4775:1;4754:23;;:9;:23;;;4746:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4830:47;4851:6;4859:9;4870:6;4830:20;:47::i;:::-;4890:21;4914:9;:17;4924:6;4914:17;;;;;;;;;;;;;;;;4890:41;;4967:6;4950:13;:23;;4942:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5063:6;5047:13;:22;;;;:::i;:::-;5027:9;:17;5037:6;5027:17;;;;;;;;;;;;;;;:42;;;;5104:6;5080:9;:20;5090:9;5080:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5145:9;5128:35;;5137:6;5128:35;;;5156:6;5128:35;;;;;;:::i;:::-;;;;;;;;4654:517;4533:638;;;:::o;15405:526::-;15523:21;15561:1;15547:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15523:40;;15592:4;15574;15579:1;15574:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15618:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15608:4;15613:1;15608:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15644:53;15661:4;15676:6;;;;;;;;;;;15685:11;15644:8;:53::i;:::-;15736:6;;;;;;;;;;;:57;;;15808:11;15834:1;15850:4;15877;15897:15;15736:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15460:471;15405:526;:::o;15939:500::-;16087:53;16104:4;16119:6;;;;;;;;;;;16128:11;16087:8;:53::i;:::-;16183:6;;;;;;;;;;;:22;;;16214:9;16248:4;16268:11;16294:1;16337;8855:42;16405:15;16183:248;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15939:500;;:::o;6101:319::-;6216:6;6191:21;:31;;6183:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6270:12;6288:9;:14;;6311:6;6288:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6269:54;;;6342:7;6334:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6172:248;6101:319;;:::o;5946:125::-;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:619::-;4465:6;4473;4481;4530:2;4518:9;4509:7;4505:23;4501:32;4498:119;;;4536:79;;:::i;:::-;4498:119;4656:1;4681:53;4726:7;4717:6;4706:9;4702:22;4681:53;:::i;:::-;4671:63;;4627:117;4783:2;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4754:118;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;4388:619;;;;;:::o;5013:117::-;5122:1;5119;5112:12;5136:180;5184:77;5181:1;5174:88;5281:4;5278:1;5271:15;5305:4;5302:1;5295:15;5322:281;5405:27;5427:4;5405:27;:::i;:::-;5397:6;5393:40;5535:6;5523:10;5520:22;5499:18;5487:10;5484:34;5481:62;5478:88;;;5546:18;;:::i;:::-;5478:88;5586:10;5582:2;5575:22;5365:238;5322:281;;:::o;5609:129::-;5643:6;5670:20;;:::i;:::-;5660:30;;5699:33;5727:4;5719:6;5699:33;:::i;:::-;5609:129;;;:::o;5744:311::-;5821:4;5911:18;5903:6;5900:30;5897:56;;;5933:18;;:::i;:::-;5897:56;5983:4;5975:6;5971:17;5963:25;;6043:4;6037;6033:15;6025:23;;5744:311;;;:::o;6061:117::-;6170:1;6167;6160:12;6201:710;6297:5;6322:81;6338:64;6395:6;6338:64;:::i;:::-;6322:81;:::i;:::-;6313:90;;6423:5;6452:6;6445:5;6438:21;6486:4;6479:5;6475:16;6468:23;;6539:4;6531:6;6527:17;6519:6;6515:30;6568:3;6560:6;6557:15;6554:122;;;6587:79;;:::i;:::-;6554:122;6702:6;6685:220;6719:6;6714:3;6711:15;6685:220;;;6794:3;6823:37;6856:3;6844:10;6823:37;:::i;:::-;6818:3;6811:50;6890:4;6885:3;6881:14;6874:21;;6761:144;6745:4;6740:3;6736:14;6729:21;;6685:220;;;6689:21;6303:608;;6201:710;;;;;:::o;6934:370::-;7005:5;7054:3;7047:4;7039:6;7035:17;7031:27;7021:122;;7062:79;;:::i;:::-;7021:122;7179:6;7166:20;7204:94;7294:3;7286:6;7279:4;7271:6;7267:17;7204:94;:::i;:::-;7195:103;;7011:293;6934:370;;;;:::o;7310:539::-;7394:6;7443:2;7431:9;7422:7;7418:23;7414:32;7411:119;;;7449:79;;:::i;:::-;7411:119;7597:1;7586:9;7582:17;7569:31;7627:18;7619:6;7616:30;7613:117;;;7649:79;;:::i;:::-;7613:117;7754:78;7824:7;7815:6;7804:9;7800:22;7754:78;:::i;:::-;7744:88;;7540:302;7310:539;;;;:::o;7855:86::-;7890:7;7930:4;7923:5;7919:16;7908:27;;7855:86;;;:::o;7947:112::-;8030:22;8046:5;8030:22;:::i;:::-;8025:3;8018:35;7947:112;;:::o;8065:214::-;8154:4;8192:2;8181:9;8177:18;8169:26;;8205:67;8269:1;8258:9;8254:17;8245:6;8205:67;:::i;:::-;8065:214;;;;:::o;8285:329::-;8344:6;8393:2;8381:9;8372:7;8368:23;8364:32;8361:119;;;8399:79;;:::i;:::-;8361:119;8519:1;8544:53;8589:7;8580:6;8569:9;8565:22;8544:53;:::i;:::-;8534:63;;8490:117;8285:329;;;;:::o;8620:::-;8679:6;8728:2;8716:9;8707:7;8703:23;8699:32;8696:119;;;8734:79;;:::i;:::-;8696:119;8854:1;8879:53;8924:7;8915:6;8904:9;8900:22;8879:53;:::i;:::-;8869:63;;8825:117;8620:329;;;;:::o;8955:332::-;9076:4;9114:2;9103:9;9099:18;9091:26;;9127:71;9195:1;9184:9;9180:17;9171:6;9127:71;:::i;:::-;9208:72;9276:2;9265:9;9261:18;9252:6;9208:72;:::i;:::-;8955:332;;;;;:::o;9293:118::-;9380:24;9398:5;9380:24;:::i;:::-;9375:3;9368:37;9293:118;;:::o;9417:222::-;9510:4;9548:2;9537:9;9533:18;9525:26;;9561:71;9629:1;9618:9;9614:17;9605:6;9561:71;:::i;:::-;9417:222;;;;:::o;9645:474::-;9713:6;9721;9770:2;9758:9;9749:7;9745:23;9741:32;9738:119;;;9776:79;;:::i;:::-;9738:119;9896:1;9921:53;9966:7;9957:6;9946:9;9942:22;9921:53;:::i;:::-;9911:63;;9867:117;10023:2;10049:53;10094:7;10085:6;10074:9;10070:22;10049:53;:::i;:::-;10039:63;;9994:118;9645:474;;;;;:::o;10125:::-;10193:6;10201;10250:2;10238:9;10229:7;10225:23;10221:32;10218:119;;;10256:79;;:::i;:::-;10218:119;10376:1;10401:53;10446:7;10437:6;10426:9;10422:22;10401:53;:::i;:::-;10391:63;;10347:117;10503:2;10529:53;10574:7;10565:6;10554:9;10550:22;10529:53;:::i;:::-;10519:63;;10474:118;10125:474;;;;;:::o;10605:60::-;10633:3;10654:5;10647:12;;10605:60;;;:::o;10671:142::-;10721:9;10754:53;10772:34;10781:24;10799:5;10781:24;:::i;:::-;10772:34;:::i;:::-;10754:53;:::i;:::-;10741:66;;10671:142;;;:::o;10819:126::-;10869:9;10902:37;10933:5;10902:37;:::i;:::-;10889:50;;10819:126;;;:::o;10951:141::-;11016:9;11049:37;11080:5;11049:37;:::i;:::-;11036:50;;10951:141;;;:::o;11098:161::-;11200:52;11246:5;11200:52;:::i;:::-;11195:3;11188:65;11098:161;;:::o;11265:252::-;11373:4;11411:2;11400:9;11396:18;11388:26;;11424:86;11507:1;11496:9;11492:17;11483:6;11424:86;:::i;:::-;11265:252;;;;:::o;11523:180::-;11571:77;11568:1;11561:88;11668:4;11665:1;11658:15;11692:4;11689:1;11682:15;11709:320;11753:6;11790:1;11784:4;11780:12;11770:22;;11837:1;11831:4;11827:12;11858:18;11848:81;;11914:4;11906:6;11902:17;11892:27;;11848:81;11976:2;11968:6;11965:14;11945:18;11942:38;11939:84;;11995:18;;:::i;:::-;11939:84;11760:269;11709:320;;;:::o;12035:182::-;12175:34;12171:1;12163:6;12159:14;12152:58;12035:182;:::o;12223:366::-;12365:3;12386:67;12450:2;12445:3;12386:67;:::i;:::-;12379:74;;12462:93;12551:3;12462:93;:::i;:::-;12580:2;12575:3;12571:12;12564:19;;12223:366;;;:::o;12595:419::-;12761:4;12799:2;12788:9;12784:18;12776:26;;12848:9;12842:4;12838:20;12834:1;12823:9;12819:17;12812:47;12876:131;13002:4;12876:131;:::i;:::-;12868:139;;12595:419;;;:::o;13020:227::-;13160:34;13156:1;13148:6;13144:14;13137:58;13229:10;13224:2;13216:6;13212:15;13205:35;13020:227;:::o;13253:366::-;13395:3;13416:67;13480:2;13475:3;13416:67;:::i;:::-;13409:74;;13492:93;13581:3;13492:93;:::i;:::-;13610:2;13605:3;13601:12;13594:19;;13253:366;;;:::o;13625:419::-;13791:4;13829:2;13818:9;13814:18;13806:26;;13878:9;13872:4;13868:20;13864:1;13853:9;13849:17;13842:47;13906:131;14032:4;13906:131;:::i;:::-;13898:139;;13625:419;;;:::o;14050:180::-;14098:77;14095:1;14088:88;14195:4;14192:1;14185:15;14219:4;14216:1;14209:15;14236:194;14276:4;14296:20;14314:1;14296:20;:::i;:::-;14291:25;;14330:20;14348:1;14330:20;:::i;:::-;14325:25;;14374:1;14371;14367:9;14359:17;;14398:1;14392:4;14389:11;14386:37;;;14403:18;;:::i;:::-;14386:37;14236:194;;;;:::o;14436:180::-;14484:77;14481:1;14474:88;14581:4;14578:1;14571:15;14605:4;14602:1;14595:15;14622:233;14661:3;14684:24;14702:5;14684:24;:::i;:::-;14675:33;;14730:66;14723:5;14720:77;14717:103;;14800:18;;:::i;:::-;14717:103;14847:1;14840:5;14836:13;14829:20;;14622:233;;;:::o;14861:191::-;14901:3;14920:20;14938:1;14920:20;:::i;:::-;14915:25;;14954:20;14972:1;14954:20;:::i;:::-;14949:25;;14997:1;14994;14990:9;14983:16;;15018:3;15015:1;15012:10;15009:36;;;15025:18;;:::i;:::-;15009:36;14861:191;;;;:::o;15058:102::-;15100:8;15147:5;15144:1;15140:13;15119:34;;15058:102;;;:::o;15166:848::-;15227:5;15234:4;15258:6;15249:15;;15282:5;15273:14;;15296:712;15317:1;15307:8;15304:15;15296:712;;;15412:4;15407:3;15403:14;15397:4;15394:24;15391:50;;;15421:18;;:::i;:::-;15391:50;15471:1;15461:8;15457:16;15454:451;;;15886:4;15879:5;15875:16;15866:25;;15454:451;15936:4;15930;15926:15;15918:23;;15966:32;15989:8;15966:32;:::i;:::-;15954:44;;15296:712;;;15166:848;;;;;;;:::o;16020:1073::-;16074:5;16265:8;16255:40;;16286:1;16277:10;;16288:5;;16255:40;16314:4;16304:36;;16331:1;16322:10;;16333:5;;16304:36;16400:4;16448:1;16443:27;;;;16484:1;16479:191;;;;16393:277;;16443:27;16461:1;16452:10;;16463:5;;;16479:191;16524:3;16514:8;16511:17;16508:43;;;16531:18;;:::i;:::-;16508:43;16580:8;16577:1;16573:16;16564:25;;16615:3;16608:5;16605:14;16602:40;;;16622:18;;:::i;:::-;16602:40;16655:5;;;16393:277;;16779:2;16769:8;16766:16;16760:3;16754:4;16751:13;16747:36;16729:2;16719:8;16716:16;16711:2;16705:4;16702:12;16698:35;16682:111;16679:246;;;16835:8;16829:4;16825:19;16816:28;;16870:3;16863:5;16860:14;16857:40;;;16877:18;;:::i;:::-;16857:40;16910:5;;16679:246;16950:42;16988:3;16978:8;16972:4;16969:1;16950:42;:::i;:::-;16935:57;;;;17024:4;17019:3;17015:14;17008:5;17005:25;17002:51;;;17033:18;;:::i;:::-;17002:51;17082:4;17075:5;17071:16;17062:25;;16020:1073;;;;;;:::o;17099:281::-;17157:5;17181:23;17199:4;17181:23;:::i;:::-;17173:31;;17225:25;17241:8;17225:25;:::i;:::-;17213:37;;17269:104;17306:66;17296:8;17290:4;17269:104;:::i;:::-;17260:113;;17099:281;;;;:::o;17386:410::-;17426:7;17449:20;17467:1;17449:20;:::i;:::-;17444:25;;17483:20;17501:1;17483:20;:::i;:::-;17478:25;;17538:1;17535;17531:9;17560:30;17578:11;17560:30;:::i;:::-;17549:41;;17739:1;17730:7;17726:15;17723:1;17720:22;17700:1;17693:9;17673:83;17650:139;;17769:18;;:::i;:::-;17650:139;17434:362;17386:410;;;;:::o;17802:176::-;17942:28;17938:1;17930:6;17926:14;17919:52;17802:176;:::o;17984:366::-;18126:3;18147:67;18211:2;18206:3;18147:67;:::i;:::-;18140:74;;18223:93;18312:3;18223:93;:::i;:::-;18341:2;18336:3;18332:12;18325:19;;17984:366;;;:::o;18356:419::-;18522:4;18560:2;18549:9;18545:18;18537:26;;18609:9;18603:4;18599:20;18595:1;18584:9;18580:17;18573:47;18637:131;18763:4;18637:131;:::i;:::-;18629:139;;18356:419;;;:::o;18781:332::-;18902:4;18940:2;18929:9;18925:18;18917:26;;18953:71;19021:1;19010:9;19006:17;18997:6;18953:71;:::i;:::-;19034:72;19102:2;19091:9;19087:18;19078:6;19034:72;:::i;:::-;18781:332;;;;;:::o;19119:137::-;19173:5;19204:6;19198:13;19189:22;;19220:30;19244:5;19220:30;:::i;:::-;19119:137;;;;:::o;19262:345::-;19329:6;19378:2;19366:9;19357:7;19353:23;19349:32;19346:119;;;19384:79;;:::i;:::-;19346:119;19504:1;19529:61;19582:7;19573:6;19562:9;19558:22;19529:61;:::i;:::-;19519:71;;19475:125;19262:345;;;;:::o;19613:224::-;19753:34;19749:1;19741:6;19737:14;19730:58;19822:7;19817:2;19809:6;19805:15;19798:32;19613:224;:::o;19843:366::-;19985:3;20006:67;20070:2;20065:3;20006:67;:::i;:::-;19999:74;;20082:93;20171:3;20082:93;:::i;:::-;20200:2;20195:3;20191:12;20184:19;;19843:366;;;:::o;20215:419::-;20381:4;20419:2;20408:9;20404:18;20396:26;;20468:9;20462:4;20458:20;20454:1;20443:9;20439:17;20432:47;20496:131;20622:4;20496:131;:::i;:::-;20488:139;;20215:419;;;:::o;20640:224::-;20780:34;20776:1;20768:6;20764:14;20757:58;20849:7;20844:2;20836:6;20832:15;20825:32;20640:224;:::o;20870:366::-;21012:3;21033:67;21097:2;21092:3;21033:67;:::i;:::-;21026:74;;21109:93;21198:3;21109:93;:::i;:::-;21227:2;21222:3;21218:12;21211:19;;20870:366;;;:::o;21242:419::-;21408:4;21446:2;21435:9;21431:18;21423:26;;21495:9;21489:4;21485:20;21481:1;21470:9;21466:17;21459:47;21523:131;21649:4;21523:131;:::i;:::-;21515:139;;21242:419;;;:::o;21667:225::-;21807:34;21803:1;21795:6;21791:14;21784:58;21876:8;21871:2;21863:6;21859:15;21852:33;21667:225;:::o;21898:366::-;22040:3;22061:67;22125:2;22120:3;22061:67;:::i;:::-;22054:74;;22137:93;22226:3;22137:93;:::i;:::-;22255:2;22250:3;22246:12;22239:19;;21898:366;;;:::o;22270:419::-;22436:4;22474:2;22463:9;22459:18;22451:26;;22523:9;22517:4;22513:20;22509:1;22498:9;22494:17;22487:47;22551:131;22677:4;22551:131;:::i;:::-;22543:139;;22270:419;;;:::o;22695:223::-;22835:34;22831:1;22823:6;22819:14;22812:58;22904:6;22899:2;22891:6;22887:15;22880:31;22695:223;:::o;22924:366::-;23066:3;23087:67;23151:2;23146:3;23087:67;:::i;:::-;23080:74;;23163:93;23252:3;23163:93;:::i;:::-;23281:2;23276:3;23272:12;23265:19;;22924:366;;;:::o;23296:419::-;23462:4;23500:2;23489:9;23485:18;23477:26;;23549:9;23543:4;23539:20;23535:1;23524:9;23520:17;23513:47;23577:131;23703:4;23577:131;:::i;:::-;23569:139;;23296:419;;;:::o;23721:221::-;23861:34;23857:1;23849:6;23845:14;23838:58;23930:4;23925:2;23917:6;23913:15;23906:29;23721:221;:::o;23948:366::-;24090:3;24111:67;24175:2;24170:3;24111:67;:::i;:::-;24104:74;;24187:93;24276:3;24187:93;:::i;:::-;24305:2;24300:3;24296:12;24289:19;;23948:366;;;:::o;24320:419::-;24486:4;24524:2;24513:9;24509:18;24501:26;;24573:9;24567:4;24563:20;24559:1;24548:9;24544:17;24537:47;24601:131;24727:4;24601:131;:::i;:::-;24593:139;;24320:419;;;:::o;24745:228::-;24885:34;24881:1;24873:6;24869:14;24862:58;24954:11;24949:2;24941:6;24937:15;24930:36;24745:228;:::o;24979:366::-;25121:3;25142:67;25206:2;25201:3;25142:67;:::i;:::-;25135:74;;25218:93;25307:3;25218:93;:::i;:::-;25336:2;25331:3;25327:12;25320:19;;24979:366;;;:::o;25351:419::-;25517:4;25555:2;25544:9;25540:18;25532:26;;25604:9;25598:4;25594:20;25590:1;25579:9;25575:17;25568:47;25632:131;25758:4;25632:131;:::i;:::-;25624:139;;25351:419;;;:::o;25776:169::-;25916:21;25912:1;25904:6;25900:14;25893:45;25776:169;:::o;25951:366::-;26093:3;26114:67;26178:2;26173:3;26114:67;:::i;:::-;26107:74;;26190:93;26279:3;26190:93;:::i;:::-;26308:2;26303:3;26299:12;26292:19;;25951:366;;;:::o;26323:419::-;26489:4;26527:2;26516:9;26512:18;26504:26;;26576:9;26570:4;26566:20;26562:1;26551:9;26547:17;26540:47;26604:131;26730:4;26604:131;:::i;:::-;26596:139;;26323:419;;;:::o;26748:182::-;26888:34;26884:1;26876:6;26872:14;26865:58;26748:182;:::o;26936:366::-;27078:3;27099:67;27163:2;27158:3;27099:67;:::i;:::-;27092:74;;27175:93;27264:3;27175:93;:::i;:::-;27293:2;27288:3;27284:12;27277:19;;26936:366;;;:::o;27308:419::-;27474:4;27512:2;27501:9;27497:18;27489:26;;27561:9;27555:4;27551:20;27547:1;27536:9;27532:17;27525:47;27589:131;27715:4;27589:131;:::i;:::-;27581:139;;27308:419;;;:::o;27733:180::-;27781:77;27778:1;27771:88;27878:4;27875:1;27868:15;27902:4;27899:1;27892:15;27919:185;27959:1;27976:20;27994:1;27976:20;:::i;:::-;27971:25;;28010:20;28028:1;28010:20;:::i;:::-;28005:25;;28049:1;28039:35;;28054:18;;:::i;:::-;28039:35;28096:1;28093;28089:9;28084:14;;27919:185;;;;:::o;28110:224::-;28250:34;28246:1;28238:6;28234:14;28227:58;28319:7;28314:2;28306:6;28302:15;28295:32;28110:224;:::o;28340:366::-;28482:3;28503:67;28567:2;28562:3;28503:67;:::i;:::-;28496:74;;28579:93;28668:3;28579:93;:::i;:::-;28697:2;28692:3;28688:12;28681:19;;28340:366;;;:::o;28712:419::-;28878:4;28916:2;28905:9;28901:18;28893:26;;28965:9;28959:4;28955:20;28951:1;28940:9;28936:17;28929:47;28993:131;29119:4;28993:131;:::i;:::-;28985:139;;28712:419;;;:::o;29137:222::-;29277:34;29273:1;29265:6;29261:14;29254:58;29346:5;29341:2;29333:6;29329:15;29322:30;29137:222;:::o;29365:366::-;29507:3;29528:67;29592:2;29587:3;29528:67;:::i;:::-;29521:74;;29604:93;29693:3;29604:93;:::i;:::-;29722:2;29717:3;29713:12;29706:19;;29365:366;;;:::o;29737:419::-;29903:4;29941:2;29930:9;29926:18;29918:26;;29990:9;29984:4;29980:20;29976:1;29965:9;29961:17;29954:47;30018:131;30144:4;30018:131;:::i;:::-;30010:139;;29737:419;;;:::o;30162:225::-;30302:34;30298:1;30290:6;30286:14;30279:58;30371:8;30366:2;30358:6;30354:15;30347:33;30162:225;:::o;30393:366::-;30535:3;30556:67;30620:2;30615:3;30556:67;:::i;:::-;30549:74;;30632:93;30721:3;30632:93;:::i;:::-;30750:2;30745:3;30741:12;30734:19;;30393:366;;;:::o;30765:419::-;30931:4;30969:2;30958:9;30954:18;30946:26;;31018:9;31012:4;31008:20;31004:1;30993:9;30989:17;30982:47;31046:131;31172:4;31046:131;:::i;:::-;31038:139;;30765:419;;;:::o;31190:143::-;31247:5;31278:6;31272:13;31263:22;;31294:33;31321:5;31294:33;:::i;:::-;31190:143;;;;:::o;31339:351::-;31409:6;31458:2;31446:9;31437:7;31433:23;31429:32;31426:119;;;31464:79;;:::i;:::-;31426:119;31584:1;31609:64;31665:7;31656:6;31645:9;31641:22;31609:64;:::i;:::-;31599:74;;31555:128;31339:351;;;;:::o;31696:85::-;31741:7;31770:5;31759:16;;31696:85;;;:::o;31787:158::-;31845:9;31878:61;31896:42;31905:32;31931:5;31905:32;:::i;:::-;31896:42;:::i;:::-;31878:61;:::i;:::-;31865:74;;31787:158;;;:::o;31951:147::-;32046:45;32085:5;32046:45;:::i;:::-;32041:3;32034:58;31951:147;;:::o;32104:114::-;32171:6;32205:5;32199:12;32189:22;;32104:114;;;:::o;32224:184::-;32323:11;32357:6;32352:3;32345:19;32397:4;32392:3;32388:14;32373:29;;32224:184;;;;:::o;32414:132::-;32481:4;32504:3;32496:11;;32534:4;32529:3;32525:14;32517:22;;32414:132;;;:::o;32552:108::-;32629:24;32647:5;32629:24;:::i;:::-;32624:3;32617:37;32552:108;;:::o;32666:179::-;32735:10;32756:46;32798:3;32790:6;32756:46;:::i;:::-;32834:4;32829:3;32825:14;32811:28;;32666:179;;;;:::o;32851:113::-;32921:4;32953;32948:3;32944:14;32936:22;;32851:113;;;:::o;33000:732::-;33119:3;33148:54;33196:5;33148:54;:::i;:::-;33218:86;33297:6;33292:3;33218:86;:::i;:::-;33211:93;;33328:56;33378:5;33328:56;:::i;:::-;33407:7;33438:1;33423:284;33448:6;33445:1;33442:13;33423:284;;;33524:6;33518:13;33551:63;33610:3;33595:13;33551:63;:::i;:::-;33544:70;;33637:60;33690:6;33637:60;:::i;:::-;33627:70;;33483:224;33470:1;33467;33463:9;33458:14;;33423:284;;;33427:14;33723:3;33716:10;;33124:608;;;33000:732;;;;:::o;33738:831::-;34001:4;34039:3;34028:9;34024:19;34016:27;;34053:71;34121:1;34110:9;34106:17;34097:6;34053:71;:::i;:::-;34134:80;34210:2;34199:9;34195:18;34186:6;34134:80;:::i;:::-;34261:9;34255:4;34251:20;34246:2;34235:9;34231:18;34224:48;34289:108;34392:4;34383:6;34289:108;:::i;:::-;34281:116;;34407:72;34475:2;34464:9;34460:18;34451:6;34407:72;:::i;:::-;34489:73;34557:3;34546:9;34542:19;34533:6;34489:73;:::i;:::-;33738:831;;;;;;;;:::o;34575:807::-;34824:4;34862:3;34851:9;34847:19;34839:27;;34876:71;34944:1;34933:9;34929:17;34920:6;34876:71;:::i;:::-;34957:72;35025:2;35014:9;35010:18;35001:6;34957:72;:::i;:::-;35039:80;35115:2;35104:9;35100:18;35091:6;35039:80;:::i;:::-;35129;35205:2;35194:9;35190:18;35181:6;35129:80;:::i;:::-;35219:73;35287:3;35276:9;35272:19;35263:6;35219:73;:::i;:::-;35302;35370:3;35359:9;35355:19;35346:6;35302:73;:::i;:::-;34575:807;;;;;;;;;:::o;35388:143::-;35445:5;35476:6;35470:13;35461:22;;35492:33;35519:5;35492:33;:::i;:::-;35388:143;;;;:::o;35537:663::-;35625:6;35633;35641;35690:2;35678:9;35669:7;35665:23;35661:32;35658:119;;;35696:79;;:::i;:::-;35658:119;35816:1;35841:64;35897:7;35888:6;35877:9;35873:22;35841:64;:::i;:::-;35831:74;;35787:128;35954:2;35980:64;36036:7;36027:6;36016:9;36012:22;35980:64;:::i;:::-;35970:74;;35925:129;36093:2;36119:64;36175:7;36166:6;36155:9;36151:22;36119:64;:::i;:::-;36109:74;;36064:129;35537:663;;;;;:::o;36206:179::-;36346:31;36342:1;36334:6;36330:14;36323:55;36206:179;:::o;36391:366::-;36533:3;36554:67;36618:2;36613:3;36554:67;:::i;:::-;36547:74;;36630:93;36719:3;36630:93;:::i;:::-;36748:2;36743:3;36739:12;36732:19;;36391:366;;;:::o;36763:419::-;36929:4;36967:2;36956:9;36952:18;36944:26;;37016:9;37010:4;37006:20;37002:1;36991:9;36987:17;36980:47;37044:131;37170:4;37044:131;:::i;:::-;37036:139;;36763:419;;;:::o;37188:147::-;37289:11;37326:3;37311:18;;37188:147;;;;:::o;37341:114::-;;:::o;37461:398::-;37620:3;37641:83;37722:1;37717:3;37641:83;:::i;:::-;37634:90;;37733:93;37822:3;37733:93;:::i;:::-;37851:1;37846:3;37842:11;37835:18;;37461:398;;;:::o;37865:379::-;38049:3;38071:147;38214:3;38071:147;:::i;:::-;38064:154;;38235:3;38228:10;;37865:379;;;:::o;38250:245::-;38390:34;38386:1;38378:6;38374:14;38367:58;38459:28;38454:2;38446:6;38442:15;38435:53;38250:245;:::o;38501:366::-;38643:3;38664:67;38728:2;38723:3;38664:67;:::i;:::-;38657:74;;38740:93;38829:3;38740:93;:::i;:::-;38858:2;38853:3;38849:12;38842:19;;38501:366;;;:::o;38873:419::-;39039:4;39077:2;39066:9;39062:18;39054:26;;39126:9;39120:4;39116:20;39112:1;39101:9;39097:17;39090:47;39154:131;39280:4;39154:131;:::i;:::-;39146:139;;38873:419;;;:::o

Swarm Source

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