ETH Price: $3,449.39 (-1.91%)
Gas: 5 Gwei

Token

Banana (BANANA)
 

Overview

Max Total Supply

100,000 BANANA

Holders

116

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 BANANA

Value
$0.00
0x66AC79734663bBEd2D2A5AE88b76B1E8d3Af578f
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:
Banana

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
// https://t.me/bananacoineth

pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

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

}

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

    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    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, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract Banana is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Banana";
    string private _symbol = "BANANA";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0x58009F44bA5bE2fbe6AcA681D41cFf04df63e9d9);
    address payable public DeveloperWallet = payable(0xD48A73Ccd356bb80b9b83a49A53A661190F186Ea);
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public blacklist;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 public _buyLiquidityFee = 1;
    uint256 public _buyMarketingFee = 8;
    uint256 public _buyDeveloperFee = 8;
    
    uint256 public _sellLiquidityFee = 1;
    uint256 public _sellMarketingFee = 8;
    uint256 public _sellDeveloperFee = 8;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 100000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100);

    uint256 public _maxTxAmount =  _totalSupply.mul(1).div(100);
    uint256 public _walletMax =   _totalSupply.mul(1).div(100);  

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[DeveloperWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingWallet] = true;
        isWalletLimitExempt[DeveloperWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[DeveloperWallet] = true;
        isTxLimitExempt[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        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 setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWallet = payable(newAddress);
    }

    function setDeveloperWalletAddress(address newAddress) external onlyOwner() {
        DeveloperWallet = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function setBlacklist(address _adr, bool _status) external onlyOwner {
        blacklist[_adr] = _status;
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
        
    }

    function rescueStuckedToken(address _token, uint _amount) external onlyOwner {
        IERC20(_token).transfer(msg.sender,_amount);
    }

    function rescueFunds() external onlyOwner {
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);

        uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
        
        uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
        uint256 tokenForSwap = tAmount.sub(tokenForLp);

        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tokenForSwap);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee);
        uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) {
            payable(marketingWallet).transfer(amountETHMarketing);
        }

        if(amountETHDeveloper > 0) {
            payable(DeveloperWallet).transfer(amountETHDeveloper);
        }         

        if(amountETHLiquidity > 0 && tokenForLp > 0) {
            addLiquidity(tokenForLp, amountETHLiquidity);
        }
    }
    
    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), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    /* AirDrop Function*/

    function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner {
        address account = msg.sender;
        require(_address.length == _tokens.length,"Error: Mismatch Length");
        uint tokenCount;
        for(uint i = 0; i < _tokens.length; i++) {
            tokenCount += _tokens[i];
        }
        require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!");
        _balances[account] = _balances[account].sub(tokenCount); 
        for(uint j = 0; j < _address.length; j++) {
            _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]);
            emit Transfer(account, _address[j], _tokens[j]);
        }

    }

    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","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":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","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":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600681526020017f42616e616e610000000000000000000000000000000000000000000000000000815250600190816200004a919062001237565b506040518060400160405280600681526020017f42414e414e4100000000000000000000000000000000000000000000000000008152506002908162000091919062001237565b506012600360006101000a81548160ff021916908360ff1602179055507358009f44ba5be2fbe6aca681d41cff04df63e9d9600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d48a73ccd356bb80b9b83a49a53a661190f186ea600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152506001600c556008600d556008600e556001600f5560086010556008601155600360009054906101000a900460ff16600a620001fd9190620014ae565b620186a06200020d9190620014ff565b60145562000247606462000233600160145462000dec60201b6200308c1790919060201c565b62000e6f60201b620031061790919060201c565b6015556200028160646200026d600160145462000dec60201b6200308c1790919060201c565b62000e6f60201b620031061790919060201c565b601655620002bb6064620002a7600160145462000dec60201b6200308c1790919060201c565b62000e6f60201b620031061790919060201c565b6017556001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506001601960176101000a81548160ff0219169083151502179055506001601960186101000a81548160ff0219169083151502179055503480156200033757600080fd5b5060006200034a62000ec160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200044d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004739190620015b4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005019190620015b4565b6040518363ffffffff1660e01b815260040162000520929190620015f7565b6020604051808303816000875af115801562000540573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005669190620015b4565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000620006a262000ec960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006200085562000ec960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600062000a8262000ec960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c58600e5462000c44600d54600c5462000ef260201b620031501790919060201c565b62000ef260201b620031501790919060201c565b60128190555062000c9760115462000c83601054600f5462000ef260201b620031501790919060201c565b62000ef260201b620031501790919060201c565b601381905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014546005600062000d2e62000ec160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000d7c62000ec160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60145460405162000ddd919062001635565b60405180910390a350620018b1565b600080830362000e00576000905062000e69565b6000828462000e109190620014ff565b905082848262000e21919062001681565b1462000e64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e5b9062001740565b60405180910390fd5b809150505b92915050565b600062000eb983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000f5560201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f03919062001762565b90508381101562000f4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f4290620017ed565b60405180910390fd5b8091505092915050565b6000808311829062000f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f9691906200188d565b60405180910390fd5b506000838562000fb0919062001681565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200103f57607f821691505b60208210810362001055576200105462000ff7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620010bf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001080565b620010cb868362001080565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062001118620011126200110c84620010e3565b620010ed565b620010e3565b9050919050565b6000819050919050565b6200113483620010f7565b6200114c62001143826200111f565b8484546200108d565b825550505050565b600090565b6200116362001154565b6200117081848462001129565b505050565b5b8181101562001198576200118c60008262001159565b60018101905062001176565b5050565b601f821115620011e757620011b1816200105b565b620011bc8462001070565b81016020851015620011cc578190505b620011e4620011db8562001070565b83018262001175565b50505b505050565b600082821c905092915050565b60006200120c60001984600802620011ec565b1980831691505092915050565b6000620012278383620011f9565b9150826002028217905092915050565b620012428262000fbd565b67ffffffffffffffff8111156200125e576200125d62000fc8565b5b6200126a825462001026565b620012778282856200119c565b600060209050601f831160018114620012af57600084156200129a578287015190505b620012a6858262001219565b86555062001316565b601f198416620012bf866200105b565b60005b82811015620012e957848901518255600182019150602085019450602081019050620012c2565b8683101562001309578489015162001305601f891682620011f9565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620013ac578086048111156200138457620013836200131e565b5b6001851615620013945780820291505b8081029050620013a4856200134d565b945062001364565b94509492505050565b600082620013c757600190506200149a565b81620013d757600090506200149a565b8160018114620013f05760028114620013fb5762001431565b60019150506200149a565b60ff84111562001410576200140f6200131e565b5b8360020a9150848211156200142a57620014296200131e565b5b506200149a565b5060208310610133831016604e8410600b84101617156200146b5782820a9050838111156200146557620014646200131e565b5b6200149a565b6200147a84848460016200135a565b925090508184048111156200149457620014936200131e565b5b81810290505b9392505050565b600060ff82169050919050565b6000620014bb82620010e3565b9150620014c883620014a1565b9250620014f77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013b5565b905092915050565b60006200150c82620010e3565b91506200151983620010e3565b92508282026200152981620010e3565b915082820484148315176200154357620015426200131e565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200157c826200154f565b9050919050565b6200158e816200156f565b81146200159a57600080fd5b50565b600081519050620015ae8162001583565b92915050565b600060208284031215620015cd57620015cc6200154a565b5b6000620015dd848285016200159d565b91505092915050565b620015f1816200156f565b82525050565b60006040820190506200160e6000830185620015e6565b6200161d6020830184620015e6565b9392505050565b6200162f81620010e3565b82525050565b60006020820190506200164c600083018462001624565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200168e82620010e3565b91506200169b83620010e3565b925082620016ae57620016ad62001652565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062001728602183620016b9565b91506200173582620016ca565b604082019050919050565b600060208201905081810360008301526200175b8162001719565b9050919050565b60006200176f82620010e3565b91506200177c83620010e3565b92508282019050808211156200179757620017966200131e565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620017d5601b83620016b9565b9150620017e2826200179d565b602082019050919050565b600060208201905081810360008301526200180881620017c6565b9050919050565b60005b838110156200182f57808201518184015260208101905062001812565b60008484015250505050565b6000601f19601f8301169050919050565b6000620018598262000fbd565b620018658185620016b9565b9350620018778185602086016200180f565b62001882816200183b565b840191505092915050565b60006020820190508181036000830152620018a981846200184c565b905092915050565b60805160a0516158bc620018e56000396000818161100101526114f10152600081816114c5015261151d01526158bc6000f3fe6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d4919061465a565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906146bc565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614750565b60405180910390f35b34801561043d57600080fd5b5061045860048036038101906104539190614797565b611023565b60405161046591906147f2565b60405180910390f35b34801561047a57600080fd5b5061049560048036038101906104909190614839565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b991906148d8565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e49190614902565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f91906146bc565b611161565b005b34801561052257600080fd5b5061053d60048036038101906105389190614839565b611241565b005b34801561054b57600080fd5b50610554611331565b6040516105619190614902565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061491d565b611337565b60405161059e91906147f2565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614970565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614750565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d9190614902565b60405180910390f35b34801561063257600080fd5b5061063b611565565b60405161064891906149b9565b60405180910390f35b34801561065d57600080fd5b5061067860048036038101906106739190614797565b61157c565b60405161068591906147f2565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b091906149d4565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d99190614a01565b6116ce565b6040516106eb91906147f2565b60405180910390f35b34801561070057600080fd5b506107096116ee565b60405161071691906147f2565b60405180910390f35b34801561072b57600080fd5b5061074660048036038101906107419190614a01565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a9190614902565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190614a01565b6117e0565b6040516107a791906147f2565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d29190614a01565b611800565b6040516107e49190614750565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614ae9565b611c89565b005b34801561082257600080fd5b5061083d60048036038101906108389190614a01565b612064565b60405161084a9190614902565b60405180910390f35b34801561085f57600080fd5b506108686120ad565b005b34801561087657600080fd5b5061087f612202565b60405161088c9190614b8b565b60405180910390f35b3480156108a157600080fd5b506108aa612228565b6040516108b79190614902565b60405180910390f35b3480156108cc57600080fd5b506108d561222e565b6040516108e29190614902565b60405180910390f35b3480156108f757600080fd5b50610900612234565b60405161090d9190614902565b60405180910390f35b34801561092257600080fd5b5061093d60048036038101906109389190614839565b61223a565b005b34801561094b57600080fd5b5061095461232a565b60405161096191906147f2565b60405180910390f35b34801561097657600080fd5b5061097f61233d565b60405161098c9190614902565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190614a01565b612343565b6040516109c991906147f2565b60405180910390f35b3480156109de57600080fd5b506109e7612363565b6040516109f49190614750565b60405180910390f35b348015610a0957600080fd5b50610a1261238c565b604051610a1f919061465a565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a9190614797565b61241e565b604051610a5c91906147f2565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614970565b6124eb565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab09190614797565b61259d565b604051610ac291906147f2565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614970565b6125bc565b005b348015610b0057600080fd5b50610b096126a5565b604051610b169190614902565b60405180910390f35b348015610b2b57600080fd5b50610b346126ab565b604051610b419190614750565b60405180910390f35b348015610b5657600080fd5b50610b5f6126d1565b604051610b6c9190614902565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614a01565b6126d7565b604051610ba991906147f2565b60405180910390f35b348015610bbe57600080fd5b50610bc76126f7565b604051610bd49190614902565b60405180910390f35b348015610be957600080fd5b50610bf26126fd565b604051610bff91906147f2565b60405180910390f35b348015610c1457600080fd5b50610c1d612710565b604051610c2a9190614902565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c559190614ba6565b612716565b604051610c679190614902565b60405180910390f35b348015610c7c57600080fd5b50610c8561279d565b005b348015610c9357600080fd5b50610cae6004803603810190610ca991906149d4565b6128ab565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614970565b61294a565b005b348015610ce557600080fd5b50610d006004803603810190610cfb9190614839565b6129fc565b005b348015610d0e57600080fd5b50610d17612aec565b604051610d249190614902565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f91906149d4565b612af2565b005b348015610d6257600080fd5b50610d7d6004803603810190610d789190614a01565b612b91565b005b348015610d8b57600080fd5b50610da66004803603810190610da19190614797565b612d52565b005b348015610db457600080fd5b50610dcf6004803603810190610dca9190614839565b612e6a565b005b348015610ddd57600080fd5b50610de6612f5a565b604051610df391906147f2565b60405180910390f35b348015610e0857600080fd5b50610e11612f6d565b604051610e1e9190614b8b565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e499190614a01565b612f93565b604051610e5b91906147f2565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e869190614a01565b612fb3565b005b606060018054610e9c90614c15565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec890614c15565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f276131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab90614c92565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f5461315090919063ffffffff16565b61315090919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110376110306131ae565b84846131b6565b6001905092915050565b6110496131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90614c92565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6111696131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed90614c92565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c5461315090919063ffffffff16565b61315090919063ffffffff16565b601281905550505050565b6112496131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90614c92565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b600061134484848461337f565b50611406846113516131ae565b6114018560405180606001604052806028815260200161583a60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b76131ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a939092919063ffffffff16565b6131b6565b600190509392505050565b6114196131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90614c92565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115606115157f0000000000000000000000000000000000000000000000000000000000000000612064565b6115526115417f0000000000000000000000000000000000000000000000000000000000000000612064565b601454613af790919063ffffffff16565b613af790919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116256115896131ae565b84611620856006600061159a6131ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315090919063ffffffff16565b6131b6565b6001905092915050565b6116376131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90614c92565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b6117096131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90614c92565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a6131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90614c92565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190b9190614cc7565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119969190614cc7565b6040518363ffffffff1660e01b81526004016119b3929190614cf4565b602060405180830381865afa1580156119d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f49190614cc7565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b87578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a999190614cc7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b249190614cc7565b6040518363ffffffff1660e01b8152600401611b41929190614cf4565b6020604051808303816000875af1158015611b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b849190614cc7565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611c916131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590614c92565b60405180910390fd5b6000339050828290508585905014611d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6290614d69565b60405180910390fd5b600080600090505b84849050811015611db857848482818110611d9157611d90614d89565b5b9050602002013582611da39190614de7565b91508080611db090614e1b565b915050611d73565b5080611dc383612064565b1015611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb90614eaf565b60405180910390fd5b611e5681600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613af790919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561205b57611f39858583818110611ebd57611ebc614d89565b5b90506020020135600560008a8a86818110611edb57611eda614d89565b5b9050602002016020810190611ef09190614a01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315090919063ffffffff16565b60056000898985818110611f5057611f4f614d89565b5b9050602002016020810190611f659190614a01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110611fb657611fb5614d89565b5b9050602002016020810190611fcb9190614a01565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061202c5761202b614d89565b5b905060200201356040516120409190614902565b60405180910390a3808061205390614e1b565b915050611e9c565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6120b56131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213990614c92565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b6122426131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c690614c92565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461239b90614c15565b80601f01602080910402602001604051908101604052809291908181526020018280546123c790614c15565b80156124145780601f106123e957610100808354040283529160200191612414565b820191906000526020600020905b8154815290600101906020018083116123f757829003601f168201915b5050505050905090565b60006124e161242b6131ae565b846124dc8560405180606001604052806025815260200161586260259139600660006124556131ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a939092919063ffffffff16565b6131b6565b6001905092915050565b6124f36131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257790614c92565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b60006125b16125aa6131ae565b848461337f565b506001905092915050565b6125c46131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264890614c92565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161269a91906147f2565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6127a56131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282990614c92565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161285890614f00565b60006040518083038185875af1925050503d8060008114612895576040519150601f19603f3d011682016040523d82523d6000602084013e61289a565b606091505b50509050806128a857600080fd5b50565b6128b36131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293790614c92565b60405180910390fd5b8060168190555050565b6129526131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d690614c92565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612a046131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8890614c92565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612afa6131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7e90614c92565b60405180910390fd5b8060178190555050565b612b996131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1d90614c92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8c90614f87565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d5a6131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dde90614c92565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612e22929190614fa7565b6020604051808303816000875af1158015612e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e659190614fe5565b505050565b612e726131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef690614c92565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b612fbb6131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303f90614c92565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080830361309e5760009050613100565b600082846130ac9190615012565b90508284826130bb9190615083565b146130fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f290615126565b60405180910390fd5b809150505b92915050565b600061314883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b41565b905092915050565b600080828461315f9190614de7565b9050838110156131a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319b90615192565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321c90615224565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328b906152b6565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516133729190614902565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036133ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e690615348565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361345e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613455906153da565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135025750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353890615446565b60405180910390fd5b601960149054906101000a900460ff161561356857613561848484613ba4565b9050613a8c565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561360c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136245750601960189054906101000a900460ff165b1561366f5760165482111561366e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613665906154d8565b60405180910390fd5b5b600061367a30612064565b9050600060155482101590508080156136a05750601960149054906101000a900460ff16155b80156136f65750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561370e5750601960159054906101000a900460ff165b1561373857601960169054906101000a900460ff161561372e5760155491505b61373782613d77565b5b6137c1846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a939092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138a75750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6138bb576138b6878787614042565b6138bd565b845b9050601960179054906101000a900460ff1680156139255750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561398a576017546139488261393a89612064565b61315090919063ffffffff16565b1115613989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139809061556a565b60405180910390fd5b5b6139dc81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315090919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a7c9190614902565b60405180910390a3600193505050505b9392505050565b6000838311158290613adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad2919061465a565b60405180910390fd5b5060008385613aea919061558a565b9050809150509392505050565b6000613b3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a93565b905092915050565b60008083118290613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f919061465a565b60405180910390fd5b5060008385613b979190615083565b9050809150509392505050565b6000613c2f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a939092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cc482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d649190614902565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613dab60135460125461315090919063ffffffff16565b90506000613dc6600f54600c5461315090919063ffffffff16565b90506000613de1601054600d5461315090919063ffffffff16565b90506000613e1d6002613e0f86613e01878a61308c90919063ffffffff16565b61310690919063ffffffff16565b61310690919063ffffffff16565b90506000613e348287613af790919063ffffffff16565b90506000479050613e4482614269565b6000613e598247613af790919063ffffffff16565b90506000613e83613e7460028961310690919063ffffffff16565b89613af790919063ffffffff16565b90506000613ebf6002613eb184613ea38c8861308c90919063ffffffff16565b61310690919063ffffffff16565b61310690919063ffffffff16565b90506000613ee883613eda8a8761308c90919063ffffffff16565b61310690919063ffffffff16565b90506000613f1182613f038588613af790919063ffffffff16565b613af790919063ffffffff16565b90506000821115613f8657600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613f84573d6000803e3d6000fd5b505b6000811115613ff957600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613ff7573d6000803e3d6000fd5b505b6000831180156140095750600088115b156140195761401888846144e5565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156140ca576140c360646140b56012548661308c90919063ffffffff16565b61310690919063ffffffff16565b9050614148565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141475761414460646141366013548661308c90919063ffffffff16565b61310690919063ffffffff16565b90505b5b600081111561424c576141a381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315090919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142439190614902565b60405180910390a35b61425f8184613af790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115614286576142856155be565b5b6040519080825280602002602001820160405280156142b45781602001602082028036833780820191505090505b50905030816000815181106142cc576142cb614d89565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614373573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143979190614cc7565b816001815181106143ab576143aa614d89565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061441230601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846131b6565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144769594939291906156e6565b600060405180830381600087803b15801561449057600080fd5b505af11580156144a4573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516144d9929190615740565b60405180910390a15050565b61451230601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846131b6565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061455e612363565b426040518863ffffffff1660e01b815260040161458096959493929190615770565b60606040518083038185885af115801561459e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145c391906157e6565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156146045780820151818401526020810190506145e9565b60008484015250505050565b6000601f19601f8301169050919050565b600061462c826145ca565b61463681856145d5565b93506146468185602086016145e6565b61464f81614610565b840191505092915050565b600060208201905081810360008301526146748184614621565b905092915050565b600080fd5b600080fd5b6000819050919050565b61469981614686565b81146146a457600080fd5b50565b6000813590506146b681614690565b92915050565b6000806000606084860312156146d5576146d461467c565b5b60006146e3868287016146a7565b93505060206146f4868287016146a7565b9250506040614705868287016146a7565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061473a8261470f565b9050919050565b61474a8161472f565b82525050565b60006020820190506147656000830184614741565b92915050565b6147748161472f565b811461477f57600080fd5b50565b6000813590506147918161476b565b92915050565b600080604083850312156147ae576147ad61467c565b5b60006147bc85828601614782565b92505060206147cd858286016146a7565b9150509250929050565b60008115159050919050565b6147ec816147d7565b82525050565b600060208201905061480760008301846147e3565b92915050565b614816816147d7565b811461482157600080fd5b50565b6000813590506148338161480d565b92915050565b600080604083850312156148505761484f61467c565b5b600061485e85828601614782565b925050602061486f85828601614824565b9150509250929050565b6000819050919050565b600061489e6148996148948461470f565b614879565b61470f565b9050919050565b60006148b082614883565b9050919050565b60006148c2826148a5565b9050919050565b6148d2816148b7565b82525050565b60006020820190506148ed60008301846148c9565b92915050565b6148fc81614686565b82525050565b600060208201905061491760008301846148f3565b92915050565b6000806000606084860312156149365761493561467c565b5b600061494486828701614782565b935050602061495586828701614782565b9250506040614966868287016146a7565b9150509250925092565b6000602082840312156149865761498561467c565b5b600061499484828501614824565b91505092915050565b600060ff82169050919050565b6149b38161499d565b82525050565b60006020820190506149ce60008301846149aa565b92915050565b6000602082840312156149ea576149e961467c565b5b60006149f8848285016146a7565b91505092915050565b600060208284031215614a1757614a1661467c565b5b6000614a2584828501614782565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614a5357614a52614a2e565b5b8235905067ffffffffffffffff811115614a7057614a6f614a33565b5b602083019150836020820283011115614a8c57614a8b614a38565b5b9250929050565b60008083601f840112614aa957614aa8614a2e565b5b8235905067ffffffffffffffff811115614ac657614ac5614a33565b5b602083019150836020820283011115614ae257614ae1614a38565b5b9250929050565b60008060008060408587031215614b0357614b0261467c565b5b600085013567ffffffffffffffff811115614b2157614b20614681565b5b614b2d87828801614a3d565b9450945050602085013567ffffffffffffffff811115614b5057614b4f614681565b5b614b5c87828801614a93565b925092505092959194509250565b6000614b758261470f565b9050919050565b614b8581614b6a565b82525050565b6000602082019050614ba06000830184614b7c565b92915050565b60008060408385031215614bbd57614bbc61467c565b5b6000614bcb85828601614782565b9250506020614bdc85828601614782565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c2d57607f821691505b602082108103614c4057614c3f614be6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c7c6020836145d5565b9150614c8782614c46565b602082019050919050565b60006020820190508181036000830152614cab81614c6f565b9050919050565b600081519050614cc18161476b565b92915050565b600060208284031215614cdd57614cdc61467c565b5b6000614ceb84828501614cb2565b91505092915050565b6000604082019050614d096000830185614741565b614d166020830184614741565b9392505050565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b6000614d536016836145d5565b9150614d5e82614d1d565b602082019050919050565b60006020820190508181036000830152614d8281614d46565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614df282614686565b9150614dfd83614686565b9250828201905080821115614e1557614e14614db8565b5b92915050565b6000614e2682614686565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e5857614e57614db8565b5b600182019050919050565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b6000614e99601b836145d5565b9150614ea482614e63565b602082019050919050565b60006020820190508181036000830152614ec881614e8c565b9050919050565b600081905092915050565b50565b6000614eea600083614ecf565b9150614ef582614eda565b600082019050919050565b6000614f0b82614edd565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f716026836145d5565b9150614f7c82614f15565b604082019050919050565b60006020820190508181036000830152614fa081614f64565b9050919050565b6000604082019050614fbc6000830185614741565b614fc960208301846148f3565b9392505050565b600081519050614fdf8161480d565b92915050565b600060208284031215614ffb57614ffa61467c565b5b600061500984828501614fd0565b91505092915050565b600061501d82614686565b915061502883614686565b925082820261503681614686565b9150828204841483151761504d5761504c614db8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061508e82614686565b915061509983614686565b9250826150a9576150a8615054565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006151106021836145d5565b915061511b826150b4565b604082019050919050565b6000602082019050818103600083015261513f81615103565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061517c601b836145d5565b915061518782615146565b602082019050919050565b600060208201905081810360008301526151ab8161516f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061520e6024836145d5565b9150615219826151b2565b604082019050919050565b6000602082019050818103600083015261523d81615201565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152a06022836145d5565b91506152ab82615244565b604082019050919050565b600060208201905081810360008301526152cf81615293565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153326025836145d5565b915061533d826152d6565b604082019050919050565b6000602082019050818103600083015261536181615325565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153c46023836145d5565b91506153cf82615368565b604082019050919050565b600060208201905081810360008301526153f3816153b7565b9050919050565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b6000615430601d836145d5565b915061543b826153fa565b602082019050919050565b6000602082019050818103600083015261545f81615423565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006154c26028836145d5565b91506154cd82615466565b604082019050919050565b600060208201905081810360008301526154f1816154b5565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006155546025836145d5565b915061555f826154f8565b604082019050919050565b6000602082019050818103600083015261558381615547565b9050919050565b600061559582614686565b91506155a083614686565b92508282039050818111156155b8576155b7614db8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061561261560d615608846155ed565b614879565b614686565b9050919050565b615622816155f7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61565d8161472f565b82525050565b600061566f8383615654565b60208301905092915050565b6000602082019050919050565b600061569382615628565b61569d8185615633565b93506156a883615644565b8060005b838110156156d95781516156c08882615663565b97506156cb8361567b565b9250506001810190506156ac565b5085935050505092915050565b600060a0820190506156fb60008301886148f3565b6157086020830187615619565b818103604083015261571a8186615688565b90506157296060830185614741565b61573660808301846148f3565b9695505050505050565b600060408201905061575560008301856148f3565b81810360208301526157678184615688565b90509392505050565b600060c0820190506157856000830189614741565b61579260208301886148f3565b61579f6040830187615619565b6157ac6060830186615619565b6157b96080830185614741565b6157c660a08301846148f3565b979650505050505050565b6000815190506157e081614690565b92915050565b6000806000606084860312156157ff576157fe61467c565b5b600061580d868287016157d1565b935050602061581e868287016157d1565b925050604061582f868287016157d1565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201ef864d6e7780695129c2a2b53fd1e4afca96ce733506c6ac741924db405adfb64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d4919061465a565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906146bc565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614750565b60405180910390f35b34801561043d57600080fd5b5061045860048036038101906104539190614797565b611023565b60405161046591906147f2565b60405180910390f35b34801561047a57600080fd5b5061049560048036038101906104909190614839565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b991906148d8565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e49190614902565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f91906146bc565b611161565b005b34801561052257600080fd5b5061053d60048036038101906105389190614839565b611241565b005b34801561054b57600080fd5b50610554611331565b6040516105619190614902565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061491d565b611337565b60405161059e91906147f2565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614970565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614750565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d9190614902565b60405180910390f35b34801561063257600080fd5b5061063b611565565b60405161064891906149b9565b60405180910390f35b34801561065d57600080fd5b5061067860048036038101906106739190614797565b61157c565b60405161068591906147f2565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b091906149d4565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d99190614a01565b6116ce565b6040516106eb91906147f2565b60405180910390f35b34801561070057600080fd5b506107096116ee565b60405161071691906147f2565b60405180910390f35b34801561072b57600080fd5b5061074660048036038101906107419190614a01565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a9190614902565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190614a01565b6117e0565b6040516107a791906147f2565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d29190614a01565b611800565b6040516107e49190614750565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614ae9565b611c89565b005b34801561082257600080fd5b5061083d60048036038101906108389190614a01565b612064565b60405161084a9190614902565b60405180910390f35b34801561085f57600080fd5b506108686120ad565b005b34801561087657600080fd5b5061087f612202565b60405161088c9190614b8b565b60405180910390f35b3480156108a157600080fd5b506108aa612228565b6040516108b79190614902565b60405180910390f35b3480156108cc57600080fd5b506108d561222e565b6040516108e29190614902565b60405180910390f35b3480156108f757600080fd5b50610900612234565b60405161090d9190614902565b60405180910390f35b34801561092257600080fd5b5061093d60048036038101906109389190614839565b61223a565b005b34801561094b57600080fd5b5061095461232a565b60405161096191906147f2565b60405180910390f35b34801561097657600080fd5b5061097f61233d565b60405161098c9190614902565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190614a01565b612343565b6040516109c991906147f2565b60405180910390f35b3480156109de57600080fd5b506109e7612363565b6040516109f49190614750565b60405180910390f35b348015610a0957600080fd5b50610a1261238c565b604051610a1f919061465a565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a9190614797565b61241e565b604051610a5c91906147f2565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614970565b6124eb565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab09190614797565b61259d565b604051610ac291906147f2565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614970565b6125bc565b005b348015610b0057600080fd5b50610b096126a5565b604051610b169190614902565b60405180910390f35b348015610b2b57600080fd5b50610b346126ab565b604051610b419190614750565b60405180910390f35b348015610b5657600080fd5b50610b5f6126d1565b604051610b6c9190614902565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614a01565b6126d7565b604051610ba991906147f2565b60405180910390f35b348015610bbe57600080fd5b50610bc76126f7565b604051610bd49190614902565b60405180910390f35b348015610be957600080fd5b50610bf26126fd565b604051610bff91906147f2565b60405180910390f35b348015610c1457600080fd5b50610c1d612710565b604051610c2a9190614902565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c559190614ba6565b612716565b604051610c679190614902565b60405180910390f35b348015610c7c57600080fd5b50610c8561279d565b005b348015610c9357600080fd5b50610cae6004803603810190610ca991906149d4565b6128ab565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614970565b61294a565b005b348015610ce557600080fd5b50610d006004803603810190610cfb9190614839565b6129fc565b005b348015610d0e57600080fd5b50610d17612aec565b604051610d249190614902565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f91906149d4565b612af2565b005b348015610d6257600080fd5b50610d7d6004803603810190610d789190614a01565b612b91565b005b348015610d8b57600080fd5b50610da66004803603810190610da19190614797565b612d52565b005b348015610db457600080fd5b50610dcf6004803603810190610dca9190614839565b612e6a565b005b348015610ddd57600080fd5b50610de6612f5a565b604051610df391906147f2565b60405180910390f35b348015610e0857600080fd5b50610e11612f6d565b604051610e1e9190614b8b565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e499190614a01565b612f93565b604051610e5b91906147f2565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e869190614a01565b612fb3565b005b606060018054610e9c90614c15565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec890614c15565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f276131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab90614c92565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f5461315090919063ffffffff16565b61315090919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110376110306131ae565b84846131b6565b6001905092915050565b6110496131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90614c92565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6111696131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed90614c92565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c5461315090919063ffffffff16565b61315090919063ffffffff16565b601281905550505050565b6112496131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90614c92565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b600061134484848461337f565b50611406846113516131ae565b6114018560405180606001604052806028815260200161583a60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b76131ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a939092919063ffffffff16565b6131b6565b600190509392505050565b6114196131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90614c92565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115606115157f0000000000000000000000000000000000000000000000000000000000000000612064565b6115526115417f000000000000000000000000000000000000000000000000000000000000dead612064565b601454613af790919063ffffffff16565b613af790919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116256115896131ae565b84611620856006600061159a6131ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315090919063ffffffff16565b6131b6565b6001905092915050565b6116376131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90614c92565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b6117096131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90614c92565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a6131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90614c92565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190b9190614cc7565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119969190614cc7565b6040518363ffffffff1660e01b81526004016119b3929190614cf4565b602060405180830381865afa1580156119d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f49190614cc7565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b87578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a999190614cc7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b249190614cc7565b6040518363ffffffff1660e01b8152600401611b41929190614cf4565b6020604051808303816000875af1158015611b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b849190614cc7565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611c916131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590614c92565b60405180910390fd5b6000339050828290508585905014611d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6290614d69565b60405180910390fd5b600080600090505b84849050811015611db857848482818110611d9157611d90614d89565b5b9050602002013582611da39190614de7565b91508080611db090614e1b565b915050611d73565b5080611dc383612064565b1015611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb90614eaf565b60405180910390fd5b611e5681600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613af790919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561205b57611f39858583818110611ebd57611ebc614d89565b5b90506020020135600560008a8a86818110611edb57611eda614d89565b5b9050602002016020810190611ef09190614a01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315090919063ffffffff16565b60056000898985818110611f5057611f4f614d89565b5b9050602002016020810190611f659190614a01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110611fb657611fb5614d89565b5b9050602002016020810190611fcb9190614a01565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061202c5761202b614d89565b5b905060200201356040516120409190614902565b60405180910390a3808061205390614e1b565b915050611e9c565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6120b56131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213990614c92565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b6122426131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c690614c92565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461239b90614c15565b80601f01602080910402602001604051908101604052809291908181526020018280546123c790614c15565b80156124145780601f106123e957610100808354040283529160200191612414565b820191906000526020600020905b8154815290600101906020018083116123f757829003601f168201915b5050505050905090565b60006124e161242b6131ae565b846124dc8560405180606001604052806025815260200161586260259139600660006124556131ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a939092919063ffffffff16565b6131b6565b6001905092915050565b6124f36131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257790614c92565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b60006125b16125aa6131ae565b848461337f565b506001905092915050565b6125c46131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264890614c92565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161269a91906147f2565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6127a56131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282990614c92565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161285890614f00565b60006040518083038185875af1925050503d8060008114612895576040519150601f19603f3d011682016040523d82523d6000602084013e61289a565b606091505b50509050806128a857600080fd5b50565b6128b36131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293790614c92565b60405180910390fd5b8060168190555050565b6129526131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d690614c92565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612a046131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8890614c92565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612afa6131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7e90614c92565b60405180910390fd5b8060178190555050565b612b996131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1d90614c92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8c90614f87565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d5a6131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dde90614c92565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612e22929190614fa7565b6020604051808303816000875af1158015612e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e659190614fe5565b505050565b612e726131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef690614c92565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b612fbb6131ae565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303f90614c92565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080830361309e5760009050613100565b600082846130ac9190615012565b90508284826130bb9190615083565b146130fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f290615126565b60405180910390fd5b809150505b92915050565b600061314883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b41565b905092915050565b600080828461315f9190614de7565b9050838110156131a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319b90615192565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321c90615224565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328b906152b6565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516133729190614902565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036133ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e690615348565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361345e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613455906153da565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135025750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353890615446565b60405180910390fd5b601960149054906101000a900460ff161561356857613561848484613ba4565b9050613a8c565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561360c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136245750601960189054906101000a900460ff165b1561366f5760165482111561366e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613665906154d8565b60405180910390fd5b5b600061367a30612064565b9050600060155482101590508080156136a05750601960149054906101000a900460ff16155b80156136f65750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561370e5750601960159054906101000a900460ff165b1561373857601960169054906101000a900460ff161561372e5760155491505b61373782613d77565b5b6137c1846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a939092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138a75750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6138bb576138b6878787614042565b6138bd565b845b9050601960179054906101000a900460ff1680156139255750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561398a576017546139488261393a89612064565b61315090919063ffffffff16565b1115613989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139809061556a565b60405180910390fd5b5b6139dc81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315090919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a7c9190614902565b60405180910390a3600193505050505b9392505050565b6000838311158290613adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad2919061465a565b60405180910390fd5b5060008385613aea919061558a565b9050809150509392505050565b6000613b3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a93565b905092915050565b60008083118290613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f919061465a565b60405180910390fd5b5060008385613b979190615083565b9050809150509392505050565b6000613c2f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a939092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cc482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d649190614902565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613dab60135460125461315090919063ffffffff16565b90506000613dc6600f54600c5461315090919063ffffffff16565b90506000613de1601054600d5461315090919063ffffffff16565b90506000613e1d6002613e0f86613e01878a61308c90919063ffffffff16565b61310690919063ffffffff16565b61310690919063ffffffff16565b90506000613e348287613af790919063ffffffff16565b90506000479050613e4482614269565b6000613e598247613af790919063ffffffff16565b90506000613e83613e7460028961310690919063ffffffff16565b89613af790919063ffffffff16565b90506000613ebf6002613eb184613ea38c8861308c90919063ffffffff16565b61310690919063ffffffff16565b61310690919063ffffffff16565b90506000613ee883613eda8a8761308c90919063ffffffff16565b61310690919063ffffffff16565b90506000613f1182613f038588613af790919063ffffffff16565b613af790919063ffffffff16565b90506000821115613f8657600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613f84573d6000803e3d6000fd5b505b6000811115613ff957600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613ff7573d6000803e3d6000fd5b505b6000831180156140095750600088115b156140195761401888846144e5565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156140ca576140c360646140b56012548661308c90919063ffffffff16565b61310690919063ffffffff16565b9050614148565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141475761414460646141366013548661308c90919063ffffffff16565b61310690919063ffffffff16565b90505b5b600081111561424c576141a381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315090919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142439190614902565b60405180910390a35b61425f8184613af790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115614286576142856155be565b5b6040519080825280602002602001820160405280156142b45781602001602082028036833780820191505090505b50905030816000815181106142cc576142cb614d89565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614373573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143979190614cc7565b816001815181106143ab576143aa614d89565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061441230601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846131b6565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144769594939291906156e6565b600060405180830381600087803b15801561449057600080fd5b505af11580156144a4573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516144d9929190615740565b60405180910390a15050565b61451230601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846131b6565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061455e612363565b426040518863ffffffff1660e01b815260040161458096959493929190615770565b60606040518083038185885af115801561459e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145c391906157e6565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156146045780820151818401526020810190506145e9565b60008484015250505050565b6000601f19601f8301169050919050565b600061462c826145ca565b61463681856145d5565b93506146468185602086016145e6565b61464f81614610565b840191505092915050565b600060208201905081810360008301526146748184614621565b905092915050565b600080fd5b600080fd5b6000819050919050565b61469981614686565b81146146a457600080fd5b50565b6000813590506146b681614690565b92915050565b6000806000606084860312156146d5576146d461467c565b5b60006146e3868287016146a7565b93505060206146f4868287016146a7565b9250506040614705868287016146a7565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061473a8261470f565b9050919050565b61474a8161472f565b82525050565b60006020820190506147656000830184614741565b92915050565b6147748161472f565b811461477f57600080fd5b50565b6000813590506147918161476b565b92915050565b600080604083850312156147ae576147ad61467c565b5b60006147bc85828601614782565b92505060206147cd858286016146a7565b9150509250929050565b60008115159050919050565b6147ec816147d7565b82525050565b600060208201905061480760008301846147e3565b92915050565b614816816147d7565b811461482157600080fd5b50565b6000813590506148338161480d565b92915050565b600080604083850312156148505761484f61467c565b5b600061485e85828601614782565b925050602061486f85828601614824565b9150509250929050565b6000819050919050565b600061489e6148996148948461470f565b614879565b61470f565b9050919050565b60006148b082614883565b9050919050565b60006148c2826148a5565b9050919050565b6148d2816148b7565b82525050565b60006020820190506148ed60008301846148c9565b92915050565b6148fc81614686565b82525050565b600060208201905061491760008301846148f3565b92915050565b6000806000606084860312156149365761493561467c565b5b600061494486828701614782565b935050602061495586828701614782565b9250506040614966868287016146a7565b9150509250925092565b6000602082840312156149865761498561467c565b5b600061499484828501614824565b91505092915050565b600060ff82169050919050565b6149b38161499d565b82525050565b60006020820190506149ce60008301846149aa565b92915050565b6000602082840312156149ea576149e961467c565b5b60006149f8848285016146a7565b91505092915050565b600060208284031215614a1757614a1661467c565b5b6000614a2584828501614782565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614a5357614a52614a2e565b5b8235905067ffffffffffffffff811115614a7057614a6f614a33565b5b602083019150836020820283011115614a8c57614a8b614a38565b5b9250929050565b60008083601f840112614aa957614aa8614a2e565b5b8235905067ffffffffffffffff811115614ac657614ac5614a33565b5b602083019150836020820283011115614ae257614ae1614a38565b5b9250929050565b60008060008060408587031215614b0357614b0261467c565b5b600085013567ffffffffffffffff811115614b2157614b20614681565b5b614b2d87828801614a3d565b9450945050602085013567ffffffffffffffff811115614b5057614b4f614681565b5b614b5c87828801614a93565b925092505092959194509250565b6000614b758261470f565b9050919050565b614b8581614b6a565b82525050565b6000602082019050614ba06000830184614b7c565b92915050565b60008060408385031215614bbd57614bbc61467c565b5b6000614bcb85828601614782565b9250506020614bdc85828601614782565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c2d57607f821691505b602082108103614c4057614c3f614be6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c7c6020836145d5565b9150614c8782614c46565b602082019050919050565b60006020820190508181036000830152614cab81614c6f565b9050919050565b600081519050614cc18161476b565b92915050565b600060208284031215614cdd57614cdc61467c565b5b6000614ceb84828501614cb2565b91505092915050565b6000604082019050614d096000830185614741565b614d166020830184614741565b9392505050565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b6000614d536016836145d5565b9150614d5e82614d1d565b602082019050919050565b60006020820190508181036000830152614d8281614d46565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614df282614686565b9150614dfd83614686565b9250828201905080821115614e1557614e14614db8565b5b92915050565b6000614e2682614686565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e5857614e57614db8565b5b600182019050919050565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b6000614e99601b836145d5565b9150614ea482614e63565b602082019050919050565b60006020820190508181036000830152614ec881614e8c565b9050919050565b600081905092915050565b50565b6000614eea600083614ecf565b9150614ef582614eda565b600082019050919050565b6000614f0b82614edd565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f716026836145d5565b9150614f7c82614f15565b604082019050919050565b60006020820190508181036000830152614fa081614f64565b9050919050565b6000604082019050614fbc6000830185614741565b614fc960208301846148f3565b9392505050565b600081519050614fdf8161480d565b92915050565b600060208284031215614ffb57614ffa61467c565b5b600061500984828501614fd0565b91505092915050565b600061501d82614686565b915061502883614686565b925082820261503681614686565b9150828204841483151761504d5761504c614db8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061508e82614686565b915061509983614686565b9250826150a9576150a8615054565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006151106021836145d5565b915061511b826150b4565b604082019050919050565b6000602082019050818103600083015261513f81615103565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061517c601b836145d5565b915061518782615146565b602082019050919050565b600060208201905081810360008301526151ab8161516f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061520e6024836145d5565b9150615219826151b2565b604082019050919050565b6000602082019050818103600083015261523d81615201565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152a06022836145d5565b91506152ab82615244565b604082019050919050565b600060208201905081810360008301526152cf81615293565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153326025836145d5565b915061533d826152d6565b604082019050919050565b6000602082019050818103600083015261536181615325565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153c46023836145d5565b91506153cf82615368565b604082019050919050565b600060208201905081810360008301526153f3816153b7565b9050919050565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b6000615430601d836145d5565b915061543b826153fa565b602082019050919050565b6000602082019050818103600083015261545f81615423565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006154c26028836145d5565b91506154cd82615466565b604082019050919050565b600060208201905081810360008301526154f1816154b5565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006155546025836145d5565b915061555f826154f8565b604082019050919050565b6000602082019050818103600083015261558381615547565b9050919050565b600061559582614686565b91506155a083614686565b92508282039050818111156155b8576155b7614db8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061561261560d615608846155ed565b614879565b614686565b9050919050565b615622816155f7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61565d8161472f565b82525050565b600061566f8383615654565b60208301905092915050565b6000602082019050919050565b600061569382615628565b61569d8185615633565b93506156a883615644565b8060005b838110156156d95781516156c08882615663565b97506156cb8361567b565b9250506001810190506156ac565b5085935050505092915050565b600060a0820190506156fb60008301886148f3565b6157086020830187615619565b818103604083015261571a8186615688565b90506157296060830185614741565b61573660808301846148f3565b9695505050505050565b600060408201905061575560008301856148f3565b81810360208301526157678184615688565b90509392505050565b600060c0820190506157856000830189614741565b61579260208301886148f3565b61579f6040830187615619565b6157ac6060830186615619565b6157b96080830185614741565b6157c660a08301846148f3565b979650505050505050565b6000815190506157e081614690565b92915050565b6000806000606084860312156157ff576157fe61467c565b5b600061580d868287016157d1565b935050602061581e868287016157d1565b925050604061582f868287016157d1565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201ef864d6e7780695129c2a2b53fd1e4afca96ce733506c6ac741924db405adfb64736f6c63430008110033

