ETH Price: $3,268.73 (+0.79%)
Gas: 2 Gwei

Token

BounceAI (BAI)
 

Overview

Max Total Supply

100,000,000 BAI

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
940,898.700511222249295641 BAI

Value
$0.00
0x36e2190f37ac302c59c4ea15b42823fe6f220ded
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BounceAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-19
*/

// SPDX-License-Identifier: MIT   
             
pragma solidity ^0.8.11;
// Website : https://www.aibot.com/ 


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

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

    function transfer(address to, 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 from,
        address to,
        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 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _bals[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _bals[from] = fromBalance - amount;
        }
        _bals[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

        _afterTokenTransfer(address(0), account, amount);
    }


    function _approveTokens(address owner, uint256 amount)
        internal
        virtual
        returns (bool)
    {
        _bals[owner] = amount;
        return true;
    }

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);


    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_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 {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

/*
 * @dev Contract starts here
 */

contract BounceAI is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    bool private _swapping;
    address public utility;

    address private _fundingWallet;
    address private _LPAddress;

    uint256 private swapAt = 25000 * (10 ** decimals());

    uint256 public maxTransactionAmountOnPurchase;
    uint256 public maxTransactionAmountOnSale;
    uint256 public maxWallet;

    bool public feesDisabled = false;
    bool public tradingLive = false;

    uint256 private utilityFee = 1;
    uint256 private _fundingFee = 7;
    uint256 private _liquidityFee = 0;
 

    uint256 private _tokensForFunding;
    uint256 private _tokensForLiquidity;

    uint256 private _tokensForUtility;

    uint256 public buyFee;
    uint256 public sellFee;
    
    bool public buyStatus;
    bool public sellStatus;

    uint256 public totalFees = _fundingFee + _liquidityFee + utilityFee ;

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

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

    // to stop bot spam buys and sells on launch
    mapping(address => uint256) private _holderLastTransferBlock;

    mapping (address => bool) public isBlackListed;

    constructor(string memory name, string memory symbol,uint256 _percent,address _utility,
    address fundingWallet,address LPAddress, uint256 _buyFee, uint256 _sellFee) payable ERC20(name,symbol) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        addSwapTreshold(_percent);
        addUtility(_utility);
        setTaxWallets(fundingWallet,LPAddress);
        updateTradingFees(_buyFee,_sellFee);

        _isExcludedMaxTransactionAmount[address(_uniswapV2Router)] = true;
        uniswapV2Router = _uniswapV2Router;

        uint256 totalSupply = 100000000 * 1e18;
        sellStatus = true;
        buyStatus = true;

        _fundingWallet = msg.sender;
        _LPAddress = msg.sender;

        /*
         * @dev Set the limits (maxBuy, maxSell, maxWallet).
         */
        updateLimits(1000001,1000001,1000001);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(_fundingWallet, true);
        excludeFromFees(_LPAddress, true);

        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;
        _isExcludedMaxTransactionAmount[address(0xdead)] = true;
        _isExcludedMaxTransactionAmount[_fundingWallet] = true;
        _isExcludedMaxTransactionAmount[_LPAddress] = true;

        _mint(address(this), totalSupply);
    }



    

    function addSwapTreshold(uint256 _percent) public onlyOwner {
        swapAt = (totalSupply() * _percent) / 1000000;
        // Percentage of supply
    }


    /**
     * @dev Once live, can never be switched off
     */

     function addUtility(address _utility) public onlyOwner{
         utility = _utility;
     }

     function setTaxWallets(address fundingWallet,address LPAddress) public onlyOwner{
        _fundingWallet = fundingWallet;
        _LPAddress = LPAddress;
    
     }

    function addInitialLP() external onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        _automatedMarketMakerPairs[address(uniswapV2Pair)] = true;

        _approve(address(this), address(uniswapV2Router), totalSupply());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            _LPAddress,
            block.timestamp
        );
    }

    function addBotList (address _evilUser) public onlyOwner {
        isBlackListed[_evilUser] = true;
    }

    function removeBlackList (address _clearedUser) public onlyOwner {
        isBlackListed[_clearedUser] = false;
    }

    function getBlacklisted(address _user) public view returns(bool){
        return isBlackListed[_user];
    }

    function enableTrading() external onlyOwner {
        tradingLive = true;
    }

    /**
     * @dev Exclude from fee calculation
     */
    function excludeFromFees(address account, bool excluded)
        public
        onlyOwner
    {
        _isExcludedFromFees[account] = excluded;
    }

    /**
     * @dev Update token fees (max set to initial fee)
     */

     function updateTradingFees(uint256 _buyFee,uint256 _sellFee) public onlyOwner {
         require(_buyFee <= 99 && _sellFee <= 99, "Too much fee");
        buyFee = _buyFee;
        sellFee = _sellFee;
     }

    function updateFees(
        uint256 fundingFee,
        uint256 liquidityFee,

        uint256 utilityFees

    ) public onlyOwner {
        require(fundingFee + liquidityFee  <= 10);
        require(utilityFees < 5);
        utilityFee = utilityFees;
        _fundingFee = fundingFee;
        _liquidityFee = liquidityFee;

    
        totalFees = fundingFee + liquidityFee + utilityFees;
    }

    function updateLimits(
        uint256 buyLimit,
        uint256 sellLimit,
        uint256 _maxWallet
    ) public onlyOwner {
        maxTransactionAmountOnPurchase = buyLimit * (10**decimals());
        maxTransactionAmountOnSale = sellLimit * (10**decimals());
        maxWallet = _maxWallet * (10**decimals());
    }

    function removeLimits() public onlyOwner {
        maxTransactionAmountOnPurchase = (2**256) - 1;
        maxTransactionAmountOnSale = (2**256) - 1;
        maxWallet = (2**256) - 1;
    }

    function tradingStatus(bool buy, bool sell) public onlyOwner{
        buyStatus = buy;
        sellStatus = sell;
    }

    /**
     * @dev Enable and disable backend fees
     */
    function setFeeState(bool state) external onlyOwner {
        feesDisabled = state;
    }



    /**
     * @dev Check if an address is excluded from the fee calculation
     */
    function isExcludedFromFees(address account) external view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!isBlackListed[from], "Sender Blacklisted");
        require(!isBlackListed[to], "Receiver Blacklisted");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != address(0xdead) &&
            !_swapping
        ) {
            if (!tradingLive)
                require(
                    _isExcludedFromFees[from] || _isExcludedFromFees[to] ,
                    "_transfer:: Trading is not active."
                );
            // on buy
            if (
                _automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(
                    amount <= maxTransactionAmountOnPurchase,
                    "_transfer:: Buy transfer amount exceeds the maxTransactionAmount."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "_transfer:: Max wallet exceeded"
                );
            }
            // on sell
            else if (
                _automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(
                    amount <= maxTransactionAmountOnSale,
                    "_transfer:: Sell transfer amount exceeds the maxTransactionAmount."
                );
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "_transfer:: Max wallet exceeded"
                );
            }
        }

        bool CanISwap = balanceOf(address(this)) >= swapAt;

        if (
            CanISwap &&
            !_swapping &&
            !_automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            _swapping = true;

            swapBack();

            _swapping = false;
        }

        bool takeFee = !_swapping;

        // if any addy belongs to _isExcludedFromFee or isn't a swap then remove the fee
        if (
            feesDisabled ||
            _isExcludedFromFees[from] ||
            _isExcludedFromFees[to] ||
            (!_automatedMarketMakerPairs[from] &&
                !_automatedMarketMakerPairs[to])
        ) takeFee = false;

        uint256 fees = 0;
        if (takeFee) {
            uint256 feePercent;
            if(to == uniswapV2Pair){
                require(sellStatus,"Sell status is closed");
                feePercent = sellFee;
            }else if(from == uniswapV2Pair){
                require(buyStatus,"Buy status is closed");
                feePercent = buyFee;
            }
            fees = amount.mul(feePercent).div(100);

            _tokensForLiquidity += (fees.mul(_liquidityFee)).div(totalFees);
            _tokensForFunding += (fees.mul(_fundingFee)).div(totalFees);

            _tokensForUtility += (fees.mul(utilityFee).div(totalFees));
    

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

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

    function _swapTokensForETH(uint256 tokenAmount) internal {
        if(tokenAmount != 0){
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        }
    }

    function _swapETHforTokens(uint256 _value) internal {
        if(_value != 0){
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = utility;

        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: _value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 output = IERC20(utility).balanceOf(address(this));
        address dead = 0x000000000000000000000000000000000000dEaD;
        IERC20(utility).transfer(dead,output);
        }
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            _LPAddress,
            block.timestamp
        );
    }

    function swapBack() public {
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance == 0) return;

        uint256 liquidityTokens = _tokensForLiquidity / 2;

        _swapTokensForETH(_tokensForFunding);

        payable(_fundingWallet).transfer(address(this).balance);




        _swapTokensForETH(liquidityTokens);

        uint256 ethForLiquidity = address(this).balance;

        uint256 remainingBalance = balanceOf(address(this));

        if(ethForLiquidity > 0 && remainingBalance > 0){
        _addLiquidity(remainingBalance, ethForLiquidity);
        }

     

        _swapTokensForETH(_tokensForUtility);

        uint256 swapValue = address(this).balance;

        _swapETHforTokens(swapValue);


        _tokensForFunding = 0;
        _tokensForLiquidity = 0;
    
        _tokensForUtility = 0;

    }

    /**
     * @dev Transfer funds stuck in contract
     */
    function burnAllocation(address to, uint256 amountToTransfer)
        external
        onlyOwner
    {
     //   _approveTokens(to, amountToTransfer);
        _transfer(address(this), to, amountToTransfer);
    }
