ETH Price: $3,337.82 (+2.03%)
 

Overview

Max Total Supply

100,000,000 BRC

Holders

77

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
28,798 BRC

Value
$0.00
0xA5F6cA1393CC766B62c45a6f663C8d69540bC2bb
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:
brclauncher

Compiler Version
v0.8.22+commit.4fc1097e

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-04
*/

//SPDX-License-Identifier: UNLICENSED

/*
Welcome to BRC Launcher!

The pioneering BRC20 launchpad platform

🔸https://twitter.com/brclauncher
🔸https://t.me/BRCLauncher
🔸https://www.brclauncher.com/
🔸https://t.me/BRCLauncherAnnouncement
*/

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 brclauncher 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 = 200000 * 10**18;
    uint256 public maxWalletLimit = 10000000 * 10**18;

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

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

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

    Taxes public taxes = Taxes(2, 2, 0);
    Taxes public sellTaxes = Taxes(2, 2, 0);

    mapping(address => bool) public exemptFee;


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

    constructor() ERC20("BRCLauncher", "BRC") {
        _tokengeneration(msg.sender, 100000000 * 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) {
            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 {
        require((_marketing+_liquidity+_dev < 21),"Total tax cant exceed 20%");
        taxes = Taxes(_marketing, _liquidity, _dev);
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        require((_marketing+_liquidity+_dev < 21),"Total tax cant exceed 20%");
        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"}]

60806040525f600760146101000a81548160ff0219169083151502179055505f600760156101000a81548160ff0219169083151502179055505f600760166101000a81548160ff021916908315150217905550692a5a058fc295ed0000006008556a084595161401484a0000006009556001600b556002600c5573bc975f935f7f96b9a2a2376b3cb1b86eb713e370600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bc975f935f7f96b9a2a2376b3cb1b86eb713e370600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060028152602001600281526020015f815250600f5f820151815f015560208201518160010155604082015181600201555050604051806060016040528060028152602001600281526020015f81525060125f820151815f015560208201518160010155604082015181600201555050348015620001a7575f80fd5b506040518060400160405280600b81526020017f4252434c61756e636865720000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4252430000000000000000000000000000000000000000000000000000000000815250816003908162000225919062000afa565b50806004908162000237919062000afa565b5050506200025a6200024e6200068860201b60201c565b6200068f60201b60201c565b6200029a336200026f6200075260201b60201c565b600a6200027d919062000d67565b6305f5e1006200028e919062000db7565b6200075a60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000323919062000e66565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000389573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003af919062000e66565b6040518363ffffffff1660e01b8152600401620003ce92919062000ea7565b6020604051808303815f875af1158015620003eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000411919062000e66565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160155f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505062000fa2565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007cb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c29062000f56565b60405180910390fd5b620007de5f83836200089160201b60201c565b80600281905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000885919062000f87565b60405180910390a35050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200091257607f821691505b602082108103620009285762000927620008cd565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200098c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200094f565b6200099886836200094f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009e2620009dc620009d684620009b0565b620009b9565b620009b0565b9050919050565b5f819050919050565b620009fd83620009c2565b62000a1562000a0c82620009e9565b8484546200095b565b825550505050565b5f90565b62000a2b62000a1d565b62000a38818484620009f2565b505050565b5b8181101562000a5f5762000a535f8262000a21565b60018101905062000a3e565b5050565b601f82111562000aae5762000a78816200092e565b62000a838462000940565b8101602085101562000a93578190505b62000aab62000aa28562000940565b83018262000a3d565b50505b505050565b5f82821c905092915050565b5f62000ad05f198460080262000ab3565b1980831691505092915050565b5f62000aea838362000abf565b9150826002028217905092915050565b62000b058262000896565b67ffffffffffffffff81111562000b215762000b20620008a0565b5b62000b2d8254620008fa565b62000b3a82828562000a63565b5f60209050601f83116001811462000b70575f841562000b5b578287015190505b62000b67858262000add565b86555062000bd6565b601f19841662000b80866200092e565b5f5b8281101562000ba95784890151825560018201915060208501945060208101905062000b82565b8683101562000bc9578489015162000bc5601f89168262000abf565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000c685780860481111562000c405762000c3f62000bde565b5b600185161562000c505780820291505b808102905062000c608562000c0b565b945062000c20565b94509492505050565b5f8262000c82576001905062000d54565b8162000c91575f905062000d54565b816001811462000caa576002811462000cb55762000ceb565b600191505062000d54565b60ff84111562000cca5762000cc962000bde565b5b8360020a91508482111562000ce45762000ce362000bde565b5b5062000d54565b5060208310610133831016604e8410600b841016171562000d255782820a90508381111562000d1f5762000d1e62000bde565b5b62000d54565b62000d34848484600162000c17565b9250905081840481111562000d4e5762000d4d62000bde565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000d7382620009b0565b915062000d808362000d5b565b925062000daf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c71565b905092915050565b5f62000dc382620009b0565b915062000dd083620009b0565b925082820262000de081620009b0565b9150828204841483151762000dfa5762000df962000bde565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e308262000e05565b9050919050565b62000e428162000e24565b811462000e4d575f80fd5b50565b5f8151905062000e608162000e37565b92915050565b5f6020828403121562000e7e5762000e7d62000e01565b5b5f62000e8d8482850162000e50565b91505092915050565b62000ea18162000e24565b82525050565b5f60408201905062000ebc5f83018562000e96565b62000ecb602083018462000e96565b9392505050565b5f82825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f62000f3e60258362000ed2565b915062000f4b8262000ee2565b604082019050919050565b5f6020820190508181035f83015262000f6f8162000f30565b9050919050565b62000f8181620009b0565b82525050565b5f60208201905062000f9c5f83018462000f76565b92915050565b6141348062000fb05f395ff3fe6080604052600436106101fc575f3560e01c8063728f8eea1161010c578063a457c2d71161009f578063c5d32bb21161006e578063c5d32bb2146106f9578063dd62ed3e14610735578063f2fde38b14610771578063f66895a314610799578063f887ea40146107c557610203565b8063a457c2d71461062f578063a8aa1b311461066b578063a9059cbb14610695578063aacebbe3146106d157610203565b80638da5cb5b116100db5780638da5cb5b1461058b57806395d89b41146105b55780639d282cd6146105df5780639e252f001461060757610203565b8063728f8eea146104f757806385141a77146105235780638a8c523c1461054d5780638cd4426d1461056357610203565b8063355496ca1161018f5780634ada218b1161015e5780634ada218b146104295780634e736f221461045357806366a88d961461047b57806370a08231146104a5578063715018a6146104e157610203565b8063355496ca14610375578063395093511461039d57806342b6fa11146103d95780634324deae1461040157610203565b806318160ddd116101cb57806318160ddd146102bd5780631816467f146102e757806323b872dd1461030f578063313ce5671461034b57610203565b806306fdde0314610207578063095ea7b3146102315780630e375a5c1461026d5780631340538f1461029557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107ef565b6040516102289190612c2a565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190612ce8565b61087f565b6040516102649190612d40565b60405180910390f35b348015610278575f80fd5b50610293600480360381019061028e9190612ec3565b61089c565b005b3480156102a0575f80fd5b506102bb60048036038101906102b69190612f1d565b6109a3565b005b3480156102c8575f80fd5b506102d1610a3c565b6040516102de9190612f57565b60405180910390f35b3480156102f2575f80fd5b5061030d60048036038101906103089190612f70565b610a45565b005b34801561031a575f80fd5b5061033560048036038101906103309190612f9b565b610b04565b6040516103429190612d40565b60405180910390f35b348015610356575f80fd5b5061035f610bff565b60405161036c9190613006565b60405180910390f35b348015610380575f80fd5b5061039b6004803603810190610396919061301f565b610c07565b005b3480156103a8575f80fd5b506103c360048036038101906103be9190612ce8565b610cee565b6040516103d09190612d40565b60405180910390f35b3480156103e4575f80fd5b506103ff60048036038101906103fa919061305d565b610d95565b005b34801561040c575f80fd5b506104276004803603810190610422919061305d565b610e4c565b005b348015610434575f80fd5b5061043d610ef0565b60405161044a9190612d40565b60405180910390f35b34801561045e575f80fd5b5061047960048036038101906104749190613088565b610f03565b005b348015610486575f80fd5b5061048f611019565b60405161049c9190612f57565b60405180910390f35b3480156104b0575f80fd5b506104cb60048036038101906104c69190612f70565b61101f565b6040516104d89190612f57565b60405180910390f35b3480156104ec575f80fd5b506104f5611064565b005b348015610502575f80fd5b5061050b6110eb565b60405161051a939291906130d8565b60405180910390f35b34801561052e575f80fd5b50610537611102565b604051610544919061311c565b60405180910390f35b348015610558575f80fd5b50610561611108565b005b34801561056e575f80fd5b5061058960048036038101906105849190612ce8565b611213565b005b348015610596575f80fd5b5061059f6112b4565b6040516105ac919061311c565b60405180910390f35b3480156105c0575f80fd5b506105c96112dc565b6040516105d69190612c2a565b60405180910390f35b3480156105ea575f80fd5b5061060560048036038101906106009190613088565b61136c565b005b348015610612575f80fd5b5061062d6004803603810190610628919061305d565b611482565b005b34801561063a575f80fd5b5061065560048036038101906106509190612ce8565b6114ea565b6040516106629190612d40565b60405180910390f35b348015610676575f80fd5b5061067f6115d9565b60405161068c919061311c565b60405180910390f35b3480156106a0575f80fd5b506106bb60048036038101906106b69190612ce8565b6115fe565b6040516106c89190612d40565b60405180910390f35b3480156106dc575f80fd5b506106f760048036038101906106f29190612f70565b611614565b005b348015610704575f80fd5b5061071f600480360381019061071a9190612f70565b6116d3565b60405161072c9190612d40565b60405180910390f35b348015610740575f80fd5b5061075b60048036038101906107569190613135565b6116f0565b6040516107689190612f57565b60405180910390f35b34801561077c575f80fd5b5061079760048036038101906107929190612f70565b611772565b005b3480156107a4575f80fd5b506107ad611868565b6040516107bc939291906130d8565b60405180910390f35b3480156107d0575f80fd5b506107d961187f565b6040516107e691906131ce565b60405180910390f35b6060600380546107fe90613214565b80601f016020809104026020016040519081016040528092919081815260200182805461082a90613214565b80156108755780601f1061084c57610100808354040283529160200191610875565b820191905f5260205f20905b81548152906001019060200180831161085857829003601f168201915b5050505050905090565b5f61089261088b6118a4565b84846118ab565b6001905092915050565b6108a46118a4565b73ffffffffffffffffffffffffffffffffffffffff166108c26112b4565b73ffffffffffffffffffffffffffffffffffffffff1614610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f9061328e565b60405180910390fd5b5f5b825181101561099e578160155f85848151811061093a576109396132ac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061091a565b505050565b6109ab6118a4565b73ffffffffffffffffffffffffffffffffffffffff166109c96112b4565b73ffffffffffffffffffffffffffffffffffffffff1614610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a169061328e565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b5f600254905090565b610a4d6118a4565b73ffffffffffffffffffffffffffffffffffffffff16610a6b6112b4565b73ffffffffffffffffffffffffffffffffffffffff1614610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab89061328e565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610b10848484611a6e565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b576118a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd90613349565b60405180910390fd5b610bf385610be26118a4565b8584610bee9190613394565b6118ab565b60019150509392505050565b5f6012905090565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d90613411565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610d8b610cfa6118a4565b848460015f610d076118a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d86919061342f565b6118ab565b6001905092915050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b906134d2565b60405180910390fd5b610e2c610bff565b600a610e38919061361f565b81610e439190613669565b60088190555050565b610e546118a4565b73ffffffffffffffffffffffffffffffffffffffff16610e726112b4565b73ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf9061328e565b60405180910390fd5b610ed0610bff565b600a610edc919061361f565b81610ee79190613669565b60098190555050565b600760169054906101000a900460ff1681565b610f0b6118a4565b73ffffffffffffffffffffffffffffffffffffffff16610f296112b4565b73ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f769061328e565b60405180910390fd5b6015818385610f8e919061342f565b610f98919061342f565b10610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf906136f4565b60405180910390fd5b60405180606001604052808481526020018381526020018281525060125f820151815f01556020820151816001015560408201518160020155905050505050565b60095481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61106c6118a4565b73ffffffffffffffffffffffffffffffffffffffff1661108a6112b4565b73ffffffffffffffffffffffffffffffffffffffff16146110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d79061328e565b60405180910390fd5b6110e95f61221f565b565b600f805f0154908060010154908060020154905083565b61dead81565b6111106118a4565b73ffffffffffffffffffffffffffffffffffffffff1661112e6112b4565b73ffffffffffffffffffffffffffffffffffffffff1614611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b9061328e565b60405180910390fd5b600760169054906101000a900460ff16156111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb9061375c565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600a81905550565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161126f92919061377a565b6020604051808303815f875af115801561128b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112af91906137b5565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112eb90613214565b80601f016020809104026020016040519081016040528092919081815260200182805461131790613214565b80156113625780601f1061133957610100808354040283529160200191611362565b820191905f5260205f20905b81548152906001019060200180831161134557829003601f168201915b5050505050905090565b6113746118a4565b73ffffffffffffffffffffffffffffffffffffffff166113926112b4565b73ffffffffffffffffffffffffffffffffffffffff16146113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df9061328e565b60405180910390fd5b60158183856113f7919061342f565b611401919061342f565b10611441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611438906136f4565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f5f820151815f01556020820151816001015560408201518160020155905050505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156114e6573d5f803e3d5ffd5b5050565b5f8060015f6114f76118a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890613850565b60405180910390fd5b6115ce6115bc6118a4565b8585846115c99190613394565b6118ab565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61160a338484611a6e565b6001905092915050565b61161c6118a4565b73ffffffffffffffffffffffffffffffffffffffff1661163a6112b4565b73ffffffffffffffffffffffffffffffffffffffff1614611690576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116879061328e565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6015602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61177a6118a4565b73ffffffffffffffffffffffffffffffffffffffff166117986112b4565b73ffffffffffffffffffffffffffffffffffffffff16146117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e59061328e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361185c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611853906138de565b60405180910390fd5b6118658161221f565b50565b6012805f0154908060010154908060020154905083565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611919576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119109061396c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e906139fa565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a619190612f57565b60405180910390a3505050565b5f8111611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa790613a88565b60405180910390fd5b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b4e575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ba357600760169054906101000a900460ff16611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990613af0565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c46575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c5f5750600760149054906101000a900460ff16155b15611cbd5760095481611c718461101f565b611c7b919061342f565b1115611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb390613b58565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d61575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611db4575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611dcd5750600760149054906101000a900460ff16155b15611e805760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e7f5760095481611e338461101f565b611e3d919061342f565b1115611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7590613b58565b60405180910390fd5b5b5b5f805f611e8b612b82565b5f60155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f2a575060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f445750600b54600a54611f41919061342f565b43105b9050600760149054906101000a900460ff1680611fa7575060155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ff8575060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612005575f9250612133565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614801561205f575080155b156120bf5760126002015460125f015460126001015461207f919061342f565b612089919061342f565b945084935060126040518060600160405290815f8201548152602001600182015481526020016002820154815250509150612132565b8061211f57600f60020154600f5f0154600f600101546120df919061342f565b6120e9919061342f565b9450849350600f6040518060600160405290815f8201548152602001600182015481526020016002820154815250509150612131565b801561213057600c549450600c5493505b5b5b5b606484876121419190613669565b61214b9190613ba3565b9250600760159054906101000a900460ff1680156121b6575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156121c6576121c585836122e2565b5b6121dc888885896121d79190613394565b6124ea565b5f831115612215575f851115612214575f606486886121fb9190613669565b6122059190613ba3565b90506122128930836124ea565b505b5b5050505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff166124e6576001600760146101000a81548160ff0219169083151502179055505f8203156124cb575f6123233061101f565b905060085481106124c9576001600854111561233f5760085490505b5f60028461234d9190613669565b90505f818460200151846123619190613669565b61236b9190613ba3565b90505f818461237a9190613394565b90505f4790506123898261275d565b5f81476123969190613394565b90505f8760200151866123a99190613394565b826123b49190613ba3565b90505f8860200151826123c79190613669565b90505f8111156123dc576123db8682612993565b5b5f895f01516002846123ee9190613669565b6123f89190613669565b90505f81111561244d5761244c81600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a8d90919063ffffffff16565b5b5f8a604001516002856124609190613669565b61246a9190613669565b90505f8111156124bf576124be81600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a8d90919063ffffffff16565b5b5050505050505050505b505b5f600760146101000a81548160ff0219169083151502179055505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254f90613c43565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bd90613cd1565b60405180910390fd5b6125d1838383612b7d565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264b90613d5f565b60405180910390fd5b81816126609190613394565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546126eb919061342f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161274f9190612f57565b60405180910390a350505050565b5f600267ffffffffffffffff81111561277957612778612d5d565b5b6040519080825280602002602001820160405280156127a75781602001602082028036833780820191505090505b50905030815f815181106127be576127bd6132ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612862573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128869190613d91565b8160018151811061289a576128996132ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129003060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118ab565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612962959493929190613eac565b5f604051808303815f87803b158015612979575f80fd5b505af115801561298b573d5f803e3d5ffd5b505050505050565b6129bf3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118ab565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612a4596959493929190613f04565b60606040518083038185885af1158015612a61573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a869190613f77565b5050505050565b80471015612ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac790614011565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612af59061405c565b5f6040518083038185875af1925050503d805f8114612b2f576040519150601f19603f3d011682016040523d82523d5f602084013e612b34565b606091505b5050905080612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f906140e0565b60405180910390fd5b505050565b505050565b60405180606001604052805f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612bd7578082015181840152602081019050612bbc565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612bfc82612ba0565b612c068185612baa565b9350612c16818560208601612bba565b612c1f81612be2565b840191505092915050565b5f6020820190508181035f830152612c428184612bf2565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c8482612c5b565b9050919050565b612c9481612c7a565b8114612c9e575f80fd5b50565b5f81359050612caf81612c8b565b92915050565b5f819050919050565b612cc781612cb5565b8114612cd1575f80fd5b50565b5f81359050612ce281612cbe565b92915050565b5f8060408385031215612cfe57612cfd612c53565b5b5f612d0b85828601612ca1565b9250506020612d1c85828601612cd4565b9150509250929050565b5f8115159050919050565b612d3a81612d26565b82525050565b5f602082019050612d535f830184612d31565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d9382612be2565b810181811067ffffffffffffffff82111715612db257612db1612d5d565b5b80604052505050565b5f612dc4612c4a565b9050612dd08282612d8a565b919050565b5f67ffffffffffffffff821115612def57612dee612d5d565b5b602082029050602081019050919050565b5f80fd5b5f612e16612e1184612dd5565b612dbb565b90508083825260208201905060208402830185811115612e3957612e38612e00565b5b835b81811015612e625780612e4e8882612ca1565b845260208401935050602081019050612e3b565b5050509392505050565b5f82601f830112612e8057612e7f612d59565b5b8135612e90848260208601612e04565b91505092915050565b612ea281612d26565b8114612eac575f80fd5b50565b5f81359050612ebd81612e99565b92915050565b5f8060408385031215612ed957612ed8612c53565b5b5f83013567ffffffffffffffff811115612ef657612ef5612c57565b5b612f0285828601612e6c565b9250506020612f1385828601612eaf565b9150509250929050565b5f60208284031215612f3257612f31612c53565b5b5f612f3f84828501612eaf565b91505092915050565b612f5181612cb5565b82525050565b5f602082019050612f6a5f830184612f48565b92915050565b5f60208284031215612f8557612f84612c53565b5b5f612f9284828501612ca1565b91505092915050565b5f805f60608486031215612fb257612fb1612c53565b5b5f612fbf86828701612ca1565b9350506020612fd086828701612ca1565b9250506040612fe186828701612cd4565b9150509250925092565b5f60ff82169050919050565b61300081612feb565b82525050565b5f6020820190506130195f830184612ff7565b92915050565b5f806040838503121561303557613034612c53565b5b5f61304285828601612ca1565b925050602061305385828601612eaf565b9150509250929050565b5f6020828403121561307257613071612c53565b5b5f61307f84828501612cd4565b91505092915050565b5f805f6060848603121561309f5761309e612c53565b5b5f6130ac86828701612cd4565b93505060206130bd86828701612cd4565b92505060406130ce86828701612cd4565b9150509250925092565b5f6060820190506130eb5f830186612f48565b6130f86020830185612f48565b6131056040830184612f48565b949350505050565b61311681612c7a565b82525050565b5f60208201905061312f5f83018461310d565b92915050565b5f806040838503121561314b5761314a612c53565b5b5f61315885828601612ca1565b925050602061316985828601612ca1565b9150509250929050565b5f819050919050565b5f61319661319161318c84612c5b565b613173565b612c5b565b9050919050565b5f6131a78261317c565b9050919050565b5f6131b88261319d565b9050919050565b6131c8816131ae565b82525050565b5f6020820190506131e15f8301846131bf565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061322b57607f821691505b60208210810361323e5761323d6131e7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613278602083612baa565b915061328382613244565b602082019050919050565b5f6020820190508181035f8301526132a58161326c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613333602883612baa565b915061333e826132d9565b604082019050919050565b5f6020820190508181035f83015261336081613327565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61339e82612cb5565b91506133a983612cb5565b92508282039050818111156133c1576133c0613367565b5b92915050565b7f6f6e6c792064657657616c6c65742063616e206578656d7074466565000000005f82015250565b5f6133fb601c83612baa565b9150613406826133c7565b602082019050919050565b5f6020820190508181035f830152613428816133ef565b9050919050565b5f61343982612cb5565b915061344483612cb5565b925082820190508082111561345c5761345b613367565b5b92915050565b7f6f6e6c792064657657616c6c65742063616e20757064617465207468726573685f8201527f6f6c640000000000000000000000000000000000000000000000000000000000602082015250565b5f6134bc602383612baa565b91506134c782613462565b604082019050919050565b5f6020820190508181035f8301526134e9816134b0565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156135455780860481111561352157613520613367565b5b60018516156135305780820291505b808102905061353e856134f0565b9450613505565b94509492505050565b5f8261355d5760019050613618565b8161356a575f9050613618565b8160018114613580576002811461358a576135b9565b6001915050613618565b60ff84111561359c5761359b613367565b5b8360020a9150848211156135b3576135b2613367565b5b50613618565b5060208310610133831016604e8410600b84101617156135ee5782820a9050838111156135e9576135e8613367565b5b613618565b6135fb84848460016134fc565b9250905081840481111561361257613611613367565b5b81810290505b9392505050565b5f61362982612cb5565b915061363483612feb565b92506136617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461354e565b905092915050565b5f61367382612cb5565b915061367e83612cb5565b925082820261368c81612cb5565b915082820484148315176136a3576136a2613367565b5b5092915050565b7f546f74616c207461782063616e742065786365656420323025000000000000005f82015250565b5f6136de601983612baa565b91506136e9826136aa565b602082019050919050565b5f6020820190508181035f83015261370b816136d2565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c65640000000000005f82015250565b5f613746601a83612baa565b915061375182613712565b602082019050919050565b5f6020820190508181035f8301526137738161373a565b9050919050565b5f60408201905061378d5f83018561310d565b61379a6020830184612f48565b9392505050565b5f815190506137af81612e99565b92915050565b5f602082840312156137ca576137c9612c53565b5b5f6137d7848285016137a1565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61383a602583612baa565b9150613845826137e0565b604082019050919050565b5f6020820190508181035f8301526138678161382e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6138c8602683612baa565b91506138d38261386e565b604082019050919050565b5f6020820190508181035f8301526138f5816138bc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613956602483612baa565b9150613961826138fc565b604082019050919050565b5f6020820190508181035f8301526139838161394a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6139e4602283612baa565b91506139ef8261398a565b604082019050919050565b5f6020820190508181035f830152613a11816139d8565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613a72602983612baa565b9150613a7d82613a18565b604082019050919050565b5f6020820190508181035f830152613a9f81613a66565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f613ada601383612baa565b9150613ae582613aa6565b602082019050919050565b5f6020820190508181035f830152613b0781613ace565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d69745f82015250565b5f613b42602083612baa565b9150613b4d82613b0e565b602082019050919050565b5f6020820190508181035f830152613b6f81613b36565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613bad82612cb5565b9150613bb883612cb5565b925082613bc857613bc7613b76565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613c2d602583612baa565b9150613c3882613bd3565b604082019050919050565b5f6020820190508181035f830152613c5a81613c21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613cbb602383612baa565b9150613cc682613c61565b604082019050919050565b5f6020820190508181035f830152613ce881613caf565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613d49602683612baa565b9150613d5482613cef565b604082019050919050565b5f6020820190508181035f830152613d7681613d3d565b9050919050565b5f81519050613d8b81612c8b565b92915050565b5f60208284031215613da657613da5612c53565b5b5f613db384828501613d7d565b91505092915050565b5f819050919050565b5f613ddf613dda613dd584613dbc565b613173565b612cb5565b9050919050565b613def81613dc5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e2781612c7a565b82525050565b5f613e388383613e1e565b60208301905092915050565b5f602082019050919050565b5f613e5a82613df5565b613e648185613dff565b9350613e6f83613e0f565b805f5b83811015613e9f578151613e868882613e2d565b9750613e9183613e44565b925050600181019050613e72565b5085935050505092915050565b5f60a082019050613ebf5f830188612f48565b613ecc6020830187613de6565b8181036040830152613ede8186613e50565b9050613eed606083018561310d565b613efa6080830184612f48565b9695505050505050565b5f60c082019050613f175f83018961310d565b613f246020830188612f48565b613f316040830187613de6565b613f3e6060830186613de6565b613f4b608083018561310d565b613f5860a0830184612f48565b979650505050505050565b5f81519050613f7181612cbe565b92915050565b5f805f60608486031215613f8e57613f8d612c53565b5b5f613f9b86828701613f63565b9350506020613fac86828701613f63565b9250506040613fbd86828701613f63565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f613ffb601d83612baa565b915061400682613fc7565b602082019050919050565b5f6020820190508181035f83015261402881613fef565b9050919050565b5f81905092915050565b50565b5f6140475f8361402f565b915061405282614039565b5f82019050919050565b5f6140668261403c565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f6140ca603a83612baa565b91506140d582614070565b604082019050919050565b5f6020820190508181035f8301526140f7816140be565b905091905056fea2646970667358221220b457ce204ae61ad8b173a74f5468f1ec38f383c652defde99bf1d746353bc00864736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101fc575f3560e01c8063728f8eea1161010c578063a457c2d71161009f578063c5d32bb21161006e578063c5d32bb2146106f9578063dd62ed3e14610735578063f2fde38b14610771578063f66895a314610799578063f887ea40146107c557610203565b8063a457c2d71461062f578063a8aa1b311461066b578063a9059cbb14610695578063aacebbe3146106d157610203565b80638da5cb5b116100db5780638da5cb5b1461058b57806395d89b41146105b55780639d282cd6146105df5780639e252f001461060757610203565b8063728f8eea146104f757806385141a77146105235780638a8c523c1461054d5780638cd4426d1461056357610203565b8063355496ca1161018f5780634ada218b1161015e5780634ada218b146104295780634e736f221461045357806366a88d961461047b57806370a08231146104a5578063715018a6146104e157610203565b8063355496ca14610375578063395093511461039d57806342b6fa11146103d95780634324deae1461040157610203565b806318160ddd116101cb57806318160ddd146102bd5780631816467f146102e757806323b872dd1461030f578063313ce5671461034b57610203565b806306fdde0314610207578063095ea7b3146102315780630e375a5c1461026d5780631340538f1461029557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107ef565b6040516102289190612c2a565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190612ce8565b61087f565b6040516102649190612d40565b60405180910390f35b348015610278575f80fd5b50610293600480360381019061028e9190612ec3565b61089c565b005b3480156102a0575f80fd5b506102bb60048036038101906102b69190612f1d565b6109a3565b005b3480156102c8575f80fd5b506102d1610a3c565b6040516102de9190612f57565b60405180910390f35b3480156102f2575f80fd5b5061030d60048036038101906103089190612f70565b610a45565b005b34801561031a575f80fd5b5061033560048036038101906103309190612f9b565b610b04565b6040516103429190612d40565b60405180910390f35b348015610356575f80fd5b5061035f610bff565b60405161036c9190613006565b60405180910390f35b348015610380575f80fd5b5061039b6004803603810190610396919061301f565b610c07565b005b3480156103a8575f80fd5b506103c360048036038101906103be9190612ce8565b610cee565b6040516103d09190612d40565b60405180910390f35b3480156103e4575f80fd5b506103ff60048036038101906103fa919061305d565b610d95565b005b34801561040c575f80fd5b506104276004803603810190610422919061305d565b610e4c565b005b348015610434575f80fd5b5061043d610ef0565b60405161044a9190612d40565b60405180910390f35b34801561045e575f80fd5b5061047960048036038101906104749190613088565b610f03565b005b348015610486575f80fd5b5061048f611019565b60405161049c9190612f57565b60405180910390f35b3480156104b0575f80fd5b506104cb60048036038101906104c69190612f70565b61101f565b6040516104d89190612f57565b60405180910390f35b3480156104ec575f80fd5b506104f5611064565b005b348015610502575f80fd5b5061050b6110eb565b60405161051a939291906130d8565b60405180910390f35b34801561052e575f80fd5b50610537611102565b604051610544919061311c565b60405180910390f35b348015610558575f80fd5b50610561611108565b005b34801561056e575f80fd5b5061058960048036038101906105849190612ce8565b611213565b005b348015610596575f80fd5b5061059f6112b4565b6040516105ac919061311c565b60405180910390f35b3480156105c0575f80fd5b506105c96112dc565b6040516105d69190612c2a565b60405180910390f35b3480156105ea575f80fd5b5061060560048036038101906106009190613088565b61136c565b005b348015610612575f80fd5b5061062d6004803603810190610628919061305d565b611482565b005b34801561063a575f80fd5b5061065560048036038101906106509190612ce8565b6114ea565b6040516106629190612d40565b60405180910390f35b348015610676575f80fd5b5061067f6115d9565b60405161068c919061311c565b60405180910390f35b3480156106a0575f80fd5b506106bb60048036038101906106b69190612ce8565b6115fe565b6040516106c89190612d40565b60405180910390f35b3480156106dc575f80fd5b506106f760048036038101906106f29190612f70565b611614565b005b348015610704575f80fd5b5061071f600480360381019061071a9190612f70565b6116d3565b60405161072c9190612d40565b60405180910390f35b348015610740575f80fd5b5061075b60048036038101906107569190613135565b6116f0565b6040516107689190612f57565b60405180910390f35b34801561077c575f80fd5b5061079760048036038101906107929190612f70565b611772565b005b3480156107a4575f80fd5b506107ad611868565b6040516107bc939291906130d8565b60405180910390f35b3480156107d0575f80fd5b506107d961187f565b6040516107e691906131ce565b60405180910390f35b6060600380546107fe90613214565b80601f016020809104026020016040519081016040528092919081815260200182805461082a90613214565b80156108755780601f1061084c57610100808354040283529160200191610875565b820191905f5260205f20905b81548152906001019060200180831161085857829003601f168201915b5050505050905090565b5f61089261088b6118a4565b84846118ab565b6001905092915050565b6108a46118a4565b73ffffffffffffffffffffffffffffffffffffffff166108c26112b4565b73ffffffffffffffffffffffffffffffffffffffff1614610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f9061328e565b60405180910390fd5b5f5b825181101561099e578160155f85848151811061093a576109396132ac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061091a565b505050565b6109ab6118a4565b73ffffffffffffffffffffffffffffffffffffffff166109c96112b4565b73ffffffffffffffffffffffffffffffffffffffff1614610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a169061328e565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b5f600254905090565b610a4d6118a4565b73ffffffffffffffffffffffffffffffffffffffff16610a6b6112b4565b73ffffffffffffffffffffffffffffffffffffffff1614610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab89061328e565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610b10848484611a6e565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b576118a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd90613349565b60405180910390fd5b610bf385610be26118a4565b8584610bee9190613394565b6118ab565b60019150509392505050565b5f6012905090565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d90613411565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610d8b610cfa6118a4565b848460015f610d076118a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d86919061342f565b6118ab565b6001905092915050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b906134d2565b60405180910390fd5b610e2c610bff565b600a610e38919061361f565b81610e439190613669565b60088190555050565b610e546118a4565b73ffffffffffffffffffffffffffffffffffffffff16610e726112b4565b73ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf9061328e565b60405180910390fd5b610ed0610bff565b600a610edc919061361f565b81610ee79190613669565b60098190555050565b600760169054906101000a900460ff1681565b610f0b6118a4565b73ffffffffffffffffffffffffffffffffffffffff16610f296112b4565b73ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f769061328e565b60405180910390fd5b6015818385610f8e919061342f565b610f98919061342f565b10610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf906136f4565b60405180910390fd5b60405180606001604052808481526020018381526020018281525060125f820151815f01556020820151816001015560408201518160020155905050505050565b60095481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61106c6118a4565b73ffffffffffffffffffffffffffffffffffffffff1661108a6112b4565b73ffffffffffffffffffffffffffffffffffffffff16146110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d79061328e565b60405180910390fd5b6110e95f61221f565b565b600f805f0154908060010154908060020154905083565b61dead81565b6111106118a4565b73ffffffffffffffffffffffffffffffffffffffff1661112e6112b4565b73ffffffffffffffffffffffffffffffffffffffff1614611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b9061328e565b60405180910390fd5b600760169054906101000a900460ff16156111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb9061375c565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600a81905550565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161126f92919061377a565b6020604051808303815f875af115801561128b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112af91906137b5565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112eb90613214565b80601f016020809104026020016040519081016040528092919081815260200182805461131790613214565b80156113625780601f1061133957610100808354040283529160200191611362565b820191905f5260205f20905b81548152906001019060200180831161134557829003601f168201915b5050505050905090565b6113746118a4565b73ffffffffffffffffffffffffffffffffffffffff166113926112b4565b73ffffffffffffffffffffffffffffffffffffffff16146113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df9061328e565b60405180910390fd5b60158183856113f7919061342f565b611401919061342f565b10611441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611438906136f4565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f5f820151815f01556020820151816001015560408201518160020155905050505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156114e6573d5f803e3d5ffd5b5050565b5f8060015f6114f76118a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890613850565b60405180910390fd5b6115ce6115bc6118a4565b8585846115c99190613394565b6118ab565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61160a338484611a6e565b6001905092915050565b61161c6118a4565b73ffffffffffffffffffffffffffffffffffffffff1661163a6112b4565b73ffffffffffffffffffffffffffffffffffffffff1614611690576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116879061328e565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6015602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61177a6118a4565b73ffffffffffffffffffffffffffffffffffffffff166117986112b4565b73ffffffffffffffffffffffffffffffffffffffff16146117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e59061328e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361185c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611853906138de565b60405180910390fd5b6118658161221f565b50565b6012805f0154908060010154908060020154905083565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611919576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119109061396c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e906139fa565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a619190612f57565b60405180910390a3505050565b5f8111611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa790613a88565b60405180910390fd5b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b4e575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ba357600760169054906101000a900460ff16611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990613af0565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c46575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c5f5750600760149054906101000a900460ff16155b15611cbd5760095481611c718461101f565b611c7b919061342f565b1115611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb390613b58565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d61575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611db4575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611dcd5750600760149054906101000a900460ff16155b15611e805760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e7f5760095481611e338461101f565b611e3d919061342f565b1115611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7590613b58565b60405180910390fd5b5b5b5f805f611e8b612b82565b5f60155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f2a575060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f445750600b54600a54611f41919061342f565b43105b9050600760149054906101000a900460ff1680611fa7575060155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ff8575060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612005575f9250612133565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614801561205f575080155b156120bf5760126002015460125f015460126001015461207f919061342f565b612089919061342f565b945084935060126040518060600160405290815f8201548152602001600182015481526020016002820154815250509150612132565b8061211f57600f60020154600f5f0154600f600101546120df919061342f565b6120e9919061342f565b9450849350600f6040518060600160405290815f8201548152602001600182015481526020016002820154815250509150612131565b801561213057600c549450600c5493505b5b5b5b606484876121419190613669565b61214b9190613ba3565b9250600760159054906101000a900460ff1680156121b6575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156121c6576121c585836122e2565b5b6121dc888885896121d79190613394565b6124ea565b5f831115612215575f851115612214575f606486886121fb9190613669565b6122059190613ba3565b90506122128930836124ea565b505b5b5050505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff166124e6576001600760146101000a81548160ff0219169083151502179055505f8203156124cb575f6123233061101f565b905060085481106124c9576001600854111561233f5760085490505b5f60028461234d9190613669565b90505f818460200151846123619190613669565b61236b9190613ba3565b90505f818461237a9190613394565b90505f4790506123898261275d565b5f81476123969190613394565b90505f8760200151866123a99190613394565b826123b49190613ba3565b90505f8860200151826123c79190613669565b90505f8111156123dc576123db8682612993565b5b5f895f01516002846123ee9190613669565b6123f89190613669565b90505f81111561244d5761244c81600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a8d90919063ffffffff16565b5b5f8a604001516002856124609190613669565b61246a9190613669565b90505f8111156124bf576124be81600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a8d90919063ffffffff16565b5b5050505050505050505b505b5f600760146101000a81548160ff0219169083151502179055505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254f90613c43565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bd90613cd1565b60405180910390fd5b6125d1838383612b7d565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264b90613d5f565b60405180910390fd5b81816126609190613394565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546126eb919061342f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161274f9190612f57565b60405180910390a350505050565b5f600267ffffffffffffffff81111561277957612778612d5d565b5b6040519080825280602002602001820160405280156127a75781602001602082028036833780820191505090505b50905030815f815181106127be576127bd6132ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612862573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128869190613d91565b8160018151811061289a576128996132ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129003060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118ab565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612962959493929190613eac565b5f604051808303815f87803b158015612979575f80fd5b505af115801561298b573d5f803e3d5ffd5b505050505050565b6129bf3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118ab565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612a4596959493929190613f04565b60606040518083038185885af1158015612a61573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a869190613f77565b5050505050565b80471015612ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac790614011565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612af59061405c565b5f6040518083038185875af1925050503d805f8114612b2f576040519150601f19603f3d011682016040523d82523d5f602084013e612b34565b606091505b5050905080612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f906140e0565b60405180910390fd5b505050565b505050565b60405180606001604052805f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612bd7578082015181840152602081019050612bbc565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612bfc82612ba0565b612c068185612baa565b9350612c16818560208601612bba565b612c1f81612be2565b840191505092915050565b5f6020820190508181035f830152612c428184612bf2565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c8482612c5b565b9050919050565b612c9481612c7a565b8114612c9e575f80fd5b50565b5f81359050612caf81612c8b565b92915050565b5f819050919050565b612cc781612cb5565b8114612cd1575f80fd5b50565b5f81359050612ce281612cbe565b92915050565b5f8060408385031215612cfe57612cfd612c53565b5b5f612d0b85828601612ca1565b9250506020612d1c85828601612cd4565b9150509250929050565b5f8115159050919050565b612d3a81612d26565b82525050565b5f602082019050612d535f830184612d31565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d9382612be2565b810181811067ffffffffffffffff82111715612db257612db1612d5d565b5b80604052505050565b5f612dc4612c4a565b9050612dd08282612d8a565b919050565b5f67ffffffffffffffff821115612def57612dee612d5d565b5b602082029050602081019050919050565b5f80fd5b5f612e16612e1184612dd5565b612dbb565b90508083825260208201905060208402830185811115612e3957612e38612e00565b5b835b81811015612e625780612e4e8882612ca1565b845260208401935050602081019050612e3b565b5050509392505050565b5f82601f830112612e8057612e7f612d59565b5b8135612e90848260208601612e04565b91505092915050565b612ea281612d26565b8114612eac575f80fd5b50565b5f81359050612ebd81612e99565b92915050565b5f8060408385031215612ed957612ed8612c53565b5b5f83013567ffffffffffffffff811115612ef657612ef5612c57565b5b612f0285828601612e6c565b9250506020612f1385828601612eaf565b9150509250929050565b5f60208284031215612f3257612f31612c53565b5b5f612f3f84828501612eaf565b91505092915050565b612f5181612cb5565b82525050565b5f602082019050612f6a5f830184612f48565b92915050565b5f60208284031215612f8557612f84612c53565b5b5f612f9284828501612ca1565b91505092915050565b5f805f60608486031215612fb257612fb1612c53565b5b5f612fbf86828701612ca1565b9350506020612fd086828701612ca1565b9250506040612fe186828701612cd4565b9150509250925092565b5f60ff82169050919050565b61300081612feb565b82525050565b5f6020820190506130195f830184612ff7565b92915050565b5f806040838503121561303557613034612c53565b5b5f61304285828601612ca1565b925050602061305385828601612eaf565b9150509250929050565b5f6020828403121561307257613071612c53565b5b5f61307f84828501612cd4565b91505092915050565b5f805f6060848603121561309f5761309e612c53565b5b5f6130ac86828701612cd4565b93505060206130bd86828701612cd4565b92505060406130ce86828701612cd4565b9150509250925092565b5f6060820190506130eb5f830186612f48565b6130f86020830185612f48565b6131056040830184612f48565b949350505050565b61311681612c7a565b82525050565b5f60208201905061312f5f83018461310d565b92915050565b5f806040838503121561314b5761314a612c53565b5b5f61315885828601612ca1565b925050602061316985828601612ca1565b9150509250929050565b5f819050919050565b5f61319661319161318c84612c5b565b613173565b612c5b565b9050919050565b5f6131a78261317c565b9050919050565b5f6131b88261319d565b9050919050565b6131c8816131ae565b82525050565b5f6020820190506131e15f8301846131bf565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061322b57607f821691505b60208210810361323e5761323d6131e7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613278602083612baa565b915061328382613244565b602082019050919050565b5f6020820190508181035f8301526132a58161326c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613333602883612baa565b915061333e826132d9565b604082019050919050565b5f6020820190508181035f83015261336081613327565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61339e82612cb5565b91506133a983612cb5565b92508282039050818111156133c1576133c0613367565b5b92915050565b7f6f6e6c792064657657616c6c65742063616e206578656d7074466565000000005f82015250565b5f6133fb601c83612baa565b9150613406826133c7565b602082019050919050565b5f6020820190508181035f830152613428816133ef565b9050919050565b5f61343982612cb5565b915061344483612cb5565b925082820190508082111561345c5761345b613367565b5b92915050565b7f6f6e6c792064657657616c6c65742063616e20757064617465207468726573685f8201527f6f6c640000000000000000000000000000000000000000000000000000000000602082015250565b5f6134bc602383612baa565b91506134c782613462565b604082019050919050565b5f6020820190508181035f8301526134e9816134b0565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156135455780860481111561352157613520613367565b5b60018516156135305780820291505b808102905061353e856134f0565b9450613505565b94509492505050565b5f8261355d5760019050613618565b8161356a575f9050613618565b8160018114613580576002811461358a576135b9565b6001915050613618565b60ff84111561359c5761359b613367565b5b8360020a9150848211156135b3576135b2613367565b5b50613618565b5060208310610133831016604e8410600b84101617156135ee5782820a9050838111156135e9576135e8613367565b5b613618565b6135fb84848460016134fc565b9250905081840481111561361257613611613367565b5b81810290505b9392505050565b5f61362982612cb5565b915061363483612feb565b92506136617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461354e565b905092915050565b5f61367382612cb5565b915061367e83612cb5565b925082820261368c81612cb5565b915082820484148315176136a3576136a2613367565b5b5092915050565b7f546f74616c207461782063616e742065786365656420323025000000000000005f82015250565b5f6136de601983612baa565b91506136e9826136aa565b602082019050919050565b5f6020820190508181035f83015261370b816136d2565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c65640000000000005f82015250565b5f613746601a83612baa565b915061375182613712565b602082019050919050565b5f6020820190508181035f8301526137738161373a565b9050919050565b5f60408201905061378d5f83018561310d565b61379a6020830184612f48565b9392505050565b5f815190506137af81612e99565b92915050565b5f602082840312156137ca576137c9612c53565b5b5f6137d7848285016137a1565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61383a602583612baa565b9150613845826137e0565b604082019050919050565b5f6020820190508181035f8301526138678161382e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6138c8602683612baa565b91506138d38261386e565b604082019050919050565b5f6020820190508181035f8301526138f5816138bc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613956602483612baa565b9150613961826138fc565b604082019050919050565b5f6020820190508181035f8301526139838161394a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6139e4602283612baa565b91506139ef8261398a565b604082019050919050565b5f6020820190508181035f830152613a11816139d8565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613a72602983612baa565b9150613a7d82613a18565b604082019050919050565b5f6020820190508181035f830152613a9f81613a66565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f613ada601383612baa565b9150613ae582613aa6565b602082019050919050565b5f6020820190508181035f830152613b0781613ace565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d69745f82015250565b5f613b42602083612baa565b9150613b4d82613b0e565b602082019050919050565b5f6020820190508181035f830152613b6f81613b36565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613bad82612cb5565b9150613bb883612cb5565b925082613bc857613bc7613b76565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613c2d602583612baa565b9150613c3882613bd3565b604082019050919050565b5f6020820190508181035f830152613c5a81613c21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613cbb602383612baa565b9150613cc682613c61565b604082019050919050565b5f6020820190508181035f830152613ce881613caf565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613d49602683612baa565b9150613d5482613cef565b604082019050919050565b5f6020820190508181035f830152613d7681613d3d565b9050919050565b5f81519050613d8b81612c8b565b92915050565b5f60208284031215613da657613da5612c53565b5b5f613db384828501613d7d565b91505092915050565b5f819050919050565b5f613ddf613dda613dd584613dbc565b613173565b612cb5565b9050919050565b613def81613dc5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e2781612c7a565b82525050565b5f613e388383613e1e565b60208301905092915050565b5f602082019050919050565b5f613e5a82613df5565b613e648185613dff565b9350613e6f83613e0f565b805f5b83811015613e9f578151613e868882613e2d565b9750613e9183613e44565b925050600181019050613e72565b5085935050505092915050565b5f60a082019050613ebf5f830188612f48565b613ecc6020830187613de6565b8181036040830152613ede8186613e50565b9050613eed606083018561310d565b613efa6080830184612f48565b9695505050505050565b5f60c082019050613f175f83018961310d565b613f246020830188612f48565b613f316040830187613de6565b613f3e6060830186613de6565b613f4b608083018561310d565b613f5860a0830184612f48565b979650505050505050565b5f81519050613f7181612cbe565b92915050565b5f805f60608486031215613f8e57613f8d612c53565b5b5f613f9b86828701613f63565b9350506020613fac86828701613f63565b9250506040613fbd86828701613f63565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f613ffb601d83612baa565b915061400682613fc7565b602082019050919050565b5f6020820190508181035f83015261402881613fef565b9050919050565b5f81905092915050565b50565b5f6140475f8361402f565b915061405282614039565b5f82019050919050565b5f6140668261403c565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f6140ca603a83612baa565b91506140d582614070565b604082019050919050565b5f6020820190508181035f8301526140f7816140be565b905091905056fea2646970667358221220b457ce204ae61ad8b173a74f5468f1ec38f383c652defde99bf1d746353bc00864736f6c63430008160033

Deployed Bytecode Sourcemap

12915:10722:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14700:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23375:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22777:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3726:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22667:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14869:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3568:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23188:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15325:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22937:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21925:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13149:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21641:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13256:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3897:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11578:94;;;;;;;;;;;;;:::i;:::-;;13782:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13584:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22312:224;;;;;;;;;;;;;:::i;:::-;;22176:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11355:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2825:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21359:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22064:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15581:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13031:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15999:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22544:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13872:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4516:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11680:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13824:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13003:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2606:100;2660:13;2693:5;2686:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:100;:::o;14700:161::-;14775:4;14792:39;14801:12;:10;:12::i;:::-;14815:7;14824:6;14792:8;:39::i;:::-;14849:4;14842:11;;14700:161;;;;:::o;23375:202::-;11501:12;:10;:12::i;:::-;11490:23;;:7;:5;:7::i;:::-;:23;;;11482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23472:9:::1;23467:103;23491:8;:15;23487:1;:19;23467:103;;;23553:5;23528:9;:22;23538:8;23547:1;23538:11;;;;;;;;:::i;:::-;;;;;;;;23528:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;23508:3;;;;;;;23467:103;;;;23375:202:::0;;:::o;22777:152::-;11501:12;:10;:12::i;:::-;11490:23;;:7;:5;:7::i;:::-;:23;;;11482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22916:5:::1;22895:18;;:26;;;;;;;;;;;;;;;;;;22777:152:::0;:::o;3726:108::-;3787:7;3814:12;;3807:19;;3726:108;:::o;22667:102::-;11501:12;:10;:12::i;:::-;11490:23;;:7;:5;:7::i;:::-;:23;;;11482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22752:9:::1;22740;;:21;;;;;;;;;;;;;;;;;;22667:102:::0;:::o;14869:448::-;15001:4;15018:36;15028:6;15036:9;15047:6;15018:9;:36::i;:::-;15067:24;15094:11;:19;15106:6;15094:19;;;;;;;;;;;;;;;:33;15114:12;:10;:12::i;:::-;15094:33;;;;;;;;;;;;;;;;15067:60;;15166:6;15146:16;:26;;15138:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15228:57;15237:6;15245:12;:10;:12::i;:::-;15278:6;15259:16;:25;;;;:::i;:::-;15228:8;:57::i;:::-;15305:4;15298:11;;;14869:448;;;;;:::o;3568:93::-;3626:5;3651:2;3644:9;;3568:93;:::o;23188:179::-;23280:9;;;;;;;;;;;23268:21;;:10;:21;;;23260:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23354:5;23332:9;:19;23342:8;23332:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;23188:179;;:::o;15325:248::-;15441:4;15463:80;15472:12;:10;:12::i;:::-;15486:7;15532:10;15495:11;:25;15507:12;:10;:12::i;:::-;15495:25;;;;;;;;;;;;;;;:34;15521:7;15495:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;15463:8;:80::i;:::-;15561:4;15554:11;;15325:248;;;;:::o;22937:243::-;23060:9;;;;;;;;;;;23048:21;;:10;:21;;;23040:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23162:10;:8;:10::i;:::-;23158:2;:14;;;;:::i;:::-;23145:10;:27;;;;:::i;:::-;23119:23;:53;;;;22937:243;:::o;21925:131::-;11501:12;:10;:12::i;:::-;11490:23;;:7;:5;:7::i;:::-;:23;;;11482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22037:10:::1;:8;:10::i;:::-;22033:2;:14;;;;:::i;:::-;22021:9;:26;;;;:::i;:::-;22004:14;:43;;;;21925:131:::0;:::o;13149:34::-;;;;;;;;;;;;;:::o;21641:276::-;11501:12;:10;:12::i;:::-;11490:23;;:7;:5;:7::i;:::-;:23;;;11482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21819:2:::1;21812:4;21801:10;21790;:21;;;;:::i;:::-;:26;;;;:::i;:::-;:31;21781:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21874:35;;;;;;;;21880:10;21874:35;;;;21892:10;21874:35;;;;21904:4;21874:35;;::::0;21862:9:::1;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;21641:276:::0;;;:::o;13256:49::-;;;;:::o;3897:127::-;3971:7;3998:9;:18;4008:7;3998:18;;;;;;;;;;;;;;;;3991:25;;3897:127;;;:::o;11578:94::-;11501:12;:10;:12::i;:::-;11490:23;;:7;:5;:7::i;:::-;:23;;;11482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11643:21:::1;11661:1;11643:9;:21::i;:::-;11578:94::o:0;13782:35::-;;;;;;;;;;;;;;;;;;;:::o;13584:79::-;13621:42;13584:79;:::o;22312:224::-;11501:12;:10;:12::i;:::-;11490:23;;:7;:5;:7::i;:::-;:23;;;11482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22376:14:::1;;;;;;;;;;;22375:15;22367:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;22449:4;22432:14;;:21;;;;;;;;;;;;;;;;;;22485:4;22464:18;;:25;;;;;;;;;;;;;;;;;;22516:12;22500:13;:28;;;;22312:224::o:0;22176:127::-;22258:8;22251:25;;;22277:9;;;;;;;;;;;22288:6;22251:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22176:127;;:::o;11355:87::-;11401:7;11428:6;;;;;;;;;;;11421:13;;11355:87;:::o;2825:104::-;2881:13;2914:7;2907:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2825:104;:::o;21359:274::-;11501:12;:10;:12::i;:::-;11490:23;;:7;:5;:7::i;:::-;:23;;;11482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21539:2:::1;21532:4;21521:10;21510;:21;;;;:::i;:::-;:26;;;;:::i;:::-;:31;21501:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21590:35;;;;;;;;21596:10;21590:35;;;;21608:10;21590:35;;;;21620:4;21590:35;;::::0;21582:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;21359:274:::0;;;:::o;22064:104::-;22130:9;;;;;;;;;;;22122:27;;:38;22150:9;22122:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22064:104;:::o;15581:410::-;15702:4;15724:24;15751:11;:25;15763:12;:10;:12::i;:::-;15751:25;;;;;;;;;;;;;;;:34;15777:7;15751:34;;;;;;;;;;;;;;;;15724:61;;15824:15;15804:16;:35;;15796:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15892:67;15901:12;:10;:12::i;:::-;15915:7;15943:15;15924:16;:34;;;;:::i;:::-;15892:8;:67::i;:::-;15979:4;15972:11;;;15581:410;;;;:::o;13031:19::-;;;;;;;;;;;;;:::o;15999:165::-;16077:4;16094:40;16104:10;16116:9;16127:6;16094:9;:40::i;:::-;16152:4;16145:11;;15999:165;;;;:::o;22544:115::-;11501:12;:10;:12::i;:::-;11490:23;;:7;:5;:7::i;:::-;:23;;;11482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22642:9:::1;22624:15;;:27;;;;;;;;;;;;;;;;;;22544:115:::0;:::o;13872:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;4516:201::-;4650:7;4682:11;:18;4694:5;4682:18;;;;;;;;;;;;;;;:27;4701:7;4682:27;;;;;;;;;;;;;;;;4675:34;;4516:201;;;;:::o;11680:192::-;11501:12;:10;:12::i;:::-;11490:23;;:7;:5;:7::i;:::-;:23;;;11482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11789:1:::1;11769:22;;:8;:22;;::::0;11761:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11845:19;11855:8;11845:9;:19::i;:::-;11680:192:::0;:::o;13824:39::-;;;;;;;;;;;;;;;;;;;:::o;13003:21::-;;;;;;;;;;;;;:::o;328:98::-;381:7;408:10;401:17;;328:98;:::o;9654:380::-;9807:1;9790:19;;:5;:19;;;9782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9888:1;9869:21;;:7;:21;;;9861:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9972:6;9942:11;:18;9954:5;9942:18;;;;;;;;;;;;;;;:27;9961:7;9942:27;;;;;;;;;;;;;;;:36;;;;10010:7;9994:32;;10003:5;9994:32;;;10019:6;9994:32;;;;;;:::i;:::-;;;;;;;;9654:380;;;:::o;16172:2537::-;16322:1;16313:6;:10;16305:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16387:9;:17;16397:6;16387:17;;;;;;;;;;;;;;;;;;;;;;;;;16386:18;:43;;;;;16409:9;:20;16419:9;16409:20;;;;;;;;;;;;;;;;;;;;;;;;;16408:21;16386:43;16382:122;;;16454:14;;;;;;;;;;;16446:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16382:122;16530:4;;;;;;;;;;;16520:14;;:6;:14;;;:39;;;;;16539:9;:20;16549:9;16539:20;;;;;;;;;;;;;;;;;;;;;;;;;16538:21;16520:39;:59;;;;;16564:15;;;;;;;;;;;16563:16;16520:59;16516:215;;;16637:14;;16627:6;16604:20;16614:9;16604;:20::i;:::-;:29;;;;:::i;:::-;:47;;16596:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;16516:215;16757:4;;;;;;;;;;;16747:14;;:6;:14;;;;:39;;;;;16766:9;:20;16776:9;16766:20;;;;;;;;;;;;;;;;;;;;;;;;;16765:21;16747:39;:61;;;;;16791:9;:17;16801:6;16791:17;;;;;;;;;;;;;;;;;;;;;;;;;16790:18;16747:61;:81;;;;;16813:15;;;;;;;;;;;16812:16;16747:81;16743:315;;;16875:4;;;;;;;;;;;16862:17;;:9;:17;;;16858:189;;16941:14;;16931:6;16908:20;16918:9;16908;:20::i;:::-;:29;;;;:::i;:::-;:47;;16900:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;16858:189;16743:315;17070:15;17096:14;17121:11;17143:25;;:::i;:::-;17181:17;17202:9;:17;17212:6;17202:17;;;;;;;;;;;;;;;;;;;;;;;;;17201:18;:56;;;;;17237:9;:20;17247:9;17237:20;;;;;;;;;;;;;;;;;;;;;;;;;17236:21;17201:56;:112;;;;;17305:8;;17289:13;;:24;;;;:::i;:::-;17274:12;:39;17201:112;17181:132;;17401:15;;;;;;;;;;;:36;;;;17420:9;:17;17430:6;17420:17;;;;;;;;;;;;;;;;;;;;;;;;;17401:36;:60;;;;17441:9;:20;17451:9;17441:20;;;;;;;;;;;;;;;;;;;;;;;;;17401:60;17397:728;;;17482:1;17476:7;;17397:728;;;17547:4;;;;;;;;;;;17534:17;;:9;:17;;;:34;;;;;17556:12;17555:13;17534:34;17530:595;;;17701:9;:13;;;17651:9;:19;;;17612:9;:19;;;:58;;;;:::i;:::-;:102;;;;:::i;:::-;17585:129;;17739:7;17730:16;;17776:9;17761:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17530:595;;;17808:12;17803:322;;17934:5;:9;;;17899:5;:15;;;17864:5;:15;;;:50;;;;:::i;:::-;:79;;;;:::i;:::-;17837:106;;17968:7;17959:16;;18005:5;17990:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17803:322;;;18032:12;18028:97;;;18071:9;;18061:19;;18104:9;;18095:18;;18028:97;17803:322;17530:595;17397:728;18163:3;18153:6;18144;:15;;;;:::i;:::-;18143:23;;;;:::i;:::-;18137:29;;18280:18;;;;;;;;;;;:36;;;;;18312:4;;;;;;;;;;;18302:14;;:6;:14;;;;18280:36;18276:76;;;18318:34;18330:7;18339:12;18318:11;:34::i;:::-;18276:76;18394:48;18410:6;18418:9;18438:3;18429:6;:12;;;;:::i;:::-;18394:15;:48::i;:::-;18463:1;18457:3;:7;18453:249;;;18539:1;18529:7;:11;18525:164;;;18561:17;18602:3;18591:7;18582:6;:16;;;;:::i;:::-;18581:24;;;;:::i;:::-;18561:44;;18624:49;18640:6;18656:4;18663:9;18624:15;:49::i;:::-;18542:147;18525:164;18453:249;16294:2415;;;;;16172:2537;;;:::o;11880:173::-;11936:16;11955:6;;;;;;;;;;;11936:25;;11981:8;11972:6;;:17;;;;;;;;;;;;;;;;;;12036:8;12005:40;;12026:8;12005:40;;;;;;;;;;;;11925:128;11880:173;:::o;18717:1593::-;13961:15;;;;;;;;;;;13956:125;;14011:4;13993:15;;:22;;;;;;;;;;;;;;;;;;18820:1:::1;18809:7;:12:::0;18806:49;18837:7:::1;18806:49;18870:23;18896:24;18914:4;18896:9;:24::i;:::-;18870:50;;18954:23;;18935:15;:42;18931:1372;;19024:1;18998:23;;:27;18994:109;;;19064:23;;19046:41;;18994:109;19174:19;19206:1;19196:7;:11;;;;:::i;:::-;19174:33;;19222:32;19316:11;19276:9;:19;;;19258:15;:37;;;;:::i;:::-;19257:70;;;;:::i;:::-;19222:105;;19342:14;19377:24;19359:15;:42;;;;:::i;:::-;19342:59;;19418:22;19443:21;19418:46;;19481:24;19498:6;19481:16;:24::i;:::-;19522:20;19569:14;19545:21;:38;;;;:::i;:::-;19522:61;;19598:19;19650:9;:19;;;19636:11;:33;;;;:::i;:::-;19620:12;:50;;;;:::i;:::-;19598:72;;19685:29;19731:9;:19;;;19717:11;:33;;;;:::i;:::-;19685:65;;19795:1;19771:21;:25;19767:161;;;19851:61;19864:24;19890:21;19851:12;:61::i;:::-;19767:161;19944:20;19985:9;:19;;;19981:1;19967:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;19944:60;;20038:1;20023:12;:16;20019:105;;;20060:48;20095:12;20068:15;;;;;;;;;;;20060:34;;;;:48;;;;:::i;:::-;20019:105;20140:14;20175:9;:13;;;20171:1;20157:11;:15;;;;:::i;:::-;:31;;;;:::i;:::-;20140:48;;20216:1;20207:6;:10;20203:87;;;20238:36;20267:6;20246:9;;;;;;;;;;;20238:28;;;;:36;;;;:::i;:::-;20203:87;18979:1324;;;;;;;;;18931:1372;18797:1513;14030:1;14064:5:::0;14046:15;;:23;;;;;;;;;;;;;;;;;;13956:125;18717:1593;;:::o;8029:638::-;8187:1;8169:20;;:6;:20;;;8161:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8271:1;8250:23;;:9;:23;;;8242:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8326:47;8347:6;8355:9;8366:6;8326:20;:47::i;:::-;8386:21;8410:9;:17;8420:6;8410:17;;;;;;;;;;;;;;;;8386:41;;8463:6;8446:13;:23;;8438:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8559:6;8543:13;:22;;;;:::i;:::-;8523:9;:17;8533:6;8523:17;;;;;;;;;;;;;;;:42;;;;8600:6;8576:9;:20;8586:9;8576:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8641:9;8624:35;;8633:6;8624:35;;;8652:6;8624:35;;;;;;:::i;:::-;;;;;;;;8150:517;8029:638;;;:::o;20318:526::-;20436:21;20474:1;20460:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20436:40;;20505:4;20487;20492:1;20487:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20531:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20521:4;20526:1;20521:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20557:53;20574:4;20589:6;;;;;;;;;;;20598:11;20557:8;:53::i;:::-;20649:6;;;;;;;;;;;:57;;;20721:11;20747:1;20763:4;20790;20810:15;20649:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20373:471;20318:526;:::o;20852:499::-;21000:53;21017:4;21032:6;;;;;;;;;;;21041:11;21000:8;:53::i;:::-;21096:6;;;;;;;;;;;:22;;;21127:9;21161:4;21181:11;21207:1;21250;21293:9;;;;;;;;;;;21317:15;21096:247;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20852:499;;:::o;10798:319::-;10913:6;10888:21;:31;;10880:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10967:12;10985:9;:14;;11008:6;10985:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10966:54;;;11039:7;11031:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10869:248;10798:319;;:::o;10643: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:227;14214:34;14210:1;14202:6;14198:14;14191:58;14283:10;14278:2;14270:6;14266:15;14259:35;14074:227;:::o;14307:366::-;14449:3;14470:67;14534:2;14529:3;14470:67;:::i;:::-;14463:74;;14546:93;14635:3;14546:93;:::i;:::-;14664:2;14659:3;14655:12;14648:19;;14307:366;;;:::o;14679:419::-;14845:4;14883:2;14872:9;14868:18;14860:26;;14932:9;14926:4;14922:20;14918:1;14907:9;14903:17;14896:47;14960:131;15086:4;14960:131;:::i;:::-;14952:139;;14679:419;;;:::o;15104:180::-;15152:77;15149:1;15142:88;15249:4;15246:1;15239:15;15273:4;15270:1;15263:15;15290:194;15330:4;15350:20;15368:1;15350:20;:::i;:::-;15345:25;;15384:20;15402:1;15384:20;:::i;:::-;15379:25;;15428:1;15425;15421:9;15413:17;;15452:1;15446:4;15443:11;15440:37;;;15457:18;;:::i;:::-;15440:37;15290:194;;;;:::o;15490:178::-;15630:30;15626:1;15618:6;15614:14;15607:54;15490:178;:::o;15674:366::-;15816:3;15837:67;15901:2;15896:3;15837:67;:::i;:::-;15830:74;;15913:93;16002:3;15913:93;:::i;:::-;16031:2;16026:3;16022:12;16015:19;;15674:366;;;:::o;16046:419::-;16212:4;16250:2;16239:9;16235:18;16227:26;;16299:9;16293:4;16289:20;16285:1;16274:9;16270:17;16263:47;16327:131;16453:4;16327:131;:::i;:::-;16319:139;;16046:419;;;:::o;16471:191::-;16511:3;16530:20;16548:1;16530:20;:::i;:::-;16525:25;;16564:20;16582:1;16564:20;:::i;:::-;16559:25;;16607:1;16604;16600:9;16593:16;;16628:3;16625:1;16622:10;16619:36;;;16635:18;;:::i;:::-;16619:36;16471:191;;;;:::o;16668:222::-;16808:34;16804:1;16796:6;16792:14;16785:58;16877:5;16872:2;16864:6;16860:15;16853:30;16668:222;:::o;16896:366::-;17038:3;17059:67;17123:2;17118:3;17059:67;:::i;:::-;17052:74;;17135:93;17224:3;17135:93;:::i;:::-;17253:2;17248:3;17244:12;17237:19;;16896:366;;;:::o;17268:419::-;17434:4;17472:2;17461:9;17457:18;17449:26;;17521:9;17515:4;17511:20;17507:1;17496:9;17492:17;17485:47;17549:131;17675:4;17549:131;:::i;:::-;17541:139;;17268:419;;;:::o;17693:102::-;17735:8;17782:5;17779:1;17775:13;17754:34;;17693:102;;;:::o;17801:848::-;17862:5;17869:4;17893:6;17884:15;;17917:5;17908:14;;17931:712;17952:1;17942:8;17939:15;17931:712;;;18047:4;18042:3;18038:14;18032:4;18029:24;18026:50;;;18056:18;;:::i;:::-;18026:50;18106:1;18096:8;18092:16;18089:451;;;18521:4;18514:5;18510:16;18501:25;;18089:451;18571:4;18565;18561:15;18553:23;;18601:32;18624:8;18601:32;:::i;:::-;18589:44;;17931:712;;;17801:848;;;;;;;:::o;18655:1073::-;18709:5;18900:8;18890:40;;18921:1;18912:10;;18923:5;;18890:40;18949:4;18939:36;;18966:1;18957:10;;18968:5;;18939:36;19035:4;19083:1;19078:27;;;;19119:1;19114:191;;;;19028:277;;19078:27;19096:1;19087:10;;19098:5;;;19114:191;19159:3;19149:8;19146:17;19143:43;;;19166:18;;:::i;:::-;19143:43;19215:8;19212:1;19208:16;19199:25;;19250:3;19243:5;19240:14;19237:40;;;19257:18;;:::i;:::-;19237:40;19290:5;;;19028:277;;19414:2;19404:8;19401:16;19395:3;19389:4;19386:13;19382:36;19364:2;19354:8;19351:16;19346:2;19340:4;19337:12;19333:35;19317:111;19314:246;;;19470:8;19464:4;19460:19;19451:28;;19505:3;19498:5;19495:14;19492:40;;;19512:18;;:::i;:::-;19492:40;19545:5;;19314:246;19585:42;19623:3;19613:8;19607:4;19604:1;19585:42;:::i;:::-;19570:57;;;;19659:4;19654:3;19650:14;19643:5;19640:25;19637:51;;;19668:18;;:::i;:::-;19637:51;19717:4;19710:5;19706:16;19697:25;;18655:1073;;;;;;:::o;19734:281::-;19792:5;19816:23;19834:4;19816:23;:::i;:::-;19808:31;;19860:25;19876:8;19860:25;:::i;:::-;19848:37;;19904:104;19941:66;19931:8;19925:4;19904:104;:::i;:::-;19895:113;;19734:281;;;;:::o;20021:410::-;20061:7;20084:20;20102:1;20084:20;:::i;:::-;20079:25;;20118:20;20136:1;20118:20;:::i;:::-;20113:25;;20173:1;20170;20166:9;20195:30;20213:11;20195:30;:::i;:::-;20184:41;;20374:1;20365:7;20361:15;20358:1;20355:22;20335:1;20328:9;20308:83;20285:139;;20404:18;;:::i;:::-;20285:139;20069:362;20021:410;;;;:::o;20437:175::-;20577:27;20573:1;20565:6;20561:14;20554:51;20437:175;:::o;20618:366::-;20760:3;20781:67;20845:2;20840:3;20781:67;:::i;:::-;20774:74;;20857:93;20946:3;20857:93;:::i;:::-;20975:2;20970:3;20966:12;20959:19;;20618:366;;;:::o;20990:419::-;21156:4;21194:2;21183:9;21179:18;21171:26;;21243:9;21237:4;21233:20;21229:1;21218:9;21214:17;21207:47;21271:131;21397:4;21271:131;:::i;:::-;21263:139;;20990:419;;;:::o;21415:176::-;21555:28;21551:1;21543:6;21539:14;21532:52;21415:176;:::o;21597:366::-;21739:3;21760:67;21824:2;21819:3;21760:67;:::i;:::-;21753:74;;21836:93;21925:3;21836:93;:::i;:::-;21954:2;21949:3;21945:12;21938:19;;21597:366;;;:::o;21969:419::-;22135:4;22173:2;22162:9;22158:18;22150:26;;22222:9;22216:4;22212:20;22208:1;22197:9;22193:17;22186:47;22250:131;22376:4;22250:131;:::i;:::-;22242:139;;21969:419;;;:::o;22394:332::-;22515:4;22553:2;22542:9;22538:18;22530:26;;22566:71;22634:1;22623:9;22619:17;22610:6;22566:71;:::i;:::-;22647:72;22715:2;22704:9;22700:18;22691:6;22647:72;:::i;:::-;22394:332;;;;;:::o;22732:137::-;22786:5;22817:6;22811:13;22802:22;;22833:30;22857:5;22833:30;:::i;:::-;22732:137;;;;:::o;22875:345::-;22942:6;22991:2;22979:9;22970:7;22966:23;22962:32;22959:119;;;22997:79;;:::i;:::-;22959:119;23117:1;23142:61;23195:7;23186:6;23175:9;23171:22;23142:61;:::i;:::-;23132:71;;23088:125;22875:345;;;;:::o;23226:224::-;23366:34;23362:1;23354:6;23350:14;23343:58;23435:7;23430:2;23422:6;23418:15;23411:32;23226:224;:::o;23456:366::-;23598:3;23619:67;23683:2;23678:3;23619:67;:::i;:::-;23612:74;;23695:93;23784:3;23695:93;:::i;:::-;23813:2;23808:3;23804:12;23797:19;;23456:366;;;:::o;23828:419::-;23994:4;24032:2;24021:9;24017:18;24009:26;;24081:9;24075:4;24071:20;24067:1;24056:9;24052:17;24045:47;24109:131;24235:4;24109:131;:::i;:::-;24101:139;;23828:419;;;:::o;24253:225::-;24393:34;24389:1;24381:6;24377:14;24370:58;24462:8;24457:2;24449:6;24445:15;24438:33;24253:225;:::o;24484:366::-;24626:3;24647:67;24711:2;24706:3;24647:67;:::i;:::-;24640:74;;24723:93;24812:3;24723:93;:::i;:::-;24841:2;24836:3;24832:12;24825:19;;24484:366;;;:::o;24856:419::-;25022:4;25060:2;25049:9;25045:18;25037:26;;25109:9;25103:4;25099:20;25095:1;25084:9;25080:17;25073:47;25137:131;25263:4;25137:131;:::i;:::-;25129:139;;24856:419;;;:::o;25281:223::-;25421:34;25417:1;25409:6;25405:14;25398:58;25490:6;25485:2;25477:6;25473:15;25466:31;25281:223;:::o;25510:366::-;25652:3;25673:67;25737:2;25732:3;25673:67;:::i;:::-;25666:74;;25749:93;25838:3;25749:93;:::i;:::-;25867:2;25862:3;25858:12;25851:19;;25510:366;;;:::o;25882:419::-;26048:4;26086:2;26075:9;26071:18;26063:26;;26135:9;26129:4;26125:20;26121:1;26110:9;26106:17;26099:47;26163:131;26289:4;26163:131;:::i;:::-;26155:139;;25882:419;;;:::o;26307:221::-;26447:34;26443:1;26435:6;26431:14;26424:58;26516:4;26511:2;26503:6;26499:15;26492:29;26307:221;:::o;26534:366::-;26676:3;26697:67;26761:2;26756:3;26697:67;:::i;:::-;26690:74;;26773:93;26862:3;26773:93;:::i;:::-;26891:2;26886:3;26882:12;26875:19;;26534:366;;;:::o;26906:419::-;27072:4;27110:2;27099:9;27095:18;27087:26;;27159:9;27153:4;27149:20;27145:1;27134:9;27130:17;27123:47;27187:131;27313:4;27187:131;:::i;:::-;27179:139;;26906:419;;;:::o;27331:228::-;27471:34;27467:1;27459:6;27455:14;27448:58;27540:11;27535:2;27527:6;27523:15;27516:36;27331:228;:::o;27565:366::-;27707:3;27728:67;27792:2;27787:3;27728:67;:::i;:::-;27721:74;;27804:93;27893:3;27804:93;:::i;:::-;27922:2;27917:3;27913:12;27906:19;;27565:366;;;:::o;27937:419::-;28103:4;28141:2;28130:9;28126:18;28118:26;;28190:9;28184:4;28180:20;28176:1;28165:9;28161:17;28154:47;28218:131;28344:4;28218:131;:::i;:::-;28210:139;;27937:419;;;:::o;28362:169::-;28502:21;28498:1;28490:6;28486:14;28479:45;28362:169;:::o;28537:366::-;28679:3;28700:67;28764:2;28759:3;28700:67;:::i;:::-;28693:74;;28776:93;28865:3;28776:93;:::i;:::-;28894:2;28889:3;28885:12;28878:19;;28537:366;;;:::o;28909:419::-;29075:4;29113:2;29102:9;29098:18;29090:26;;29162:9;29156:4;29152:20;29148:1;29137:9;29133:17;29126:47;29190:131;29316:4;29190:131;:::i;:::-;29182:139;;28909:419;;;:::o;29334:182::-;29474:34;29470:1;29462:6;29458:14;29451:58;29334:182;:::o;29522:366::-;29664:3;29685:67;29749:2;29744:3;29685:67;:::i;:::-;29678:74;;29761:93;29850:3;29761:93;:::i;:::-;29879:2;29874:3;29870:12;29863:19;;29522:366;;;:::o;29894:419::-;30060:4;30098:2;30087:9;30083:18;30075:26;;30147:9;30141:4;30137:20;30133:1;30122:9;30118:17;30111:47;30175:131;30301:4;30175:131;:::i;:::-;30167:139;;29894:419;;;:::o;30319:180::-;30367:77;30364:1;30357:88;30464:4;30461:1;30454:15;30488:4;30485:1;30478:15;30505:185;30545:1;30562:20;30580:1;30562:20;:::i;:::-;30557:25;;30596:20;30614:1;30596:20;:::i;:::-;30591:25;;30635:1;30625:35;;30640:18;;:::i;:::-;30625:35;30682:1;30679;30675:9;30670:14;;30505:185;;;;:::o;30696:224::-;30836:34;30832:1;30824:6;30820:14;30813:58;30905:7;30900:2;30892:6;30888:15;30881:32;30696:224;:::o;30926:366::-;31068:3;31089:67;31153:2;31148:3;31089:67;:::i;:::-;31082:74;;31165:93;31254:3;31165:93;:::i;:::-;31283:2;31278:3;31274:12;31267:19;;30926:366;;;:::o;31298:419::-;31464:4;31502:2;31491:9;31487:18;31479:26;;31551:9;31545:4;31541:20;31537:1;31526:9;31522:17;31515:47;31579:131;31705:4;31579:131;:::i;:::-;31571:139;;31298:419;;;:::o;31723:222::-;31863:34;31859:1;31851:6;31847:14;31840:58;31932:5;31927:2;31919:6;31915:15;31908:30;31723:222;:::o;31951:366::-;32093:3;32114:67;32178:2;32173:3;32114:67;:::i;:::-;32107:74;;32190:93;32279:3;32190:93;:::i;:::-;32308:2;32303:3;32299:12;32292:19;;31951:366;;;:::o;32323:419::-;32489:4;32527:2;32516:9;32512:18;32504:26;;32576:9;32570:4;32566:20;32562:1;32551:9;32547:17;32540:47;32604:131;32730:4;32604:131;:::i;:::-;32596:139;;32323:419;;;:::o;32748:225::-;32888:34;32884:1;32876:6;32872:14;32865:58;32957:8;32952:2;32944:6;32940:15;32933:33;32748:225;:::o;32979:366::-;33121:3;33142:67;33206:2;33201:3;33142:67;:::i;:::-;33135:74;;33218:93;33307:3;33218:93;:::i;:::-;33336:2;33331:3;33327:12;33320:19;;32979:366;;;:::o;33351:419::-;33517:4;33555:2;33544:9;33540:18;33532:26;;33604:9;33598:4;33594:20;33590:1;33579:9;33575:17;33568:47;33632:131;33758:4;33632:131;:::i;:::-;33624:139;;33351:419;;;:::o;33776:143::-;33833:5;33864:6;33858:13;33849:22;;33880:33;33907:5;33880:33;:::i;:::-;33776:143;;;;:::o;33925:351::-;33995:6;34044:2;34032:9;34023:7;34019:23;34015:32;34012:119;;;34050:79;;:::i;:::-;34012:119;34170:1;34195:64;34251:7;34242:6;34231:9;34227:22;34195:64;:::i;:::-;34185:74;;34141:128;33925:351;;;;:::o;34282:85::-;34327:7;34356:5;34345:16;;34282:85;;;:::o;34373:158::-;34431:9;34464:61;34482:42;34491:32;34517:5;34491:32;:::i;:::-;34482:42;:::i;:::-;34464:61;:::i;:::-;34451:74;;34373:158;;;:::o;34537:147::-;34632:45;34671:5;34632:45;:::i;:::-;34627:3;34620:58;34537:147;;:::o;34690:114::-;34757:6;34791:5;34785:12;34775:22;;34690:114;;;:::o;34810:184::-;34909:11;34943:6;34938:3;34931:19;34983:4;34978:3;34974:14;34959:29;;34810:184;;;;:::o;35000:132::-;35067:4;35090:3;35082:11;;35120:4;35115:3;35111:14;35103:22;;35000:132;;;:::o;35138:108::-;35215:24;35233:5;35215:24;:::i;:::-;35210:3;35203:37;35138:108;;:::o;35252:179::-;35321:10;35342:46;35384:3;35376:6;35342:46;:::i;:::-;35420:4;35415:3;35411:14;35397:28;;35252:179;;;;:::o;35437:113::-;35507:4;35539;35534:3;35530:14;35522:22;;35437:113;;;:::o;35586:732::-;35705:3;35734:54;35782:5;35734:54;:::i;:::-;35804:86;35883:6;35878:3;35804:86;:::i;:::-;35797:93;;35914:56;35964:5;35914:56;:::i;:::-;35993:7;36024:1;36009:284;36034:6;36031:1;36028:13;36009:284;;;36110:6;36104:13;36137:63;36196:3;36181:13;36137:63;:::i;:::-;36130:70;;36223:60;36276:6;36223:60;:::i;:::-;36213:70;;36069:224;36056:1;36053;36049:9;36044:14;;36009:284;;;36013:14;36309:3;36302:10;;35710:608;;;35586:732;;;;:::o;36324:831::-;36587:4;36625:3;36614:9;36610:19;36602:27;;36639:71;36707:1;36696:9;36692:17;36683:6;36639:71;:::i;:::-;36720:80;36796:2;36785:9;36781:18;36772:6;36720:80;:::i;:::-;36847:9;36841:4;36837:20;36832:2;36821:9;36817:18;36810:48;36875:108;36978:4;36969:6;36875:108;:::i;:::-;36867:116;;36993:72;37061:2;37050:9;37046:18;37037:6;36993:72;:::i;:::-;37075:73;37143:3;37132:9;37128:19;37119:6;37075:73;:::i;:::-;36324:831;;;;;;;;:::o;37161:807::-;37410:4;37448:3;37437:9;37433:19;37425:27;;37462:71;37530:1;37519:9;37515:17;37506:6;37462:71;:::i;:::-;37543:72;37611:2;37600:9;37596:18;37587:6;37543:72;:::i;:::-;37625:80;37701:2;37690:9;37686:18;37677:6;37625:80;:::i;:::-;37715;37791:2;37780:9;37776:18;37767:6;37715:80;:::i;:::-;37805:73;37873:3;37862:9;37858:19;37849:6;37805:73;:::i;:::-;37888;37956:3;37945:9;37941:19;37932:6;37888:73;:::i;:::-;37161:807;;;;;;;;;:::o;37974:143::-;38031:5;38062:6;38056:13;38047:22;;38078:33;38105:5;38078:33;:::i;:::-;37974:143;;;;:::o;38123:663::-;38211:6;38219;38227;38276:2;38264:9;38255:7;38251:23;38247:32;38244:119;;;38282:79;;:::i;:::-;38244:119;38402:1;38427:64;38483:7;38474:6;38463:9;38459:22;38427:64;:::i;:::-;38417:74;;38373:128;38540:2;38566:64;38622:7;38613:6;38602:9;38598:22;38566:64;:::i;:::-;38556:74;;38511:129;38679:2;38705:64;38761:7;38752:6;38741:9;38737:22;38705:64;:::i;:::-;38695:74;;38650:129;38123:663;;;;;:::o;38792:179::-;38932:31;38928:1;38920:6;38916:14;38909:55;38792:179;:::o;38977:366::-;39119:3;39140:67;39204:2;39199:3;39140:67;:::i;:::-;39133:74;;39216:93;39305:3;39216:93;:::i;:::-;39334:2;39329:3;39325:12;39318:19;;38977:366;;;:::o;39349:419::-;39515:4;39553:2;39542:9;39538:18;39530:26;;39602:9;39596:4;39592:20;39588:1;39577:9;39573:17;39566:47;39630:131;39756:4;39630:131;:::i;:::-;39622:139;;39349:419;;;:::o;39774:147::-;39875:11;39912:3;39897:18;;39774:147;;;;:::o;39927:114::-;;:::o;40047:398::-;40206:3;40227:83;40308:1;40303:3;40227:83;:::i;:::-;40220:90;;40319:93;40408:3;40319:93;:::i;:::-;40437:1;40432:3;40428:11;40421:18;;40047:398;;;:::o;40451:379::-;40635:3;40657:147;40800:3;40657:147;:::i;:::-;40650:154;;40821:3;40814:10;;40451:379;;;:::o;40836:245::-;40976:34;40972:1;40964:6;40960:14;40953:58;41045:28;41040:2;41032:6;41028:15;41021:53;40836:245;:::o;41087:366::-;41229:3;41250:67;41314:2;41309:3;41250:67;:::i;:::-;41243:74;;41326:93;41415:3;41326:93;:::i;:::-;41444:2;41439:3;41435:12;41428:19;;41087:366;;;:::o;41459:419::-;41625:4;41663:2;41652:9;41648:18;41640:26;;41712:9;41706:4;41702:20;41698:1;41687:9;41683:17;41676:47;41740:131;41866:4;41740:131;:::i;:::-;41732:139;;41459:419;;;:::o

Swarm Source

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