ETH Price: $2,468.07 (+0.95%)

Token

WeGoGym (WGG)
 

Overview

Max Total Supply

10,000,000,000 WGG

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
22,515,907.187742746999286446 WGG

Value
$0.00
0x76e0e540dee729f887290cec4d1e0b9a5fc3167b
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:
WeGoGym

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 2024-01-12
*/

//SPDX-License-Identifier: UNLICENSED

/*

$WGG : Built to reward those who hit the gym with no excuses!

TG: https://t.me/WeGoGymChat
Twitter: https://twitter.com/WeGoGym_
website : https://www.wegogym.xyz/

*/

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;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    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;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    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;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    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);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    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);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * generation and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be generated for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    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 WeGoGym 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 = 50000000 * 10**18;
    uint256 public maxWalletLimit = 100000000 * 10**18;

    uint256 private genesis_block;
    uint256 private deadline = 4;
    uint256 private launchtax = 60;

    address private  marketingWallet = 0x94415d62cCb298dc24bd6e82384084D2FA310785;
    address private devWallet = 0x94415d62cCb298dc24bd6e82384084D2FA310785;
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 dev;   
    }

    Taxes public taxes = Taxes(30, 10, 0);
    Taxes public sellTaxes = Taxes(10, 30, 0);

    mapping(address => bool) public exemptFee;


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

    constructor() ERC20("WeGoGym", "WGG") {
        _tokengeneration(msg.sender, 10000000000 * 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[devWallet] = true;
        exemptFee[deadWallet] = 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 +           
                sellTaxes.dev ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee && sender == pair) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.dev ;
            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);
            }

            uint256 devAmt = unitBalance * 2 * swapTaxes.dev;
            if (devAmt > 0) {
                payable(devWallet).sendValue(devAmt);
            }

        }
    }

    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
            devWallet,
            block.timestamp
        );
    }

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

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

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

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

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


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

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

    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

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

    function updateLiquidityTreshhold(uint256 new_amount) public{
        //update the treshhold
        require(msg.sender==devWallet,"only devWallet can update threshold");
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function updateExemptFee(address _address, bool state) public{
        require(msg.sender==devWallet,"only devWallet can exemptFee");
        exemptFee[_address] = state;
    }

    function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = state;
        }
    }


    // 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":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","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"},{"internalType":"uint256","name":"dev","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"},{"internalType":"uint256","name":"dev","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":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","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"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff0219169083151502179055506a295be96e640669720000006008556a52b7d2dcc80cd2e40000006009556004600b55603c600c557394415d62ccb298dc24bd6e82384084d2fa310785600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507394415d62ccb298dc24bd6e82384084d2fa310785600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060600160405280601e8152602001600a81526020016000815250600f60008201518160000155602082015181600101556040820151816002015550506040518060600160405280600a8152602001601e8152602001600081525060126000820151816000015560208201518160010155604082015181600201555050348015620001b457600080fd5b506040518060400160405280600781526020017f5765476f47796d000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f5747470000000000000000000000000000000000000000000000000000000000815250816003908162000232919062000b44565b50806004908162000244919062000b44565b505050620002676200025b620006b260201b60201c565b620006ba60201b60201c565b620002a8336200027c6200078060201b60201c565b600a6200028a919062000dbb565b6402540be4006200029c919062000e0c565b6200078960201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000335919062000ec1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200039d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c3919062000ec1565b6040518363ffffffff1660e01b8152600401620003e292919062000f04565b6020604051808303816000875af115801562000402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000428919062000ec1565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062001008565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f29062000fb8565b60405180910390fd5b6200080f60008383620008c560201b60201c565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008b9919062000feb565b60405180910390a35050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200094c57607f821691505b60208210810362000962576200096162000904565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009cc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200098d565b620009d886836200098d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a2562000a1f62000a1984620009f0565b620009fa565b620009f0565b9050919050565b6000819050919050565b62000a418362000a04565b62000a5962000a508262000a2c565b8484546200099a565b825550505050565b600090565b62000a7062000a61565b62000a7d81848462000a36565b505050565b5b8181101562000aa55762000a9960008262000a66565b60018101905062000a83565b5050565b601f82111562000af45762000abe8162000968565b62000ac9846200097d565b8101602085101562000ad9578190505b62000af162000ae8856200097d565b83018262000a82565b50505b505050565b600082821c905092915050565b600062000b196000198460080262000af9565b1980831691505092915050565b600062000b34838362000b06565b9150826002028217905092915050565b62000b4f82620008ca565b67ffffffffffffffff81111562000b6b5762000b6a620008d5565b5b62000b77825462000933565b62000b8482828562000aa9565b600060209050601f83116001811462000bbc576000841562000ba7578287015190505b62000bb3858262000b26565b86555062000c23565b601f19841662000bcc8662000968565b60005b8281101562000bf65784890151825560018201915060208501945060208101905062000bcf565b8683101562000c16578489015162000c12601f89168262000b06565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000cb95780860481111562000c915762000c9062000c2b565b5b600185161562000ca15780820291505b808102905062000cb18562000c5a565b945062000c71565b94509492505050565b60008262000cd4576001905062000da7565b8162000ce4576000905062000da7565b816001811462000cfd576002811462000d085762000d3e565b600191505062000da7565b60ff84111562000d1d5762000d1c62000c2b565b5b8360020a91508482111562000d375762000d3662000c2b565b5b5062000da7565b5060208310610133831016604e8410600b841016171562000d785782820a90508381111562000d725762000d7162000c2b565b5b62000da7565b62000d87848484600162000c67565b9250905081840481111562000da15762000da062000c2b565b5b81810290505b9392505050565b600060ff82169050919050565b600062000dc882620009f0565b915062000dd58362000dae565b925062000e047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cc2565b905092915050565b600062000e1982620009f0565b915062000e2683620009f0565b925082820262000e3681620009f0565b9150828204841483151762000e505762000e4f62000c2b565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e898262000e5c565b9050919050565b62000e9b8162000e7c565b811462000ea757600080fd5b50565b60008151905062000ebb8162000e90565b92915050565b60006020828403121562000eda5762000ed962000e57565b5b600062000eea8482850162000eaa565b91505092915050565b62000efe8162000e7c565b82525050565b600060408201905062000f1b600083018562000ef3565b62000f2a602083018462000ef3565b9392505050565b600082825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600062000fa060258362000f31565b915062000fad8262000f42565b604082019050919050565b6000602082019050818103600083015262000fd38162000f91565b9050919050565b62000fe581620009f0565b82525050565b600060208201905062001002600083018462000fda565b92915050565b61424b80620010186000396000f3fe6080604052600436106101fd5760003560e01c8063728f8eea1161010d578063a457c2d7116100a0578063c5d32bb21161006f578063c5d32bb214610718578063dd62ed3e14610755578063f2fde38b14610792578063f66895a3146107bb578063f887ea40146107e857610204565b8063a457c2d71461064a578063a8aa1b3114610687578063a9059cbb146106b2578063aacebbe3146106ef57610204565b80638da5cb5b116100dc5780638da5cb5b146105a257806395d89b41146105cd5780639d282cd6146105f85780639e252f001461062157610204565b8063728f8eea1461050a57806385141a77146105375780638a8c523c146105625780638cd4426d1461057957610204565b8063355496ca116101905780634ada218b1161015f5780634ada218b146104375780634e736f221461046257806366a88d961461048b57806370a08231146104b6578063715018a6146104f357610204565b8063355496ca1461037f57806339509351146103a857806342b6fa11146103e55780634324deae1461040e57610204565b806318160ddd116101cc57806318160ddd146102c35780631816467f146102ee57806323b872dd14610317578063313ce5671461035457610204565b806306fdde0314610209578063095ea7b3146102345780630e375a5c146102715780631340538f1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e610813565b60405161022b9190612cb1565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612d7b565b6108a5565b6040516102689190612dd6565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612f65565b6108c3565b005b3480156102a657600080fd5b506102c160048036038101906102bc9190612fc1565b6109d4565b005b3480156102cf57600080fd5b506102d8610a6d565b6040516102e59190612ffd565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190613018565b610a77565b005b34801561032357600080fd5b5061033e60048036038101906103399190613045565b610b37565b60405161034b9190612dd6565b60405180910390f35b34801561036057600080fd5b50610369610c38565b60405161037691906130b4565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a191906130cf565b610c41565b005b3480156103b457600080fd5b506103cf60048036038101906103ca9190612d7b565b610d2c565b6040516103dc9190612dd6565b60405180910390f35b3480156103f157600080fd5b5061040c6004803603810190610407919061310f565b610dd8565b005b34801561041a57600080fd5b506104356004803603810190610430919061310f565b610e90565b005b34801561044357600080fd5b5061044c610f34565b6040516104599190612dd6565b60405180910390f35b34801561046e57600080fd5b506104896004803603810190610484919061313c565b610f47565b005b34801561049757600080fd5b506104a0611006565b6040516104ad9190612ffd565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190613018565b61100c565b6040516104ea9190612ffd565b60405180910390f35b3480156104ff57600080fd5b50610508611054565b005b34801561051657600080fd5b5061051f6110dc565b60405161052e9392919061318f565b60405180910390f35b34801561054357600080fd5b5061054c6110f4565b60405161055991906131d5565b60405180910390f35b34801561056e57600080fd5b506105776110fa565b005b34801561058557600080fd5b506105a0600480360381019061059b9190612d7b565b611205565b005b3480156105ae57600080fd5b506105b76112aa565b6040516105c491906131d5565b60405180910390f35b3480156105d957600080fd5b506105e26112d4565b6040516105ef9190612cb1565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a919061313c565b611366565b005b34801561062d57600080fd5b506106486004803603810190610643919061310f565b611425565b005b34801561065657600080fd5b50610671600480360381019061066c9190612d7b565b611491565b60405161067e9190612dd6565b60405180910390f35b34801561069357600080fd5b5061069c611585565b6040516106a991906131d5565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d49190612d7b565b6115ab565b6040516106e69190612dd6565b60405180910390f35b3480156106fb57600080fd5b5061071660048036038101906107119190613018565b6115c2565b005b34801561072457600080fd5b5061073f600480360381019061073a9190613018565b611682565b60405161074c9190612dd6565b60405180910390f35b34801561076157600080fd5b5061077c600480360381019061077791906131f0565b6116a2565b6040516107899190612ffd565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b49190613018565b611729565b005b3480156107c757600080fd5b506107d0611820565b6040516107df9392919061318f565b60405180910390f35b3480156107f457600080fd5b506107fd611838565b60405161080a919061328f565b60405180910390f35b606060038054610822906132d9565b80601f016020809104026020016040519081016040528092919081815260200182805461084e906132d9565b801561089b5780601f106108705761010080835404028352916020019161089b565b820191906000526020600020905b81548152906001019060200180831161087e57829003601f168201915b5050505050905090565b60006108b96108b261185e565b8484611866565b6001905092915050565b6108cb61185e565b73ffffffffffffffffffffffffffffffffffffffff166108e96112aa565b73ffffffffffffffffffffffffffffffffffffffff161461093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093690613356565b60405180910390fd5b60005b82518110156109cf57816015600085848151811061096357610962613376565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109c7906133d4565b915050610942565b505050565b6109dc61185e565b73ffffffffffffffffffffffffffffffffffffffff166109fa6112aa565b73ffffffffffffffffffffffffffffffffffffffff1614610a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4790613356565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b610a7f61185e565b73ffffffffffffffffffffffffffffffffffffffff16610a9d6112aa565b73ffffffffffffffffffffffffffffffffffffffff1614610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea90613356565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610b44848484611a2f565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b8f61185e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c069061348e565b60405180910390fd5b610c2c85610c1b61185e565b8584610c2791906134ae565b611866565b60019150509392505050565b60006012905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc89061352e565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610dce610d3961185e565b848460016000610d4761185e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dc9919061354e565b611866565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5f906135f4565b60405180910390fd5b610e70610c38565b600a610e7c9190613747565b81610e879190613792565b60088190555050565b610e9861185e565b73ffffffffffffffffffffffffffffffffffffffff16610eb66112aa565b73ffffffffffffffffffffffffffffffffffffffff1614610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0390613356565b60405180910390fd5b610f14610c38565b600a610f209190613747565b81610f2b9190613792565b60098190555050565b600760169054906101000a900460ff1681565b610f4f61185e565b73ffffffffffffffffffffffffffffffffffffffff16610f6d6112aa565b73ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90613356565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050505050565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61105c61185e565b73ffffffffffffffffffffffffffffffffffffffff1661107a6112aa565b73ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790613356565b60405180910390fd5b6110da6000612267565b565b600f8060000154908060010154908060020154905083565b61dead81565b61110261185e565b73ffffffffffffffffffffffffffffffffffffffff166111206112aa565b73ffffffffffffffffffffffffffffffffffffffff1614611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116d90613356565b60405180910390fd5b600760169054906101000a900460ff16156111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90613820565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600a81905550565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611262929190613840565b6020604051808303816000875af1158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a5919061387e565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112e3906132d9565b80601f016020809104026020016040519081016040528092919081815260200182805461130f906132d9565b801561135c5780601f106113315761010080835404028352916020019161135c565b820191906000526020600020905b81548152906001019060200180831161133f57829003601f168201915b5050505050905090565b61136e61185e565b73ffffffffffffffffffffffffffffffffffffffff1661138c6112aa565b73ffffffffffffffffffffffffffffffffffffffff16146113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990613356565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561148d573d6000803e3d6000fd5b5050565b600080600160006114a061185e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561155d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115549061391d565b60405180910390fd5b61157a61156861185e565b85858461157591906134ae565b611866565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115b8338484611a2f565b6001905092915050565b6115ca61185e565b73ffffffffffffffffffffffffffffffffffffffff166115e86112aa565b73ffffffffffffffffffffffffffffffffffffffff161461163e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163590613356565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60156020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61173161185e565b73ffffffffffffffffffffffffffffffffffffffff1661174f6112aa565b73ffffffffffffffffffffffffffffffffffffffff16146117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c90613356565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b906139af565b60405180910390fd5b61181d81612267565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc90613a41565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b90613ad3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a229190612ffd565b60405180910390a3505050565b60008111611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6990613b65565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b165750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b6b57600760169054906101000a900460ff16611b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6190613bd1565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c125750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c2b5750600760149054906101000a900460ff16155b15611c895760095481611c3d8461100c565b611c47919061354e565b1115611c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7f90613c3d565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d315750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d875750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611da05750600760149054906101000a900460ff16155b15611e5457600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e535760095481611e078461100c565b611e11919061354e565b1115611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4990613c3d565b60405180910390fd5b5b5b6000806000611e61612c00565b6000601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f075750601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f215750600b54600a54611f1e919061354e565b43105b9050600760149054906101000a900460ff1680611f875750601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fdb5750601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611fe95760009250612177565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015612044575080155b156120a657601260020154601260000154601260010154612065919061354e565b61206f919061354e565b9450849350601260405180606001604052908160008201548152602001600182015481526020016002820154815250509150612176565b801580156121015750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b1561216357600f60020154600f60000154600f60010154612122919061354e565b61212c919061354e565b9450849350600f60405180606001604052908160008201548152602001600182015481526020016002820154815250509150612175565b801561217457600c549450600c5493505b5b5b5b606484876121859190613792565b61218f9190613c8c565b9250600760159054906101000a900460ff1680156121fb5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b1561220b5761220a858361232d565b5b6122218888858961221c91906134ae565b612547565b600083111561225d57600085111561225c576000606486886122439190613792565b61224d9190613c8c565b905061225a893083612547565b505b5b5050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612543576001600760146101000a81548160ff02191690831515021790555060008203156125275760006123703061100c565b90506008548110612525576001600854111561238c5760085490505b600060028461239b9190613792565b90506000818460200151846123b09190613792565b6123ba9190613c8c565b9050600081846123ca91906134ae565b905060004790506123da826127c4565b600081476123e891906134ae565b905060008760200151866123fc91906134ae565b826124079190613c8c565b9050600088602001518261241b9190613792565b90506000811115612431576124308682612a07565b5b600089600001516002846124459190613792565b61244f9190613792565b905060008111156124a6576124a581600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b0790919063ffffffff16565b5b60008a604001516002856124ba9190613792565b6124c49190613792565b9050600081111561251b5761251a81600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b0790919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad90613d2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261c90613dc1565b60405180910390fd5b612630838383612bfb565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ad90613e53565b60405180910390fd5b81816126c291906134ae565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612752919061354e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127b69190612ffd565b60405180910390a350505050565b6000600267ffffffffffffffff8111156127e1576127e0612df6565b5b60405190808252806020026020018201604052801561280f5781602001602082028036833780820191505090505b509050308160008151811061282757612826613376565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f29190613e88565b8160018151811061290657612905613376565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061296d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611866565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129d1959493929190613fae565b600060405180830381600087803b1580156129eb57600080fd5b505af11580156129ff573d6000803e3d6000fd5b505050505050565b612a3430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611866565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612abd96959493929190614008565b60606040518083038185885af1158015612adb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b00919061407e565b5050505050565b80471015612b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b419061411d565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612b709061416e565b60006040518083038185875af1925050503d8060008114612bad576040519150601f19603f3d011682016040523d82523d6000602084013e612bb2565b606091505b5050905080612bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bed906141f5565b60405180910390fd5b505050565b505050565b60405180606001604052806000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c5b578082015181840152602081019050612c40565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c8382612c21565b612c8d8185612c2c565b9350612c9d818560208601612c3d565b612ca681612c67565b840191505092915050565b60006020820190508181036000830152612ccb8184612c78565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d1282612ce7565b9050919050565b612d2281612d07565b8114612d2d57600080fd5b50565b600081359050612d3f81612d19565b92915050565b6000819050919050565b612d5881612d45565b8114612d6357600080fd5b50565b600081359050612d7581612d4f565b92915050565b60008060408385031215612d9257612d91612cdd565b5b6000612da085828601612d30565b9250506020612db185828601612d66565b9150509250929050565b60008115159050919050565b612dd081612dbb565b82525050565b6000602082019050612deb6000830184612dc7565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e2e82612c67565b810181811067ffffffffffffffff82111715612e4d57612e4c612df6565b5b80604052505050565b6000612e60612cd3565b9050612e6c8282612e25565b919050565b600067ffffffffffffffff821115612e8c57612e8b612df6565b5b602082029050602081019050919050565b600080fd5b6000612eb5612eb084612e71565b612e56565b90508083825260208201905060208402830185811115612ed857612ed7612e9d565b5b835b81811015612f015780612eed8882612d30565b845260208401935050602081019050612eda565b5050509392505050565b600082601f830112612f2057612f1f612df1565b5b8135612f30848260208601612ea2565b91505092915050565b612f4281612dbb565b8114612f4d57600080fd5b50565b600081359050612f5f81612f39565b92915050565b60008060408385031215612f7c57612f7b612cdd565b5b600083013567ffffffffffffffff811115612f9a57612f99612ce2565b5b612fa685828601612f0b565b9250506020612fb785828601612f50565b9150509250929050565b600060208284031215612fd757612fd6612cdd565b5b6000612fe584828501612f50565b91505092915050565b612ff781612d45565b82525050565b60006020820190506130126000830184612fee565b92915050565b60006020828403121561302e5761302d612cdd565b5b600061303c84828501612d30565b91505092915050565b60008060006060848603121561305e5761305d612cdd565b5b600061306c86828701612d30565b935050602061307d86828701612d30565b925050604061308e86828701612d66565b9150509250925092565b600060ff82169050919050565b6130ae81613098565b82525050565b60006020820190506130c960008301846130a5565b92915050565b600080604083850312156130e6576130e5612cdd565b5b60006130f485828601612d30565b925050602061310585828601612f50565b9150509250929050565b60006020828403121561312557613124612cdd565b5b600061313384828501612d66565b91505092915050565b60008060006060848603121561315557613154612cdd565b5b600061316386828701612d66565b935050602061317486828701612d66565b925050604061318586828701612d66565b9150509250925092565b60006060820190506131a46000830186612fee565b6131b16020830185612fee565b6131be6040830184612fee565b949350505050565b6131cf81612d07565b82525050565b60006020820190506131ea60008301846131c6565b92915050565b6000806040838503121561320757613206612cdd565b5b600061321585828601612d30565b925050602061322685828601612d30565b9150509250929050565b6000819050919050565b600061325561325061324b84612ce7565b613230565b612ce7565b9050919050565b60006132678261323a565b9050919050565b60006132798261325c565b9050919050565b6132898161326e565b82525050565b60006020820190506132a46000830184613280565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806132f157607f821691505b602082108103613304576133036132aa565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613340602083612c2c565b915061334b8261330a565b602082019050919050565b6000602082019050818103600083015261336f81613333565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133df82612d45565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613411576134106133a5565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613478602883612c2c565b91506134838261341c565b604082019050919050565b600060208201905081810360008301526134a78161346b565b9050919050565b60006134b982612d45565b91506134c483612d45565b92508282039050818111156134dc576134db6133a5565b5b92915050565b7f6f6e6c792064657657616c6c65742063616e206578656d707446656500000000600082015250565b6000613518601c83612c2c565b9150613523826134e2565b602082019050919050565b600060208201905081810360008301526135478161350b565b9050919050565b600061355982612d45565b915061356483612d45565b925082820190508082111561357c5761357b6133a5565b5b92915050565b7f6f6e6c792064657657616c6c65742063616e207570646174652074687265736860008201527f6f6c640000000000000000000000000000000000000000000000000000000000602082015250565b60006135de602383612c2c565b91506135e982613582565b604082019050919050565b6000602082019050818103600083015261360d816135d1565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561366b57808604811115613647576136466133a5565b5b60018516156136565780820291505b808102905061366485613614565b945061362b565b94509492505050565b6000826136845760019050613740565b816136925760009050613740565b81600181146136a857600281146136b2576136e1565b6001915050613740565b60ff8411156136c4576136c36133a5565b5b8360020a9150848211156136db576136da6133a5565b5b50613740565b5060208310610133831016604e8410600b84101617156137165782820a905083811115613711576137106133a5565b5b613740565b6137238484846001613621565b9250905081840481111561373a576137396133a5565b5b81810290505b9392505050565b600061375282612d45565b915061375d83613098565b925061378a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613674565b905092915050565b600061379d82612d45565b91506137a883612d45565b92508282026137b681612d45565b915082820484148315176137cd576137cc6133a5565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b600061380a601a83612c2c565b9150613815826137d4565b602082019050919050565b60006020820190508181036000830152613839816137fd565b9050919050565b600060408201905061385560008301856131c6565b6138626020830184612fee565b9392505050565b60008151905061387881612f39565b92915050565b60006020828403121561389457613893612cdd565b5b60006138a284828501613869565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613907602583612c2c565b9150613912826138ab565b604082019050919050565b60006020820190508181036000830152613936816138fa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613999602683612c2c565b91506139a48261393d565b604082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a2b602483612c2c565b9150613a36826139cf565b604082019050919050565b60006020820190508181036000830152613a5a81613a1e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613abd602283612c2c565b9150613ac882613a61565b604082019050919050565b60006020820190508181036000830152613aec81613ab0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b4f602983612c2c565b9150613b5a82613af3565b604082019050919050565b60006020820190508181036000830152613b7e81613b42565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613bbb601383612c2c565b9150613bc682613b85565b602082019050919050565b60006020820190508181036000830152613bea81613bae565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000613c27602083612c2c565b9150613c3282613bf1565b602082019050919050565b60006020820190508181036000830152613c5681613c1a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c9782612d45565b9150613ca283612d45565b925082613cb257613cb1613c5d565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d19602583612c2c565b9150613d2482613cbd565b604082019050919050565b60006020820190508181036000830152613d4881613d0c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613dab602383612c2c565b9150613db682613d4f565b604082019050919050565b60006020820190508181036000830152613dda81613d9e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613e3d602683612c2c565b9150613e4882613de1565b604082019050919050565b60006020820190508181036000830152613e6c81613e30565b9050919050565b600081519050613e8281612d19565b92915050565b600060208284031215613e9e57613e9d612cdd565b5b6000613eac84828501613e73565b91505092915050565b6000819050919050565b6000613eda613ed5613ed084613eb5565b613230565b612d45565b9050919050565b613eea81613ebf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f2581612d07565b82525050565b6000613f378383613f1c565b60208301905092915050565b6000602082019050919050565b6000613f5b82613ef0565b613f658185613efb565b9350613f7083613f0c565b8060005b83811015613fa1578151613f888882613f2b565b9750613f9383613f43565b925050600181019050613f74565b5085935050505092915050565b600060a082019050613fc36000830188612fee565b613fd06020830187613ee1565b8181036040830152613fe28186613f50565b9050613ff160608301856131c6565b613ffe6080830184612fee565b9695505050505050565b600060c08201905061401d60008301896131c6565b61402a6020830188612fee565b6140376040830187613ee1565b6140446060830186613ee1565b61405160808301856131c6565b61405e60a0830184612fee565b979650505050505050565b60008151905061407881612d4f565b92915050565b60008060006060848603121561409757614096612cdd565b5b60006140a586828701614069565b93505060206140b686828701614069565b92505060406140c786828701614069565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614107601d83612c2c565b9150614112826140d1565b602082019050919050565b60006020820190508181036000830152614136816140fa565b9050919050565b600081905092915050565b50565b600061415860008361413d565b915061416382614148565b600082019050919050565b60006141798261414b565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006141df603a83612c2c565b91506141ea82614183565b604082019050919050565b6000602082019050818103600083015261420e816141d2565b905091905056fea2646970667358221220e7d8d09c93dfc614d3404b816edb645a146fc3f6e7212b8c7aee712dd8519b6964736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c8063728f8eea1161010d578063a457c2d7116100a0578063c5d32bb21161006f578063c5d32bb214610718578063dd62ed3e14610755578063f2fde38b14610792578063f66895a3146107bb578063f887ea40146107e857610204565b8063a457c2d71461064a578063a8aa1b3114610687578063a9059cbb146106b2578063aacebbe3146106ef57610204565b80638da5cb5b116100dc5780638da5cb5b146105a257806395d89b41146105cd5780639d282cd6146105f85780639e252f001461062157610204565b8063728f8eea1461050a57806385141a77146105375780638a8c523c146105625780638cd4426d1461057957610204565b8063355496ca116101905780634ada218b1161015f5780634ada218b146104375780634e736f221461046257806366a88d961461048b57806370a08231146104b6578063715018a6146104f357610204565b8063355496ca1461037f57806339509351146103a857806342b6fa11146103e55780634324deae1461040e57610204565b806318160ddd116101cc57806318160ddd146102c35780631816467f146102ee57806323b872dd14610317578063313ce5671461035457610204565b806306fdde0314610209578063095ea7b3146102345780630e375a5c146102715780631340538f1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e610813565b60405161022b9190612cb1565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612d7b565b6108a5565b6040516102689190612dd6565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612f65565b6108c3565b005b3480156102a657600080fd5b506102c160048036038101906102bc9190612fc1565b6109d4565b005b3480156102cf57600080fd5b506102d8610a6d565b6040516102e59190612ffd565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190613018565b610a77565b005b34801561032357600080fd5b5061033e60048036038101906103399190613045565b610b37565b60405161034b9190612dd6565b60405180910390f35b34801561036057600080fd5b50610369610c38565b60405161037691906130b4565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a191906130cf565b610c41565b005b3480156103b457600080fd5b506103cf60048036038101906103ca9190612d7b565b610d2c565b6040516103dc9190612dd6565b60405180910390f35b3480156103f157600080fd5b5061040c6004803603810190610407919061310f565b610dd8565b005b34801561041a57600080fd5b506104356004803603810190610430919061310f565b610e90565b005b34801561044357600080fd5b5061044c610f34565b6040516104599190612dd6565b60405180910390f35b34801561046e57600080fd5b506104896004803603810190610484919061313c565b610f47565b005b34801561049757600080fd5b506104a0611006565b6040516104ad9190612ffd565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190613018565b61100c565b6040516104ea9190612ffd565b60405180910390f35b3480156104ff57600080fd5b50610508611054565b005b34801561051657600080fd5b5061051f6110dc565b60405161052e9392919061318f565b60405180910390f35b34801561054357600080fd5b5061054c6110f4565b60405161055991906131d5565b60405180910390f35b34801561056e57600080fd5b506105776110fa565b005b34801561058557600080fd5b506105a0600480360381019061059b9190612d7b565b611205565b005b3480156105ae57600080fd5b506105b76112aa565b6040516105c491906131d5565b60405180910390f35b3480156105d957600080fd5b506105e26112d4565b6040516105ef9190612cb1565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a919061313c565b611366565b005b34801561062d57600080fd5b506106486004803603810190610643919061310f565b611425565b005b34801561065657600080fd5b50610671600480360381019061066c9190612d7b565b611491565b60405161067e9190612dd6565b60405180910390f35b34801561069357600080fd5b5061069c611585565b6040516106a991906131d5565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d49190612d7b565b6115ab565b6040516106e69190612dd6565b60405180910390f35b3480156106fb57600080fd5b5061071660048036038101906107119190613018565b6115c2565b005b34801561072457600080fd5b5061073f600480360381019061073a9190613018565b611682565b60405161074c9190612dd6565b60405180910390f35b34801561076157600080fd5b5061077c600480360381019061077791906131f0565b6116a2565b6040516107899190612ffd565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b49190613018565b611729565b005b3480156107c757600080fd5b506107d0611820565b6040516107df9392919061318f565b60405180910390f35b3480156107f457600080fd5b506107fd611838565b60405161080a919061328f565b60405180910390f35b606060038054610822906132d9565b80601f016020809104026020016040519081016040528092919081815260200182805461084e906132d9565b801561089b5780601f106108705761010080835404028352916020019161089b565b820191906000526020600020905b81548152906001019060200180831161087e57829003601f168201915b5050505050905090565b60006108b96108b261185e565b8484611866565b6001905092915050565b6108cb61185e565b73ffffffffffffffffffffffffffffffffffffffff166108e96112aa565b73ffffffffffffffffffffffffffffffffffffffff161461093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093690613356565b60405180910390fd5b60005b82518110156109cf57816015600085848151811061096357610962613376565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109c7906133d4565b915050610942565b505050565b6109dc61185e565b73ffffffffffffffffffffffffffffffffffffffff166109fa6112aa565b73ffffffffffffffffffffffffffffffffffffffff1614610a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4790613356565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b610a7f61185e565b73ffffffffffffffffffffffffffffffffffffffff16610a9d6112aa565b73ffffffffffffffffffffffffffffffffffffffff1614610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea90613356565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610b44848484611a2f565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b8f61185e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c069061348e565b60405180910390fd5b610c2c85610c1b61185e565b8584610c2791906134ae565b611866565b60019150509392505050565b60006012905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc89061352e565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610dce610d3961185e565b848460016000610d4761185e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dc9919061354e565b611866565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5f906135f4565b60405180910390fd5b610e70610c38565b600a610e7c9190613747565b81610e879190613792565b60088190555050565b610e9861185e565b73ffffffffffffffffffffffffffffffffffffffff16610eb66112aa565b73ffffffffffffffffffffffffffffffffffffffff1614610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0390613356565b60405180910390fd5b610f14610c38565b600a610f209190613747565b81610f2b9190613792565b60098190555050565b600760169054906101000a900460ff1681565b610f4f61185e565b73ffffffffffffffffffffffffffffffffffffffff16610f6d6112aa565b73ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90613356565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050505050565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61105c61185e565b73ffffffffffffffffffffffffffffffffffffffff1661107a6112aa565b73ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790613356565b60405180910390fd5b6110da6000612267565b565b600f8060000154908060010154908060020154905083565b61dead81565b61110261185e565b73ffffffffffffffffffffffffffffffffffffffff166111206112aa565b73ffffffffffffffffffffffffffffffffffffffff1614611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116d90613356565b60405180910390fd5b600760169054906101000a900460ff16156111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90613820565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600a81905550565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611262929190613840565b6020604051808303816000875af1158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a5919061387e565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112e3906132d9565b80601f016020809104026020016040519081016040528092919081815260200182805461130f906132d9565b801561135c5780601f106113315761010080835404028352916020019161135c565b820191906000526020600020905b81548152906001019060200180831161133f57829003601f168201915b5050505050905090565b61136e61185e565b73ffffffffffffffffffffffffffffffffffffffff1661138c6112aa565b73ffffffffffffffffffffffffffffffffffffffff16146113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990613356565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561148d573d6000803e3d6000fd5b5050565b600080600160006114a061185e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561155d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115549061391d565b60405180910390fd5b61157a61156861185e565b85858461157591906134ae565b611866565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115b8338484611a2f565b6001905092915050565b6115ca61185e565b73ffffffffffffffffffffffffffffffffffffffff166115e86112aa565b73ffffffffffffffffffffffffffffffffffffffff161461163e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163590613356565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60156020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61173161185e565b73ffffffffffffffffffffffffffffffffffffffff1661174f6112aa565b73ffffffffffffffffffffffffffffffffffffffff16146117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c90613356565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b906139af565b60405180910390fd5b61181d81612267565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc90613a41565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b90613ad3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a229190612ffd565b60405180910390a3505050565b60008111611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6990613b65565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b165750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b6b57600760169054906101000a900460ff16611b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6190613bd1565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c125750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c2b5750600760149054906101000a900460ff16155b15611c895760095481611c3d8461100c565b611c47919061354e565b1115611c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7f90613c3d565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d315750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d875750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611da05750600760149054906101000a900460ff16155b15611e5457600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e535760095481611e078461100c565b611e11919061354e565b1115611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4990613c3d565b60405180910390fd5b5b5b6000806000611e61612c00565b6000601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f075750601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f215750600b54600a54611f1e919061354e565b43105b9050600760149054906101000a900460ff1680611f875750601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fdb5750601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611fe95760009250612177565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015612044575080155b156120a657601260020154601260000154601260010154612065919061354e565b61206f919061354e565b9450849350601260405180606001604052908160008201548152602001600182015481526020016002820154815250509150612176565b801580156121015750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b1561216357600f60020154600f60000154600f60010154612122919061354e565b61212c919061354e565b9450849350600f60405180606001604052908160008201548152602001600182015481526020016002820154815250509150612175565b801561217457600c549450600c5493505b5b5b5b606484876121859190613792565b61218f9190613c8c565b9250600760159054906101000a900460ff1680156121fb5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b1561220b5761220a858361232d565b5b6122218888858961221c91906134ae565b612547565b600083111561225d57600085111561225c576000606486886122439190613792565b61224d9190613c8c565b905061225a893083612547565b505b5b5050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612543576001600760146101000a81548160ff02191690831515021790555060008203156125275760006123703061100c565b90506008548110612525576001600854111561238c5760085490505b600060028461239b9190613792565b90506000818460200151846123b09190613792565b6123ba9190613c8c565b9050600081846123ca91906134ae565b905060004790506123da826127c4565b600081476123e891906134ae565b905060008760200151866123fc91906134ae565b826124079190613c8c565b9050600088602001518261241b9190613792565b90506000811115612431576124308682612a07565b5b600089600001516002846124459190613792565b61244f9190613792565b905060008111156124a6576124a581600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b0790919063ffffffff16565b5b60008a604001516002856124ba9190613792565b6124c49190613792565b9050600081111561251b5761251a81600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b0790919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad90613d2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261c90613dc1565b60405180910390fd5b612630838383612bfb565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ad90613e53565b60405180910390fd5b81816126c291906134ae565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612752919061354e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127b69190612ffd565b60405180910390a350505050565b6000600267ffffffffffffffff8111156127e1576127e0612df6565b5b60405190808252806020026020018201604052801561280f5781602001602082028036833780820191505090505b509050308160008151811061282757612826613376565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f29190613e88565b8160018151811061290657612905613376565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061296d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611866565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129d1959493929190613fae565b600060405180830381600087803b1580156129eb57600080fd5b505af11580156129ff573d6000803e3d6000fd5b505050505050565b612a3430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611866565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612abd96959493929190614008565b60606040518083038185885af1158015612adb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b00919061407e565b5050505050565b80471015612b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b419061411d565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612b709061416e565b60006040518083038185875af1925050503d8060008114612bad576040519150601f19603f3d011682016040523d82523d6000602084013e612bb2565b606091505b5050905080612bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bed906141f5565b60405180910390fd5b505050565b505050565b60405180606001604052806000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c5b578082015181840152602081019050612c40565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c8382612c21565b612c8d8185612c2c565b9350612c9d818560208601612c3d565b612ca681612c67565b840191505092915050565b60006020820190508181036000830152612ccb8184612c78565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d1282612ce7565b9050919050565b612d2281612d07565b8114612d2d57600080fd5b50565b600081359050612d3f81612d19565b92915050565b6000819050919050565b612d5881612d45565b8114612d6357600080fd5b50565b600081359050612d7581612d4f565b92915050565b60008060408385031215612d9257612d91612cdd565b5b6000612da085828601612d30565b9250506020612db185828601612d66565b9150509250929050565b60008115159050919050565b612dd081612dbb565b82525050565b6000602082019050612deb6000830184612dc7565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e2e82612c67565b810181811067ffffffffffffffff82111715612e4d57612e4c612df6565b5b80604052505050565b6000612e60612cd3565b9050612e6c8282612e25565b919050565b600067ffffffffffffffff821115612e8c57612e8b612df6565b5b602082029050602081019050919050565b600080fd5b6000612eb5612eb084612e71565b612e56565b90508083825260208201905060208402830185811115612ed857612ed7612e9d565b5b835b81811015612f015780612eed8882612d30565b845260208401935050602081019050612eda565b5050509392505050565b600082601f830112612f2057612f1f612df1565b5b8135612f30848260208601612ea2565b91505092915050565b612f4281612dbb565b8114612f4d57600080fd5b50565b600081359050612f5f81612f39565b92915050565b60008060408385031215612f7c57612f7b612cdd565b5b600083013567ffffffffffffffff811115612f9a57612f99612ce2565b5b612fa685828601612f0b565b9250506020612fb785828601612f50565b9150509250929050565b600060208284031215612fd757612fd6612cdd565b5b6000612fe584828501612f50565b91505092915050565b612ff781612d45565b82525050565b60006020820190506130126000830184612fee565b92915050565b60006020828403121561302e5761302d612cdd565b5b600061303c84828501612d30565b91505092915050565b60008060006060848603121561305e5761305d612cdd565b5b600061306c86828701612d30565b935050602061307d86828701612d30565b925050604061308e86828701612d66565b9150509250925092565b600060ff82169050919050565b6130ae81613098565b82525050565b60006020820190506130c960008301846130a5565b92915050565b600080604083850312156130e6576130e5612cdd565b5b60006130f485828601612d30565b925050602061310585828601612f50565b9150509250929050565b60006020828403121561312557613124612cdd565b5b600061313384828501612d66565b91505092915050565b60008060006060848603121561315557613154612cdd565b5b600061316386828701612d66565b935050602061317486828701612d66565b925050604061318586828701612d66565b9150509250925092565b60006060820190506131a46000830186612fee565b6131b16020830185612fee565b6131be6040830184612fee565b949350505050565b6131cf81612d07565b82525050565b60006020820190506131ea60008301846131c6565b92915050565b6000806040838503121561320757613206612cdd565b5b600061321585828601612d30565b925050602061322685828601612d30565b9150509250929050565b6000819050919050565b600061325561325061324b84612ce7565b613230565b612ce7565b9050919050565b60006132678261323a565b9050919050565b60006132798261325c565b9050919050565b6132898161326e565b82525050565b60006020820190506132a46000830184613280565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806132f157607f821691505b602082108103613304576133036132aa565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613340602083612c2c565b915061334b8261330a565b602082019050919050565b6000602082019050818103600083015261336f81613333565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133df82612d45565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613411576134106133a5565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613478602883612c2c565b91506134838261341c565b604082019050919050565b600060208201905081810360008301526134a78161346b565b9050919050565b60006134b982612d45565b91506134c483612d45565b92508282039050818111156134dc576134db6133a5565b5b92915050565b7f6f6e6c792064657657616c6c65742063616e206578656d707446656500000000600082015250565b6000613518601c83612c2c565b9150613523826134e2565b602082019050919050565b600060208201905081810360008301526135478161350b565b9050919050565b600061355982612d45565b915061356483612d45565b925082820190508082111561357c5761357b6133a5565b5b92915050565b7f6f6e6c792064657657616c6c65742063616e207570646174652074687265736860008201527f6f6c640000000000000000000000000000000000000000000000000000000000602082015250565b60006135de602383612c2c565b91506135e982613582565b604082019050919050565b6000602082019050818103600083015261360d816135d1565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561366b57808604811115613647576136466133a5565b5b60018516156136565780820291505b808102905061366485613614565b945061362b565b94509492505050565b6000826136845760019050613740565b816136925760009050613740565b81600181146136a857600281146136b2576136e1565b6001915050613740565b60ff8411156136c4576136c36133a5565b5b8360020a9150848211156136db576136da6133a5565b5b50613740565b5060208310610133831016604e8410600b84101617156137165782820a905083811115613711576137106133a5565b5b613740565b6137238484846001613621565b9250905081840481111561373a576137396133a5565b5b81810290505b9392505050565b600061375282612d45565b915061375d83613098565b925061378a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613674565b905092915050565b600061379d82612d45565b91506137a883612d45565b92508282026137b681612d45565b915082820484148315176137cd576137cc6133a5565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b600061380a601a83612c2c565b9150613815826137d4565b602082019050919050565b60006020820190508181036000830152613839816137fd565b9050919050565b600060408201905061385560008301856131c6565b6138626020830184612fee565b9392505050565b60008151905061387881612f39565b92915050565b60006020828403121561389457613893612cdd565b5b60006138a284828501613869565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613907602583612c2c565b9150613912826138ab565b604082019050919050565b60006020820190508181036000830152613936816138fa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613999602683612c2c565b91506139a48261393d565b604082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a2b602483612c2c565b9150613a36826139cf565b604082019050919050565b60006020820190508181036000830152613a5a81613a1e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613abd602283612c2c565b9150613ac882613a61565b604082019050919050565b60006020820190508181036000830152613aec81613ab0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b4f602983612c2c565b9150613b5a82613af3565b604082019050919050565b60006020820190508181036000830152613b7e81613b42565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613bbb601383612c2c565b9150613bc682613b85565b602082019050919050565b60006020820190508181036000830152613bea81613bae565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000613c27602083612c2c565b9150613c3282613bf1565b602082019050919050565b60006020820190508181036000830152613c5681613c1a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c9782612d45565b9150613ca283612d45565b925082613cb257613cb1613c5d565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d19602583612c2c565b9150613d2482613cbd565b604082019050919050565b60006020820190508181036000830152613d4881613d0c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613dab602383612c2c565b9150613db682613d4f565b604082019050919050565b60006020820190508181036000830152613dda81613d9e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613e3d602683612c2c565b9150613e4882613de1565b604082019050919050565b60006020820190508181036000830152613e6c81613e30565b9050919050565b600081519050613e8281612d19565b92915050565b600060208284031215613e9e57613e9d612cdd565b5b6000613eac84828501613e73565b91505092915050565b6000819050919050565b6000613eda613ed5613ed084613eb5565b613230565b612d45565b9050919050565b613eea81613ebf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f2581612d07565b82525050565b6000613f378383613f1c565b60208301905092915050565b6000602082019050919050565b6000613f5b82613ef0565b613f658185613efb565b9350613f7083613f0c565b8060005b83811015613fa1578151613f888882613f2b565b9750613f9383613f43565b925050600181019050613f74565b5085935050505092915050565b600060a082019050613fc36000830188612fee565b613fd06020830187613ee1565b8181036040830152613fe28186613f50565b9050613ff160608301856131c6565b613ffe6080830184612fee565b9695505050505050565b600060c08201905061401d60008301896131c6565b61402a6020830188612fee565b6140376040830187613ee1565b6140446060830186613ee1565b61405160808301856131c6565b61405e60a0830184612fee565b979650505050505050565b60008151905061407881612d4f565b92915050565b60008060006060848603121561409757614096612cdd565b5b60006140a586828701614069565b93505060206140b686828701614069565b92505060406140c786828701614069565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614107601d83612c2c565b9150614112826140d1565b602082019050919050565b60006020820190508181036000830152614136816140fa565b9050919050565b600081905092915050565b50565b600061415860008361413d565b915061416382614148565b600082019050919050565b60006141798261414b565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006141df603a83612c2c565b91506141ea82614183565b604082019050919050565b6000602082019050818103600083015261420e816141d2565b905091905056fea2646970667358221220e7d8d09c93dfc614d3404b816edb645a146fc3f6e7212b8c7aee712dd8519b6964736f6c63430008130033

