ETH Price: $3,586.24 (+3.56%)
 

Overview

Max Total Supply

100,000,000 BABYSATAN

Holders

9

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: BABYSATAN
Balance
0.000000000008634948 BABYSATAN

Value
$0.00
0xdcb177ec31bf0fba608d4a08d2bca2bed52c4adc
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:
BABYSATAN

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-22
*/

/**
 *Submitted for verification at Etherscan.io on 2023-05-18
*/

// SPDX-License-Identifier: MIT

pragma solidity >=0.8.10 >=0.8.0 <0.9.0;
pragma experimental ABIEncoderV2;


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

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

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


interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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


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

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


interface IERC20Metadata is IERC20 {

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

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

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


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

    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 _balances[account];
    }

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


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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, 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;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

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

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

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

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

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


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


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 Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    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 burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    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 IUniswapV2Router02 {
    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 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;
}

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address private marketingWallet;
    address private developmentWallet;
    address public creatorWallet;

    uint256 public percentForLPBurn = 0; 
    bool public lpBurnEnabled = false;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = true;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

    mapping(address => uint256) private _holderLastTransferTimestamp; 
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevelopmentFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevelopmentFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event developmentWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event AutoNukeLP();

    event ManualNukeLP();

    constructor(address _creatorWallet) ERC20("BABY SATAN", "BABYSATAN") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevelopmentFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevelopmentFee = 0;

        uint256 totalSupply = 100_000_000 * 1e18;

        maxTransactionAmount = 80_000_000 * 1e18;
        maxWallet = 2_000_000 * 1e18;
        swapTokensAtAmount = (totalSupply * 10) / 10000;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevelopmentFee = _buyDevelopmentFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevelopmentFee = _sellDevelopmentFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee;

        marketingWallet = address(0x9A5B43FD8a503D2876aae9aA63300093c572a39A);
        developmentWallet = address(0x9A5B43FD8a503D2876aae9aA63300093c572a39A);

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
        creatorWallet = _creatorWallet;
    }

    receive() external payable {}

    function enableTrade() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }

    function removeLimits() external onlyAuthorized returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _developmentFee
    ) external onlyAuthorized {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevelopmentFee = _developmentFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee;
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _developmentFee
    ) external onlyAuthorized {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevelopmentFee = _developmentFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee;
    }

    function excludeFromFees(address account, bool excluded) public onlyAuthorized {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWalletInfo(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateDevelopmentWalletInfo(address newWallet) external onlyOwner {
        emit developmentWalletUpdated(newWallet, developmentWallet);
        developmentWallet = newWallet;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    event BoughtEarly(address indexed sniper);

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

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

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevelopmentFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevelopmentFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing +
            tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(developmentWallet).call{value: ethForDev}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }


        function manualswap() external {
        require(
            _msgSender() == developmentWallet ||
                _msgSender() == marketingWallet
        );
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(
            _msgSender() == developmentWallet ||
                _msgSender() == marketingWallet
        );
        bool success;
        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    function setAutoLPBurnSettings(
        uint256 _frequencyInSeconds,
        uint256 _percent,
        bool _Enabled
    ) external onlyOwner {
        require(
            _frequencyInSeconds >= 600,
            "cannot set buyback more often than every 10 minutes"
        );
        require(
            _percent <= 1000 && _percent >= 0,
            "Must set auto LP burn percent between 0% and 10%"
        );
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }

    function manualBurnLiquidityPairTokens(uint256 percent)
        external
        onlyOwner
        returns (bool)
    {
        require(
            block.timestamp > lastManualLpBurnTime + manualBurnFrequency,
            "Must wait for cooldown to finish"
        );
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
    modifier onlyAuthorized() {
        require(
            msg.sender == owner() || msg.sender == creatorWallet,
            "Only authorized wallets can call this function."
        );
        _;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_creatorWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","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":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","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":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevelopmentWalletInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWalletInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260006009556000600a60006101000a81548160ff021916908315150217905550610e10600b556001601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff0219169083151502179055506001601060026101000a81548160ff0219169083151502179055506107086011556001601460006101000a81548160ff021916908315150217905550348015620000a957600080fd5b506040516200703c3803806200703c8339818101604052810190620000cf919062000cce565b6040518060400160405280600a81526020017f4241425920534154414e000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f42414259534154414e000000000000000000000000000000000000000000000081525081600390805190602001906200015392919062000bb4565b5080600490805190602001906200016c92919062000bb4565b5050506200018f620001836200062a60201b60201c565b6200063260201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001bb816001620006f860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000261919062000cce565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062000cce565b6040518363ffffffff1660e01b81526004016200030e92919062000d11565b6020604051808303816000875af11580156200032e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000354919062000cce565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200039c60a0516001620006f860201b60201c565b620003b160a0516001620007e260201b60201c565b60008060008060008060006a52b7d2dcc80cd2e400000090506a422ca8b0a00a4250000000600d819055506a01a784379d99db42000000600f81905550612710600a8262000400919062000d77565b6200040c919062000e07565b600e819055508660168190555085601781905550846018819055506018546017546016546200043c919062000e3f565b62000448919062000e3f565b60158190555083601a8190555082601b8190555081601c81905550601c54601b54601a5462000478919062000e3f565b62000484919062000e3f565b601981905550739a5b43fd8a503d2876aae9aa63300093c572a39a600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739a5b43fd8a503d2876aae9aa63300093c572a39a600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000556620005486200088360201b60201c565b6001620008ad60201b60201c565b62000569306001620008ad60201b60201c565b6200057e61dead6001620008ad60201b60201c565b620005a0620005926200088360201b60201c565b6001620006f860201b60201c565b620005b3306001620006f860201b60201c565b620005c861dead6001620006f860201b60201c565b620005da338262000a3160201b60201c565b88600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505050620010f6565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007086200062a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200072e6200088360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000787576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200077e9062000efd565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008bd6200088360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480620009445750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b62000986576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200097d9062000f95565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a25919062000fd4565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000aa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a9b9062001041565b60405180910390fd5b62000ab86000838362000baa60201b60201c565b806002600082825462000acc919062000e3f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b23919062000e3f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b8a919062001074565b60405180910390a362000ba66000838362000baf60201b60201c565b5050565b505050565b505050565b82805462000bc290620010c0565b90600052602060002090601f01602090048101928262000be6576000855562000c32565b82601f1062000c0157805160ff191683800117855562000c32565b8280016001018555821562000c32579182015b8281111562000c3157825182559160200191906001019062000c14565b5b50905062000c41919062000c45565b5090565b5b8082111562000c6057600081600090555060010162000c46565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c968262000c69565b9050919050565b62000ca88162000c89565b811462000cb457600080fd5b50565b60008151905062000cc88162000c9d565b92915050565b60006020828403121562000ce75762000ce662000c64565b5b600062000cf78482850162000cb7565b91505092915050565b62000d0b8162000c89565b82525050565b600060408201905062000d28600083018562000d00565b62000d37602083018462000d00565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d848262000d3e565b915062000d918362000d3e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000dcd5762000dcc62000d48565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e148262000d3e565b915062000e218362000d3e565b92508262000e345762000e3362000dd8565b5b828204905092915050565b600062000e4c8262000d3e565b915062000e598362000d3e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e915762000e9062000d48565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ee560208362000e9c565b915062000ef28262000ead565b602082019050919050565b6000602082019050818103600083015262000f188162000ed6565b9050919050565b7f4f6e6c7920617574686f72697a65642077616c6c6574732063616e2063616c6c60008201527f20746869732066756e6374696f6e2e0000000000000000000000000000000000602082015250565b600062000f7d602f8362000e9c565b915062000f8a8262000f1f565b604082019050919050565b6000602082019050818103600083015262000fb08162000f6e565b9050919050565b60008115159050919050565b62000fce8162000fb7565b82525050565b600060208201905062000feb600083018462000fc3565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001029601f8362000e9c565b9150620010368262000ff1565b602082019050919050565b600060208201905081810360008301526200105c816200101a565b9050919050565b6200106e8162000d3e565b82525050565b60006020820190506200108b600083018462001063565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010d957607f821691505b60208210811415620010f057620010ef62001091565b5b50919050565b60805160a051615ebe6200117e6000396000818161138001528181611ed601528181612a1301528181612aca01528181612af70152818161313b0152818161447c015281816145350152614562015260008181611059015281816130e301528181613d2101528181613e0201528181613e290152818161463f01526146660152615ebe6000f3fe6080604052600436106103bb5760003560e01c80637cdc65f2116101f2578063c02466681161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610e10578063f637434214610e39578063f8b45b0514610e64578063fe72b27a14610e8f576103c2565b8063dd62ed3e14610d52578063e2f4560514610d8f578063e884f26014610dba578063f11a24d314610de5576103c2565b8063c876d0b9116100dc578063c876d0b914610c94578063c8c8ebe414610cbf578063d257b34f14610cea578063d85ba06314610d27576103c2565b8063c024666814610c02578063c17b5b8c14610c2b578063c18bc19514610c54578063c3c8cd8014610c7d576103c2565b80639ec22c0e11610185578063a9059cbb11610154578063a9059cbb14610b32578063b204141114610b6f578063b62496f514610b9a578063bbc0c74214610bd7576103c2565b80639ec22c0e14610a745780639fccce3214610a9f578063a457c2d714610aca578063a4c82a0014610b07576103c2565b806392136913116101c157806392136913146109cc578063924de9b7146109f757806395d89b4114610a205780639a7a23d614610a4b576103c2565b80637cdc65f2146109245780637d831a8b1461094f5780638095d564146109785780638da5cb5b146109a1576103c2565b80632e82f1a0116102e25780636ddd171311610275578063730c188811610244578063730c18881461087c578063751039fc146108a55780637571336a146108d05780637bce5a04146108f9576103c2565b80636ddd1713146107e65780636fc3eaec1461081157806370a0823114610828578063715018a614610865576103c2565b80634a62bb65116102b15780634a62bb651461072a5780634fbee19314610755578063535e02d8146107925780636a486a8e146107bb576103c2565b80632e82f1a01461066c578063313ce5671461069757806339509351146106c257806349bd5a5e146106ff576103c2565b806318a94cf11161035a578063203e727e11610329578063203e727e146105b057806323b872dd146105d957806327c8f835146106165780632c3e486c14610641576103c2565b806318a94cf114610504578063199ffc721461052f5780631a8145bb1461055a5780631f3fed8f14610585576103c2565b806310d5de531161039657806310d5de53146104465780631694505e1461048357806318160ddd146104ae578063184c16c5146104d9576103c2565b806299d386146103c757806306fdde03146103de578063095ea7b314610409576103c2565b366103c257005b600080fd5b3480156103d357600080fd5b506103dc610ecc565b005b3480156103ea57600080fd5b506103f3610f87565b60405161040091906147ae565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190614869565b611019565b60405161043d91906148c4565b60405180910390f35b34801561045257600080fd5b5061046d600480360381019061046891906148df565b611037565b60405161047a91906148c4565b60405180910390f35b34801561048f57600080fd5b50610498611057565b6040516104a5919061496b565b60405180910390f35b3480156104ba57600080fd5b506104c361107b565b6040516104d09190614995565b60405180910390f35b3480156104e557600080fd5b506104ee611085565b6040516104fb9190614995565b60405180910390f35b34801561051057600080fd5b5061051961108b565b6040516105269190614995565b60405180910390f35b34801561053b57600080fd5b50610544611091565b6040516105519190614995565b60405180910390f35b34801561056657600080fd5b5061056f611097565b60405161057c9190614995565b60405180910390f35b34801561059157600080fd5b5061059a61109d565b6040516105a79190614995565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d291906149b0565b6110a3565b005b3480156105e557600080fd5b5061060060048036038101906105fb91906149dd565b6111b2565b60405161060d91906148c4565b60405180910390f35b34801561062257600080fd5b5061062b6112aa565b6040516106389190614a3f565b60405180910390f35b34801561064d57600080fd5b506106566112b0565b6040516106639190614995565b60405180910390f35b34801561067857600080fd5b506106816112b6565b60405161068e91906148c4565b60405180910390f35b3480156106a357600080fd5b506106ac6112c9565b6040516106b99190614a76565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190614869565b6112d2565b6040516106f691906148c4565b60405180910390f35b34801561070b57600080fd5b5061071461137e565b6040516107219190614a3f565b60405180910390f35b34801561073657600080fd5b5061073f6113a2565b60405161074c91906148c4565b60405180910390f35b34801561076157600080fd5b5061077c600480360381019061077791906148df565b6113b5565b60405161078991906148c4565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b491906148df565b61140b565b005b3480156107c757600080fd5b506107d0611547565b6040516107dd9190614995565b60405180910390f35b3480156107f257600080fd5b506107fb61154d565b60405161080891906148c4565b60405180910390f35b34801561081d57600080fd5b50610826611560565b005b34801561083457600080fd5b5061084f600480360381019061084a91906148df565b6116b3565b60405161085c9190614995565b60405180910390f35b34801561087157600080fd5b5061087a6116fb565b005b34801561088857600080fd5b506108a3600480360381019061089e9190614abd565b611783565b005b3480156108b157600080fd5b506108ba6118c3565b6040516108c791906148c4565b60405180910390f35b3480156108dc57600080fd5b506108f760048036038101906108f29190614b10565b6119b4565b005b34801561090557600080fd5b5061090e611a8b565b60405161091b9190614995565b60405180910390f35b34801561093057600080fd5b50610939611a91565b6040516109469190614a3f565b60405180910390f35b34801561095b57600080fd5b50610976600480360381019061097191906148df565b611ab7565b005b34801561098457600080fd5b5061099f600480360381019061099a9190614b50565b611bf3565b005b3480156109ad57600080fd5b506109b6611cfd565b6040516109c39190614a3f565b60405180910390f35b3480156109d857600080fd5b506109e1611d27565b6040516109ee9190614995565b60405180910390f35b348015610a0357600080fd5b50610a1e6004803603810190610a199190614ba3565b611d2d565b005b348015610a2c57600080fd5b50610a35611dc6565b604051610a4291906147ae565b60405180910390f35b348015610a5757600080fd5b50610a726004803603810190610a6d9190614b10565b611e58565b005b348015610a8057600080fd5b50610a89611f71565b604051610a969190614995565b60405180910390f35b348015610aab57600080fd5b50610ab4611f77565b604051610ac19190614995565b60405180910390f35b348015610ad657600080fd5b50610af16004803603810190610aec9190614869565b611f7d565b604051610afe91906148c4565b60405180910390f35b348015610b1357600080fd5b50610b1c612068565b604051610b299190614995565b60405180910390f35b348015610b3e57600080fd5b50610b596004803603810190610b549190614869565b61206e565b604051610b6691906148c4565b60405180910390f35b348015610b7b57600080fd5b50610b8461208c565b604051610b919190614995565b60405180910390f35b348015610ba657600080fd5b50610bc16004803603810190610bbc91906148df565b612092565b604051610bce91906148c4565b60405180910390f35b348015610be357600080fd5b50610bec6120b2565b604051610bf991906148c4565b60405180910390f35b348015610c0e57600080fd5b50610c296004803603810190610c249190614b10565b6120c5565b005b348015610c3757600080fd5b50610c526004803603810190610c4d9190614b50565b61223b565b005b348015610c6057600080fd5b50610c7b6004803603810190610c7691906149b0565b612345565b005b348015610c8957600080fd5b50610c92612454565b005b348015610ca057600080fd5b50610ca961252d565b604051610cb691906148c4565b60405180910390f35b348015610ccb57600080fd5b50610cd4612540565b604051610ce19190614995565b60405180910390f35b348015610cf657600080fd5b50610d116004803603810190610d0c91906149b0565b612546565b604051610d1e91906148c4565b60405180910390f35b348015610d3357600080fd5b50610d3c61269b565b604051610d499190614995565b60405180910390f35b348015610d5e57600080fd5b50610d796004803603810190610d749190614bd0565b6126a1565b604051610d869190614995565b60405180910390f35b348015610d9b57600080fd5b50610da4612728565b604051610db19190614995565b60405180910390f35b348015610dc657600080fd5b50610dcf61272e565b604051610ddc91906148c4565b60405180910390f35b348015610df157600080fd5b50610dfa6127ce565b604051610e079190614995565b60405180910390f35b348015610e1c57600080fd5b50610e376004803603810190610e3291906148df565b6127d4565b005b348015610e4557600080fd5b50610e4e6128cc565b604051610e5b9190614995565b60405180910390f35b348015610e7057600080fd5b50610e796128d2565b604051610e869190614995565b60405180910390f35b348015610e9b57600080fd5b50610eb66004803603810190610eb191906149b0565b6128d8565b604051610ec391906148c4565b60405180910390f35b610ed4612bb0565b73ffffffffffffffffffffffffffffffffffffffff16610ef2611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3f90614c5c565b60405180910390fd5b6001601060016101000a81548160ff0219169083151502179055506001601060026101000a81548160ff02191690831515021790555042600c81905550565b606060038054610f9690614cab565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc290614cab565b801561100f5780601f10610fe45761010080835404028352916020019161100f565b820191906000526020600020905b815481529060010190602001808311610ff257829003601f168201915b5050505050905090565b600061102d611026612bb0565b8484612bb8565b6001905092915050565b60216020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60115481565b601c5481565b60095481565b601e5481565b601d5481565b6110ab612bb0565b73ffffffffffffffffffffffffffffffffffffffff166110c9611cfd565b73ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690614c5c565b60405180910390fd5b670de0b6b3a76400006103e8600161113561107b565b61113f9190614d0c565b6111499190614d95565b6111539190614d95565b811015611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c90614e38565b60405180910390fd5b670de0b6b3a7640000816111a99190614d0c565b600d8190555050565b60006111bf848484612d83565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061120a612bb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128190614eca565b60405180910390fd5b61129e85611296612bb0565b858403612bb8565b60019150509392505050565b61dead81565b600b5481565b600a60009054906101000a900460ff1681565b60006012905090565b60006113746112df612bb0565b8484600160006112ed612bb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461136f9190614eea565b612bb8565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601060009054906101000a900460ff1681565b6000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611413612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611431611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90614c5c565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b601060029054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115a1612bb0565b73ffffffffffffffffffffffffffffffffffffffff1614806116175750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115ff612bb0565b73ffffffffffffffffffffffffffffffffffffffff16145b61162057600080fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161166890614f71565b60006040518083038185875af1925050503d80600081146116a5576040519150601f19603f3d011682016040523d82523d6000602084013e6116aa565b606091505b50508091505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611703612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611721611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90614c5c565b60405180910390fd5b6117816000613b1b565b565b61178b612bb0565b73ffffffffffffffffffffffffffffffffffffffff166117a9611cfd565b73ffffffffffffffffffffffffffffffffffffffff16146117ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f690614c5c565b60405180910390fd5b610258831015611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b90614ff8565b60405180910390fd5b6103e88211158015611857575060008210155b611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188d9061508a565b60405180910390fd5b82600b819055508160098190555080600a60006101000a81548160ff021916908315150217905550505050565b60006118cd611cfd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119535750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611992576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119899061511c565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b6119bc612bb0565b73ffffffffffffffffffffffffffffffffffffffff166119da611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790614c5c565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611abf612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611add611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a90614c5c565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611bfb611cfd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c815750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb79061511c565b60405180910390fd5b826016819055508160178190555080601881905550601854601754601654611ce89190614eea565b611cf29190614eea565b601581905550505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601a5481565b611d35612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611d53611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614611da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da090614c5c565b60405180910390fd5b80601060026101000a81548160ff02191690831515021790555050565b606060048054611dd590614cab565b80601f0160208091040260200160405190810160405280929190818152602001828054611e0190614cab565b8015611e4e5780601f10611e2357610100808354040283529160200191611e4e565b820191906000526020600020905b815481529060010190602001808311611e3157829003601f168201915b5050505050905090565b611e60612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611e7e611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614611ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecb90614c5c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a906151ae565b60405180910390fd5b611f6d8282613be1565b5050565b60125481565b601f5481565b60008060016000611f8c612bb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204090615240565b60405180910390fd5b61205d612054612bb0565b85858403612bb8565b600191505092915050565b600c5481565b600061208261207b612bb0565b8484612d83565b6001905092915050565b60185481565b60226020528060005260406000206000915054906101000a900460ff1681565b601060019054906101000a900460ff1681565b6120cd611cfd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806121535750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121899061511c565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161222f91906148c4565b60405180910390a25050565b612243611cfd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122c95750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ff9061511c565b60405180910390fd5b82601a8190555081601b8190555080601c81905550601c54601b54601a546123309190614eea565b61233a9190614eea565b601981905550505050565b61234d612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661236b611cfd565b73ffffffffffffffffffffffffffffffffffffffff16146123c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b890614c5c565b60405180910390fd5b670de0b6b3a76400006103e860056123d761107b565b6123e19190614d0c565b6123eb9190614d95565b6123f59190614d95565b811015612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e906152d2565b60405180910390fd5b670de0b6b3a76400008161244b9190614d0c565b600f8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612495612bb0565b73ffffffffffffffffffffffffffffffffffffffff16148061250b5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124f3612bb0565b73ffffffffffffffffffffffffffffffffffffffff16145b61251457600080fd5b600061251f306116b3565b905061252a81613c82565b50565b601460009054906101000a900460ff1681565b600d5481565b6000612550612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661256e611cfd565b73ffffffffffffffffffffffffffffffffffffffff16146125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb90614c5c565b60405180910390fd5b620186a060016125d261107b565b6125dc9190614d0c565b6125e69190614d95565b821015612628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261f90615364565b60405180910390fd5b6103e8600561263561107b565b61263f9190614d0c565b6126499190614d95565b82111561268b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612682906153f6565b60405180910390fd5b81600e8190555060019050919050565b60155481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b6000612738612bb0565b73ffffffffffffffffffffffffffffffffffffffff16612756611cfd565b73ffffffffffffffffffffffffffffffffffffffff16146127ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a390614c5c565b60405180910390fd5b6000601460006101000a81548160ff0219169083151502179055506001905090565b60175481565b6127dc612bb0565b73ffffffffffffffffffffffffffffffffffffffff166127fa611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614612850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284790614c5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b790615488565b60405180910390fd5b6128c981613b1b565b50565b601b5481565b600f5481565b60006128e2612bb0565b73ffffffffffffffffffffffffffffffffffffffff16612900611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614612956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294d90614c5c565b60405180910390fd5b6011546012546129669190614eea565b42116129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e906154f4565b60405180910390fd5b6103e88211156129ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e390615586565b60405180910390fd5b4260128190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401612a4e9190614a3f565b602060405180830381865afa158015612a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f91906155bb565b90506000612aba612710612aac8685613ebf90919063ffffffff16565b613ed590919063ffffffff16565b90506000811115612af357612af27f000000000000000000000000000000000000000000000000000000000000000061dead83613eeb565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612b6057600080fd5b505af1158015612b74573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1f9061565a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8f906156ec565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d769190614995565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dea9061577e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a90615810565b60405180910390fd5b6000811415612e7d57612e7883836000613eeb565b613b16565b601060009054906101000a900460ff161561354057612e9a611cfd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f085750612ed8611cfd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f415750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f7b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f945750600560149054906101000a900460ff16155b1561353f57601060019054906101000a900460ff1661308e57602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061304e5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61308d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130849061587c565b60405180910390fd5b5b601460009054906101000a900460ff1615613256576130ab611cfd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561313257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561318a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132555743601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320790615934565b60405180910390fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132f95750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133a057600d54811115613343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333a906159c6565b60405180910390fd5b600f5461334f836116b3565b8261335a9190614eea565b111561339b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339290615a32565b60405180910390fd5b61353e565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134435750602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561349257600d5481111561348d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348490615ac4565b60405180910390fd5b61353d565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661353c57600f546134ef836116b3565b826134fa9190614eea565b111561353b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353290615a32565b60405180910390fd5b5b5b5b5b5b600061354b306116b3565b90506000600e5482101590508080156135705750601060029054906101000a900460ff165b80156135895750600560149054906101000a900460ff16155b80156135df5750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136355750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561368b5750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136cf576001600560146101000a81548160ff0219169083151502179055506136b361416c565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff161580156137355750602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561374d5750600a60009054906101000a900460ff165b80156137685750600b54600c546137649190614eea565b4210155b80156137be5750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137cd576137cb614453565b505b6000600560149054906101000a900460ff16159050602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138835750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561388d57600090505b60008115613b0657602260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138f057506000601954115b156139bd5761391d606461390f60195488613ebf90919063ffffffff16565b613ed590919063ffffffff16565b9050601954601b54826139309190614d0c565b61393a9190614d95565b601e600082825461394b9190614eea565b92505081905550601954601c54826139639190614d0c565b61396d9190614d95565b601f600082825461397e9190614eea565b92505081905550601954601a54826139969190614d0c565b6139a09190614d95565b601d60008282546139b19190614eea565b92505081905550613ae2565b602260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a1857506000601554115b15613ae157613a456064613a3760155488613ebf90919063ffffffff16565b613ed590919063ffffffff16565b905060155460175482613a589190614d0c565b613a629190614d95565b601e6000828254613a739190614eea565b9250508190555060155460185482613a8b9190614d0c565b613a959190614d95565b601f6000828254613aa69190614eea565b9250508190555060155460165482613abe9190614d0c565b613ac89190614d95565b601d6000828254613ad99190614eea565b925050819055505b5b6000811115613af757613af6873083613eeb565b5b8085613b039190615ae4565b94505b613b11878787613eeb565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff811115613c9f57613c9e615b18565b5b604051908082528060200260200182016040528015613ccd5781602001602082028036833780820191505090505b5090503081600081518110613ce557613ce4615b47565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dae9190615b8b565b81600181518110613dc257613dc1615b47565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e27307f000000000000000000000000000000000000000000000000000000000000000084612bb8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e89959493929190615cb1565b600060405180830381600087803b158015613ea357600080fd5b505af1158015613eb7573d6000803e3d6000fd5b505050505050565b60008183613ecd9190614d0c565b905092915050565b60008183613ee39190614d95565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f529061577e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fc290615810565b60405180910390fd5b613fd6838383614619565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561405c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161405390615d7d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546140ef9190614eea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141539190614995565b60405180910390a361416684848461461e565b50505050565b6000614177306116b3565b90506000601f54601d54601e5461418e9190614eea565b6141989190614eea565b90506000808314806141aa5750600082145b156141b757505050614451565b6014600e546141c69190614d0c565b8311156141df576014600e546141dc9190614d0c565b92505b6000600283601e54866141f29190614d0c565b6141fc9190614d95565b6142069190614d95565b9050600061421d828661462390919063ffffffff16565b9050600047905061422d82613c82565b6000614242824761462390919063ffffffff16565b9050600061426d8761425f601d5485613ebf90919063ffffffff16565b613ed590919063ffffffff16565b905060006142988861428a601f5486613ebf90919063ffffffff16565b613ed590919063ffffffff16565b905060008183856142a99190615ae4565b6142b39190615ae4565b90506000601e819055506000601d819055506000601f81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161431390614f71565b60006040518083038185875af1925050503d8060008114614350576040519150601f19603f3d011682016040523d82523d6000602084013e614355565b606091505b50508098505060008711801561436b5750600081115b156143b85761437a8782614639565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601e546040516143af93929190615d9d565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516143fe90614f71565b60006040518083038185875af1925050503d806000811461443b576040519150601f19603f3d011682016040523d82523d6000602084013e614440565b606091505b505080985050505050505050505050505b565b600042600c8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016144b79190614a3f565b602060405180830381865afa1580156144d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144f891906155bb565b9050600061452561271061451760095485613ebf90919063ffffffff16565b613ed590919063ffffffff16565b9050600081111561455e5761455d7f000000000000000000000000000000000000000000000000000000000000000061dead83613eeb565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156145cb57600080fd5b505af11580156145df573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b600081836146319190615ae4565b905092915050565b614664307f000000000000000000000000000000000000000000000000000000000000000084612bb8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016146cb96959493929190615dd4565b60606040518083038185885af11580156146e9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061470e9190615e35565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561474f578082015181840152602081019050614734565b8381111561475e576000848401525b50505050565b6000601f19601f8301169050919050565b600061478082614715565b61478a8185614720565b935061479a818560208601614731565b6147a381614764565b840191505092915050565b600060208201905081810360008301526147c88184614775565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614800826147d5565b9050919050565b614810816147f5565b811461481b57600080fd5b50565b60008135905061482d81614807565b92915050565b6000819050919050565b61484681614833565b811461485157600080fd5b50565b6000813590506148638161483d565b92915050565b600080604083850312156148805761487f6147d0565b5b600061488e8582860161481e565b925050602061489f85828601614854565b9150509250929050565b60008115159050919050565b6148be816148a9565b82525050565b60006020820190506148d960008301846148b5565b92915050565b6000602082840312156148f5576148f46147d0565b5b60006149038482850161481e565b91505092915050565b6000819050919050565b600061493161492c614927846147d5565b61490c565b6147d5565b9050919050565b600061494382614916565b9050919050565b600061495582614938565b9050919050565b6149658161494a565b82525050565b6000602082019050614980600083018461495c565b92915050565b61498f81614833565b82525050565b60006020820190506149aa6000830184614986565b92915050565b6000602082840312156149c6576149c56147d0565b5b60006149d484828501614854565b91505092915050565b6000806000606084860312156149f6576149f56147d0565b5b6000614a048682870161481e565b9350506020614a158682870161481e565b9250506040614a2686828701614854565b9150509250925092565b614a39816147f5565b82525050565b6000602082019050614a546000830184614a30565b92915050565b600060ff82169050919050565b614a7081614a5a565b82525050565b6000602082019050614a8b6000830184614a67565b92915050565b614a9a816148a9565b8114614aa557600080fd5b50565b600081359050614ab781614a91565b92915050565b600080600060608486031215614ad657614ad56147d0565b5b6000614ae486828701614854565b9350506020614af586828701614854565b9250506040614b0686828701614aa8565b9150509250925092565b60008060408385031215614b2757614b266147d0565b5b6000614b358582860161481e565b9250506020614b4685828601614aa8565b9150509250929050565b600080600060608486031215614b6957614b686147d0565b5b6000614b7786828701614854565b9350506020614b8886828701614854565b9250506040614b9986828701614854565b9150509250925092565b600060208284031215614bb957614bb86147d0565b5b6000614bc784828501614aa8565b91505092915050565b60008060408385031215614be757614be66147d0565b5b6000614bf58582860161481e565b9250506020614c068582860161481e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c46602083614720565b9150614c5182614c10565b602082019050919050565b60006020820190508181036000830152614c7581614c39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614cc357607f821691505b60208210811415614cd757614cd6614c7c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614d1782614833565b9150614d2283614833565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d5b57614d5a614cdd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614da082614833565b9150614dab83614833565b925082614dbb57614dba614d66565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614e22602f83614720565b9150614e2d82614dc6565b604082019050919050565b60006020820190508181036000830152614e5181614e15565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614eb4602883614720565b9150614ebf82614e58565b604082019050919050565b60006020820190508181036000830152614ee381614ea7565b9050919050565b6000614ef582614833565b9150614f0083614833565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f3557614f34614cdd565b5b828201905092915050565b600081905092915050565b50565b6000614f5b600083614f40565b9150614f6682614f4b565b600082019050919050565b6000614f7c82614f4e565b9150819050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614fe2603383614720565b9150614fed82614f86565b604082019050919050565b6000602082019050818103600083015261501181614fd5565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000615074603083614720565b915061507f82615018565b604082019050919050565b600060208201905081810360008301526150a381615067565b9050919050565b7f4f6e6c7920617574686f72697a65642077616c6c6574732063616e2063616c6c60008201527f20746869732066756e6374696f6e2e0000000000000000000000000000000000602082015250565b6000615106602f83614720565b9150615111826150aa565b604082019050919050565b60006020820190508181036000830152615135816150f9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000615198603983614720565b91506151a38261513c565b604082019050919050565b600060208201905081810360008301526151c78161518b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061522a602583614720565b9150615235826151ce565b604082019050919050565b600060208201905081810360008301526152598161521d565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006152bc602483614720565b91506152c782615260565b604082019050919050565b600060208201905081810360008301526152eb816152af565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061534e603583614720565b9150615359826152f2565b604082019050919050565b6000602082019050818103600083015261537d81615341565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006153e0603483614720565b91506153eb82615384565b604082019050919050565b6000602082019050818103600083015261540f816153d3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615472602683614720565b915061547d82615416565b604082019050919050565b600060208201905081810360008301526154a181615465565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006154de602083614720565b91506154e9826154a8565b602082019050919050565b6000602082019050818103600083015261550d816154d1565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000615570602a83614720565b915061557b82615514565b604082019050919050565b6000602082019050818103600083015261559f81615563565b9050919050565b6000815190506155b58161483d565b92915050565b6000602082840312156155d1576155d06147d0565b5b60006155df848285016155a6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615644602483614720565b915061564f826155e8565b604082019050919050565b6000602082019050818103600083015261567381615637565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006156d6602283614720565b91506156e18261567a565b604082019050919050565b60006020820190508181036000830152615705816156c9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615768602583614720565b91506157738261570c565b604082019050919050565b600060208201905081810360008301526157978161575b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006157fa602383614720565b91506158058261579e565b604082019050919050565b60006020820190508181036000830152615829816157ed565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615866601683614720565b915061587182615830565b602082019050919050565b6000602082019050818103600083015261589581615859565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061591e604983614720565b91506159298261589c565b606082019050919050565b6000602082019050818103600083015261594d81615911565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006159b0603583614720565b91506159bb82615954565b604082019050919050565b600060208201905081810360008301526159df816159a3565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615a1c601383614720565b9150615a27826159e6565b602082019050919050565b60006020820190508181036000830152615a4b81615a0f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615aae603683614720565b9150615ab982615a52565b604082019050919050565b60006020820190508181036000830152615add81615aa1565b9050919050565b6000615aef82614833565b9150615afa83614833565b925082821015615b0d57615b0c614cdd565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615b8581614807565b92915050565b600060208284031215615ba157615ba06147d0565b5b6000615baf84828501615b76565b91505092915050565b6000819050919050565b6000615bdd615bd8615bd384615bb8565b61490c565b614833565b9050919050565b615bed81615bc2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615c28816147f5565b82525050565b6000615c3a8383615c1f565b60208301905092915050565b6000602082019050919050565b6000615c5e82615bf3565b615c688185615bfe565b9350615c7383615c0f565b8060005b83811015615ca4578151615c8b8882615c2e565b9750615c9683615c46565b925050600181019050615c77565b5085935050505092915050565b600060a082019050615cc66000830188614986565b615cd36020830187615be4565b8181036040830152615ce58186615c53565b9050615cf46060830185614a30565b615d016080830184614986565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615d67602683614720565b9150615d7282615d0b565b604082019050919050565b60006020820190508181036000830152615d9681615d5a565b9050919050565b6000606082019050615db26000830186614986565b615dbf6020830185614986565b615dcc6040830184614986565b949350505050565b600060c082019050615de96000830189614a30565b615df66020830188614986565b615e036040830187615be4565b615e106060830186615be4565b615e1d6080830185614a30565b615e2a60a0830184614986565b979650505050505050565b600080600060608486031215615e4e57615e4d6147d0565b5b6000615e5c868287016155a6565b9350506020615e6d868287016155a6565b9250506040615e7e868287016155a6565b915050925092509256fea2646970667358221220bfaa13222d191140624719c431aea6b7f6a48adfa6ca390855972afc24a0058664736f6c634300080a00330000000000000000000000009a5b43fd8a503d2876aae9aa63300093c572a39a

Deployed Bytecode

0x6080604052600436106103bb5760003560e01c80637cdc65f2116101f2578063c02466681161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610e10578063f637434214610e39578063f8b45b0514610e64578063fe72b27a14610e8f576103c2565b8063dd62ed3e14610d52578063e2f4560514610d8f578063e884f26014610dba578063f11a24d314610de5576103c2565b8063c876d0b9116100dc578063c876d0b914610c94578063c8c8ebe414610cbf578063d257b34f14610cea578063d85ba06314610d27576103c2565b8063c024666814610c02578063c17b5b8c14610c2b578063c18bc19514610c54578063c3c8cd8014610c7d576103c2565b80639ec22c0e11610185578063a9059cbb11610154578063a9059cbb14610b32578063b204141114610b6f578063b62496f514610b9a578063bbc0c74214610bd7576103c2565b80639ec22c0e14610a745780639fccce3214610a9f578063a457c2d714610aca578063a4c82a0014610b07576103c2565b806392136913116101c157806392136913146109cc578063924de9b7146109f757806395d89b4114610a205780639a7a23d614610a4b576103c2565b80637cdc65f2146109245780637d831a8b1461094f5780638095d564146109785780638da5cb5b146109a1576103c2565b80632e82f1a0116102e25780636ddd171311610275578063730c188811610244578063730c18881461087c578063751039fc146108a55780637571336a146108d05780637bce5a04146108f9576103c2565b80636ddd1713146107e65780636fc3eaec1461081157806370a0823114610828578063715018a614610865576103c2565b80634a62bb65116102b15780634a62bb651461072a5780634fbee19314610755578063535e02d8146107925780636a486a8e146107bb576103c2565b80632e82f1a01461066c578063313ce5671461069757806339509351146106c257806349bd5a5e146106ff576103c2565b806318a94cf11161035a578063203e727e11610329578063203e727e146105b057806323b872dd146105d957806327c8f835146106165780632c3e486c14610641576103c2565b806318a94cf114610504578063199ffc721461052f5780631a8145bb1461055a5780631f3fed8f14610585576103c2565b806310d5de531161039657806310d5de53146104465780631694505e1461048357806318160ddd146104ae578063184c16c5146104d9576103c2565b806299d386146103c757806306fdde03146103de578063095ea7b314610409576103c2565b366103c257005b600080fd5b3480156103d357600080fd5b506103dc610ecc565b005b3480156103ea57600080fd5b506103f3610f87565b60405161040091906147ae565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190614869565b611019565b60405161043d91906148c4565b60405180910390f35b34801561045257600080fd5b5061046d600480360381019061046891906148df565b611037565b60405161047a91906148c4565b60405180910390f35b34801561048f57600080fd5b50610498611057565b6040516104a5919061496b565b60405180910390f35b3480156104ba57600080fd5b506104c361107b565b6040516104d09190614995565b60405180910390f35b3480156104e557600080fd5b506104ee611085565b6040516104fb9190614995565b60405180910390f35b34801561051057600080fd5b5061051961108b565b6040516105269190614995565b60405180910390f35b34801561053b57600080fd5b50610544611091565b6040516105519190614995565b60405180910390f35b34801561056657600080fd5b5061056f611097565b60405161057c9190614995565b60405180910390f35b34801561059157600080fd5b5061059a61109d565b6040516105a79190614995565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d291906149b0565b6110a3565b005b3480156105e557600080fd5b5061060060048036038101906105fb91906149dd565b6111b2565b60405161060d91906148c4565b60405180910390f35b34801561062257600080fd5b5061062b6112aa565b6040516106389190614a3f565b60405180910390f35b34801561064d57600080fd5b506106566112b0565b6040516106639190614995565b60405180910390f35b34801561067857600080fd5b506106816112b6565b60405161068e91906148c4565b60405180910390f35b3480156106a357600080fd5b506106ac6112c9565b6040516106b99190614a76565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190614869565b6112d2565b6040516106f691906148c4565b60405180910390f35b34801561070b57600080fd5b5061071461137e565b6040516107219190614a3f565b60405180910390f35b34801561073657600080fd5b5061073f6113a2565b60405161074c91906148c4565b60405180910390f35b34801561076157600080fd5b5061077c600480360381019061077791906148df565b6113b5565b60405161078991906148c4565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b491906148df565b61140b565b005b3480156107c757600080fd5b506107d0611547565b6040516107dd9190614995565b60405180910390f35b3480156107f257600080fd5b506107fb61154d565b60405161080891906148c4565b60405180910390f35b34801561081d57600080fd5b50610826611560565b005b34801561083457600080fd5b5061084f600480360381019061084a91906148df565b6116b3565b60405161085c9190614995565b60405180910390f35b34801561087157600080fd5b5061087a6116fb565b005b34801561088857600080fd5b506108a3600480360381019061089e9190614abd565b611783565b005b3480156108b157600080fd5b506108ba6118c3565b6040516108c791906148c4565b60405180910390f35b3480156108dc57600080fd5b506108f760048036038101906108f29190614b10565b6119b4565b005b34801561090557600080fd5b5061090e611a8b565b60405161091b9190614995565b60405180910390f35b34801561093057600080fd5b50610939611a91565b6040516109469190614a3f565b60405180910390f35b34801561095b57600080fd5b50610976600480360381019061097191906148df565b611ab7565b005b34801561098457600080fd5b5061099f600480360381019061099a9190614b50565b611bf3565b005b3480156109ad57600080fd5b506109b6611cfd565b6040516109c39190614a3f565b60405180910390f35b3480156109d857600080fd5b506109e1611d27565b6040516109ee9190614995565b60405180910390f35b348015610a0357600080fd5b50610a1e6004803603810190610a199190614ba3565b611d2d565b005b348015610a2c57600080fd5b50610a35611dc6565b604051610a4291906147ae565b60405180910390f35b348015610a5757600080fd5b50610a726004803603810190610a6d9190614b10565b611e58565b005b348015610a8057600080fd5b50610a89611f71565b604051610a969190614995565b60405180910390f35b348015610aab57600080fd5b50610ab4611f77565b604051610ac19190614995565b60405180910390f35b348015610ad657600080fd5b50610af16004803603810190610aec9190614869565b611f7d565b604051610afe91906148c4565b60405180910390f35b348015610b1357600080fd5b50610b1c612068565b604051610b299190614995565b60405180910390f35b348015610b3e57600080fd5b50610b596004803603810190610b549190614869565b61206e565b604051610b6691906148c4565b60405180910390f35b348015610b7b57600080fd5b50610b8461208c565b604051610b919190614995565b60405180910390f35b348015610ba657600080fd5b50610bc16004803603810190610bbc91906148df565b612092565b604051610bce91906148c4565b60405180910390f35b348015610be357600080fd5b50610bec6120b2565b604051610bf991906148c4565b60405180910390f35b348015610c0e57600080fd5b50610c296004803603810190610c249190614b10565b6120c5565b005b348015610c3757600080fd5b50610c526004803603810190610c4d9190614b50565b61223b565b005b348015610c6057600080fd5b50610c7b6004803603810190610c7691906149b0565b612345565b005b348015610c8957600080fd5b50610c92612454565b005b348015610ca057600080fd5b50610ca961252d565b604051610cb691906148c4565b60405180910390f35b348015610ccb57600080fd5b50610cd4612540565b604051610ce19190614995565b60405180910390f35b348015610cf657600080fd5b50610d116004803603810190610d0c91906149b0565b612546565b604051610d1e91906148c4565b60405180910390f35b348015610d3357600080fd5b50610d3c61269b565b604051610d499190614995565b60405180910390f35b348015610d5e57600080fd5b50610d796004803603810190610d749190614bd0565b6126a1565b604051610d869190614995565b60405180910390f35b348015610d9b57600080fd5b50610da4612728565b604051610db19190614995565b60405180910390f35b348015610dc657600080fd5b50610dcf61272e565b604051610ddc91906148c4565b60405180910390f35b348015610df157600080fd5b50610dfa6127ce565b604051610e079190614995565b60405180910390f35b348015610e1c57600080fd5b50610e376004803603810190610e3291906148df565b6127d4565b005b348015610e4557600080fd5b50610e4e6128cc565b604051610e5b9190614995565b60405180910390f35b348015610e7057600080fd5b50610e796128d2565b604051610e869190614995565b60405180910390f35b348015610e9b57600080fd5b50610eb66004803603810190610eb191906149b0565b6128d8565b604051610ec391906148c4565b60405180910390f35b610ed4612bb0565b73ffffffffffffffffffffffffffffffffffffffff16610ef2611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3f90614c5c565b60405180910390fd5b6001601060016101000a81548160ff0219169083151502179055506001601060026101000a81548160ff02191690831515021790555042600c81905550565b606060038054610f9690614cab565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc290614cab565b801561100f5780601f10610fe45761010080835404028352916020019161100f565b820191906000526020600020905b815481529060010190602001808311610ff257829003601f168201915b5050505050905090565b600061102d611026612bb0565b8484612bb8565b6001905092915050565b60216020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60115481565b601c5481565b60095481565b601e5481565b601d5481565b6110ab612bb0565b73ffffffffffffffffffffffffffffffffffffffff166110c9611cfd565b73ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690614c5c565b60405180910390fd5b670de0b6b3a76400006103e8600161113561107b565b61113f9190614d0c565b6111499190614d95565b6111539190614d95565b811015611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c90614e38565b60405180910390fd5b670de0b6b3a7640000816111a99190614d0c565b600d8190555050565b60006111bf848484612d83565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061120a612bb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128190614eca565b60405180910390fd5b61129e85611296612bb0565b858403612bb8565b60019150509392505050565b61dead81565b600b5481565b600a60009054906101000a900460ff1681565b60006012905090565b60006113746112df612bb0565b8484600160006112ed612bb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461136f9190614eea565b612bb8565b6001905092915050565b7f000000000000000000000000dcb177ec31bf0fba608d4a08d2bca2bed52c4adc81565b601060009054906101000a900460ff1681565b6000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611413612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611431611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90614c5c565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b601060029054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115a1612bb0565b73ffffffffffffffffffffffffffffffffffffffff1614806116175750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115ff612bb0565b73ffffffffffffffffffffffffffffffffffffffff16145b61162057600080fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161166890614f71565b60006040518083038185875af1925050503d80600081146116a5576040519150601f19603f3d011682016040523d82523d6000602084013e6116aa565b606091505b50508091505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611703612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611721611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90614c5c565b60405180910390fd5b6117816000613b1b565b565b61178b612bb0565b73ffffffffffffffffffffffffffffffffffffffff166117a9611cfd565b73ffffffffffffffffffffffffffffffffffffffff16146117ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f690614c5c565b60405180910390fd5b610258831015611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b90614ff8565b60405180910390fd5b6103e88211158015611857575060008210155b611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188d9061508a565b60405180910390fd5b82600b819055508160098190555080600a60006101000a81548160ff021916908315150217905550505050565b60006118cd611cfd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119535750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611992576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119899061511c565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b6119bc612bb0565b73ffffffffffffffffffffffffffffffffffffffff166119da611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790614c5c565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611abf612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611add611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a90614c5c565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611bfb611cfd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c815750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb79061511c565b60405180910390fd5b826016819055508160178190555080601881905550601854601754601654611ce89190614eea565b611cf29190614eea565b601581905550505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601a5481565b611d35612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611d53611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614611da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da090614c5c565b60405180910390fd5b80601060026101000a81548160ff02191690831515021790555050565b606060048054611dd590614cab565b80601f0160208091040260200160405190810160405280929190818152602001828054611e0190614cab565b8015611e4e5780601f10611e2357610100808354040283529160200191611e4e565b820191906000526020600020905b815481529060010190602001808311611e3157829003601f168201915b5050505050905090565b611e60612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611e7e611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614611ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecb90614c5c565b60405180910390fd5b7f000000000000000000000000dcb177ec31bf0fba608d4a08d2bca2bed52c4adc73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a906151ae565b60405180910390fd5b611f6d8282613be1565b5050565b60125481565b601f5481565b60008060016000611f8c612bb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204090615240565b60405180910390fd5b61205d612054612bb0565b85858403612bb8565b600191505092915050565b600c5481565b600061208261207b612bb0565b8484612d83565b6001905092915050565b60185481565b60226020528060005260406000206000915054906101000a900460ff1681565b601060019054906101000a900460ff1681565b6120cd611cfd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806121535750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121899061511c565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161222f91906148c4565b60405180910390a25050565b612243611cfd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122c95750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ff9061511c565b60405180910390fd5b82601a8190555081601b8190555080601c81905550601c54601b54601a546123309190614eea565b61233a9190614eea565b601981905550505050565b61234d612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661236b611cfd565b73ffffffffffffffffffffffffffffffffffffffff16146123c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b890614c5c565b60405180910390fd5b670de0b6b3a76400006103e860056123d761107b565b6123e19190614d0c565b6123eb9190614d95565b6123f59190614d95565b811015612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e906152d2565b60405180910390fd5b670de0b6b3a76400008161244b9190614d0c565b600f8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612495612bb0565b73ffffffffffffffffffffffffffffffffffffffff16148061250b5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124f3612bb0565b73ffffffffffffffffffffffffffffffffffffffff16145b61251457600080fd5b600061251f306116b3565b905061252a81613c82565b50565b601460009054906101000a900460ff1681565b600d5481565b6000612550612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661256e611cfd565b73ffffffffffffffffffffffffffffffffffffffff16146125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb90614c5c565b60405180910390fd5b620186a060016125d261107b565b6125dc9190614d0c565b6125e69190614d95565b821015612628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261f90615364565b60405180910390fd5b6103e8600561263561107b565b61263f9190614d0c565b6126499190614d95565b82111561268b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612682906153f6565b60405180910390fd5b81600e8190555060019050919050565b60155481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b6000612738612bb0565b73ffffffffffffffffffffffffffffffffffffffff16612756611cfd565b73ffffffffffffffffffffffffffffffffffffffff16146127ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a390614c5c565b60405180910390fd5b6000601460006101000a81548160ff0219169083151502179055506001905090565b60175481565b6127dc612bb0565b73ffffffffffffffffffffffffffffffffffffffff166127fa611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614612850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284790614c5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b790615488565b60405180910390fd5b6128c981613b1b565b50565b601b5481565b600f5481565b60006128e2612bb0565b73ffffffffffffffffffffffffffffffffffffffff16612900611cfd565b73ffffffffffffffffffffffffffffffffffffffff1614612956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294d90614c5c565b60405180910390fd5b6011546012546129669190614eea565b42116129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e906154f4565b60405180910390fd5b6103e88211156129ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e390615586565b60405180910390fd5b4260128190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000dcb177ec31bf0fba608d4a08d2bca2bed52c4adc6040518263ffffffff1660e01b8152600401612a4e9190614a3f565b602060405180830381865afa158015612a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f91906155bb565b90506000612aba612710612aac8685613ebf90919063ffffffff16565b613ed590919063ffffffff16565b90506000811115612af357612af27f000000000000000000000000dcb177ec31bf0fba608d4a08d2bca2bed52c4adc61dead83613eeb565b5b60007f000000000000000000000000dcb177ec31bf0fba608d4a08d2bca2bed52c4adc90508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612b6057600080fd5b505af1158015612b74573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1f9061565a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8f906156ec565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d769190614995565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dea9061577e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a90615810565b60405180910390fd5b6000811415612e7d57612e7883836000613eeb565b613b16565b601060009054906101000a900460ff161561354057612e9a611cfd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f085750612ed8611cfd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f415750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f7b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f945750600560149054906101000a900460ff16155b1561353f57601060019054906101000a900460ff1661308e57602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061304e5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61308d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130849061587c565b60405180910390fd5b5b601460009054906101000a900460ff1615613256576130ab611cfd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561313257507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561318a57507f000000000000000000000000dcb177ec31bf0fba608d4a08d2bca2bed52c4adc73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132555743601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320790615934565b60405180910390fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132f95750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133a057600d54811115613343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333a906159c6565b60405180910390fd5b600f5461334f836116b3565b8261335a9190614eea565b111561339b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339290615a32565b60405180910390fd5b61353e565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134435750602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561349257600d5481111561348d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348490615ac4565b60405180910390fd5b61353d565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661353c57600f546134ef836116b3565b826134fa9190614eea565b111561353b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353290615a32565b60405180910390fd5b5b5b5b5b5b600061354b306116b3565b90506000600e5482101590508080156135705750601060029054906101000a900460ff165b80156135895750600560149054906101000a900460ff16155b80156135df5750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136355750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561368b5750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136cf576001600560146101000a81548160ff0219169083151502179055506136b361416c565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff161580156137355750602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561374d5750600a60009054906101000a900460ff165b80156137685750600b54600c546137649190614eea565b4210155b80156137be5750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137cd576137cb614453565b505b6000600560149054906101000a900460ff16159050602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138835750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561388d57600090505b60008115613b0657602260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138f057506000601954115b156139bd5761391d606461390f60195488613ebf90919063ffffffff16565b613ed590919063ffffffff16565b9050601954601b54826139309190614d0c565b61393a9190614d95565b601e600082825461394b9190614eea565b92505081905550601954601c54826139639190614d0c565b61396d9190614d95565b601f600082825461397e9190614eea565b92505081905550601954601a54826139969190614d0c565b6139a09190614d95565b601d60008282546139b19190614eea565b92505081905550613ae2565b602260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a1857506000601554115b15613ae157613a456064613a3760155488613ebf90919063ffffffff16565b613ed590919063ffffffff16565b905060155460175482613a589190614d0c565b613a629190614d95565b601e6000828254613a739190614eea565b9250508190555060155460185482613a8b9190614d0c565b613a959190614d95565b601f6000828254613aa69190614eea565b9250508190555060155460165482613abe9190614d0c565b613ac89190614d95565b601d6000828254613ad99190614eea565b925050819055505b5b6000811115613af757613af6873083613eeb565b5b8085613b039190615ae4565b94505b613b11878787613eeb565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff811115613c9f57613c9e615b18565b5b604051908082528060200260200182016040528015613ccd5781602001602082028036833780820191505090505b5090503081600081518110613ce557613ce4615b47565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dae9190615b8b565b81600181518110613dc257613dc1615b47565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e27307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612bb8565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e89959493929190615cb1565b600060405180830381600087803b158015613ea357600080fd5b505af1158015613eb7573d6000803e3d6000fd5b505050505050565b60008183613ecd9190614d0c565b905092915050565b60008183613ee39190614d95565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f529061577e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fc290615810565b60405180910390fd5b613fd6838383614619565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561405c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161405390615d7d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546140ef9190614eea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141539190614995565b60405180910390a361416684848461461e565b50505050565b6000614177306116b3565b90506000601f54601d54601e5461418e9190614eea565b6141989190614eea565b90506000808314806141aa5750600082145b156141b757505050614451565b6014600e546141c69190614d0c565b8311156141df576014600e546141dc9190614d0c565b92505b6000600283601e54866141f29190614d0c565b6141fc9190614d95565b6142069190614d95565b9050600061421d828661462390919063ffffffff16565b9050600047905061422d82613c82565b6000614242824761462390919063ffffffff16565b9050600061426d8761425f601d5485613ebf90919063ffffffff16565b613ed590919063ffffffff16565b905060006142988861428a601f5486613ebf90919063ffffffff16565b613ed590919063ffffffff16565b905060008183856142a99190615ae4565b6142b39190615ae4565b90506000601e819055506000601d819055506000601f81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161431390614f71565b60006040518083038185875af1925050503d8060008114614350576040519150601f19603f3d011682016040523d82523d6000602084013e614355565b606091505b50508098505060008711801561436b5750600081115b156143b85761437a8782614639565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601e546040516143af93929190615d9d565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516143fe90614f71565b60006040518083038185875af1925050503d806000811461443b576040519150601f19603f3d011682016040523d82523d6000602084013e614440565b606091505b505080985050505050505050505050505b565b600042600c8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000dcb177ec31bf0fba608d4a08d2bca2bed52c4adc6040518263ffffffff1660e01b81526004016144b79190614a3f565b602060405180830381865afa1580156144d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144f891906155bb565b9050600061452561271061451760095485613ebf90919063ffffffff16565b613ed590919063ffffffff16565b9050600081111561455e5761455d7f000000000000000000000000dcb177ec31bf0fba608d4a08d2bca2bed52c4adc61dead83613eeb565b5b60007f000000000000000000000000dcb177ec31bf0fba608d4a08d2bca2bed52c4adc90508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156145cb57600080fd5b505af11580156145df573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b600081836146319190615ae4565b905092915050565b614664307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612bb8565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016146cb96959493929190615dd4565b60606040518083038185885af11580156146e9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061470e9190615e35565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561474f578082015181840152602081019050614734565b8381111561475e576000848401525b50505050565b6000601f19601f8301169050919050565b600061478082614715565b61478a8185614720565b935061479a818560208601614731565b6147a381614764565b840191505092915050565b600060208201905081810360008301526147c88184614775565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614800826147d5565b9050919050565b614810816147f5565b811461481b57600080fd5b50565b60008135905061482d81614807565b92915050565b6000819050919050565b61484681614833565b811461485157600080fd5b50565b6000813590506148638161483d565b92915050565b600080604083850312156148805761487f6147d0565b5b600061488e8582860161481e565b925050602061489f85828601614854565b9150509250929050565b60008115159050919050565b6148be816148a9565b82525050565b60006020820190506148d960008301846148b5565b92915050565b6000602082840312156148f5576148f46147d0565b5b60006149038482850161481e565b91505092915050565b6000819050919050565b600061493161492c614927846147d5565b61490c565b6147d5565b9050919050565b600061494382614916565b9050919050565b600061495582614938565b9050919050565b6149658161494a565b82525050565b6000602082019050614980600083018461495c565b92915050565b61498f81614833565b82525050565b60006020820190506149aa6000830184614986565b92915050565b6000602082840312156149c6576149c56147d0565b5b60006149d484828501614854565b91505092915050565b6000806000606084860312156149f6576149f56147d0565b5b6000614a048682870161481e565b9350506020614a158682870161481e565b9250506040614a2686828701614854565b9150509250925092565b614a39816147f5565b82525050565b6000602082019050614a546000830184614a30565b92915050565b600060ff82169050919050565b614a7081614a5a565b82525050565b6000602082019050614a8b6000830184614a67565b92915050565b614a9a816148a9565b8114614aa557600080fd5b50565b600081359050614ab781614a91565b92915050565b600080600060608486031215614ad657614ad56147d0565b5b6000614ae486828701614854565b9350506020614af586828701614854565b9250506040614b0686828701614aa8565b9150509250925092565b60008060408385031215614b2757614b266147d0565b5b6000614b358582860161481e565b9250506020614b4685828601614aa8565b9150509250929050565b600080600060608486031215614b6957614b686147d0565b5b6000614b7786828701614854565b9350506020614b8886828701614854565b9250506040614b9986828701614854565b9150509250925092565b600060208284031215614bb957614bb86147d0565b5b6000614bc784828501614aa8565b91505092915050565b60008060408385031215614be757614be66147d0565b5b6000614bf58582860161481e565b9250506020614c068582860161481e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c46602083614720565b9150614c5182614c10565b602082019050919050565b60006020820190508181036000830152614c7581614c39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614cc357607f821691505b60208210811415614cd757614cd6614c7c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614d1782614833565b9150614d2283614833565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d5b57614d5a614cdd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614da082614833565b9150614dab83614833565b925082614dbb57614dba614d66565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614e22602f83614720565b9150614e2d82614dc6565b604082019050919050565b60006020820190508181036000830152614e5181614e15565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614eb4602883614720565b9150614ebf82614e58565b604082019050919050565b60006020820190508181036000830152614ee381614ea7565b9050919050565b6000614ef582614833565b9150614f0083614833565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f3557614f34614cdd565b5b828201905092915050565b600081905092915050565b50565b6000614f5b600083614f40565b9150614f6682614f4b565b600082019050919050565b6000614f7c82614f4e565b9150819050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614fe2603383614720565b9150614fed82614f86565b604082019050919050565b6000602082019050818103600083015261501181614fd5565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000615074603083614720565b915061507f82615018565b604082019050919050565b600060208201905081810360008301526150a381615067565b9050919050565b7f4f6e6c7920617574686f72697a65642077616c6c6574732063616e2063616c6c60008201527f20746869732066756e6374696f6e2e0000000000000000000000000000000000602082015250565b6000615106602f83614720565b9150615111826150aa565b604082019050919050565b60006020820190508181036000830152615135816150f9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000615198603983614720565b91506151a38261513c565b604082019050919050565b600060208201905081810360008301526151c78161518b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061522a602583614720565b9150615235826151ce565b604082019050919050565b600060208201905081810360008301526152598161521d565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006152bc602483614720565b91506152c782615260565b604082019050919050565b600060208201905081810360008301526152eb816152af565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061534e603583614720565b9150615359826152f2565b604082019050919050565b6000602082019050818103600083015261537d81615341565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006153e0603483614720565b91506153eb82615384565b604082019050919050565b6000602082019050818103600083015261540f816153d3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615472602683614720565b915061547d82615416565b604082019050919050565b600060208201905081810360008301526154a181615465565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006154de602083614720565b91506154e9826154a8565b602082019050919050565b6000602082019050818103600083015261550d816154d1565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000615570602a83614720565b915061557b82615514565b604082019050919050565b6000602082019050818103600083015261559f81615563565b9050919050565b6000815190506155b58161483d565b92915050565b6000602082840312156155d1576155d06147d0565b5b60006155df848285016155a6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615644602483614720565b915061564f826155e8565b604082019050919050565b6000602082019050818103600083015261567381615637565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006156d6602283614720565b91506156e18261567a565b604082019050919050565b60006020820190508181036000830152615705816156c9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615768602583614720565b91506157738261570c565b604082019050919050565b600060208201905081810360008301526157978161575b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006157fa602383614720565b91506158058261579e565b604082019050919050565b60006020820190508181036000830152615829816157ed565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615866601683614720565b915061587182615830565b602082019050919050565b6000602082019050818103600083015261589581615859565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061591e604983614720565b91506159298261589c565b606082019050919050565b6000602082019050818103600083015261594d81615911565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006159b0603583614720565b91506159bb82615954565b604082019050919050565b600060208201905081810360008301526159df816159a3565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615a1c601383614720565b9150615a27826159e6565b602082019050919050565b60006020820190508181036000830152615a4b81615a0f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615aae603683614720565b9150615ab982615a52565b604082019050919050565b60006020820190508181036000830152615add81615aa1565b9050919050565b6000615aef82614833565b9150615afa83614833565b925082821015615b0d57615b0c614cdd565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615b8581614807565b92915050565b600060208284031215615ba157615ba06147d0565b5b6000615baf84828501615b76565b91505092915050565b6000819050919050565b6000615bdd615bd8615bd384615bb8565b61490c565b614833565b9050919050565b615bed81615bc2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615c28816147f5565b82525050565b6000615c3a8383615c1f565b60208301905092915050565b6000602082019050919050565b6000615c5e82615bf3565b615c688185615bfe565b9350615c7383615c0f565b8060005b83811015615ca4578151615c8b8882615c2e565b9750615c9683615c46565b925050600181019050615c77565b5085935050505092915050565b600060a082019050615cc66000830188614986565b615cd36020830187615be4565b8181036040830152615ce58186615c53565b9050615cf46060830185614a30565b615d016080830184614986565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615d67602683614720565b9150615d7282615d0b565b604082019050919050565b60006020820190508181036000830152615d9681615d5a565b9050919050565b6000606082019050615db26000830186614986565b615dbf6020830185614986565b615dcc6040830184614986565b949350505050565b600060c082019050615de96000830189614a30565b615df66020830188614986565b615e036040830187615be4565b615e106060830186615be4565b615e1d6080830185614a30565b615e2a60a0830184614986565b979650505050505050565b600080600060608486031215615e4e57615e4d6147d0565b5b6000615e5c868287016155a6565b9350506020615e6d868287016155a6565b9250506040615e7e868287016155a6565b915050925092509256fea2646970667358221220bfaa13222d191140624719c431aea6b7f6a48adfa6ca390855972afc24a0058664736f6c634300080a0033

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

0000000000000000000000009a5b43fd8a503d2876aae9aa63300093c572a39a

-----Decoded View---------------
Arg [0] : _creatorWallet (address): 0x9A5B43FD8a503D2876aae9aA63300093c572a39A

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009a5b43fd8a503d2876aae9aa63300093c572a39a


Deployed Bytecode Sourcemap

15114:19458:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19549:153;;;;;;;;;;;;;:::i;:::-;;2791:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3713:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16611:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15193:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3118:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15916:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16394:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15503:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16476:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16436;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20492:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3890:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15296:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15586:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15546:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3015:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4390:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15251:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15797:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23231:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23030:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16283:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15877:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31631:303;;;;;;;;;;;;;:::i;:::-;;3234:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;897:103;;;;;;;;;;;;;:::i;:::-;;31942:555;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19710:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21039:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16168:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15466:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22787:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21322:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;674:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16318:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21214:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2901:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22279:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15970:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16516:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4613:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15638:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3369:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16242:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16683:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15837:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22084:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21699:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20775:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31350:273;;;;;;;;;;;;;:::i;:::-;;16086:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15676:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19987:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16134:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3554:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15718:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19844:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16205:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1008:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16356:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15758:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33301:1056;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19549:153;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19618:4:::1;19602:13;;:20;;;;;;;;;;;;;;;;;;19647:4;19633:11;;:18;;;;;;;;;;;;;;;;;;19679:15;19662:14;:32;;;;19549:153::o:0;2791:100::-;2845:13;2878:5;2871:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:100;:::o;3713:169::-;3796:4;3813:39;3822:12;:10;:12::i;:::-;3836:7;3845:6;3813:8;:39::i;:::-;3870:4;3863:11;;3713:169;;;;:::o;16611:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15193:51::-;;;:::o;3118:108::-;3179:7;3206:12;;3199:19;;3118:108;:::o;15916:47::-;;;;:::o;16394:33::-;;;;:::o;15503:35::-;;;;:::o;16476:33::-;;;;:::o;16436:::-;;;;:::o;20492:275::-;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20629:4:::1;20621;20616:1;20600:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20599:26;;;;:::i;:::-;20598:35;;;;:::i;:::-;20588:6;:45;;20566:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;20752:6;20742;:17;;;;:::i;:::-;20719:20;:40;;;;20492:275:::0;:::o;3890:492::-;4030:4;4047:36;4057:6;4065:9;4076:6;4047:9;:36::i;:::-;4096:24;4123:11;:19;4135:6;4123:19;;;;;;;;;;;;;;;:33;4143:12;:10;:12::i;:::-;4123:33;;;;;;;;;;;;;;;;4096:60;;4195:6;4175:16;:26;;4167:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4282:57;4291:6;4299:12;:10;:12::i;:::-;4332:6;4313:16;:25;4282:8;:57::i;:::-;4370:4;4363:11;;;3890:492;;;;;:::o;15296:53::-;15342:6;15296:53;:::o;15586:45::-;;;;:::o;15546:33::-;;;;;;;;;;;;;:::o;3015:93::-;3073:5;3098:2;3091:9;;3015:93;:::o;4390:215::-;4478:4;4495:80;4504:12;:10;:12::i;:::-;4518:7;4564:10;4527:11;:25;4539:12;:10;:12::i;:::-;4527:25;;;;;;;;;;;;;;;:34;4553:7;4527:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4495:8;:80::i;:::-;4593:4;4586:11;;4390:215;;;;:::o;15251:38::-;;;:::o;15797:33::-;;;;;;;;;;;;;:::o;23231:126::-;23297:4;23321:19;:28;23341:7;23321:28;;;;;;;;;;;;;;;;;;;;;;;;;23314:35;;23231:126;;;:::o;23030:193::-;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23157:17:::1;;;;;;;;;;;23121:54;;23146:9;23121:54;;;;;;;;;;;;23206:9;23186:17;;:29;;;;;;;;;;;;;;;;;;23030:193:::0;:::o;16283:28::-;;;;:::o;15877:30::-;;;;;;;;;;;;;:::o;31631:303::-;31711:17;;;;;;;;;;;31695:33;;:12;:10;:12::i;:::-;:33;;;:85;;;;31765:15;;;;;;;;;;;31749:31;;:12;:10;:12::i;:::-;:31;;;31695:85;31673:118;;;;;;31802:12;31847:15;;;;;;;;;;;31839:29;;31890:21;31839:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31825:101;;;;;31662:272;31631:303::o;3234:127::-;3308:7;3335:9;:18;3345:7;3335:18;;;;;;;;;;;;;;;;3328:25;;3234:127;;;:::o;897:103::-;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;962:30:::1;989:1;962:18;:30::i;:::-;897:103::o:0;31942:555::-;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32144:3:::1;32121:19;:26;;32099:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;32271:4;32259:8;:16;;:33;;;;;32291:1;32279:8;:13;;32259:33;32237:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;32397:19;32379:15;:37;;;;32446:8;32427:16;:27;;;;32481:8;32465:13;;:24;;;;;;;;;;;;;;;;;;31942:555:::0;;;:::o;19710:126::-;19767:4;34436:7;:5;:7::i;:::-;34422:21;;:10;:21;;;:52;;;;34461:13;;;;;;;;;;;34447:27;;:10;:27;;;34422:52;34400:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;19801:5:::1;19784:14;;:22;;;;;;;;;;;;;;;;;;19824:4;19817:11;;19710:126:::0;:::o;21039:167::-;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21194:4:::1;21152:31;:39;21184:6;21152:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;21039:167:::0;;:::o;16168:30::-;;;;:::o;15466:28::-;;;;;;;;;;;;;:::o;22787:235::-;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22951:15:::1;;;;;;;;;;;22908:59;;22931:18;22908:59;;;;;;;;;;;;22996:18;22978:15;;:36;;;;;;;;;;;;;;;;;;22787:235:::0;:::o;21322:369::-;34436:7;:5;:7::i;:::-;34422:21;;:10;:21;;;:52;;;;34461:13;;;;;;;;;;;34447:27;;:10;:27;;;34422:52;34400:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;21503:13:::1;21485:15;:31;;;;21545:13;21527:15;:31;;;;21589:15;21569:17;:35;;;;21666:17;;21648:15;;21630;;:33;;;;:::i;:::-;:53;;;;:::i;:::-;21615:12;:68;;;;21322:369:::0;;;:::o;674:87::-;720:7;747:6;;;;;;;;;;;740:13;;674:87;:::o;16318:31::-;;;;:::o;21214:100::-;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21299:7:::1;21285:11;;:21;;;;;;;;;;;;;;;;;;21214:100:::0;:::o;2901:104::-;2957:13;2990:7;2983:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2901:104;:::o;22279:304::-;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22423:13:::1;22415:21;;:4;:21;;;;22393:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;22534:41;22563:4;22569:5;22534:28;:41::i;:::-;22279:304:::0;;:::o;15970:35::-;;;;:::o;16516:27::-;;;;:::o;4613:413::-;4706:4;4723:24;4750:11;:25;4762:12;:10;:12::i;:::-;4750:25;;;;;;;;;;;;;;;:34;4776:7;4750:34;;;;;;;;;;;;;;;;4723:61;;4823:15;4803:16;:35;;4795:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4916:67;4925:12;:10;:12::i;:::-;4939:7;4967:15;4948:16;:34;4916:8;:67::i;:::-;5014:4;5007:11;;;4613:413;;;;:::o;15638:29::-;;;;:::o;3369:175::-;3455:4;3472:42;3482:12;:10;:12::i;:::-;3496:9;3507:6;3472:9;:42::i;:::-;3532:4;3525:11;;3369:175;;;;:::o;16242:32::-;;;;:::o;16683:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15837:33::-;;;;;;;;;;;;;:::o;22084:187::-;34436:7;:5;:7::i;:::-;34422:21;;:10;:21;;;:52;;;;34461:13;;;;;;;;;;;34447:27;;:10;:27;;;34422:52;34400:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;22205:8:::1;22174:19;:28;22194:7;22174:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22245:7;22229:34;;;22254:8;22229:34;;;;;;:::i;:::-;;;;;;;;22084:187:::0;;:::o;21699:377::-;34436:7;:5;:7::i;:::-;34422:21;;:10;:21;;;:52;;;;34461:13;;;;;;;;;;;34447:27;;:10;:27;;;34422:52;34400:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;21882:13:::1;21863:16;:32;;;;21925:13;21906:16;:32;;;;21970:15;21949:18;:36;;;;22050:18;;22031:16;;22012;;:35;;;;:::i;:::-;:56;;;;:::i;:::-;21996:13;:72;;;;21699:377:::0;;;:::o;20775:256::-;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20915:4:::1;20907;20902:1;20886:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20885:26;;;;:::i;:::-;20884:35;;;;:::i;:::-;20874:6;:45;;20852:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;21016:6;21006;:17;;;;:::i;:::-;20994:9;:29;;;;20775:256:::0;:::o;31350:273::-;31430:17;;;;;;;;;;;31414:33;;:12;:10;:12::i;:::-;:33;;;:85;;;;31484:15;;;;;;;;;;;31468:31;;:12;:10;:12::i;:::-;:31;;;31414:85;31392:118;;;;;;31521:23;31547:24;31565:4;31547:9;:24::i;:::-;31521:50;;31582:33;31599:15;31582:16;:33::i;:::-;31381:242;31350:273::o;16086:39::-;;;;;;;;;;;;;:::o;15676:35::-;;;;:::o;19987:497::-;20095:4;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20174:6:::1;20169:1;20153:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20152:28;;;;:::i;:::-;20139:9;:41;;20117:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;20329:4;20324:1;20308:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20307:26;;;;:::i;:::-;20294:9;:39;;20272:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;20445:9;20424:18;:30;;;;20472:4;20465:11;;19987:497:::0;;;:::o;16134:27::-;;;;:::o;3554:151::-;3643:7;3670:11;:18;3682:5;3670:18;;;;;;;;;;;;;;;:27;3689:7;3670:27;;;;;;;;;;;;;;;;3663:34;;3554:151;;;;:::o;15718:33::-;;;;:::o;19844:135::-;19904:4;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19944:5:::1;19921:20;;:28;;;;;;;;;;;;;;;;;;19967:4;19960:11;;19844:135:::0;:::o;16205:30::-;;;;:::o;1008:201::-;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1117:1:::1;1097:22;;:8;:22;;;;1089:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1173:28;1192:8;1173:18;:28::i;:::-;1008:201:::0;:::o;16356:31::-;;;;:::o;15758:24::-;;;;:::o;33301:1056::-;33412:4;820:12;:10;:12::i;:::-;809:23;;:7;:5;:7::i;:::-;:23;;;801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33497:19:::1;;33474:20;;:42;;;;:::i;:::-;33456:15;:60;33434:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;33606:4;33595:7;:15;;33587:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;33691:15;33668:20;:38;;;;33761:28;33792:4;:14;;;33807:13;33792:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33761:60;;33871:20;33894:44;33932:5;33894:33;33919:7;33894:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;33871:67;;34058:1;34043:12;:16;34039:110;;;34076:61;34092:13;34115:6;34124:12;34076:15;:61::i;:::-;34039:110;34224:19;34261:13;34224:51;;34286:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34313:14;;;;;;;;;;34345:4;34338:11;;;;;33301:1056:::0;;;:::o;220:98::-;273:7;300:10;293:17;;220:98;:::o;6781:380::-;6934:1;6917:19;;:5;:19;;;;6909:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7015:1;6996:21;;:7;:21;;;;6988:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7099:6;7069:11;:18;7081:5;7069:18;;;;;;;;;;;;;;;:27;7088:7;7069:27;;;;;;;;;;;;;;;:36;;;;7137:7;7121:32;;7130:5;7121:32;;;7146:6;7121:32;;;;;;:::i;:::-;;;;;;;;6781:380;;;:::o;23415:5027::-;23563:1;23547:18;;:4;:18;;;;23539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23640:1;23626:16;;:2;:16;;;;23618:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23709:1;23699:6;:11;23695:93;;;23727:28;23743:4;23749:2;23753:1;23727:15;:28::i;:::-;23770:7;;23695:93;23804:14;;;;;;;;;;;23800:2487;;;23865:7;:5;:7::i;:::-;23857:15;;:4;:15;;;;:49;;;;;23899:7;:5;:7::i;:::-;23893:13;;:2;:13;;;;23857:49;:86;;;;;23941:1;23927:16;;:2;:16;;;;23857:86;:128;;;;;23978:6;23964:21;;:2;:21;;;;23857:128;:158;;;;;24007:8;;;;;;;;;;;24006:9;23857:158;23835:2441;;;24055:13;;;;;;;;;;;24050:223;;24127:19;:25;24147:4;24127:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24156:19;:23;24176:2;24156:23;;;;;;;;;;;;;;;;;;;;;;;;;24127:52;24093:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;24050:223;24429:20;;;;;;;;;;;24425:641;;;24510:7;:5;:7::i;:::-;24504:13;;:2;:13;;;;:72;;;;;24560:15;24546:30;;:2;:30;;;;24504:72;:129;;;;;24619:13;24605:28;;:2;:28;;;;24504:129;24474:573;;;24797:12;24722:28;:39;24751:9;24722:39;;;;;;;;;;;;;;;;:87;24684:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;25011:12;24969:28;:39;24998:9;24969:39;;;;;;;;;;;;;;;:54;;;;24474:573;24425:641;25140:25;:31;25166:4;25140:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;25197:31;:35;25229:2;25197:35;;;;;;;;;;;;;;;;;;;;;;;;;25196:36;25140:92;25114:1147;;;25319:20;;25309:6;:30;;25275:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;25527:9;;25510:13;25520:2;25510:9;:13::i;:::-;25501:6;:22;;;;:::i;:::-;:35;;25467:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;25114:1147;;;25705:25;:29;25731:2;25705:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;25760:31;:37;25792:4;25760:37;;;;;;;;;;;;;;;;;;;;;;;;;25759:38;25705:92;25679:582;;;25884:20;;25874:6;:30;;25840:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;25679:582;;;26041:31;:35;26073:2;26041:35;;;;;;;;;;;;;;;;;;;;;;;;;26036:225;;26161:9;;26144:13;26154:2;26144:9;:13::i;:::-;26135:6;:22;;;;:::i;:::-;:35;;26101:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26036:225;25679:582;25114:1147;23835:2441;23800:2487;26299:28;26330:24;26348:4;26330:9;:24::i;:::-;26299:55;;26367:12;26406:18;;26382:20;:42;;26367:57;;26455:7;:35;;;;;26479:11;;;;;;;;;;;26455:35;:61;;;;;26508:8;;;;;;;;;;;26507:9;26455:61;:110;;;;;26534:25;:31;26560:4;26534:31;;;;;;;;;;;;;;;;;;;;;;;;;26533:32;26455:110;:153;;;;;26583:19;:25;26603:4;26583:25;;;;;;;;;;;;;;;;;;;;;;;;;26582:26;26455:153;:194;;;;;26626:19;:23;26646:2;26626:23;;;;;;;;;;;;;;;;;;;;;;;;;26625:24;26455:194;26437:326;;;26687:4;26676:8;;:15;;;;;;;;;;;;;;;;;;26708:10;:8;:10::i;:::-;26746:5;26735:8;;:16;;;;;;;;;;;;;;;;;;26437:326;26794:8;;;;;;;;;;;26793:9;:55;;;;;26819:25;:29;26845:2;26819:29;;;;;;;;;;;;;;;;;;;;;;;;;26793:55;:85;;;;;26865:13;;;;;;;;;;;26793:85;:153;;;;;26931:15;;26914:14;;:32;;;;:::i;:::-;26895:15;:51;;26793:153;:196;;;;;26964:19;:25;26984:4;26964:25;;;;;;;;;;;;;;;;;;;;;;;;;26963:26;26793:196;26775:282;;;27016:29;:27;:29::i;:::-;;26775:282;27069:12;27085:8;;;;;;;;;;;27084:9;27069:24;;27195:19;:25;27215:4;27195:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27224:19;:23;27244:2;27224:23;;;;;;;;;;;;;;;;;;;;;;;;;27195:52;27191:100;;;27274:5;27264:15;;27191:100;27303:12;27408:7;27404:985;;;27460:25;:29;27486:2;27460:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;27509:1;27493:13;;:17;27460:50;27456:784;;;27538:34;27568:3;27538:25;27549:13;;27538:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;27531:41;;27641:13;;27621:16;;27614:4;:23;;;;:::i;:::-;27613:41;;;;:::i;:::-;27591:18;;:63;;;;;;;:::i;:::-;;;;;;;;27719:13;;27697:18;;27690:4;:25;;;;:::i;:::-;27689:43;;;;:::i;:::-;27673:12;;:59;;;;;;;:::i;:::-;;;;;;;;27801:13;;27781:16;;27774:4;:23;;;;:::i;:::-;27773:41;;;;:::i;:::-;27751:18;;:63;;;;;;;:::i;:::-;;;;;;;;27456:784;;;27876:25;:31;27902:4;27876:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;27926:1;27911:12;;:16;27876:51;27872:368;;;27955:33;27984:3;27955:24;27966:12;;27955:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;27948:40;;28056:12;;28037:15;;28030:4;:22;;;;:::i;:::-;28029:39;;;;:::i;:::-;28007:18;;:61;;;;;;;:::i;:::-;;;;;;;;28132:12;;28111:17;;28104:4;:24;;;;:::i;:::-;28103:41;;;;:::i;:::-;28087:12;;:57;;;;;;;:::i;:::-;;;;;;;;28212:12;;28193:15;;28186:4;:22;;;;:::i;:::-;28185:39;;;;:::i;:::-;28163:18;;:61;;;;;;;:::i;:::-;;;;;;;;27872:368;27456:784;28267:1;28260:4;:8;28256:91;;;28289:42;28305:4;28319;28326;28289:15;:42::i;:::-;28256:91;28373:4;28363:14;;;;;:::i;:::-;;;27404:985;28401:33;28417:4;28423:2;28427:6;28401:15;:33::i;:::-;23528:4914;;;;23415:5027;;;;:::o;1219:191::-;1293:16;1312:6;;;;;;;;;;;1293:25;;1338:8;1329:6;;:17;;;;;;;;;;;;;;;;;;1393:8;1362:40;;1383:8;1362:40;;;;;;;;;;;;1282:128;1219:191;:::o;22591:188::-;22708:5;22674:25;:31;22700:4;22674:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22765:5;22731:40;;22759:4;22731:40;;;;;;;;;;;;22591:188;;:::o;28450:589::-;28576:21;28614:1;28600:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28576:40;;28645:4;28627;28632:1;28627:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28671:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28661:4;28666:1;28661:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28706:62;28723:4;28738:15;28756:11;28706:8;:62::i;:::-;28807:15;:66;;;28888:11;28914:1;28958:4;28985;29005:15;28807:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28505:534;28450:589;:::o;8791:98::-;8849:7;8880:1;8876;:5;;;;:::i;:::-;8869:12;;8791:98;;;;:::o;8897:::-;8955:7;8986:1;8982;:5;;;;:::i;:::-;8975:12;;8897:98;;;;:::o;5034:733::-;5192:1;5174:20;;:6;:20;;;;5166:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5276:1;5255:23;;:9;:23;;;;5247:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5331:47;5352:6;5360:9;5371:6;5331:20;:47::i;:::-;5391:21;5415:9;:17;5425:6;5415:17;;;;;;;;;;;;;;;;5391:41;;5468:6;5451:13;:23;;5443:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5589:6;5573:13;:22;5553:9;:17;5563:6;5553:17;;;;;;;;;;;;;;;:42;;;;5641:6;5617:9;:20;5627:9;5617:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5682:9;5665:35;;5674:6;5665:35;;;5693:6;5665:35;;;;;;:::i;:::-;;;;;;;;5713:46;5733:6;5741:9;5752:6;5713:19;:46::i;:::-;5155:612;5034:733;;;:::o;29572:1764::-;29611:23;29637:24;29655:4;29637:9;:24::i;:::-;29611:50;;29672:25;29768:12;;29734:18;;29700;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;29672:108;;29791:12;29839:1;29820:15;:20;:46;;;;29865:1;29844:17;:22;29820:46;29816:85;;;29883:7;;;;;29816:85;29956:2;29935:18;;:23;;;;:::i;:::-;29917:15;:41;29913:115;;;30014:2;29993:18;;:23;;;;:::i;:::-;29975:41;;29913:115;30089:23;30202:1;30169:17;30134:18;;30116:15;:36;;;;:::i;:::-;30115:71;;;;:::i;:::-;:88;;;;:::i;:::-;30089:114;;30214:26;30243:36;30263:15;30243;:19;;:36;;;;:::i;:::-;30214:65;;30292:25;30320:21;30292:49;;30354:36;30371:18;30354:16;:36::i;:::-;30403:18;30424:44;30450:17;30424:21;:25;;:44;;;;:::i;:::-;30403:65;;30481:23;30507:81;30560:17;30507:34;30522:18;;30507:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;30481:107;;30599:17;30619:51;30652:17;30619:28;30634:12;;30619:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;30599:71;;30683:23;30740:9;30722:15;30709:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;30683:66;;30783:1;30762:18;:22;;;;30816:1;30795:18;:22;;;;30843:1;30828:12;:16;;;;30879:17;;;;;;;;;;;30871:31;;30910:9;30871:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30857:67;;;;;30959:1;30941:15;:19;:42;;;;;30982:1;30964:15;:19;30941:42;30937:278;;;31000:46;31013:15;31030;31000:12;:46::i;:::-;31066:137;31099:18;31136:15;31170:18;;31066:137;;;;;;;;:::i;:::-;;;;;;;;30937:278;31249:15;;;;;;;;;;;31241:29;;31292:21;31241:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31227:101;;;;;29600:1736;;;;;;;;;;29572:1764;:::o;32505:788::-;32562:4;32596:15;32579:14;:32;;;;32666:28;32697:4;:14;;;32712:13;32697:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32666:60;;32776:20;32799:77;32860:5;32799:42;32824:16;;32799:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;32776:100;;32996:1;32981:12;:16;32977:110;;;33014:61;33030:13;33053:6;33062:12;33014:15;:61::i;:::-;32977:110;33162:19;33199:13;33162:51;;33224:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33251:12;;;;;;;;;;33281:4;33274:11;;;;;32505:788;:::o;7169:125::-;;;;:::o;7302:124::-;;;;:::o;8685:98::-;8743:7;8774:1;8770;:5;;;;:::i;:::-;8763:12;;8685:98;;;;:::o;29047:517::-;29195:62;29212:4;29227:15;29245:11;29195:8;:62::i;:::-;29300:15;:31;;;29339:9;29372:4;29392:11;29418:1;29461;15342:6;29530:15;29300:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29047:517;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:613::-;7236:6;7244;7252;7301:2;7289:9;7280:7;7276:23;7272:32;7269:119;;;7307:79;;:::i;:::-;7269:119;7427:1;7452:53;7497:7;7488:6;7477:9;7473:22;7452:53;:::i;:::-;7442:63;;7398:117;7554:2;7580:53;7625:7;7616:6;7605:9;7601:22;7580:53;:::i;:::-;7570:63;;7525:118;7682:2;7708:50;7750:7;7741:6;7730:9;7726:22;7708:50;:::i;:::-;7698:60;;7653:115;7162:613;;;;;:::o;7781:468::-;7846:6;7854;7903:2;7891:9;7882:7;7878:23;7874:32;7871:119;;;7909:79;;:::i;:::-;7871:119;8029:1;8054:53;8099:7;8090:6;8079:9;8075:22;8054:53;:::i;:::-;8044:63;;8000:117;8156:2;8182:50;8224:7;8215:6;8204:9;8200:22;8182:50;:::i;:::-;8172:60;;8127:115;7781:468;;;;;:::o;8255:619::-;8332:6;8340;8348;8397:2;8385:9;8376:7;8372:23;8368:32;8365:119;;;8403:79;;:::i;:::-;8365:119;8523:1;8548:53;8593:7;8584:6;8573:9;8569:22;8548:53;:::i;:::-;8538:63;;8494:117;8650:2;8676:53;8721:7;8712:6;8701:9;8697:22;8676:53;:::i;:::-;8666:63;;8621:118;8778:2;8804:53;8849:7;8840:6;8829:9;8825:22;8804:53;:::i;:::-;8794:63;;8749:118;8255:619;;;;;:::o;8880:323::-;8936:6;8985:2;8973:9;8964:7;8960:23;8956:32;8953:119;;;8991:79;;:::i;:::-;8953:119;9111:1;9136:50;9178:7;9169:6;9158:9;9154:22;9136:50;:::i;:::-;9126:60;;9082:114;8880:323;;;;:::o;9209:474::-;9277:6;9285;9334:2;9322:9;9313:7;9309:23;9305:32;9302:119;;;9340:79;;:::i;:::-;9302:119;9460:1;9485:53;9530:7;9521:6;9510:9;9506:22;9485:53;:::i;:::-;9475:63;;9431:117;9587:2;9613:53;9658:7;9649:6;9638:9;9634:22;9613:53;:::i;:::-;9603:63;;9558:118;9209:474;;;;;:::o;9689:182::-;9829:34;9825:1;9817:6;9813:14;9806:58;9689:182;:::o;9877:366::-;10019:3;10040:67;10104:2;10099:3;10040:67;:::i;:::-;10033:74;;10116:93;10205:3;10116:93;:::i;:::-;10234:2;10229:3;10225:12;10218:19;;9877:366;;;:::o;10249:419::-;10415:4;10453:2;10442:9;10438:18;10430:26;;10502:9;10496:4;10492:20;10488:1;10477:9;10473:17;10466:47;10530:131;10656:4;10530:131;:::i;:::-;10522:139;;10249:419;;;:::o;10674:180::-;10722:77;10719:1;10712:88;10819:4;10816:1;10809:15;10843:4;10840:1;10833:15;10860:320;10904:6;10941:1;10935:4;10931:12;10921:22;;10988:1;10982:4;10978:12;11009:18;10999:81;;11065:4;11057:6;11053:17;11043:27;;10999:81;11127:2;11119:6;11116:14;11096:18;11093:38;11090:84;;;11146:18;;:::i;:::-;11090:84;10911:269;10860:320;;;:::o;11186:180::-;11234:77;11231:1;11224:88;11331:4;11328:1;11321:15;11355:4;11352:1;11345:15;11372:348;11412:7;11435:20;11453:1;11435:20;:::i;:::-;11430:25;;11469:20;11487:1;11469:20;:::i;:::-;11464:25;;11657:1;11589:66;11585:74;11582:1;11579:81;11574:1;11567:9;11560:17;11556:105;11553:131;;;11664:18;;:::i;:::-;11553:131;11712:1;11709;11705:9;11694:20;;11372:348;;;;:::o;11726:180::-;11774:77;11771:1;11764:88;11871:4;11868:1;11861:15;11895:4;11892:1;11885:15;11912:185;11952:1;11969:20;11987:1;11969:20;:::i;:::-;11964:25;;12003:20;12021:1;12003:20;:::i;:::-;11998:25;;12042:1;12032:35;;12047:18;;:::i;:::-;12032:35;12089:1;12086;12082:9;12077:14;;11912:185;;;;:::o;12103:234::-;12243:34;12239:1;12231:6;12227:14;12220:58;12312:17;12307:2;12299:6;12295:15;12288:42;12103:234;:::o;12343:366::-;12485:3;12506:67;12570:2;12565:3;12506:67;:::i;:::-;12499:74;;12582:93;12671:3;12582:93;:::i;:::-;12700:2;12695:3;12691:12;12684:19;;12343:366;;;:::o;12715:419::-;12881:4;12919:2;12908:9;12904:18;12896:26;;12968:9;12962:4;12958:20;12954:1;12943:9;12939:17;12932:47;12996:131;13122:4;12996:131;:::i;:::-;12988:139;;12715:419;;;:::o;13140:227::-;13280:34;13276:1;13268:6;13264:14;13257:58;13349:10;13344:2;13336:6;13332:15;13325:35;13140:227;:::o;13373:366::-;13515:3;13536:67;13600:2;13595:3;13536:67;:::i;:::-;13529:74;;13612:93;13701:3;13612:93;:::i;:::-;13730:2;13725:3;13721:12;13714:19;;13373:366;;;:::o;13745:419::-;13911:4;13949:2;13938:9;13934:18;13926:26;;13998:9;13992:4;13988:20;13984:1;13973:9;13969:17;13962:47;14026:131;14152:4;14026:131;:::i;:::-;14018:139;;13745:419;;;:::o;14170:305::-;14210:3;14229:20;14247:1;14229:20;:::i;:::-;14224:25;;14263:20;14281:1;14263:20;:::i;:::-;14258:25;;14417:1;14349:66;14345:74;14342:1;14339:81;14336:107;;;14423:18;;:::i;:::-;14336:107;14467:1;14464;14460:9;14453:16;;14170:305;;;;:::o;14481:147::-;14582:11;14619:3;14604:18;;14481:147;;;;:::o;14634:114::-;;:::o;14754:398::-;14913:3;14934:83;15015:1;15010:3;14934:83;:::i;:::-;14927:90;;15026:93;15115:3;15026:93;:::i;:::-;15144:1;15139:3;15135:11;15128:18;;14754:398;;;:::o;15158:379::-;15342:3;15364:147;15507:3;15364:147;:::i;:::-;15357:154;;15528:3;15521:10;;15158:379;;;:::o;15543:238::-;15683:34;15679:1;15671:6;15667:14;15660:58;15752:21;15747:2;15739:6;15735:15;15728:46;15543:238;:::o;15787:366::-;15929:3;15950:67;16014:2;16009:3;15950:67;:::i;:::-;15943:74;;16026:93;16115:3;16026:93;:::i;:::-;16144:2;16139:3;16135:12;16128:19;;15787:366;;;:::o;16159:419::-;16325:4;16363:2;16352:9;16348:18;16340:26;;16412:9;16406:4;16402:20;16398:1;16387:9;16383:17;16376:47;16440:131;16566:4;16440:131;:::i;:::-;16432:139;;16159:419;;;:::o;16584:235::-;16724:34;16720:1;16712:6;16708:14;16701:58;16793:18;16788:2;16780:6;16776:15;16769:43;16584:235;:::o;16825:366::-;16967:3;16988:67;17052:2;17047:3;16988:67;:::i;:::-;16981:74;;17064:93;17153:3;17064:93;:::i;:::-;17182:2;17177:3;17173:12;17166:19;;16825:366;;;:::o;17197:419::-;17363:4;17401:2;17390:9;17386:18;17378:26;;17450:9;17444:4;17440:20;17436:1;17425:9;17421:17;17414:47;17478:131;17604:4;17478:131;:::i;:::-;17470:139;;17197:419;;;:::o;17622:234::-;17762:34;17758:1;17750:6;17746:14;17739:58;17831:17;17826:2;17818:6;17814:15;17807:42;17622:234;:::o;17862:366::-;18004:3;18025:67;18089:2;18084:3;18025:67;:::i;:::-;18018:74;;18101:93;18190:3;18101:93;:::i;:::-;18219:2;18214:3;18210:12;18203:19;;17862:366;;;:::o;18234:419::-;18400:4;18438:2;18427:9;18423:18;18415:26;;18487:9;18481:4;18477:20;18473:1;18462:9;18458:17;18451:47;18515:131;18641:4;18515:131;:::i;:::-;18507:139;;18234:419;;;:::o;18659:244::-;18799:34;18795:1;18787:6;18783:14;18776:58;18868:27;18863:2;18855:6;18851:15;18844:52;18659:244;:::o;18909:366::-;19051:3;19072:67;19136:2;19131:3;19072:67;:::i;:::-;19065:74;;19148:93;19237:3;19148:93;:::i;:::-;19266:2;19261:3;19257:12;19250:19;;18909:366;;;:::o;19281:419::-;19447:4;19485:2;19474:9;19470:18;19462:26;;19534:9;19528:4;19524:20;19520:1;19509:9;19505:17;19498:47;19562:131;19688:4;19562:131;:::i;:::-;19554:139;;19281:419;;;:::o;19706:224::-;19846:34;19842:1;19834:6;19830:14;19823:58;19915:7;19910:2;19902:6;19898:15;19891:32;19706:224;:::o;19936:366::-;20078:3;20099:67;20163:2;20158:3;20099:67;:::i;:::-;20092:74;;20175:93;20264:3;20175:93;:::i;:::-;20293:2;20288:3;20284:12;20277:19;;19936:366;;;:::o;20308:419::-;20474:4;20512:2;20501:9;20497:18;20489:26;;20561:9;20555:4;20551:20;20547:1;20536:9;20532:17;20525:47;20589:131;20715:4;20589:131;:::i;:::-;20581:139;;20308:419;;;:::o;20733:223::-;20873:34;20869:1;20861:6;20857:14;20850:58;20942:6;20937:2;20929:6;20925:15;20918:31;20733:223;:::o;20962:366::-;21104:3;21125:67;21189:2;21184:3;21125:67;:::i;:::-;21118:74;;21201:93;21290:3;21201:93;:::i;:::-;21319:2;21314:3;21310:12;21303:19;;20962:366;;;:::o;21334:419::-;21500:4;21538:2;21527:9;21523:18;21515:26;;21587:9;21581:4;21577:20;21573:1;21562:9;21558:17;21551:47;21615:131;21741:4;21615:131;:::i;:::-;21607:139;;21334:419;;;:::o;21759:240::-;21899:34;21895:1;21887:6;21883:14;21876:58;21968:23;21963:2;21955:6;21951:15;21944:48;21759:240;:::o;22005:366::-;22147:3;22168:67;22232:2;22227:3;22168:67;:::i;:::-;22161:74;;22244:93;22333:3;22244:93;:::i;:::-;22362:2;22357:3;22353:12;22346:19;;22005:366;;;:::o;22377:419::-;22543:4;22581:2;22570:9;22566:18;22558:26;;22630:9;22624:4;22620:20;22616:1;22605:9;22601:17;22594:47;22658:131;22784:4;22658:131;:::i;:::-;22650:139;;22377:419;;;:::o;22802:239::-;22942:34;22938:1;22930:6;22926:14;22919:58;23011:22;23006:2;22998:6;22994:15;22987:47;22802:239;:::o;23047:366::-;23189:3;23210:67;23274:2;23269:3;23210:67;:::i;:::-;23203:74;;23286:93;23375:3;23286:93;:::i;:::-;23404:2;23399:3;23395:12;23388:19;;23047:366;;;:::o;23419:419::-;23585:4;23623:2;23612:9;23608:18;23600:26;;23672:9;23666:4;23662:20;23658:1;23647:9;23643:17;23636:47;23700:131;23826:4;23700:131;:::i;:::-;23692:139;;23419:419;;;:::o;23844:225::-;23984:34;23980:1;23972:6;23968:14;23961:58;24053:8;24048:2;24040:6;24036:15;24029:33;23844:225;:::o;24075:366::-;24217:3;24238:67;24302:2;24297:3;24238:67;:::i;:::-;24231:74;;24314:93;24403:3;24314:93;:::i;:::-;24432:2;24427:3;24423:12;24416:19;;24075:366;;;:::o;24447:419::-;24613:4;24651:2;24640:9;24636:18;24628:26;;24700:9;24694:4;24690:20;24686:1;24675:9;24671:17;24664:47;24728:131;24854:4;24728:131;:::i;:::-;24720:139;;24447:419;;;:::o;24872:182::-;25012:34;25008:1;25000:6;24996:14;24989:58;24872:182;:::o;25060:366::-;25202:3;25223:67;25287:2;25282:3;25223:67;:::i;:::-;25216:74;;25299:93;25388:3;25299:93;:::i;:::-;25417:2;25412:3;25408:12;25401:19;;25060:366;;;:::o;25432:419::-;25598:4;25636:2;25625:9;25621:18;25613:26;;25685:9;25679:4;25675:20;25671:1;25660:9;25656:17;25649:47;25713:131;25839:4;25713:131;:::i;:::-;25705:139;;25432:419;;;:::o;25857:229::-;25997:34;25993:1;25985:6;25981:14;25974:58;26066:12;26061:2;26053:6;26049:15;26042:37;25857:229;:::o;26092:366::-;26234:3;26255:67;26319:2;26314:3;26255:67;:::i;:::-;26248:74;;26331:93;26420:3;26331:93;:::i;:::-;26449:2;26444:3;26440:12;26433:19;;26092:366;;;:::o;26464:419::-;26630:4;26668:2;26657:9;26653:18;26645:26;;26717:9;26711:4;26707:20;26703:1;26692:9;26688:17;26681:47;26745:131;26871:4;26745:131;:::i;:::-;26737:139;;26464:419;;;:::o;26889:143::-;26946:5;26977:6;26971:13;26962:22;;26993:33;27020:5;26993:33;:::i;:::-;26889:143;;;;:::o;27038:351::-;27108:6;27157:2;27145:9;27136:7;27132:23;27128:32;27125:119;;;27163:79;;:::i;:::-;27125:119;27283:1;27308:64;27364:7;27355:6;27344:9;27340:22;27308:64;:::i;:::-;27298:74;;27254:128;27038:351;;;;:::o;27395:223::-;27535:34;27531:1;27523:6;27519:14;27512:58;27604:6;27599:2;27591:6;27587:15;27580:31;27395:223;:::o;27624:366::-;27766:3;27787:67;27851:2;27846:3;27787:67;:::i;:::-;27780:74;;27863:93;27952:3;27863:93;:::i;:::-;27981:2;27976:3;27972:12;27965:19;;27624:366;;;:::o;27996:419::-;28162:4;28200:2;28189:9;28185:18;28177:26;;28249:9;28243:4;28239:20;28235:1;28224:9;28220:17;28213:47;28277:131;28403:4;28277:131;:::i;:::-;28269:139;;27996:419;;;:::o;28421:221::-;28561:34;28557:1;28549:6;28545:14;28538:58;28630:4;28625:2;28617:6;28613:15;28606:29;28421:221;:::o;28648:366::-;28790:3;28811:67;28875:2;28870:3;28811:67;:::i;:::-;28804:74;;28887:93;28976:3;28887:93;:::i;:::-;29005:2;29000:3;28996:12;28989:19;;28648:366;;;:::o;29020:419::-;29186:4;29224:2;29213:9;29209:18;29201:26;;29273:9;29267:4;29263:20;29259:1;29248:9;29244:17;29237:47;29301:131;29427:4;29301:131;:::i;:::-;29293:139;;29020:419;;;:::o;29445:224::-;29585:34;29581:1;29573:6;29569:14;29562:58;29654:7;29649:2;29641:6;29637:15;29630:32;29445:224;:::o;29675:366::-;29817:3;29838:67;29902:2;29897:3;29838:67;:::i;:::-;29831:74;;29914:93;30003:3;29914:93;:::i;:::-;30032:2;30027:3;30023:12;30016:19;;29675:366;;;:::o;30047:419::-;30213:4;30251:2;30240:9;30236:18;30228:26;;30300:9;30294:4;30290:20;30286:1;30275:9;30271:17;30264:47;30328:131;30454:4;30328:131;:::i;:::-;30320:139;;30047:419;;;:::o;30472:222::-;30612:34;30608:1;30600:6;30596:14;30589:58;30681:5;30676:2;30668:6;30664:15;30657:30;30472:222;:::o;30700:366::-;30842:3;30863:67;30927:2;30922:3;30863:67;:::i;:::-;30856:74;;30939:93;31028:3;30939:93;:::i;:::-;31057:2;31052:3;31048:12;31041:19;;30700:366;;;:::o;31072:419::-;31238:4;31276:2;31265:9;31261:18;31253:26;;31325:9;31319:4;31315:20;31311:1;31300:9;31296:17;31289:47;31353:131;31479:4;31353:131;:::i;:::-;31345:139;;31072:419;;;:::o;31497:172::-;31637:24;31633:1;31625:6;31621:14;31614:48;31497:172;:::o;31675:366::-;31817:3;31838:67;31902:2;31897:3;31838:67;:::i;:::-;31831:74;;31914:93;32003:3;31914:93;:::i;:::-;32032:2;32027:3;32023:12;32016:19;;31675:366;;;:::o;32047:419::-;32213:4;32251:2;32240:9;32236:18;32228:26;;32300:9;32294:4;32290:20;32286:1;32275:9;32271:17;32264:47;32328:131;32454:4;32328:131;:::i;:::-;32320:139;;32047:419;;;:::o;32472:297::-;32612:34;32608:1;32600:6;32596:14;32589:58;32681:34;32676:2;32668:6;32664:15;32657:59;32750:11;32745:2;32737:6;32733:15;32726:36;32472:297;:::o;32775:366::-;32917:3;32938:67;33002:2;32997:3;32938:67;:::i;:::-;32931:74;;33014:93;33103:3;33014:93;:::i;:::-;33132:2;33127:3;33123:12;33116:19;;32775:366;;;:::o;33147:419::-;33313:4;33351:2;33340:9;33336:18;33328:26;;33400:9;33394:4;33390:20;33386:1;33375:9;33371:17;33364:47;33428:131;33554:4;33428:131;:::i;:::-;33420:139;;33147:419;;;:::o;33572:240::-;33712:34;33708:1;33700:6;33696:14;33689:58;33781:23;33776:2;33768:6;33764:15;33757:48;33572:240;:::o;33818:366::-;33960:3;33981:67;34045:2;34040:3;33981:67;:::i;:::-;33974:74;;34057:93;34146:3;34057:93;:::i;:::-;34175:2;34170:3;34166:12;34159:19;;33818:366;;;:::o;34190:419::-;34356:4;34394:2;34383:9;34379:18;34371:26;;34443:9;34437:4;34433:20;34429:1;34418:9;34414:17;34407:47;34471:131;34597:4;34471:131;:::i;:::-;34463:139;;34190:419;;;:::o;34615:169::-;34755:21;34751:1;34743:6;34739:14;34732:45;34615:169;:::o;34790:366::-;34932:3;34953:67;35017:2;35012:3;34953:67;:::i;:::-;34946:74;;35029:93;35118:3;35029:93;:::i;:::-;35147:2;35142:3;35138:12;35131:19;;34790:366;;;:::o;35162:419::-;35328:4;35366:2;35355:9;35351:18;35343:26;;35415:9;35409:4;35405:20;35401:1;35390:9;35386:17;35379:47;35443:131;35569:4;35443:131;:::i;:::-;35435:139;;35162:419;;;:::o;35587:241::-;35727:34;35723:1;35715:6;35711:14;35704:58;35796:24;35791:2;35783:6;35779:15;35772:49;35587:241;:::o;35834:366::-;35976:3;35997:67;36061:2;36056:3;35997:67;:::i;:::-;35990:74;;36073:93;36162:3;36073:93;:::i;:::-;36191:2;36186:3;36182:12;36175:19;;35834:366;;;:::o;36206:419::-;36372:4;36410:2;36399:9;36395:18;36387:26;;36459:9;36453:4;36449:20;36445:1;36434:9;36430:17;36423:47;36487:131;36613:4;36487:131;:::i;:::-;36479:139;;36206:419;;;:::o;36631:191::-;36671:4;36691:20;36709:1;36691:20;:::i;:::-;36686:25;;36725:20;36743:1;36725:20;:::i;:::-;36720:25;;36764:1;36761;36758:8;36755:34;;;36769:18;;:::i;:::-;36755:34;36814:1;36811;36807:9;36799:17;;36631:191;;;;:::o;36828:180::-;36876:77;36873:1;36866:88;36973:4;36970:1;36963:15;36997:4;36994:1;36987:15;37014:180;37062:77;37059:1;37052:88;37159:4;37156:1;37149:15;37183:4;37180:1;37173:15;37200:143;37257:5;37288:6;37282:13;37273:22;;37304:33;37331:5;37304:33;:::i;:::-;37200:143;;;;:::o;37349:351::-;37419:6;37468:2;37456:9;37447:7;37443:23;37439:32;37436:119;;;37474:79;;:::i;:::-;37436:119;37594:1;37619:64;37675:7;37666:6;37655:9;37651:22;37619:64;:::i;:::-;37609:74;;37565:128;37349:351;;;;:::o;37706:85::-;37751:7;37780:5;37769:16;;37706:85;;;:::o;37797:158::-;37855:9;37888:61;37906:42;37915:32;37941:5;37915:32;:::i;:::-;37906:42;:::i;:::-;37888:61;:::i;:::-;37875:74;;37797:158;;;:::o;37961:147::-;38056:45;38095:5;38056:45;:::i;:::-;38051:3;38044:58;37961:147;;:::o;38114:114::-;38181:6;38215:5;38209:12;38199:22;;38114:114;;;:::o;38234:184::-;38333:11;38367:6;38362:3;38355:19;38407:4;38402:3;38398:14;38383:29;;38234:184;;;;:::o;38424:132::-;38491:4;38514:3;38506:11;;38544:4;38539:3;38535:14;38527:22;;38424:132;;;:::o;38562:108::-;38639:24;38657:5;38639:24;:::i;:::-;38634:3;38627:37;38562:108;;:::o;38676:179::-;38745:10;38766:46;38808:3;38800:6;38766:46;:::i;:::-;38844:4;38839:3;38835:14;38821:28;;38676:179;;;;:::o;38861:113::-;38931:4;38963;38958:3;38954:14;38946:22;;38861:113;;;:::o;39010:732::-;39129:3;39158:54;39206:5;39158:54;:::i;:::-;39228:86;39307:6;39302:3;39228:86;:::i;:::-;39221:93;;39338:56;39388:5;39338:56;:::i;:::-;39417:7;39448:1;39433:284;39458:6;39455:1;39452:13;39433:284;;;39534:6;39528:13;39561:63;39620:3;39605:13;39561:63;:::i;:::-;39554:70;;39647:60;39700:6;39647:60;:::i;:::-;39637:70;;39493:224;39480:1;39477;39473:9;39468:14;;39433:284;;;39437:14;39733:3;39726:10;;39134:608;;;39010:732;;;;:::o;39748:831::-;40011:4;40049:3;40038:9;40034:19;40026:27;;40063:71;40131:1;40120:9;40116:17;40107:6;40063:71;:::i;:::-;40144:80;40220:2;40209:9;40205:18;40196:6;40144:80;:::i;:::-;40271:9;40265:4;40261:20;40256:2;40245:9;40241:18;40234:48;40299:108;40402:4;40393:6;40299:108;:::i;:::-;40291:116;;40417:72;40485:2;40474:9;40470:18;40461:6;40417:72;:::i;:::-;40499:73;40567:3;40556:9;40552:19;40543:6;40499:73;:::i;:::-;39748:831;;;;;;;;:::o;40585:225::-;40725:34;40721:1;40713:6;40709:14;40702:58;40794:8;40789:2;40781:6;40777:15;40770:33;40585:225;:::o;40816:366::-;40958:3;40979:67;41043:2;41038:3;40979:67;:::i;:::-;40972:74;;41055:93;41144:3;41055:93;:::i;:::-;41173:2;41168:3;41164:12;41157:19;;40816:366;;;:::o;41188:419::-;41354:4;41392:2;41381:9;41377:18;41369:26;;41441:9;41435:4;41431:20;41427:1;41416:9;41412:17;41405:47;41469:131;41595:4;41469:131;:::i;:::-;41461:139;;41188:419;;;:::o;41613:442::-;41762:4;41800:2;41789:9;41785:18;41777:26;;41813:71;41881:1;41870:9;41866:17;41857:6;41813:71;:::i;:::-;41894:72;41962:2;41951:9;41947:18;41938:6;41894:72;:::i;:::-;41976;42044:2;42033:9;42029:18;42020:6;41976:72;:::i;:::-;41613:442;;;;;;:::o;42061:807::-;42310:4;42348:3;42337:9;42333:19;42325:27;;42362:71;42430:1;42419:9;42415:17;42406:6;42362:71;:::i;:::-;42443:72;42511:2;42500:9;42496:18;42487:6;42443:72;:::i;:::-;42525:80;42601:2;42590:9;42586:18;42577:6;42525:80;:::i;:::-;42615;42691:2;42680:9;42676:18;42667:6;42615:80;:::i;:::-;42705:73;42773:3;42762:9;42758:19;42749:6;42705:73;:::i;:::-;42788;42856:3;42845:9;42841:19;42832:6;42788:73;:::i;:::-;42061:807;;;;;;;;;:::o;42874:663::-;42962:6;42970;42978;43027:2;43015:9;43006:7;43002:23;42998:32;42995:119;;;43033:79;;:::i;:::-;42995:119;43153:1;43178:64;43234:7;43225:6;43214:9;43210:22;43178:64;:::i;:::-;43168:74;;43124:128;43291:2;43317:64;43373:7;43364:6;43353:9;43349:22;43317:64;:::i;:::-;43307:74;;43262:129;43430:2;43456:64;43512:7;43503:6;43492:9;43488:22;43456:64;:::i;:::-;43446:74;;43401:129;42874:663;;;;;:::o

Swarm Source

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