ETH Price: $3,215.18 (-6.65%)
Gas: 8 Gwei

Token

SHIBAMOONHUNTER ($SHIBAMOON)
 

Overview

Max Total Supply

1,000,000,000,000 $SHIBAMOON

Holders

10

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,799,999,999.12 $SHIBAMOON

Value
$0.00
0xa01257a31a8b54d469e2646e0f94adab60292122
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:
SHIBAMOONHUNTER

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-09
*/

/*
    🌕SHIBA MOON HUNTER🌕 ERC20

    CHAIN : ERC20

    SYMBOL : $SHIBMOON

    SUPPLY : 1,000,000,000,000

    SLIPPAGE : 14-16%
    
    AT LAUNCH
    MAX BUY : 3% (30,000,000,000 $SHIBMOON)
    MAX WALLET : 3% (30,000,000,000 $SHIBMOON)

    TG : @shibamoonhunter 

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

abstract contract Context {

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

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

interface IERC20 {

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

    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(0));
        _owner = address(0);
    }

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

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

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 SHIBAMOONHUNTER is Context, IERC20, Ownable {
    
    using SafeMath for uint256;

    using Address for address;

    uint256 private _totalSupply = 1000000000000 * 10**9; 

    string private _name = "SHIBAMOONHUNTER";
    string private _symbol = "$SHIBAMOON";
    uint8 private _decimals = 9;


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

    mapping (address => bool) public exceptfeefor;
    uint256 public totaltax = 0;
    mapping (address => bool) public exceptwalletfor;
    uint256 public sniperrekt = 0;
    mapping (address => bool) public nobot;


    uint256 public autoaddliquidity = 2;
    uint256 public marketingtax = 5;
    uint256 public devtax = 5;     

    address payable public mkwallet = payable(0x0E0cCeD40B49E0D35640bCE51d814690Cbad2552); 
    address payable public devwallet = payable(0x0B6cae5924dBAFf0c5A9Cf833661b94772E9dd94); 
    address public immutable zeroaddress = 0x000000000000000000000000000000000000dEaD;
    uint256 public burntax = 0;  
    
    uint256 public limitbuy = 30000000000 * 10**9;  // 3% of supply at launch
    uint256 public limitwallet = 30000000000 * 10**9;  // 3% of supply at launch
    uint256 private minimumtoswap = 10000 * 10**9;   



    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = 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); 
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
        exceptfeefor[owner()] = true;
        exceptfeefor[address(this)] = true;
        totaltax = autoaddliquidity.add(marketingtax).add(devtax);
        sniperrekt = totaltax.add(burntax);
        exceptwalletfor[owner()] = true;
        exceptwalletfor[address(uniswapV2Pair)] = 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 MinimumToSwap() public view returns (uint256) {
        return minimumtoswap;
    }

    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 blacklistAddress(address account, bool newValue) public onlyOwner {
        nobot[account] = newValue;
    }

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

    function settax(uint256 newautolp, uint256 newmarketing, uint256 newdevtax, uint256 newburntax) external onlyOwner() {
        autoaddliquidity = newautolp;
        marketingtax = newmarketing;
        devtax = newdevtax;
        burntax = newburntax;
        totaltax = autoaddliquidity.add(marketingtax).add(devtax);
        sniperrekt = totaltax.add(burntax);
    }

    function setlimitbuy(uint256 newlimitbuy) external onlyOwner() {
        limitbuy = newlimitbuy;
    }

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

    function setexceptwallet(address holder, bool exempt) external onlyOwner {
        exceptwalletfor[holder] = exempt;
    }

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

    function setminimumtoswap(uint256 newLimit) external onlyOwner() {
        minimumtoswap = newLimit;
    }

    function changemarketingwallet(address newAddress) external onlyOwner() {
        mkwallet = payable(newAddress);
    }

    function changedevwallet(address newAddress) external onlyOwner() {
        devwallet = payable(newAddress);
    }


    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function setRouterVersion(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());
        }

        uniswapV2Pair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address
    }

     //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(!nobot[sender] && !nobot[recipient], "To/from address is blacklisted!");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(sender != owner() && recipient != owner()) {
                require(amount <= limitbuy, "Transfer amount exceeds the maxTxAmount.");
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumtoswap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && sender != uniswapV2Pair && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumtoswap;
                swapAndLiquify(contractTokenBalance);    
            }

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

            uint256 finalAmount = (exceptfeefor[sender] || exceptfeefor[recipient]) ? 
                                         amount : getfee(sender, recipient, amount);

            if(checkWalletLimit && !exceptwalletfor[recipient])
                require(balanceOf(recipient).add(finalAmount) <= limitwallet);

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

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

    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 tokensForLP = tAmount.div(totaltax).mul(autoaddliquidity).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalFee = totaltax.sub(autoaddliquidity.div(2));
        
        uint256 amountLiquidity = amountReceived.mul(autoaddliquidity).div(totalFee).div(2);
        uint256 amountRewards = amountReceived.mul(devtax).div(totalFee);
        uint256 amountMarketing = amountReceived.sub(amountLiquidity).sub(amountRewards);

        transferToAddressETH(mkwallet, amountMarketing);
        transferToAddressETH(devwallet, amountRewards);
        addLiquidity(tokensForLP, amountLiquidity);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(zeroaddress));
    }

    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 getfee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = recipient == uniswapV2Pair ? amount.mul(sniperrekt).div(100) 
                                : amount.mul(totaltax).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

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

    function opentradingbylimit(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    

}

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":"MinimumToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoaddliquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burntax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"changedevwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"changemarketingwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devtax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devwallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exceptfeefor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exceptwalletfor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","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":[],"name":"limitbuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitwallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingtax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mkwallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nobot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"opentrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"opentradingbylimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"openwalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"setRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setexceptfeefor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setexceptwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newlimitbuy","type":"uint256"}],"name":"setlimitbuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setminimumtoswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newautolp","type":"uint256"},{"internalType":"uint256","name":"newmarketing","type":"uint256"},{"internalType":"uint256","name":"newdevtax","type":"uint256"},{"internalType":"uint256","name":"newburntax","type":"uint256"}],"name":"settax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperrekt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"totaltax","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroaddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052683635c9adc5dea000006003556040518060400160405280600f81526020017f53484942414d4f4f4e48554e5445520000000000000000000000000000000000815250600490805190602001906200005e9291906200093c565b506040518060400160405280600a81526020017f2453484942414d4f4f4e0000000000000000000000000000000000000000000081525060059080519060200190620000ac9291906200093c565b506009600660006101000a81548160ff021916908360ff1602179055506000600a556000600c556002600e556005600f556005601055730e0cced40b49e0d35640bce51d814690cbad2552601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730b6cae5924dbaff0c5a9cf833661b94772e9dd94601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525060006013556801a055690d9db800006014556801a055690d9db800006015556509184e72a0006016556001601860156101000a81548160ff0219169083151502179055506000601860166101000a81548160ff0219169083151502179055506001601860176101000a81548160ff0219169083151502179055503480156200024b57600080fd5b5060006200025e620008a860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035c57600080fd5b505afa15801562000371573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000397919062000a03565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003fa57600080fd5b505afa1580156200040f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000435919062000a03565b6040518363ffffffff1660e01b81526004016200045492919062000a7e565b602060405180830381600087803b1580156200046f57600080fd5b505af115801562000484573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004aa919062000a03565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000620005e6620008b060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006c8601054620006b4600f54600e54620008d960201b620027d21790919060201c565b620008d960201b620027d21790919060201c565b600a81905550620006ec601354600a54620008d960201b620027d21790919060201c565b600c819055506001600b600062000708620008b060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060035460076000620007ea620008a860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000838620008a860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000899919062000acd565b60405180910390a35062000c72565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808284620008ea919062000afb565b90508381101562000932576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009299062000aab565b60405180910390fd5b8091505092915050565b8280546200094a9062000b96565b90600052602060002090601f0160209004810192826200096e5760008555620009ba565b82601f106200098957805160ff1916838001178555620009ba565b82800160010185558215620009ba579182015b82811115620009b95782518255916020019190600101906200099c565b5b509050620009c99190620009cd565b5090565b5b80821115620009e8576000816000905550600101620009ce565b5090565b600081519050620009fd8162000c58565b92915050565b60006020828403121562000a1c5762000a1b62000c2a565b5b600062000a2c84828501620009ec565b91505092915050565b62000a408162000b58565b82525050565b600062000a55601b8362000aea565b915062000a628262000c2f565b602082019050919050565b62000a788162000b8c565b82525050565b600060408201905062000a95600083018562000a35565b62000aa4602083018462000a35565b9392505050565b6000602082019050818103600083015262000ac68162000a46565b9050919050565b600060208201905062000ae4600083018462000a6d565b92915050565b600082825260208201905092915050565b600062000b088262000b8c565b915062000b158362000b8c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b4d5762000b4c62000bcc565b5b828201905092915050565b600062000b658262000b6c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000baf57607f821691505b6020821081141562000bc65762000bc562000bfb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b62000c638162000b58565b811462000c6f57600080fd5b50565b60805160601c614ce762000c986000396000818161143f01526115640152614ce76000f3fe6080604052600436106103035760003560e01c806370a0823111610190578063abe0b9a4116100dc578063da00097d11610095578063dd62ed3e1161006f578063dd62ed3e14610b93578063f1d5f51714610bd0578063f2fde38b14610bf9578063f872858a14610c225761030a565b8063da00097d14610b14578063db4a133714610b3f578063dd46706414610b6a5761030a565b8063abe0b9a414610a1a578063c2f5253f14610a45578063c45ab1f414610a6e578063c948e54414610a97578063d0197ed014610ac0578063d9038b3414610aeb5761030a565b80638da5cb5b11610149578063993f585e11610123578063993f585e1461095e578063a457c2d714610989578063a69df4b5146109c6578063a9059cbb146109dd5761030a565b80638da5cb5b146108df5780638f9edde21461090a57806395d89b41146109335761030a565b806370a08231146107e1578063715018a61461081e5780637dfa0349146108355780637e9d0f1c1461085e5780637f43537e146108895780638c82ce3f146108b45761030a565b8063313ce5671161024f57806349bd5a5e11610208578063557ed1ba116101e2578063557ed1ba146107235780635c12c42d1461074e5780635f66d09714610779578063602bc62b146107b65761030a565b806349bd5a5e146106a457806349e99b46146106cf5780634a74bb02146106f85761030a565b8063313ce567146105945780633341adfe146105bf578063385b5b6a146105e8578063385e811514610613578063395093511461063e578063455a43961461067b5761030a565b80631c1d9747116102bc57806324b32aeb1161029657806324b32aeb146104d857806327c90fc7146105035780632b112e491461052c5780632e6f8dfc146105575761030a565b80631c1d9747146104475780631cfb50a31461047057806323b872dd1461049b5761030a565b806306fdde031461030f578063095ea7b31461033a5780630ef32bd71461037757806314a1e0cf146103b45780631694505e146103f157806318160ddd1461041c5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b60405161033191906142b3565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613d7b565b610cdf565b60405161036e919061427d565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190613c4e565b610cfd565b6040516103ab91906141bd565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190613c4e565b611167565b6040516103e8919061427d565b60405180910390f35b3480156103fd57600080fd5b50610406611187565b6040516104139190614298565b60405180910390f35b34801561042857600080fd5b506104316111ad565b60405161043e9190614475565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190613c4e565b6111b7565b005b34801561047c57600080fd5b50610485611290565b60405161049291906141d8565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190613ce8565b6112b6565b6040516104cf919061427d565b60405180910390f35b3480156104e457600080fd5b506104ed611390565b6040516104fa9190614475565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190613de8565b611396565b005b34801561053857600080fd5b50610541611435565b60405161054e9190614475565b60405180910390f35b34801561056357600080fd5b5061057e60048036038101906105799190613c4e565b611479565b60405161058b919061427d565b60405180910390f35b3480156105a057600080fd5b506105a9611499565b6040516105b6919061451a565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e19190613dbb565b6114b0565b005b3480156105f457600080fd5b506105fd611562565b60405161060a91906141bd565b60405180910390f35b34801561061f57600080fd5b50610628611586565b60405161063591906141d8565b60405180910390f35b34801561064a57600080fd5b5061066560048036038101906106609190613d7b565b6115ac565b604051610672919061427d565b60405180910390f35b34801561068757600080fd5b506106a2600480360381019061069d9190613d3b565b61165f565b005b3480156106b057600080fd5b506106b961174f565b6040516106c691906141bd565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f19190613d3b565b611775565b005b34801561070457600080fd5b5061070d611865565b60405161071a919061427d565b60405180910390f35b34801561072f57600080fd5b50610738611878565b6040516107459190614475565b60405180910390f35b34801561075a57600080fd5b50610763611880565b6040516107709190614475565b60405180910390f35b34801561078557600080fd5b506107a0600480360381019061079b9190613c4e565b611886565b6040516107ad919061427d565b60405180910390f35b3480156107c257600080fd5b506107cb6118a6565b6040516107d89190614475565b60405180910390f35b3480156107ed57600080fd5b5061080860048036038101906108039190613c4e565b6118b0565b6040516108159190614475565b60405180910390f35b34801561082a57600080fd5b506108336118f9565b005b34801561084157600080fd5b5061085c60048036038101906108579190613e68565b611a4c565b005b34801561086a57600080fd5b50610873611b51565b6040516108809190614475565b60405180910390f35b34801561089557600080fd5b5061089e611b57565b6040516108ab9190614475565b60405180910390f35b3480156108c057600080fd5b506108c9611b5d565b6040516108d69190614475565b60405180910390f35b3480156108eb57600080fd5b506108f4611b63565b60405161090191906141bd565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c9190613de8565b611b8c565b005b34801561093f57600080fd5b50610948611c2b565b60405161095591906142b3565b60405180910390f35b34801561096a57600080fd5b50610973611cbd565b6040516109809190614475565b60405180910390f35b34801561099557600080fd5b506109b060048036038101906109ab9190613d7b565b611cc3565b6040516109bd919061427d565b60405180910390f35b3480156109d257600080fd5b506109db611d90565b005b3480156109e957600080fd5b50610a0460048036038101906109ff9190613d7b565b611f64565b604051610a11919061427d565b60405180910390f35b348015610a2657600080fd5b50610a2f611f83565b604051610a3c9190614475565b60405180910390f35b348015610a5157600080fd5b50610a6c6004803603810190610a679190613c4e565b611f8d565b005b348015610a7a57600080fd5b50610a956004803603810190610a909190613d3b565b612066565b005b348015610aa357600080fd5b50610abe6004803603810190610ab99190613dbb565b612156565b005b348015610acc57600080fd5b50610ad561223f565b604051610ae29190614475565b60405180910390f35b348015610af757600080fd5b50610b126004803603810190610b0d9190613dbb565b612245565b005b348015610b2057600080fd5b50610b296122f7565b604051610b36919061427d565b60405180910390f35b348015610b4b57600080fd5b50610b5461230a565b604051610b619190614475565b60405180910390f35b348015610b7657600080fd5b50610b916004803603810190610b8c9190613de8565b612310565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613ca8565b6124d7565b604051610bc79190614475565b60405180910390f35b348015610bdc57600080fd5b50610bf76004803603810190610bf29190613de8565b61255e565b005b348015610c0557600080fd5b50610c206004803603810190610c1b9190613c4e565b6125fd565b005b348015610c2e57600080fd5b50610c376127bf565b604051610c44919061427d565b60405180910390f35b606060048054610c5c90614781565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8890614781565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b6000610cf3610cec612830565b8484612838565b6001905092915050565b6000610d07612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b906143b5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ddf57600080fd5b505afa158015610df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e179190613c7b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7957600080fd5b505afa158015610e8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb19190613c7b565b6040518363ffffffff1660e01b8152600401610ece9291906141f3565b60206040518083038186803b158015610ee657600080fd5b505afa158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1e9190613c7b565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110df578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9b57600080fd5b505afa158015610faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd39190613c7b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561103557600080fd5b505afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d9190613c7b565b6040518363ffffffff1660e01b815260040161108a9291906141f3565b602060405180830381600087803b1580156110a457600080fd5b505af11580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc9190613c7b565b91505b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b6111bf612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611243906143b5565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006112c3848484612a03565b50611385846112d0612830565b61138085604051806060016040528060288152602001614c6560289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611336612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b600190509392505050565b600f5481565b61139e612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611422906143b5565b60405180910390fd5b8060168190555050565b60006114746114637f00000000000000000000000000000000000000000000000000000000000000006118b0565b60035461314890919063ffffffff16565b905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600660009054906101000a900460ff16905090565b6114b8612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153c906143b5565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116556115b9612830565b8461165085600860006115ca612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b612838565b6001905092915050565b611667612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb906143b5565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61177d612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611801906143b5565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860159054906101000a900460ff1681565b600042905090565b600e5481565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611901612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611985906143b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611a54612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad8906143b5565b60405180910390fd5b83600e8190555082600f819055508160108190555080601381905550611b28601054611b1a600f54600e546127d290919063ffffffff16565b6127d290919063ffffffff16565b600a81905550611b45601354600a546127d290919063ffffffff16565b600c8190555050505050565b60155481565b60135481565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611b94612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c18906143b5565b60405180910390fd5b8060148190555050565b606060058054611c3a90614781565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6690614781565b8015611cb35780601f10611c8857610100808354040283529160200191611cb3565b820191906000526020600020905b815481529060010190602001808311611c9657829003601f168201915b5050505050905090565b60145481565b6000611d86611cd0612830565b84611d8185604051806060016040528060258152602001614c8d6025913960086000611cfa612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1790614455565b60405180910390fd5b6002544211611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90614435565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611f78611f71612830565b8484612a03565b506001905092915050565b6000601654905090565b611f95612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612022576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612019906143b5565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61206e612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f2906143b5565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61215e612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e2906143b5565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612234919061427d565b60405180910390a150565b600c5481565b61224d612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d1906143b5565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b601860169054906101000a900460ff1681565b600a5481565b612318612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239c906143b5565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508042612453919061458a565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612566612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea906143b5565b60405180910390fd5b8060158190555050565b612605612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612692576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612689906143b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f9906142f5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860179054906101000a900460ff1681565b60008082846127e1919061458a565b905083811015612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d90614335565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f90614415565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290f90614315565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f69190614475565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b906143f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb906142d5565b60405180910390fd5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b885750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbe90614355565b60405180910390fd5b60008211612c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c01906143d5565b60405180910390fd5b601860149054906101000a900460ff1615612c3157612c2a848484613192565b90506130dd565b612c39611b63565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612ca75750612c77611b63565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612cf257601454821115612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890614375565b60405180910390fd5b5b6000612cfd306118b0565b905060006016548210159050808015612d235750601860149054906101000a900460ff16155b8015612d7d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d955750601860159054906101000a900460ff165b15612dbf57601860169054906101000a900460ff1615612db55760165491505b612dbe82613365565b5b612e48846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f2e5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4257612f3d87878761352c565b612f44565b845b9050601860179054906101000a900460ff168015612fac5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fdb57601554612fcf82612fc1896118b0565b6127d290919063ffffffff16565b1115612fda57600080fd5b5b61302d81600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130cd9190614475565b60405180910390a3600193505050505b9392505050565b600083831115829061312c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312391906142b3565b60405180910390fd5b506000838561313b919061466b565b9050809150509392505050565b600061318a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130e4565b905092915050565b600061321d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b282600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133529190614475565b60405180910390a3600190509392505050565b6001601860146101000a81548160ff02191690831515021790555060006133be60026133b0600e546133a2600a54876136f390919063ffffffff16565b61373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006133d5828461314890919063ffffffff16565b90506133e0816137b8565b600047905060006134116134006002600e546136f390919063ffffffff16565b600a5461314890919063ffffffff16565b9050600061344f600261344184613433600e548861373d90919063ffffffff16565b6136f390919063ffffffff16565b6136f390919063ffffffff16565b9050600061347a8361346c6010548761373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006134a382613495858861314890919063ffffffff16565b61314890919063ffffffff16565b90506134d1601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613a43565b6134fd601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613a43565b6135078784613a8e565b505050505050506000601860146101000a81548160ff02191690831515021790555050565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135b1576135ac606461359e600a548661373d90919063ffffffff16565b6136f390919063ffffffff16565b6135da565b6135d960646135cb600c548661373d90919063ffffffff16565b6136f390919063ffffffff16565b5b905061362e81600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ce9190614475565b60405180910390a36136e9818461314890919063ffffffff16565b9150509392505050565b600061373583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b82565b905092915050565b60008083141561375057600090506137b2565b6000828461375e9190614611565b905082848261376d91906145e0565b146137ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a490614395565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156137d5576137d461486f565b5b6040519080825280602002602001820160405280156138035781602001602082028036833780820191505090505b509050308160008151811061381b5761381a614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156138bd57600080fd5b505afa1580156138d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f59190613c7b565b8160018151811061390957613908614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061397030601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139d49594939291906144c0565b600060405180830381600087803b1580156139ee57600080fd5b505af1158015613a02573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613a37929190614490565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a89573d6000803e3d6000fd5b505050565b613abb30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b07611b63565b426040518863ffffffff1660e01b8152600401613b299695949392919061421c565b6060604051808303818588803b158015613b4257600080fd5b505af1158015613b56573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b7b9190613e15565b5050505050565b60008083118290613bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bc091906142b3565b60405180910390fd5b5060008385613bd891906145e0565b9050809150509392505050565b600081359050613bf481614c1f565b92915050565b600081519050613c0981614c1f565b92915050565b600081359050613c1e81614c36565b92915050565b600081359050613c3381614c4d565b92915050565b600081519050613c4881614c4d565b92915050565b600060208284031215613c6457613c6361489e565b5b6000613c7284828501613be5565b91505092915050565b600060208284031215613c9157613c9061489e565b5b6000613c9f84828501613bfa565b91505092915050565b60008060408385031215613cbf57613cbe61489e565b5b6000613ccd85828601613be5565b9250506020613cde85828601613be5565b9150509250929050565b600080600060608486031215613d0157613d0061489e565b5b6000613d0f86828701613be5565b9350506020613d2086828701613be5565b9250506040613d3186828701613c24565b9150509250925092565b60008060408385031215613d5257613d5161489e565b5b6000613d6085828601613be5565b9250506020613d7185828601613c0f565b9150509250929050565b60008060408385031215613d9257613d9161489e565b5b6000613da085828601613be5565b9250506020613db185828601613c24565b9150509250929050565b600060208284031215613dd157613dd061489e565b5b6000613ddf84828501613c0f565b91505092915050565b600060208284031215613dfe57613dfd61489e565b5b6000613e0c84828501613c24565b91505092915050565b600080600060608486031215613e2e57613e2d61489e565b5b6000613e3c86828701613c39565b9350506020613e4d86828701613c39565b9250506040613e5e86828701613c39565b9150509250925092565b60008060008060808587031215613e8257613e8161489e565b5b6000613e9087828801613c24565b9450506020613ea187828801613c24565b9350506040613eb287828801613c24565b9250506060613ec387828801613c24565b91505092959194509250565b6000613edb8383613ef6565b60208301905092915050565b613ef0816146b1565b82525050565b613eff8161469f565b82525050565b613f0e8161469f565b82525050565b6000613f1f82614545565b613f298185614568565b9350613f3483614535565b8060005b83811015613f65578151613f4c8882613ecf565b9750613f578361455b565b925050600181019050613f38565b5085935050505092915050565b613f7b816146c3565b82525050565b613f8a81614706565b82525050565b613f9981614718565b82525050565b6000613faa82614550565b613fb48185614579565b9350613fc481856020860161474e565b613fcd816148a3565b840191505092915050565b6000613fe5602383614579565b9150613ff0826148b4565b604082019050919050565b6000614008602683614579565b915061401382614903565b604082019050919050565b600061402b602283614579565b915061403682614952565b604082019050919050565b600061404e601b83614579565b9150614059826149a1565b602082019050919050565b6000614071601f83614579565b915061407c826149ca565b602082019050919050565b6000614094602883614579565b915061409f826149f3565b604082019050919050565b60006140b7602183614579565b91506140c282614a42565b604082019050919050565b60006140da602083614579565b91506140e582614a91565b602082019050919050565b60006140fd602983614579565b915061410882614aba565b604082019050919050565b6000614120602583614579565b915061412b82614b09565b604082019050919050565b6000614143602483614579565b915061414e82614b58565b604082019050919050565b6000614166601f83614579565b915061417182614ba7565b602082019050919050565b6000614189602383614579565b915061419482614bd0565b604082019050919050565b6141a8816146ef565b82525050565b6141b7816146f9565b82525050565b60006020820190506141d26000830184613f05565b92915050565b60006020820190506141ed6000830184613ee7565b92915050565b60006040820190506142086000830185613f05565b6142156020830184613f05565b9392505050565b600060c0820190506142316000830189613f05565b61423e602083018861419f565b61424b6040830187613f90565b6142586060830186613f90565b6142656080830185613f05565b61427260a083018461419f565b979650505050505050565b60006020820190506142926000830184613f72565b92915050565b60006020820190506142ad6000830184613f81565b92915050565b600060208201905081810360008301526142cd8184613f9f565b905092915050565b600060208201905081810360008301526142ee81613fd8565b9050919050565b6000602082019050818103600083015261430e81613ffb565b9050919050565b6000602082019050818103600083015261432e8161401e565b9050919050565b6000602082019050818103600083015261434e81614041565b9050919050565b6000602082019050818103600083015261436e81614064565b9050919050565b6000602082019050818103600083015261438e81614087565b9050919050565b600060208201905081810360008301526143ae816140aa565b9050919050565b600060208201905081810360008301526143ce816140cd565b9050919050565b600060208201905081810360008301526143ee816140f0565b9050919050565b6000602082019050818103600083015261440e81614113565b9050919050565b6000602082019050818103600083015261442e81614136565b9050919050565b6000602082019050818103600083015261444e81614159565b9050919050565b6000602082019050818103600083015261446e8161417c565b9050919050565b600060208201905061448a600083018461419f565b92915050565b60006040820190506144a5600083018561419f565b81810360208301526144b78184613f14565b90509392505050565b600060a0820190506144d5600083018861419f565b6144e26020830187613f90565b81810360408301526144f48186613f14565b90506145036060830185613f05565b614510608083018461419f565b9695505050505050565b600060208201905061452f60008301846141ae565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614595826146ef565b91506145a0836146ef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145d5576145d46147b3565b5b828201905092915050565b60006145eb826146ef565b91506145f6836146ef565b925082614606576146056147e2565b5b828204905092915050565b600061461c826146ef565b9150614627836146ef565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146605761465f6147b3565b5b828202905092915050565b6000614676826146ef565b9150614681836146ef565b925082821015614694576146936147b3565b5b828203905092915050565b60006146aa826146cf565b9050919050565b60006146bc826146cf565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147118261472a565b9050919050565b6000614723826146ef565b9050919050565b60006147358261473c565b9050919050565b6000614747826146cf565b9050919050565b60005b8381101561476c578082015181840152602081019050614751565b8381111561477b576000848401525b50505050565b6000600282049050600182168061479957607f821691505b602082108114156147ad576147ac614811565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b614c288161469f565b8114614c3357600080fd5b50565b614c3f816146c3565b8114614c4a57600080fd5b50565b614c56816146ef565b8114614c6157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202872aa11651b887a40a1b87b3b31df9587e307f21fe84b20f54e25250f46b5e864736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103035760003560e01c806370a0823111610190578063abe0b9a4116100dc578063da00097d11610095578063dd62ed3e1161006f578063dd62ed3e14610b93578063f1d5f51714610bd0578063f2fde38b14610bf9578063f872858a14610c225761030a565b8063da00097d14610b14578063db4a133714610b3f578063dd46706414610b6a5761030a565b8063abe0b9a414610a1a578063c2f5253f14610a45578063c45ab1f414610a6e578063c948e54414610a97578063d0197ed014610ac0578063d9038b3414610aeb5761030a565b80638da5cb5b11610149578063993f585e11610123578063993f585e1461095e578063a457c2d714610989578063a69df4b5146109c6578063a9059cbb146109dd5761030a565b80638da5cb5b146108df5780638f9edde21461090a57806395d89b41146109335761030a565b806370a08231146107e1578063715018a61461081e5780637dfa0349146108355780637e9d0f1c1461085e5780637f43537e146108895780638c82ce3f146108b45761030a565b8063313ce5671161024f57806349bd5a5e11610208578063557ed1ba116101e2578063557ed1ba146107235780635c12c42d1461074e5780635f66d09714610779578063602bc62b146107b65761030a565b806349bd5a5e146106a457806349e99b46146106cf5780634a74bb02146106f85761030a565b8063313ce567146105945780633341adfe146105bf578063385b5b6a146105e8578063385e811514610613578063395093511461063e578063455a43961461067b5761030a565b80631c1d9747116102bc57806324b32aeb1161029657806324b32aeb146104d857806327c90fc7146105035780632b112e491461052c5780632e6f8dfc146105575761030a565b80631c1d9747146104475780631cfb50a31461047057806323b872dd1461049b5761030a565b806306fdde031461030f578063095ea7b31461033a5780630ef32bd71461037757806314a1e0cf146103b45780631694505e146103f157806318160ddd1461041c5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b60405161033191906142b3565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613d7b565b610cdf565b60405161036e919061427d565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190613c4e565b610cfd565b6040516103ab91906141bd565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190613c4e565b611167565b6040516103e8919061427d565b60405180910390f35b3480156103fd57600080fd5b50610406611187565b6040516104139190614298565b60405180910390f35b34801561042857600080fd5b506104316111ad565b60405161043e9190614475565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190613c4e565b6111b7565b005b34801561047c57600080fd5b50610485611290565b60405161049291906141d8565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190613ce8565b6112b6565b6040516104cf919061427d565b60405180910390f35b3480156104e457600080fd5b506104ed611390565b6040516104fa9190614475565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190613de8565b611396565b005b34801561053857600080fd5b50610541611435565b60405161054e9190614475565b60405180910390f35b34801561056357600080fd5b5061057e60048036038101906105799190613c4e565b611479565b60405161058b919061427d565b60405180910390f35b3480156105a057600080fd5b506105a9611499565b6040516105b6919061451a565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e19190613dbb565b6114b0565b005b3480156105f457600080fd5b506105fd611562565b60405161060a91906141bd565b60405180910390f35b34801561061f57600080fd5b50610628611586565b60405161063591906141d8565b60405180910390f35b34801561064a57600080fd5b5061066560048036038101906106609190613d7b565b6115ac565b604051610672919061427d565b60405180910390f35b34801561068757600080fd5b506106a2600480360381019061069d9190613d3b565b61165f565b005b3480156106b057600080fd5b506106b961174f565b6040516106c691906141bd565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f19190613d3b565b611775565b005b34801561070457600080fd5b5061070d611865565b60405161071a919061427d565b60405180910390f35b34801561072f57600080fd5b50610738611878565b6040516107459190614475565b60405180910390f35b34801561075a57600080fd5b50610763611880565b6040516107709190614475565b60405180910390f35b34801561078557600080fd5b506107a0600480360381019061079b9190613c4e565b611886565b6040516107ad919061427d565b60405180910390f35b3480156107c257600080fd5b506107cb6118a6565b6040516107d89190614475565b60405180910390f35b3480156107ed57600080fd5b5061080860048036038101906108039190613c4e565b6118b0565b6040516108159190614475565b60405180910390f35b34801561082a57600080fd5b506108336118f9565b005b34801561084157600080fd5b5061085c60048036038101906108579190613e68565b611a4c565b005b34801561086a57600080fd5b50610873611b51565b6040516108809190614475565b60405180910390f35b34801561089557600080fd5b5061089e611b57565b6040516108ab9190614475565b60405180910390f35b3480156108c057600080fd5b506108c9611b5d565b6040516108d69190614475565b60405180910390f35b3480156108eb57600080fd5b506108f4611b63565b60405161090191906141bd565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c9190613de8565b611b8c565b005b34801561093f57600080fd5b50610948611c2b565b60405161095591906142b3565b60405180910390f35b34801561096a57600080fd5b50610973611cbd565b6040516109809190614475565b60405180910390f35b34801561099557600080fd5b506109b060048036038101906109ab9190613d7b565b611cc3565b6040516109bd919061427d565b60405180910390f35b3480156109d257600080fd5b506109db611d90565b005b3480156109e957600080fd5b50610a0460048036038101906109ff9190613d7b565b611f64565b604051610a11919061427d565b60405180910390f35b348015610a2657600080fd5b50610a2f611f83565b604051610a3c9190614475565b60405180910390f35b348015610a5157600080fd5b50610a6c6004803603810190610a679190613c4e565b611f8d565b005b348015610a7a57600080fd5b50610a956004803603810190610a909190613d3b565b612066565b005b348015610aa357600080fd5b50610abe6004803603810190610ab99190613dbb565b612156565b005b348015610acc57600080fd5b50610ad561223f565b604051610ae29190614475565b60405180910390f35b348015610af757600080fd5b50610b126004803603810190610b0d9190613dbb565b612245565b005b348015610b2057600080fd5b50610b296122f7565b604051610b36919061427d565b60405180910390f35b348015610b4b57600080fd5b50610b5461230a565b604051610b619190614475565b60405180910390f35b348015610b7657600080fd5b50610b916004803603810190610b8c9190613de8565b612310565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613ca8565b6124d7565b604051610bc79190614475565b60405180910390f35b348015610bdc57600080fd5b50610bf76004803603810190610bf29190613de8565b61255e565b005b348015610c0557600080fd5b50610c206004803603810190610c1b9190613c4e565b6125fd565b005b348015610c2e57600080fd5b50610c376127bf565b604051610c44919061427d565b60405180910390f35b606060048054610c5c90614781565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8890614781565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b6000610cf3610cec612830565b8484612838565b6001905092915050565b6000610d07612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b906143b5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ddf57600080fd5b505afa158015610df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e179190613c7b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7957600080fd5b505afa158015610e8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb19190613c7b565b6040518363ffffffff1660e01b8152600401610ece9291906141f3565b60206040518083038186803b158015610ee657600080fd5b505afa158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1e9190613c7b565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110df578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9b57600080fd5b505afa158015610faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd39190613c7b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561103557600080fd5b505afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d9190613c7b565b6040518363ffffffff1660e01b815260040161108a9291906141f3565b602060405180830381600087803b1580156110a457600080fd5b505af11580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc9190613c7b565b91505b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b6111bf612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611243906143b5565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006112c3848484612a03565b50611385846112d0612830565b61138085604051806060016040528060288152602001614c6560289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611336612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b600190509392505050565b600f5481565b61139e612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611422906143b5565b60405180910390fd5b8060168190555050565b60006114746114637f000000000000000000000000000000000000000000000000000000000000dead6118b0565b60035461314890919063ffffffff16565b905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600660009054906101000a900460ff16905090565b6114b8612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153c906143b5565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116556115b9612830565b8461165085600860006115ca612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b612838565b6001905092915050565b611667612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb906143b5565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61177d612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611801906143b5565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860159054906101000a900460ff1681565b600042905090565b600e5481565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611901612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611985906143b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611a54612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad8906143b5565b60405180910390fd5b83600e8190555082600f819055508160108190555080601381905550611b28601054611b1a600f54600e546127d290919063ffffffff16565b6127d290919063ffffffff16565b600a81905550611b45601354600a546127d290919063ffffffff16565b600c8190555050505050565b60155481565b60135481565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611b94612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c18906143b5565b60405180910390fd5b8060148190555050565b606060058054611c3a90614781565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6690614781565b8015611cb35780601f10611c8857610100808354040283529160200191611cb3565b820191906000526020600020905b815481529060010190602001808311611c9657829003601f168201915b5050505050905090565b60145481565b6000611d86611cd0612830565b84611d8185604051806060016040528060258152602001614c8d6025913960086000611cfa612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1790614455565b60405180910390fd5b6002544211611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90614435565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611f78611f71612830565b8484612a03565b506001905092915050565b6000601654905090565b611f95612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612022576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612019906143b5565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61206e612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f2906143b5565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61215e612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e2906143b5565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612234919061427d565b60405180910390a150565b600c5481565b61224d612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d1906143b5565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b601860169054906101000a900460ff1681565b600a5481565b612318612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239c906143b5565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508042612453919061458a565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612566612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea906143b5565b60405180910390fd5b8060158190555050565b612605612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612692576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612689906143b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f9906142f5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860179054906101000a900460ff1681565b60008082846127e1919061458a565b905083811015612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d90614335565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f90614415565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290f90614315565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f69190614475565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b906143f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb906142d5565b60405180910390fd5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b885750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbe90614355565b60405180910390fd5b60008211612c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c01906143d5565b60405180910390fd5b601860149054906101000a900460ff1615612c3157612c2a848484613192565b90506130dd565b612c39611b63565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612ca75750612c77611b63565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612cf257601454821115612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890614375565b60405180910390fd5b5b6000612cfd306118b0565b905060006016548210159050808015612d235750601860149054906101000a900460ff16155b8015612d7d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d955750601860159054906101000a900460ff165b15612dbf57601860169054906101000a900460ff1615612db55760165491505b612dbe82613365565b5b612e48846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f2e5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4257612f3d87878761352c565b612f44565b845b9050601860179054906101000a900460ff168015612fac5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fdb57601554612fcf82612fc1896118b0565b6127d290919063ffffffff16565b1115612fda57600080fd5b5b61302d81600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130cd9190614475565b60405180910390a3600193505050505b9392505050565b600083831115829061312c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312391906142b3565b60405180910390fd5b506000838561313b919061466b565b9050809150509392505050565b600061318a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130e4565b905092915050565b600061321d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b282600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133529190614475565b60405180910390a3600190509392505050565b6001601860146101000a81548160ff02191690831515021790555060006133be60026133b0600e546133a2600a54876136f390919063ffffffff16565b61373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006133d5828461314890919063ffffffff16565b90506133e0816137b8565b600047905060006134116134006002600e546136f390919063ffffffff16565b600a5461314890919063ffffffff16565b9050600061344f600261344184613433600e548861373d90919063ffffffff16565b6136f390919063ffffffff16565b6136f390919063ffffffff16565b9050600061347a8361346c6010548761373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006134a382613495858861314890919063ffffffff16565b61314890919063ffffffff16565b90506134d1601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613a43565b6134fd601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613a43565b6135078784613a8e565b505050505050506000601860146101000a81548160ff02191690831515021790555050565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135b1576135ac606461359e600a548661373d90919063ffffffff16565b6136f390919063ffffffff16565b6135da565b6135d960646135cb600c548661373d90919063ffffffff16565b6136f390919063ffffffff16565b5b905061362e81600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ce9190614475565b60405180910390a36136e9818461314890919063ffffffff16565b9150509392505050565b600061373583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b82565b905092915050565b60008083141561375057600090506137b2565b6000828461375e9190614611565b905082848261376d91906145e0565b146137ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a490614395565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156137d5576137d461486f565b5b6040519080825280602002602001820160405280156138035781602001602082028036833780820191505090505b509050308160008151811061381b5761381a614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156138bd57600080fd5b505afa1580156138d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f59190613c7b565b8160018151811061390957613908614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061397030601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139d49594939291906144c0565b600060405180830381600087803b1580156139ee57600080fd5b505af1158015613a02573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613a37929190614490565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a89573d6000803e3d6000fd5b505050565b613abb30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b07611b63565b426040518863ffffffff1660e01b8152600401613b299695949392919061421c565b6060604051808303818588803b158015613b4257600080fd5b505af1158015613b56573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b7b9190613e15565b5050505050565b60008083118290613bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bc091906142b3565b60405180910390fd5b5060008385613bd891906145e0565b9050809150509392505050565b600081359050613bf481614c1f565b92915050565b600081519050613c0981614c1f565b92915050565b600081359050613c1e81614c36565b92915050565b600081359050613c3381614c4d565b92915050565b600081519050613c4881614c4d565b92915050565b600060208284031215613c6457613c6361489e565b5b6000613c7284828501613be5565b91505092915050565b600060208284031215613c9157613c9061489e565b5b6000613c9f84828501613bfa565b91505092915050565b60008060408385031215613cbf57613cbe61489e565b5b6000613ccd85828601613be5565b9250506020613cde85828601613be5565b9150509250929050565b600080600060608486031215613d0157613d0061489e565b5b6000613d0f86828701613be5565b9350506020613d2086828701613be5565b9250506040613d3186828701613c24565b9150509250925092565b60008060408385031215613d5257613d5161489e565b5b6000613d6085828601613be5565b9250506020613d7185828601613c0f565b9150509250929050565b60008060408385031215613d9257613d9161489e565b5b6000613da085828601613be5565b9250506020613db185828601613c24565b9150509250929050565b600060208284031215613dd157613dd061489e565b5b6000613ddf84828501613c0f565b91505092915050565b600060208284031215613dfe57613dfd61489e565b5b6000613e0c84828501613c24565b91505092915050565b600080600060608486031215613e2e57613e2d61489e565b5b6000613e3c86828701613c39565b9350506020613e4d86828701613c39565b9250506040613e5e86828701613c39565b9150509250925092565b60008060008060808587031215613e8257613e8161489e565b5b6000613e9087828801613c24565b9450506020613ea187828801613c24565b9350506040613eb287828801613c24565b9250506060613ec387828801613c24565b91505092959194509250565b6000613edb8383613ef6565b60208301905092915050565b613ef0816146b1565b82525050565b613eff8161469f565b82525050565b613f0e8161469f565b82525050565b6000613f1f82614545565b613f298185614568565b9350613f3483614535565b8060005b83811015613f65578151613f4c8882613ecf565b9750613f578361455b565b925050600181019050613f38565b5085935050505092915050565b613f7b816146c3565b82525050565b613f8a81614706565b82525050565b613f9981614718565b82525050565b6000613faa82614550565b613fb48185614579565b9350613fc481856020860161474e565b613fcd816148a3565b840191505092915050565b6000613fe5602383614579565b9150613ff0826148b4565b604082019050919050565b6000614008602683614579565b915061401382614903565b604082019050919050565b600061402b602283614579565b915061403682614952565b604082019050919050565b600061404e601b83614579565b9150614059826149a1565b602082019050919050565b6000614071601f83614579565b915061407c826149ca565b602082019050919050565b6000614094602883614579565b915061409f826149f3565b604082019050919050565b60006140b7602183614579565b91506140c282614a42565b604082019050919050565b60006140da602083614579565b91506140e582614a91565b602082019050919050565b60006140fd602983614579565b915061410882614aba565b604082019050919050565b6000614120602583614579565b915061412b82614b09565b604082019050919050565b6000614143602483614579565b915061414e82614b58565b604082019050919050565b6000614166601f83614579565b915061417182614ba7565b602082019050919050565b6000614189602383614579565b915061419482614bd0565b604082019050919050565b6141a8816146ef565b82525050565b6141b7816146f9565b82525050565b60006020820190506141d26000830184613f05565b92915050565b60006020820190506141ed6000830184613ee7565b92915050565b60006040820190506142086000830185613f05565b6142156020830184613f05565b9392505050565b600060c0820190506142316000830189613f05565b61423e602083018861419f565b61424b6040830187613f90565b6142586060830186613f90565b6142656080830185613f05565b61427260a083018461419f565b979650505050505050565b60006020820190506142926000830184613f72565b92915050565b60006020820190506142ad6000830184613f81565b92915050565b600060208201905081810360008301526142cd8184613f9f565b905092915050565b600060208201905081810360008301526142ee81613fd8565b9050919050565b6000602082019050818103600083015261430e81613ffb565b9050919050565b6000602082019050818103600083015261432e8161401e565b9050919050565b6000602082019050818103600083015261434e81614041565b9050919050565b6000602082019050818103600083015261436e81614064565b9050919050565b6000602082019050818103600083015261438e81614087565b9050919050565b600060208201905081810360008301526143ae816140aa565b9050919050565b600060208201905081810360008301526143ce816140cd565b9050919050565b600060208201905081810360008301526143ee816140f0565b9050919050565b6000602082019050818103600083015261440e81614113565b9050919050565b6000602082019050818103600083015261442e81614136565b9050919050565b6000602082019050818103600083015261444e81614159565b9050919050565b6000602082019050818103600083015261446e8161417c565b9050919050565b600060208201905061448a600083018461419f565b92915050565b60006040820190506144a5600083018561419f565b81810360208301526144b78184613f14565b90509392505050565b600060a0820190506144d5600083018861419f565b6144e26020830187613f90565b81810360408301526144f48186613f14565b90506145036060830185613f05565b614510608083018461419f565b9695505050505050565b600060208201905061452f60008301846141ae565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614595826146ef565b91506145a0836146ef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145d5576145d46147b3565b5b828201905092915050565b60006145eb826146ef565b91506145f6836146ef565b925082614606576146056147e2565b5b828204905092915050565b600061461c826146ef565b9150614627836146ef565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146605761465f6147b3565b5b828202905092915050565b6000614676826146ef565b9150614681836146ef565b925082821015614694576146936147b3565b5b828203905092915050565b60006146aa826146cf565b9050919050565b60006146bc826146cf565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147118261472a565b9050919050565b6000614723826146ef565b9050919050565b60006147358261473c565b9050919050565b6000614747826146cf565b9050919050565b60005b8381101561476c578082015181840152602081019050614751565b8381111561477b576000848401525b50505050565b6000600282049050600182168061479957607f821691505b602082108114156147ad576147ac614811565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b614c288161469f565b8114614c3357600080fd5b50565b614c3f816146c3565b8114614c4a57600080fd5b50565b614c56816146ef565b8114614c6157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202872aa11651b887a40a1b87b3b31df9587e307f21fe84b20f54e25250f46b5e864736f6c63430008070033

Deployed Bytecode Sourcemap

15330:12708:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18248:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19522:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21655:693;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15956:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16662:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18525:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21262:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16124:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22625:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16047:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21146:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25960:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15865:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18434:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27912:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16311:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16217:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18917:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20036:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16710:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20903:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16779:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6836:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16005:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15779:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6734:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18633:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6326:148;;;;;;;;;;;;;:::i;:::-;;20296:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16519:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16399:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16085:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6101:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20679:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18339:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16440:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19143:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7172:305;;;;;;;;;;;;;:::i;:::-;;22450:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19420:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21391:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20163:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27746:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15920:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20791:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16826:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15831:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6934:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18766:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21035:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6482:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16878:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18248:83;18285:13;18318:5;18311:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18248:83;:::o;19522:161::-;19597:4;19614:39;19623:12;:10;:12::i;:::-;19637:7;19646:6;19614:8;:39::i;:::-;19671:4;19664:11;;19522:161;;;;:::o;21655:693::-;21732:22;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21769:35:::1;21826:16;21769:74;;21892:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21874:53;;;21936:4;21943:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21874:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21857:110;;22009:1;21983:28;;:14;:28;;;21980:225;;;22097:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22079:74;;;22162:4;22169:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22079:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22062:131;;21980:225;22233:14;22217:13;;:30;;;;;;;;;;;;;;;;;;22299:16;22281:15;;:34;;;;;;;;;;;;;;;;;;21756:592;21655:693:::0;;;:::o;15956:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;16662:41::-;;;;;;;;;;;;;:::o;18525:100::-;18578:7;18605:12;;18598:19;;18525:100;:::o;21262:121::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21364:10:::1;21345:8;;:30;;;;;;;;;;;;;;;;;;21262:121:::0;:::o;16124:85::-;;;;;;;;;;;;;:::o;22625:313::-;22723:4;22740:36;22750:6;22758:9;22769:6;22740:9;:36::i;:::-;;22787:121;22796:6;22804:12;:10;:12::i;:::-;22818:89;22856:6;22818:89;;;;;;;;;;;;;;;;;:11;:19;22830:6;22818:19;;;;;;;;;;;;;;;:33;22838:12;:10;:12::i;:::-;22818:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22787:8;:121::i;:::-;22926:4;22919:11;;22625:313;;;;;:::o;16047:31::-;;;;:::o;21146:108::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21238:8:::1;21222:13;:24;;;;21146:108:::0;:::o;25960:128::-;26013:7;26040:40;26057:22;26067:11;26057:9;:22::i;:::-;26040:12;;:16;;:40;;;;:::i;:::-;26033:47;;25960:128;:::o;15865:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;18434:83::-;18475:5;18500:9;;;;;;;;;;;18493:16;;18434:83;:::o;27912:115::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28011:8:::1;27983:25;;:36;;;;;;;;;;;;;;;;;;27912:115:::0;:::o;16311:81::-;;;:::o;16217:86::-;;;;;;;;;;;;;:::o;18917:218::-;19005:4;19022:83;19031:12;:10;:12::i;:::-;19045:7;19054:50;19093:10;19054:11;:25;19066:12;:10;:12::i;:::-;19054:25;;;;;;;;;;;;;;;:34;19080:7;19054:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19022:8;:83::i;:::-;19123:4;19116:11;;18917:218;;;;:::o;20036:119::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20139:8:::1;20122:5;:14;20128:7;20122:14;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;20036:119:::0;;:::o;16710:28::-;;;;;;;;;;;;;:::o;20903:124::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21013:6:::1;20987:15;:23;21003:6;20987:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20903:124:::0;;:::o;16779:40::-;;;;;;;;;;;;;:::o;6836:90::-;6876:7;6903:15;6896:22;;6836:90;:::o;16005:35::-;;;;:::o;15779:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;6734:90::-;6780:7;6807:9;;6800:16;;6734:90;:::o;18633:119::-;18699:7;18726:9;:18;18736:7;18726:18;;;;;;;;;;;;;;;;18719:25;;18633:119;;;:::o;6326:148::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6433:1:::1;6396:40;;6417:6;::::0;::::1;;;;;;;;6396:40;;;;;;;;;;;;6464:1;6447:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6326:148::o:0;20296:375::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20443:9:::1;20424:16;:28;;;;20478:12;20463;:27;;;;20510:9;20501:6;:18;;;;20540:10;20530:7;:20;;;;20572:46;20611:6;;20572:34;20593:12;;20572:16;;:20;;:34;;;;:::i;:::-;:38;;:46;;;;:::i;:::-;20561:8;:57;;;;20642:21;20655:7;;20642:8;;:12;;:21;;;;:::i;:::-;20629:10;:34;;;;20296:375:::0;;;;:::o;16519:48::-;;;;:::o;16399:26::-;;;;:::o;16085:25::-;;;;:::o;6101:79::-;6139:7;6166:6;;;;;;;;;;;6159:13;;6101:79;:::o;20679:104::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20764:11:::1;20753:8;:22;;;;20679:104:::0;:::o;18339:87::-;18378:13;18411:7;18404:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18339:87;:::o;16440:45::-;;;;:::o;19143:269::-;19236:4;19253:129;19262:12;:10;:12::i;:::-;19276:7;19285:96;19324:15;19285:96;;;;;;;;;;;;;;;;;:11;:25;19297:12;:10;:12::i;:::-;19285:25;;;;;;;;;;;;;;;:34;19311:7;19285:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19253:8;:129::i;:::-;19400:4;19393:11;;19143:269;;;;:::o;7172:305::-;7242:10;7224:28;;:14;;;;;;;;;;;:28;;;7216:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7329:9;;7311:15;:27;7303:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7420:14;;;;;;;;;;;7391:44;;7412:6;;;;;;;;;;7391:44;;;;;;;;;;;;7455:14;;;;;;;;;;;7446:6;;:23;;;;;;;;;;;;;;;;;;7172:305::o;22450:167::-;22528:4;22545:42;22555:12;:10;:12::i;:::-;22569:9;22580:6;22545:9;:42::i;:::-;;22605:4;22598:11;;22450:167;;;;:::o;19420:94::-;19466:7;19493:13;;19486:20;;19420:94;:::o;21391:116::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21488:10:::1;21468:9;;:31;;;;;;;;;;;;;;;;;;21391:116:::0;:::o;20163:125::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20272:8:::1;20248:12;:21;20261:7;20248:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20163:125:::0;;:::o;27746:158::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27834:8:::1;27810:21;;:32;;;;;;;;;;;;;;;;;;27858:38;27887:8;27858:38;;;;;;:::i;:::-;;;;;;;;27746:158:::0;:::o;15920:29::-;;;;:::o;20791:104::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20879:8:::1;20860:16;;:27;;;;;;;;;;;;;;;;;;20791:104:::0;:::o;16826:45::-;;;;;;;;;;;;;:::o;15831:27::-;;;;:::o;6934:226::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7015:6:::1;::::0;::::1;;;;;;;;6998:14;;:23;;;;;;;;;;;;;;;;;;7049:1;7032:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;7092:4;7074:15;:22;;;;:::i;:::-;7062:9;:34;;;;7149:1;7112:40;;7133:6;::::0;::::1;;;;;;;;7112:40;;;;;;;;;;;;6934:226:::0;:::o;18766:143::-;18847:7;18874:11;:18;18886:5;18874:18;;;;;;;;;;;;;;;:27;18893:7;18874:27;;;;;;;;;;;;;;;;18867:34;;18766:143;;;;:::o;21035:103::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21122:8:::1;21107:11;:23;;;;21035:103:::0;:::o;6482:244::-;6245:12;:10;:12::i;:::-;6235:22;;:6;;;;;;;;;;:22;;;6227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6591:1:::1;6571:22;;:8;:22;;;;6563:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6681:8;6652:38;;6673:6;::::0;::::1;;;;;;;;6652:38;;;;;;;;;;;;6710:8;6701:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6482:244:::0;:::o;16878:35::-;;;;;;;;;;;;;:::o;1471:181::-;1529:7;1549:9;1565:1;1561;:5;;;;:::i;:::-;1549:17;;1590:1;1585;:6;;1577:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1643:1;1636:8;;;1471:181;;;;:::o;403:115::-;456:15;499:10;484:26;;403:115;:::o;19691:337::-;19801:1;19784:19;;:5;:19;;;;19776:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19882:1;19863:21;;:7;:21;;;;19855:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19966:6;19936:11;:18;19948:5;19936:18;;;;;;;;;;;;;;;:27;19955:7;19936:27;;;;;;;;;;;;;;;:36;;;;20004:7;19988:32;;19997:5;19988:32;;;20013:6;19988:32;;;;;;:::i;:::-;;;;;;;;19691:337;;;:::o;22946:1830::-;23033:4;23078:1;23060:20;;:6;:20;;;;23052:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23162:1;23141:23;;:9;:23;;;;23133:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23224:5;:13;23230:6;23224:13;;;;;;;;;;;;;;;;;;;;;;;;;23223:14;:35;;;;;23242:5;:16;23248:9;23242:16;;;;;;;;;;;;;;;;;;;;;;;;;23241:17;23223:35;23215:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;23322:1;23313:6;:10;23305:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23393:16;;;;;;;;;;;23390:1379;;;23443:41;23458:6;23466:9;23477:6;23443:14;:41::i;:::-;23436:48;;;;23390:1379;23549:7;:5;:7::i;:::-;23539:17;;:6;:17;;;;:41;;;;;23573:7;:5;:7::i;:::-;23560:20;;:9;:20;;;;23539:41;23536:152;;;23619:8;;23609:6;:18;;23601:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23536:152;23716:28;23747:24;23765:4;23747:9;:24::i;:::-;23716:55;;23786:28;23841:13;;23817:20;:37;;23786:68;;23887:23;:44;;;;;23915:16;;;;;;;;;;;23914:17;23887:44;:71;;;;;23945:13;;;;;;;;;;;23935:23;;:6;:23;;;;23887:71;:96;;;;;23962:21;;;;;;;;;;;23887:96;23883:297;;;24021:25;;;;;;;;;;;24018:87;;;24092:13;;24069:36;;24018:87;24124:36;24139:20;24124:14;:36::i;:::-;23883:297;24216:53;24238:6;24216:53;;;;;;;;;;;;;;;;;:9;:17;24226:6;24216:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24196:9;:17;24206:6;24196:17;;;;;;;;;;;;;;;:73;;;;24286:19;24309:12;:20;24322:6;24309:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;24333:12;:23;24346:9;24333:23;;;;;;;;;;;;;;;;;;;;;;;;;24309:47;24308:137;;24412:33;24419:6;24427:9;24438:6;24412;:33::i;:::-;24308:137;;;24403:6;24308:137;24286:159;;24465:16;;;;;;;;;;;:47;;;;;24486:15;:26;24502:9;24486:26;;;;;;;;;;;;;;;;;;;;;;;;;24485:27;24465:47;24462:130;;;24580:11;;24539:37;24564:11;24539:20;24549:9;24539;:20::i;:::-;:24;;:37;;;;:::i;:::-;:52;;24531:61;;;;;;24462:130;24632:37;24657:11;24632:9;:20;24642:9;24632:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;24609:9;:20;24619:9;24609:20;;;;;;;;;;;;;;;:60;;;;24708:9;24691:40;;24700:6;24691:40;;;24719:11;24691:40;;;;;;:::i;:::-;;;;;;;;24753:4;24746:11;;;;;22946:1830;;;;;;:::o;1804:192::-;1890:7;1923:1;1918;:6;;1926:12;1910:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1950:9;1966:1;1962;:5;;;;:::i;:::-;1950:17;;1987:1;1980:8;;;1804:192;;;;;:::o;1660:136::-;1718:7;1745:43;1749:1;1752;1745:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1738:50;;1660:136;;;;:::o;24784:330::-;24877:4;24914:53;24936:6;24914:53;;;;;;;;;;;;;;;;;:9;:17;24924:6;24914:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24894:9;:17;24904:6;24894:17;;;;;;;;;;;;;;;:73;;;;25001:32;25026:6;25001:9;:20;25011:9;25001:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24978:9;:20;24988:9;24978:20;;;;;;;;;;;;;;;:55;;;;25066:9;25049:35;;25058:6;25049:35;;;25077:6;25049:35;;;;;;:::i;:::-;;;;;;;;25102:4;25095:11;;24784:330;;;;;:::o;25122:830::-;17355:4;17336:16;;:23;;;;;;;;;;;;;;;;;;25203:19:::1;25225:50;25273:1;25225:43;25251:16;;25225:21;25237:8;;25225:7;:11;;:21;;;;:::i;:::-;:25;;:43;;;;:::i;:::-;:47;;:50;;;;:::i;:::-;25203:72;;25286:21;25310:24;25322:11;25310:7;:11;;:24;;;;:::i;:::-;25286:48;;25347:31;25364:13;25347:16;:31::i;:::-;25389:22;25414:21;25389:46;;25448:16;25467:37;25480:23;25501:1;25480:16;;:20;;:23;;;;:::i;:::-;25467:8;;:12;;:37;;;;:::i;:::-;25448:56;;25525:23;25551:57;25606:1;25551:50;25592:8;25551:36;25570:16;;25551:14;:18;;:36;;;;:::i;:::-;:40;;:50;;;;:::i;:::-;:54;;:57;;;;:::i;:::-;25525:83;;25619:21;25643:40;25674:8;25643:26;25662:6;;25643:14;:18;;:26;;;;:::i;:::-;:30;;:40;;;;:::i;:::-;25619:64;;25694:23;25720:54;25760:13;25720:35;25739:15;25720:14;:18;;:35;;;;:::i;:::-;:39;;:54;;;;:::i;:::-;25694:80;;25787:47;25808:8;;;;;;;;;;;25818:15;25787:20;:47::i;:::-;25845:46;25866:9;;;;;;;;;;;25877:13;25845:20;:46::i;:::-;25902:42;25915:11;25928:15;25902:12;:42::i;:::-;25183:769;;;;;;;17401:5:::0;17382:16;;:24;;;;;;;;;;;;;;;;;;25122:830;:::o;27291:447::-;27376:7;27406:17;27439:13;;;;;;;;;;;27426:26;;:9;:26;;;:126;;27523:29;27548:3;27523:20;27534:8;;27523:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;27426:126;;;27455:31;27482:3;27455:22;27466:10;;27455:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;27426:126;27406:146;;27592:39;27621:9;27592;:24;27610:4;27592:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27565:9;:24;27583:4;27565:24;;;;;;;;;;;;;;;:66;;;;27672:4;27647:42;;27656:6;27647:42;;;27679:9;27647:42;;;;;;:::i;:::-;;;;;;;;27709:21;27720:9;27709:6;:10;;:21;;;;:::i;:::-;27702:28;;;27291:447;;;;;:::o;2262:132::-;2320:7;2347:39;2351:1;2354;2347:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2340:46;;2262:132;;;;:::o;2004:250::-;2062:7;2091:1;2086;:6;2082:47;;;2116:1;2109:8;;;;2082:47;2141:9;2157:1;2153;:5;;;;:::i;:::-;2141:17;;2186:1;2181;2177;:5;;;;:::i;:::-;:10;2169:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2245:1;2238:8;;;2004:250;;;;;:::o;26096:666::-;26222:21;26260:1;26246:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26222:40;;26291:4;26273;26278:1;26273:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26317:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26307:4;26312:1;26307:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26352:62;26369:4;26384:15;;;;;;;;;;;26402:11;26352:8;:62::i;:::-;26453:15;;;;;;;;;;;:66;;;26534:11;26560:1;26604:4;26631;26667:15;26453:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26719:35;26736:11;26749:4;26719:35;;;;;;;:::i;:::-;;;;;;;;26151:611;26096:666;:::o;21517:126::-;21609:9;:18;;:26;21628:6;21609:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21517:126;;:::o;26770:513::-;26918:62;26935:4;26950:15;;;;;;;;;;;26968:11;26918:8;:62::i;:::-;27023:15;;;;;;;;;;;:31;;;27062:9;27095:4;27115:11;27141:1;27184;27227:7;:5;:7::i;:::-;27249:15;27023:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26770:513;;:::o;2402:278::-;2488:7;2520:1;2516;:5;2523:12;2508:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2547:9;2563:1;2559;:5;;;;:::i;:::-;2547:17;;2671:1;2664:8;;;2402:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;585:143;;;;:::o;734:329::-;793:6;842:2;830:9;821:7;817:23;813:32;810:119;;;848:79;;:::i;:::-;810:119;968:1;993:53;1038:7;1029:6;1018:9;1014:22;993:53;:::i;:::-;983:63;;939:117;734:329;;;;:::o;1069:351::-;1139:6;1188:2;1176:9;1167:7;1163:23;1159:32;1156:119;;;1194:79;;:::i;:::-;1156:119;1314:1;1339:64;1395:7;1386:6;1375:9;1371:22;1339:64;:::i;:::-;1329:74;;1285:128;1069:351;;;;:::o;1426:474::-;1494:6;1502;1551:2;1539:9;1530:7;1526:23;1522:32;1519:119;;;1557:79;;:::i;:::-;1519:119;1677:1;1702:53;1747:7;1738:6;1727:9;1723:22;1702:53;:::i;:::-;1692:63;;1648:117;1804:2;1830:53;1875:7;1866:6;1855:9;1851:22;1830:53;:::i;:::-;1820:63;;1775:118;1426:474;;;;;:::o;1906:619::-;1983:6;1991;1999;2048:2;2036:9;2027:7;2023:23;2019:32;2016:119;;;2054:79;;:::i;:::-;2016:119;2174:1;2199:53;2244:7;2235:6;2224:9;2220:22;2199:53;:::i;:::-;2189:63;;2145:117;2301:2;2327:53;2372:7;2363:6;2352:9;2348:22;2327:53;:::i;:::-;2317:63;;2272:118;2429:2;2455:53;2500:7;2491:6;2480:9;2476:22;2455:53;:::i;:::-;2445:63;;2400:118;1906:619;;;;;:::o;2531:468::-;2596:6;2604;2653:2;2641:9;2632:7;2628:23;2624:32;2621:119;;;2659:79;;:::i;:::-;2621:119;2779:1;2804:53;2849:7;2840:6;2829:9;2825:22;2804:53;:::i;:::-;2794:63;;2750:117;2906:2;2932:50;2974:7;2965:6;2954:9;2950:22;2932:50;:::i;:::-;2922:60;;2877:115;2531:468;;;;;:::o;3005:474::-;3073:6;3081;3130:2;3118:9;3109:7;3105:23;3101:32;3098:119;;;3136:79;;:::i;:::-;3098:119;3256:1;3281:53;3326:7;3317:6;3306:9;3302:22;3281:53;:::i;:::-;3271:63;;3227:117;3383:2;3409:53;3454:7;3445:6;3434:9;3430:22;3409:53;:::i;:::-;3399:63;;3354:118;3005:474;;;;;:::o;3485:323::-;3541:6;3590:2;3578:9;3569:7;3565:23;3561:32;3558:119;;;3596:79;;:::i;:::-;3558:119;3716:1;3741:50;3783:7;3774:6;3763:9;3759:22;3741:50;:::i;:::-;3731:60;;3687:114;3485:323;;;;:::o;3814:329::-;3873:6;3922:2;3910:9;3901:7;3897:23;3893:32;3890:119;;;3928:79;;:::i;:::-;3890:119;4048:1;4073:53;4118:7;4109:6;4098:9;4094:22;4073:53;:::i;:::-;4063:63;;4019:117;3814:329;;;;:::o;4149:663::-;4237:6;4245;4253;4302:2;4290:9;4281:7;4277:23;4273:32;4270:119;;;4308:79;;:::i;:::-;4270:119;4428:1;4453:64;4509:7;4500:6;4489:9;4485:22;4453:64;:::i;:::-;4443:74;;4399:128;4566:2;4592:64;4648:7;4639:6;4628:9;4624:22;4592:64;:::i;:::-;4582:74;;4537:129;4705:2;4731:64;4787:7;4778:6;4767:9;4763:22;4731:64;:::i;:::-;4721:74;;4676:129;4149:663;;;;;:::o;4818:765::-;4904:6;4912;4920;4928;4977:3;4965:9;4956:7;4952:23;4948:33;4945:120;;;4984:79;;:::i;:::-;4945:120;5104:1;5129:53;5174:7;5165:6;5154:9;5150:22;5129:53;:::i;:::-;5119:63;;5075:117;5231:2;5257:53;5302:7;5293:6;5282:9;5278:22;5257:53;:::i;:::-;5247:63;;5202:118;5359:2;5385:53;5430:7;5421:6;5410:9;5406:22;5385:53;:::i;:::-;5375:63;;5330:118;5487:2;5513:53;5558:7;5549:6;5538:9;5534:22;5513:53;:::i;:::-;5503:63;;5458:118;4818:765;;;;;;;:::o;5589:179::-;5658:10;5679:46;5721:3;5713:6;5679:46;:::i;:::-;5757:4;5752:3;5748:14;5734:28;;5589:179;;;;:::o;5774:142::-;5877:32;5903:5;5877:32;:::i;:::-;5872:3;5865:45;5774:142;;:::o;5922:108::-;5999:24;6017:5;5999:24;:::i;:::-;5994:3;5987:37;5922:108;;:::o;6036:118::-;6123:24;6141:5;6123:24;:::i;:::-;6118:3;6111:37;6036:118;;:::o;6190:732::-;6309:3;6338:54;6386:5;6338:54;:::i;:::-;6408:86;6487:6;6482:3;6408:86;:::i;:::-;6401:93;;6518:56;6568:5;6518:56;:::i;:::-;6597:7;6628:1;6613:284;6638:6;6635:1;6632:13;6613:284;;;6714:6;6708:13;6741:63;6800:3;6785:13;6741:63;:::i;:::-;6734:70;;6827:60;6880:6;6827:60;:::i;:::-;6817:70;;6673:224;6660:1;6657;6653:9;6648:14;;6613:284;;;6617:14;6913:3;6906:10;;6314:608;;;6190:732;;;;:::o;6928:109::-;7009:21;7024:5;7009:21;:::i;:::-;7004:3;6997:34;6928:109;;:::o;7043:185::-;7157:64;7215:5;7157:64;:::i;:::-;7152:3;7145:77;7043:185;;:::o;7234:147::-;7329:45;7368:5;7329:45;:::i;:::-;7324:3;7317:58;7234:147;;:::o;7387:364::-;7475:3;7503:39;7536:5;7503:39;:::i;:::-;7558:71;7622:6;7617:3;7558:71;:::i;:::-;7551:78;;7638:52;7683:6;7678:3;7671:4;7664:5;7660:16;7638:52;:::i;:::-;7715:29;7737:6;7715:29;:::i;:::-;7710:3;7706:39;7699:46;;7479:272;7387:364;;;;:::o;7757:366::-;7899:3;7920:67;7984:2;7979:3;7920:67;:::i;:::-;7913:74;;7996:93;8085:3;7996:93;:::i;:::-;8114:2;8109:3;8105:12;8098:19;;7757:366;;;:::o;8129:::-;8271:3;8292:67;8356:2;8351:3;8292:67;:::i;:::-;8285:74;;8368:93;8457:3;8368:93;:::i;:::-;8486:2;8481:3;8477:12;8470:19;;8129:366;;;:::o;8501:::-;8643:3;8664:67;8728:2;8723:3;8664:67;:::i;:::-;8657:74;;8740:93;8829:3;8740:93;:::i;:::-;8858:2;8853:3;8849:12;8842:19;;8501:366;;;:::o;8873:::-;9015:3;9036:67;9100:2;9095:3;9036:67;:::i;:::-;9029:74;;9112:93;9201:3;9112:93;:::i;:::-;9230:2;9225:3;9221:12;9214:19;;8873:366;;;:::o;9245:::-;9387:3;9408:67;9472:2;9467:3;9408:67;:::i;:::-;9401:74;;9484:93;9573:3;9484:93;:::i;:::-;9602:2;9597:3;9593:12;9586:19;;9245:366;;;:::o;9617:::-;9759:3;9780:67;9844:2;9839:3;9780:67;:::i;:::-;9773:74;;9856:93;9945:3;9856:93;:::i;:::-;9974:2;9969:3;9965:12;9958:19;;9617:366;;;:::o;9989:::-;10131:3;10152:67;10216:2;10211:3;10152:67;:::i;:::-;10145:74;;10228:93;10317:3;10228:93;:::i;:::-;10346:2;10341:3;10337:12;10330:19;;9989:366;;;:::o;10361:::-;10503:3;10524:67;10588:2;10583:3;10524:67;:::i;:::-;10517:74;;10600:93;10689:3;10600:93;:::i;:::-;10718:2;10713:3;10709:12;10702:19;;10361:366;;;:::o;10733:::-;10875:3;10896:67;10960:2;10955:3;10896:67;:::i;:::-;10889:74;;10972:93;11061:3;10972:93;:::i;:::-;11090:2;11085:3;11081:12;11074:19;;10733:366;;;:::o;11105:::-;11247:3;11268:67;11332:2;11327:3;11268:67;:::i;:::-;11261:74;;11344:93;11433:3;11344:93;:::i;:::-;11462:2;11457:3;11453:12;11446:19;;11105:366;;;:::o;11477:::-;11619:3;11640:67;11704:2;11699:3;11640:67;:::i;:::-;11633:74;;11716:93;11805:3;11716:93;:::i;:::-;11834:2;11829:3;11825:12;11818:19;;11477:366;;;:::o;11849:::-;11991:3;12012:67;12076:2;12071:3;12012:67;:::i;:::-;12005:74;;12088:93;12177:3;12088:93;:::i;:::-;12206:2;12201:3;12197:12;12190:19;;11849:366;;;:::o;12221:::-;12363:3;12384:67;12448:2;12443:3;12384:67;:::i;:::-;12377:74;;12460:93;12549:3;12460:93;:::i;:::-;12578:2;12573:3;12569:12;12562:19;;12221:366;;;:::o;12593:118::-;12680:24;12698:5;12680:24;:::i;:::-;12675:3;12668:37;12593:118;;:::o;12717:112::-;12800:22;12816:5;12800:22;:::i;:::-;12795:3;12788:35;12717:112;;:::o;12835:222::-;12928:4;12966:2;12955:9;12951:18;12943:26;;12979:71;13047:1;13036:9;13032:17;13023:6;12979:71;:::i;:::-;12835:222;;;;:::o;13063:254::-;13172:4;13210:2;13199:9;13195:18;13187:26;;13223:87;13307:1;13296:9;13292:17;13283:6;13223:87;:::i;:::-;13063:254;;;;:::o;13323:332::-;13444:4;13482:2;13471:9;13467:18;13459:26;;13495:71;13563:1;13552:9;13548:17;13539:6;13495:71;:::i;:::-;13576:72;13644:2;13633:9;13629:18;13620:6;13576:72;:::i;:::-;13323:332;;;;;:::o;13661:807::-;13910:4;13948:3;13937:9;13933:19;13925:27;;13962:71;14030:1;14019:9;14015:17;14006:6;13962:71;:::i;:::-;14043:72;14111:2;14100:9;14096:18;14087:6;14043:72;:::i;:::-;14125:80;14201:2;14190:9;14186:18;14177:6;14125:80;:::i;:::-;14215;14291:2;14280:9;14276:18;14267:6;14215:80;:::i;:::-;14305:73;14373:3;14362:9;14358:19;14349:6;14305:73;:::i;:::-;14388;14456:3;14445:9;14441:19;14432:6;14388:73;:::i;:::-;13661:807;;;;;;;;;:::o;14474:210::-;14561:4;14599:2;14588:9;14584:18;14576:26;;14612:65;14674:1;14663:9;14659:17;14650:6;14612:65;:::i;:::-;14474:210;;;;:::o;14690:276::-;14810:4;14848:2;14837:9;14833:18;14825:26;;14861:98;14956:1;14945:9;14941:17;14932:6;14861:98;:::i;:::-;14690:276;;;;:::o;14972:313::-;15085:4;15123:2;15112:9;15108:18;15100:26;;15172:9;15166:4;15162:20;15158:1;15147:9;15143:17;15136:47;15200:78;15273:4;15264:6;15200:78;:::i;:::-;15192:86;;14972:313;;;;:::o;15291:419::-;15457:4;15495:2;15484:9;15480:18;15472:26;;15544:9;15538:4;15534:20;15530:1;15519:9;15515:17;15508:47;15572:131;15698:4;15572:131;:::i;:::-;15564:139;;15291:419;;;:::o;15716:::-;15882:4;15920:2;15909:9;15905:18;15897:26;;15969:9;15963:4;15959:20;15955:1;15944:9;15940:17;15933:47;15997:131;16123:4;15997:131;:::i;:::-;15989:139;;15716:419;;;:::o;16141:::-;16307:4;16345:2;16334:9;16330:18;16322:26;;16394:9;16388:4;16384:20;16380:1;16369:9;16365:17;16358:47;16422:131;16548:4;16422:131;:::i;:::-;16414:139;;16141:419;;;:::o;16566:::-;16732:4;16770:2;16759:9;16755:18;16747:26;;16819:9;16813:4;16809:20;16805:1;16794:9;16790:17;16783:47;16847:131;16973:4;16847:131;:::i;:::-;16839:139;;16566:419;;;:::o;16991:::-;17157:4;17195:2;17184:9;17180:18;17172:26;;17244:9;17238:4;17234:20;17230:1;17219:9;17215:17;17208:47;17272:131;17398:4;17272:131;:::i;:::-;17264:139;;16991:419;;;:::o;17416:::-;17582:4;17620:2;17609:9;17605:18;17597:26;;17669:9;17663:4;17659:20;17655:1;17644:9;17640:17;17633:47;17697:131;17823:4;17697:131;:::i;:::-;17689:139;;17416:419;;;:::o;17841:::-;18007:4;18045:2;18034:9;18030:18;18022:26;;18094:9;18088:4;18084:20;18080:1;18069:9;18065:17;18058:47;18122:131;18248:4;18122:131;:::i;:::-;18114:139;;17841:419;;;:::o;18266:::-;18432:4;18470:2;18459:9;18455:18;18447:26;;18519:9;18513:4;18509:20;18505:1;18494:9;18490:17;18483:47;18547:131;18673:4;18547:131;:::i;:::-;18539:139;;18266:419;;;:::o;18691:::-;18857:4;18895:2;18884:9;18880:18;18872:26;;18944:9;18938:4;18934:20;18930:1;18919:9;18915:17;18908:47;18972:131;19098:4;18972:131;:::i;:::-;18964:139;;18691:419;;;:::o;19116:::-;19282:4;19320:2;19309:9;19305:18;19297:26;;19369:9;19363:4;19359:20;19355:1;19344:9;19340:17;19333:47;19397:131;19523:4;19397:131;:::i;:::-;19389:139;;19116:419;;;:::o;19541:::-;19707:4;19745:2;19734:9;19730:18;19722:26;;19794:9;19788:4;19784:20;19780:1;19769:9;19765:17;19758:47;19822:131;19948:4;19822:131;:::i;:::-;19814:139;;19541:419;;;:::o;19966:::-;20132:4;20170:2;20159:9;20155:18;20147:26;;20219:9;20213:4;20209:20;20205:1;20194:9;20190:17;20183:47;20247:131;20373:4;20247:131;:::i;:::-;20239:139;;19966:419;;;:::o;20391:::-;20557:4;20595:2;20584:9;20580:18;20572:26;;20644:9;20638:4;20634:20;20630:1;20619:9;20615:17;20608:47;20672:131;20798:4;20672:131;:::i;:::-;20664:139;;20391:419;;;:::o;20816:222::-;20909:4;20947:2;20936:9;20932:18;20924:26;;20960:71;21028:1;21017:9;21013:17;21004:6;20960:71;:::i;:::-;20816:222;;;;:::o;21044:483::-;21215:4;21253:2;21242:9;21238:18;21230:26;;21266:71;21334:1;21323:9;21319:17;21310:6;21266:71;:::i;:::-;21384:9;21378:4;21374:20;21369:2;21358:9;21354:18;21347:48;21412:108;21515:4;21506:6;21412:108;:::i;:::-;21404:116;;21044:483;;;;;:::o;21533:831::-;21796:4;21834:3;21823:9;21819:19;21811:27;;21848:71;21916:1;21905:9;21901:17;21892:6;21848:71;:::i;:::-;21929:80;22005:2;21994:9;21990:18;21981:6;21929:80;:::i;:::-;22056:9;22050:4;22046:20;22041:2;22030:9;22026:18;22019:48;22084:108;22187:4;22178:6;22084:108;:::i;:::-;22076:116;;22202:72;22270:2;22259:9;22255:18;22246:6;22202:72;:::i;:::-;22284:73;22352:3;22341:9;22337:19;22328:6;22284:73;:::i;:::-;21533:831;;;;;;;;:::o;22370:214::-;22459:4;22497:2;22486:9;22482:18;22474:26;;22510:67;22574:1;22563:9;22559:17;22550:6;22510:67;:::i;:::-;22370:214;;;;:::o;22671:132::-;22738:4;22761:3;22753:11;;22791:4;22786:3;22782:14;22774:22;;22671:132;;;:::o;22809:114::-;22876:6;22910:5;22904:12;22894:22;;22809:114;;;:::o;22929:99::-;22981:6;23015:5;23009:12;22999:22;;22929:99;;;:::o;23034:113::-;23104:4;23136;23131:3;23127:14;23119:22;;23034:113;;;:::o;23153:184::-;23252:11;23286:6;23281:3;23274:19;23326:4;23321:3;23317:14;23302:29;;23153:184;;;;:::o;23343:169::-;23427:11;23461:6;23456:3;23449:19;23501:4;23496:3;23492:14;23477:29;;23343:169;;;;:::o;23518:305::-;23558:3;23577:20;23595:1;23577:20;:::i;:::-;23572:25;;23611:20;23629:1;23611:20;:::i;:::-;23606:25;;23765:1;23697:66;23693:74;23690:1;23687:81;23684:107;;;23771:18;;:::i;:::-;23684:107;23815:1;23812;23808:9;23801:16;;23518:305;;;;:::o;23829:185::-;23869:1;23886:20;23904:1;23886:20;:::i;:::-;23881:25;;23920:20;23938:1;23920:20;:::i;:::-;23915:25;;23959:1;23949:35;;23964:18;;:::i;:::-;23949:35;24006:1;24003;23999:9;23994:14;;23829:185;;;;:::o;24020:348::-;24060:7;24083:20;24101:1;24083:20;:::i;:::-;24078:25;;24117:20;24135:1;24117:20;:::i;:::-;24112:25;;24305:1;24237:66;24233:74;24230:1;24227:81;24222:1;24215:9;24208:17;24204:105;24201:131;;;24312:18;;:::i;:::-;24201:131;24360:1;24357;24353:9;24342:20;;24020:348;;;;:::o;24374:191::-;24414:4;24434:20;24452:1;24434:20;:::i;:::-;24429:25;;24468:20;24486:1;24468:20;:::i;:::-;24463:25;;24507:1;24504;24501:8;24498:34;;;24512:18;;:::i;:::-;24498:34;24557:1;24554;24550:9;24542:17;;24374:191;;;;:::o;24571:96::-;24608:7;24637:24;24655:5;24637:24;:::i;:::-;24626:35;;24571:96;;;:::o;24673:104::-;24718:7;24747:24;24765:5;24747:24;:::i;:::-;24736:35;;24673:104;;;:::o;24783:90::-;24817:7;24860:5;24853:13;24846:21;24835:32;;24783:90;;;:::o;24879:126::-;24916:7;24956:42;24949:5;24945:54;24934:65;;24879:126;;;:::o;25011:77::-;25048:7;25077:5;25066:16;;25011:77;;;:::o;25094:86::-;25129:7;25169:4;25162:5;25158:16;25147:27;;25094:86;;;:::o;25186:153::-;25263:9;25296:37;25327:5;25296:37;:::i;:::-;25283:50;;25186:153;;;:::o;25345:121::-;25403:9;25436:24;25454:5;25436:24;:::i;:::-;25423:37;;25345:121;;;:::o;25472:126::-;25522:9;25555:37;25586:5;25555:37;:::i;:::-;25542:50;;25472:126;;;:::o;25604:113::-;25654:9;25687:24;25705:5;25687:24;:::i;:::-;25674:37;;25604:113;;;:::o;25723:307::-;25791:1;25801:113;25815:6;25812:1;25809:13;25801:113;;;25900:1;25895:3;25891:11;25885:18;25881:1;25876:3;25872:11;25865:39;25837:2;25834:1;25830:10;25825:15;;25801:113;;;25932:6;25929:1;25926:13;25923:101;;;26012:1;26003:6;25998:3;25994:16;25987:27;25923:101;25772:258;25723:307;;;:::o;26036:320::-;26080:6;26117:1;26111:4;26107:12;26097:22;;26164:1;26158:4;26154:12;26185:18;26175:81;;26241:4;26233:6;26229:17;26219:27;;26175:81;26303:2;26295:6;26292:14;26272:18;26269:38;26266:84;;;26322:18;;:::i;:::-;26266:84;26087:269;26036:320;;;:::o;26362:180::-;26410:77;26407:1;26400:88;26507:4;26504:1;26497:15;26531:4;26528:1;26521:15;26548:180;26596:77;26593:1;26586:88;26693:4;26690:1;26683:15;26717:4;26714:1;26707:15;26734:180;26782:77;26779:1;26772:88;26879:4;26876:1;26869:15;26903:4;26900:1;26893:15;26920:180;26968:77;26965:1;26958:88;27065:4;27062:1;27055:15;27089:4;27086:1;27079:15;27106:180;27154:77;27151:1;27144:88;27251:4;27248:1;27241:15;27275:4;27272:1;27265:15;27415:117;27524:1;27521;27514:12;27538:102;27579:6;27630:2;27626:7;27621:2;27614:5;27610:14;27606:28;27596:38;;27538:102;;;:::o;27646:222::-;27786:34;27782:1;27774:6;27770:14;27763:58;27855:5;27850:2;27842:6;27838:15;27831:30;27646:222;:::o;27874:225::-;28014:34;28010:1;28002:6;27998:14;27991:58;28083:8;28078:2;28070:6;28066:15;28059:33;27874:225;:::o;28105:221::-;28245:34;28241:1;28233:6;28229:14;28222:58;28314:4;28309:2;28301:6;28297:15;28290:29;28105:221;:::o;28332:177::-;28472:29;28468:1;28460:6;28456:14;28449:53;28332:177;:::o;28515:181::-;28655:33;28651:1;28643:6;28639:14;28632:57;28515:181;:::o;28702:227::-;28842:34;28838:1;28830:6;28826:14;28819:58;28911:10;28906:2;28898:6;28894:15;28887:35;28702:227;:::o;28935:220::-;29075:34;29071:1;29063:6;29059:14;29052:58;29144:3;29139:2;29131:6;29127:15;29120:28;28935:220;:::o;29161:182::-;29301:34;29297:1;29289:6;29285:14;29278:58;29161:182;:::o;29349:228::-;29489:34;29485:1;29477:6;29473:14;29466:58;29558:11;29553:2;29545:6;29541:15;29534:36;29349:228;:::o;29583:224::-;29723:34;29719:1;29711:6;29707:14;29700:58;29792:7;29787:2;29779:6;29775:15;29768:32;29583:224;:::o;29813:223::-;29953:34;29949:1;29941:6;29937:14;29930:58;30022:6;30017:2;30009:6;30005:15;29998:31;29813:223;:::o;30042:181::-;30182:33;30178:1;30170:6;30166:14;30159:57;30042:181;:::o;30229:222::-;30369:34;30365:1;30357:6;30353:14;30346:58;30438:5;30433:2;30425:6;30421:15;30414:30;30229:222;:::o;30457:122::-;30530:24;30548:5;30530:24;:::i;:::-;30523:5;30520:35;30510:63;;30569:1;30566;30559:12;30510:63;30457:122;:::o;30585:116::-;30655:21;30670:5;30655:21;:::i;:::-;30648:5;30645:32;30635:60;;30691:1;30688;30681:12;30635:60;30585:116;:::o;30707:122::-;30780:24;30798:5;30780:24;:::i;:::-;30773:5;30770:35;30760:63;;30819:1;30816;30809:12;30760:63;30707:122;:::o

Swarm Source

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