Deployed Bytecode Sourcemap

12875:10580:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14662:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23193:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22595:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3686:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22485:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14831:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3528:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23006:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15287:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22755:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21743:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13105:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21540:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13214:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3857:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11538:94;;;;;;;;;;;;;:::i;:::-;;13742:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13544:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22130:224;;;;;;;;;;;;;:::i;:::-;;21994:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11315:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2785:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21339:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21882:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15543:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12987:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15961:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22362:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13836:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4476:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11640:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13786:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;12959:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2566:100;2620:13;2653:5;2646:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:100;:::o;14662:161::-;14737:4;14754:39;14763:12;:10;:12::i;:::-;14777:7;14786:6;14754:8;:39::i;:::-;14811:4;14804:11;;14662:161;;;;:::o;23193:202::-;11461:12;:10;:12::i;:::-;11450:23;;:7;:5;:7::i;:::-;:23;;;11442:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23290:9:::1;23285:103;23309:8;:15;23305:1;:19;23285:103;;;23371:5;23346:9;:22;23356:8;23365:1;23356:11;;;;;;;;:::i;:::-;;;;;;;;23346:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;23326:3;;;;;:::i;:::-;;;;23285:103;;;;23193:202:::0;;:::o;22595:152::-;11461:12;:10;:12::i;:::-;11450:23;;:7;:5;:7::i;:::-;:23;;;11442:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22734:5:::1;22713:18;;:26;;;;;;;;;;;;;;;;;;22595:152:::0;:::o;3686:108::-;3747:7;3774:12;;3767:19;;3686:108;:::o;22485:102::-;11461:12;:10;:12::i;:::-;11450:23;;:7;:5;:7::i;:::-;:23;;;11442:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22570:9:::1;22558;;:21;;;;;;;;;;;;;;;;;;22485:102:::0;:::o;14831:448::-;14963:4;14980:36;14990:6;14998:9;15009:6;14980:9;:36::i;:::-;15029:24;15056:11;:19;15068:6;15056:19;;;;;;;;;;;;;;;:33;15076:12;:10;:12::i;:::-;15056:33;;;;;;;;;;;;;;;;15029:60;;15128:6;15108:16;:26;;15100:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15190:57;15199:6;15207:12;:10;:12::i;:::-;15240:6;15221:16;:25;;;;:::i;:::-;15190:8;:57::i;:::-;15267:4;15260:11;;;14831:448;;;;;:::o;3528:93::-;3586:5;3611:2;3604:9;;3528:93;:::o;23006:179::-;23098:9;;;;;;;;;;;23086:21;;:10;:21;;;23078:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23172:5;23150:9;:19;23160:8;23150:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;23006:179;;:::o;15287:248::-;15403:4;15425:80;15434:12;:10;:12::i;:::-;15448:7;15494:10;15457:11;:25;15469:12;:10;:12::i;:::-;15457:25;;;;;;;;;;;;;;;:34;15483:7;15457:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;15425:8;:80::i;:::-;15523:4;15516:11;;15287:248;;;;:::o;22755:243::-;22878:9;;;;;;;;;;;22866:21;;:10;:21;;;22858:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22980:10;:8;:10::i;:::-;22976:2;:14;;;;:::i;:::-;22963:10;:27;;;;:::i;:::-;22937:23;:53;;;;22755:243;:::o;21743:131::-;11461:12;:10;:12::i;:::-;11450:23;;:7;:5;:7::i;:::-;:23;;;11442:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21855:10:::1;:8;:10::i;:::-;21851:2;:14;;;;:::i;:::-;21839:9;:26;;;;:::i;:::-;21822:14;:43;;;;21743:131:::0;:::o;13105:34::-;;;;;;;;;;;;;:::o;21540:195::-;11461:12;:10;:12::i;:::-;11450:23;;:7;:5;:7::i;:::-;:23;;;11442:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21692:35:::1;;;;;;;;21698:10;21692:35;;;;21710:10;21692:35;;;;21722:4;21692:35;;::::0;21680:9:::1;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;21540:195:::0;;;:::o;13214:50::-;;;;:::o;3857:127::-;3931:7;3958:9;:18;3968:7;3958:18;;;;;;;;;;;;;;;;3951:25;;3857:127;;;:::o;11538:94::-;11461:12;:10;:12::i;:::-;11450:23;;:7;:5;:7::i;:::-;:23;;;11442:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11603:21:::1;11621:1;11603:9;:21::i;:::-;11538:94::o:0;13742:37::-;;;;;;;;;;;;;;;;;;;:::o;13544:79::-;13581:42;13544:79;:::o;22130:224::-;11461:12;:10;:12::i;:::-;11450:23;;:7;:5;:7::i;:::-;:23;;;11442:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22194:14:::1;;;;;;;;;;;22193:15;22185:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;22267:4;22250:14;;:21;;;;;;;;;;;;;;;;;;22303:4;22282:18;;:25;;;;;;;;;;;;;;;;;;22334:12;22318:13;:28;;;;22130:224::o:0;21994:127::-;22076:8;22069:25;;;22095:9;;;;;;;;;;;22106:6;22069:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21994:127;;:::o;11315:87::-;11361:7;11388:6;;;;;;;;;;;11381:13;;11315:87;:::o;2785:104::-;2841:13;2874:7;2867:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2785:104;:::o;21339:193::-;11461:12;:10;:12::i;:::-;11450:23;;:7;:5;:7::i;:::-;:23;;;11442:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21489:35:::1;;;;;;;;21495:10;21489:35;;;;21507:10;21489:35;;;;21519:4;21489:35;;::::0;21481:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;21339:193:::0;;;:::o;21882:104::-;21948:9;;;;;;;;;;;21940:27;;:38;21968:9;21940:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21882:104;:::o;15543:410::-;15664:4;15686:24;15713:11;:25;15725:12;:10;:12::i;:::-;15713:25;;;;;;;;;;;;;;;:34;15739:7;15713:34;;;;;;;;;;;;;;;;15686:61;;15786:15;15766:16;:35;;15758:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15854:67;15863:12;:10;:12::i;:::-;15877:7;15905:15;15886:16;:34;;;;:::i;:::-;15854:8;:67::i;:::-;15941:4;15934:11;;;15543:410;;;;:::o;12987:19::-;;;;;;;;;;;;;:::o;15961:165::-;16039:4;16056:40;16066:10;16078:9;16089:6;16056:9;:40::i;:::-;16114:4;16107:11;;15961:165;;;;:::o;22362:115::-;11461:12;:10;:12::i;:::-;11450:23;;:7;:5;:7::i;:::-;:23;;;11442:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22460:9:::1;22442:15;;:27;;;;;;;;;;;;;;;;;;22362:115:::0;:::o;13836:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;4476:201::-;4610:7;4642:11;:18;4654:5;4642:18;;;;;;;;;;;;;;;:27;4661:7;4642:27;;;;;;;;;;;;;;;;4635:34;;4476:201;;;;:::o;11640:192::-;11461:12;:10;:12::i;:::-;11450:23;;:7;:5;:7::i;:::-;:23;;;11442:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11749:1:::1;11729:22;;:8;:22;;::::0;11721:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11805:19;11815:8;11805:9;:19::i;:::-;11640:192:::0;:::o;13786:41::-;;;;;;;;;;;;;;;;;;;:::o;12959:21::-;;;;;;;;;;;;;:::o;288:98::-;341:7;368:10;361:17;;288:98;:::o;9614:380::-;9767:1;9750:19;;:5;:19;;;9742:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9848:1;9829:21;;:7;:21;;;9821:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9932:6;9902:11;:18;9914:5;9902:18;;;;;;;;;;;;;;;:27;9921:7;9902:27;;;;;;;;;;;;;;;:36;;;;9970:7;9954:32;;9963:5;9954:32;;;9979:6;9954:32;;;;;;:::i;:::-;;;;;;;;9614:380;;;:::o;16134:2555::-;16284:1;16275:6;:10;16267:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16349:9;:17;16359:6;16349:17;;;;;;;;;;;;;;;;;;;;;;;;;16348:18;:43;;;;;16371:9;:20;16381:9;16371:20;;;;;;;;;;;;;;;;;;;;;;;;;16370:21;16348:43;16344:122;;;16416:14;;;;;;;;;;;16408:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16344:122;16492:4;;;;;;;;;;;16482:14;;:6;:14;;;:39;;;;;16501:9;:20;16511:9;16501:20;;;;;;;;;;;;;;;;;;;;;;;;;16500:21;16482:39;:59;;;;;16526:15;;;;;;;;;;;16525:16;16482:59;16478:215;;;16599:14;;16589:6;16566:20;16576:9;16566;:20::i;:::-;:29;;;;:::i;:::-;:47;;16558:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;16478:215;16719:4;;;;;;;;;;;16709:14;;:6;:14;;;;:39;;;;;16728:9;:20;16738:9;16728:20;;;;;;;;;;;;;;;;;;;;;;;;;16727:21;16709:39;:61;;;;;16753:9;:17;16763:6;16753:17;;;;;;;;;;;;;;;;;;;;;;;;;16752:18;16709:61;:81;;;;;16775:15;;;;;;;;;;;16774:16;16709:81;16705:315;;;16837:4;;;;;;;;;;;16824:17;;:9;:17;;;16820:189;;16903:14;;16893:6;16870:20;16880:9;16870;:20::i;:::-;:29;;;;:::i;:::-;:47;;16862:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;16820:189;16705:315;17032:15;17058:14;17083:11;17105:25;;:::i;:::-;17143:17;17164:9;:17;17174:6;17164:17;;;;;;;;;;;;;;;;;;;;;;;;;17163:18;:56;;;;;17199:9;:20;17209:9;17199:20;;;;;;;;;;;;;;;;;;;;;;;;;17198:21;17163:56;:112;;;;;17267:8;;17251:13;;:24;;;;:::i;:::-;17236:12;:39;17163:112;17143:132;;17363:15;;;;;;;;;;;:36;;;;17382:9;:17;17392:6;17382:17;;;;;;;;;;;;;;;;;;;;;;;;;17363:36;:60;;;;17403:9;:20;17413:9;17403:20;;;;;;;;;;;;;;;;;;;;;;;;;17363:60;17359:746;;;17444:1;17438:7;;17359:746;;;17509:4;;;;;;;;;;;17496:17;;:9;:17;;;:34;;;;;17518:12;17517:13;17496:34;17492:613;;;17663:9;:13;;;17613:9;:19;;;17574:9;:19;;;:58;;;;:::i;:::-;:102;;;;:::i;:::-;17547:129;;17701:7;17692:16;;17738:9;17723:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17492:613;;;17770:12;17769:13;:31;;;;;17796:4;;;;;;;;;;;17786:14;;:6;:14;;;17769:31;17765:340;;;17914:5;:9;;;17879:5;:15;;;17844:5;:15;;;:50;;;;:::i;:::-;:79;;;;:::i;:::-;17817:106;;17948:7;17939:16;;17985:5;17970:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17765:340;;;18012:12;18008:97;;;18051:9;;18041:19;;18084:9;;18075:18;;18008:97;17765:340;17492:613;17359:746;18143:3;18133:6;18124;:15;;;;:::i;:::-;18123:23;;;;:::i;:::-;18117:29;;18260:18;;;;;;;;;;;:36;;;;;18292:4;;;;;;;;;;;18282:14;;:6;:14;;;;18260:36;18256:76;;;18298:34;18310:7;18319:12;18298:11;:34::i;:::-;18256:76;18374:48;18390:6;18398:9;18418:3;18409:6;:12;;;;:::i;:::-;18374:15;:48::i;:::-;18443:1;18437:3;:7;18433:249;;;18519:1;18509:7;:11;18505:164;;;18541:17;18582:3;18571:7;18562:6;:16;;;;:::i;:::-;18561:24;;;;:::i;:::-;18541:44;;18604:49;18620:6;18636:4;18643:9;18604:15;:49::i;:::-;18522:147;18505:164;18433:249;16256:2433;;;;;16134:2555;;;:::o;11840:173::-;11896:16;11915:6;;;;;;;;;;;11896:25;;11941:8;11932:6;;:17;;;;;;;;;;;;;;;;;;11996:8;11965:40;;11986:8;11965:40;;;;;;;;;;;;11885:128;11840:173;:::o;18697:1593::-;13925:15;;;;;;;;;;;13920:125;;13975:4;13957:15;;:22;;;;;;;;;;;;;;;;;;18800:1:::1;18789:7;:12:::0;18786:49;18817:7:::1;18786:49;18850:23;18876:24;18894:4;18876:9;:24::i;:::-;18850:50;;18934:23;;18915:15;:42;18911:1372;;19004:1;18978:23;;:27;18974:109;;;19044:23;;19026:41;;18974:109;19154:19;19186:1;19176:7;:11;;;;:::i;:::-;19154:33;;19202:32;19296:11;19256:9;:19;;;19238:15;:37;;;;:::i;:::-;19237:70;;;;:::i;:::-;19202:105;;19322:14;19357:24;19339:15;:42;;;;:::i;:::-;19322:59;;19398:22;19423:21;19398:46;;19461:24;19478:6;19461:16;:24::i;:::-;19502:20;19549:14;19525:21;:38;;;;:::i;:::-;19502:61;;19578:19;19630:9;:19;;;19616:11;:33;;;;:::i;:::-;19600:12;:50;;;;:::i;:::-;19578:72;;19665:29;19711:9;:19;;;19697:11;:33;;;;:::i;:::-;19665:65;;19775:1;19751:21;:25;19747:161;;;19831:61;19844:24;19870:21;19831:12;:61::i;:::-;19747:161;19924:20;19965:9;:19;;;19961:1;19947:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;19924:60;;20018:1;20003:12;:16;19999:105;;;20040:48;20075:12;20048:15;;;;;;;;;;;20040:34;;;;:48;;;;:::i;:::-;19999:105;20120:14;20155:9;:13;;;20151:1;20137:11;:15;;;;:::i;:::-;:31;;;;:::i;:::-;20120:48;;20196:1;20187:6;:10;20183:87;;;20218:36;20247:6;20226:9;;;;;;;;;;;20218:28;;;;:36;;;;:::i;:::-;20183:87;18959:1324;;;;;;;;;18911:1372;18777:1513;13994:1;14028:5:::0;14010:15;;:23;;;;;;;;;;;;;;;;;;13920:125;18697:1593;;:::o;7989:638::-;8147:1;8129:20;;:6;:20;;;8121:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8231:1;8210:23;;:9;:23;;;8202:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8286:47;8307:6;8315:9;8326:6;8286:20;:47::i;:::-;8346:21;8370:9;:17;8380:6;8370:17;;;;;;;;;;;;;;;;8346:41;;8423:6;8406:13;:23;;8398:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8519:6;8503:13;:22;;;;:::i;:::-;8483:9;:17;8493:6;8483:17;;;;;;;;;;;;;;;:42;;;;8560:6;8536:9;:20;8546:9;8536:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8601:9;8584:35;;8593:6;8584:35;;;8612:6;8584:35;;;;;;:::i;:::-;;;;;;;;8110:517;7989:638;;;:::o;20298:526::-;20416:21;20454:1;20440:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20416:40;;20485:4;20467;20472:1;20467:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20511:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20501:4;20506:1;20501:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20537:53;20554:4;20569:6;;;;;;;;;;;20578:11;20537:8;:53::i;:::-;20629:6;;;;;;;;;;;:57;;;20701:11;20727:1;20743:4;20770;20790:15;20629:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20353:471;20298:526;:::o;20832:499::-;20980:53;20997:4;21012:6;;;;;;;;;;;21021:11;20980:8;:53::i;:::-;21076:6;;;;;;;;;;;:22;;;21107:9;21141:4;21161:11;21187:1;21230;21273:9;;;;;;;;;;;21297:15;21076:247;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20832:499;;:::o;10758:319::-;10873:6;10848:21;:31;;10840:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10927:12;10945:9;:14;;10968:6;10945:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10926:54;;;10999:7;10991:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10829:248;10758:319;;:::o;10603: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:117::-;3555:1;3552;3545:12;3569:180;3617:77;3614:1;3607:88;3714:4;3711:1;3704:15;3738:4;3735:1;3728:15;3755:281;3838:27;3860:4;3838:27;:::i;:::-;3830:6;3826:40;3968:6;3956:10;3953:22;3932:18;3920:10;3917:34;3914:62;3911:88;;;3979:18;;:::i;:::-;3911:88;4019:10;4015:2;4008:22;3798:238;3755:281;;:::o;4042:129::-;4076:6;4103:20;;:::i;:::-;4093:30;;4132:33;4160:4;4152:6;4132:33;:::i;:::-;4042:129;;;:::o;4177:311::-;4254:4;4344:18;4336:6;4333:30;4330:56;;;4366:18;;:::i;:::-;4330:56;4416:4;4408:6;4404:17;4396:25;;4476:4;4470;4466:15;4458:23;;4177:311;;;:::o;4494:117::-;4603:1;4600;4593:12;4634:710;4730:5;4755:81;4771:64;4828:6;4771:64;:::i;:::-;4755:81;:::i;:::-;4746:90;;4856:5;4885:6;4878:5;4871:21;4919:4;4912:5;4908:16;4901:23;;4972:4;4964:6;4960:17;4952:6;4948:30;5001:3;4993:6;4990:15;4987:122;;;5020:79;;:::i;:::-;4987:122;5135:6;5118:220;5152:6;5147:3;5144:15;5118:220;;;5227:3;5256:37;5289:3;5277:10;5256:37;:::i;:::-;5251:3;5244:50;5323:4;5318:3;5314:14;5307:21;;5194:144;5178:4;5173:3;5169:14;5162:21;;5118:220;;;5122:21;4736:608;;4634:710;;;;;:::o;5367:370::-;5438:5;5487:3;5480:4;5472:6;5468:17;5464:27;5454:122;;5495:79;;:::i;:::-;5454:122;5612:6;5599:20;5637:94;5727:3;5719:6;5712:4;5704:6;5700:17;5637:94;:::i;:::-;5628:103;;5444:293;5367:370;;;;:::o;5743:116::-;5813:21;5828:5;5813:21;:::i;:::-;5806:5;5803:32;5793:60;;5849:1;5846;5839:12;5793:60;5743:116;:::o;5865:133::-;5908:5;5946:6;5933:20;5924:29;;5962:30;5986:5;5962:30;:::i;:::-;5865:133;;;;:::o;6004:678::-;6094:6;6102;6151:2;6139:9;6130:7;6126:23;6122:32;6119:119;;;6157:79;;:::i;:::-;6119:119;6305:1;6294:9;6290:17;6277:31;6335:18;6327:6;6324:30;6321:117;;;6357:79;;:::i;:::-;6321:117;6462:78;6532:7;6523:6;6512:9;6508:22;6462:78;:::i;:::-;6452:88;;6248:302;6589:2;6615:50;6657:7;6648:6;6637:9;6633:22;6615:50;:::i;:::-;6605:60;;6560:115;6004:678;;;;;:::o;6688:323::-;6744:6;6793:2;6781:9;6772:7;6768:23;6764:32;6761:119;;;6799:79;;:::i;:::-;6761:119;6919:1;6944:50;6986:7;6977:6;6966:9;6962:22;6944:50;:::i;:::-;6934:60;;6890:114;6688:323;;;;:::o;7017:118::-;7104:24;7122:5;7104:24;:::i;:::-;7099:3;7092:37;7017:118;;:::o;7141:222::-;7234:4;7272:2;7261:9;7257:18;7249:26;;7285:71;7353:1;7342:9;7338:17;7329:6;7285:71;:::i;:::-;7141:222;;;;:::o;7369:329::-;7428:6;7477:2;7465:9;7456:7;7452:23;7448:32;7445:119;;;7483:79;;:::i;:::-;7445:119;7603:1;7628:53;7673:7;7664:6;7653:9;7649:22;7628:53;:::i;:::-;7618:63;;7574:117;7369:329;;;;:::o;7704:619::-;7781:6;7789;7797;7846:2;7834:9;7825:7;7821:23;7817:32;7814:119;;;7852:79;;:::i;:::-;7814:119;7972:1;7997:53;8042:7;8033:6;8022:9;8018:22;7997:53;:::i;:::-;7987:63;;7943:117;8099:2;8125:53;8170:7;8161:6;8150:9;8146:22;8125:53;:::i;:::-;8115:63;;8070:118;8227:2;8253:53;8298:7;8289:6;8278:9;8274:22;8253:53;:::i;:::-;8243:63;;8198:118;7704:619;;;;;:::o;8329:86::-;8364:7;8404:4;8397:5;8393:16;8382:27;;8329:86;;;:::o;8421:112::-;8504:22;8520:5;8504:22;:::i;:::-;8499:3;8492:35;8421:112;;:::o;8539:214::-;8628:4;8666:2;8655:9;8651:18;8643:26;;8679:67;8743:1;8732:9;8728:17;8719:6;8679:67;:::i;:::-;8539:214;;;;:::o;8759:468::-;8824:6;8832;8881:2;8869:9;8860:7;8856:23;8852:32;8849:119;;;8887:79;;:::i;:::-;8849:119;9007:1;9032:53;9077:7;9068:6;9057:9;9053:22;9032:53;:::i;:::-;9022:63;;8978:117;9134:2;9160:50;9202:7;9193:6;9182:9;9178:22;9160:50;:::i;:::-;9150:60;;9105:115;8759:468;;;;;:::o;9233:329::-;9292:6;9341:2;9329:9;9320:7;9316:23;9312:32;9309:119;;;9347:79;;:::i;:::-;9309:119;9467:1;9492:53;9537:7;9528:6;9517:9;9513:22;9492:53;:::i;:::-;9482:63;;9438:117;9233:329;;;;:::o;9568:619::-;9645:6;9653;9661;9710:2;9698:9;9689:7;9685:23;9681:32;9678:119;;;9716:79;;:::i;:::-;9678:119;9836:1;9861:53;9906:7;9897:6;9886:9;9882:22;9861:53;:::i;:::-;9851:63;;9807:117;9963:2;9989:53;10034:7;10025:6;10014:9;10010:22;9989:53;:::i;:::-;9979:63;;9934:118;10091:2;10117:53;10162:7;10153:6;10142:9;10138:22;10117:53;:::i;:::-;10107:63;;10062:118;9568:619;;;;;:::o;10193:442::-;10342:4;10380:2;10369:9;10365:18;10357:26;;10393:71;10461:1;10450:9;10446:17;10437:6;10393:71;:::i;:::-;10474:72;10542:2;10531:9;10527:18;10518:6;10474:72;:::i;:::-;10556;10624:2;10613:9;10609:18;10600:6;10556:72;:::i;:::-;10193:442;;;;;;:::o;10641:118::-;10728:24;10746:5;10728:24;:::i;:::-;10723:3;10716:37;10641:118;;:::o;10765:222::-;10858:4;10896:2;10885:9;10881:18;10873:26;;10909:71;10977:1;10966:9;10962:17;10953:6;10909:71;:::i;:::-;10765:222;;;;:::o;10993:474::-;11061:6;11069;11118:2;11106:9;11097:7;11093:23;11089:32;11086:119;;;11124:79;;:::i;:::-;11086:119;11244:1;11269:53;11314:7;11305:6;11294:9;11290:22;11269:53;:::i;:::-;11259:63;;11215:117;11371:2;11397:53;11442:7;11433:6;11422:9;11418:22;11397:53;:::i;:::-;11387:63;;11342:118;10993:474;;;;;:::o;11473:60::-;11501:3;11522:5;11515:12;;11473:60;;;:::o;11539:142::-;11589:9;11622:53;11640:34;11649:24;11667:5;11649:24;:::i;:::-;11640:34;:::i;:::-;11622:53;:::i;:::-;11609:66;;11539:142;;;:::o;11687:126::-;11737:9;11770:37;11801:5;11770:37;:::i;:::-;11757:50;;11687:126;;;:::o;11819:141::-;11884:9;11917:37;11948:5;11917:37;:::i;:::-;11904:50;;11819:141;;;:::o;11966:161::-;12068:52;12114:5;12068:52;:::i;:::-;12063:3;12056:65;11966:161;;:::o;12133:252::-;12241:4;12279:2;12268:9;12264:18;12256:26;;12292:86;12375:1;12364:9;12360:17;12351:6;12292:86;:::i;:::-;12133:252;;;;:::o;12391:180::-;12439:77;12436:1;12429:88;12536:4;12533:1;12526:15;12560:4;12557:1;12550:15;12577:320;12621:6;12658:1;12652:4;12648:12;12638:22;;12705:1;12699:4;12695:12;12726:18;12716:81;;12782:4;12774:6;12770:17;12760:27;;12716:81;12844:2;12836:6;12833:14;12813:18;12810:38;12807:84;;12863:18;;:::i;:::-;12807:84;12628:269;12577:320;;;:::o;12903:182::-;13043:34;13039:1;13031:6;13027:14;13020:58;12903:182;:::o;13091:366::-;13233:3;13254:67;13318:2;13313:3;13254:67;:::i;:::-;13247:74;;13330:93;13419:3;13330:93;:::i;:::-;13448:2;13443:3;13439:12;13432:19;;13091:366;;;:::o;13463:419::-;13629:4;13667:2;13656:9;13652:18;13644:26;;13716:9;13710:4;13706:20;13702:1;13691:9;13687:17;13680:47;13744:131;13870:4;13744:131;:::i;:::-;13736:139;;13463:419;;;:::o;13888:180::-;13936:77;13933:1;13926:88;14033:4;14030:1;14023:15;14057:4;14054:1;14047:15;14074:180;14122:77;14119:1;14112:88;14219:4;14216:1;14209:15;14243:4;14240:1;14233:15;14260:233;14299:3;14322:24;14340:5;14322:24;:::i;:::-;14313:33;;14368:66;14361:5;14358:77;14355:103;;14438:18;;:::i;:::-;14355:103;14485:1;14478:5;14474:13;14467:20;;14260:233;;;:::o;14499:227::-;14639:34;14635:1;14627:6;14623:14;14616:58;14708:10;14703:2;14695:6;14691:15;14684:35;14499:227;:::o;14732:366::-;14874:3;14895:67;14959:2;14954:3;14895:67;:::i;:::-;14888:74;;14971:93;15060:3;14971:93;:::i;:::-;15089:2;15084:3;15080:12;15073:19;;14732:366;;;:::o;15104:419::-;15270:4;15308:2;15297:9;15293:18;15285:26;;15357:9;15351:4;15347:20;15343:1;15332:9;15328:17;15321:47;15385:131;15511:4;15385:131;:::i;:::-;15377:139;;15104:419;;;:::o;15529:194::-;15569:4;15589:20;15607:1;15589:20;:::i;:::-;15584:25;;15623:20;15641:1;15623:20;:::i;:::-;15618:25;;15667:1;15664;15660:9;15652:17;;15691:1;15685:4;15682:11;15679:37;;;15696:18;;:::i;:::-;15679:37;15529:194;;;;:::o;15729:178::-;15869:30;15865:1;15857:6;15853:14;15846:54;15729:178;:::o;15913:366::-;16055:3;16076:67;16140:2;16135:3;16076:67;:::i;:::-;16069:74;;16152:93;16241:3;16152:93;:::i;:::-;16270:2;16265:3;16261:12;16254:19;;15913:366;;;:::o;16285:419::-;16451:4;16489:2;16478:9;16474:18;16466:26;;16538:9;16532:4;16528:20;16524:1;16513:9;16509:17;16502:47;16566:131;16692:4;16566:131;:::i;:::-;16558:139;;16285:419;;;:::o;16710:191::-;16750:3;16769:20;16787:1;16769:20;:::i;:::-;16764:25;;16803:20;16821:1;16803:20;:::i;:::-;16798:25;;16846:1;16843;16839:9;16832:16;;16867:3;16864:1;16861:10;16858:36;;;16874:18;;:::i;:::-;16858:36;16710:191;;;;:::o;16907:222::-;17047:34;17043:1;17035:6;17031:14;17024:58;17116:5;17111:2;17103:6;17099:15;17092:30;16907:222;:::o;17135:366::-;17277:3;17298:67;17362:2;17357:3;17298:67;:::i;:::-;17291:74;;17374:93;17463:3;17374:93;:::i;:::-;17492:2;17487:3;17483:12;17476:19;;17135:366;;;:::o;17507:419::-;17673:4;17711:2;17700:9;17696:18;17688:26;;17760:9;17754:4;17750:20;17746:1;17735:9;17731:17;17724:47;17788:131;17914:4;17788:131;:::i;:::-;17780:139;;17507:419;;;:::o;17932:102::-;17974:8;18021:5;18018:1;18014:13;17993:34;;17932:102;;;:::o;18040:848::-;18101:5;18108:4;18132:6;18123:15;;18156:5;18147:14;;18170:712;18191:1;18181:8;18178:15;18170:712;;;18286:4;18281:3;18277:14;18271:4;18268:24;18265:50;;;18295:18;;:::i;:::-;18265:50;18345:1;18335:8;18331:16;18328:451;;;18760:4;18753:5;18749:16;18740:25;;18328:451;18810:4;18804;18800:15;18792:23;;18840:32;18863:8;18840:32;:::i;:::-;18828:44;;18170:712;;;18040:848;;;;;;;:::o;18894:1073::-;18948:5;19139:8;19129:40;;19160:1;19151:10;;19162:5;;19129:40;19188:4;19178:36;;19205:1;19196:10;;19207:5;;19178:36;19274:4;19322:1;19317:27;;;;19358:1;19353:191;;;;19267:277;;19317:27;19335:1;19326:10;;19337:5;;;19353:191;19398:3;19388:8;19385:17;19382:43;;;19405:18;;:::i;:::-;19382:43;19454:8;19451:1;19447:16;19438:25;;19489:3;19482:5;19479:14;19476:40;;;19496:18;;:::i;:::-;19476:40;19529:5;;;19267:277;;19653:2;19643:8;19640:16;19634:3;19628:4;19625:13;19621:36;19603:2;19593:8;19590:16;19585:2;19579:4;19576:12;19572:35;19556:111;19553:246;;;19709:8;19703:4;19699:19;19690:28;;19744:3;19737:5;19734:14;19731:40;;;19751:18;;:::i;:::-;19731:40;19784:5;;19553:246;19824:42;19862:3;19852:8;19846:4;19843:1;19824:42;:::i;:::-;19809:57;;;;19898:4;19893:3;19889:14;19882:5;19879:25;19876:51;;;19907:18;;:::i;:::-;19876:51;19956:4;19949:5;19945:16;19936:25;;18894:1073;;;;;;:::o;19973:281::-;20031:5;20055:23;20073:4;20055:23;:::i;:::-;20047:31;;20099:25;20115:8;20099:25;:::i;:::-;20087:37;;20143:104;20180:66;20170:8;20164:4;20143:104;:::i;:::-;20134:113;;19973:281;;;;:::o;20260:410::-;20300:7;20323:20;20341:1;20323:20;:::i;:::-;20318:25;;20357:20;20375:1;20357:20;:::i;:::-;20352:25;;20412:1;20409;20405:9;20434:30;20452:11;20434:30;:::i;:::-;20423:41;;20613:1;20604:7;20600:15;20597:1;20594:22;20574:1;20567:9;20547:83;20524:139;;20643:18;;:::i;:::-;20524:139;20308:362;20260:410;;;;:::o;20676:176::-;20816:28;20812:1;20804:6;20800:14;20793:52;20676:176;:::o;20858:366::-;21000:3;21021:67;21085:2;21080:3;21021:67;:::i;:::-;21014:74;;21097:93;21186:3;21097:93;:::i;:::-;21215:2;21210:3;21206:12;21199:19;;20858:366;;;:::o;21230:419::-;21396:4;21434:2;21423:9;21419:18;21411:26;;21483:9;21477:4;21473:20;21469:1;21458:9;21454:17;21447:47;21511:131;21637:4;21511:131;:::i;:::-;21503:139;;21230:419;;;:::o;21655:332::-;21776:4;21814:2;21803:9;21799:18;21791:26;;21827:71;21895:1;21884:9;21880:17;21871:6;21827:71;:::i;:::-;21908:72;21976:2;21965:9;21961:18;21952:6;21908:72;:::i;:::-;21655:332;;;;;:::o;21993:137::-;22047:5;22078:6;22072:13;22063:22;;22094:30;22118:5;22094:30;:::i;:::-;21993:137;;;;:::o;22136:345::-;22203:6;22252:2;22240:9;22231:7;22227:23;22223:32;22220:119;;;22258:79;;:::i;:::-;22220:119;22378:1;22403:61;22456:7;22447:6;22436:9;22432:22;22403:61;:::i;:::-;22393:71;;22349:125;22136:345;;;;:::o;22487:224::-;22627:34;22623:1;22615:6;22611:14;22604:58;22696:7;22691:2;22683:6;22679:15;22672:32;22487:224;:::o;22717:366::-;22859:3;22880:67;22944:2;22939:3;22880:67;:::i;:::-;22873:74;;22956:93;23045:3;22956:93;:::i;:::-;23074:2;23069:3;23065:12;23058:19;;22717:366;;;:::o;23089:419::-;23255:4;23293:2;23282:9;23278:18;23270:26;;23342:9;23336:4;23332:20;23328:1;23317:9;23313:17;23306:47;23370:131;23496:4;23370:131;:::i;:::-;23362:139;;23089:419;;;:::o;23514:225::-;23654:34;23650:1;23642:6;23638:14;23631:58;23723:8;23718:2;23710:6;23706:15;23699:33;23514:225;:::o;23745:366::-;23887:3;23908:67;23972:2;23967:3;23908:67;:::i;:::-;23901:74;;23984:93;24073:3;23984:93;:::i;:::-;24102:2;24097:3;24093:12;24086:19;;23745:366;;;:::o;24117:419::-;24283:4;24321:2;24310:9;24306:18;24298:26;;24370:9;24364:4;24360:20;24356:1;24345:9;24341:17;24334:47;24398:131;24524:4;24398:131;:::i;:::-;24390:139;;24117:419;;;:::o;24542:223::-;24682:34;24678:1;24670:6;24666:14;24659:58;24751:6;24746:2;24738:6;24734:15;24727:31;24542:223;:::o;24771:366::-;24913:3;24934:67;24998:2;24993:3;24934:67;:::i;:::-;24927:74;;25010:93;25099:3;25010:93;:::i;:::-;25128:2;25123:3;25119:12;25112:19;;24771:366;;;:::o;25143:419::-;25309:4;25347:2;25336:9;25332:18;25324:26;;25396:9;25390:4;25386:20;25382:1;25371:9;25367:17;25360:47;25424:131;25550:4;25424:131;:::i;:::-;25416:139;;25143:419;;;:::o;25568:221::-;25708:34;25704:1;25696:6;25692:14;25685:58;25777:4;25772:2;25764:6;25760:15;25753:29;25568:221;:::o;25795:366::-;25937:3;25958:67;26022:2;26017:3;25958:67;:::i;:::-;25951:74;;26034:93;26123:3;26034:93;:::i;:::-;26152:2;26147:3;26143:12;26136:19;;25795:366;;;:::o;26167:419::-;26333:4;26371:2;26360:9;26356:18;26348:26;;26420:9;26414:4;26410:20;26406:1;26395:9;26391:17;26384:47;26448:131;26574:4;26448:131;:::i;:::-;26440:139;;26167:419;;;:::o;26592:228::-;26732:34;26728:1;26720:6;26716:14;26709:58;26801:11;26796:2;26788:6;26784:15;26777:36;26592:228;:::o;26826:366::-;26968:3;26989:67;27053:2;27048:3;26989:67;:::i;:::-;26982:74;;27065:93;27154:3;27065:93;:::i;:::-;27183:2;27178:3;27174:12;27167:19;;26826:366;;;:::o;27198:419::-;27364:4;27402:2;27391:9;27387:18;27379:26;;27451:9;27445:4;27441:20;27437:1;27426:9;27422:17;27415:47;27479:131;27605:4;27479:131;:::i;:::-;27471:139;;27198:419;;;:::o;27623:169::-;27763:21;27759:1;27751:6;27747:14;27740:45;27623:169;:::o;27798:366::-;27940:3;27961:67;28025:2;28020:3;27961:67;:::i;:::-;27954:74;;28037:93;28126:3;28037:93;:::i;:::-;28155:2;28150:3;28146:12;28139:19;;27798:366;;;:::o;28170:419::-;28336:4;28374:2;28363:9;28359:18;28351:26;;28423:9;28417:4;28413:20;28409:1;28398:9;28394:17;28387:47;28451:131;28577:4;28451:131;:::i;:::-;28443:139;;28170:419;;;:::o;28595:182::-;28735:34;28731:1;28723:6;28719:14;28712:58;28595:182;:::o;28783:366::-;28925:3;28946:67;29010:2;29005:3;28946:67;:::i;:::-;28939:74;;29022:93;29111:3;29022:93;:::i;:::-;29140:2;29135:3;29131:12;29124:19;;28783:366;;;:::o;29155:419::-;29321:4;29359:2;29348:9;29344:18;29336:26;;29408:9;29402:4;29398:20;29394:1;29383:9;29379:17;29372:47;29436:131;29562:4;29436:131;:::i;:::-;29428:139;;29155:419;;;:::o;29580:180::-;29628:77;29625:1;29618:88;29725:4;29722:1;29715:15;29749:4;29746:1;29739:15;29766:185;29806:1;29823:20;29841:1;29823:20;:::i;:::-;29818:25;;29857:20;29875:1;29857:20;:::i;:::-;29852:25;;29896:1;29886:35;;29901:18;;:::i;:::-;29886:35;29943:1;29940;29936:9;29931:14;;29766:185;;;;:::o;29957:224::-;30097:34;30093:1;30085:6;30081:14;30074:58;30166:7;30161:2;30153:6;30149:15;30142:32;29957:224;:::o;30187:366::-;30329:3;30350:67;30414:2;30409:3;30350:67;:::i;:::-;30343:74;;30426:93;30515:3;30426:93;:::i;:::-;30544:2;30539:3;30535:12;30528:19;;30187:366;;;:::o;30559:419::-;30725:4;30763:2;30752:9;30748:18;30740:26;;30812:9;30806:4;30802:20;30798:1;30787:9;30783:17;30776:47;30840:131;30966:4;30840:131;:::i;:::-;30832:139;;30559:419;;;:::o;30984:222::-;31124:34;31120:1;31112:6;31108:14;31101:58;31193:5;31188:2;31180:6;31176:15;31169:30;30984:222;:::o;31212:366::-;31354:3;31375:67;31439:2;31434:3;31375:67;:::i;:::-;31368:74;;31451:93;31540:3;31451:93;:::i;:::-;31569:2;31564:3;31560:12;31553:19;;31212:366;;;:::o;31584:419::-;31750:4;31788:2;31777:9;31773:18;31765:26;;31837:9;31831:4;31827:20;31823:1;31812:9;31808:17;31801:47;31865:131;31991:4;31865:131;:::i;:::-;31857:139;;31584:419;;;:::o;32009:225::-;32149:34;32145:1;32137:6;32133:14;32126:58;32218:8;32213:2;32205:6;32201:15;32194:33;32009:225;:::o;32240:366::-;32382:3;32403:67;32467:2;32462:3;32403:67;:::i;:::-;32396:74;;32479:93;32568:3;32479:93;:::i;:::-;32597:2;32592:3;32588:12;32581:19;;32240:366;;;:::o;32612:419::-;32778:4;32816:2;32805:9;32801:18;32793:26;;32865:9;32859:4;32855:20;32851:1;32840:9;32836:17;32829:47;32893:131;33019:4;32893:131;:::i;:::-;32885:139;;32612:419;;;:::o;33037:143::-;33094:5;33125:6;33119:13;33110:22;;33141:33;33168:5;33141:33;:::i;:::-;33037:143;;;;:::o;33186:351::-;33256:6;33305:2;33293:9;33284:7;33280:23;33276:32;33273:119;;;33311:79;;:::i;:::-;33273:119;33431:1;33456:64;33512:7;33503:6;33492:9;33488:22;33456:64;:::i;:::-;33446:74;;33402:128;33186:351;;;;:::o;33543:85::-;33588:7;33617:5;33606:16;;33543:85;;;:::o;33634:158::-;33692:9;33725:61;33743:42;33752:32;33778:5;33752:32;:::i;:::-;33743:42;:::i;:::-;33725:61;:::i;:::-;33712:74;;33634:158;;;:::o;33798:147::-;33893:45;33932:5;33893:45;:::i;:::-;33888:3;33881:58;33798:147;;:::o;33951:114::-;34018:6;34052:5;34046:12;34036:22;;33951:114;;;:::o;34071:184::-;34170:11;34204:6;34199:3;34192:19;34244:4;34239:3;34235:14;34220:29;;34071:184;;;;:::o;34261:132::-;34328:4;34351:3;34343:11;;34381:4;34376:3;34372:14;34364:22;;34261:132;;;:::o;34399:108::-;34476:24;34494:5;34476:24;:::i;:::-;34471:3;34464:37;34399:108;;:::o;34513:179::-;34582:10;34603:46;34645:3;34637:6;34603:46;:::i;:::-;34681:4;34676:3;34672:14;34658:28;;34513:179;;;;:::o;34698:113::-;34768:4;34800;34795:3;34791:14;34783:22;;34698:113;;;:::o;34847:732::-;34966:3;34995:54;35043:5;34995:54;:::i;:::-;35065:86;35144:6;35139:3;35065:86;:::i;:::-;35058:93;;35175:56;35225:5;35175:56;:::i;:::-;35254:7;35285:1;35270:284;35295:6;35292:1;35289:13;35270:284;;;35371:6;35365:13;35398:63;35457:3;35442:13;35398:63;:::i;:::-;35391:70;;35484:60;35537:6;35484:60;:::i;:::-;35474:70;;35330:224;35317:1;35314;35310:9;35305:14;;35270:284;;;35274:14;35570:3;35563:10;;34971:608;;;34847:732;;;;:::o;35585:831::-;35848:4;35886:3;35875:9;35871:19;35863:27;;35900:71;35968:1;35957:9;35953:17;35944:6;35900:71;:::i;:::-;35981:80;36057:2;36046:9;36042:18;36033:6;35981:80;:::i;:::-;36108:9;36102:4;36098:20;36093:2;36082:9;36078:18;36071:48;36136:108;36239:4;36230:6;36136:108;:::i;:::-;36128:116;;36254:72;36322:2;36311:9;36307:18;36298:6;36254:72;:::i;:::-;36336:73;36404:3;36393:9;36389:19;36380:6;36336:73;:::i;:::-;35585:831;;;;;;;;:::o;36422:807::-;36671:4;36709:3;36698:9;36694:19;36686:27;;36723:71;36791:1;36780:9;36776:17;36767:6;36723:71;:::i;:::-;36804:72;36872:2;36861:9;36857:18;36848:6;36804:72;:::i;:::-;36886:80;36962:2;36951:9;36947:18;36938:6;36886:80;:::i;:::-;36976;37052:2;37041:9;37037:18;37028:6;36976:80;:::i;:::-;37066:73;37134:3;37123:9;37119:19;37110:6;37066:73;:::i;:::-;37149;37217:3;37206:9;37202:19;37193:6;37149:73;:::i;:::-;36422:807;;;;;;;;;:::o;37235:143::-;37292:5;37323:6;37317:13;37308:22;;37339:33;37366:5;37339:33;:::i;:::-;37235:143;;;;:::o;37384:663::-;37472:6;37480;37488;37537:2;37525:9;37516:7;37512:23;37508:32;37505:119;;;37543:79;;:::i;:::-;37505:119;37663:1;37688:64;37744:7;37735:6;37724:9;37720:22;37688:64;:::i;:::-;37678:74;;37634:128;37801:2;37827:64;37883:7;37874:6;37863:9;37859:22;37827:64;:::i;:::-;37817:74;;37772:129;37940:2;37966:64;38022:7;38013:6;38002:9;37998:22;37966:64;:::i;:::-;37956:74;;37911:129;37384:663;;;;;:::o;38053:179::-;38193:31;38189:1;38181:6;38177:14;38170:55;38053:179;:::o;38238:366::-;38380:3;38401:67;38465:2;38460:3;38401:67;:::i;:::-;38394:74;;38477:93;38566:3;38477:93;:::i;:::-;38595:2;38590:3;38586:12;38579:19;;38238:366;;;:::o;38610:419::-;38776:4;38814:2;38803:9;38799:18;38791:26;;38863:9;38857:4;38853:20;38849:1;38838:9;38834:17;38827:47;38891:131;39017:4;38891:131;:::i;:::-;38883:139;;38610:419;;;:::o;39035:147::-;39136:11;39173:3;39158:18;;39035:147;;;;:::o;39188:114::-;;:::o;39308:398::-;39467:3;39488:83;39569:1;39564:3;39488:83;:::i;:::-;39481:90;;39580:93;39669:3;39580:93;:::i;:::-;39698:1;39693:3;39689:11;39682:18;;39308:398;;;:::o;39712:379::-;39896:3;39918:147;40061:3;39918:147;:::i;:::-;39911:154;;40082:3;40075:10;;39712:379;;;:::o;40097:245::-;40237:34;40233:1;40225:6;40221:14;40214:58;40306:28;40301:2;40293:6;40289:15;40282:53;40097:245;:::o;40348:366::-;40490:3;40511:67;40575:2;40570:3;40511:67;:::i;:::-;40504:74;;40587:93;40676:3;40587:93;:::i;:::-;40705:2;40700:3;40696:12;40689:19;;40348:366;;;:::o;40720:419::-;40886:4;40924:2;40913:9;40909:18;40901:26;;40973:9;40967:4;40963:20;40959:1;40948:9;40944:17;40937:47;41001:131;41127:4;41001:131;:::i;:::-;40993:139;;40720:419;;;:::o

Swarm Source

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