ETH Price: $2,741.21 (-0.14%)

Contract

0xff8142744995Fc7584C435382f33559f26522adB
 

Overview

ETH Balance

0.266843705525085739 ETH

Eth Value

$731.47 (@ $2,741.21/ETH)

Token Holdings

Transaction Hash
Method
Block
From
To
Approve168798712023-03-22 1:29:47523 days ago1679448587IN
0xff814274...f26522adB
0 ETH0.0006048412.81590435
Approve168039052023-03-11 9:19:11533 days ago1678526351IN
0xff814274...f26522adB
0 ETH0.00570195120.66359722
Approve166596652023-02-19 2:27:23554 days ago1676773643IN
0xff814274...f26522adB
0 ETH0.0013677228.98037343
Rescue ERC20166031512023-02-11 4:31:59562 days ago1676089919IN
0xff814274...f26522adB
0 ETH0.0012940318.34134287
Approve166023642023-02-11 1:53:23562 days ago1676080403IN
0xff814274...f26522adB
0 ETH0.0008384117.76495497
Approve166008372023-02-10 20:46:35562 days ago1676061995IN
0xff814274...f26522adB
0 ETH0.0009507120.11882658
Approve166007802023-02-10 20:35:11562 days ago1676061311IN
0xff814274...f26522adB
0 ETH0.0010627322.51797012
Approve166004962023-02-10 19:38:23562 days ago1676057903IN
0xff814274...f26522adB
0 ETH0.0008942418.94796552
Approve166004022023-02-10 19:19:35562 days ago1676056775IN
0xff814274...f26522adB
0 ETH0.0009331219.77174374
Approve166003372023-02-10 19:06:35562 days ago1676055995IN
0xff814274...f26522adB
0 ETH0.0023627550
Approve166002602023-02-10 18:51:11562 days ago1676055071IN
0xff814274...f26522adB
0 ETH0.0012770727.02522939
Approve166002532023-02-10 18:49:47562 days ago1676054987IN
0xff814274...f26522adB
0 ETH0.0010147121.50049322
Approve166002262023-02-10 18:44:23562 days ago1676054663IN
0xff814274...f26522adB
0 ETH0.0011444724.21910111
Approve166002042023-02-10 18:39:59562 days ago1676054399IN
0xff814274...f26522adB
0 ETH0.0012720826.95377638
Approve166002002023-02-10 18:39:11562 days ago1676054351IN
0xff814274...f26522adB
0 ETH0.0009613620.36995656
Approve166001632023-02-10 18:31:47562 days ago1676053907IN
0xff814274...f26522adB
0 ETH0.0011066823.44927562
Approve166001342023-02-10 18:25:59562 days ago1676053559IN
0xff814274...f26522adB
0 ETH0.0014194830.07706351
Approve166001242023-02-10 18:23:59562 days ago1676053439IN
0xff814274...f26522adB
0 ETH0.0019990742.30390915
Approve166001132023-02-10 18:21:47562 days ago1676053307IN
0xff814274...f26522adB
0 ETH0.0014917831.56883671
Approve166001012023-02-10 18:19:23562 days ago1676053163IN
0xff814274...f26522adB
0 ETH0.0013155127.83874091
Approve166001012023-02-10 18:19:23562 days ago1676053163IN
0xff814274...f26522adB
0 ETH0.0013155127.83874091
Approve166001012023-02-10 18:19:23562 days ago1676053163IN
0xff814274...f26522adB
0 ETH0.0013155127.83874091
Approve166001012023-02-10 18:19:23562 days ago1676053163IN
0xff814274...f26522adB
0 ETH0.0013155127.83874091
Approve166001012023-02-10 18:19:23562 days ago1676053163IN
0xff814274...f26522adB
0 ETH0.0013155127.83874091
Approve166000912023-02-10 18:17:23562 days ago1676053043IN
0xff814274...f26522adB
0 ETH0.0013969729.56246802
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
166596692023-02-19 2:28:11554 days ago1676773691
0xff814274...f26522adB
0.00412041 ETH
166596692023-02-19 2:28:11554 days ago1676773691
0xff814274...f26522adB
0.00618061 ETH
166596692023-02-19 2:28:11554 days ago1676773691
0xff814274...f26522adB
0.01030102 ETH
166008092023-02-10 20:40:59562 days ago1676061659
0xff814274...f26522adB
0.00499632 ETH
166008092023-02-10 20:40:59562 days ago1676061659
0xff814274...f26522adB
0.00749449 ETH
166008092023-02-10 20:40:59562 days ago1676061659
0xff814274...f26522adB
0.01249081 ETH
166006162023-02-10 20:02:23562 days ago1676059343
0xff814274...f26522adB
0.00542338 ETH
166006162023-02-10 20:02:23562 days ago1676059343
0xff814274...f26522adB
0.00813508 ETH
166006162023-02-10 20:02:23562 days ago1676059343
0xff814274...f26522adB
0.01355847 ETH
166005662023-02-10 19:52:23562 days ago1676058743
0xff814274...f26522adB
0.00566142 ETH
166005662023-02-10 19:52:23562 days ago1676058743
0xff814274...f26522adB
0.00849214 ETH
166005662023-02-10 19:52:23562 days ago1676058743
0xff814274...f26522adB
0.01415357 ETH
166005352023-02-10 19:46:11562 days ago1676058371
0xff814274...f26522adB
0.0059856 ETH
166005352023-02-10 19:46:11562 days ago1676058371
0xff814274...f26522adB
0.0089784 ETH
166005352023-02-10 19:46:11562 days ago1676058371
0xff814274...f26522adB
0.014964 ETH
166005032023-02-10 19:39:47562 days ago1676057987
0xff814274...f26522adB
0.00614148 ETH
166005032023-02-10 19:39:47562 days ago1676057987
0xff814274...f26522adB
0.00921222 ETH
166005032023-02-10 19:39:47562 days ago1676057987
0xff814274...f26522adB
0.01535371 ETH
166005022023-02-10 19:39:35562 days ago1676057975
0xff814274...f26522adB
0.00641862 ETH
166005022023-02-10 19:39:35562 days ago1676057975
0xff814274...f26522adB
0.00962794 ETH
166005022023-02-10 19:39:35562 days ago1676057975
0xff814274...f26522adB
0.01604656 ETH
166004992023-02-10 19:38:59562 days ago1676057939
0xff814274...f26522adB
0.00670622 ETH
166004992023-02-10 19:38:59562 days ago1676057939
0xff814274...f26522adB
0.01005934 ETH
166004992023-02-10 19:38:59562 days ago1676057939
0xff814274...f26522adB
0.01676556 ETH
166004402023-02-10 19:27:11562 days ago1676057231
0xff814274...f26522adB
0.00684064 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MANGAAI

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-10
*/

/*
Buy & Sell Tax: 5%

Telegram: https://t.me/MangaAI_portal
Twitter: https://twitter.com/MangaAI_erc20
Website: http://mangaai.space/

*/
pragma solidity ^0.8.17;