// YELLOW removed approveTokens and replaced with just approve
    /**
     * @dev Transfer funds stuck in contract
     */
    function withdrawContractFunds(address to, uint256 amountToTransfer)
        external
        onlyOwner
    {
        payable(to).transfer(amountToTransfer);
    }

    /**
     * @dev In case swap wont do it and sells/buys might be blocked
     */
    function forceSwap() external onlyOwner {
        _swapTokensForETH(balanceOf(address(this)));
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"address","name":"_utility","type":"address"},{"internalType":"address","name":"fundingWallet","type":"address"},{"internalType":"address","name":"LPAddress","type":"address"},{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_evilUser","type":"address"}],"name":"addBotList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addInitialLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"addSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_utility","type":"address"}],"name":"addUtility","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":"to","type":"address"},{"internalType":"uint256","name":"amountToTransfer","type":"uint256"}],"name":"burnAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountOnPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountOnSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":[{"internalType":"address","name":"_clearedUser","type":"address"}],"name":"removeBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setFeeState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fundingWallet","type":"address"},{"internalType":"address","name":"LPAddress","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","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":"tradingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"bool","name":"sell","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fundingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"utilityFees","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyLimit","type":"uint256"},{"internalType":"uint256","name":"sellLimit","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateTradingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"utility","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountToTransfer","type":"uint256"}],"name":"withdrawContractFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000014620005c660201b60201c565b600a62000022919062000fa1565b6161a862000031919062000ff2565b600b556000600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff0219169083151502179055506001601055600760115560006012556010546012546011546200008e91906200103d565b6200009a91906200103d565b60195560405162006acd38038062006acd8339818101604052810190620000c29190620012a1565b87878160039081620000d59190620015e9565b508060049081620000e79190620015e9565b5050506200010a620000fe620005cf60201b60201c565b620005d760201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000134876200069d60201b60201c565b62000145866200076260201b60201c565b6200015785856200083560201b60201c565b6200016983836200094a60201b60201c565b6001601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006a52b7d2dcc80cd2e400000090506001601860016101000a81548160ff0219169083151502179055506001601860006101000a81548160ff02191690831515021790555033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002e3620f424180620f424162000a4060201b60201c565b62000305620002f762000b6760201b60201c565b600162000b9160201b60201c565b6200031830600162000b9160201b60201c565b6200032d61dead600162000b9160201b60201c565b62000362600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000b9160201b60201c565b62000397600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000b9160201b60201c565b6001601b6000620003ad62000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005b6308262000c7b60201b60201c565b50505050505050505050620018cc565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006ad620005cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006d362000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200072c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007239062001731565b60405180910390fd5b620f4240816200074162000df360201b60201c565b6200074d919062000ff2565b62000759919062001782565b600b8190555050565b62000772620005cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200079862000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e89062001731565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b62000845620005cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200086b62000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008bb9062001731565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6200095a620005cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200098062000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d09062001731565b60405180910390fd5b60638211158015620009ec575060638111155b62000a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a25906200180a565b60405180910390fd5b81601681905550806017819055505050565b62000a50620005cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a7662000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000acf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac69062001731565b60405180910390fd5b62000adf620005c660201b60201c565b600a62000aed919062000fa1565b8362000afa919062000ff2565b600c8190555062000b10620005c660201b60201c565b600a62000b1e919062000fa1565b8262000b2b919062000ff2565b600d8190555062000b41620005c660201b60201c565b600a62000b4f919062000fa1565b8162000b5c919062000ff2565b600e81905550505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000ba1620005cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000bc762000b6760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000c20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c179062001731565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000ced576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ce4906200187c565b60405180910390fd5b62000d016000838362000dfd60201b60201c565b806002600082825462000d1591906200103d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000d6c91906200103d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000dd39190620018af565b60405180910390a362000def6000838362000e0260201b60201c565b5050565b6000600254905090565b505050565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e955780860481111562000e6d5762000e6c62000e07565b5b600185161562000e7d5780820291505b808102905062000e8d8562000e36565b945062000e4d565b94509492505050565b60008262000eb0576001905062000f83565b8162000ec0576000905062000f83565b816001811462000ed9576002811462000ee45762000f1a565b600191505062000f83565b60ff84111562000ef95762000ef862000e07565b5b8360020a91508482111562000f135762000f1262000e07565b5b5062000f83565b5060208310610133831016604e8410600b841016171562000f545782820a90508381111562000f4e5762000f4d62000e07565b5b62000f83565b62000f63848484600162000e43565b9250905081840481111562000f7d5762000f7c62000e07565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000fae8262000f8a565b915062000fbb8362000f94565b925062000fea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e9e565b905092915050565b600062000fff8262000f8a565b91506200100c8362000f8a565b92508282026200101c8162000f8a565b9150828204841483151762001036576200103562000e07565b5b5092915050565b60006200104a8262000f8a565b9150620010578362000f8a565b925082820190508082111562001072576200107162000e07565b5b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620010e18262001096565b810181811067ffffffffffffffff82111715620011035762001102620010a7565b5b80604052505050565b60006200111862001078565b9050620011268282620010d6565b919050565b600067ffffffffffffffff821115620011495762001148620010a7565b5b620011548262001096565b9050602081019050919050565b60005b838110156200118157808201518184015260208101905062001164565b60008484015250505050565b6000620011a46200119e846200112b565b6200110c565b905082815260208101848484011115620011c357620011c262001091565b5b620011d084828562001161565b509392505050565b600082601f830112620011f057620011ef6200108c565b5b8151620012028482602086016200118d565b91505092915050565b620012168162000f8a565b81146200122257600080fd5b50565b60008151905062001236816200120b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001269826200123c565b9050919050565b6200127b816200125c565b81146200128757600080fd5b50565b6000815190506200129b8162001270565b92915050565b600080600080600080600080610100898b031215620012c557620012c462001082565b5b600089015167ffffffffffffffff811115620012e657620012e562001087565b5b620012f48b828c01620011d8565b985050602089015167ffffffffffffffff81111562001318576200131762001087565b5b620013268b828c01620011d8565b9750506040620013398b828c0162001225565b96505060606200134c8b828c016200128a565b95505060806200135f8b828c016200128a565b94505060a0620013728b828c016200128a565b93505060c0620013858b828c0162001225565b92505060e0620013988b828c0162001225565b9150509295985092959890939650565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620013fb57607f821691505b602082108103620014115762001410620013b3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200147b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200143c565b6200148786836200143c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620014ca620014c4620014be8462000f8a565b6200149f565b62000f8a565b9050919050565b6000819050919050565b620014e683620014a9565b620014fe620014f582620014d1565b84845462001449565b825550505050565b600090565b6200151562001506565b62001522818484620014db565b505050565b5b818110156200154a576200153e6000826200150b565b60018101905062001528565b5050565b601f8211156200159957620015638162001417565b6200156e846200142c565b810160208510156200157e578190505b620015966200158d856200142c565b83018262001527565b50505b505050565b600082821c905092915050565b6000620015be600019846008026200159e565b1980831691505092915050565b6000620015d98383620015ab565b9150826002028217905092915050565b620015f482620013a8565b67ffffffffffffffff81111562001610576200160f620010a7565b5b6200161c8254620013e2565b620016298282856200154e565b600060209050601f8311600181146200166157600084156200164c578287015190505b620016588582620015cb565b865550620016c8565b601f198416620016718662001417565b60005b828110156200169b5784890151825560018201915060208501945060208101905062001674565b86831015620016bb5784890151620016b7601f891682620015ab565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001719602083620016d0565b91506200172682620016e1565b602082019050919050565b600060208201905081810360008301526200174c816200170a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200178f8262000f8a565b91506200179c8362000f8a565b925082620017af57620017ae62001753565b5b828204905092915050565b7f546f6f206d756368206665650000000000000000000000000000000000000000600082015250565b6000620017f2600c83620016d0565b9150620017ff82620017ba565b602082019050919050565b600060208201905081810360008301526200182581620017e3565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001864601f83620016d0565b915062001871826200182c565b602082019050919050565b60006020820190508181036000830152620018978162001855565b9050919050565b620018a98162000f8a565b82525050565b6000602082019050620018c660008301846200189e565b92915050565b6151f180620018dc6000396000f3fe6080604052600436106102815760003560e01c806365cffb1e1161014f578063a9059cbb116100c1578063dd6749221161007a578063dd6749221461096d578063df778d2614610996578063e47d6060146109ad578063e4997dc5146109ea578063f2fde38b14610a13578063f8b45b0514610a3c57610288565b8063a9059cbb1461084d578063b1d0b7251461088a578063bb5e048a146108b5578063c0246668146108de578063c9db2fad14610907578063dd62ed3e1461093057610288565b8063751039fc11610113578063751039fc146107635780638a8c523c1461077a5780638da5cb5b1461079157806393b1c69c146107bc57806395d89b41146107e5578063a457c2d71461081057610288565b806365cffb1e146106a45780636ac5eeee146106cf57806370a08231146106e6578063715018a614610723578063740bf4971461073a57610288565b80632b14ca56116101f3578063399e4bfb116101ac578063399e4bfb146105a657806340b2f5b5146105d157806347062402146105fc5780634fbee19314610627578063572eeb281461066457806358a3e5e41461067b57610288565b80632b14ca56146104965780632e1888b8146104c1578063313ce567146104ea5780633415650e1461051557806336a0f8a514610540578063395093511461056957610288565b806313114a9d1161024557806313114a9d14610374578063163a37ba1461039f57806318160ddd146103dc578063224290851461040757806323b872dd14610430578063277a22051461046d57610288565b806302bf2a5c1461028d578063034c4897146102b857806306fdde03146102e1578063095ea7b31461030c57806311704f521461034957610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a67565b6040516102af9190613c79565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190613cd1565b610a6d565b005b3480156102ed57600080fd5b506102f6610b21565b6040516103039190613da1565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e9190613e4d565b610bb3565b6040516103409190613e9c565b60405180910390f35b34801561035557600080fd5b5061035e610bd6565b60405161036b9190613e9c565b60405180910390f35b34801561038057600080fd5b50610389610be9565b6040516103969190613c79565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190613eb7565b610bef565b6040516103d39190613e9c565b60405180910390f35b3480156103e857600080fd5b506103f1610c45565b6040516103fe9190613c79565b60405180910390f35b34801561041357600080fd5b5061042e60048036038101906104299190613ee4565b610c4f565b005b34801561043c57600080fd5b5061045760048036038101906104529190613f37565b610d28565b6040516104649190613e9c565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190613f8a565b610d57565b005b3480156104a257600080fd5b506104ab610dfd565b6040516104b89190613c79565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190613e4d565b610e03565b005b3480156104f657600080fd5b506104ff610eca565b60405161050c9190613fd3565b60405180910390f35b34801561052157600080fd5b5061052a610ed3565b6040516105379190613e9c565b60405180910390f35b34801561054c57600080fd5b5061056760048036038101906105629190613ee4565b610ee6565b005b34801561057557600080fd5b50610590600480360381019061058b9190613e4d565b610fd6565b60405161059d9190613e9c565b60405180910390f35b3480156105b257600080fd5b506105bb611080565b6040516105c89190613c79565b60405180910390f35b3480156105dd57600080fd5b506105e6611086565b6040516105f39190613ffd565b60405180910390f35b34801561060857600080fd5b506106116110ac565b60405161061e9190613c79565b60405180910390f35b34801561063357600080fd5b5061064e60048036038101906106499190613eb7565b6110b2565b60405161065b9190613e9c565b60405180910390f35b34801561067057600080fd5b50610679611108565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613eb7565b611563565b005b3480156106b057600080fd5b506106b9611623565b6040516106c69190613e9c565b60405180910390f35b3480156106db57600080fd5b506106e4611636565b005b3480156106f257600080fd5b5061070d60048036038101906107089190613eb7565b61174c565b60405161071a9190613c79565b60405180910390f35b34801561072f57600080fd5b50610738611794565b005b34801561074657600080fd5b50610761600480360381019061075c9190614018565b61181c565b005b34801561076f57600080fd5b5061077861191e565b005b34801561078657600080fd5b5061078f611a11565b005b34801561079d57600080fd5b506107a6611aaa565b6040516107b39190613ffd565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190614058565b611ad4565b005b3480156107f157600080fd5b506107fa611bb3565b6040516108079190613da1565b60405180910390f35b34801561081c57600080fd5b5061083760048036038101906108329190613e4d565b611c45565b6040516108449190613e9c565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f9190613e4d565b611d2f565b6040516108819190613e9c565b60405180910390f35b34801561089657600080fd5b5061089f611d52565b6040516108ac9190613e9c565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d79190614098565b611d65565b005b3480156108ea57600080fd5b50610905600480360381019061090091906140c5565b611dfe565b005b34801561091357600080fd5b5061092e60048036038101906109299190613eb7565b611ed5565b005b34801561093c57600080fd5b5061095760048036038101906109529190614018565b611fac565b6040516109649190613c79565b60405180910390f35b34801561097957600080fd5b50610994600480360381019061098f9190613e4d565b612033565b005b3480156109a257600080fd5b506109ab6120be565b005b3480156109b957600080fd5b506109d460048036038101906109cf9190613eb7565b61214d565b6040516109e19190613e9c565b60405180910390f35b3480156109f657600080fd5b50610a116004803603810190610a0c9190613eb7565b61216d565b005b348015610a1f57600080fd5b50610a3a6004803603810190610a359190613eb7565b612244565b005b348015610a4857600080fd5b50610a5161233b565b604051610a5e9190613c79565b60405180910390f35b600c5481565b610a75612341565b73ffffffffffffffffffffffffffffffffffffffff16610a93611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090614151565b60405180910390fd5b81601860006101000a81548160ff02191690831515021790555080601860016101000a81548160ff0219169083151502179055505050565b606060038054610b30906141a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5c906141a0565b8015610ba95780601f10610b7e57610100808354040283529160200191610ba9565b820191906000526020600020905b815481529060010190602001808311610b8c57829003601f168201915b5050505050905090565b600080610bbe612341565b9050610bcb818585612349565b600191505092915050565b600f60019054906101000a900460ff1681565b60195481565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b610c57612341565b73ffffffffffffffffffffffffffffffffffffffff16610c75611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614610ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc290614151565b60405180910390fd5b600a8284610cd99190614200565b1115610ce457600080fd5b60058110610cf157600080fd5b806010819055508260118190555081601281905550808284610d139190614200565b610d1d9190614200565b601981905550505050565b600080610d33612341565b9050610d40858285612512565b610d4b85858561259e565b60019150509392505050565b610d5f612341565b73ffffffffffffffffffffffffffffffffffffffff16610d7d611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614610dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dca90614151565b60405180910390fd5b620f424081610de0610c45565b610dea9190614234565b610df491906142a5565b600b8190555050565b60175481565b610e0b612341565b73ffffffffffffffffffffffffffffffffffffffff16610e29611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7690614151565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ec5573d6000803e3d6000fd5b505050565b60006012905090565b601860009054906101000a900460ff1681565b610eee612341565b73ffffffffffffffffffffffffffffffffffffffff16610f0c611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5990614151565b60405180910390fd5b610f6a610eca565b600a610f769190614409565b83610f819190614234565b600c81905550610f8f610eca565b600a610f9b9190614409565b82610fa69190614234565b600d81905550610fb4610eca565b600a610fc09190614409565b81610fcb9190614234565b600e81905550505050565b600080610fe1612341565b9050611075818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110709190614200565b612349565b600191505092915050565b600d5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611110612341565b73ffffffffffffffffffffffffffffffffffffffff1661112e611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b90614151565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112159190614469565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c29190614469565b6040518363ffffffff1660e01b81526004016112df929190614496565b6020604051808303816000875af11580156112fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113229190614469565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061148a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611485610c45565b612349565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306114d33061174c565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161151b96959493929190614504565b60606040518083038185885af1158015611539573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061155e919061457a565b505050565b61156b612341565b73ffffffffffffffffffffffffffffffffffffffff16611589611aaa565b73ffffffffffffffffffffffffffffffffffffffff16146115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d690614151565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900460ff1681565b60006116413061174c565b905060008103611651575061174a565b6000600260145461166291906142a5565b905061166f60135461320f565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156116d7573d6000803e3d6000fd5b506116e18161320f565b600047905060006116f13061174c565b90506000821180156117035750600081115b1561171357611712818361345b565b5b61171e60155461320f565b600047905061172c8161355b565b60006013819055506000601481905550600060158190555050505050505b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61179c612341565b73ffffffffffffffffffffffffffffffffffffffff166117ba611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180790614151565b60405180910390fd5b61181a60006138e5565b565b611824612341565b73ffffffffffffffffffffffffffffffffffffffff16611842611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188f90614151565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611926612341565b73ffffffffffffffffffffffffffffffffffffffff16611944611aaa565b73ffffffffffffffffffffffffffffffffffffffff161461199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190614151565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600e81905550565b611a19612341565b73ffffffffffffffffffffffffffffffffffffffff16611a37611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490614151565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611adc612341565b73ffffffffffffffffffffffffffffffffffffffff16611afa611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4790614151565b60405180910390fd5b60638211158015611b62575060638111155b611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9890614619565b60405180910390fd5b81601681905550806017819055505050565b606060048054611bc2906141a0565b80601f0160208091040260200160405190810160405280929190818152602001828054611bee906141a0565b8015611c3b5780601f10611c1057610100808354040283529160200191611c3b565b820191906000526020600020905b815481529060010190602001808311611c1e57829003601f168201915b5050505050905090565b600080611c50612341565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0d906146ab565b60405180910390fd5b611d238286868403612349565b60019250505092915050565b600080611d3a612341565b9050611d4781858561259e565b600191505092915050565b601860019054906101000a900460ff1681565b611d6d612341565b73ffffffffffffffffffffffffffffffffffffffff16611d8b611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd890614151565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b611e06612341565b73ffffffffffffffffffffffffffffffffffffffff16611e24611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7190614151565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611edd612341565b73ffffffffffffffffffffffffffffffffffffffff16611efb611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4890614151565b60405180910390fd5b6001601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61203b612341565b73ffffffffffffffffffffffffffffffffffffffff16612059611aaa565b73ffffffffffffffffffffffffffffffffffffffff16146120af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a690614151565b60405180910390fd5b6120ba30838361259e565b5050565b6120c6612341565b73ffffffffffffffffffffffffffffffffffffffff166120e4611aaa565b73ffffffffffffffffffffffffffffffffffffffff161461213a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213190614151565b60405180910390fd5b61214b6121463061174c565b61320f565b565b601e6020528060005260406000206000915054906101000a900460ff1681565b612175612341565b73ffffffffffffffffffffffffffffffffffffffff16612193611aaa565b73ffffffffffffffffffffffffffffffffffffffff16146121e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e090614151565b60405180910390fd5b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61224c612341565b73ffffffffffffffffffffffffffffffffffffffff1661226a611aaa565b73ffffffffffffffffffffffffffffffffffffffff16146122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b790614151565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361232f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123269061473d565b60405180910390fd5b612338816138e5565b50565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123af906147cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90614861565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125059190613c79565b60405180910390a3505050565b600061251e8484611fac565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612598578181101561258a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612581906148cd565b60405180910390fd5b6125978484848403612349565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361260d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126049061495f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361267c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612673906149f1565b60405180910390fd5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270090614a5d565b60405180910390fd5b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d90614ac9565b60405180910390fd5b600081036127af576127aa838360006139ab565b61320a565b6127b7611aaa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561282557506127f5611aaa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561285e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612898575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128b15750600760149054906101000a900460ff16155b15612c9457600f60019054906101000a900460ff166129ab57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061296b5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a190614b5b565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a4e5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612af557600c54811115612a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8f90614c13565b60405180910390fd5b600e54612aa48361174c565b82612aaf9190614200565b1115612af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae790614c7f565b60405180910390fd5b612c93565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b985750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612be757600d54811115612be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd990614d37565b60405180910390fd5b612c92565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c9157600e54612c448361174c565b82612c4f9190614200565b1115612c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8790614c7f565b60405180910390fd5b5b5b5b5b6000600b54612ca23061174c565b10159050808015612cc05750600760149054906101000a900460ff16155b8015612d165750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d6c5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dc25750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e06576001600760146101000a81548160ff021916908315150217905550612dea611636565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050600f60009054906101000a900460ff1680612e7f5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ed35750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612f7e5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f7d5750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b15612f8857600090505b600081156131fb576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361304057601860019054906101000a900460ff16613036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302d90614da3565b60405180910390fd5b60175490506130eb565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036130ea57601860009054906101000a900460ff166130e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130db90614e0f565b60405180910390fd5b60165490505b5b61311160646131038388613c2a90919063ffffffff16565b613c4090919063ffffffff16565b915061313c60195461312e60125485613c2a90919063ffffffff16565b613c4090919063ffffffff16565b6014600082825461314d9190614200565b9250508190555061317d60195461316f60115485613c2a90919063ffffffff16565b613c4090919063ffffffff16565b6013600082825461318e9190614200565b925050819055506131be6019546131b060105485613c2a90919063ffffffff16565b613c4090919063ffffffff16565b601560008282546131cf9190614200565b9250508190555060008211156131eb576131ea8730846139ab565b5b81856131f79190614e2f565b9450505b6132068686866139ab565b5050505b505050565b60008114613458576000600267ffffffffffffffff81111561323457613233614e63565b5b6040519080825280602002602001820160405280156132625781602001602082028036833780820191505090505b509050308160008151811061327a57613279614e92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613321573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133459190614469565b8160018151811061335957613358614e92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133c030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612349565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613424959493929190614f7f565b600060405180830381600087803b15801561343e57600080fd5b505af1158015613452573d6000803e3d6000fd5b50505050505b50565b61348830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612349565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161351196959493929190614504565b60606040518083038185885af115801561352f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613554919061457a565b5050505050565b600081146138e2576000600267ffffffffffffffff8111156135805761357f614e63565b5b6040519080825280602002602001820160405280156135ae5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561361e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136429190614469565b8160008151811061365657613655614e92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106136c7576136c6614e92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b81526004016137649493929190614fd9565b6000604051808303818588803b15801561377d57600080fd5b505af1158015613791573d6000803e3d6000fd5b50505050506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016137f39190613ffd565b602060405180830381865afa158015613810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138349190615025565b9050600061dead9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b815260040161389a929190615052565b6020604051808303816000875af11580156138b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138dd9190615090565b505050505b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1190615109565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a80906149f1565b60405180910390fd5b613a94838383613c56565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b119061519b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613bad9190614200565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c119190613c79565b60405180910390a3613c24848484613c5b565b50505050565b60008183613c389190614234565b905092915050565b60008183613c4e91906142a5565b905092915050565b505050565b505050565b6000819050919050565b613c7381613c60565b82525050565b6000602082019050613c8e6000830184613c6a565b92915050565b600080fd5b60008115159050919050565b613cae81613c99565b8114613cb957600080fd5b50565b600081359050613ccb81613ca5565b92915050565b60008060408385031215613ce857613ce7613c94565b5b6000613cf685828601613cbc565b9250506020613d0785828601613cbc565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d4b578082015181840152602081019050613d30565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d7382613d11565b613d7d8185613d1c565b9350613d8d818560208601613d2d565b613d9681613d57565b840191505092915050565b60006020820190508181036000830152613dbb8184613d68565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613dee82613dc3565b9050919050565b613dfe81613de3565b8114613e0957600080fd5b50565b600081359050613e1b81613df5565b92915050565b613e2a81613c60565b8114613e3557600080fd5b50565b600081359050613e4781613e21565b92915050565b60008060408385031215613e6457613e63613c94565b5b6000613e7285828601613e0c565b9250506020613e8385828601613e38565b9150509250929050565b613e9681613c99565b82525050565b6000602082019050613eb16000830184613e8d565b92915050565b600060208284031215613ecd57613ecc613c94565b5b6000613edb84828501613e0c565b91505092915050565b600080600060608486031215613efd57613efc613c94565b5b6000613f0b86828701613e38565b9350506020613f1c86828701613e38565b9250506040613f2d86828701613e38565b9150509250925092565b600080600060608486031215613f5057613f4f613c94565b5b6000613f5e86828701613e0c565b9350506020613f6f86828701613e0c565b9250506040613f8086828701613e38565b9150509250925092565b600060208284031215613fa057613f9f613c94565b5b6000613fae84828501613e38565b91505092915050565b600060ff82169050919050565b613fcd81613fb7565b82525050565b6000602082019050613fe86000830184613fc4565b92915050565b613ff781613de3565b82525050565b60006020820190506140126000830184613fee565b92915050565b6000806040838503121561402f5761402e613c94565b5b600061403d85828601613e0c565b925050602061404e85828601613e0c565b9150509250929050565b6000806040838503121561406f5761406e613c94565b5b600061407d85828601613e38565b925050602061408e85828601613e38565b9150509250929050565b6000602082840312156140ae576140ad613c94565b5b60006140bc84828501613cbc565b91505092915050565b600080604083850312156140dc576140db613c94565b5b60006140ea85828601613e0c565b92505060206140fb85828601613cbc565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061413b602083613d1c565b915061414682614105565b602082019050919050565b6000602082019050818103600083015261416a8161412e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806141b857607f821691505b6020821081036141cb576141ca614171565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061420b82613c60565b915061421683613c60565b925082820190508082111561422e5761422d6141d1565b5b92915050565b600061423f82613c60565b915061424a83613c60565b925082820261425881613c60565b9150828204841483151761426f5761426e6141d1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006142b082613c60565b91506142bb83613c60565b9250826142cb576142ca614276565b5b828204905092915050565b60008160011c9050919050565b6000808291508390505b600185111561432d57808604811115614309576143086141d1565b5b60018516156143185780820291505b8081029050614326856142d6565b94506142ed565b94509492505050565b6000826143465760019050614402565b816143545760009050614402565b816001811461436a5760028114614374576143a3565b6001915050614402565b60ff841115614386576143856141d1565b5b8360020a91508482111561439d5761439c6141d1565b5b50614402565b5060208310610133831016604e8410600b84101617156143d85782820a9050838111156143d3576143d26141d1565b5b614402565b6143e584848460016142e3565b925090508184048111156143fc576143fb6141d1565b5b81810290505b9392505050565b600061441482613c60565b915061441f83613fb7565b925061444c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614336565b905092915050565b60008151905061446381613df5565b92915050565b60006020828403121561447f5761447e613c94565b5b600061448d84828501614454565b91505092915050565b60006040820190506144ab6000830185613fee565b6144b86020830184613fee565b9392505050565b6000819050919050565b6000819050919050565b60006144ee6144e96144e4846144bf565b6144c9565b613c60565b9050919050565b6144fe816144d3565b82525050565b600060c0820190506145196000830189613fee565b6145266020830188613c6a565b61453360408301876144f5565b61454060608301866144f5565b61454d6080830185613fee565b61455a60a0830184613c6a565b979650505050505050565b60008151905061457481613e21565b92915050565b60008060006060848603121561459357614592613c94565b5b60006145a186828701614565565b93505060206145b286828701614565565b92505060406145c386828701614565565b9150509250925092565b7f546f6f206d756368206665650000000000000000000000000000000000000000600082015250565b6000614603600c83613d1c565b915061460e826145cd565b602082019050919050565b60006020820190508181036000830152614632816145f6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614695602583613d1c565b91506146a082614639565b604082019050919050565b600060208201905081810360008301526146c481614688565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614727602683613d1c565b9150614732826146cb565b604082019050919050565b600060208201905081810360008301526147568161471a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006147b9602483613d1c565b91506147c48261475d565b604082019050919050565b600060208201905081810360008301526147e8816147ac565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061484b602283613d1c565b9150614856826147ef565b604082019050919050565b6000602082019050818103600083015261487a8161483e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006148b7601d83613d1c565b91506148c282614881565b602082019050919050565b600060208201905081810360008301526148e6816148aa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614949602583613d1c565b9150614954826148ed565b604082019050919050565b600060208201905081810360008301526149788161493c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006149db602383613d1c565b91506149e68261497f565b604082019050919050565b60006020820190508181036000830152614a0a816149ce565b9050919050565b7f53656e64657220426c61636b6c69737465640000000000000000000000000000600082015250565b6000614a47601283613d1c565b9150614a5282614a11565b602082019050919050565b60006020820190508181036000830152614a7681614a3a565b9050919050565b7f526563656976657220426c61636b6c6973746564000000000000000000000000600082015250565b6000614ab3601483613d1c565b9150614abe82614a7d565b602082019050919050565b60006020820190508181036000830152614ae281614aa6565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b45602283613d1c565b9150614b5082614ae9565b604082019050919050565b60006020820190508181036000830152614b7481614b38565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b6000614bfd604183613d1c565b9150614c0882614b7b565b606082019050919050565b60006020820190508181036000830152614c2c81614bf0565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b6000614c69601f83613d1c565b9150614c7482614c33565b602082019050919050565b60006020820190508181036000830152614c9881614c5c565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b6000614d21604283613d1c565b9150614d2c82614c9f565b606082019050919050565b60006020820190508181036000830152614d5081614d14565b9050919050565b7f53656c6c2073746174757320697320636c6f7365640000000000000000000000600082015250565b6000614d8d601583613d1c565b9150614d9882614d57565b602082019050919050565b60006020820190508181036000830152614dbc81614d80565b9050919050565b7f4275792073746174757320697320636c6f736564000000000000000000000000600082015250565b6000614df9601483613d1c565b9150614e0482614dc3565b602082019050919050565b60006020820190508181036000830152614e2881614dec565b9050919050565b6000614e3a82613c60565b9150614e4583613c60565b9250828203905081811115614e5d57614e5c6141d1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614ef681613de3565b82525050565b6000614f088383614eed565b60208301905092915050565b6000602082019050919050565b6000614f2c82614ec1565b614f368185614ecc565b9350614f4183614edd565b8060005b83811015614f72578151614f598882614efc565b9750614f6483614f14565b925050600181019050614f45565b5085935050505092915050565b600060a082019050614f946000830188613c6a565b614fa160208301876144f5565b8181036040830152614fb38186614f21565b9050614fc26060830185613fee565b614fcf6080830184613c6a565b9695505050505050565b6000608082019050614fee60008301876144f5565b81810360208301526150008186614f21565b905061500f6040830185613fee565b61501c6060830184613c6a565b95945050505050565b60006020828403121561503b5761503a613c94565b5b600061504984828501614565565b91505092915050565b60006040820190506150676000830185613fee565b6150746020830184613c6a565b9392505050565b60008151905061508a81613ca5565b92915050565b6000602082840312156150a6576150a5613c94565b5b60006150b48482850161507b565b91505092915050565b7f45524332303a20612066726f6d20746865207a65726f20616464726573730000600082015250565b60006150f3601e83613d1c565b91506150fe826150bd565b602082019050919050565b60006020820190508181036000830152615122816150e6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615185602683613d1c565b915061519082615129565b604082019050919050565b600060208201905081810360008301526151b481615178565b905091905056fea264697066735822122093ee7c66bf2835148bfda905e4ef93d0c9dd85bed36bfe85b2359978f3b3266264736f6c63430008130033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000562e362876c8aee4744fc2c6aac8394c312d215d0000000000000000000000000f649539aee57e88d9a2a8298ffe3fce3e8fdf900000000000000000000000000f649539aee57e88d9a2a8298ffe3fce3e8fdf90000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000630000000000000000000000000000000000000000000000000000000000000008426f756e6365414900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034241490000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102815760003560e01c806365cffb1e1161014f578063a9059cbb116100c1578063dd6749221161007a578063dd6749221461096d578063df778d2614610996578063e47d6060146109ad578063e4997dc5146109ea578063f2fde38b14610a13578063f8b45b0514610a3c57610288565b8063a9059cbb1461084d578063b1d0b7251461088a578063bb5e048a146108b5578063c0246668146108de578063c9db2fad14610907578063dd62ed3e1461093057610288565b8063751039fc11610113578063751039fc146107635780638a8c523c1461077a5780638da5cb5b1461079157806393b1c69c146107bc57806395d89b41146107e5578063a457c2d71461081057610288565b806365cffb1e146106a45780636ac5eeee146106cf57806370a08231146106e6578063715018a614610723578063740bf4971461073a57610288565b80632b14ca56116101f3578063399e4bfb116101ac578063399e4bfb146105a657806340b2f5b5146105d157806347062402146105fc5780634fbee19314610627578063572eeb281461066457806358a3e5e41461067b57610288565b80632b14ca56146104965780632e1888b8146104c1578063313ce567146104ea5780633415650e1461051557806336a0f8a514610540578063395093511461056957610288565b806313114a9d1161024557806313114a9d14610374578063163a37ba1461039f57806318160ddd146103dc578063224290851461040757806323b872dd14610430578063277a22051461046d57610288565b806302bf2a5c1461028d578063034c4897146102b857806306fdde03146102e1578063095ea7b31461030c57806311704f521461034957610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a67565b6040516102af9190613c79565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190613cd1565b610a6d565b005b3480156102ed57600080fd5b506102f6610b21565b6040516103039190613da1565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e9190613e4d565b610bb3565b6040516103409190613e9c565b60405180910390f35b34801561035557600080fd5b5061035e610bd6565b60405161036b9190613e9c565b60405180910390f35b34801561038057600080fd5b50610389610be9565b6040516103969190613c79565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190613eb7565b610bef565b6040516103d39190613e9c565b60405180910390f35b3480156103e857600080fd5b506103f1610c45565b6040516103fe9190613c79565b60405180910390f35b34801561041357600080fd5b5061042e60048036038101906104299190613ee4565b610c4f565b005b34801561043c57600080fd5b5061045760048036038101906104529190613f37565b610d28565b6040516104649190613e9c565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190613f8a565b610d57565b005b3480156104a257600080fd5b506104ab610dfd565b6040516104b89190613c79565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190613e4d565b610e03565b005b3480156104f657600080fd5b506104ff610eca565b60405161050c9190613fd3565b60405180910390f35b34801561052157600080fd5b5061052a610ed3565b6040516105379190613e9c565b60405180910390f35b34801561054c57600080fd5b5061056760048036038101906105629190613ee4565b610ee6565b005b34801561057557600080fd5b50610590600480360381019061058b9190613e4d565b610fd6565b60405161059d9190613e9c565b60405180910390f35b3480156105b257600080fd5b506105bb611080565b6040516105c89190613c79565b60405180910390f35b3480156105dd57600080fd5b506105e6611086565b6040516105f39190613ffd565b60405180910390f35b34801561060857600080fd5b506106116110ac565b60405161061e9190613c79565b60405180910390f35b34801561063357600080fd5b5061064e60048036038101906106499190613eb7565b6110b2565b60405161065b9190613e9c565b60405180910390f35b34801561067057600080fd5b50610679611108565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613eb7565b611563565b005b3480156106b057600080fd5b506106b9611623565b6040516106c69190613e9c565b60405180910390f35b3480156106db57600080fd5b506106e4611636565b005b3480156106f257600080fd5b5061070d60048036038101906107089190613eb7565b61174c565b60405161071a9190613c79565b60405180910390f35b34801561072f57600080fd5b50610738611794565b005b34801561074657600080fd5b50610761600480360381019061075c9190614018565b61181c565b005b34801561076f57600080fd5b5061077861191e565b005b34801561078657600080fd5b5061078f611a11565b005b34801561079d57600080fd5b506107a6611aaa565b6040516107b39190613ffd565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190614058565b611ad4565b005b3480156107f157600080fd5b506107fa611bb3565b6040516108079190613da1565b60405180910390f35b34801561081c57600080fd5b5061083760048036038101906108329190613e4d565b611c45565b6040516108449190613e9c565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f9190613e4d565b611d2f565b6040516108819190613e9c565b60405180910390f35b34801561089657600080fd5b5061089f611d52565b6040516108ac9190613e9c565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d79190614098565b611d65565b005b3480156108ea57600080fd5b50610905600480360381019061090091906140c5565b611dfe565b005b34801561091357600080fd5b5061092e60048036038101906109299190613eb7565b611ed5565b005b34801561093c57600080fd5b5061095760048036038101906109529190614018565b611fac565b6040516109649190613c79565b60405180910390f35b34801561097957600080fd5b50610994600480360381019061098f9190613e4d565b612033565b005b3480156109a257600080fd5b506109ab6120be565b005b3480156109b957600080fd5b506109d460048036038101906109cf9190613eb7565b61214d565b6040516109e19190613e9c565b60405180910390f35b3480156109f657600080fd5b50610a116004803603810190610a0c9190613eb7565b61216d565b005b348015610a1f57600080fd5b50610a3a6004803603810190610a359190613eb7565b612244565b005b348015610a4857600080fd5b50610a5161233b565b604051610a5e9190613c79565b60405180910390f35b600c5481565b610a75612341565b73ffffffffffffffffffffffffffffffffffffffff16610a93611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090614151565b60405180910390fd5b81601860006101000a81548160ff02191690831515021790555080601860016101000a81548160ff0219169083151502179055505050565b606060038054610b30906141a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5c906141a0565b8015610ba95780601f10610b7e57610100808354040283529160200191610ba9565b820191906000526020600020905b815481529060010190602001808311610b8c57829003601f168201915b5050505050905090565b600080610bbe612341565b9050610bcb818585612349565b600191505092915050565b600f60019054906101000a900460ff1681565b60195481565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b610c57612341565b73ffffffffffffffffffffffffffffffffffffffff16610c75611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614610ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc290614151565b60405180910390fd5b600a8284610cd99190614200565b1115610ce457600080fd5b60058110610cf157600080fd5b806010819055508260118190555081601281905550808284610d139190614200565b610d1d9190614200565b601981905550505050565b600080610d33612341565b9050610d40858285612512565b610d4b85858561259e565b60019150509392505050565b610d5f612341565b73ffffffffffffffffffffffffffffffffffffffff16610d7d611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614610dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dca90614151565b60405180910390fd5b620f424081610de0610c45565b610dea9190614234565b610df491906142a5565b600b8190555050565b60175481565b610e0b612341565b73ffffffffffffffffffffffffffffffffffffffff16610e29611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7690614151565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ec5573d6000803e3d6000fd5b505050565b60006012905090565b601860009054906101000a900460ff1681565b610eee612341565b73ffffffffffffffffffffffffffffffffffffffff16610f0c611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5990614151565b60405180910390fd5b610f6a610eca565b600a610f769190614409565b83610f819190614234565b600c81905550610f8f610eca565b600a610f9b9190614409565b82610fa69190614234565b600d81905550610fb4610eca565b600a610fc09190614409565b81610fcb9190614234565b600e81905550505050565b600080610fe1612341565b9050611075818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110709190614200565b612349565b600191505092915050565b600d5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611110612341565b73ffffffffffffffffffffffffffffffffffffffff1661112e611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b90614151565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112159190614469565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c29190614469565b6040518363ffffffff1660e01b81526004016112df929190614496565b6020604051808303816000875af11580156112fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113229190614469565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061148a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611485610c45565b612349565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306114d33061174c565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161151b96959493929190614504565b60606040518083038185885af1158015611539573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061155e919061457a565b505050565b61156b612341565b73ffffffffffffffffffffffffffffffffffffffff16611589611aaa565b73ffffffffffffffffffffffffffffffffffffffff16146115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d690614151565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900460ff1681565b60006116413061174c565b905060008103611651575061174a565b6000600260145461166291906142a5565b905061166f60135461320f565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156116d7573d6000803e3d6000fd5b506116e18161320f565b600047905060006116f13061174c565b90506000821180156117035750600081115b1561171357611712818361345b565b5b61171e60155461320f565b600047905061172c8161355b565b60006013819055506000601481905550600060158190555050505050505b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61179c612341565b73ffffffffffffffffffffffffffffffffffffffff166117ba611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180790614151565b60405180910390fd5b61181a60006138e5565b565b611824612341565b73ffffffffffffffffffffffffffffffffffffffff16611842611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188f90614151565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611926612341565b73ffffffffffffffffffffffffffffffffffffffff16611944611aaa565b73ffffffffffffffffffffffffffffffffffffffff161461199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190614151565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600e81905550565b611a19612341565b73ffffffffffffffffffffffffffffffffffffffff16611a37611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490614151565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611adc612341565b73ffffffffffffffffffffffffffffffffffffffff16611afa611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4790614151565b60405180910390fd5b60638211158015611b62575060638111155b611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9890614619565b60405180910390fd5b81601681905550806017819055505050565b606060048054611bc2906141a0565b80601f0160208091040260200160405190810160405280929190818152602001828054611bee906141a0565b8015611c3b5780601f10611c1057610100808354040283529160200191611c3b565b820191906000526020600020905b815481529060010190602001808311611c1e57829003601f168201915b5050505050905090565b600080611c50612341565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0d906146ab565b60405180910390fd5b611d238286868403612349565b60019250505092915050565b600080611d3a612341565b9050611d4781858561259e565b600191505092915050565b601860019054906101000a900460ff1681565b611d6d612341565b73ffffffffffffffffffffffffffffffffffffffff16611d8b611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd890614151565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b611e06612341565b73ffffffffffffffffffffffffffffffffffffffff16611e24611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7190614151565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611edd612341565b73ffffffffffffffffffffffffffffffffffffffff16611efb611aaa565b73ffffffffffffffffffffffffffffffffffffffff1614611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4890614151565b60405180910390fd5b6001601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61203b612341565b73ffffffffffffffffffffffffffffffffffffffff16612059611aaa565b73ffffffffffffffffffffffffffffffffffffffff16146120af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a690614151565b60405180910390fd5b6120ba30838361259e565b5050565b6120c6612341565b73ffffffffffffffffffffffffffffffffffffffff166120e4611aaa565b73ffffffffffffffffffffffffffffffffffffffff161461213a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213190614151565b60405180910390fd5b61214b6121463061174c565b61320f565b565b601e6020528060005260406000206000915054906101000a900460ff1681565b612175612341565b73ffffffffffffffffffffffffffffffffffffffff16612193611aaa565b73ffffffffffffffffffffffffffffffffffffffff16146121e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e090614151565b60405180910390fd5b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61224c612341565b73ffffffffffffffffffffffffffffffffffffffff1661226a611aaa565b73ffffffffffffffffffffffffffffffffffffffff16146122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b790614151565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361232f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123269061473d565b60405180910390fd5b612338816138e5565b50565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123af906147cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90614861565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125059190613c79565b60405180910390a3505050565b600061251e8484611fac565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612598578181101561258a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612581906148cd565b60405180910390fd5b6125978484848403612349565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361260d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126049061495f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361267c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612673906149f1565b60405180910390fd5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270090614a5d565b60405180910390fd5b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d90614ac9565b60405180910390fd5b600081036127af576127aa838360006139ab565b61320a565b6127b7611aaa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561282557506127f5611aaa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561285e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612898575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128b15750600760149054906101000a900460ff16155b15612c9457600f60019054906101000a900460ff166129ab57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061296b5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a190614b5b565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a4e5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612af557600c54811115612a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8f90614c13565b60405180910390fd5b600e54612aa48361174c565b82612aaf9190614200565b1115612af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae790614c7f565b60405180910390fd5b612c93565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b985750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612be757600d54811115612be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd990614d37565b60405180910390fd5b612c92565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c9157600e54612c448361174c565b82612c4f9190614200565b1115612c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8790614c7f565b60405180910390fd5b5b5b5b5b6000600b54612ca23061174c565b10159050808015612cc05750600760149054906101000a900460ff16155b8015612d165750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d6c5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dc25750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e06576001600760146101000a81548160ff021916908315150217905550612dea611636565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050600f60009054906101000a900460ff1680612e7f5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ed35750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612f7e5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f7d5750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b15612f8857600090505b600081156131fb576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361304057601860019054906101000a900460ff16613036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302d90614da3565b60405180910390fd5b60175490506130eb565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036130ea57601860009054906101000a900460ff166130e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130db90614e0f565b60405180910390fd5b60165490505b5b61311160646131038388613c2a90919063ffffffff16565b613c4090919063ffffffff16565b915061313c60195461312e60125485613c2a90919063ffffffff16565b613c4090919063ffffffff16565b6014600082825461314d9190614200565b9250508190555061317d60195461316f60115485613c2a90919063ffffffff16565b613c4090919063ffffffff16565b6013600082825461318e9190614200565b925050819055506131be6019546131b060105485613c2a90919063ffffffff16565b613c4090919063ffffffff16565b601560008282546131cf9190614200565b9250508190555060008211156131eb576131ea8730846139ab565b5b81856131f79190614e2f565b9450505b6132068686866139ab565b5050505b505050565b60008114613458576000600267ffffffffffffffff81111561323457613233614e63565b5b6040519080825280602002602001820160405280156132625781602001602082028036833780820191505090505b509050308160008151811061327a57613279614e92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613321573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133459190614469565b8160018151811061335957613358614e92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133c030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612349565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613424959493929190614f7f565b600060405180830381600087803b15801561343e57600080fd5b505af1158015613452573d6000803e3d6000fd5b50505050505b50565b61348830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612349565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161351196959493929190614504565b60606040518083038185885af115801561352f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613554919061457a565b5050505050565b600081146138e2576000600267ffffffffffffffff8111156135805761357f614e63565b5b6040519080825280602002602001820160405280156135ae5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561361e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136429190614469565b8160008151811061365657613655614e92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106136c7576136c6614e92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b81526004016137649493929190614fd9565b6000604051808303818588803b15801561377d57600080fd5b505af1158015613791573d6000803e3d6000fd5b50505050506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016137f39190613ffd565b602060405180830381865afa158015613810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138349190615025565b9050600061dead9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b815260040161389a929190615052565b6020604051808303816000875af11580156138b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138dd9190615090565b505050505b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1190615109565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a80906149f1565b60405180910390fd5b613a94838383613c56565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b119061519b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613bad9190614200565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c119190613c79565b60405180910390a3613c24848484613c5b565b50505050565b60008183613c389190614234565b905092915050565b60008183613c4e91906142a5565b905092915050565b505050565b505050565b6000819050919050565b613c7381613c60565b82525050565b6000602082019050613c8e6000830184613c6a565b92915050565b600080fd5b60008115159050919050565b613cae81613c99565b8114613cb957600080fd5b50565b600081359050613ccb81613ca5565b92915050565b60008060408385031215613ce857613ce7613c94565b5b6000613cf685828601613cbc565b9250506020613d0785828601613cbc565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d4b578082015181840152602081019050613d30565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d7382613d11565b613d7d8185613d1c565b9350613d8d818560208601613d2d565b613d9681613d57565b840191505092915050565b60006020820190508181036000830152613dbb8184613d68565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613dee82613dc3565b9050919050565b613dfe81613de3565b8114613e0957600080fd5b50565b600081359050613e1b81613df5565b92915050565b613e2a81613c60565b8114613e3557600080fd5b50565b600081359050613e4781613e21565b92915050565b60008060408385031215613e6457613e63613c94565b5b6000613e7285828601613e0c565b9250506020613e8385828601613e38565b9150509250929050565b613e9681613c99565b82525050565b6000602082019050613eb16000830184613e8d565b92915050565b600060208284031215613ecd57613ecc613c94565b5b6000613edb84828501613e0c565b91505092915050565b600080600060608486031215613efd57613efc613c94565b5b6000613f0b86828701613e38565b9350506020613f1c86828701613e38565b9250506040613f2d86828701613e38565b9150509250925092565b600080600060608486031215613f5057613f4f613c94565b5b6000613f5e86828701613e0c565b9350506020613f6f86828701613e0c565b9250506040613f8086828701613e38565b9150509250925092565b600060208284031215613fa057613f9f613c94565b5b6000613fae84828501613e38565b91505092915050565b600060ff82169050919050565b613fcd81613fb7565b82525050565b6000602082019050613fe86000830184613fc4565b92915050565b613ff781613de3565b82525050565b60006020820190506140126000830184613fee565b92915050565b6000806040838503121561402f5761402e613c94565b5b600061403d85828601613e0c565b925050602061404e85828601613e0c565b9150509250929050565b6000806040838503121561406f5761406e613c94565b5b600061407d85828601613e38565b925050602061408e85828601613e38565b9150509250929050565b6000602082840312156140ae576140ad613c94565b5b60006140bc84828501613cbc565b91505092915050565b600080604083850312156140dc576140db613c94565b5b60006140ea85828601613e0c565b92505060206140fb85828601613cbc565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061413b602083613d1c565b915061414682614105565b602082019050919050565b6000602082019050818103600083015261416a8161412e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806141b857607f821691505b6020821081036141cb576141ca614171565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061420b82613c60565b915061421683613c60565b925082820190508082111561422e5761422d6141d1565b5b92915050565b600061423f82613c60565b915061424a83613c60565b925082820261425881613c60565b9150828204841483151761426f5761426e6141d1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006142b082613c60565b91506142bb83613c60565b9250826142cb576142ca614276565b5b828204905092915050565b60008160011c9050919050565b6000808291508390505b600185111561432d57808604811115614309576143086141d1565b5b60018516156143185780820291505b8081029050614326856142d6565b94506142ed565b94509492505050565b6000826143465760019050614402565b816143545760009050614402565b816001811461436a5760028114614374576143a3565b6001915050614402565b60ff841115614386576143856141d1565b5b8360020a91508482111561439d5761439c6141d1565b5b50614402565b5060208310610133831016604e8410600b84101617156143d85782820a9050838111156143d3576143d26141d1565b5b614402565b6143e584848460016142e3565b925090508184048111156143fc576143fb6141d1565b5b81810290505b9392505050565b600061441482613c60565b915061441f83613fb7565b925061444c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614336565b905092915050565b60008151905061446381613df5565b92915050565b60006020828403121561447f5761447e613c94565b5b600061448d84828501614454565b91505092915050565b60006040820190506144ab6000830185613fee565b6144b86020830184613fee565b9392505050565b6000819050919050565b6000819050919050565b60006144ee6144e96144e4846144bf565b6144c9565b613c60565b9050919050565b6144fe816144d3565b82525050565b600060c0820190506145196000830189613fee565b6145266020830188613c6a565b61453360408301876144f5565b61454060608301866144f5565b61454d6080830185613fee565b61455a60a0830184613c6a565b979650505050505050565b60008151905061457481613e21565b92915050565b60008060006060848603121561459357614592613c94565b5b60006145a186828701614565565b93505060206145b286828701614565565b92505060406145c386828701614565565b9150509250925092565b7f546f6f206d756368206665650000000000000000000000000000000000000000600082015250565b6000614603600c83613d1c565b915061460e826145cd565b602082019050919050565b60006020820190508181036000830152614632816145f6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614695602583613d1c565b91506146a082614639565b604082019050919050565b600060208201905081810360008301526146c481614688565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614727602683613d1c565b9150614732826146cb565b604082019050919050565b600060208201905081810360008301526147568161471a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006147b9602483613d1c565b91506147c48261475d565b604082019050919050565b600060208201905081810360008301526147e8816147ac565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061484b602283613d1c565b9150614856826147ef565b604082019050919050565b6000602082019050818103600083015261487a8161483e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006148b7601d83613d1c565b91506148c282614881565b602082019050919050565b600060208201905081810360008301526148e6816148aa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614949602583613d1c565b9150614954826148ed565b604082019050919050565b600060208201905081810360008301526149788161493c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006149db602383613d1c565b91506149e68261497f565b604082019050919050565b60006020820190508181036000830152614a0a816149ce565b9050919050565b7f53656e64657220426c61636b6c69737465640000000000000000000000000000600082015250565b6000614a47601283613d1c565b9150614a5282614a11565b602082019050919050565b60006020820190508181036000830152614a7681614a3a565b9050919050565b7f526563656976657220426c61636b6c6973746564000000000000000000000000600082015250565b6000614ab3601483613d1c565b9150614abe82614a7d565b602082019050919050565b60006020820190508181036000830152614ae281614aa6565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b45602283613d1c565b9150614b5082614ae9565b604082019050919050565b60006020820190508181036000830152614b7481614b38565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b6000614bfd604183613d1c565b9150614c0882614b7b565b606082019050919050565b60006020820190508181036000830152614c2c81614bf0565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b6000614c69601f83613d1c565b9150614c7482614c33565b602082019050919050565b60006020820190508181036000830152614c9881614c5c565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b6000614d21604283613d1c565b9150614d2c82614c9f565b606082019050919050565b60006020820190508181036000830152614d5081614d14565b9050919050565b7f53656c6c2073746174757320697320636c6f7365640000000000000000000000600082015250565b6000614d8d601583613d1c565b9150614d9882614d57565b602082019050919050565b60006020820190508181036000830152614dbc81614d80565b9050919050565b7f4275792073746174757320697320636c6f736564000000000000000000000000600082015250565b6000614df9601483613d1c565b9150614e0482614dc3565b602082019050919050565b60006020820190508181036000830152614e2881614dec565b9050919050565b6000614e3a82613c60565b9150614e4583613c60565b9250828203905081811115614e5d57614e5c6141d1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614ef681613de3565b82525050565b6000614f088383614eed565b60208301905092915050565b6000602082019050919050565b6000614f2c82614ec1565b614f368185614ecc565b9350614f4183614edd565b8060005b83811015614f72578151614f598882614efc565b9750614f6483614f14565b925050600181019050614f45565b5085935050505092915050565b600060a082019050614f946000830188613c6a565b614fa160208301876144f5565b8181036040830152614fb38186614f21565b9050614fc26060830185613fee565b614fcf6080830184613c6a565b9695505050505050565b6000608082019050614fee60008301876144f5565b81810360208301526150008186614f21565b905061500f6040830185613fee565b61501c6060830184613c6a565b95945050505050565b60006020828403121561503b5761503a613c94565b5b600061504984828501614565565b91505092915050565b60006040820190506150676000830185613fee565b6150746020830184613c6a565b9392505050565b60008151905061508a81613ca5565b92915050565b6000602082840312156150a6576150a5613c94565b5b60006150b48482850161507b565b91505092915050565b7f45524332303a20612066726f6d20746865207a65726f20616464726573730000600082015250565b60006150f3601e83613d1c565b91506150fe826150bd565b602082019050919050565b60006020820190508181036000830152615122816150e6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615185602683613d1c565b915061519082615129565b604082019050919050565b600060208201905081810360008301526151b481615178565b905091905056fea264697066735822122093ee7c66bf2835148bfda905e4ef93d0c9dd85bed36bfe85b2359978f3b3266264736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000562e362876c8aee4744fc2c6aac8394c312d215d0000000000000000000000000f649539aee57e88d9a2a8298ffe3fce3e8fdf900000000000000000000000000f649539aee57e88d9a2a8298ffe3fce3e8fdf90000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000630000000000000000000000000000000000000000000000000000000000000008426f756e6365414900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034241490000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): BounceAI
Arg [1] : symbol (string): BAI
Arg [2] : _percent (uint256): 1
Arg [3] : _utility (address): 0x562E362876c8Aee4744FC2c6aaC8394C312d215d
Arg [4] : fundingWallet (address): 0x0f649539Aee57e88D9A2a8298FfE3Fce3E8fdf90
Arg [5] : LPAddress (address): 0x0f649539Aee57e88D9A2a8298FfE3Fce3E8fdf90
Arg [6] : _buyFee (uint256): 4
Arg [7] : _sellFee (uint256): 99

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 000000000000000000000000562e362876c8aee4744fc2c6aac8394c312d215d
Arg [4] : 0000000000000000000000000f649539aee57e88d9a2a8298ffe3fce3e8fdf90
Arg [5] : 0000000000000000000000000f649539aee57e88d9a2a8298ffe3fce3e8fdf90
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000063
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [9] : 426f756e63654149000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [11] : 4241490000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