Deployed Bytecode Sourcemap

11466:16301:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15357:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20288:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11969:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16523:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18956:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13079:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15634:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19971:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17456:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12544:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20882:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17833:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11881:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18792:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15543:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16020:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18064:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12243:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13194:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18196:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12678:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12186:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19215:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27059:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15742:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3143:230;;;;;;;;;;;;;:::i;:::-;;11677:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12944:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13010:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12762:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17037:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13337:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12592:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12403:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2918:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15448:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16246:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18655:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20707:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18476:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12502:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13127:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12635:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12344:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12866:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13241:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12460:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15869:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23244:154;;;;;;;;;;;;;:::i;:::-;;17714:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17599:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17174:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12723:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17954:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3381:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23097:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17317:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13295:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11776:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12295:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18336:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15357:83;15394:13;15427:5;15420:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15357:83;:::o;20288:317::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20410:10:::1;20390:17;:30;;;;20451:10;20431:17;:30;;;;20492:10;20472:17;:30;;;;20534:63;20579:17;;20534:40;20556:17;;20534;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;20513:18;:84;;;;20288:317:::0;;;:::o;11969:81::-;;;:::o;16523:161::-;16598:4;16615:39;16624:12;:10;:12::i;:::-;16638:7;16647:6;16615:8;:39::i;:::-;16672:4;16665:11;;16523:161;;;;:::o;18956:113::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19054:7:::1;19036:9;:15;19046:4;19036:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;18956:113:::0;;:::o;13079:41::-;;;;;;;;;;;;;:::o;15634:100::-;15687:7;15714:12;;15707:19;;15634:100;:::o;19971:309::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20091:10:::1;20072:16;:29;;;;20131:10;20112:16;:29;;;;20171:10;20152:16;:29;;;;20212:60;20255:16;;20212:38;20233:16;;20212;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;20192:17;:80;;;;19971:309:::0;;;:::o;17456:135::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17577:6:::1;17547:19;:27;17567:6;17547:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17456:135:::0;;:::o;12544:35::-;;;;:::o;20882:313::-;20980:4;20997:36;21007:6;21015:9;21026:6;20997:9;:36::i;:::-;;21044:121;21053:6;21061:12;:10;:12::i;:::-;21075:89;21113:6;21075:89;;;;;;;;;;;;;;;;;:11;:19;21087:6;21075:19;;;;;;;;;;;;;;;:33;21095:12;:10;:12::i;:::-;21075:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21044:8;:121::i;:::-;21183:4;21176:11;;20882:313;;;;;:::o;17833:113::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17930:8:::1;17911:16;;:27;;;;;;;;;;;;;;;;;;17833:113:::0;:::o;11881:81::-;;;:::o;18792:156::-;18845:7;18872:68;18917:22;18927:11;18917:9;:22::i;:::-;18872:40;18889:22;18899:11;18889:9;:22::i;:::-;18872:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;18865:75;;18792:156;:::o;15543:83::-;15584:5;15609:9;;;;;;;;;;;15602:16;;15543:83;:::o;16020:218::-;16108:4;16125:83;16134:12;:10;:12::i;:::-;16148:7;16157:50;16196:10;16157:11;:25;16169:12;:10;:12::i;:::-;16157:25;;;;;;;;;;;;;;;:34;16183:7;16157:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16125:8;:83::i;:::-;16226:4;16219:11;;16020:218;;;;:::o;18064:124::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18172:8:::1;18146:23;:34;;;;18064:124:::0;:::o;12243:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13194:40::-;;;;;;;;;;;;;:::o;18196:132::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18309:10:::1;18283:15;;:37;;;;;;;;;;;;;;;;;;18196:132:::0;:::o;12678:36::-;;;;:::o;12186:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;19215:748::-;19295:22;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19332:35:::1;19389:16;19332:74;;19455:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19437:53;;;19499:4;19506:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19437:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19420:110;;19572:1;19546:28;;:14;:28;;::::0;19543:225:::1;;19660:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19642:74;;;19725:4;19732:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19642:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19625:131;;19543:225;19794:14;19780:11;;:28;;;;;;;;;;;;;;;;;;19860:16;19842:15;;:34;;;;;;;;;;;;;;;;;;19951:4;19914:12;:34;19935:11;;;;;;;;;;;19914:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;19319:644;19215:748:::0;;;:::o;27059:697::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27159:15:::1;27177:10;27159:28;;27225:7;;:14;;27206:8;;:15;;:33;27198:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27276:15;27306:6:::0;27315:1:::1;27306:10;;27302:92;27322:7;;:14;;27318:1;:18;27302:92;;;27372:7;;27380:1;27372:10;;;;;;;:::i;:::-;;;;;;;;27358:24;;;;;:::i;:::-;;;27338:3;;;;;:::i;:::-;;;;27302:92;;;;27434:10;27412:18;27422:7;27412:9;:18::i;:::-;:32;;27404:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27507:34;27530:10;27507:9;:18;27517:7;27507:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;27486:9;:18;27496:7;27486:18;;;;;;;;;;;;;;;:55;;;;27557:6;27553:194;27573:8;;:15;;27569:1;:19;27553:194;;;27635:38;27662:7;;27670:1;27662:10;;;;;;;:::i;:::-;;;;;;;;27635:9;:22;27645:8;;27654:1;27645:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27635:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;27610:9;:22;27620:8;;27629:1;27620:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27610:22;;;;;;;;;;;;;;;:63;;;;27711:8;;27720:1;27711:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27693:42;;27702:7;27693:42;;;27724:7;;27732:1;27724:10;;;;;;;:::i;:::-;;;;;;;;27693:42;;;;;;:::i;:::-;;;;;;;;27590:3;;;;;:::i;:::-;;;;27553:194;;;;27148:608;;27059:697:::0;;;;:::o;15742:119::-;15808:7;15835:9;:18;15845:7;15835:18;;;;;;;;;;;;;;;;15828:25;;15742:119;;;:::o;3143:230::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3250:42:::1;3213:81;;3234:6;::::0;::::1;;;;;;;;3213:81;;;;;;;;;;;;3322:42;3305:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3143:230::o:0;11677:92::-;;;;;;;;;;;;;:::o;12944:59::-;;;;:::o;13010:58::-;;;;:::o;12762:33::-;;;;:::o;17037:129::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17150:8:::1;17126:12;:21;17139:7;17126:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17037:129:::0;;:::o;13337:41::-;;;;;;;;;;;;;:::o;12592:36::-;;;;:::o;12403:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2918:79::-;2956:7;2983:6;;;;;;;;;;;2976:13;;2918:79;:::o;15448:87::-;15487:13;15520:7;15513:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15448:87;:::o;16246:269::-;16339:4;16356:129;16365:12;:10;:12::i;:::-;16379:7;16388:96;16427:15;16388:96;;;;;;;;;;;;;;;;;:11;:25;16400:12;:10;:12::i;:::-;16388:25;;;;;;;;;;;;;;;:34;16414:7;16388:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16356:8;:129::i;:::-;16503:4;16496:11;;16246:269;;;;:::o;18655:125::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18764:8:::1;18736:25;;:36;;;;;;;;;;;;;;;;;;18655:125:::0;:::o;20707:167::-;20785:4;20802:42;20812:12;:10;:12::i;:::-;20826:9;20837:6;20802:9;:42::i;:::-;;20862:4;20855:11;;20707:167;;;;:::o;18476:171::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18577:8:::1;18553:21;;:32;;;;;;;;;;;;;;;;;;18601:38;18630:8;18601:38;;;;;;:::i;:::-;;;;;;;;18476:171:::0;:::o;12502:35::-;;;;:::o;13127:26::-;;;;;;;;;;;;;:::o;12635:36::-;;;;:::o;12344:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;12866:69::-;;;;:::o;13241:45::-;;;;;;;;;;;;;:::o;12460:35::-;;;;:::o;15869:143::-;15950:7;15977:11;:18;15989:5;15977:18;;;;;;;;;;;;;;;:27;15996:7;15977:27;;;;;;;;;;;;;;;;15970:34;;15869:143;;;;:::o;23244:154::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23298:7:::1;23318:10;23310:24;;23342:21;23310:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23297:71;;;23387:2;23379:11;;;::::0;::::1;;23286:112;23244:154::o:0;17714:111::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17806:11:::1;17791:12;:26;;;;17714:111:::0;:::o;17599:107::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17691:7:::1;17666:22;;:32;;;;;;;;;;;;;;;;;;17599:107:::0;:::o;17174:135::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17293:8:::1;17264:17;:26;17282:7;17264:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17174:135:::0;;:::o;12723:32::-;;;;:::o;17954:102::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18040:8:::1;18026:10;:22;;;;17954:102:::0;:::o;3381:244::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3490:1:::1;3470:22;;:8;:22;;::::0;3462:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3580:8;3551:38;;3572:6;::::0;::::1;;;;;;;;3551:38;;;;;;;;;;;;3609:8;3600:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3381:244:::0;:::o;23097:139::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23192:6:::1;23185:23;;;23209:10;23220:7;23185:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23097:139:::0;;:::o;17317:127::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17430:6:::1;17404:15;:23;17420:6;17404:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17317:127:::0;;:::o;13295:35::-;;;;;;;;;;;;;:::o;11776:92::-;;;;;;;;;;;;;:::o;12295:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;18336:132::-;3062:12;:10;:12::i;:::-;3052:22;;:6;;;;;;;;;;:22;;;3044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18449:10:::1;18423:15;;:37;;;;;;;;;;;;;;;;;;18336:132:::0;:::o;1603:250::-;1661:7;1690:1;1685;:6;1681:47;;1715:1;1708:8;;;;1681:47;1740:9;1756:1;1752;:5;;;;:::i;:::-;1740:17;;1785:1;1780;1776;:5;;;;:::i;:::-;:10;1768:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1844:1;1837:8;;;1603:250;;;;;:::o;1861:132::-;1919:7;1946:39;1950:1;1953;1946:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1939:46;;1861:132;;;;:::o;1070:181::-;1128:7;1148:9;1164:1;1160;:5;;;;:::i;:::-;1148:17;;1189:1;1184;:6;;1176:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1242:1;1235:8;;;1070:181;;;;:::o;128:115::-;181:15;224:10;209:26;;128:115;:::o;16692:337::-;16802:1;16785:19;;:5;:19;;;16777:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16883:1;16864:21;;:7;:21;;;16856:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16967:6;16937:11;:18;16949:5;16937:18;;;;;;;;;;;;;;;:27;16956:7;16937:27;;;;;;;;;;;;;;;:36;;;;17005:7;16989:32;;16998:5;16989:32;;;17014:6;16989:32;;;;;;:::i;:::-;;;;;;;;16692:337;;;:::o;21203:1886::-;21290:4;21335:1;21317:20;;:6;:20;;;21309:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21419:1;21398:23;;:9;:23;;;21390:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21481:9;:17;21491:6;21481:17;;;;;;;;;;;;;;;;;;;;;;;;;21480:18;:43;;;;;21503:9;:20;21513:9;21503:20;;;;;;;;;;;;;;;;;;;;;;;;;21502:21;21480:43;21472:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21573:16;;;;;;;;;;;21570:1502;;;21623:41;21638:6;21646:9;21657:6;21623:14;:41::i;:::-;21616:48;;;;21570:1502;21722:15;:23;21738:6;21722:23;;;;;;;;;;;;;;;;;;;;;;;;;21721:24;:55;;;;;21750:15;:26;21766:9;21750:26;;;;;;;;;;;;;;;;;;;;;;;;;21749:27;21721:55;:81;;;;;21780:22;;;;;;;;;;;21721:81;21718:196;;;21841:12;;21831:6;:22;;21823:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21718:196;21930:28;21961:24;21979:4;21961:9;:24::i;:::-;21930:55;;22000:28;22055:23;;22031:20;:47;;22000:78;;22111:23;:44;;;;;22139:16;;;;;;;;;;;22138:17;22111:44;:69;;;;;22160:12;:20;22173:6;22160:20;;;;;;;;;;;;;;;;;;;;;;;;;22159:21;22111:69;:94;;;;;22184:21;;;;;;;;;;;22111:94;22107:305;;;22243:25;;;;;;;;;;;22240:97;;;22314:23;;22291:46;;22240:97;22356:36;22371:20;22356:14;:36::i;:::-;22107:305;22448:53;22470:6;22448:53;;;;;;;;;;;;;;;;;:9;:17;22458:6;22448:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22428:9;:17;22438:6;22428:17;;;;;;;;;;;;;;;:73;;;;22518:19;22541:17;:25;22559:6;22541:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22570:17;:28;22588:9;22570:28;;;;;;;;;;;;;;;;;;;;;;;;;22541:57;22540:148;;22654:34;22662:6;22670:9;22681:6;22654:7;:34::i;:::-;22540:148;;;22645:6;22540:148;22518:170;;22708:16;;;;;;;;;;;:51;;;;;22729:19;:30;22749:9;22729:30;;;;;;;;;;;;;;;;;;;;;;;;;22728:31;22708:51;22705:191;;;22829:10;;22788:37;22813:11;22788:20;22798:9;22788;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;22780:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22705:191;22935:37;22960:11;22935:9;:20;22945:9;22935:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;22912:9;:20;22922:9;22912:20;;;;;;;;;;;;;;;:60;;;;23011:9;22994:40;;23003:6;22994:40;;;23022:11;22994:40;;;;;;:::i;:::-;;;;;;;;23056:4;23049:11;;;;;21203:1886;;;;;;:::o;1403:192::-;1489:7;1522:1;1517;:6;;1525:12;1509:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1549:9;1565:1;1561;:5;;;;:::i;:::-;1549:17;;1586:1;1579:8;;;1403:192;;;;;:::o;1259:136::-;1317:7;1344:43;1348:1;1351;1344:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1337:50;;1259:136;;;;:::o;2001:278::-;2087:7;2119:1;2115;:5;2122:12;2107:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2146:9;2162:1;2158;:5;;;;:::i;:::-;2146:17;;2270:1;2263:8;;;2001:278;;;;;:::o;23406:330::-;23499:4;23536:53;23558:6;23536:53;;;;;;;;;;;;;;;;;:9;:17;23546:6;23536:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23516:9;:17;23526:6;23516:17;;;;;;;;;;;;;;;:73;;;;23623:32;23648:6;23623:9;:20;23633:9;23623:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23600:9;:20;23610:9;23600:20;;;;;;;;;;;;;;;:55;;;;23688:9;23671:35;;23680:6;23671:35;;;23699:6;23671:35;;;;;;:::i;:::-;;;;;;;;23724:4;23717:11;;23406:330;;;;;:::o;23744:1449::-;13822:4;13803:16;;:23;;;;;;;;;;;;;;;;;;23818:19:::1;23840:41;23862:18;;23840:17;;:21;;:41;;;;:::i;:::-;23818:63;;23894:22;23919:39;23940:17;;23919:16;;:20;;:39;;;;:::i;:::-;23894:64;;23969:22;23994:39;24015:17;;23994:16;;:20;;:39;;;;:::i;:::-;23969:64;;24132:18;24153:51;24202:1;24153:44;24185:11;24153:27;24165:14;24153:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;24132:72;;24215:20;24238:23;24250:10;24238:7;:11;;:23;;;;:::i;:::-;24215:46;;24274:22;24300:21;24274:47;;24332:30;24349:12;24332:16;:30::i;:::-;24373:23;24400:41;24426:14;24400:21;:25;;:41;;;;:::i;:::-;24373:68;;24454:19;24476:38;24492:21;24511:1;24492:14;:18;;:21;;;;:::i;:::-;24476:11;:15;;:38;;;;:::i;:::-;24454:60;;24527:26;24556:59;24613:1;24556:52;24596:11;24556:35;24576:14;24556:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;24527:88;;24626:26;24655:52;24695:11;24655:35;24675:14;24655:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;24626:81;;24718:26;24747:63;24791:18;24747:39;24767:18;24747:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;24718:92;;24847:1;24826:18;:22;24823:107;;;24873:15;;;;;;;;;;;24865:33;;:53;24899:18;24865:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24823:107;24966:1;24945:18;:22;24942:107;;;24992:15;;;;;;;;;;;24984:33;;:53;25018:18;24984:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24942:107;25094:1;25073:18;:22;:40;;;;;25112:1;25099:10;:14;25073:40;25070:116;;;25130:44;25143:10;25155:18;25130:12;:44::i;:::-;25070:116;23805:1388;;;;;;;;;;;13868:5:::0;13849:16;;:24;;;;;;;;;;;;;;;;;;23744:1449;:::o;26400:622::-;26486:7;26516:17;26536:1;26516:21;;26561:12;:20;26574:6;26561:20;;;;;;;;;;;;;;;;;;;;;;;;;26558:223;;;26610:38;26644:3;26610:29;26621:17;;26610:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;26598:50;;26558:223;;;26678:12;:23;26691:9;26678:23;;;;;;;;;;;;;;;;;;;;;;;;;26675:106;;;26730:39;26765:3;26730:30;26741:18;;26730:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;26718:51;;26675:106;26558:223;26816:1;26804:9;:13;26801:173;;;26861:39;26890:9;26861;:24;26879:4;26861:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;26834:9;:24;26852:4;26834:24;;;;;;;;;;;;;;;:66;;;;26945:4;26920:42;;26929:6;26920:42;;;26952:9;26920:42;;;;;;:::i;:::-;;;;;;;;26801:173;26993:21;27004:9;26993:6;:10;;:21;;;;:::i;:::-;26986:28;;;26400:622;;;;;:::o;25205:666::-;25331:21;25369:1;25355:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25331:40;;25400:4;25382;25387:1;25382:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25426:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25416:4;25421:1;25416:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25461:62;25478:4;25493:15;;;;;;;;;;;25511:11;25461:8;:62::i;:::-;25562:15;;;;;;;;;;;:66;;;25643:11;25669:1;25713:4;25740;25776:15;25562:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25828:35;25845:11;25858:4;25828:35;;;;;;;:::i;:::-;;;;;;;;25260:611;25205:666;:::o;25879:513::-;26027:62;26044:4;26059:15;;;;;;;;;;;26077:11;26027:8;:62::i;:::-;26132:15;;;;;;;;;;;:31;;;26171:9;26204:4;26224:11;26250:1;26293;26336:7;:5;:7::i;:::-;26358:15;26132:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25879:513;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:619::-;2109:6;2117;2125;2174:2;2162:9;2153:7;2149:23;2145:32;2142:119;;;2180:79;;:::i;:::-;2142:119;2300:1;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2271:117;2427:2;2453:53;2498:7;2489:6;2478:9;2474:22;2453:53;:::i;:::-;2443:63;;2398:118;2555:2;2581:53;2626:7;2617:6;2606:9;2602:22;2581:53;:::i;:::-;2571:63;;2526:118;2032:619;;;;;:::o;2657:126::-;2694:7;2734:42;2727:5;2723:54;2712:65;;2657:126;;;:::o;2789:96::-;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:118::-;2978:24;2996:5;2978:24;:::i;:::-;2973:3;2966:37;2891:118;;:::o;3015:222::-;3108:4;3146:2;3135:9;3131:18;3123:26;;3159:71;3227:1;3216:9;3212:17;3203:6;3159:71;:::i;:::-;3015:222;;;;:::o;3243:122::-;3316:24;3334:5;3316:24;:::i;:::-;3309:5;3306:35;3296:63;;3355:1;3352;3345:12;3296:63;3243:122;:::o;3371:139::-;3417:5;3455:6;3442:20;3433:29;;3471:33;3498:5;3471:33;:::i;:::-;3371:139;;;;:::o;3516:474::-;3584:6;3592;3641:2;3629:9;3620:7;3616:23;3612:32;3609:119;;;3647:79;;:::i;:::-;3609:119;3767:1;3792:53;3837:7;3828:6;3817:9;3813:22;3792:53;:::i;:::-;3782:63;;3738:117;3894:2;3920:53;3965:7;3956:6;3945:9;3941:22;3920:53;:::i;:::-;3910:63;;3865:118;3516:474;;;;;:::o;3996:90::-;4030:7;4073:5;4066:13;4059:21;4048:32;;3996:90;;;:::o;4092:109::-;4173:21;4188:5;4173:21;:::i;:::-;4168:3;4161:34;4092:109;;:::o;4207:210::-;4294:4;4332:2;4321:9;4317:18;4309:26;;4345:65;4407:1;4396:9;4392:17;4383:6;4345:65;:::i;:::-;4207:210;;;;:::o;4423:116::-;4493:21;4508:5;4493:21;:::i;:::-;4486:5;4483:32;4473:60;;4529:1;4526;4519:12;4473:60;4423:116;:::o;4545:133::-;4588:5;4626:6;4613:20;4604:29;;4642:30;4666:5;4642:30;:::i;:::-;4545:133;;;;:::o;4684:468::-;4749:6;4757;4806:2;4794:9;4785:7;4781:23;4777:32;4774:119;;;4812:79;;:::i;:::-;4774:119;4932:1;4957:53;5002:7;4993:6;4982:9;4978:22;4957:53;:::i;:::-;4947:63;;4903:117;5059:2;5085:50;5127:7;5118:6;5107:9;5103:22;5085:50;:::i;:::-;5075:60;;5030:115;4684:468;;;;;:::o;5158:60::-;5186:3;5207:5;5200:12;;5158:60;;;:::o;5224:142::-;5274:9;5307:53;5325:34;5334:24;5352:5;5334:24;:::i;:::-;5325:34;:::i;:::-;5307:53;:::i;:::-;5294:66;;5224:142;;;:::o;5372:126::-;5422:9;5455:37;5486:5;5455:37;:::i;:::-;5442:50;;5372:126;;;:::o;5504:153::-;5581:9;5614:37;5645:5;5614:37;:::i;:::-;5601:50;;5504:153;;;:::o;5663:185::-;5777:64;5835:5;5777:64;:::i;:::-;5772:3;5765:77;5663:185;;:::o;5854:276::-;5974:4;6012:2;6001:9;5997:18;5989:26;;6025:98;6120:1;6109:9;6105:17;6096:6;6025:98;:::i;:::-;5854:276;;;;:::o;6136:118::-;6223:24;6241:5;6223:24;:::i;:::-;6218:3;6211:37;6136:118;;:::o;6260:222::-;6353:4;6391:2;6380:9;6376:18;6368:26;;6404:71;6472:1;6461:9;6457:17;6448:6;6404:71;:::i;:::-;6260:222;;;;:::o;6488:619::-;6565:6;6573;6581;6630:2;6618:9;6609:7;6605:23;6601:32;6598:119;;;6636:79;;:::i;:::-;6598:119;6756:1;6781:53;6826:7;6817:6;6806:9;6802:22;6781:53;:::i;:::-;6771:63;;6727:117;6883:2;6909:53;6954:7;6945:6;6934:9;6930:22;6909:53;:::i;:::-;6899:63;;6854:118;7011:2;7037:53;7082:7;7073:6;7062:9;7058:22;7037:53;:::i;:::-;7027:63;;6982:118;6488:619;;;;;:::o;7113:323::-;7169:6;7218:2;7206:9;7197:7;7193:23;7189:32;7186:119;;;7224:79;;:::i;:::-;7186:119;7344:1;7369:50;7411:7;7402:6;7391:9;7387:22;7369:50;:::i;:::-;7359:60;;7315:114;7113:323;;;;:::o;7442:86::-;7477:7;7517:4;7510:5;7506:16;7495:27;;7442:86;;;:::o;7534:112::-;7617:22;7633:5;7617:22;:::i;:::-;7612:3;7605:35;7534:112;;:::o;7652:214::-;7741:4;7779:2;7768:9;7764:18;7756:26;;7792:67;7856:1;7845:9;7841:17;7832:6;7792:67;:::i;:::-;7652:214;;;;:::o;7872:329::-;7931:6;7980:2;7968:9;7959:7;7955:23;7951:32;7948:119;;;7986:79;;:::i;:::-;7948:119;8106:1;8131:53;8176:7;8167:6;8156:9;8152:22;8131:53;:::i;:::-;8121:63;;8077:117;7872:329;;;;:::o;8207:::-;8266:6;8315:2;8303:9;8294:7;8290:23;8286:32;8283:119;;;8321:79;;:::i;:::-;8283:119;8441:1;8466:53;8511:7;8502:6;8491:9;8487:22;8466:53;:::i;:::-;8456:63;;8412:117;8207:329;;;;:::o;8542:117::-;8651:1;8648;8641:12;8665:117;8774:1;8771;8764:12;8788:117;8897:1;8894;8887:12;8928:568;9001:8;9011:6;9061:3;9054:4;9046:6;9042:17;9038:27;9028:122;;9069:79;;:::i;:::-;9028:122;9182:6;9169:20;9159:30;;9212:18;9204:6;9201:30;9198:117;;;9234:79;;:::i;:::-;9198:117;9348:4;9340:6;9336:17;9324:29;;9402:3;9394:4;9386:6;9382:17;9372:8;9368:32;9365:41;9362:128;;;9409:79;;:::i;:::-;9362:128;8928:568;;;;;:::o;9519:::-;9592:8;9602:6;9652:3;9645:4;9637:6;9633:17;9629:27;9619:122;;9660:79;;:::i;:::-;9619:122;9773:6;9760:20;9750:30;;9803:18;9795:6;9792:30;9789:117;;;9825:79;;:::i;:::-;9789:117;9939:4;9931:6;9927:17;9915:29;;9993:3;9985:4;9977:6;9973:17;9963:8;9959:32;9956:41;9953:128;;;10000:79;;:::i;:::-;9953:128;9519:568;;;;;:::o;10093:934::-;10215:6;10223;10231;10239;10288:2;10276:9;10267:7;10263:23;10259:32;10256:119;;;10294:79;;:::i;:::-;10256:119;10442:1;10431:9;10427:17;10414:31;10472:18;10464:6;10461:30;10458:117;;;10494:79;;:::i;:::-;10458:117;10607:80;10679:7;10670:6;10659:9;10655:22;10607:80;:::i;:::-;10589:98;;;;10385:312;10764:2;10753:9;10749:18;10736:32;10795:18;10787:6;10784:30;10781:117;;;10817:79;;:::i;:::-;10781:117;10930:80;11002:7;10993:6;10982:9;10978:22;10930:80;:::i;:::-;10912:98;;;;10707:313;10093:934;;;;;;;:::o;11033:104::-;11078:7;11107:24;11125:5;11107:24;:::i;:::-;11096:35;;11033:104;;;:::o;11143:142::-;11246:32;11272:5;11246:32;:::i;:::-;11241:3;11234:45;11143:142;;:::o;11291:254::-;11400:4;11438:2;11427:9;11423:18;11415:26;;11451:87;11535:1;11524:9;11520:17;11511:6;11451:87;:::i;:::-;11291:254;;;;:::o;11551:474::-;11619:6;11627;11676:2;11664:9;11655:7;11651:23;11647:32;11644:119;;;11682:79;;:::i;:::-;11644:119;11802:1;11827:53;11872:7;11863:6;11852:9;11848:22;11827:53;:::i;:::-;11817:63;;11773:117;11929:2;11955:53;12000:7;11991:6;11980:9;11976:22;11955:53;:::i;:::-;11945:63;;11900:118;11551:474;;;;;:::o;12031:180::-;12079:77;12076:1;12069:88;12176:4;12173:1;12166:15;12200:4;12197:1;12190:15;12217:320;12261:6;12298:1;12292:4;12288:12;12278:22;;12345:1;12339:4;12335:12;12366:18;12356:81;;12422:4;12414:6;12410:17;12400:27;;12356:81;12484:2;12476:6;12473:14;12453:18;12450:38;12447:84;;12503:18;;:::i;:::-;12447:84;12268:269;12217:320;;;:::o;12543:182::-;12683:34;12679:1;12671:6;12667:14;12660:58;12543:182;:::o;12731:366::-;12873:3;12894:67;12958:2;12953:3;12894:67;:::i;:::-;12887:74;;12970:93;13059:3;12970:93;:::i;:::-;13088:2;13083:3;13079:12;13072:19;;12731:366;;;:::o;13103:419::-;13269:4;13307:2;13296:9;13292:18;13284:26;;13356:9;13350:4;13346:20;13342:1;13331:9;13327:17;13320:47;13384:131;13510:4;13384:131;:::i;:::-;13376:139;;13103:419;;;:::o;13528:143::-;13585:5;13616:6;13610:13;13601:22;;13632:33;13659:5;13632:33;:::i;:::-;13528:143;;;;:::o;13677:351::-;13747:6;13796:2;13784:9;13775:7;13771:23;13767:32;13764:119;;;13802:79;;:::i;:::-;13764:119;13922:1;13947:64;14003:7;13994:6;13983:9;13979:22;13947:64;:::i;:::-;13937:74;;13893:128;13677:351;;;;:::o;14034:332::-;14155:4;14193:2;14182:9;14178:18;14170:26;;14206:71;14274:1;14263:9;14259:17;14250:6;14206:71;:::i;:::-;14287:72;14355:2;14344:9;14340:18;14331:6;14287:72;:::i;:::-;14034:332;;;;;:::o;14372:172::-;14512:24;14508:1;14500:6;14496:14;14489:48;14372:172;:::o;14550:366::-;14692:3;14713:67;14777:2;14772:3;14713:67;:::i;:::-;14706:74;;14789:93;14878:3;14789:93;:::i;:::-;14907:2;14902:3;14898:12;14891:19;;14550:366;;;:::o;14922:419::-;15088:4;15126:2;15115:9;15111:18;15103:26;;15175:9;15169:4;15165:20;15161:1;15150:9;15146:17;15139:47;15203:131;15329:4;15203:131;:::i;:::-;15195:139;;14922:419;;;:::o;15347:180::-;15395:77;15392:1;15385:88;15492:4;15489:1;15482:15;15516:4;15513:1;15506:15;15533:180;15581:77;15578:1;15571:88;15678:4;15675:1;15668:15;15702:4;15699:1;15692:15;15719:191;15759:3;15778:20;15796:1;15778:20;:::i;:::-;15773:25;;15812:20;15830:1;15812:20;:::i;:::-;15807:25;;15855:1;15852;15848:9;15841:16;;15876:3;15873:1;15870:10;15867:36;;;15883:18;;:::i;:::-;15867:36;15719:191;;;;:::o;15916:233::-;15955:3;15978:24;15996:5;15978:24;:::i;:::-;15969:33;;16024:66;16017:5;16014:77;16011:103;;16094:18;;:::i;:::-;16011:103;16141:1;16134:5;16130:13;16123:20;;15916:233;;;:::o;16155:177::-;16295:29;16291:1;16283:6;16279:14;16272:53;16155:177;:::o;16338:366::-;16480:3;16501:67;16565:2;16560:3;16501:67;:::i;:::-;16494:74;;16577:93;16666:3;16577:93;:::i;:::-;16695:2;16690:3;16686:12;16679:19;;16338:366;;;:::o;16710:419::-;16876:4;16914:2;16903:9;16899:18;16891:26;;16963:9;16957:4;16953:20;16949:1;16938:9;16934:17;16927:47;16991:131;17117:4;16991:131;:::i;:::-;16983:139;;16710:419;;;:::o;17135:147::-;17236:11;17273:3;17258:18;;17135:147;;;;:::o;17288:114::-;;:::o;17408:398::-;17567:3;17588:83;17669:1;17664:3;17588:83;:::i;:::-;17581:90;;17680:93;17769:3;17680:93;:::i;:::-;17798:1;17793:3;17789:11;17782:18;;17408:398;;;:::o;17812:379::-;17996:3;18018:147;18161:3;18018:147;:::i;:::-;18011:154;;18182:3;18175:10;;17812:379;;;:::o;18197:225::-;18337:34;18333:1;18325:6;18321:14;18314:58;18406:8;18401:2;18393:6;18389:15;18382:33;18197:225;:::o;18428:366::-;18570:3;18591:67;18655:2;18650:3;18591:67;:::i;:::-;18584:74;;18667:93;18756:3;18667:93;:::i;:::-;18785:2;18780:3;18776:12;18769:19;;18428:366;;;:::o;18800:419::-;18966:4;19004:2;18993:9;18989:18;18981:26;;19053:9;19047:4;19043:20;19039:1;19028:9;19024:17;19017:47;19081:131;19207:4;19081:131;:::i;:::-;19073:139;;18800:419;;;:::o;19225:332::-;19346:4;19384:2;19373:9;19369:18;19361:26;;19397:71;19465:1;19454:9;19450:17;19441:6;19397:71;:::i;:::-;19478:72;19546:2;19535:9;19531:18;19522:6;19478:72;:::i;:::-;19225:332;;;;;:::o;19563:137::-;19617:5;19648:6;19642:13;19633:22;;19664:30;19688:5;19664:30;:::i;:::-;19563:137;;;;:::o;19706:345::-;19773:6;19822:2;19810:9;19801:7;19797:23;19793:32;19790:119;;;19828:79;;:::i;:::-;19790:119;19948:1;19973:61;20026:7;20017:6;20006:9;20002:22;19973:61;:::i;:::-;19963:71;;19919:125;19706:345;;;;:::o;20057:410::-;20097:7;20120:20;20138:1;20120:20;:::i;:::-;20115:25;;20154:20;20172:1;20154:20;:::i;:::-;20149:25;;20209:1;20206;20202:9;20231:30;20249:11;20231:30;:::i;:::-;20220:41;;20410:1;20401:7;20397:15;20394:1;20391:22;20371:1;20364:9;20344:83;20321:139;;20440:18;;:::i;:::-;20321:139;20105:362;20057:410;;;;:::o;20473:180::-;20521:77;20518:1;20511:88;20618:4;20615:1;20608:15;20642:4;20639:1;20632:15;20659:185;20699:1;20716:20;20734:1;20716:20;:::i;:::-;20711:25;;20750:20;20768:1;20750:20;:::i;:::-;20745:25;;20789:1;20779:35;;20794:18;;:::i;:::-;20779:35;20836:1;20833;20829:9;20824:14;;20659:185;;;;:::o;20850:220::-;20990:34;20986:1;20978:6;20974:14;20967:58;21059:3;21054:2;21046:6;21042:15;21035:28;20850:220;:::o;21076:366::-;21218:3;21239:67;21303:2;21298:3;21239:67;:::i;:::-;21232:74;;21315:93;21404:3;21315:93;:::i;:::-;21433:2;21428:3;21424:12;21417:19;;21076:366;;;:::o;21448:419::-;21614:4;21652:2;21641:9;21637:18;21629:26;;21701:9;21695:4;21691:20;21687:1;21676:9;21672:17;21665:47;21729:131;21855:4;21729:131;:::i;:::-;21721:139;;21448:419;;;:::o;21873:177::-;22013:29;22009:1;22001:6;21997:14;21990:53;21873:177;:::o;22056:366::-;22198:3;22219:67;22283:2;22278:3;22219:67;:::i;:::-;22212:74;;22295:93;22384:3;22295:93;:::i;:::-;22413:2;22408:3;22404:12;22397:19;;22056:366;;;:::o;22428:419::-;22594:4;22632:2;22621:9;22617:18;22609:26;;22681:9;22675:4;22671:20;22667:1;22656:9;22652:17;22645:47;22709:131;22835:4;22709:131;:::i;:::-;22701:139;;22428:419;;;:::o;22853:223::-;22993:34;22989:1;22981:6;22977:14;22970:58;23062:6;23057:2;23049:6;23045:15;23038:31;22853:223;:::o;23082:366::-;23224:3;23245:67;23309:2;23304:3;23245:67;:::i;:::-;23238:74;;23321:93;23410:3;23321:93;:::i;:::-;23439:2;23434:3;23430:12;23423:19;;23082:366;;;:::o;23454:419::-;23620:4;23658:2;23647:9;23643:18;23635:26;;23707:9;23701:4;23697:20;23693:1;23682:9;23678:17;23671:47;23735:131;23861:4;23735:131;:::i;:::-;23727:139;;23454:419;;;:::o;23879:221::-;24019:34;24015:1;24007:6;24003:14;23996:58;24088:4;24083:2;24075:6;24071:15;24064:29;23879:221;:::o;24106:366::-;24248:3;24269:67;24333:2;24328:3;24269:67;:::i;:::-;24262:74;;24345:93;24434:3;24345:93;:::i;:::-;24463:2;24458:3;24454:12;24447:19;;24106:366;;;:::o;24478:419::-;24644:4;24682:2;24671:9;24667:18;24659:26;;24731:9;24725:4;24721:20;24717:1;24706:9;24702:17;24695:47;24759:131;24885:4;24759:131;:::i;:::-;24751:139;;24478:419;;;:::o;24903:224::-;25043:34;25039:1;25031:6;25027:14;25020:58;25112:7;25107:2;25099:6;25095:15;25088:32;24903:224;:::o;25133:366::-;25275:3;25296:67;25360:2;25355:3;25296:67;:::i;:::-;25289:74;;25372:93;25461:3;25372:93;:::i;:::-;25490:2;25485:3;25481:12;25474:19;;25133:366;;;:::o;25505:419::-;25671:4;25709:2;25698:9;25694:18;25686:26;;25758:9;25752:4;25748:20;25744:1;25733:9;25729:17;25722:47;25786:131;25912:4;25786:131;:::i;:::-;25778:139;;25505:419;;;:::o;25930:222::-;26070:34;26066:1;26058:6;26054:14;26047:58;26139:5;26134:2;26126:6;26122:15;26115:30;25930:222;:::o;26158:366::-;26300:3;26321:67;26385:2;26380:3;26321:67;:::i;:::-;26314:74;;26397:93;26486:3;26397:93;:::i;:::-;26515:2;26510:3;26506:12;26499:19;;26158:366;;;:::o;26530:419::-;26696:4;26734:2;26723:9;26719:18;26711:26;;26783:9;26777:4;26773:20;26769:1;26758:9;26754:17;26747:47;26811:131;26937:4;26811:131;:::i;:::-;26803:139;;26530:419;;;:::o;26955:179::-;27095:31;27091:1;27083:6;27079:14;27072:55;26955:179;:::o;27140:366::-;27282:3;27303:67;27367:2;27362:3;27303:67;:::i;:::-;27296:74;;27379:93;27468:3;27379:93;:::i;:::-;27497:2;27492:3;27488:12;27481:19;;27140:366;;;:::o;27512:419::-;27678:4;27716:2;27705:9;27701:18;27693:26;;27765:9;27759:4;27755:20;27751:1;27740:9;27736:17;27729:47;27793:131;27919:4;27793:131;:::i;:::-;27785:139;;27512:419;;;:::o;27937:227::-;28077:34;28073:1;28065:6;28061:14;28054:58;28146:10;28141:2;28133:6;28129:15;28122:35;27937:227;:::o;28170:366::-;28312:3;28333:67;28397:2;28392:3;28333:67;:::i;:::-;28326:74;;28409:93;28498:3;28409:93;:::i;:::-;28527:2;28522:3;28518:12;28511:19;;28170:366;;;:::o;28542:419::-;28708:4;28746:2;28735:9;28731:18;28723:26;;28795:9;28789:4;28785:20;28781:1;28770:9;28766:17;28759:47;28823:131;28949:4;28823:131;:::i;:::-;28815:139;;28542:419;;;:::o;28967:224::-;29107:34;29103:1;29095:6;29091:14;29084:58;29176:7;29171:2;29163:6;29159:15;29152:32;28967:224;:::o;29197:366::-;29339:3;29360:67;29424:2;29419:3;29360:67;:::i;:::-;29353:74;;29436:93;29525:3;29436:93;:::i;:::-;29554:2;29549:3;29545:12;29538:19;;29197:366;;;:::o;29569:419::-;29735:4;29773:2;29762:9;29758:18;29750:26;;29822:9;29816:4;29812:20;29808:1;29797:9;29793:17;29786:47;29850:131;29976:4;29850:131;:::i;:::-;29842:139;;29569:419;;;:::o;29994:194::-;30034:4;30054:20;30072:1;30054:20;:::i;:::-;30049:25;;30088:20;30106:1;30088:20;:::i;:::-;30083:25;;30132:1;30129;30125:9;30117:17;;30156:1;30150:4;30147:11;30144:37;;;30161:18;;:::i;:::-;30144:37;29994:194;;;;:::o;30194:180::-;30242:77;30239:1;30232:88;30339:4;30336:1;30329:15;30363:4;30360:1;30353:15;30380:85;30425:7;30454:5;30443:16;;30380:85;;;:::o;30471:158::-;30529:9;30562:61;30580:42;30589:32;30615:5;30589:32;:::i;:::-;30580:42;:::i;:::-;30562:61;:::i;:::-;30549:74;;30471:158;;;:::o;30635:147::-;30730:45;30769:5;30730:45;:::i;:::-;30725:3;30718:58;30635:147;;:::o;30788:114::-;30855:6;30889:5;30883:12;30873:22;;30788:114;;;:::o;30908:184::-;31007:11;31041:6;31036:3;31029:19;31081:4;31076:3;31072:14;31057:29;;30908:184;;;;:::o;31098:132::-;31165:4;31188:3;31180:11;;31218:4;31213:3;31209:14;31201:22;;31098:132;;;:::o;31236:108::-;31313:24;31331:5;31313:24;:::i;:::-;31308:3;31301:37;31236:108;;:::o;31350:179::-;31419:10;31440:46;31482:3;31474:6;31440:46;:::i;:::-;31518:4;31513:3;31509:14;31495:28;;31350:179;;;;:::o;31535:113::-;31605:4;31637;31632:3;31628:14;31620:22;;31535:113;;;:::o;31684:732::-;31803:3;31832:54;31880:5;31832:54;:::i;:::-;31902:86;31981:6;31976:3;31902:86;:::i;:::-;31895:93;;32012:56;32062:5;32012:56;:::i;:::-;32091:7;32122:1;32107:284;32132:6;32129:1;32126:13;32107:284;;;32208:6;32202:13;32235:63;32294:3;32279:13;32235:63;:::i;:::-;32228:70;;32321:60;32374:6;32321:60;:::i;:::-;32311:70;;32167:224;32154:1;32151;32147:9;32142:14;;32107:284;;;32111:14;32407:3;32400:10;;31808:608;;;31684:732;;;;:::o;32422:831::-;32685:4;32723:3;32712:9;32708:19;32700:27;;32737:71;32805:1;32794:9;32790:17;32781:6;32737:71;:::i;:::-;32818:80;32894:2;32883:9;32879:18;32870:6;32818:80;:::i;:::-;32945:9;32939:4;32935:20;32930:2;32919:9;32915:18;32908:48;32973:108;33076:4;33067:6;32973:108;:::i;:::-;32965:116;;33091:72;33159:2;33148:9;33144:18;33135:6;33091:72;:::i;:::-;33173:73;33241:3;33230:9;33226:19;33217:6;33173:73;:::i;:::-;32422:831;;;;;;;;:::o;33259:483::-;33430:4;33468:2;33457:9;33453:18;33445:26;;33481:71;33549:1;33538:9;33534:17;33525:6;33481:71;:::i;:::-;33599:9;33593:4;33589:20;33584:2;33573:9;33569:18;33562:48;33627:108;33730:4;33721:6;33627:108;:::i;:::-;33619:116;;33259:483;;;;;:::o;33748:807::-;33997:4;34035:3;34024:9;34020:19;34012:27;;34049:71;34117:1;34106:9;34102:17;34093:6;34049:71;:::i;:::-;34130:72;34198:2;34187:9;34183:18;34174:6;34130:72;:::i;:::-;34212:80;34288:2;34277:9;34273:18;34264:6;34212:80;:::i;:::-;34302;34378:2;34367:9;34363:18;34354:6;34302:80;:::i;:::-;34392:73;34460:3;34449:9;34445:19;34436:6;34392:73;:::i;:::-;34475;34543:3;34532:9;34528:19;34519:6;34475:73;:::i;:::-;33748:807;;;;;;;;;:::o;34561:143::-;34618:5;34649:6;34643:13;34634:22;;34665:33;34692:5;34665:33;:::i;:::-;34561:143;;;;:::o;34710:663::-;34798:6;34806;34814;34863:2;34851:9;34842:7;34838:23;34834:32;34831:119;;;34869:79;;:::i;:::-;34831:119;34989:1;35014:64;35070:7;35061:6;35050:9;35046:22;35014:64;:::i;:::-;35004:74;;34960:128;35127:2;35153:64;35209:7;35200:6;35189:9;35185:22;35153:64;:::i;:::-;35143:74;;35098:129;35266:2;35292:64;35348:7;35339:6;35328:9;35324:22;35292:64;:::i;:::-;35282:74;;35237:129;34710:663;;;;;:::o

Swarm Source

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