//SPDX-License-Identifier: UNLICENSED

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

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

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

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

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

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

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

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

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

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

    /**
     * @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];
    }

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

    /** 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 MANGAAI is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

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

    uint256 public tokenLiquidityThreshold = 4e6 * 10**18;
    uint256 public maxWalletLimit = 2e7 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline = 2;
    uint256 private launchtax = 30;

    address public marketingWallet = 0x6237E6D559c2B4439D8Fa473cb45cc64957013f8;
    address private devWallet = 0xfeFB84939dA01Fbb7533aF92Fa8DD50F4e22D24d;
    address public constant deadWallet =
        0x000000000000000000000000000000000000dEaD;

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

    Taxes private taxes = Taxes(5, 0, 5);
    Taxes private sellTaxes = Taxes(5, 0, 5);

    uint256 public TotalBuyFee = taxes.marketing + taxes.liquidity + taxes.dev;
    uint256 public TotalSellFee =
        sellTaxes.marketing + sellTaxes.liquidity + sellTaxes.dev;

    mapping(address => bool) public exemptFee;
    mapping(address => bool) public isearlybuyer;

    //Anti Dump
    mapping(address => uint256) private _lastSell;

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

    constructor() ERC20("Manga AI", "MANGAAI") {
        _tokengeneration(msg.sender, 1e9 * 10**decimals());
        exemptFee[msg.sender] = true;

        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[marketingWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0x6237E6D559c2B4439D8Fa473cb45cc64957013f8] = true;
        exemptFee[0xfeFB84939dA01Fbb7533aF92Fa8DD50F4e22D24d] = 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");
        require(
            !isearlybuyer[sender] && !isearlybuyer[recipient],
            "You can't transfer tokens"
        );

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

        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 updateLiquidityProvide(bool state) external onlyOwner {
        providingLiquidity = state;
    }

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

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

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

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

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        require(_deadline < 15, "Block should be less than 15");
        deadline = _deadline;
    }

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

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

    function updateIsEarlyBuyer(address account, bool state)
        external
        onlyOwner
    {
        isearlybuyer[account] = state;
    }

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

    function setLaunchtax(uint256 _launchtax) external onlyOwner {
        launchtax = _launchtax;
    }

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

    function updateMaxTxLimit(uint256 maxWallet) external onlyOwner {
        require(
            maxWallet >= 1e6,
            "Cannot set max wallet amount lower than 0.1%"
        );
        maxWalletLimit = maxWallet * 10**decimals();
    }

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

    function updateExemptFee(address _address, bool state) external onlyOwner {
        exemptFee[_address] = state;
    }

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

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"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":[],"name":"TotalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsEarlyBuyer","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":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isearlybuyer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"_launchtax","type":"uint256"}],"name":"setLaunchtax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsEarlyBuyer","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":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff0219169083151502179055506a034f086f3b33b6840000006008556a108b2a2c280290940000006009556002600b55601e600c55736237e6d559c2b4439d8fa473cb45cc64957013f8600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fefb84939da01fbb7533af92fa8dd50f4e22d24d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060058152602001600081526020016005815250600f600082015181600001556020820151816001015560408201518160020155505060405180606001604052806005815260200160008152602001600581525060126000820151816000015560208201518160010155604082015181600201555050600f60020154600f60010154600f60000154620001c5919062000a34565b620001d1919062000a34565b601555601260020154601260010154601260000154620001f2919062000a34565b620001fe919062000a34565b6016553480156200020e57600080fd5b506040518060400160405280600881526020017f4d616e67612041490000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f4d414e474141490000000000000000000000000000000000000000000000000081525081600390816200028c919062000cdf565b5080600490816200029e919062000cdf565b505050620002c1620002b5620007e360201b60201c565b620007eb60201b60201c565b6200030133620002d6620008b160201b60201c565b600a620002e4919062000f27565b633b9aca00620002f5919062000f78565b620008ba60201b60201c565b6001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e691906200102d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200044e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047491906200102d565b6040518363ffffffff1660e01b81526004016200049392919062001070565b6020604051808303816000875af1158015620004b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d991906200102d565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016017600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000736237e6d559c2b4439d8fa473cb45cc64957013f873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016017600073fefb84939da01fbb7533af92fa8dd50f4e22d24d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062001174565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200092c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009239062001124565b60405180910390fd5b6200094060008383620009f660201b60201c565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009ea919062001157565b60405180910390a35050565b505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a4182620009fb565b915062000a4e83620009fb565b925082820190508082111562000a695762000a6862000a05565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000af157607f821691505b60208210810362000b075762000b0662000aa9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b32565b62000b7d868362000b32565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000bc062000bba62000bb484620009fb565b62000b95565b620009fb565b9050919050565b6000819050919050565b62000bdc8362000b9f565b62000bf462000beb8262000bc7565b84845462000b3f565b825550505050565b600090565b62000c0b62000bfc565b62000c1881848462000bd1565b505050565b5b8181101562000c405762000c3460008262000c01565b60018101905062000c1e565b5050565b601f82111562000c8f5762000c598162000b0d565b62000c648462000b22565b8101602085101562000c74578190505b62000c8c62000c838562000b22565b83018262000c1d565b50505b505050565b600082821c905092915050565b600062000cb46000198460080262000c94565b1980831691505092915050565b600062000ccf838362000ca1565b9150826002028217905092915050565b62000cea8262000a6f565b67ffffffffffffffff81111562000d065762000d0562000a7a565b5b62000d12825462000ad8565b62000d1f82828562000c44565b600060209050601f83116001811462000d57576000841562000d42578287015190505b62000d4e858262000cc1565b86555062000dbe565b601f19841662000d678662000b0d565b60005b8281101562000d915784890151825560018201915060208501945060208101905062000d6a565b8683101562000db1578489015162000dad601f89168262000ca1565b8355505b6001600288020188555050505b505050505050565b60008160011c9050919050565b6000808291508390505b600185111562000e255780860481111562000dfd5762000dfc62000a05565b5b600185161562000e0d5780820291505b808102905062000e1d8562000dc6565b945062000ddd565b94509492505050565b60008262000e40576001905062000f13565b8162000e50576000905062000f13565b816001811462000e69576002811462000e745762000eaa565b600191505062000f13565b60ff84111562000e895762000e8862000a05565b5b8360020a91508482111562000ea35762000ea262000a05565b5b5062000f13565b5060208310610133831016604e8410600b841016171562000ee45782820a90508381111562000ede5762000edd62000a05565b5b62000f13565b62000ef3848484600162000dd3565b9250905081840481111562000f0d5762000f0c62000a05565b5b81810290505b9392505050565b600060ff82169050919050565b600062000f3482620009fb565b915062000f418362000f1a565b925062000f707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e2e565b905092915050565b600062000f8582620009fb565b915062000f9283620009fb565b925082820262000fa281620009fb565b9150828204841483151762000fbc5762000fbb62000a05565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ff58262000fc8565b9050919050565b620010078162000fe8565b81146200101357600080fd5b50565b600081519050620010278162000ffc565b92915050565b60006020828403121562001046576200104562000fc3565b5b6000620010568482850162001016565b91505092915050565b6200106a8162000fe8565b82525050565b60006040820190506200108760008301856200105f565b6200109660208301846200105f565b9392505050565b600082825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006200110c6025836200109d565b91506200111982620010ae565b604082019050919050565b600060208201905081810360008301526200113f81620010fd565b9050919050565b6200115181620009fb565b82525050565b60006020820190506200116e600083018462001146565b92915050565b6149e880620011846000396000f3fe6080604052600436106102605760003560e01c80637b46eee511610144578063a8aa1b31116100b6578063dc89f88c1161007a578063dc89f88c146108ef578063dd62ed3e1461091a578063edaa116814610957578063f2fde38b14610980578063f887ea40146109a9578063fbe6324e146109d457610267565b8063a8aa1b31146107f8578063a9059cbb14610823578063aacebbe314610860578063c2c327d114610889578063c5d32bb2146108b257610267565b80638da5cb5b116101085780638da5cb5b146106d657806395d89b41146107015780639d282cd61461072c5780639e252f0014610755578063a0cc1c2a1461077e578063a457c2d7146107bb57610267565b80637b46eee5146106175780638514022d1461064257806385141a771461066b5780638a8c523c146106965780638cd4426d146106ad57610267565b8063274a533c116101dd5780634ada218b116101a15780634ada218b146105195780634e736f221461054457806366a88d961461056d57806370a0823114610598578063715018a6146105d557806375f0a874146105ec57610267565b8063274a533c14610434578063313ce5671461045f578063355496ca1461048a57806339509351146104b357806342b6fa11146104f057610267565b80631675d802116102245780631675d8021461034f57806318160ddd1461037a5780631816467f146103a5578063215d92a6146103ce57806323b872dd146103f757610267565b806305410d1b1461026c57806306fdde0314610295578063095ea7b3146102c05780630e375a5c146102fd5780631340538f1461032657610267565b3661026757005b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613341565b6109ff565b005b3480156102a157600080fd5b506102aa610a85565b6040516102b791906133fe565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e2919061347e565b610b17565b6040516102f491906134d9565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190613668565b610b35565b005b34801561033257600080fd5b5061034d600480360381019061034891906136c4565b610c46565b005b34801561035b57600080fd5b50610364610cdf565b6040516103719190613700565b60405180910390f35b34801561038657600080fd5b5061038f610ce5565b60405161039c9190613700565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c7919061371b565b610cef565b005b3480156103da57600080fd5b506103f560048036038101906103f09190613668565b610daf565b005b34801561040357600080fd5b5061041e60048036038101906104199190613748565b610ec0565b60405161042b91906134d9565b60405180910390f35b34801561044057600080fd5b50610449610fc1565b6040516104569190613700565b60405180910390f35b34801561046b57600080fd5b50610474610fc7565b60405161048191906137b7565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac91906137d2565b610fd0565b005b3480156104bf57600080fd5b506104da60048036038101906104d5919061347e565b6110a7565b6040516104e791906134d9565b60405180910390f35b3480156104fc57600080fd5b5061051760048036038101906105129190613341565b611153565b005b34801561052557600080fd5b5061052e6111f7565b60405161053b91906134d9565b60405180910390f35b34801561055057600080fd5b5061056b60048036038101906105669190613812565b61120a565b005b34801561057957600080fd5b506105826112c9565b60405161058f9190613700565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba919061371b565b6112cf565b6040516105cc9190613700565b60405180910390f35b3480156105e157600080fd5b506105ea611317565b005b3480156105f857600080fd5b5061060161139f565b60405161060e9190613874565b60405180910390f35b34801561062357600080fd5b5061062c6113c5565b6040516106399190613700565b60405180910390f35b34801561064e57600080fd5b50610669600480360381019061066491906137d2565b6113cb565b005b34801561067757600080fd5b506106806114a2565b60405161068d9190613874565b60405180910390f35b3480156106a257600080fd5b506106ab6114a8565b005b3480156106b957600080fd5b506106d460048036038101906106cf919061347e565b6115b3565b005b3480156106e257600080fd5b506106eb611658565b6040516106f89190613874565b60405180910390f35b34801561070d57600080fd5b50610716611682565b60405161072391906133fe565b60405180910390f35b34801561073857600080fd5b50610753600480360381019061074e9190613812565b611714565b005b34801561076157600080fd5b5061077c60048036038101906107779190613341565b6117d3565b005b34801561078a57600080fd5b506107a560048036038101906107a0919061371b565b6118bb565b6040516107b291906134d9565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd919061347e565b6118db565b6040516107ef91906134d9565b60405180910390f35b34801561080457600080fd5b5061080d6119cf565b60405161081a9190613874565b60405180910390f35b34801561082f57600080fd5b5061084a6004803603810190610845919061347e565b6119f5565b60405161085791906134d9565b60405180910390f35b34801561086c57600080fd5b506108876004803603810190610882919061371b565b611a0c565b005b34801561089557600080fd5b506108b060048036038101906108ab9190613341565b611acc565b005b3480156108be57600080fd5b506108d960048036038101906108d4919061371b565b611bb6565b6040516108e691906134d9565b60405180910390f35b3480156108fb57600080fd5b50610904611bd6565b6040516109119190613700565b60405180910390f35b34801561092657600080fd5b50610941600480360381019061093c919061388f565b611bdc565b60405161094e9190613700565b60405180910390f35b34801561096357600080fd5b5061097e60048036038101906109799190613341565b611c63565b005b34801561098c57600080fd5b506109a760048036038101906109a2919061371b565b611d7c565b005b3480156109b557600080fd5b506109be611e73565b6040516109cb919061392e565b60405180910390f35b3480156109e057600080fd5b506109e9611e99565b6040516109f691906134d9565b60405180910390f35b610a07611eac565b73ffffffffffffffffffffffffffffffffffffffff16610a25611658565b73ffffffffffffffffffffffffffffffffffffffff1614610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7290613995565b60405180910390fd5b80600c8190555050565b606060038054610a94906139e4565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac0906139e4565b8015610b0d5780601f10610ae257610100808354040283529160200191610b0d565b820191906000526020600020905b815481529060010190602001808311610af057829003601f168201915b5050505050905090565b6000610b2b610b24611eac565b8484611eb4565b6001905092915050565b610b3d611eac565b73ffffffffffffffffffffffffffffffffffffffff16610b5b611658565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba890613995565b60405180910390fd5b60005b8251811015610c41578160176000858481518110610bd557610bd4613a15565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c3990613a73565b915050610bb4565b505050565b610c4e611eac565b73ffffffffffffffffffffffffffffffffffffffff16610c6c611658565b73ffffffffffffffffffffffffffffffffffffffff1614610cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb990613995565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60085481565b6000600254905090565b610cf7611eac565b73ffffffffffffffffffffffffffffffffffffffff16610d15611658565b73ffffffffffffffffffffffffffffffffffffffff1614610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290613995565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610db7611eac565b73ffffffffffffffffffffffffffffffffffffffff16610dd5611658565b73ffffffffffffffffffffffffffffffffffffffff1614610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2290613995565b60405180910390fd5b60005b8251811015610ebb578160186000858481518110610e4f57610e4e613a15565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610eb390613a73565b915050610e2e565b505050565b6000610ecd84848461207d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f18611eac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f90613b2d565b60405180910390fd5b610fb585610fa4611eac565b8584610fb09190613b4d565b611eb4565b60019150509392505050565b600a5481565b60006012905090565b610fd8611eac565b73ffffffffffffffffffffffffffffffffffffffff16610ff6611658565b73ffffffffffffffffffffffffffffffffffffffff161461104c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104390613995565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006111496110b4611eac565b8484600160006110c2611eac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111449190613b81565b611eb4565b6001905092915050565b61115b611eac565b73ffffffffffffffffffffffffffffffffffffffff16611179611658565b73ffffffffffffffffffffffffffffffffffffffff16146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690613995565b60405180910390fd5b6111d7610fc7565b600a6111e39190613ce8565b816111ee9190613d33565b60088190555050565b600760169054906101000a900460ff1681565b611212611eac565b73ffffffffffffffffffffffffffffffffffffffff16611230611658565b73ffffffffffffffffffffffffffffffffffffffff1614611286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127d90613995565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050505050565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61131f611eac565b73ffffffffffffffffffffffffffffffffffffffff1661133d611658565b73ffffffffffffffffffffffffffffffffffffffff1614611393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138a90613995565b60405180910390fd5b61139d600061293d565b565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6113d3611eac565b73ffffffffffffffffffffffffffffffffffffffff166113f1611658565b73ffffffffffffffffffffffffffffffffffffffff1614611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e90613995565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61dead81565b6114b0611eac565b73ffffffffffffffffffffffffffffffffffffffff166114ce611658565b73ffffffffffffffffffffffffffffffffffffffff1614611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613995565b60405180910390fd5b600760169054906101000a900460ff1615611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b90613dc1565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600a81905550565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611610929190613de1565b6020604051808303816000875af115801561162f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116539190613e1f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611691906139e4565b80601f01602080910402602001604051908101604052809291908181526020018280546116bd906139e4565b801561170a5780601f106116df5761010080835404028352916020019161170a565b820191906000526020600020905b8154815290600101906020018083116116ed57829003601f168201915b5050505050905090565b61171c611eac565b73ffffffffffffffffffffffffffffffffffffffff1661173a611658565b73ffffffffffffffffffffffffffffffffffffffff1614611790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178790613995565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050505050565b6117db611eac565b73ffffffffffffffffffffffffffffffffffffffff166117f9611658565b73ffffffffffffffffffffffffffffffffffffffff161461184f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184690613995565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156118b7573d6000803e3d6000fd5b5050565b60186020528060005260406000206000915054906101000a900460ff1681565b600080600160006118ea611eac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e90613ebe565b60405180910390fd5b6119c46119b2611eac565b8585846119bf9190613b4d565b611eb4565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611a0233848461207d565b6001905092915050565b611a14611eac565b73ffffffffffffffffffffffffffffffffffffffff16611a32611658565b73ffffffffffffffffffffffffffffffffffffffff1614611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f90613995565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4611eac565b73ffffffffffffffffffffffffffffffffffffffff16611af2611658565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f90613995565b60405180910390fd5b620f4240811015611b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8590613f50565b60405180910390fd5b611b96610fc7565b600a611ba29190613ce8565b81611bad9190613d33565b60098190555050565b60176020528060005260406000206000915054906101000a900460ff1681565b60165481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c6b611eac565b73ffffffffffffffffffffffffffffffffffffffff16611c89611658565b73ffffffffffffffffffffffffffffffffffffffff1614611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690613995565b60405180910390fd5b600760169054906101000a900460ff1615611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2690613fe2565b60405180910390fd5b600f8110611d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d699061404e565b60405180910390fd5b80600b8190555050565b611d84611eac565b73ffffffffffffffffffffffffffffffffffffffff16611da2611658565b73ffffffffffffffffffffffffffffffffffffffff1614611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def90613995565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5e906140e0565b60405180910390fd5b611e708161293d565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1a90614172565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990614204565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120709190613700565b60405180910390a3505050565b600081116120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790614296565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121645750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90614302565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122475750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561229c57600760169054906101000a900460ff1661229b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122929061436e565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123435750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561235c5750600760149054906101000a900460ff16155b156123ba576009548161236e846112cf565b6123789190613b81565b11156123b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b0906143da565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124625750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124b85750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124d15750600760149054906101000a900460ff16155b1561258557600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125845760095481612538846112cf565b6125429190613b81565b1115612583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257a906143da565b60405180910390fd5b5b5b60008060006125926132d6565b6000601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126385750601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126525750600b54600a5461264f9190613b81565b43105b9050600760149054906101000a900460ff16806126b85750601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061270c5750601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561271a576000925061284d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015612775575080155b156127d7576012600201546012600001546012600101546127969190613b81565b6127a09190613b81565b945084935060126040518060600160405290816000820154815260200160018201548152602001600282015481525050915061284c565b8061283957600f60020154600f60000154600f600101546127f89190613b81565b6128029190613b81565b9450849350600f6040518060600160405290816000820154815260200160018201548152602001600282015481525050915061284b565b801561284a57600c549450600c5493505b5b5b5b6064848761285b9190613d33565b6128659190614429565b9250600760159054906101000a900460ff1680156128d15750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156128e1576128e08583612a03565b5b6128f7888885896128f29190613b4d565b612c1d565b6000831115612933576000851115612932576000606486886129199190613d33565b6129239190614429565b9050612930893083612c1d565b505b5b5050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612c19576001600760146101000a81548160ff0219169083151502179055506000820315612bfd576000612a46306112cf565b90506008548110612bfb5760016008541115612a625760085490505b6000600284612a719190613d33565b9050600081846020015184612a869190613d33565b612a909190614429565b905060008184612aa09190613b4d565b90506000479050612ab082612e9a565b60008147612abe9190613b4d565b90506000876020015186612ad29190613b4d565b82612add9190614429565b90506000886020015182612af19190613d33565b90506000811115612b0757612b0686826130dd565b5b60008960000151600284612b1b9190613d33565b612b259190613d33565b90506000811115612b7c57612b7b81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166131dd90919063ffffffff16565b5b60008a60400151600285612b909190613d33565b612b9a9190613d33565b90506000811115612bf157612bf081600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166131dd90919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c83906144cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf29061455e565b60405180910390fd5b612d068383836132d1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d83906145f0565b60405180910390fd5b8181612d989190613b4d565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e289190613b81565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e8c9190613700565b60405180910390a350505050565b6000600267ffffffffffffffff811115612eb757612eb66134f9565b5b604051908082528060200260200182016040528015612ee55781602001602082028036833780820191505090505b5090503081600081518110612efd57612efc613a15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc89190614625565b81600181518110612fdc57612fdb613a15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061304330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611eb4565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130a795949392919061474b565b600060405180830381600087803b1580156130c157600080fd5b505af11580156130d5573d6000803e3d6000fd5b505050505050565b61310a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611eb4565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613193969594939291906147a5565b60606040518083038185885af11580156131b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131d6919061481b565b5050505050565b80471015613220576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613217906148ba565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516132469061490b565b60006040518083038185875af1925050503d8060008114613283576040519150601f19603f3d011682016040523d82523d6000602084013e613288565b606091505b50509050806132cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c390614992565b60405180910390fd5b505050565b505050565b60405180606001604052806000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61331e8161330b565b811461332957600080fd5b50565b60008135905061333b81613315565b92915050565b60006020828403121561335757613356613301565b5b60006133658482850161332c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133a857808201518184015260208101905061338d565b60008484015250505050565b6000601f19601f8301169050919050565b60006133d08261336e565b6133da8185613379565b93506133ea81856020860161338a565b6133f3816133b4565b840191505092915050565b6000602082019050818103600083015261341881846133c5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061344b82613420565b9050919050565b61345b81613440565b811461346657600080fd5b50565b60008135905061347881613452565b92915050565b6000806040838503121561349557613494613301565b5b60006134a385828601613469565b92505060206134b48582860161332c565b9150509250929050565b60008115159050919050565b6134d3816134be565b82525050565b60006020820190506134ee60008301846134ca565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613531826133b4565b810181811067ffffffffffffffff821117156135505761354f6134f9565b5b80604052505050565b60006135636132f7565b905061356f8282613528565b919050565b600067ffffffffffffffff82111561358f5761358e6134f9565b5b602082029050602081019050919050565b600080fd5b60006135b86135b384613574565b613559565b905080838252602082019050602084028301858111156135db576135da6135a0565b5b835b8181101561360457806135f08882613469565b8452602084019350506020810190506135dd565b5050509392505050565b600082601f830112613623576136226134f4565b5b81356136338482602086016135a5565b91505092915050565b613645816134be565b811461365057600080fd5b50565b6000813590506136628161363c565b92915050565b6000806040838503121561367f5761367e613301565b5b600083013567ffffffffffffffff81111561369d5761369c613306565b5b6136a98582860161360e565b92505060206136ba85828601613653565b9150509250929050565b6000602082840312156136da576136d9613301565b5b60006136e884828501613653565b91505092915050565b6136fa8161330b565b82525050565b600060208201905061371560008301846136f1565b92915050565b60006020828403121561373157613730613301565b5b600061373f84828501613469565b91505092915050565b60008060006060848603121561376157613760613301565b5b600061376f86828701613469565b935050602061378086828701613469565b92505060406137918682870161332c565b9150509250925092565b600060ff82169050919050565b6137b18161379b565b82525050565b60006020820190506137cc60008301846137a8565b92915050565b600080604083850312156137e9576137e8613301565b5b60006137f785828601613469565b925050602061380885828601613653565b9150509250929050565b60008060006060848603121561382b5761382a613301565b5b60006138398682870161332c565b935050602061384a8682870161332c565b925050604061385b8682870161332c565b9150509250925092565b61386e81613440565b82525050565b60006020820190506138896000830184613865565b92915050565b600080604083850312156138a6576138a5613301565b5b60006138b485828601613469565b92505060206138c585828601613469565b9150509250929050565b6000819050919050565b60006138f46138ef6138ea84613420565b6138cf565b613420565b9050919050565b6000613906826138d9565b9050919050565b6000613918826138fb565b9050919050565b6139288161390d565b82525050565b6000602082019050613943600083018461391f565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061397f602083613379565b915061398a82613949565b602082019050919050565b600060208201905081810360008301526139ae81613972565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139fc57607f821691505b602082108103613a0f57613a0e6139b5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a7e8261330b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ab057613aaf613a44565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613b17602883613379565b9150613b2282613abb565b604082019050919050565b60006020820190508181036000830152613b4681613b0a565b9050919050565b6000613b588261330b565b9150613b638361330b565b9250828203905081811115613b7b57613b7a613a44565b5b92915050565b6000613b8c8261330b565b9150613b978361330b565b9250828201905080821115613baf57613bae613a44565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115613c0c57808604811115613be857613be7613a44565b5b6001851615613bf75780820291505b8081029050613c0585613bb5565b9450613bcc565b94509492505050565b600082613c255760019050613ce1565b81613c335760009050613ce1565b8160018114613c495760028114613c5357613c82565b6001915050613ce1565b60ff841115613c6557613c64613a44565b5b8360020a915084821115613c7c57613c7b613a44565b5b50613ce1565b5060208310610133831016604e8410600b8410161715613cb75782820a905083811115613cb257613cb1613a44565b5b613ce1565b613cc48484846001613bc2565b92509050818404811115613cdb57613cda613a44565b5b81810290505b9392505050565b6000613cf38261330b565b9150613cfe8361379b565b9250613d2b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c15565b905092915050565b6000613d3e8261330b565b9150613d498361330b565b9250828202613d578161330b565b91508282048414831517613d6e57613d6d613a44565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613dab601a83613379565b9150613db682613d75565b602082019050919050565b60006020820190508181036000830152613dda81613d9e565b9050919050565b6000604082019050613df66000830185613865565b613e0360208301846136f1565b9392505050565b600081519050613e198161363c565b92915050565b600060208284031215613e3557613e34613301565b5b6000613e4384828501613e0a565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613ea8602583613379565b9150613eb382613e4c565b604082019050919050565b60006020820190508181036000830152613ed781613e9b565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e31250000000000000000000000000000000000000000602082015250565b6000613f3a602c83613379565b9150613f4582613ede565b604082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b6000613fcc602583613379565b9150613fd782613f70565b604082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f426c6f636b2073686f756c64206265206c657373207468616e20313500000000600082015250565b6000614038601c83613379565b915061404382614002565b602082019050919050565b600060208201905081810360008301526140678161402b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140ca602683613379565b91506140d58261406e565b604082019050919050565b600060208201905081810360008301526140f9816140bd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061415c602483613379565b915061416782614100565b604082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141ee602283613379565b91506141f982614192565b604082019050919050565b6000602082019050818103600083015261421d816141e1565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614280602983613379565b915061428b82614224565b604082019050919050565b600060208201905081810360008301526142af81614273565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b60006142ec601983613379565b91506142f7826142b6565b602082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000614358601383613379565b915061436382614322565b602082019050919050565b600060208201905081810360008301526143878161434b565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b60006143c4602083613379565b91506143cf8261438e565b602082019050919050565b600060208201905081810360008301526143f3816143b7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144348261330b565b915061443f8361330b565b92508261444f5761444e6143fa565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006144b6602583613379565b91506144c18261445a565b604082019050919050565b600060208201905081810360008301526144e5816144a9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614548602383613379565b9150614553826144ec565b604082019050919050565b600060208201905081810360008301526145778161453b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145da602683613379565b91506145e58261457e565b604082019050919050565b60006020820190508181036000830152614609816145cd565b9050919050565b60008151905061461f81613452565b92915050565b60006020828403121561463b5761463a613301565b5b600061464984828501614610565b91505092915050565b6000819050919050565b600061467761467261466d84614652565b6138cf565b61330b565b9050919050565b6146878161465c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6146c281613440565b82525050565b60006146d483836146b9565b60208301905092915050565b6000602082019050919050565b60006146f88261468d565b6147028185614698565b935061470d836146a9565b8060005b8381101561473e57815161472588826146c8565b9750614730836146e0565b925050600181019050614711565b5085935050505092915050565b600060a08201905061476060008301886136f1565b61476d602083018761467e565b818103604083015261477f81866146ed565b905061478e6060830185613865565b61479b60808301846136f1565b9695505050505050565b600060c0820190506147ba6000830189613865565b6147c760208301886136f1565b6147d4604083018761467e565b6147e1606083018661467e565b6147ee6080830185613865565b6147fb60a08301846136f1565b979650505050505050565b60008151905061481581613315565b92915050565b60008060006060848603121561483457614833613301565b5b600061484286828701614806565b935050602061485386828701614806565b925050604061486486828701614806565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006148a4601d83613379565b91506148af8261486e565b602082019050919050565b600060208201905081810360008301526148d381614897565b9050919050565b600081905092915050565b50565b60006148f56000836148da565b9150614900826148e5565b600082019050919050565b6000614916826148e8565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061497c603a83613379565b915061498782614920565b604082019050919050565b600060208201905081810360008301526149ab8161496f565b905091905056fea2646970667358221220e728de4a728b78e4e6ca0687588e73dff2ec7bbec0bcfa39375e60ade05ed48c64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102605760003560e01c80637b46eee511610144578063a8aa1b31116100b6578063dc89f88c1161007a578063dc89f88c146108ef578063dd62ed3e1461091a578063edaa116814610957578063f2fde38b14610980578063f887ea40146109a9578063fbe6324e146109d457610267565b8063a8aa1b31146107f8578063a9059cbb14610823578063aacebbe314610860578063c2c327d114610889578063c5d32bb2146108b257610267565b80638da5cb5b116101085780638da5cb5b146106d657806395d89b41146107015780639d282cd61461072c5780639e252f0014610755578063a0cc1c2a1461077e578063a457c2d7146107bb57610267565b80637b46eee5146106175780638514022d1461064257806385141a771461066b5780638a8c523c146106965780638cd4426d146106ad57610267565b8063274a533c116101dd5780634ada218b116101a15780634ada218b146105195780634e736f221461054457806366a88d961461056d57806370a0823114610598578063715018a6146105d557806375f0a874146105ec57610267565b8063274a533c14610434578063313ce5671461045f578063355496ca1461048a57806339509351146104b357806342b6fa11146104f057610267565b80631675d802116102245780631675d8021461034f57806318160ddd1461037a5780631816467f146103a5578063215d92a6146103ce57806323b872dd146103f757610267565b806305410d1b1461026c57806306fdde0314610295578063095ea7b3146102c05780630e375a5c146102fd5780631340538f1461032657610267565b3661026757005b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613341565b6109ff565b005b3480156102a157600080fd5b506102aa610a85565b6040516102b791906133fe565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e2919061347e565b610b17565b6040516102f491906134d9565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190613668565b610b35565b005b34801561033257600080fd5b5061034d600480360381019061034891906136c4565b610c46565b005b34801561035b57600080fd5b50610364610cdf565b6040516103719190613700565b60405180910390f35b34801561038657600080fd5b5061038f610ce5565b60405161039c9190613700565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c7919061371b565b610cef565b005b3480156103da57600080fd5b506103f560048036038101906103f09190613668565b610daf565b005b34801561040357600080fd5b5061041e60048036038101906104199190613748565b610ec0565b60405161042b91906134d9565b60405180910390f35b34801561044057600080fd5b50610449610fc1565b6040516104569190613700565b60405180910390f35b34801561046b57600080fd5b50610474610fc7565b60405161048191906137b7565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac91906137d2565b610fd0565b005b3480156104bf57600080fd5b506104da60048036038101906104d5919061347e565b6110a7565b6040516104e791906134d9565b60405180910390f35b3480156104fc57600080fd5b5061051760048036038101906105129190613341565b611153565b005b34801561052557600080fd5b5061052e6111f7565b60405161053b91906134d9565b60405180910390f35b34801561055057600080fd5b5061056b60048036038101906105669190613812565b61120a565b005b34801561057957600080fd5b506105826112c9565b60405161058f9190613700565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba919061371b565b6112cf565b6040516105cc9190613700565b60405180910390f35b3480156105e157600080fd5b506105ea611317565b005b3480156105f857600080fd5b5061060161139f565b60405161060e9190613874565b60405180910390f35b34801561062357600080fd5b5061062c6113c5565b6040516106399190613700565b60405180910390f35b34801561064e57600080fd5b50610669600480360381019061066491906137d2565b6113cb565b005b34801561067757600080fd5b506106806114a2565b60405161068d9190613874565b60405180910390f35b3480156106a257600080fd5b506106ab6114a8565b005b3480156106b957600080fd5b506106d460048036038101906106cf919061347e565b6115b3565b005b3480156106e257600080fd5b506106eb611658565b6040516106f89190613874565b60405180910390f35b34801561070d57600080fd5b50610716611682565b60405161072391906133fe565b60405180910390f35b34801561073857600080fd5b50610753600480360381019061074e9190613812565b611714565b005b34801561076157600080fd5b5061077c60048036038101906107779190613341565b6117d3565b005b34801561078a57600080fd5b506107a560048036038101906107a0919061371b565b6118bb565b6040516107b291906134d9565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd919061347e565b6118db565b6040516107ef91906134d9565b60405180910390f35b34801561080457600080fd5b5061080d6119cf565b60405161081a9190613874565b60405180910390f35b34801561082f57600080fd5b5061084a6004803603810190610845919061347e565b6119f5565b60405161085791906134d9565b60405180910390f35b34801561086c57600080fd5b506108876004803603810190610882919061371b565b611a0c565b005b34801561089557600080fd5b506108b060048036038101906108ab9190613341565b611acc565b005b3480156108be57600080fd5b506108d960048036038101906108d4919061371b565b611bb6565b6040516108e691906134d9565b60405180910390f35b3480156108fb57600080fd5b50610904611bd6565b6040516109119190613700565b60405180910390f35b34801561092657600080fd5b50610941600480360381019061093c919061388f565b611bdc565b60405161094e9190613700565b60405180910390f35b34801561096357600080fd5b5061097e60048036038101906109799190613341565b611c63565b005b34801561098c57600080fd5b506109a760048036038101906109a2919061371b565b611d7c565b005b3480156109b557600080fd5b506109be611e73565b6040516109cb919061392e565b60405180910390f35b3480156109e057600080fd5b506109e9611e99565b6040516109f691906134d9565b60405180910390f35b610a07611eac565b73ffffffffffffffffffffffffffffffffffffffff16610a25611658565b73ffffffffffffffffffffffffffffffffffffffff1614610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7290613995565b60405180910390fd5b80600c8190555050565b606060038054610a94906139e4565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac0906139e4565b8015610b0d5780601f10610ae257610100808354040283529160200191610b0d565b820191906000526020600020905b815481529060010190602001808311610af057829003601f168201915b5050505050905090565b6000610b2b610b24611eac565b8484611eb4565b6001905092915050565b610b3d611eac565b73ffffffffffffffffffffffffffffffffffffffff16610b5b611658565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba890613995565b60405180910390fd5b60005b8251811015610c41578160176000858481518110610bd557610bd4613a15565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c3990613a73565b915050610bb4565b505050565b610c4e611eac565b73ffffffffffffffffffffffffffffffffffffffff16610c6c611658565b73ffffffffffffffffffffffffffffffffffffffff1614610cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb990613995565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60085481565b6000600254905090565b610cf7611eac565b73ffffffffffffffffffffffffffffffffffffffff16610d15611658565b73ffffffffffffffffffffffffffffffffffffffff1614610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290613995565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610db7611eac565b73ffffffffffffffffffffffffffffffffffffffff16610dd5611658565b73ffffffffffffffffffffffffffffffffffffffff1614610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2290613995565b60405180910390fd5b60005b8251811015610ebb578160186000858481518110610e4f57610e4e613a15565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610eb390613a73565b915050610e2e565b505050565b6000610ecd84848461207d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f18611eac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f90613b2d565b60405180910390fd5b610fb585610fa4611eac565b8584610fb09190613b4d565b611eb4565b60019150509392505050565b600a5481565b60006012905090565b610fd8611eac565b73ffffffffffffffffffffffffffffffffffffffff16610ff6611658565b73ffffffffffffffffffffffffffffffffffffffff161461104c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104390613995565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006111496110b4611eac565b8484600160006110c2611eac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111449190613b81565b611eb4565b6001905092915050565b61115b611eac565b73ffffffffffffffffffffffffffffffffffffffff16611179611658565b73ffffffffffffffffffffffffffffffffffffffff16146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690613995565b60405180910390fd5b6111d7610fc7565b600a6111e39190613ce8565b816111ee9190613d33565b60088190555050565b600760169054906101000a900460ff1681565b611212611eac565b73ffffffffffffffffffffffffffffffffffffffff16611230611658565b73ffffffffffffffffffffffffffffffffffffffff1614611286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127d90613995565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050505050565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61131f611eac565b73ffffffffffffffffffffffffffffffffffffffff1661133d611658565b73ffffffffffffffffffffffffffffffffffffffff1614611393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138a90613995565b60405180910390fd5b61139d600061293d565b565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6113d3611eac565b73ffffffffffffffffffffffffffffffffffffffff166113f1611658565b73ffffffffffffffffffffffffffffffffffffffff1614611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e90613995565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61dead81565b6114b0611eac565b73ffffffffffffffffffffffffffffffffffffffff166114ce611658565b73ffffffffffffffffffffffffffffffffffffffff1614611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613995565b60405180910390fd5b600760169054906101000a900460ff1615611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b90613dc1565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600a81905550565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611610929190613de1565b6020604051808303816000875af115801561162f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116539190613e1f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611691906139e4565b80601f01602080910402602001604051908101604052809291908181526020018280546116bd906139e4565b801561170a5780601f106116df5761010080835404028352916020019161170a565b820191906000526020600020905b8154815290600101906020018083116116ed57829003601f168201915b5050505050905090565b61171c611eac565b73ffffffffffffffffffffffffffffffffffffffff1661173a611658565b73ffffffffffffffffffffffffffffffffffffffff1614611790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178790613995565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050505050565b6117db611eac565b73ffffffffffffffffffffffffffffffffffffffff166117f9611658565b73ffffffffffffffffffffffffffffffffffffffff161461184f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184690613995565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156118b7573d6000803e3d6000fd5b5050565b60186020528060005260406000206000915054906101000a900460ff1681565b600080600160006118ea611eac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e90613ebe565b60405180910390fd5b6119c46119b2611eac565b8585846119bf9190613b4d565b611eb4565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611a0233848461207d565b6001905092915050565b611a14611eac565b73ffffffffffffffffffffffffffffffffffffffff16611a32611658565b73ffffffffffffffffffffffffffffffffffffffff1614611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f90613995565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4611eac565b73ffffffffffffffffffffffffffffffffffffffff16611af2611658565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f90613995565b60405180910390fd5b620f4240811015611b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8590613f50565b60405180910390fd5b611b96610fc7565b600a611ba29190613ce8565b81611bad9190613d33565b60098190555050565b60176020528060005260406000206000915054906101000a900460ff1681565b60165481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c6b611eac565b73ffffffffffffffffffffffffffffffffffffffff16611c89611658565b73ffffffffffffffffffffffffffffffffffffffff1614611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690613995565b60405180910390fd5b600760169054906101000a900460ff1615611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2690613fe2565b60405180910390fd5b600f8110611d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d699061404e565b60405180910390fd5b80600b8190555050565b611d84611eac565b73ffffffffffffffffffffffffffffffffffffffff16611da2611658565b73ffffffffffffffffffffffffffffffffffffffff1614611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def90613995565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5e906140e0565b60405180910390fd5b611e708161293d565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1a90614172565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990614204565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120709190613700565b60405180910390a3505050565b600081116120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790614296565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121645750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90614302565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122475750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561229c57600760169054906101000a900460ff1661229b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122929061436e565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123435750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561235c5750600760149054906101000a900460ff16155b156123ba576009548161236e846112cf565b6123789190613b81565b11156123b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b0906143da565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124625750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124b85750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124d15750600760149054906101000a900460ff16155b1561258557600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125845760095481612538846112cf565b6125429190613b81565b1115612583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257a906143da565b60405180910390fd5b5b5b60008060006125926132d6565b6000601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126385750601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126525750600b54600a5461264f9190613b81565b43105b9050600760149054906101000a900460ff16806126b85750601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061270c5750601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561271a576000925061284d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015612775575080155b156127d7576012600201546012600001546012600101546127969190613b81565b6127a09190613b81565b945084935060126040518060600160405290816000820154815260200160018201548152602001600282015481525050915061284c565b8061283957600f60020154600f60000154600f600101546127f89190613b81565b6128029190613b81565b9450849350600f6040518060600160405290816000820154815260200160018201548152602001600282015481525050915061284b565b801561284a57600c549450600c5493505b5b5b5b6064848761285b9190613d33565b6128659190614429565b9250600760159054906101000a900460ff1680156128d15750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156128e1576128e08583612a03565b5b6128f7888885896128f29190613b4d565b612c1d565b6000831115612933576000851115612932576000606486886129199190613d33565b6129239190614429565b9050612930893083612c1d565b505b5b5050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612c19576001600760146101000a81548160ff0219169083151502179055506000820315612bfd576000612a46306112cf565b90506008548110612bfb5760016008541115612a625760085490505b6000600284612a719190613d33565b9050600081846020015184612a869190613d33565b612a909190614429565b905060008184612aa09190613b4d565b90506000479050612ab082612e9a565b60008147612abe9190613b4d565b90506000876020015186612ad29190613b4d565b82612add9190614429565b90506000886020015182612af19190613d33565b90506000811115612b0757612b0686826130dd565b5b60008960000151600284612b1b9190613d33565b612b259190613d33565b90506000811115612b7c57612b7b81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166131dd90919063ffffffff16565b5b60008a60400151600285612b909190613d33565b612b9a9190613d33565b90506000811115612bf157612bf081600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166131dd90919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c83906144cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf29061455e565b60405180910390fd5b612d068383836132d1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d83906145f0565b60405180910390fd5b8181612d989190613b4d565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e289190613b81565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e8c9190613700565b60405180910390a350505050565b6000600267ffffffffffffffff811115612eb757612eb66134f9565b5b604051908082528060200260200182016040528015612ee55781602001602082028036833780820191505090505b5090503081600081518110612efd57612efc613a15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc89190614625565b81600181518110612fdc57612fdb613a15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061304330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611eb4565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130a795949392919061474b565b600060405180830381600087803b1580156130c157600080fd5b505af11580156130d5573d6000803e3d6000fd5b505050505050565b61310a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611eb4565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613193969594939291906147a5565b60606040518083038185885af11580156131b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131d6919061481b565b5050505050565b80471015613220576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613217906148ba565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516132469061490b565b60006040518083038185875af1925050503d8060008114613283576040519150601f19603f3d011682016040523d82523d6000602084013e613288565b606091505b50509050806132cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c390614992565b60405180910390fd5b505050565b505050565b60405180606001604052806000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61331e8161330b565b811461332957600080fd5b50565b60008135905061333b81613315565b92915050565b60006020828403121561335757613356613301565b5b60006133658482850161332c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133a857808201518184015260208101905061338d565b60008484015250505050565b6000601f19601f8301169050919050565b60006133d08261336e565b6133da8185613379565b93506133ea81856020860161338a565b6133f3816133b4565b840191505092915050565b6000602082019050818103600083015261341881846133c5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061344b82613420565b9050919050565b61345b81613440565b811461346657600080fd5b50565b60008135905061347881613452565b92915050565b6000806040838503121561349557613494613301565b5b60006134a385828601613469565b92505060206134b48582860161332c565b9150509250929050565b60008115159050919050565b6134d3816134be565b82525050565b60006020820190506134ee60008301846134ca565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613531826133b4565b810181811067ffffffffffffffff821117156135505761354f6134f9565b5b80604052505050565b60006135636132f7565b905061356f8282613528565b919050565b600067ffffffffffffffff82111561358f5761358e6134f9565b5b602082029050602081019050919050565b600080fd5b60006135b86135b384613574565b613559565b905080838252602082019050602084028301858111156135db576135da6135a0565b5b835b8181101561360457806135f08882613469565b8452602084019350506020810190506135dd565b5050509392505050565b600082601f830112613623576136226134f4565b5b81356136338482602086016135a5565b91505092915050565b613645816134be565b811461365057600080fd5b50565b6000813590506136628161363c565b92915050565b6000806040838503121561367f5761367e613301565b5b600083013567ffffffffffffffff81111561369d5761369c613306565b5b6136a98582860161360e565b92505060206136ba85828601613653565b9150509250929050565b6000602082840312156136da576136d9613301565b5b60006136e884828501613653565b91505092915050565b6136fa8161330b565b82525050565b600060208201905061371560008301846136f1565b92915050565b60006020828403121561373157613730613301565b5b600061373f84828501613469565b91505092915050565b60008060006060848603121561376157613760613301565b5b600061376f86828701613469565b935050602061378086828701613469565b92505060406137918682870161332c565b9150509250925092565b600060ff82169050919050565b6137b18161379b565b82525050565b60006020820190506137cc60008301846137a8565b92915050565b600080604083850312156137e9576137e8613301565b5b60006137f785828601613469565b925050602061380885828601613653565b9150509250929050565b60008060006060848603121561382b5761382a613301565b5b60006138398682870161332c565b935050602061384a8682870161332c565b925050604061385b8682870161332c565b9150509250925092565b61386e81613440565b82525050565b60006020820190506138896000830184613865565b92915050565b600080604083850312156138a6576138a5613301565b5b60006138b485828601613469565b92505060206138c585828601613469565b9150509250929050565b6000819050919050565b60006138f46138ef6138ea84613420565b6138cf565b613420565b9050919050565b6000613906826138d9565b9050919050565b6000613918826138fb565b9050919050565b6139288161390d565b82525050565b6000602082019050613943600083018461391f565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061397f602083613379565b915061398a82613949565b602082019050919050565b600060208201905081810360008301526139ae81613972565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139fc57607f821691505b602082108103613a0f57613a0e6139b5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a7e8261330b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ab057613aaf613a44565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613b17602883613379565b9150613b2282613abb565b604082019050919050565b60006020820190508181036000830152613b4681613b0a565b9050919050565b6000613b588261330b565b9150613b638361330b565b9250828203905081811115613b7b57613b7a613a44565b5b92915050565b6000613b8c8261330b565b9150613b978361330b565b9250828201905080821115613baf57613bae613a44565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115613c0c57808604811115613be857613be7613a44565b5b6001851615613bf75780820291505b8081029050613c0585613bb5565b9450613bcc565b94509492505050565b600082613c255760019050613ce1565b81613c335760009050613ce1565b8160018114613c495760028114613c5357613c82565b6001915050613ce1565b60ff841115613c6557613c64613a44565b5b8360020a915084821115613c7c57613c7b613a44565b5b50613ce1565b5060208310610133831016604e8410600b8410161715613cb75782820a905083811115613cb257613cb1613a44565b5b613ce1565b613cc48484846001613bc2565b92509050818404811115613cdb57613cda613a44565b5b81810290505b9392505050565b6000613cf38261330b565b9150613cfe8361379b565b9250613d2b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c15565b905092915050565b6000613d3e8261330b565b9150613d498361330b565b9250828202613d578161330b565b91508282048414831517613d6e57613d6d613a44565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613dab601a83613379565b9150613db682613d75565b602082019050919050565b60006020820190508181036000830152613dda81613d9e565b9050919050565b6000604082019050613df66000830185613865565b613e0360208301846136f1565b9392505050565b600081519050613e198161363c565b92915050565b600060208284031215613e3557613e34613301565b5b6000613e4384828501613e0a565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613ea8602583613379565b9150613eb382613e4c565b604082019050919050565b60006020820190508181036000830152613ed781613e9b565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e31250000000000000000000000000000000000000000602082015250565b6000613f3a602c83613379565b9150613f4582613ede565b604082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b6000613fcc602583613379565b9150613fd782613f70565b604082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f426c6f636b2073686f756c64206265206c657373207468616e20313500000000600082015250565b6000614038601c83613379565b915061404382614002565b602082019050919050565b600060208201905081810360008301526140678161402b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140ca602683613379565b91506140d58261406e565b604082019050919050565b600060208201905081810360008301526140f9816140bd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061415c602483613379565b915061416782614100565b604082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141ee602283613379565b91506141f982614192565b604082019050919050565b6000602082019050818103600083015261421d816141e1565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614280602983613379565b915061428b82614224565b604082019050919050565b600060208201905081810360008301526142af81614273565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b60006142ec601983613379565b91506142f7826142b6565b602082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000614358601383613379565b915061436382614322565b602082019050919050565b600060208201905081810360008301526143878161434b565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b60006143c4602083613379565b91506143cf8261438e565b602082019050919050565b600060208201905081810360008301526143f3816143b7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144348261330b565b915061443f8361330b565b92508261444f5761444e6143fa565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006144b6602583613379565b91506144c18261445a565b604082019050919050565b600060208201905081810360008301526144e5816144a9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614548602383613379565b9150614553826144ec565b604082019050919050565b600060208201905081810360008301526145778161453b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145da602683613379565b91506145e58261457e565b604082019050919050565b60006020820190508181036000830152614609816145cd565b9050919050565b60008151905061461f81613452565b92915050565b60006020828403121561463b5761463a613301565b5b600061464984828501614610565b91505092915050565b6000819050919050565b600061467761467261466d84614652565b6138cf565b61330b565b9050919050565b6146878161465c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6146c281613440565b82525050565b60006146d483836146b9565b60208301905092915050565b6000602082019050919050565b60006146f88261468d565b6147028185614698565b935061470d836146a9565b8060005b8381101561473e57815161472588826146c8565b9750614730836146e0565b925050600181019050614711565b5085935050505092915050565b600060a08201905061476060008301886136f1565b61476d602083018761467e565b818103604083015261477f81866146ed565b905061478e6060830185613865565b61479b60808301846136f1565b9695505050505050565b600060c0820190506147ba6000830189613865565b6147c760208301886136f1565b6147d4604083018761467e565b6147e1606083018661467e565b6147ee6080830185613865565b6147fb60a08301846136f1565b979650505050505050565b60008151905061481581613315565b92915050565b60008060006060848603121561483457614833613301565b5b600061484286828701614806565b935050602061485386828701614806565b925050604061486486828701614806565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006148a4601d83613379565b91506148af8261486e565b602082019050919050565b600060208201905081810360008301526148d381614897565b9050919050565b600081905092915050565b50565b60006148f56000836148da565b9150614900826148e5565b600082019050919050565b6000614916826148e8565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061497c603a83613379565b915061498782614920565b604082019050919050565b600060208201905081810360008301526149ab8161496f565b905091905056fea2646970667358221220e728de4a728b78e4e6ca0687588e73dff2ec7bbec0bcfa39375e60ade05ed48c64736f6c63430008110033

Deployed Bytecode Sourcemap

10097:11950:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21014:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2295:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12353:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21124:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19230:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10368:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2673:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20509:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20775:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12554:485;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10481:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2515:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21734:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13047:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19346:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10325:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19700:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10428:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2844:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8705:94;;;;;;;;;;;;;:::i;:::-;;10590:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11045:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20620:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10749:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19903:224;;;;;;;;;;;;;:::i;:::-;;21862:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8482:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2403:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19499:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21612:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11279:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13353:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10209:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13808:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20386:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21357:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11231:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11126:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3308:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20135:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8807:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10181:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10280:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21014:102;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21098:10:::1;21086:9;:22;;;;21014:102:::0;:::o;2295:100::-;2349:13;2382:5;2375:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2295:100;:::o;12353:193::-;12455:4;12477:39;12486:12;:10;:12::i;:::-;12500:7;12509:6;12477:8;:39::i;:::-;12534:4;12527:11;;12353:193;;;;:::o;21124:225::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21244:9:::1;21239:103;21263:8;:15;21259:1;:19;21239:103;;;21325:5;21300:9;:22;21310:8;21319:1;21310:11;;;;;;;;:::i;:::-;;;;;;;;21300:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21280:3;;;;;:::i;:::-;;;;21239:103;;;;21124:225:::0;;:::o;19230:108::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19325:5:::1;19304:18;;:26;;;;;;;;;;;;;;;;;;19230:108:::0;:::o;10368:53::-;;;;:::o;2673:108::-;2734:7;2761:12;;2754:19;;2673:108;:::o;20509:103::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20595:9:::1;20583;;:21;;;;;;;;;;;;;;;;;;20509:103:::0;:::o;20775:231::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20898:9:::1;20893:106;20917:8;:15;20913:1;:19;20893:106;;;20982:5;20954:12;:25;20967:8;20976:1;20967:11;;;;;;;;:::i;:::-;;;;;;;;20954:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;20934:3;;;;;:::i;:::-;;;;20893:106;;;;20775:231:::0;;:::o;12554:485::-;12686:4;12703:36;12713:6;12721:9;12732:6;12703:9;:36::i;:::-;12752:24;12779:11;:19;12791:6;12779:19;;;;;;;;;;;;;;;:33;12799:12;:10;:12::i;:::-;12779:33;;;;;;;;;;;;;;;;12752:60;;12865:6;12845:16;:26;;12823:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;12950:57;12959:6;12967:12;:10;:12::i;:::-;13000:6;12981:16;:25;;;;:::i;:::-;12950:8;:57::i;:::-;13027:4;13020:11;;;12554:485;;;;;:::o;10481:28::-;;;;:::o;2515:93::-;2573:5;2598:2;2591:9;;2515:93;:::o;21734:120::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21841:5:::1;21819:9;:19;21829:8;21819:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21734:120:::0;;:::o;13047:298::-;13163:4;13185:130;13208:12;:10;:12::i;:::-;13235:7;13294:10;13257:11;:25;13269:12;:10;:12::i;:::-;13257:25;;;;;;;;;;;;;;;:34;13283:7;13257:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13185:8;:130::i;:::-;13333:4;13326:11;;13047:298;;;;:::o;19346:145::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19473:10:::1;:8;:10::i;:::-;19469:2;:14;;;;:::i;:::-;19456:10;:27;;;;:::i;:::-;19430:23;:53;;;;19346:145:::0;:::o;10325:34::-;;;;;;;;;;;;;:::o;19700:195::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19852:35:::1;;;;;;;;19858:10;19852:35;;;;19870:10;19852:35;;;;19882:4;19852:35;;::::0;19840:9:::1;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;19700:195:::0;;;:::o;10428:44::-;;;;:::o;2844:177::-;2963:7;2995:9;:18;3005:7;2995:18;;;;;;;;;;;;;;;;2988:25;;2844:177;;;:::o;8705:94::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8770:21:::1;8788:1;8770:9;:21::i;:::-;8705:94::o:0;10590:75::-;;;;;;;;;;;;;:::o;11045:74::-;;;;:::o;20620:147::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20754:5:::1;20730:12;:21;20743:7;20730:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;20620:147:::0;;:::o;10749:88::-;10795:42;10749:88;:::o;19903:224::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19967:14:::1;;;;;;;;;;;19966:15;19958:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;20040:4;20023:14;;:21;;;;;;;;;;;;;;;;;;20076:4;20055:18;;:25;;;;;;;;;;;;;;;;;;20107:12;20091:13;:28;;;;19903:224::o:0;21862:127::-;21944:8;21937:25;;;21963:9;;;;;;;;;;;21974:6;21937:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21862:127;;:::o;8482:87::-;8528:7;8555:6;;;;;;;;;;;8548:13;;8482:87;:::o;2403:104::-;2459:13;2492:7;2485:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2403:104;:::o;19499:193::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19649:35:::1;;;;;;;;19655:10;19649:35;;;;19667:10;19649:35;;;;19679:4;19649:35;;::::0;19641:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;19499:193:::0;;;:::o;21612:114::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21688:9:::1;;;;;;;;;;;21680:27;;:38;21708:9;21680:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21612:114:::0;:::o;11279:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;13353:447::-;13474:4;13496:24;13523:11;:25;13535:12;:10;:12::i;:::-;13523:25;;;;;;;;;;;;;;;:34;13549:7;13523:34;;;;;;;;;;;;;;;;13496:61;;13610:15;13590:16;:35;;13568:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;13701:67;13710:12;:10;:12::i;:::-;13724:7;13752:15;13733:16;:34;;;;:::i;:::-;13701:8;:67::i;:::-;13788:4;13781:11;;;13353:447;;;;:::o;10209:19::-;;;;;;;;;;;;;:::o;13808:197::-;13913:4;13935:40;13945:10;13957:9;13968:6;13935:9;:40::i;:::-;13993:4;13986:11;;13808:197;;;;:::o;20386:115::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20484:9:::1;20466:15;;:27;;;;;;;;;;;;;;;;;;20386:115:::0;:::o;21357:247::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21467:3:::1;21454:9;:16;;21432:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;21586:10;:8;:10::i;:::-;21582:2;:14;;;;:::i;:::-;21570:9;:26;;;;:::i;:::-;21553:14;:43;;;;21357:247:::0;:::o;11231:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;11126:96::-;;;;:::o;3308:201::-;3442:7;3474:11;:18;3486:5;3474:18;;;;;;;;;;;;;;;:27;3493:7;3474:27;;;;;;;;;;;;;;;;3467:34;;3308:201;;;;:::o;20135:243::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20217:14:::1;;;;;;;;;;;20216:15;20208:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20304:2;20292:9;:14;20284:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;20361:9;20350:8;:20;;;;20135:243:::0;:::o;8807:229::-;8628:12;:10;:12::i;:::-;8617:23;;:7;:5;:7::i;:::-;:23;;;8609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8930:1:::1;8910:22;;:8;:22;;::::0;8888:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9009:19;9019:8;9009:9;:19::i;:::-;8807:229:::0;:::o;10181:21::-;;;;;;;;;;;;;:::o;10280:38::-;;;;;;;;;;;;;:::o;249:98::-;302:7;329:10;322:17;;249:98;:::o;6684:380::-;6837:1;6820:19;;:5;:19;;;6812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6918:1;6899:21;;:7;:21;;;6891:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7002:6;6972:11;:18;6984:5;6972:18;;;;;;;;;;;;;;;:27;6991:7;6972:27;;;;;;;;;;;;;;;:36;;;;7040:7;7024:32;;7033:5;7024:32;;;7049:6;7024:32;;;;;;:::i;:::-;;;;;;;;6684:380;;;:::o;14013:2530::-;14163:1;14154:6;:10;14146:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14244:12;:20;14257:6;14244:20;;;;;;;;;;;;;;;;;;;;;;;;;14243:21;:49;;;;;14269:12;:23;14282:9;14269:23;;;;;;;;;;;;;;;;;;;;;;;;;14268:24;14243:49;14221:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;14363:9;:17;14373:6;14363:17;;;;;;;;;;;;;;;;;;;;;;;;;14362:18;:43;;;;;14385:9;:20;14395:9;14385:20;;;;;;;;;;;;;;;;;;;;;;;;;14384:21;14362:43;14358:122;;;14430:14;;;;;;;;;;;14422:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;14358:122;14506:4;;;;;;;;;;;14496:14;;:6;:14;;;:39;;;;;14515:9;:20;14525:9;14515:20;;;;;;;;;;;;;;;;;;;;;;;;;14514:21;14496:39;:59;;;;;14540:15;;;;;;;;;;;14539:16;14496:59;14492:233;;;14631:14;;14621:6;14598:20;14608:9;14598;:20::i;:::-;:29;;;;:::i;:::-;:47;;14572:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;14492:233;14765:4;;;;;;;;;;;14755:14;;:6;:14;;;;:52;;;;;14787:9;:20;14797:9;14787:20;;;;;;;;;;;;;;;;;;;;;;;;;14786:21;14755:52;:87;;;;;14825:9;:17;14835:6;14825:17;;;;;;;;;;;;;;;;;;;;;;;;;14824:18;14755:87;:120;;;;;14860:15;;;;;;;;;;;14859:16;14755:120;14737:387;;;14919:4;;;;;;;;;;;14906:17;;:9;:17;;;14902:211;;15007:14;;14997:6;14974:20;14984:9;14974;:20::i;:::-;:29;;;;:::i;:::-;:47;;14944:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;14902:211;14737:387;15136:15;15162:14;15187:11;15209:25;;:::i;:::-;15247:17;15268:9;:17;15278:6;15268:17;;;;;;;;;;;;;;;;;;;;;;;;;15267:18;:56;;;;;15303:9;:20;15313:9;15303:20;;;;;;;;;;;;;;;;;;;;;;;;;15302:21;15267:56;:112;;;;;15371:8;;15355:13;;:24;;;;:::i;:::-;15340:12;:39;15267:112;15247:132;;15467:15;;;;;;;;;;;:36;;;;15486:9;:17;15496:6;15486:17;;;;;;;;;;;;;;;;;;;;;;;;;15467:36;:60;;;;15507:9;:20;15517:9;15507:20;;;;;;;;;;;;;;;;;;;;;;;;;15467:60;15463:582;;;15548:1;15542:7;;15463:582;;;15582:4;;;;;;;;;;;15569:17;;:9;:17;;;:34;;;;;15591:12;15590:13;15569:34;15565:480;;;15674:9;:13;;;15652:9;:19;;;15630:9;:19;;;:41;;;;:::i;:::-;:57;;;;:::i;:::-;15620:67;;15711:7;15702:16;;15748:9;15733:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15565:480;;;15780:12;15775:270;;15855:5;:9;;;15837:5;:15;;;15819:5;:15;;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;15809:55;;15888:7;15879:16;;15925:5;15910:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15775:270;;;15952:12;15948:97;;;15991:9;;15981:19;;16024:9;;16015:18;;15948:97;15775:270;15565:480;15463:582;16083:3;16073:6;16064;:15;;;;:::i;:::-;16063:23;;;;:::i;:::-;16057:29;;16103:18;;;;;;;;;;;:36;;;;;16135:4;;;;;;;;;;;16125:14;;:6;:14;;;;16103:36;16099:89;;;16154:34;16166:7;16175:12;16154:11;:34::i;:::-;16099:89;16230:48;16246:6;16254:9;16274:3;16265:6;:12;;;;:::i;:::-;16230:15;:48::i;:::-;16299:1;16293:3;:7;16289:247;;;16375:1;16365:7;:11;16361:164;;;16397:17;16438:3;16427:7;16418:6;:16;;;;:::i;:::-;16417:24;;;;:::i;:::-;16397:44;;16460:49;16476:6;16492:4;16499:9;16460:15;:49::i;:::-;16378:147;16361:164;16289:247;14135:2408;;;;;14013:2530;;;:::o;9044:173::-;9100:16;9119:6;;;;;;;;;;;9100:25;;9145:8;9136:6;;:17;;;;;;;;;;;;;;;;;;9200:8;9169:40;;9190:8;9169:40;;;;;;;;;;;;9089:128;9044:173;:::o;16551:1632::-;11440:15;;;;;;;;;;;11435:125;;11490:4;11472:15;;:22;;;;;;;;;;;;;;;;;;16680:1:::1;16669:7;:12:::0;16665:51;16698:7:::1;16665:51;16728:23;16754:24;16772:4;16754:9;:24::i;:::-;16728:50;;16812:23;;16793:15;:42;16789:1387;;16882:1;16856:23;;:27;16852:109;;;16922:23;;16904:41;;16852:109;17032:19;17064:1;17054:7;:11;;;;:::i;:::-;17032:33;;17080:32;17174:11;17151:9;:19;;;17116:15;:54;;;;:::i;:::-;17115:70;;;;:::i;:::-;17080:105;;17200:14;17235:24;17217:15;:42;;;;:::i;:::-;17200:59;;17276:22;17301:21;17276:46;;17339:24;17356:6;17339:16;:24::i;:::-;17380:20;17427:14;17403:21;:38;;;;:::i;:::-;17380:61;;17456:19;17525:9;:19;;;17511:11;:33;;;;:::i;:::-;17478:12;:67;;;;:::i;:::-;17456:89;;17560:29;17606:9;:19;;;17592:11;:33;;;;:::i;:::-;17560:65;;17670:1;17646:21;:25;17642:161;;;17726:61;17739:24;17765:21;17726:12;:61::i;:::-;17642:161;17819:20;17860:9;:19;;;17856:1;17842:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;17819:60;;17913:1;17898:12;:16;17894:105;;;17935:48;17970:12;17943:15;;;;;;;;;;;17935:34;;;;:48;;;;:::i;:::-;17894:105;18015:14;18050:9;:13;;;18046:1;18032:11;:15;;;;:::i;:::-;:31;;;;:::i;:::-;18015:48;;18091:1;18082:6;:10;18078:87;;;18113:36;18142:6;18121:9;;;;;;;;;;;18113:28;;;;:36;;;;:::i;:::-;18078:87;16837:1339;;;;;;;;;16789:1387;16654:1529;11509:1;11543:5:::0;11525:15;;:23;;;;;;;;;;;;;;;;;;11435:125;16551:1632;;:::o;4995:675::-;5153:1;5135:20;;:6;:20;;;5127:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5237:1;5216:23;;:9;:23;;;5208:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5292:47;5313:6;5321:9;5332:6;5292:20;:47::i;:::-;5352:21;5376:9;:17;5386:6;5376:17;;;;;;;;;;;;;;;;5352:41;;5443:6;5426:13;:23;;5404:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;5562:6;5546:13;:22;;;;:::i;:::-;5526:9;:17;5536:6;5526:17;;;;;;;;;;;;;;;:42;;;;5603:6;5579:9;:20;5589:9;5579:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5644:9;5627:35;;5636:6;5627:35;;;5655:6;5627:35;;;;;;:::i;:::-;;;;;;;;5116:554;4995:675;;;:::o;18191:526::-;18309:21;18347:1;18333:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18309:40;;18378:4;18360;18365:1;18360:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18404:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18394:4;18399:1;18394:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18430:53;18447:4;18462:6;;;;;;;;;;;18471:11;18430:8;:53::i;:::-;18522:6;;;;;;;;;;;:57;;;18594:11;18620:1;18636:4;18663;18683:15;18522:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18246:471;18191:526;:::o;18725:497::-;18873:53;18890:4;18905:6;;;;;;;;;;;18914:11;18873:8;:53::i;:::-;18969:6;;;;;;;;;;;:22;;;18999:9;19032:4;19052:11;19078:1;19121;19164:9;;;;;;;;;;;19188:15;18969:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18725:497;;:::o;7828:391::-;7957:6;7932:21;:31;;7910:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8034:12;8052:9;:14;;8074:6;8052:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8033:52;;;8118:7;8096:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;7899:320;7828:391;;:::o;7673:125::-;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:117::-;3890:1;3887;3880:12;3904:180;3952:77;3949:1;3942:88;4049:4;4046:1;4039:15;4073:4;4070:1;4063:15;4090:281;4173:27;4195:4;4173:27;:::i;:::-;4165:6;4161:40;4303:6;4291:10;4288:22;4267:18;4255:10;4252:34;4249:62;4246:88;;;4314:18;;:::i;:::-;4246:88;4354:10;4350:2;4343:22;4133:238;4090:281;;:::o;4377:129::-;4411:6;4438:20;;:::i;:::-;4428:30;;4467:33;4495:4;4487:6;4467:33;:::i;:::-;4377:129;;;:::o;4512:311::-;4589:4;4679:18;4671:6;4668:30;4665:56;;;4701:18;;:::i;:::-;4665:56;4751:4;4743:6;4739:17;4731:25;;4811:4;4805;4801:15;4793:23;;4512:311;;;:::o;4829:117::-;4938:1;4935;4928:12;4969:710;5065:5;5090:81;5106:64;5163:6;5106:64;:::i;:::-;5090:81;:::i;:::-;5081:90;;5191:5;5220:6;5213:5;5206:21;5254:4;5247:5;5243:16;5236:23;;5307:4;5299:6;5295:17;5287:6;5283:30;5336:3;5328:6;5325:15;5322:122;;;5355:79;;:::i;:::-;5322:122;5470:6;5453:220;5487:6;5482:3;5479:15;5453:220;;;5562:3;5591:37;5624:3;5612:10;5591:37;:::i;:::-;5586:3;5579:50;5658:4;5653:3;5649:14;5642:21;;5529:144;5513:4;5508:3;5504:14;5497:21;;5453:220;;;5457:21;5071:608;;4969:710;;;;;:::o;5702:370::-;5773:5;5822:3;5815:4;5807:6;5803:17;5799:27;5789:122;;5830:79;;:::i;:::-;5789:122;5947:6;5934:20;5972:94;6062:3;6054:6;6047:4;6039:6;6035:17;5972:94;:::i;:::-;5963:103;;5779:293;5702:370;;;;:::o;6078:116::-;6148:21;6163:5;6148:21;:::i;:::-;6141:5;6138:32;6128:60;;6184:1;6181;6174:12;6128:60;6078:116;:::o;6200:133::-;6243:5;6281:6;6268:20;6259:29;;6297:30;6321:5;6297:30;:::i;:::-;6200:133;;;;:::o;6339:678::-;6429:6;6437;6486:2;6474:9;6465:7;6461:23;6457:32;6454:119;;;6492:79;;:::i;:::-;6454:119;6640:1;6629:9;6625:17;6612:31;6670:18;6662:6;6659:30;6656:117;;;6692:79;;:::i;:::-;6656:117;6797:78;6867:7;6858:6;6847:9;6843:22;6797:78;:::i;:::-;6787:88;;6583:302;6924:2;6950:50;6992:7;6983:6;6972:9;6968:22;6950:50;:::i;:::-;6940:60;;6895:115;6339:678;;;;;:::o;7023:323::-;7079:6;7128:2;7116:9;7107:7;7103:23;7099:32;7096:119;;;7134:79;;:::i;:::-;7096:119;7254:1;7279:50;7321:7;7312:6;7301:9;7297:22;7279:50;:::i;:::-;7269:60;;7225:114;7023:323;;;;:::o;7352:118::-;7439:24;7457:5;7439:24;:::i;:::-;7434:3;7427:37;7352:118;;:::o;7476:222::-;7569:4;7607:2;7596:9;7592:18;7584:26;;7620:71;7688:1;7677:9;7673:17;7664:6;7620:71;:::i;:::-;7476:222;;;;:::o;7704:329::-;7763:6;7812:2;7800:9;7791:7;7787:23;7783:32;7780:119;;;7818:79;;:::i;:::-;7780:119;7938:1;7963:53;8008:7;7999:6;7988:9;7984:22;7963:53;:::i;:::-;7953:63;;7909:117;7704:329;;;;:::o;8039:619::-;8116:6;8124;8132;8181:2;8169:9;8160:7;8156:23;8152:32;8149:119;;;8187:79;;:::i;:::-;8149:119;8307:1;8332:53;8377:7;8368:6;8357:9;8353:22;8332:53;:::i;:::-;8322:63;;8278:117;8434:2;8460:53;8505:7;8496:6;8485:9;8481:22;8460:53;:::i;:::-;8450:63;;8405:118;8562:2;8588:53;8633:7;8624:6;8613:9;8609:22;8588:53;:::i;:::-;8578:63;;8533:118;8039:619;;;;;:::o;8664:86::-;8699:7;8739:4;8732:5;8728:16;8717:27;;8664:86;;;:::o;8756:112::-;8839:22;8855:5;8839:22;:::i;:::-;8834:3;8827:35;8756:112;;:::o;8874:214::-;8963:4;9001:2;8990:9;8986:18;8978:26;;9014:67;9078:1;9067:9;9063:17;9054:6;9014:67;:::i;:::-;8874:214;;;;:::o;9094:468::-;9159:6;9167;9216:2;9204:9;9195:7;9191:23;9187:32;9184:119;;;9222:79;;:::i;:::-;9184:119;9342:1;9367:53;9412:7;9403:6;9392:9;9388:22;9367:53;:::i;:::-;9357:63;;9313:117;9469:2;9495:50;9537:7;9528:6;9517:9;9513:22;9495:50;:::i;:::-;9485:60;;9440:115;9094:468;;;;;:::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:118::-;10280:24;10298:5;10280:24;:::i;:::-;10275:3;10268:37;10193:118;;:::o;10317:222::-;10410:4;10448:2;10437:9;10433:18;10425:26;;10461:71;10529:1;10518:9;10514:17;10505:6;10461:71;:::i;:::-;10317:222;;;;:::o;10545:474::-;10613:6;10621;10670:2;10658:9;10649:7;10645:23;10641:32;10638:119;;;10676:79;;:::i;:::-;10638:119;10796:1;10821:53;10866:7;10857:6;10846:9;10842:22;10821:53;:::i;:::-;10811:63;;10767:117;10923:2;10949:53;10994:7;10985:6;10974:9;10970:22;10949:53;:::i;:::-;10939:63;;10894:118;10545:474;;;;;:::o;11025:60::-;11053:3;11074:5;11067:12;;11025:60;;;:::o;11091:142::-;11141:9;11174:53;11192:34;11201:24;11219:5;11201:24;:::i;:::-;11192:34;:::i;:::-;11174:53;:::i;:::-;11161:66;;11091:142;;;:::o;11239:126::-;11289:9;11322:37;11353:5;11322:37;:::i;:::-;11309:50;;11239:126;;;:::o;11371:141::-;11436:9;11469:37;11500:5;11469:37;:::i;:::-;11456:50;;11371:141;;;:::o;11518:161::-;11620:52;11666:5;11620:52;:::i;:::-;11615:3;11608:65;11518:161;;:::o;11685:252::-;11793:4;11831:2;11820:9;11816:18;11808:26;;11844:86;11927:1;11916:9;11912:17;11903:6;11844:86;:::i;:::-;11685:252;;;;:::o;11943:182::-;12083:34;12079:1;12071:6;12067:14;12060:58;11943:182;:::o;12131:366::-;12273:3;12294:67;12358:2;12353:3;12294:67;:::i;:::-;12287:74;;12370:93;12459:3;12370:93;:::i;:::-;12488:2;12483:3;12479:12;12472:19;;12131:366;;;:::o;12503:419::-;12669:4;12707:2;12696:9;12692:18;12684:26;;12756:9;12750:4;12746:20;12742:1;12731:9;12727:17;12720:47;12784:131;12910:4;12784:131;:::i;:::-;12776:139;;12503:419;;;:::o;12928:180::-;12976:77;12973:1;12966:88;13073:4;13070:1;13063:15;13097:4;13094:1;13087:15;13114:320;13158:6;13195:1;13189:4;13185:12;13175:22;;13242:1;13236:4;13232:12;13263:18;13253:81;;13319:4;13311:6;13307:17;13297:27;;13253:81;13381:2;13373:6;13370:14;13350:18;13347:38;13344:84;;13400:18;;:::i;:::-;13344:84;13165:269;13114:320;;;:::o;13440:180::-;13488:77;13485:1;13478:88;13585:4;13582:1;13575:15;13609:4;13606:1;13599:15;13626:180;13674:77;13671:1;13664:88;13771:4;13768:1;13761:15;13795:4;13792:1;13785:15;13812:233;13851:3;13874:24;13892:5;13874:24;:::i;:::-;13865:33;;13920:66;13913:5;13910:77;13907:103;;13990:18;;:::i;:::-;13907:103;14037:1;14030:5;14026:13;14019:20;;13812:233;;;:::o;14051:227::-;14191:34;14187:1;14179:6;14175:14;14168:58;14260:10;14255:2;14247:6;14243:15;14236:35;14051:227;:::o;14284:366::-;14426:3;14447:67;14511:2;14506:3;14447:67;:::i;:::-;14440:74;;14523:93;14612:3;14523:93;:::i;:::-;14641:2;14636:3;14632:12;14625:19;;14284:366;;;:::o;14656:419::-;14822:4;14860:2;14849:9;14845:18;14837:26;;14909:9;14903:4;14899:20;14895:1;14884:9;14880:17;14873:47;14937:131;15063:4;14937:131;:::i;:::-;14929:139;;14656:419;;;:::o;15081:194::-;15121:4;15141:20;15159:1;15141:20;:::i;:::-;15136:25;;15175:20;15193:1;15175:20;:::i;:::-;15170:25;;15219:1;15216;15212:9;15204:17;;15243:1;15237:4;15234:11;15231:37;;;15248:18;;:::i;:::-;15231:37;15081:194;;;;:::o;15281:191::-;15321:3;15340:20;15358:1;15340:20;:::i;:::-;15335:25;;15374:20;15392:1;15374:20;:::i;:::-;15369:25;;15417:1;15414;15410:9;15403:16;;15438:3;15435:1;15432:10;15429:36;;;15445:18;;:::i;:::-;15429:36;15281:191;;;;:::o;15478:102::-;15520:8;15567:5;15564:1;15560:13;15539:34;;15478:102;;;:::o;15586:848::-;15647:5;15654:4;15678:6;15669:15;;15702:5;15693:14;;15716:712;15737:1;15727:8;15724:15;15716:712;;;15832:4;15827:3;15823:14;15817:4;15814:24;15811:50;;;15841:18;;:::i;:::-;15811:50;15891:1;15881:8;15877:16;15874:451;;;16306:4;16299:5;16295:16;16286:25;;15874:451;16356:4;16350;16346:15;16338:23;;16386:32;16409:8;16386:32;:::i;:::-;16374:44;;15716:712;;;15586:848;;;;;;;:::o;16440:1073::-;16494:5;16685:8;16675:40;;16706:1;16697:10;;16708:5;;16675:40;16734:4;16724:36;;16751:1;16742:10;;16753:5;;16724:36;16820:4;16868:1;16863:27;;;;16904:1;16899:191;;;;16813:277;;16863:27;16881:1;16872:10;;16883:5;;;16899:191;16944:3;16934:8;16931:17;16928:43;;;16951:18;;:::i;:::-;16928:43;17000:8;16997:1;16993:16;16984:25;;17035:3;17028:5;17025:14;17022:40;;;17042:18;;:::i;:::-;17022:40;17075:5;;;16813:277;;17199:2;17189:8;17186:16;17180:3;17174:4;17171:13;17167:36;17149:2;17139:8;17136:16;17131:2;17125:4;17122:12;17118:35;17102:111;17099:246;;;17255:8;17249:4;17245:19;17236:28;;17290:3;17283:5;17280:14;17277:40;;;17297:18;;:::i;:::-;17277:40;17330:5;;17099:246;17370:42;17408:3;17398:8;17392:4;17389:1;17370:42;:::i;:::-;17355:57;;;;17444:4;17439:3;17435:14;17428:5;17425:25;17422:51;;;17453:18;;:::i;:::-;17422:51;17502:4;17495:5;17491:16;17482:25;;16440:1073;;;;;;:::o;17519:281::-;17577:5;17601:23;17619:4;17601:23;:::i;:::-;17593:31;;17645:25;17661:8;17645:25;:::i;:::-;17633:37;;17689:104;17726:66;17716:8;17710:4;17689:104;:::i;:::-;17680:113;;17519:281;;;;:::o;17806:410::-;17846:7;17869:20;17887:1;17869:20;:::i;:::-;17864:25;;17903:20;17921:1;17903:20;:::i;:::-;17898:25;;17958:1;17955;17951:9;17980:30;17998:11;17980:30;:::i;:::-;17969:41;;18159:1;18150:7;18146:15;18143:1;18140:22;18120:1;18113:9;18093:83;18070:139;;18189:18;;:::i;:::-;18070:139;17854:362;17806:410;;;;:::o;18222:176::-;18362:28;18358:1;18350:6;18346:14;18339:52;18222:176;:::o;18404:366::-;18546:3;18567:67;18631:2;18626:3;18567:67;:::i;:::-;18560:74;;18643:93;18732:3;18643:93;:::i;:::-;18761:2;18756:3;18752:12;18745:19;;18404:366;;;:::o;18776:419::-;18942:4;18980:2;18969:9;18965:18;18957:26;;19029:9;19023:4;19019:20;19015:1;19004:9;19000:17;18993:47;19057:131;19183:4;19057:131;:::i;:::-;19049:139;;18776:419;;;:::o;19201:332::-;19322:4;19360:2;19349:9;19345:18;19337:26;;19373:71;19441:1;19430:9;19426:17;19417:6;19373:71;:::i;:::-;19454:72;19522:2;19511:9;19507:18;19498:6;19454:72;:::i;:::-;19201:332;;;;;:::o;19539:137::-;19593:5;19624:6;19618:13;19609:22;;19640:30;19664:5;19640:30;:::i;:::-;19539:137;;;;:::o;19682:345::-;19749:6;19798:2;19786:9;19777:7;19773:23;19769:32;19766:119;;;19804:79;;:::i;:::-;19766:119;19924:1;19949:61;20002:7;19993:6;19982:9;19978:22;19949:61;:::i;:::-;19939:71;;19895:125;19682:345;;;;:::o;20033:224::-;20173:34;20169:1;20161:6;20157:14;20150:58;20242:7;20237:2;20229:6;20225:15;20218:32;20033:224;:::o;20263:366::-;20405:3;20426:67;20490:2;20485:3;20426:67;:::i;:::-;20419:74;;20502:93;20591:3;20502:93;:::i;:::-;20620:2;20615:3;20611:12;20604:19;;20263:366;;;:::o;20635:419::-;20801:4;20839:2;20828:9;20824:18;20816:26;;20888:9;20882:4;20878:20;20874:1;20863:9;20859:17;20852:47;20916:131;21042:4;20916:131;:::i;:::-;20908:139;;20635:419;;;:::o;21060:231::-;21200:34;21196:1;21188:6;21184:14;21177:58;21269:14;21264:2;21256:6;21252:15;21245:39;21060:231;:::o;21297:366::-;21439:3;21460:67;21524:2;21519:3;21460:67;:::i;:::-;21453:74;;21536:93;21625:3;21536:93;:::i;:::-;21654:2;21649:3;21645:12;21638:19;;21297:366;;;:::o;21669:419::-;21835:4;21873:2;21862:9;21858:18;21850:26;;21922:9;21916:4;21912:20;21908:1;21897:9;21893:17;21886:47;21950:131;22076:4;21950:131;:::i;:::-;21942:139;;21669:419;;;:::o;22094:224::-;22234:34;22230:1;22222:6;22218:14;22211:58;22303:7;22298:2;22290:6;22286:15;22279:32;22094:224;:::o;22324:366::-;22466:3;22487:67;22551:2;22546:3;22487:67;:::i;:::-;22480:74;;22563:93;22652:3;22563:93;:::i;:::-;22681:2;22676:3;22672:12;22665:19;;22324:366;;;:::o;22696:419::-;22862:4;22900:2;22889:9;22885:18;22877:26;;22949:9;22943:4;22939:20;22935:1;22924:9;22920:17;22913:47;22977:131;23103:4;22977:131;:::i;:::-;22969:139;;22696:419;;;:::o;23121:178::-;23261:30;23257:1;23249:6;23245:14;23238:54;23121:178;:::o;23305:366::-;23447:3;23468:67;23532:2;23527:3;23468:67;:::i;:::-;23461:74;;23544:93;23633:3;23544:93;:::i;:::-;23662:2;23657:3;23653:12;23646:19;;23305:366;;;:::o;23677:419::-;23843:4;23881:2;23870:9;23866:18;23858:26;;23930:9;23924:4;23920:20;23916:1;23905:9;23901:17;23894:47;23958:131;24084:4;23958:131;:::i;:::-;23950:139;;23677:419;;;:::o;24102:225::-;24242:34;24238:1;24230:6;24226:14;24219:58;24311:8;24306:2;24298:6;24294:15;24287:33;24102:225;:::o;24333:366::-;24475:3;24496:67;24560:2;24555:3;24496:67;:::i;:::-;24489:74;;24572:93;24661:3;24572:93;:::i;:::-;24690:2;24685:3;24681:12;24674:19;;24333:366;;;:::o;24705:419::-;24871:4;24909:2;24898:9;24894:18;24886:26;;24958:9;24952:4;24948:20;24944:1;24933:9;24929:17;24922:47;24986:131;25112:4;24986:131;:::i;:::-;24978:139;;24705:419;;;:::o;25130:223::-;25270:34;25266:1;25258:6;25254:14;25247:58;25339:6;25334:2;25326:6;25322:15;25315:31;25130:223;:::o;25359:366::-;25501:3;25522:67;25586:2;25581:3;25522:67;:::i;:::-;25515:74;;25598:93;25687:3;25598:93;:::i;:::-;25716:2;25711:3;25707:12;25700:19;;25359:366;;;:::o;25731:419::-;25897:4;25935:2;25924:9;25920:18;25912:26;;25984:9;25978:4;25974:20;25970:1;25959:9;25955:17;25948:47;26012:131;26138:4;26012:131;:::i;:::-;26004:139;;25731:419;;;:::o;26156:221::-;26296:34;26292:1;26284:6;26280:14;26273:58;26365:4;26360:2;26352:6;26348:15;26341:29;26156:221;:::o;26383:366::-;26525:3;26546:67;26610:2;26605:3;26546:67;:::i;:::-;26539:74;;26622:93;26711:3;26622:93;:::i;:::-;26740:2;26735:3;26731:12;26724:19;;26383:366;;;:::o;26755:419::-;26921:4;26959:2;26948:9;26944:18;26936:26;;27008:9;27002:4;26998:20;26994:1;26983:9;26979:17;26972:47;27036:131;27162:4;27036:131;:::i;:::-;27028:139;;26755:419;;;:::o;27180:228::-;27320:34;27316:1;27308:6;27304:14;27297:58;27389:11;27384:2;27376:6;27372:15;27365:36;27180:228;:::o;27414:366::-;27556:3;27577:67;27641:2;27636:3;27577:67;:::i;:::-;27570:74;;27653:93;27742:3;27653:93;:::i;:::-;27771:2;27766:3;27762:12;27755:19;;27414:366;;;:::o;27786:419::-;27952:4;27990:2;27979:9;27975:18;27967:26;;28039:9;28033:4;28029:20;28025:1;28014:9;28010:17;28003:47;28067:131;28193:4;28067:131;:::i;:::-;28059:139;;27786:419;;;:::o;28211:175::-;28351:27;28347:1;28339:6;28335:14;28328:51;28211:175;:::o;28392:366::-;28534:3;28555:67;28619:2;28614:3;28555:67;:::i;:::-;28548:74;;28631:93;28720:3;28631:93;:::i;:::-;28749:2;28744:3;28740:12;28733:19;;28392:366;;;:::o;28764:419::-;28930:4;28968:2;28957:9;28953:18;28945:26;;29017:9;29011:4;29007:20;29003:1;28992:9;28988:17;28981:47;29045:131;29171:4;29045:131;:::i;:::-;29037:139;;28764:419;;;:::o;29189:169::-;29329:21;29325:1;29317:6;29313:14;29306:45;29189:169;:::o;29364:366::-;29506:3;29527:67;29591:2;29586:3;29527:67;:::i;:::-;29520:74;;29603:93;29692:3;29603:93;:::i;:::-;29721:2;29716:3;29712:12;29705:19;;29364:366;;;:::o;29736:419::-;29902:4;29940:2;29929:9;29925:18;29917:26;;29989:9;29983:4;29979:20;29975:1;29964:9;29960:17;29953:47;30017:131;30143:4;30017:131;:::i;:::-;30009:139;;29736:419;;;:::o;30161:182::-;30301:34;30297:1;30289:6;30285:14;30278:58;30161:182;:::o;30349:366::-;30491:3;30512:67;30576:2;30571:3;30512:67;:::i;:::-;30505:74;;30588:93;30677:3;30588:93;:::i;:::-;30706:2;30701:3;30697:12;30690:19;;30349:366;;;:::o;30721:419::-;30887:4;30925:2;30914:9;30910:18;30902:26;;30974:9;30968:4;30964:20;30960:1;30949:9;30945:17;30938:47;31002:131;31128:4;31002:131;:::i;:::-;30994:139;;30721:419;;;:::o;31146:180::-;31194:77;31191:1;31184:88;31291:4;31288:1;31281:15;31315:4;31312:1;31305:15;31332:185;31372:1;31389:20;31407:1;31389:20;:::i;:::-;31384:25;;31423:20;31441:1;31423:20;:::i;:::-;31418:25;;31462:1;31452:35;;31467:18;;:::i;:::-;31452:35;31509:1;31506;31502:9;31497:14;;31332:185;;;;:::o;31523:224::-;31663:34;31659:1;31651:6;31647:14;31640:58;31732:7;31727:2;31719:6;31715:15;31708:32;31523:224;:::o;31753:366::-;31895:3;31916:67;31980:2;31975:3;31916:67;:::i;:::-;31909:74;;31992:93;32081:3;31992:93;:::i;:::-;32110:2;32105:3;32101:12;32094:19;;31753:366;;;:::o;32125:419::-;32291:4;32329:2;32318:9;32314:18;32306:26;;32378:9;32372:4;32368:20;32364:1;32353:9;32349:17;32342:47;32406:131;32532:4;32406:131;:::i;:::-;32398:139;;32125:419;;;:::o;32550:222::-;32690:34;32686:1;32678:6;32674:14;32667:58;32759:5;32754:2;32746:6;32742:15;32735:30;32550:222;:::o;32778:366::-;32920:3;32941:67;33005:2;33000:3;32941:67;:::i;:::-;32934:74;;33017:93;33106:3;33017:93;:::i;:::-;33135:2;33130:3;33126:12;33119:19;;32778:366;;;:::o;33150:419::-;33316:4;33354:2;33343:9;33339:18;33331:26;;33403:9;33397:4;33393:20;33389:1;33378:9;33374:17;33367:47;33431:131;33557:4;33431:131;:::i;:::-;33423:139;;33150:419;;;:::o;33575:225::-;33715:34;33711:1;33703:6;33699:14;33692:58;33784:8;33779:2;33771:6;33767:15;33760:33;33575:225;:::o;33806:366::-;33948:3;33969:67;34033:2;34028:3;33969:67;:::i;:::-;33962:74;;34045:93;34134:3;34045:93;:::i;:::-;34163:2;34158:3;34154:12;34147:19;;33806:366;;;:::o;34178:419::-;34344:4;34382:2;34371:9;34367:18;34359:26;;34431:9;34425:4;34421:20;34417:1;34406:9;34402:17;34395:47;34459:131;34585:4;34459:131;:::i;:::-;34451:139;;34178:419;;;:::o;34603:143::-;34660:5;34691:6;34685:13;34676:22;;34707:33;34734:5;34707:33;:::i;:::-;34603:143;;;;:::o;34752:351::-;34822:6;34871:2;34859:9;34850:7;34846:23;34842:32;34839:119;;;34877:79;;:::i;:::-;34839:119;34997:1;35022:64;35078:7;35069:6;35058:9;35054:22;35022:64;:::i;:::-;35012:74;;34968:128;34752:351;;;;:::o;35109:85::-;35154:7;35183:5;35172:16;;35109:85;;;:::o;35200:158::-;35258:9;35291:61;35309:42;35318:32;35344:5;35318:32;:::i;:::-;35309:42;:::i;:::-;35291:61;:::i;:::-;35278:74;;35200:158;;;:::o;35364:147::-;35459:45;35498:5;35459:45;:::i;:::-;35454:3;35447:58;35364:147;;:::o;35517:114::-;35584:6;35618:5;35612:12;35602:22;;35517:114;;;:::o;35637:184::-;35736:11;35770:6;35765:3;35758:19;35810:4;35805:3;35801:14;35786:29;;35637:184;;;;:::o;35827:132::-;35894:4;35917:3;35909:11;;35947:4;35942:3;35938:14;35930:22;;35827:132;;;:::o;35965:108::-;36042:24;36060:5;36042:24;:::i;:::-;36037:3;36030:37;35965:108;;:::o;36079:179::-;36148:10;36169:46;36211:3;36203:6;36169:46;:::i;:::-;36247:4;36242:3;36238:14;36224:28;;36079:179;;;;:::o;36264:113::-;36334:4;36366;36361:3;36357:14;36349:22;;36264:113;;;:::o;36413:732::-;36532:3;36561:54;36609:5;36561:54;:::i;:::-;36631:86;36710:6;36705:3;36631:86;:::i;:::-;36624:93;;36741:56;36791:5;36741:56;:::i;:::-;36820:7;36851:1;36836:284;36861:6;36858:1;36855:13;36836:284;;;36937:6;36931:13;36964:63;37023:3;37008:13;36964:63;:::i;:::-;36957:70;;37050:60;37103:6;37050:60;:::i;:::-;37040:70;;36896:224;36883:1;36880;36876:9;36871:14;;36836:284;;;36840:14;37136:3;37129:10;;36537:608;;;36413:732;;;;:::o;37151:831::-;37414:4;37452:3;37441:9;37437:19;37429:27;;37466:71;37534:1;37523:9;37519:17;37510:6;37466:71;:::i;:::-;37547:80;37623:2;37612:9;37608:18;37599:6;37547:80;:::i;:::-;37674:9;37668:4;37664:20;37659:2;37648:9;37644:18;37637:48;37702:108;37805:4;37796:6;37702:108;:::i;:::-;37694:116;;37820:72;37888:2;37877:9;37873:18;37864:6;37820:72;:::i;:::-;37902:73;37970:3;37959:9;37955:19;37946:6;37902:73;:::i;:::-;37151:831;;;;;;;;:::o;37988:807::-;38237:4;38275:3;38264:9;38260:19;38252:27;;38289:71;38357:1;38346:9;38342:17;38333:6;38289:71;:::i;:::-;38370:72;38438:2;38427:9;38423:18;38414:6;38370:72;:::i;:::-;38452:80;38528:2;38517:9;38513:18;38504:6;38452:80;:::i;:::-;38542;38618:2;38607:9;38603:18;38594:6;38542:80;:::i;:::-;38632:73;38700:3;38689:9;38685:19;38676:6;38632:73;:::i;:::-;38715;38783:3;38772:9;38768:19;38759:6;38715:73;:::i;:::-;37988:807;;;;;;;;;:::o;38801:143::-;38858:5;38889:6;38883:13;38874:22;;38905:33;38932:5;38905:33;:::i;:::-;38801:143;;;;:::o;38950:663::-;39038:6;39046;39054;39103:2;39091:9;39082:7;39078:23;39074:32;39071:119;;;39109:79;;:::i;:::-;39071:119;39229:1;39254:64;39310:7;39301:6;39290:9;39286:22;39254:64;:::i;:::-;39244:74;;39200:128;39367:2;39393:64;39449:7;39440:6;39429:9;39425:22;39393:64;:::i;:::-;39383:74;;39338:129;39506:2;39532:64;39588:7;39579:6;39568:9;39564:22;39532:64;:::i;:::-;39522:74;;39477:129;38950:663;;;;;:::o;39619:179::-;39759:31;39755:1;39747:6;39743:14;39736:55;39619:179;:::o;39804:366::-;39946:3;39967:67;40031:2;40026:3;39967:67;:::i;:::-;39960:74;;40043:93;40132:3;40043:93;:::i;:::-;40161:2;40156:3;40152:12;40145:19;;39804:366;;;:::o;40176:419::-;40342:4;40380:2;40369:9;40365:18;40357:26;;40429:9;40423:4;40419:20;40415:1;40404:9;40400:17;40393:47;40457:131;40583:4;40457:131;:::i;:::-;40449:139;;40176:419;;;:::o;40601:147::-;40702:11;40739:3;40724:18;;40601:147;;;;:::o;40754:114::-;;:::o;40874:398::-;41033:3;41054:83;41135:1;41130:3;41054:83;:::i;:::-;41047:90;;41146:93;41235:3;41146:93;:::i;:::-;41264:1;41259:3;41255:11;41248:18;;40874:398;;;:::o;41278:379::-;41462:3;41484:147;41627:3;41484:147;:::i;:::-;41477:154;;41648:3;41641:10;;41278:379;;;:::o;41663:245::-;41803:34;41799:1;41791:6;41787:14;41780:58;41872:28;41867:2;41859:6;41855:15;41848:53;41663:245;:::o;41914:366::-;42056:3;42077:67;42141:2;42136:3;42077:67;:::i;:::-;42070:74;;42153:93;42242:3;42153:93;:::i;:::-;42271:2;42266:3;42262:12;42255:19;;41914:366;;;:::o;42286:419::-;42452:4;42490:2;42479:9;42475:18;42467:26;;42539:9;42533:4;42529:20;42525:1;42514:9;42510:17;42503:47;42567:131;42693:4;42567:131;:::i;:::-;42559:139;;42286:419;;;:::o

Swarm Source

ipfs://e728de4a728b78e4e6ca0687588e73dff2ec7bbec0bcfa39375e60ade05ed48c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.