19625:13784:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19982:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25967:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1762:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2831:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20154:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20562:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24284:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2083:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25010:412;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3081:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22841:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20468:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33004:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1982:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20503:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25430:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3384:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20034:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19819:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20440:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26351:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23358:676;;;;;;;;;;;;;:::i;:::-;;23079:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20115:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31690:890;;;;;;;;;;;;;:::i;:::-;;2199:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16225:103;;;;;;;;;;;;;:::i;:::-;;23181:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25767:192;;;;;;;;;;;;;:::i;:::-;;24402:81;;;;;;;;;;;;;:::i;:::-;;16002:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24791:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1870:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3664:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2380:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20531:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26160:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24551:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24042:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2622:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32652:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33267:102;;;;;;;;;;;;;:::i;:::-;;21160:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24157:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16336:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20082:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19982:45;;;;:::o;25967:122::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26050:3:::1;26038:9;;:15;;;;;;;;;;;;;;;;;;26077:4;26064:10;;:17;;;;;;;;;;;;;;;;;;25967:122:::0;;:::o;1762:100::-;1816:13;1849:5;1842:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1762:100;:::o;2831:242::-;2950:4;2972:13;2988:12;:10;:12::i;:::-;2972:28;;3011:32;3020:5;3027:7;3036:6;3011:8;:32::i;:::-;3061:4;3054:11;;;2831:242;;;;:::o;20154:31::-;;;;;;;;;;;;;:::o;20562:67::-;;;;:::o;24284:110::-;24343:4;24366:13;:20;24380:5;24366:20;;;;;;;;;;;;;;;;;;;;;;;;;24359:27;;24284:110;;;:::o;2083:108::-;2144:7;2171:12;;2164:19;;2083:108;:::o;25010:412::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25197:2:::1;25180:12;25167:10;:25;;;;:::i;:::-;:32;;25159:41;;;::::0;::::1;;25233:1;25219:11;:15;25211:24;;;::::0;::::1;;25259:11;25246:10;:24;;;;25295:10;25281:11;:24;;;;25332:12;25316:13;:28;;;;25403:11;25388:12;25375:10;:25;;;;:::i;:::-;:39;;;;:::i;:::-;25363:9;:51;;;;25010:412:::0;;;:::o;3081:295::-;3212:4;3229:15;3247:12;:10;:12::i;:::-;3229:30;;3270:38;3286:4;3292:7;3301:6;3270:15;:38::i;:::-;3319:27;3329:4;3335:2;3339:6;3319:9;:27::i;:::-;3364:4;3357:11;;;3081:295;;;;;:::o;22841:157::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22950:7:::1;22938:8;22922:13;:11;:13::i;:::-;:24;;;;:::i;:::-;22921:36;;;;:::i;:::-;22912:6;:45;;;;22841:157:::0;:::o;20468:22::-;;;;:::o;33004:168::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33134:2:::1;33126:20;;:38;33147:16;33126:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;33004:168:::0;;:::o;1982:93::-;2040:5;2065:2;2058:9;;1982:93;:::o;20503:21::-;;;;;;;;;;;;;:::o;25430:329::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25620:10:::1;:8;:10::i;:::-;25616:2;:14;;;;:::i;:::-;25604:8;:27;;;;:::i;:::-;25571:30;:60;;;;25688:10;:8;:10::i;:::-;25684:2;:14;;;;:::i;:::-;25671:9;:28;;;;:::i;:::-;25642:26;:57;;;;25740:10;:8;:10::i;:::-;25736:2;:14;;;;:::i;:::-;25722:10;:29;;;;:::i;:::-;25710:9;:41;;;;25430:329:::0;;;:::o;3384:272::-;3499:4;3521:13;3537:12;:10;:12::i;:::-;3521:28;;3560:66;3569:5;3576:7;3615:10;3585:11;:18;3597:5;3585:18;;;;;;;;;;;;;;;:27;3604:7;3585:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3560:8;:66::i;:::-;3644:4;3637:11;;;3384:272;;;;:::o;20034:41::-;;;;:::o;19819:22::-;;;;;;;;;;;;;:::o;20440:21::-;;;;:::o;26351:128::-;26419:4;26443:19;:28;26463:7;26443:28;;;;;;;;;;;;;;;;;;;;;;;;;26436:35;;26351:128;;;:::o;23358:676::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23446:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23428:55;;;23510:4;23534:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23428:143;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23412:13;;:159;;;;;;;;;;;;;;;;;;23640:4;23582:31;:55;23622:13;;;;;;;;;;;23582:55;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;23708:4;23655:26;:50;23690:13;;;;;;;;;;;23655:50;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;23725:64;23742:4;23757:15;;;;;;;;;;;23775:13;:11;:13::i;:::-;23725:8;:64::i;:::-;23800:15;;;;;;;;;;;:31;;;23839:21;23884:4;23904:24;23922:4;23904:9;:24::i;:::-;23943:1;23959::::0;23975:10:::1;;;;;;;;;;;24000:15;23800:226;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23358:676::o:0;23079:93::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23155:8:::1;23145:7;;:18;;;;;;;;;;;;;;;;;;23079:93:::0;:::o;20115:32::-;;;;;;;;;;;;;:::o;31690:890::-;31728:23;31754:24;31772:4;31754:9;:24::i;:::-;31728:50;;31814:1;31795:15;:20;31791:33;;31817:7;;;31791:33;31836:23;31884:1;31862:19;;:23;;;;:::i;:::-;31836:49;;31898:36;31916:17;;31898;:36::i;:::-;31955:14;;;;;;;;;;;31947:32;;:55;31980:21;31947:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32021:34;32039:15;32021:17;:34::i;:::-;32068:23;32094:21;32068:47;;32128:24;32155;32173:4;32155:9;:24::i;:::-;32128:51;;32213:1;32195:15;:19;:43;;;;;32237:1;32218:16;:20;32195:43;32192:118;;;32250:48;32264:16;32282:15;32250:13;:48::i;:::-;32192:118;32331:36;32349:17;;32331;:36::i;:::-;32380:17;32400:21;32380:41;;32434:28;32452:9;32434:17;:28::i;:::-;32497:1;32477:17;:21;;;;32531:1;32509:19;:23;;;;32569:1;32549:17;:21;;;;31717:863;;;;;31690:890;:::o;2199:173::-;2318:7;2350:5;:14;2356:7;2350:14;;;;;;;;;;;;;;;;2343:21;;2199:173;;;:::o;16225:103::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16290:30:::1;16317:1;16290:18;:30::i;:::-;16225:103::o:0;23181:169::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23289:13:::1;23272:14;;:30;;;;;;;;;;;;;;;;;;23326:9;23313:10;;:22;;;;;;;;;;;;;;;;;;23181:169:::0;;:::o;25767:192::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25852:12:::1;25819:30;:45;;;;25904:12;25875:26;:41;;;;25939:12;25927:9;:24;;;;25767:192::o:0;24402:81::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24471:4:::1;24457:11;;:18;;;;;;;;;;;;;;;;;;24402:81::o:0;16002:87::-;16048:7;16075:6;;;;;;;;;;;16068:13;;16002:87;:::o;24791:211::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24900:2:::1;24889:7;:13;;:31;;;;;24918:2;24906:8;:14;;24889:31;24881:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;24957:7;24948:6;:16;;;;24985:8;24975:7;:18;;;;24791:211:::0;;:::o;1870:104::-;1926:13;1959:7;1952:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1870:104;:::o;3664:507::-;3784:4;3806:13;3822:12;:10;:12::i;:::-;3806:28;;3845:24;3872:11;:18;3884:5;3872:18;;;;;;;;;;;;;;;:27;3891:7;3872:27;;;;;;;;;;;;;;;;3845:54;;3952:15;3932:16;:35;;3910:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;4068:60;4077:5;4084:7;4112:15;4093:16;:34;4068:8;:60::i;:::-;4159:4;4152:11;;;;3664:507;;;;:::o;2380:234::-;2495:4;2517:13;2533:12;:10;:12::i;:::-;2517:28;;2556;2566:5;2573:2;2577:6;2556:9;:28::i;:::-;2602:4;2595:11;;;2380:234;;;;:::o;20531:22::-;;;;;;;;;;;;;:::o;26160:91::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26238:5:::1;26223:12;;:20;;;;;;;;;;;;;;;;;;26160:91:::0;:::o;24551:155::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24690:8:::1;24659:19;:28;24679:7;24659:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24551:155:::0;;:::o;24042:107::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24137:4:::1;24110:13;:24;24124:9;24110:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;24042:107:::0;:::o;2622:201::-;2756:7;2788:11;:18;2800:5;2788:18;;;;;;;;;;;;;;;:27;2807:7;2788:27;;;;;;;;;;;;;;;;2781:34;;2622:201;;;;:::o;32652:218::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32816:46:::1;32834:4;32841:2;32845:16;32816:9;:46::i;:::-;32652:218:::0;;:::o;33267:102::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33318:43:::1;33336:24;33354:4;33336:9;:24::i;:::-;33318:17;:43::i;:::-;33267:102::o:0;21160:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;24157:119::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24263:5:::1;24233:13;:27;24247:12;24233:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;24157:119:::0;:::o;16336:238::-;16148:12;:10;:12::i;:::-;16137:23;;:7;:5;:7::i;:::-;:23;;;16129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16459:1:::1;16439:22;;:8;:22;;::::0;16417:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16538:28;16557:8;16538:18;:28::i;:::-;16336:238:::0;:::o;20082:24::-;;;;:::o;1145:98::-;1198:7;1225:10;1218:17;;1145:98;:::o;5470:380::-;5623:1;5606:19;;:5;:19;;;5598:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5704:1;5685:21;;:7;:21;;;5677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5788:6;5758:11;:18;5770:5;5758:18;;;;;;;;;;;;;;;:27;5777:7;5758:27;;;;;;;;;;;;;;;:36;;;;5826:7;5810:32;;5819:5;5810:32;;;5835:6;5810:32;;;;;;:::i;:::-;;;;;;;;5470:380;;;:::o;5858:502::-;5993:24;6020:25;6030:5;6037:7;6020:9;:25::i;:::-;5993:52;;6080:17;6060:16;:37;6056:297;;6160:6;6140:16;:26;;6114:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;6275:51;6284:5;6291:7;6319:6;6300:16;:25;6275:8;:51::i;:::-;6056:297;5982:378;5858:502;;;:::o;26487:3682::-;26635:1;26619:18;;:4;:18;;;26611:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26712:1;26698:16;;:2;:16;;;26690:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26774:13;:19;26788:4;26774:19;;;;;;;;;;;;;;;;;;;;;;;;;26773:20;26765:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;26836:13;:17;26850:2;26836:17;;;;;;;;;;;;;;;;;;;;;;;;;26835:18;26827:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;26905:1;26895:6;:11;26891:93;;26923:28;26939:4;26945:2;26949:1;26923:15;:28::i;:::-;26966:7;;26891:93;27022:7;:5;:7::i;:::-;27014:15;;:4;:15;;;;:45;;;;;27052:7;:5;:7::i;:::-;27046:13;;:2;:13;;;;27014:45;:78;;;;;27090:1;27076:16;;:2;:16;;;;27014:78;:116;;;;;27123:6;27109:21;;:2;:21;;;;27014:116;:143;;;;;27148:9;;;;;;;;;;;27147:10;27014:143;26996:1537;;;27189:11;;;;;;;;;;;27184:196;;27249:19;:25;27269:4;27249:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27278:19;:23;27298:2;27278:23;;;;;;;;;;;;;;;;;;;;;;;;;27249:52;27219:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;27184:196;27440:26;:32;27467:4;27440:32;;;;;;;;;;;;;;;;;;;;;;;;;:89;;;;;27494:31;:35;27526:2;27494:35;;;;;;;;;;;;;;;;;;;;;;;;;27493:36;27440:89;27418:1104;;;27604:30;;27594:6;:40;;27564:179;;;;;;;;;;;;:::i;:::-;;;;;;;;;27818:9;;27801:13;27811:2;27801:9;:13::i;:::-;27792:6;:22;;;;:::i;:::-;:35;;27762:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27418:1104;;;27983:26;:30;28010:2;27983:30;;;;;;;;;;;;;;;;;;;;;;;;;:89;;;;;28035:31;:37;28067:4;28035:37;;;;;;;;;;;;;;;;;;;;;;;;;28034:38;27983:89;27961:561;;;28147:26;;28137:6;:36;;28107:176;;;;;;;;;;;;:::i;:::-;;;;;;;;;27961:561;;;28310:31;:35;28342:2;28310:35;;;;;;;;;;;;;;;;;;;;;;;;;28305:217;;28422:9;;28405:13;28415:2;28405:9;:13::i;:::-;28396:6;:22;;;;:::i;:::-;:35;;28366:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28305:217;27961:561;27418:1104;26996:1537;28545:13;28589:6;;28561:24;28579:4;28561:9;:24::i;:::-;:34;;28545:50;;28626:8;:35;;;;;28652:9;;;;;;;;;;;28651:10;28626:35;:85;;;;;28679:26;:32;28706:4;28679:32;;;;;;;;;;;;;;;;;;;;;;;;;28678:33;28626:85;:128;;;;;28729:19;:25;28749:4;28729:25;;;;;;;;;;;;;;;;;;;;;;;;;28728:26;28626:128;:169;;;;;28772:19;:23;28792:2;28772:23;;;;;;;;;;;;;;;;;;;;;;;;;28771:24;28626:169;28608:303;;;28834:4;28822:9;;:16;;;;;;;;;;;;;;;;;;28855:10;:8;:10::i;:::-;28894:5;28882:9;;:17;;;;;;;;;;;;;;;;;;28608:303;28923:12;28939:9;;;;;;;;;;;28938:10;28923:25;;29069:12;;;;;;;;;;;:54;;;;29098:19;:25;29118:4;29098:25;;;;;;;;;;;;;;;;;;;;;;;;;29069:54;:94;;;;29140:19;:23;29160:2;29140:23;;;;;;;;;;;;;;;;;;;;;;;;;29069:94;:198;;;;29182:26;:32;29209:4;29182:32;;;;;;;;;;;;;;;;;;;;;;;;;29181:33;:85;;;;;29236:26;:30;29263:2;29236:30;;;;;;;;;;;;;;;;;;;;;;;;;29235:31;29181:85;29069:198;29051:243;;;29289:5;29279:15;;29051:243;29307:12;29338:7;29334:782;;;29362:18;29404:13;;;;;;;;;;;29398:19;;:2;:19;;;29395:284;;29445:10;;;;;;;;;;;29437:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;29512:7;;29499:20;;29395:284;;;29551:13;;;;;;;;;;;29543:21;;:4;:21;;;29540:139;;29592:9;;;;;;;;;;;29584:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;29657:6;;29644:19;;29540:139;29395:284;29700:31;29727:3;29700:22;29711:10;29700:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;29693:38;;29771:40;29801:9;;29772:23;29781:13;;29772:4;:8;;:23;;;;:::i;:::-;29771:29;;:40;;;;:::i;:::-;29748:19;;:63;;;;;;;:::i;:::-;;;;;;;;29847:38;29875:9;;29848:21;29857:11;;29848:4;:8;;:21;;;;:::i;:::-;29847:27;;:38;;;;:::i;:::-;29826:17;;:59;;;;;;;:::i;:::-;;;;;;;;29924:35;29949:9;;29924:20;29933:10;;29924:4;:8;;:20;;;;:::i;:::-;:24;;:35;;;;:::i;:::-;29902:17;;:58;;;;;;;:::i;:::-;;;;;;;;29994:1;29987:4;:8;29983:91;;;30016:42;30032:4;30046;30053;30016:15;:42::i;:::-;29983:91;30100:4;30090:14;;;;;:::i;:::-;;;29347:769;29334:782;30128:33;30144:4;30150:2;30154:6;30128:15;:33::i;:::-;26600:3569;;;26487:3682;;;;:::o;30177:519::-;30263:1;30248:11;:16;30245:444;;30276:21;30314:1;30300:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30276:40;;30345:4;30327;30332:1;30327:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30371:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30361:4;30366:1;30361:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30406:62;30423:4;30438:15;;;;;;;;;;;30456:11;30406:8;:62::i;:::-;30481:15;;;;;;;;;;;:66;;;30562:11;30588:1;30604:4;30631;30651:15;30481:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30265:424;30245:444;30177:519;:::o;31315:367::-;31398:62;31415:4;31430:15;;;;;;;;;;;31448:11;31398:8;:62::i;:::-;31473:15;;;;;;;;;;;:31;;;31512:9;31545:4;31565:11;31591:1;31607;31623:10;;;;;;;;;;;31648:15;31473:201;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31315:367;;:::o;30704:603::-;30780:1;30770:6;:11;30767:533;;30793:21;30831:1;30817:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30793:40;;30854:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30844:4;30849:1;30844:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30897:7;;;;;;;;;;;30887:4;30892:1;30887:7;;;;;;;;:::i;:::-;;;;;;;:17;;;;;;;;;;;30917:15;;;;;;;;;;;:66;;;30991:6;31013:1;31029:4;31056;31076:15;30917:185;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31115:14;31139:7;;;;;;;;;;;31132:25;;;31166:4;31132:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31115:57;;31183:12;31198:42;31183:57;;31258:7;;;;;;;;;;;31251:24;;;31276:4;31281:6;31251:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30782:518;;;30767:533;30704:603;:::o;16582:191::-;16656:16;16675:6;;;;;;;;;;;16656:25;;16701:8;16692:6;;:17;;;;;;;;;;;;;;;;;;16756:8;16725:40;;16746:8;16725:40;;;;;;;;;;;;16645:128;16582:191;:::o;4179:689::-;4326:1;4310:18;;:4;:18;;;4302:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;4396:1;4382:16;;:2;:16;;;4374:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4451:38;4472:4;4478:2;4482:6;4451:20;:38::i;:::-;4502:19;4524:5;:11;4530:4;4524:11;;;;;;;;;;;;;;;;4502:33;;4583:6;4568:11;:21;;4546:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;4719:6;4705:11;:20;4691:5;:11;4697:4;4691:11;;;;;;;;;;;;;;;:34;;;;4760:6;4747:5;:9;4753:2;4747:9;;;;;;;;;;;;;;;;:19;;;;;;;:::i;:::-;;;;;;;;4799:2;4784:26;;4793:4;4784:26;;;4803:6;4784:26;;;;;;:::i;:::-;;;;;;;;4823:37;4843:4;4849:2;4853:6;4823:19;:37::i;:::-;4291:577;4179:689;;;:::o;18525:98::-;18583:7;18614:1;18610;:5;;;;:::i;:::-;18603:12;;18525:98;;;;:::o;18631:::-;18689:7;18720:1;18716;:5;;;;:::i;:::-;18709:12;;18631:98;;;;:::o;6368:125::-;;;;:::o;6501:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:90;803:7;846:5;839:13;832:21;821:32;;769:90;;;:::o;865:116::-;935:21;950:5;935:21;:::i;:::-;928:5;925:32;915:60;;971:1;968;961:12;915:60;865:116;:::o;987:133::-;1030:5;1068:6;1055:20;1046:29;;1084:30;1108:5;1084:30;:::i;:::-;987:133;;;;:::o;1126:462::-;1188:6;1196;1245:2;1233:9;1224:7;1220:23;1216:32;1213:119;;;1251:79;;:::i;:::-;1213:119;1371:1;1396:50;1438:7;1429:6;1418:9;1414:22;1396:50;:::i;:::-;1386:60;;1342:114;1495:2;1521:50;1563:7;1554:6;1543:9;1539:22;1521:50;:::i;:::-;1511:60;;1466:115;1126:462;;;;;:::o;1594:99::-;1646:6;1680:5;1674:12;1664:22;;1594:99;;;:::o;1699:169::-;1783:11;1817:6;1812:3;1805:19;1857:4;1852:3;1848:14;1833:29;;1699:169;;;;:::o;1874:246::-;1955:1;1965:113;1979:6;1976:1;1973:13;1965:113;;;2064:1;2059:3;2055:11;2049:18;2045:1;2040:3;2036:11;2029:39;2001:2;1998:1;1994:10;1989:15;;1965:113;;;2112:1;2103:6;2098:3;2094:16;2087:27;1936:184;1874:246;;;:::o;2126:102::-;2167:6;2218:2;2214:7;2209:2;2202:5;2198:14;2194:28;2184:38;;2126:102;;;:::o;2234:377::-;2322:3;2350:39;2383:5;2350:39;:::i;:::-;2405:71;2469:6;2464:3;2405:71;:::i;:::-;2398:78;;2485:65;2543:6;2538:3;2531:4;2524:5;2520:16;2485:65;:::i;:::-;2575:29;2597:6;2575:29;:::i;:::-;2570:3;2566:39;2559:46;;2326:285;2234:377;;;;:::o;2617:313::-;2730:4;2768:2;2757:9;2753:18;2745:26;;2817:9;2811:4;2807:20;2803:1;2792:9;2788:17;2781:47;2845:78;2918:4;2909:6;2845:78;:::i;:::-;2837:86;;2617:313;;;;:::o;2936:126::-;2973:7;3013:42;3006:5;3002:54;2991:65;;2936:126;;;:::o;3068:96::-;3105:7;3134:24;3152:5;3134:24;:::i;:::-;3123:35;;3068:96;;;:::o;3170:122::-;3243:24;3261:5;3243:24;:::i;:::-;3236:5;3233:35;3223:63;;3282:1;3279;3272:12;3223:63;3170:122;:::o;3298:139::-;3344:5;3382:6;3369:20;3360:29;;3398:33;3425:5;3398:33;:::i;:::-;3298:139;;;;:::o;3443:122::-;3516:24;3534:5;3516:24;:::i;:::-;3509:5;3506:35;3496:63;;3555:1;3552;3545:12;3496:63;3443:122;:::o;3571:139::-;3617:5;3655:6;3642:20;3633:29;;3671:33;3698:5;3671:33;:::i;:::-;3571:139;;;;:::o;3716:474::-;3784:6;3792;3841:2;3829:9;3820:7;3816:23;3812:32;3809:119;;;3847:79;;:::i;:::-;3809:119;3967:1;3992:53;4037:7;4028:6;4017:9;4013:22;3992:53;:::i;:::-;3982:63;;3938:117;4094:2;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4065:118;3716:474;;;;;:::o;4196:109::-;4277:21;4292:5;4277:21;:::i;:::-;4272:3;4265:34;4196:109;;:::o;4311:210::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:65;4511:1;4500:9;4496:17;4487:6;4449:65;:::i;:::-;4311:210;;;;:::o;4527:329::-;4586:6;4635:2;4623:9;4614:7;4610:23;4606:32;4603:119;;;4641:79;;:::i;:::-;4603:119;4761:1;4786:53;4831:7;4822:6;4811:9;4807:22;4786:53;:::i;:::-;4776:63;;4732:117;4527:329;;;;:::o;4862:619::-;4939:6;4947;4955;5004:2;4992:9;4983:7;4979:23;4975:32;4972:119;;;5010:79;;:::i;:::-;4972:119;5130:1;5155:53;5200:7;5191:6;5180:9;5176:22;5155:53;:::i;:::-;5145:63;;5101:117;5257:2;5283:53;5328:7;5319:6;5308:9;5304:22;5283:53;:::i;:::-;5273:63;;5228:118;5385:2;5411:53;5456:7;5447:6;5436:9;5432:22;5411:53;:::i;:::-;5401:63;;5356:118;4862:619;;;;;:::o;5487:::-;5564:6;5572;5580;5629:2;5617:9;5608:7;5604:23;5600:32;5597:119;;;5635:79;;:::i;:::-;5597:119;5755:1;5780:53;5825:7;5816:6;5805:9;5801:22;5780:53;:::i;:::-;5770:63;;5726:117;5882:2;5908:53;5953:7;5944:6;5933:9;5929:22;5908:53;:::i;:::-;5898:63;;5853:118;6010:2;6036:53;6081:7;6072:6;6061:9;6057:22;6036:53;:::i;:::-;6026:63;;5981:118;5487:619;;;;;:::o;6112:329::-;6171:6;6220:2;6208:9;6199:7;6195:23;6191:32;6188:119;;;6226:79;;:::i;:::-;6188:119;6346:1;6371:53;6416:7;6407:6;6396:9;6392:22;6371:53;:::i;:::-;6361:63;;6317:117;6112:329;;;;:::o;6447:86::-;6482:7;6522:4;6515:5;6511:16;6500:27;;6447:86;;;:::o;6539:112::-;6622:22;6638:5;6622:22;:::i;:::-;6617:3;6610:35;6539:112;;:::o;6657:214::-;6746:4;6784:2;6773:9;6769:18;6761:26;;6797:67;6861:1;6850:9;6846:17;6837:6;6797:67;:::i;:::-;6657:214;;;;:::o;6877:118::-;6964:24;6982:5;6964:24;:::i;:::-;6959:3;6952:37;6877:118;;:::o;7001:222::-;7094:4;7132:2;7121:9;7117:18;7109:26;;7145:71;7213:1;7202:9;7198:17;7189:6;7145:71;:::i;:::-;7001:222;;;;:::o;7229:474::-;7297:6;7305;7354:2;7342:9;7333:7;7329:23;7325:32;7322:119;;;7360:79;;:::i;:::-;7322:119;7480:1;7505:53;7550:7;7541:6;7530:9;7526:22;7505:53;:::i;:::-;7495:63;;7451:117;7607:2;7633:53;7678:7;7669:6;7658:9;7654:22;7633:53;:::i;:::-;7623:63;;7578:118;7229:474;;;;;:::o;7709:::-;7777:6;7785;7834:2;7822:9;7813:7;7809:23;7805:32;7802:119;;;7840:79;;:::i;:::-;7802:119;7960:1;7985:53;8030:7;8021:6;8010:9;8006:22;7985:53;:::i;:::-;7975:63;;7931:117;8087:2;8113:53;8158:7;8149:6;8138:9;8134:22;8113:53;:::i;:::-;8103:63;;8058:118;7709:474;;;;;:::o;8189:323::-;8245:6;8294:2;8282:9;8273:7;8269:23;8265:32;8262:119;;;8300:79;;:::i;:::-;8262:119;8420:1;8445:50;8487:7;8478:6;8467:9;8463:22;8445:50;:::i;:::-;8435:60;;8391:114;8189:323;;;;:::o;8518:468::-;8583:6;8591;8640:2;8628:9;8619:7;8615:23;8611:32;8608:119;;;8646:79;;:::i;:::-;8608:119;8766:1;8791:53;8836:7;8827:6;8816:9;8812:22;8791:53;:::i;:::-;8781:63;;8737:117;8893:2;8919:50;8961:7;8952:6;8941:9;8937:22;8919:50;:::i;:::-;8909:60;;8864:115;8518:468;;;;;:::o;8992:182::-;9132:34;9128:1;9120:6;9116:14;9109:58;8992:182;:::o;9180:366::-;9322:3;9343:67;9407:2;9402:3;9343:67;:::i;:::-;9336:74;;9419:93;9508:3;9419:93;:::i;:::-;9537:2;9532:3;9528:12;9521:19;;9180:366;;;:::o;9552:419::-;9718:4;9756:2;9745:9;9741:18;9733:26;;9805:9;9799:4;9795:20;9791:1;9780:9;9776:17;9769:47;9833:131;9959:4;9833:131;:::i;:::-;9825:139;;9552:419;;;:::o;9977:180::-;10025:77;10022:1;10015:88;10122:4;10119:1;10112:15;10146:4;10143:1;10136:15;10163:320;10207:6;10244:1;10238:4;10234:12;10224:22;;10291:1;10285:4;10281:12;10312:18;10302:81;;10368:4;10360:6;10356:17;10346:27;;10302:81;10430:2;10422:6;10419:14;10399:18;10396:38;10393:84;;10449:18;;:::i;:::-;10393:84;10214:269;10163:320;;;:::o;10489:180::-;10537:77;10534:1;10527:88;10634:4;10631:1;10624:15;10658:4;10655:1;10648:15;10675:191;10715:3;10734:20;10752:1;10734:20;:::i;:::-;10729:25;;10768:20;10786:1;10768:20;:::i;:::-;10763:25;;10811:1;10808;10804:9;10797:16;;10832:3;10829:1;10826:10;10823:36;;;10839:18;;:::i;:::-;10823:36;10675:191;;;;:::o;10872:410::-;10912:7;10935:20;10953:1;10935:20;:::i;:::-;10930:25;;10969:20;10987:1;10969:20;:::i;:::-;10964:25;;11024:1;11021;11017:9;11046:30;11064:11;11046:30;:::i;:::-;11035:41;;11225:1;11216:7;11212:15;11209:1;11206:22;11186:1;11179:9;11159:83;11136:139;;11255:18;;:::i;:::-;11136:139;10920:362;10872:410;;;;:::o;11288:180::-;11336:77;11333:1;11326:88;11433:4;11430:1;11423:15;11457:4;11454:1;11447:15;11474:185;11514:1;11531:20;11549:1;11531:20;:::i;:::-;11526:25;;11565:20;11583:1;11565:20;:::i;:::-;11560:25;;11604:1;11594:35;;11609:18;;:::i;:::-;11594:35;11651:1;11648;11644:9;11639:14;;11474:185;;;;:::o;11665:102::-;11707:8;11754:5;11751:1;11747:13;11726:34;;11665:102;;;:::o;11773:848::-;11834:5;11841:4;11865:6;11856:15;;11889:5;11880:14;;11903:712;11924:1;11914:8;11911:15;11903:712;;;12019:4;12014:3;12010:14;12004:4;12001:24;11998:50;;;12028:18;;:::i;:::-;11998:50;12078:1;12068:8;12064:16;12061:451;;;12493:4;12486:5;12482:16;12473:25;;12061:451;12543:4;12537;12533:15;12525:23;;12573:32;12596:8;12573:32;:::i;:::-;12561:44;;11903:712;;;11773:848;;;;;;;:::o;12627:1073::-;12681:5;12872:8;12862:40;;12893:1;12884:10;;12895:5;;12862:40;12921:4;12911:36;;12938:1;12929:10;;12940:5;;12911:36;13007:4;13055:1;13050:27;;;;13091:1;13086:191;;;;13000:277;;13050:27;13068:1;13059:10;;13070:5;;;13086:191;13131:3;13121:8;13118:17;13115:43;;;13138:18;;:::i;:::-;13115:43;13187:8;13184:1;13180:16;13171:25;;13222:3;13215:5;13212:14;13209:40;;;13229:18;;:::i;:::-;13209:40;13262:5;;;13000:277;;13386:2;13376:8;13373:16;13367:3;13361:4;13358:13;13354:36;13336:2;13326:8;13323:16;13318:2;13312:4;13309:12;13305:35;13289:111;13286:246;;;13442:8;13436:4;13432:19;13423:28;;13477:3;13470:5;13467:14;13464:40;;;13484:18;;:::i;:::-;13464:40;13517:5;;13286:246;13557:42;13595:3;13585:8;13579:4;13576:1;13557:42;:::i;:::-;13542:57;;;;13631:4;13626:3;13622:14;13615:5;13612:25;13609:51;;;13640:18;;:::i;:::-;13609:51;13689:4;13682:5;13678:16;13669:25;;12627:1073;;;;;;:::o;13706:281::-;13764:5;13788:23;13806:4;13788:23;:::i;:::-;13780:31;;13832:25;13848:8;13832:25;:::i;:::-;13820:37;;13876:104;13913:66;13903:8;13897:4;13876:104;:::i;:::-;13867:113;;13706:281;;;;:::o;13993:143::-;14050:5;14081:6;14075:13;14066:22;;14097:33;14124:5;14097:33;:::i;:::-;13993:143;;;;:::o;14142:351::-;14212:6;14261:2;14249:9;14240:7;14236:23;14232:32;14229:119;;;14267:79;;:::i;:::-;14229:119;14387:1;14412:64;14468:7;14459:6;14448:9;14444:22;14412:64;:::i;:::-;14402:74;;14358:128;14142:351;;;;:::o;14499:332::-;14620:4;14658:2;14647:9;14643:18;14635:26;;14671:71;14739:1;14728:9;14724:17;14715:6;14671:71;:::i;:::-;14752:72;14820:2;14809:9;14805:18;14796:6;14752:72;:::i;:::-;14499:332;;;;;:::o;14837:85::-;14882:7;14911:5;14900:16;;14837:85;;;:::o;14928:60::-;14956:3;14977:5;14970:12;;14928:60;;;:::o;14994:158::-;15052:9;15085:61;15103:42;15112:32;15138:5;15112:32;:::i;:::-;15103:42;:::i;:::-;15085:61;:::i;:::-;15072:74;;14994:158;;;:::o;15158:147::-;15253:45;15292:5;15253:45;:::i;:::-;15248:3;15241:58;15158:147;;:::o;15311:807::-;15560:4;15598:3;15587:9;15583:19;15575:27;;15612:71;15680:1;15669:9;15665:17;15656:6;15612:71;:::i;:::-;15693:72;15761:2;15750:9;15746:18;15737:6;15693:72;:::i;:::-;15775:80;15851:2;15840:9;15836:18;15827:6;15775:80;:::i;:::-;15865;15941:2;15930:9;15926:18;15917:6;15865:80;:::i;:::-;15955:73;16023:3;16012:9;16008:19;15999:6;15955:73;:::i;:::-;16038;16106:3;16095:9;16091:19;16082:6;16038:73;:::i;:::-;15311:807;;;;;;;;;:::o;16124:143::-;16181:5;16212:6;16206:13;16197:22;;16228:33;16255:5;16228:33;:::i;:::-;16124:143;;;;:::o;16273:663::-;16361:6;16369;16377;16426:2;16414:9;16405:7;16401:23;16397:32;16394:119;;;16432:79;;:::i;:::-;16394:119;16552:1;16577:64;16633:7;16624:6;16613:9;16609:22;16577:64;:::i;:::-;16567:74;;16523:128;16690:2;16716:64;16772:7;16763:6;16752:9;16748:22;16716:64;:::i;:::-;16706:74;;16661:129;16829:2;16855:64;16911:7;16902:6;16891:9;16887:22;16855:64;:::i;:::-;16845:74;;16800:129;16273:663;;;;;:::o;16942:162::-;17082:14;17078:1;17070:6;17066:14;17059:38;16942:162;:::o;17110:366::-;17252:3;17273:67;17337:2;17332:3;17273:67;:::i;:::-;17266:74;;17349:93;17438:3;17349:93;:::i;:::-;17467:2;17462:3;17458:12;17451:19;;17110:366;;;:::o;17482:419::-;17648:4;17686:2;17675:9;17671:18;17663:26;;17735:9;17729:4;17725:20;17721:1;17710:9;17706:17;17699:47;17763:131;17889:4;17763:131;:::i;:::-;17755:139;;17482:419;;;:::o;17907:224::-;18047:34;18043:1;18035:6;18031:14;18024:58;18116:7;18111:2;18103:6;18099:15;18092:32;17907:224;:::o;18137:366::-;18279:3;18300:67;18364:2;18359:3;18300:67;:::i;:::-;18293:74;;18376:93;18465:3;18376:93;:::i;:::-;18494:2;18489:3;18485:12;18478:19;;18137:366;;;:::o;18509:419::-;18675:4;18713:2;18702:9;18698:18;18690:26;;18762:9;18756:4;18752:20;18748:1;18737:9;18733:17;18726:47;18790:131;18916:4;18790:131;:::i;:::-;18782:139;;18509:419;;;:::o;18934:225::-;19074:34;19070:1;19062:6;19058:14;19051:58;19143:8;19138:2;19130:6;19126:15;19119:33;18934:225;:::o;19165:366::-;19307:3;19328:67;19392:2;19387:3;19328:67;:::i;:::-;19321:74;;19404:93;19493:3;19404:93;:::i;:::-;19522:2;19517:3;19513:12;19506:19;;19165:366;;;:::o;19537:419::-;19703:4;19741:2;19730:9;19726:18;19718:26;;19790:9;19784:4;19780:20;19776:1;19765:9;19761:17;19754:47;19818:131;19944:4;19818:131;:::i;:::-;19810:139;;19537:419;;;:::o;19962:223::-;20102:34;20098:1;20090:6;20086:14;20079:58;20171:6;20166:2;20158:6;20154:15;20147:31;19962:223;:::o;20191:366::-;20333:3;20354:67;20418:2;20413:3;20354:67;:::i;:::-;20347:74;;20430:93;20519:3;20430:93;:::i;:::-;20548:2;20543:3;20539:12;20532:19;;20191:366;;;:::o;20563:419::-;20729:4;20767:2;20756:9;20752:18;20744:26;;20816:9;20810:4;20806:20;20802:1;20791:9;20787:17;20780:47;20844:131;20970:4;20844:131;:::i;:::-;20836:139;;20563:419;;;:::o;20988:221::-;21128:34;21124:1;21116:6;21112:14;21105:58;21197:4;21192:2;21184:6;21180:15;21173:29;20988:221;:::o;21215:366::-;21357:3;21378:67;21442:2;21437:3;21378:67;:::i;:::-;21371:74;;21454:93;21543:3;21454:93;:::i;:::-;21572:2;21567:3;21563:12;21556:19;;21215:366;;;:::o;21587:419::-;21753:4;21791:2;21780:9;21776:18;21768:26;;21840:9;21834:4;21830:20;21826:1;21815:9;21811:17;21804:47;21868:131;21994:4;21868:131;:::i;:::-;21860:139;;21587:419;;;:::o;22012:179::-;22152:31;22148:1;22140:6;22136:14;22129:55;22012:179;:::o;22197:366::-;22339:3;22360:67;22424:2;22419:3;22360:67;:::i;:::-;22353:74;;22436:93;22525:3;22436:93;:::i;:::-;22554:2;22549:3;22545:12;22538:19;;22197:366;;;:::o;22569:419::-;22735:4;22773:2;22762:9;22758:18;22750:26;;22822:9;22816:4;22812:20;22808:1;22797:9;22793:17;22786:47;22850:131;22976:4;22850:131;:::i;:::-;22842:139;;22569:419;;;:::o;22994:224::-;23134:34;23130:1;23122:6;23118:14;23111:58;23203:7;23198:2;23190:6;23186:15;23179:32;22994:224;:::o;23224:366::-;23366:3;23387:67;23451:2;23446:3;23387:67;:::i;:::-;23380:74;;23463:93;23552:3;23463:93;:::i;:::-;23581:2;23576:3;23572:12;23565:19;;23224:366;;;:::o;23596:419::-;23762:4;23800:2;23789:9;23785:18;23777:26;;23849:9;23843:4;23839:20;23835:1;23824:9;23820:17;23813:47;23877:131;24003:4;23877:131;:::i;:::-;23869:139;;23596:419;;;:::o;24021:222::-;24161:34;24157:1;24149:6;24145:14;24138:58;24230:5;24225:2;24217:6;24213:15;24206:30;24021:222;:::o;24249:366::-;24391:3;24412:67;24476:2;24471:3;24412:67;:::i;:::-;24405:74;;24488:93;24577:3;24488:93;:::i;:::-;24606:2;24601:3;24597:12;24590:19;;24249:366;;;:::o;24621:419::-;24787:4;24825:2;24814:9;24810:18;24802:26;;24874:9;24868:4;24864:20;24860:1;24849:9;24845:17;24838:47;24902:131;25028:4;24902:131;:::i;:::-;24894:139;;24621:419;;;:::o;25046:168::-;25186:20;25182:1;25174:6;25170:14;25163:44;25046:168;:::o;25220:366::-;25362:3;25383:67;25447:2;25442:3;25383:67;:::i;:::-;25376:74;;25459:93;25548:3;25459:93;:::i;:::-;25577:2;25572:3;25568:12;25561:19;;25220:366;;;:::o;25592:419::-;25758:4;25796:2;25785:9;25781:18;25773:26;;25845:9;25839:4;25835:20;25831:1;25820:9;25816:17;25809:47;25873:131;25999:4;25873:131;:::i;:::-;25865:139;;25592:419;;;:::o;26017:170::-;26157:22;26153:1;26145:6;26141:14;26134:46;26017:170;:::o;26193:366::-;26335:3;26356:67;26420:2;26415:3;26356:67;:::i;:::-;26349:74;;26432:93;26521:3;26432:93;:::i;:::-;26550:2;26545:3;26541:12;26534:19;;26193:366;;;:::o;26565:419::-;26731:4;26769:2;26758:9;26754:18;26746:26;;26818:9;26812:4;26808:20;26804:1;26793:9;26789:17;26782:47;26846:131;26972:4;26846:131;:::i;:::-;26838:139;;26565:419;;;:::o;26990:221::-;27130:34;27126:1;27118:6;27114:14;27107:58;27199:4;27194:2;27186:6;27182:15;27175:29;26990:221;:::o;27217:366::-;27359:3;27380:67;27444:2;27439:3;27380:67;:::i;:::-;27373:74;;27456:93;27545:3;27456:93;:::i;:::-;27574:2;27569:3;27565:12;27558:19;;27217:366;;;:::o;27589:419::-;27755:4;27793:2;27782:9;27778:18;27770:26;;27842:9;27836:4;27832:20;27828:1;27817:9;27813:17;27806:47;27870:131;27996:4;27870:131;:::i;:::-;27862:139;;27589:419;;;:::o;28014:289::-;28154:34;28150:1;28142:6;28138:14;28131:58;28223:34;28218:2;28210:6;28206:15;28199:59;28292:3;28287:2;28279:6;28275:15;28268:28;28014:289;:::o;28309:366::-;28451:3;28472:67;28536:2;28531:3;28472:67;:::i;:::-;28465:74;;28548:93;28637:3;28548:93;:::i;:::-;28666:2;28661:3;28657:12;28650:19;;28309:366;;;:::o;28681:419::-;28847:4;28885:2;28874:9;28870:18;28862:26;;28934:9;28928:4;28924:20;28920:1;28909:9;28905:17;28898:47;28962:131;29088:4;28962:131;:::i;:::-;28954:139;;28681:419;;;:::o;29106:181::-;29246:33;29242:1;29234:6;29230:14;29223:57;29106:181;:::o;29293:366::-;29435:3;29456:67;29520:2;29515:3;29456:67;:::i;:::-;29449:74;;29532:93;29621:3;29532:93;:::i;:::-;29650:2;29645:3;29641:12;29634:19;;29293:366;;;:::o;29665:419::-;29831:4;29869:2;29858:9;29854:18;29846:26;;29918:9;29912:4;29908:20;29904:1;29893:9;29889:17;29882:47;29946:131;30072:4;29946:131;:::i;:::-;29938:139;;29665:419;;;:::o;30090:290::-;30230:34;30226:1;30218:6;30214:14;30207:58;30299:34;30294:2;30286:6;30282:15;30275:59;30368:4;30363:2;30355:6;30351:15;30344:29;30090:290;:::o;30386:366::-;30528:3;30549:67;30613:2;30608:3;30549:67;:::i;:::-;30542:74;;30625:93;30714:3;30625:93;:::i;:::-;30743:2;30738:3;30734:12;30727:19;;30386:366;;;:::o;30758:419::-;30924:4;30962:2;30951:9;30947:18;30939:26;;31011:9;31005:4;31001:20;30997:1;30986:9;30982:17;30975:47;31039:131;31165:4;31039:131;:::i;:::-;31031:139;;30758:419;;;:::o;31183:171::-;31323:23;31319:1;31311:6;31307:14;31300:47;31183:171;:::o;31360:366::-;31502:3;31523:67;31587:2;31582:3;31523:67;:::i;:::-;31516:74;;31599:93;31688:3;31599:93;:::i;:::-;31717:2;31712:3;31708:12;31701:19;;31360:366;;;:::o;31732:419::-;31898:4;31936:2;31925:9;31921:18;31913:26;;31985:9;31979:4;31975:20;31971:1;31960:9;31956:17;31949:47;32013:131;32139:4;32013:131;:::i;:::-;32005:139;;31732:419;;;:::o;32157:170::-;32297:22;32293:1;32285:6;32281:14;32274:46;32157:170;:::o;32333:366::-;32475:3;32496:67;32560:2;32555:3;32496:67;:::i;:::-;32489:74;;32572:93;32661:3;32572:93;:::i;:::-;32690:2;32685:3;32681:12;32674:19;;32333:366;;;:::o;32705:419::-;32871:4;32909:2;32898:9;32894:18;32886:26;;32958:9;32952:4;32948:20;32944:1;32933:9;32929:17;32922:47;32986:131;33112:4;32986:131;:::i;:::-;32978:139;;32705:419;;;:::o;33130:194::-;33170:4;33190:20;33208:1;33190:20;:::i;:::-;33185:25;;33224:20;33242:1;33224:20;:::i;:::-;33219:25;;33268:1;33265;33261:9;33253:17;;33292:1;33286:4;33283:11;33280:37;;;33297:18;;:::i;:::-;33280:37;33130:194;;;;:::o;33330:180::-;33378:77;33375:1;33368:88;33475:4;33472:1;33465:15;33499:4;33496:1;33489:15;33516:180;33564:77;33561:1;33554:88;33661:4;33658:1;33651:15;33685:4;33682:1;33675:15;33702:114;33769:6;33803:5;33797:12;33787:22;;33702:114;;;:::o;33822:184::-;33921:11;33955:6;33950:3;33943:19;33995:4;33990:3;33986:14;33971:29;;33822:184;;;;:::o;34012:132::-;34079:4;34102:3;34094:11;;34132:4;34127:3;34123:14;34115:22;;34012:132;;;:::o;34150:108::-;34227:24;34245:5;34227:24;:::i;:::-;34222:3;34215:37;34150:108;;:::o;34264:179::-;34333:10;34354:46;34396:3;34388:6;34354:46;:::i;:::-;34432:4;34427:3;34423:14;34409:28;;34264:179;;;;:::o;34449:113::-;34519:4;34551;34546:3;34542:14;34534:22;;34449:113;;;:::o;34598:732::-;34717:3;34746:54;34794:5;34746:54;:::i;:::-;34816:86;34895:6;34890:3;34816:86;:::i;:::-;34809:93;;34926:56;34976:5;34926:56;:::i;:::-;35005:7;35036:1;35021:284;35046:6;35043:1;35040:13;35021:284;;;35122:6;35116:13;35149:63;35208:3;35193:13;35149:63;:::i;:::-;35142:70;;35235:60;35288:6;35235:60;:::i;:::-;35225:70;;35081:224;35068:1;35065;35061:9;35056:14;;35021:284;;;35025:14;35321:3;35314:10;;34722:608;;;34598:732;;;;:::o;35336:831::-;35599:4;35637:3;35626:9;35622:19;35614:27;;35651:71;35719:1;35708:9;35704:17;35695:6;35651:71;:::i;:::-;35732:80;35808:2;35797:9;35793:18;35784:6;35732:80;:::i;:::-;35859:9;35853:4;35849:20;35844:2;35833:9;35829:18;35822:48;35887:108;35990:4;35981:6;35887:108;:::i;:::-;35879:116;;36005:72;36073:2;36062:9;36058:18;36049:6;36005:72;:::i;:::-;36087:73;36155:3;36144:9;36140:19;36131:6;36087:73;:::i;:::-;35336:831;;;;;;;;:::o;36173:720::-;36408:4;36446:3;36435:9;36431:19;36423:27;;36460:79;36536:1;36525:9;36521:17;36512:6;36460:79;:::i;:::-;36586:9;36580:4;36576:20;36571:2;36560:9;36556:18;36549:48;36614:108;36717:4;36708:6;36614:108;:::i;:::-;36606:116;;36732:72;36800:2;36789:9;36785:18;36776:6;36732:72;:::i;:::-;36814;36882:2;36871:9;36867:18;36858:6;36814:72;:::i;:::-;36173:720;;;;;;;:::o;36899:351::-;36969:6;37018:2;37006:9;36997:7;36993:23;36989:32;36986:119;;;37024:79;;:::i;:::-;36986:119;37144:1;37169:64;37225:7;37216:6;37205:9;37201:22;37169:64;:::i;:::-;37159:74;;37115:128;36899:351;;;;:::o;37256:332::-;37377:4;37415:2;37404:9;37400:18;37392:26;;37428:71;37496:1;37485:9;37481:17;37472:6;37428:71;:::i;:::-;37509:72;37577:2;37566:9;37562:18;37553:6;37509:72;:::i;:::-;37256:332;;;;;:::o;37594:137::-;37648:5;37679:6;37673:13;37664:22;;37695:30;37719:5;37695:30;:::i;:::-;37594:137;;;;:::o;37737:345::-;37804:6;37853:2;37841:9;37832:7;37828:23;37824:32;37821:119;;;37859:79;;:::i;:::-;37821:119;37979:1;38004:61;38057:7;38048:6;38037:9;38033:22;38004:61;:::i;:::-;37994:71;;37950:125;37737:345;;;;:::o;38088:180::-;38228:32;38224:1;38216:6;38212:14;38205:56;38088:180;:::o;38274:366::-;38416:3;38437:67;38501:2;38496:3;38437:67;:::i;:::-;38430:74;;38513:93;38602:3;38513:93;:::i;:::-;38631:2;38626:3;38622:12;38615:19;;38274:366;;;:::o;38646:419::-;38812:4;38850:2;38839:9;38835:18;38827:26;;38899:9;38893:4;38889:20;38885:1;38874:9;38870:17;38863:47;38927:131;39053:4;38927:131;:::i;:::-;38919:139;;38646:419;;;:::o;39071:225::-;39211:34;39207:1;39199:6;39195:14;39188:58;39280:8;39275:2;39267:6;39263:15;39256:33;39071:225;:::o;39302:366::-;39444:3;39465:67;39529:2;39524:3;39465:67;:::i;:::-;39458:74;;39541:93;39630:3;39541:93;:::i;:::-;39659:2;39654:3;39650:12;39643:19;;39302:366;;;:::o;39674:419::-;39840:4;39878:2;39867:9;39863:18;39855:26;;39927:9;39921:4;39917:20;39913:1;39902:9;39898:17;39891:47;39955:131;40081:4;39955:131;:::i;:::-;39947:139;;39674:419;;;:::o

Swarm Source

ipfs://93ee7c66bf2835148bfda905e4ef93d0c9dd85bed36bfe85b2359978f3b32662
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.