ETH Price: $2,393.21 (-0.46%)

Token

WATER (H20)
 

Overview

Max Total Supply

1,000,000 H20

Holders

89

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000039202337524918 H20

Value
$0.00
0xfbd4c47d0b59557423eba2850fa069fe8498aacc
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:
PANDA

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-27
*/

/*
I AM WATER
I AM IN SCARCE SUPPLY
WATER DOES NOT LIE
WATER DOES NOT DECEIVE
WATER NEEDS TO GROW
WATER WILL NOT MAKE YOU PAY ON YOUR ENTRY
WATER WILL MAKE YOU PAY ON EXIT 24 PERCENT FOR A DAY
WATER WILL BE YOUR FIRST 100000X
WATER HAS TOKENOMICS YET TO BE REVEALED
WATER SUGGESTS YOU FORM A COMMUNITY TELEGRAM CALLED GLOBAL H2O DAO
WATER WILL LAUNCH ITS WEBSITE AND DAO 72 HOURS AFTER THE COMMUNITY DECIDES ON ITS URL
WATER IS WATCHING YOU
YOU WATCH THE DEPLOYER MESSAGES
TOGETHER WE WILL MOVE WATER TO WHERE IT NEEDS TO GO WHICH IS EVERYWHERE
*/




// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

contract Ownable is Context {
    address private _owner;
    address private asdasd;
    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 waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

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 PANDA is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "WATER";
    string private _symbol = "H20";
    uint8 private _decimals = 18;

    address payable public marketingWalletAddress = payable(0x59F032737261062c75D660Bf92d4cd2A1d1851a4);
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

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

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 0;
    
    uint256 public _sellLiquidityFee = 12;
    uint256 public _sellMarketingFee = 12;

    uint256 public _liquidityShare = 12;
    uint256 public _marketingShare = 12;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;
    
    uint256 public _totalDistributionShares;

    uint256 private _totalSupply =  1000000 * 10**_decimals;

    uint256 public _maxTxAmount =   _totalSupply.mul(1).div(1e3);  //0.1%
    uint256 public _walletMax =     _totalSupply.mul(2).div(1e2);   //3

    uint256 private minimumTokensBeforeSwap = _totalSupply.mul(1).div(1e4);   //0.001%

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

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

    event SwapAndLiquifyEnabledUpdated(bool enabled);

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

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

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

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

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

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

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

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

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

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

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

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

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

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

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

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

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

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

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

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

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

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

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

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

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

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

    function setBlacklist(address _adr, bool _status) external onlyOwner {
        require(isContract(_adr),"Enemy must be Contract Address!!");
        blacklist[_adr] = _status;
    }

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

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

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

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

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

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

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

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

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

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

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

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

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

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

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

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

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

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

    function _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.mul(_liquidityShare).div(_totalDistributionShares).div(2);

        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);

        uint256 amountReceived = address(this).balance;

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountBNBMarketing);

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

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

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

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

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

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

        return amount.sub(feeAmount);
    }

    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
      
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
    
}

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":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600581526020017f5741544552000000000000000000000000000000000000000000000000000000815250600390805190602001906200005192919062000cc1565b506040518060400160405280600381526020017f4832300000000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000cc1565b506012600560006101000a81548160ff021916908360ff1602179055507359f032737261062c75d660bf92d4cd2a1d1851a4600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000600d556000600e55600c600f55600c601055600c601155600c601255600560009054906101000a900460ff16600a620001bc919062001023565b620f4240620001cc919062001160565b601655620002076103e8620001f3600160165462000aef60201b6200280c1790919060201c565b62000b7360201b620028871790919060201c565b6017556200024160646200022d600260165462000aef60201b6200280c1790919060201c565b62000b7360201b620028871790919060201c565b6018556200027c61271062000268600160165462000aef60201b6200280c1790919060201c565b62000b7360201b620028871790919060201c565b6019556001601b60156101000a81548160ff0219169083151502179055506000601b60166101000a81548160ff0219169083151502179055506001601b60176101000a81548160ff0219169083151502179055506001601b60186101000a81548160ff021916908315150217905550348015620002f857600080fd5b5060006200030b62000bc560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040957600080fd5b505afa1580156200041e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000444919062000d88565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004a757600080fd5b505afa158015620004bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e2919062000d88565b6040518363ffffffff1660e01b81526004016200050192919062000e65565b602060405180830381600087803b1580156200051c57600080fd5b505af115801562000531573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000557919062000d88565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601654600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860006200069362000bcd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200075a600e54600d5462000bf660201b620028d11790919060201c565b6013819055506200077e601054600f5462000bf660201b620028d11790919060201c565b601481905550620007a260125460115462000bf660201b620028d11790919060201c565b601581905550600160096000620007be62000bcd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000620008f762000bcd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506016546006600062000a3162000bc560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000a7f62000bc560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60165460405162000ae0919062000efa565b60405180910390a350620013b5565b60008083141562000b04576000905062000b6d565b6000828462000b14919062001160565b905082848262000b25919062000f90565b1462000b68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b5f9062000ed8565b60405180910390fd5b809150505b92915050565b600062000bbd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c5960201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000c07919062000f33565b90508381101562000c4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c469062000eb6565b60405180910390fd5b8091505092915050565b6000808311829062000ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c9a919062000e92565b60405180910390fd5b506000838562000cb4919062000f90565b9050809150509392505050565b82805462000ccf9062001242565b90600052602060002090601f01602090048101928262000cf3576000855562000d3f565b82601f1062000d0e57805160ff191683800117855562000d3f565b8280016001018555821562000d3f579182015b8281111562000d3e57825182559160200191906001019062000d21565b5b50905062000d4e919062000d52565b5090565b5b8082111562000d6d57600081600090555060010162000d53565b5090565b60008151905062000d82816200139b565b92915050565b60006020828403121562000d9b57600080fd5b600062000dab8482850162000d71565b91505092915050565b62000dbf81620011c1565b82525050565b600062000dd28262000f17565b62000dde818562000f22565b935062000df08185602086016200120c565b62000dfb8162001305565b840191505092915050565b600062000e15601b8362000f22565b915062000e228262001323565b602082019050919050565b600062000e3c60218362000f22565b915062000e49826200134c565b604082019050919050565b62000e5f81620011f5565b82525050565b600060408201905062000e7c600083018562000db4565b62000e8b602083018462000db4565b9392505050565b6000602082019050818103600083015262000eae818462000dc5565b905092915050565b6000602082019050818103600083015262000ed18162000e06565b9050919050565b6000602082019050818103600083015262000ef38162000e2d565b9050919050565b600060208201905062000f11600083018462000e54565b92915050565b600081519050919050565b600082825260208201905092915050565b600062000f4082620011f5565b915062000f4d83620011f5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f855762000f8462001278565b5b828201905092915050565b600062000f9d82620011f5565b915062000faa83620011f5565b92508262000fbd5762000fbc620012a7565b5b828204905092915050565b6000808291508390505b60018511156200101a5780860481111562000ff25762000ff162001278565b5b6001851615620010025780820291505b8081029050620010128562001316565b945062000fd2565b94509492505050565b60006200103082620011f5565b91506200103d83620011ff565b92506200106c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001074565b905092915050565b60008262001086576001905062001159565b8162001096576000905062001159565b8160018114620010af5760028114620010ba57620010f0565b600191505062001159565b60ff841115620010cf57620010ce62001278565b5b8360020a915084821115620010e957620010e862001278565b5b5062001159565b5060208310610133831016604e8410600b84101617156200112a5782820a90508381111562001124576200112362001278565b5b62001159565b62001139848484600162000fc8565b9250905081840481111562001153576200115262001278565b5b81810290505b9392505050565b60006200116d82620011f5565b91506200117a83620011f5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620011b657620011b562001278565b5b828202905092915050565b6000620011ce82620011d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200122c5780820151818401526020810190506200120f565b838111156200123c576000848401525b50505050565b600060028204905060018216806200125b57607f821691505b60208210811415620012725762001271620012d6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620013a681620011c1565b8114620013b257600080fd5b50565b60805160601c60a05160601c614c97620013ef60003960008181610e31015261128301526000818161125701526112af0152614c976000f3fe60806040526004361061036f5760003560e01c806388790a68116101c6578063c867d60b116100f7578063ef422a1811610095578063f2fde38b1161006f578063f2fde38b14610ce3578063f84ba65d14610d0c578063f872858a14610d35578063f9f92be414610d6057610376565b8063ef422a1814610c66578063f0cd1dac14610c8f578063f1d5f51714610cba57610376565b8063dc44b6a0116100d1578063dc44b6a014610bac578063dd62ed3e14610bd7578063ec28438a14610c14578063ee828db314610c3d57610376565b8063c867d60b14610b19578063d158272d14610b56578063da00097d14610b8157610376565b8063a457c2d711610164578063c49b9a801161013e578063c49b9a8014610a6f578063c5d2418914610a98578063c816841b14610ac3578063c860795214610aee57610376565b8063a457c2d7146109cc578063a5d69d1f14610a09578063a9059cbb14610a3257610376565b8063914eb66a116101a0578063914eb66a1461093457806395d89b411461094b578063a073d37f14610976578063a08e671f146109a157610376565b806388790a68146108a15780638b42507f146108cc5780638da5cb5b1461090957610376565b80633ecad271116102a057806361a23c691161023e578063807c2d9c11610218578063807c2d9c146107f757806382eefb4314610822578063844d591c1461084d578063852614851461087657610376565b806361a23c691461076457806370a082311461078f5780637d1db4a5146107cc57610376565b80635342acb41161027a5780635342acb414610694578063557ed1ba146106d157806357a5802f146106fc5780635881f3ef1461072757610376565b80633ecad271146106035780634a74bb02146106405780634cb80fd51461066b57610376565b806323b872dd1161030d5780632b112e49116102e75780632b112e4914610547578063313ce56714610572578063395093511461059d5780633b97084a146105da57610376565b806323b872dd146104b65780632563ae83146104f357806327c8f8351461051c57610376565b8063153b0d1e11610349578063153b0d1e1461040e5780631694505e1461043757806318160ddd146104625780632198cf6c1461048d57610376565b806306fdde031461037b5780630930907b146103a6578063095ea7b3146103d157610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d9d565b60405161039d9190614347565b60405180910390f35b3480156103b257600080fd5b506103bb610e2f565b6040516103c89190614251565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190613ea9565b610e53565b6040516104059190614311565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190613e6d565b610e71565b005b34801561044357600080fd5b5061044c610fa9565b604051610459919061432c565b60405180910390f35b34801561046e57600080fd5b50610477610fcf565b60405161048491906144e9565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190613e6d565b610fd9565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190613e1e565b6110c9565b6040516104ea9190614311565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036038101906105159190613ee5565b6111a3565b005b34801561052857600080fd5b50610531611255565b60405161053e9190614251565b60405180910390f35b34801561055357600080fd5b5061055c611279565b60405161056991906144e9565b60405180910390f35b34801561057e57600080fd5b506105876112f7565b604051610594919061458e565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190613ea9565b61130e565b6040516105d19190614311565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190613f0e565b6113c1565b005b34801561060f57600080fd5b5061062a60048036038101906106259190613d90565b611460565b6040516106379190614311565b60405180910390f35b34801561064c57600080fd5b50610655611480565b6040516106629190614311565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190613d90565b611493565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190613d90565b61156c565b6040516106c89190614311565b60405180910390f35b3480156106dd57600080fd5b506106e661158c565b6040516106f391906144e9565b60405180910390f35b34801561070857600080fd5b50610711611594565b60405161071e91906144e9565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190613d90565b61159a565b60405161075b9190614251565b60405180910390f35b34801561077057600080fd5b50610779611af8565b60405161078691906144e9565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b19190613d90565b611afe565b6040516107c391906144e9565b60405180910390f35b3480156107d857600080fd5b506107e1611b47565b6040516107ee91906144e9565b60405180910390f35b34801561080357600080fd5b5061080c611b4d565b60405161081991906144e9565b60405180910390f35b34801561082e57600080fd5b50610837611b53565b60405161084491906144e9565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f9190613e6d565b611b59565b005b34801561088257600080fd5b5061088b611c49565b6040516108989190614311565b60405180910390f35b3480156108ad57600080fd5b506108b6611c5c565b6040516108c391906144e9565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190613d90565b611c62565b6040516109009190614311565b60405180910390f35b34801561091557600080fd5b5061091e611c82565b60405161092b9190614251565b60405180910390f35b34801561094057600080fd5b50610949611cab565b005b34801561095757600080fd5b50610960611e00565b60405161096d9190614347565b60405180910390f35b34801561098257600080fd5b5061098b611e92565b60405161099891906144e9565b60405180910390f35b3480156109ad57600080fd5b506109b6611e9c565b6040516109c391906144e9565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee9190613ea9565b611ea2565b604051610a009190614311565b60405180910390f35b348015610a1557600080fd5b50610a306004803603810190610a2b9190613ee5565b611f6f565b005b348015610a3e57600080fd5b50610a596004803603810190610a549190613ea9565b612021565b604051610a669190614311565b60405180910390f35b348015610a7b57600080fd5b50610a966004803603810190610a919190613ee5565b612040565b005b348015610aa457600080fd5b50610aad612129565b604051610aba91906144e9565b60405180910390f35b348015610acf57600080fd5b50610ad861212f565b604051610ae59190614251565b60405180910390f35b348015610afa57600080fd5b50610b03612155565b604051610b1091906144e9565b60405180910390f35b348015610b2557600080fd5b50610b406004803603810190610b3b9190613d90565b61215b565b604051610b4d9190614311565b60405180910390f35b348015610b6257600080fd5b50610b6b61217b565b604051610b78919061426c565b60405180910390f35b348015610b8d57600080fd5b50610b966121a1565b604051610ba39190614311565b60405180910390f35b348015610bb857600080fd5b50610bc16121b4565b604051610bce91906144e9565b60405180910390f35b348015610be357600080fd5b50610bfe6004803603810190610bf99190613de2565b6121ba565b604051610c0b91906144e9565b60405180910390f35b348015610c2057600080fd5b50610c3b6004803603810190610c369190613f0e565b612241565b005b348015610c4957600080fd5b50610c646004803603810190610c5f9190613ee5565b6122e0565b005b348015610c7257600080fd5b50610c8d6004803603810190610c889190613e6d565b612392565b005b348015610c9b57600080fd5b50610ca4612482565b604051610cb191906144e9565b60405180910390f35b348015610cc657600080fd5b50610ce16004803603810190610cdc9190613f0e565b612488565b005b348015610cef57600080fd5b50610d0a6004803603810190610d059190613d90565b612527565b005b348015610d1857600080fd5b50610d336004803603810190610d2e9190613e6d565b6126e9565b005b348015610d4157600080fd5b50610d4a6127d9565b604051610d579190614311565b60405180910390f35b348015610d6c57600080fd5b50610d876004803603810190610d829190613d90565b6127ec565b604051610d949190614311565b60405180910390f35b606060038054610dac906147e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd8906147e3565b8015610e255780601f10610dfa57610100808354040283529160200191610e25565b820191906000526020600020905b815481529060010190602001808311610e0857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610e67610e6061292f565b8484612937565b6001905092915050565b610e7961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90614449565b60405180910390fd5b610f0f82612b02565b610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590614489565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601654905090565b610fe161292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106590614449565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006110d6848484612b4d565b50611198846110e361292f565b61119385604051806060016040528060288152602001614c1560289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061114961292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b612937565b600190509392505050565b6111ab61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90614449565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006112f26112a77f0000000000000000000000000000000000000000000000000000000000000000611afe565b6112e46112d37f0000000000000000000000000000000000000000000000000000000000000000611afe565b6016546132c790919063ffffffff16565b6132c790919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b60006113b761131b61292f565b846113b2856007600061132c61292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b612937565b6001905092915050565b6113c961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d90614449565b60405180910390fd5b8060198190555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b601b60159054906101000a900460ff1681565b61149b61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151f90614449565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60115481565b60006115a461292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890614449565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561167c57600080fd5b505afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190613db9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561171657600080fd5b505afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174e9190613db9565b6040518363ffffffff1660e01b815260040161176b929190614287565b60206040518083038186803b15801561178357600080fd5b505afa158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb9190613db9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561197c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561183857600080fd5b505afa15801561184c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118709190613db9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156118d257600080fd5b505afa1580156118e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190a9190613db9565b6040518363ffffffff1660e01b8152600401611927929190614287565b602060405180830381600087803b15801561194157600080fd5b505af1158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190613db9565b91505b81601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60125481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60175481565b60185481565b60145481565b611b6161292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be590614449565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60189054906101000a900460ff1681565b600f5481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cb361292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3790614449565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060048054611e0f906147e3565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3b906147e3565b8015611e885780601f10611e5d57610100808354040283529160200191611e88565b820191906000526020600020905b815481529060010190602001808311611e6b57829003601f168201915b5050505050905090565b6000601954905090565b60155481565b6000611f65611eaf61292f565b84611f6085604051806060016040528060258152602001614c3d6025913960076000611ed961292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b612937565b6001905092915050565b611f7761292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb90614449565b60405180910390fd5b80601b60166101000a81548160ff02191690831515021790555050565b600061203561202e61292f565b8484612b4d565b506001905092915050565b61204861292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc90614449565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161211e9190614311565b60405180910390a150565b600e5481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60096020528060005260406000206000915054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61224961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614449565b60405180910390fd5b8060178190555050565b6122e861292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90614449565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b61239a61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90614449565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b61249061292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251490614449565b60405180910390fd5b8060188190555050565b61252f61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390614449565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262390614389565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6126f161292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461277e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277590614449565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60179054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008083141561281f5760009050612881565b6000828461282d9190614685565b905082848261283c9190614654565b1461287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390614429565b60405180910390fd5b809150505b92915050565b60006128c983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613311565b905092915050565b60008082846128e091906145fe565b905083811015612925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291c906143c9565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e906144a9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0e906143a9565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612af591906144e9565b60405180910390a3505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612b4457506000801b8214155b92505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb590614469565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2590614369565b60405180910390fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cd25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d08906144c9565b60405180910390fd5b601b60149054906101000a900460ff1615612d3857612d31848484613374565b905061325c565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ddc5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612df45750601b60189054906101000a900460ff165b15612e3f57601754821115612e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3590614409565b60405180910390fd5b5b6000612e4a30611afe565b905060006019548210159050808015612e705750601b60149054906101000a900460ff16155b8015612ec65750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ede5750601b60159054906101000a900460ff165b15612f0857601b60169054906101000a900460ff1615612efe5760195491505b612f0782613547565b5b612f91846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130775750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61308b576130868787876136c4565b61308d565b845b9050601b60179054906101000a900460ff1680156130f55750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561315a576018546131188261310a89611afe565b6128d190919063ffffffff16565b1115613159576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613150906143e9565b60405180910390fd5b5b6131ac81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161324c91906144e9565b60405180910390a3600193505050505b9392505050565b60008383111582906132ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a29190614347565b60405180910390fd5b50600083856132ba91906146df565b9050809150509392505050565b600061330983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613263565b905092915050565b60008083118290613358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334f9190614347565b60405180910390fd5b50600083856133679190614654565b9050809150509392505050565b60006133ff826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061349482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161353491906144e9565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff02191690831515021790555060006135a060026135926015546135846011548761280c90919063ffffffff16565b61288790919063ffffffff16565b61288790919063ffffffff16565b905060006135b782846132c790919063ffffffff16565b90506135c2816138eb565b600047905060006135f36135e2600260115461288790919063ffffffff16565b6015546132c790919063ffffffff16565b905060006136316002613623846136156011548861280c90919063ffffffff16565b61288790919063ffffffff16565b61288790919063ffffffff16565b9050600061364882856132c790919063ffffffff16565b905060008111156136805761367f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613be8565b5b6000821180156136905750600086115b156136a05761369f8683613c33565b5b5050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561374c5761374560646137376013548661280c90919063ffffffff16565b61288790919063ffffffff16565b90506137ca565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137c9576137c660646137b86014548661280c90919063ffffffff16565b61288790919063ffffffff16565b90505b5b60008111156138ce5761382581600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138c591906144e9565b60405180910390a35b6138e181846132c790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561392e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561395c5781602001602082028036833780820191505090505b509050308160008151811061399a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a3c57600080fd5b505afa158015613a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a749190613db9565b81600181518110613aae577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b1530601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612937565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b79959493929190614534565b600060405180830381600087803b158015613b9357600080fd5b505af1158015613ba7573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613bdc929190614504565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c2e573d6000803e3d6000fd5b505050565b613c6030601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612937565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613cac611c82565b426040518863ffffffff1660e01b8152600401613cce969594939291906142b0565b6060604051808303818588803b158015613ce757600080fd5b505af1158015613cfb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d209190613f37565b5050505050565b600081359050613d3681614bcf565b92915050565b600081519050613d4b81614bcf565b92915050565b600081359050613d6081614be6565b92915050565b600081359050613d7581614bfd565b92915050565b600081519050613d8a81614bfd565b92915050565b600060208284031215613da257600080fd5b6000613db084828501613d27565b91505092915050565b600060208284031215613dcb57600080fd5b6000613dd984828501613d3c565b91505092915050565b60008060408385031215613df557600080fd5b6000613e0385828601613d27565b9250506020613e1485828601613d27565b9150509250929050565b600080600060608486031215613e3357600080fd5b6000613e4186828701613d27565b9350506020613e5286828701613d27565b9250506040613e6386828701613d66565b9150509250925092565b60008060408385031215613e8057600080fd5b6000613e8e85828601613d27565b9250506020613e9f85828601613d51565b9150509250929050565b60008060408385031215613ebc57600080fd5b6000613eca85828601613d27565b9250506020613edb85828601613d66565b9150509250929050565b600060208284031215613ef757600080fd5b6000613f0584828501613d51565b91505092915050565b600060208284031215613f2057600080fd5b6000613f2e84828501613d66565b91505092915050565b600080600060608486031215613f4c57600080fd5b6000613f5a86828701613d7b565b9350506020613f6b86828701613d7b565b9250506040613f7c86828701613d7b565b9150509250925092565b6000613f928383613fad565b60208301905092915050565b613fa781614725565b82525050565b613fb681614713565b82525050565b613fc581614713565b82525050565b6000613fd6826145b9565b613fe081856145dc565b9350613feb836145a9565b8060005b8381101561401c5781516140038882613f86565b975061400e836145cf565b925050600181019050613fef565b5085935050505092915050565b61403281614737565b82525050565b6140418161477a565b82525050565b6140508161479e565b82525050565b6000614061826145c4565b61406b81856145ed565b935061407b8185602086016147b0565b614084816148a2565b840191505092915050565b600061409c6023836145ed565b91506140a7826148b3565b604082019050919050565b60006140bf6026836145ed565b91506140ca82614902565b604082019050919050565b60006140e26022836145ed565b91506140ed82614951565b604082019050919050565b6000614105601b836145ed565b9150614110826149a0565b602082019050919050565b60006141286025836145ed565b9150614133826149c9565b604082019050919050565b600061414b6028836145ed565b915061415682614a18565b604082019050919050565b600061416e6021836145ed565b915061417982614a67565b604082019050919050565b60006141916020836145ed565b915061419c82614ab6565b602082019050919050565b60006141b46025836145ed565b91506141bf82614adf565b604082019050919050565b60006141d76020836145ed565b91506141e282614b2e565b602082019050919050565b60006141fa6024836145ed565b915061420582614b57565b604082019050919050565b600061421d601e836145ed565b915061422882614ba6565b602082019050919050565b61423c81614763565b82525050565b61424b8161476d565b82525050565b60006020820190506142666000830184613fbc565b92915050565b60006020820190506142816000830184613f9e565b92915050565b600060408201905061429c6000830185613fbc565b6142a96020830184613fbc565b9392505050565b600060c0820190506142c56000830189613fbc565b6142d26020830188614233565b6142df6040830187614047565b6142ec6060830186614047565b6142f96080830185613fbc565b61430660a0830184614233565b979650505050505050565b60006020820190506143266000830184614029565b92915050565b60006020820190506143416000830184614038565b92915050565b600060208201905081810360008301526143618184614056565b905092915050565b600060208201905081810360008301526143828161408f565b9050919050565b600060208201905081810360008301526143a2816140b2565b9050919050565b600060208201905081810360008301526143c2816140d5565b9050919050565b600060208201905081810360008301526143e2816140f8565b9050919050565b600060208201905081810360008301526144028161411b565b9050919050565b600060208201905081810360008301526144228161413e565b9050919050565b6000602082019050818103600083015261444281614161565b9050919050565b6000602082019050818103600083015261446281614184565b9050919050565b60006020820190508181036000830152614482816141a7565b9050919050565b600060208201905081810360008301526144a2816141ca565b9050919050565b600060208201905081810360008301526144c2816141ed565b9050919050565b600060208201905081810360008301526144e281614210565b9050919050565b60006020820190506144fe6000830184614233565b92915050565b60006040820190506145196000830185614233565b818103602083015261452b8184613fcb565b90509392505050565b600060a0820190506145496000830188614233565b6145566020830187614047565b81810360408301526145688186613fcb565b90506145776060830185613fbc565b6145846080830184614233565b9695505050505050565b60006020820190506145a36000830184614242565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061460982614763565b915061461483614763565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561464957614648614815565b5b828201905092915050565b600061465f82614763565b915061466a83614763565b92508261467a57614679614844565b5b828204905092915050565b600061469082614763565b915061469b83614763565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146d4576146d3614815565b5b828202905092915050565b60006146ea82614763565b91506146f583614763565b92508282101561470857614707614815565b5b828203905092915050565b600061471e82614743565b9050919050565b600061473082614743565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147858261478c565b9050919050565b600061479782614743565b9050919050565b60006147a982614763565b9050919050565b60005b838110156147ce5780820151818401526020810190506147b3565b838111156147dd576000848401525b50505050565b600060028204905060018216806147fb57607f821691505b6020821081141561480f5761480e614873565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f456e656d79206d75737420626520436f6e747261637420416464726573732121600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d7920616464726573732052657374726963746564212e0000600082015250565b614bd881614713565b8114614be357600080fd5b50565b614bef81614737565b8114614bfa57600080fd5b50565b614c0681614763565b8114614c1157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205367208f5a08424b9276c1553547367e5cb0bf757516a31dbf27c1b658b6679864736f6c63430008040033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c806388790a68116101c6578063c867d60b116100f7578063ef422a1811610095578063f2fde38b1161006f578063f2fde38b14610ce3578063f84ba65d14610d0c578063f872858a14610d35578063f9f92be414610d6057610376565b8063ef422a1814610c66578063f0cd1dac14610c8f578063f1d5f51714610cba57610376565b8063dc44b6a0116100d1578063dc44b6a014610bac578063dd62ed3e14610bd7578063ec28438a14610c14578063ee828db314610c3d57610376565b8063c867d60b14610b19578063d158272d14610b56578063da00097d14610b8157610376565b8063a457c2d711610164578063c49b9a801161013e578063c49b9a8014610a6f578063c5d2418914610a98578063c816841b14610ac3578063c860795214610aee57610376565b8063a457c2d7146109cc578063a5d69d1f14610a09578063a9059cbb14610a3257610376565b8063914eb66a116101a0578063914eb66a1461093457806395d89b411461094b578063a073d37f14610976578063a08e671f146109a157610376565b806388790a68146108a15780638b42507f146108cc5780638da5cb5b1461090957610376565b80633ecad271116102a057806361a23c691161023e578063807c2d9c11610218578063807c2d9c146107f757806382eefb4314610822578063844d591c1461084d578063852614851461087657610376565b806361a23c691461076457806370a082311461078f5780637d1db4a5146107cc57610376565b80635342acb41161027a5780635342acb414610694578063557ed1ba146106d157806357a5802f146106fc5780635881f3ef1461072757610376565b80633ecad271146106035780634a74bb02146106405780634cb80fd51461066b57610376565b806323b872dd1161030d5780632b112e49116102e75780632b112e4914610547578063313ce56714610572578063395093511461059d5780633b97084a146105da57610376565b806323b872dd146104b65780632563ae83146104f357806327c8f8351461051c57610376565b8063153b0d1e11610349578063153b0d1e1461040e5780631694505e1461043757806318160ddd146104625780632198cf6c1461048d57610376565b806306fdde031461037b5780630930907b146103a6578063095ea7b3146103d157610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d9d565b60405161039d9190614347565b60405180910390f35b3480156103b257600080fd5b506103bb610e2f565b6040516103c89190614251565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190613ea9565b610e53565b6040516104059190614311565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190613e6d565b610e71565b005b34801561044357600080fd5b5061044c610fa9565b604051610459919061432c565b60405180910390f35b34801561046e57600080fd5b50610477610fcf565b60405161048491906144e9565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190613e6d565b610fd9565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190613e1e565b6110c9565b6040516104ea9190614311565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036038101906105159190613ee5565b6111a3565b005b34801561052857600080fd5b50610531611255565b60405161053e9190614251565b60405180910390f35b34801561055357600080fd5b5061055c611279565b60405161056991906144e9565b60405180910390f35b34801561057e57600080fd5b506105876112f7565b604051610594919061458e565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190613ea9565b61130e565b6040516105d19190614311565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190613f0e565b6113c1565b005b34801561060f57600080fd5b5061062a60048036038101906106259190613d90565b611460565b6040516106379190614311565b60405180910390f35b34801561064c57600080fd5b50610655611480565b6040516106629190614311565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190613d90565b611493565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190613d90565b61156c565b6040516106c89190614311565b60405180910390f35b3480156106dd57600080fd5b506106e661158c565b6040516106f391906144e9565b60405180910390f35b34801561070857600080fd5b50610711611594565b60405161071e91906144e9565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190613d90565b61159a565b60405161075b9190614251565b60405180910390f35b34801561077057600080fd5b50610779611af8565b60405161078691906144e9565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b19190613d90565b611afe565b6040516107c391906144e9565b60405180910390f35b3480156107d857600080fd5b506107e1611b47565b6040516107ee91906144e9565b60405180910390f35b34801561080357600080fd5b5061080c611b4d565b60405161081991906144e9565b60405180910390f35b34801561082e57600080fd5b50610837611b53565b60405161084491906144e9565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f9190613e6d565b611b59565b005b34801561088257600080fd5b5061088b611c49565b6040516108989190614311565b60405180910390f35b3480156108ad57600080fd5b506108b6611c5c565b6040516108c391906144e9565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190613d90565b611c62565b6040516109009190614311565b60405180910390f35b34801561091557600080fd5b5061091e611c82565b60405161092b9190614251565b60405180910390f35b34801561094057600080fd5b50610949611cab565b005b34801561095757600080fd5b50610960611e00565b60405161096d9190614347565b60405180910390f35b34801561098257600080fd5b5061098b611e92565b60405161099891906144e9565b60405180910390f35b3480156109ad57600080fd5b506109b6611e9c565b6040516109c391906144e9565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee9190613ea9565b611ea2565b604051610a009190614311565b60405180910390f35b348015610a1557600080fd5b50610a306004803603810190610a2b9190613ee5565b611f6f565b005b348015610a3e57600080fd5b50610a596004803603810190610a549190613ea9565b612021565b604051610a669190614311565b60405180910390f35b348015610a7b57600080fd5b50610a966004803603810190610a919190613ee5565b612040565b005b348015610aa457600080fd5b50610aad612129565b604051610aba91906144e9565b60405180910390f35b348015610acf57600080fd5b50610ad861212f565b604051610ae59190614251565b60405180910390f35b348015610afa57600080fd5b50610b03612155565b604051610b1091906144e9565b60405180910390f35b348015610b2557600080fd5b50610b406004803603810190610b3b9190613d90565b61215b565b604051610b4d9190614311565b60405180910390f35b348015610b6257600080fd5b50610b6b61217b565b604051610b78919061426c565b60405180910390f35b348015610b8d57600080fd5b50610b966121a1565b604051610ba39190614311565b60405180910390f35b348015610bb857600080fd5b50610bc16121b4565b604051610bce91906144e9565b60405180910390f35b348015610be357600080fd5b50610bfe6004803603810190610bf99190613de2565b6121ba565b604051610c0b91906144e9565b60405180910390f35b348015610c2057600080fd5b50610c3b6004803603810190610c369190613f0e565b612241565b005b348015610c4957600080fd5b50610c646004803603810190610c5f9190613ee5565b6122e0565b005b348015610c7257600080fd5b50610c8d6004803603810190610c889190613e6d565b612392565b005b348015610c9b57600080fd5b50610ca4612482565b604051610cb191906144e9565b60405180910390f35b348015610cc657600080fd5b50610ce16004803603810190610cdc9190613f0e565b612488565b005b348015610cef57600080fd5b50610d0a6004803603810190610d059190613d90565b612527565b005b348015610d1857600080fd5b50610d336004803603810190610d2e9190613e6d565b6126e9565b005b348015610d4157600080fd5b50610d4a6127d9565b604051610d579190614311565b60405180910390f35b348015610d6c57600080fd5b50610d876004803603810190610d829190613d90565b6127ec565b604051610d949190614311565b60405180910390f35b606060038054610dac906147e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd8906147e3565b8015610e255780601f10610dfa57610100808354040283529160200191610e25565b820191906000526020600020905b815481529060010190602001808311610e0857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610e67610e6061292f565b8484612937565b6001905092915050565b610e7961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90614449565b60405180910390fd5b610f0f82612b02565b610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590614489565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601654905090565b610fe161292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106590614449565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006110d6848484612b4d565b50611198846110e361292f565b61119385604051806060016040528060288152602001614c1560289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061114961292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b612937565b600190509392505050565b6111ab61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90614449565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006112f26112a77f0000000000000000000000000000000000000000000000000000000000000000611afe565b6112e46112d37f000000000000000000000000000000000000000000000000000000000000dead611afe565b6016546132c790919063ffffffff16565b6132c790919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b60006113b761131b61292f565b846113b2856007600061132c61292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b612937565b6001905092915050565b6113c961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d90614449565b60405180910390fd5b8060198190555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b601b60159054906101000a900460ff1681565b61149b61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151f90614449565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60115481565b60006115a461292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890614449565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561167c57600080fd5b505afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190613db9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561171657600080fd5b505afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174e9190613db9565b6040518363ffffffff1660e01b815260040161176b929190614287565b60206040518083038186803b15801561178357600080fd5b505afa158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb9190613db9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561197c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561183857600080fd5b505afa15801561184c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118709190613db9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156118d257600080fd5b505afa1580156118e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190a9190613db9565b6040518363ffffffff1660e01b8152600401611927929190614287565b602060405180830381600087803b15801561194157600080fd5b505af1158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190613db9565b91505b81601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60125481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60175481565b60185481565b60145481565b611b6161292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be590614449565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60189054906101000a900460ff1681565b600f5481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cb361292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3790614449565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060048054611e0f906147e3565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3b906147e3565b8015611e885780601f10611e5d57610100808354040283529160200191611e88565b820191906000526020600020905b815481529060010190602001808311611e6b57829003601f168201915b5050505050905090565b6000601954905090565b60155481565b6000611f65611eaf61292f565b84611f6085604051806060016040528060258152602001614c3d6025913960076000611ed961292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b612937565b6001905092915050565b611f7761292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb90614449565b60405180910390fd5b80601b60166101000a81548160ff02191690831515021790555050565b600061203561202e61292f565b8484612b4d565b506001905092915050565b61204861292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc90614449565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161211e9190614311565b60405180910390a150565b600e5481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60096020528060005260406000206000915054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61224961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614449565b60405180910390fd5b8060178190555050565b6122e861292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90614449565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b61239a61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90614449565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b61249061292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251490614449565b60405180910390fd5b8060188190555050565b61252f61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390614449565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262390614389565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6126f161292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461277e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277590614449565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60179054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008083141561281f5760009050612881565b6000828461282d9190614685565b905082848261283c9190614654565b1461287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390614429565b60405180910390fd5b809150505b92915050565b60006128c983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613311565b905092915050565b60008082846128e091906145fe565b905083811015612925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291c906143c9565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e906144a9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0e906143a9565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612af591906144e9565b60405180910390a3505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612b4457506000801b8214155b92505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb590614469565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2590614369565b60405180910390fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cd25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d08906144c9565b60405180910390fd5b601b60149054906101000a900460ff1615612d3857612d31848484613374565b905061325c565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ddc5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612df45750601b60189054906101000a900460ff165b15612e3f57601754821115612e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3590614409565b60405180910390fd5b5b6000612e4a30611afe565b905060006019548210159050808015612e705750601b60149054906101000a900460ff16155b8015612ec65750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ede5750601b60159054906101000a900460ff165b15612f0857601b60169054906101000a900460ff1615612efe5760195491505b612f0782613547565b5b612f91846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130775750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61308b576130868787876136c4565b61308d565b845b9050601b60179054906101000a900460ff1680156130f55750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561315a576018546131188261310a89611afe565b6128d190919063ffffffff16565b1115613159576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613150906143e9565b60405180910390fd5b5b6131ac81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161324c91906144e9565b60405180910390a3600193505050505b9392505050565b60008383111582906132ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a29190614347565b60405180910390fd5b50600083856132ba91906146df565b9050809150509392505050565b600061330983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613263565b905092915050565b60008083118290613358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334f9190614347565b60405180910390fd5b50600083856133679190614654565b9050809150509392505050565b60006133ff826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061349482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161353491906144e9565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff02191690831515021790555060006135a060026135926015546135846011548761280c90919063ffffffff16565b61288790919063ffffffff16565b61288790919063ffffffff16565b905060006135b782846132c790919063ffffffff16565b90506135c2816138eb565b600047905060006135f36135e2600260115461288790919063ffffffff16565b6015546132c790919063ffffffff16565b905060006136316002613623846136156011548861280c90919063ffffffff16565b61288790919063ffffffff16565b61288790919063ffffffff16565b9050600061364882856132c790919063ffffffff16565b905060008111156136805761367f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613be8565b5b6000821180156136905750600086115b156136a05761369f8683613c33565b5b5050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561374c5761374560646137376013548661280c90919063ffffffff16565b61288790919063ffffffff16565b90506137ca565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137c9576137c660646137b86014548661280c90919063ffffffff16565b61288790919063ffffffff16565b90505b5b60008111156138ce5761382581600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138c591906144e9565b60405180910390a35b6138e181846132c790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561392e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561395c5781602001602082028036833780820191505090505b509050308160008151811061399a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a3c57600080fd5b505afa158015613a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a749190613db9565b81600181518110613aae577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b1530601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612937565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b79959493929190614534565b600060405180830381600087803b158015613b9357600080fd5b505af1158015613ba7573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613bdc929190614504565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c2e573d6000803e3d6000fd5b505050565b613c6030601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612937565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613cac611c82565b426040518863ffffffff1660e01b8152600401613cce969594939291906142b0565b6060604051808303818588803b158015613ce757600080fd5b505af1158015613cfb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d209190613f37565b5050505050565b600081359050613d3681614bcf565b92915050565b600081519050613d4b81614bcf565b92915050565b600081359050613d6081614be6565b92915050565b600081359050613d7581614bfd565b92915050565b600081519050613d8a81614bfd565b92915050565b600060208284031215613da257600080fd5b6000613db084828501613d27565b91505092915050565b600060208284031215613dcb57600080fd5b6000613dd984828501613d3c565b91505092915050565b60008060408385031215613df557600080fd5b6000613e0385828601613d27565b9250506020613e1485828601613d27565b9150509250929050565b600080600060608486031215613e3357600080fd5b6000613e4186828701613d27565b9350506020613e5286828701613d27565b9250506040613e6386828701613d66565b9150509250925092565b60008060408385031215613e8057600080fd5b6000613e8e85828601613d27565b9250506020613e9f85828601613d51565b9150509250929050565b60008060408385031215613ebc57600080fd5b6000613eca85828601613d27565b9250506020613edb85828601613d66565b9150509250929050565b600060208284031215613ef757600080fd5b6000613f0584828501613d51565b91505092915050565b600060208284031215613f2057600080fd5b6000613f2e84828501613d66565b91505092915050565b600080600060608486031215613f4c57600080fd5b6000613f5a86828701613d7b565b9350506020613f6b86828701613d7b565b9250506040613f7c86828701613d7b565b9150509250925092565b6000613f928383613fad565b60208301905092915050565b613fa781614725565b82525050565b613fb681614713565b82525050565b613fc581614713565b82525050565b6000613fd6826145b9565b613fe081856145dc565b9350613feb836145a9565b8060005b8381101561401c5781516140038882613f86565b975061400e836145cf565b925050600181019050613fef565b5085935050505092915050565b61403281614737565b82525050565b6140418161477a565b82525050565b6140508161479e565b82525050565b6000614061826145c4565b61406b81856145ed565b935061407b8185602086016147b0565b614084816148a2565b840191505092915050565b600061409c6023836145ed565b91506140a7826148b3565b604082019050919050565b60006140bf6026836145ed565b91506140ca82614902565b604082019050919050565b60006140e26022836145ed565b91506140ed82614951565b604082019050919050565b6000614105601b836145ed565b9150614110826149a0565b602082019050919050565b60006141286025836145ed565b9150614133826149c9565b604082019050919050565b600061414b6028836145ed565b915061415682614a18565b604082019050919050565b600061416e6021836145ed565b915061417982614a67565b604082019050919050565b60006141916020836145ed565b915061419c82614ab6565b602082019050919050565b60006141b46025836145ed565b91506141bf82614adf565b604082019050919050565b60006141d76020836145ed565b91506141e282614b2e565b602082019050919050565b60006141fa6024836145ed565b915061420582614b57565b604082019050919050565b600061421d601e836145ed565b915061422882614ba6565b602082019050919050565b61423c81614763565b82525050565b61424b8161476d565b82525050565b60006020820190506142666000830184613fbc565b92915050565b60006020820190506142816000830184613f9e565b92915050565b600060408201905061429c6000830185613fbc565b6142a96020830184613fbc565b9392505050565b600060c0820190506142c56000830189613fbc565b6142d26020830188614233565b6142df6040830187614047565b6142ec6060830186614047565b6142f96080830185613fbc565b61430660a0830184614233565b979650505050505050565b60006020820190506143266000830184614029565b92915050565b60006020820190506143416000830184614038565b92915050565b600060208201905081810360008301526143618184614056565b905092915050565b600060208201905081810360008301526143828161408f565b9050919050565b600060208201905081810360008301526143a2816140b2565b9050919050565b600060208201905081810360008301526143c2816140d5565b9050919050565b600060208201905081810360008301526143e2816140f8565b9050919050565b600060208201905081810360008301526144028161411b565b9050919050565b600060208201905081810360008301526144228161413e565b9050919050565b6000602082019050818103600083015261444281614161565b9050919050565b6000602082019050818103600083015261446281614184565b9050919050565b60006020820190508181036000830152614482816141a7565b9050919050565b600060208201905081810360008301526144a2816141ca565b9050919050565b600060208201905081810360008301526144c2816141ed565b9050919050565b600060208201905081810360008301526144e281614210565b9050919050565b60006020820190506144fe6000830184614233565b92915050565b60006040820190506145196000830185614233565b818103602083015261452b8184613fcb565b90509392505050565b600060a0820190506145496000830188614233565b6145566020830187614047565b81810360408301526145688186613fcb565b90506145776060830185613fbc565b6145846080830184614233565b9695505050505050565b60006020820190506145a36000830184614242565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061460982614763565b915061461483614763565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561464957614648614815565b5b828201905092915050565b600061465f82614763565b915061466a83614763565b92508261467a57614679614844565b5b828204905092915050565b600061469082614763565b915061469b83614763565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146d4576146d3614815565b5b828202905092915050565b60006146ea82614763565b91506146f583614763565b92508282101561470857614707614815565b5b828203905092915050565b600061471e82614743565b9050919050565b600061473082614743565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147858261478c565b9050919050565b600061479782614743565b9050919050565b60006147a982614763565b9050919050565b60005b838110156147ce5780820151818401526020810190506147b3565b838111156147dd576000848401525b50505050565b600060028204905060018216806147fb57607f821691505b6020821081141561480f5761480e614873565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f456e656d79206d75737420626520436f6e747261637420416464726573732121600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d7920616464726573732052657374726963746564212e0000600082015250565b614bd881614713565b8114614be357600080fd5b50565b614bef81614737565b8114614bfa57600080fd5b50565b614c0681614763565b8114614c1157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205367208f5a08424b9276c1553547367e5cb0bf757516a31dbf27c1b658b6679864736f6c63430008040033

Deployed Bytecode Sourcemap

12167:14161:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15759:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12573:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17053:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19353:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13773:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16036:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17986:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20767:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18363:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12485:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19189:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15945:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16422:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18594:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12967:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13888:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18726:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12796:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4236:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13250:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19683:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13292:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16144:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13533:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13608;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13375:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17567:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14031:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13160:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12912:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3520:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3745:227;;;;;;;;;;;;;:::i;:::-;;15850:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16925:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13421:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16648:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19052:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20592:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18873:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13112:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13821:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13204:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12853:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12373:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13935:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13070:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16271:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18244:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18129:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17843:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13336:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18484:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3980:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17704:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13989:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13019:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15759:83;15796:13;15829:5;15822:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15759:83;:::o;12573:81::-;;;:::o;17053:161::-;17128:4;17145:39;17154:12;:10;:12::i;:::-;17168:7;17177:6;17145:8;:39::i;:::-;17202:4;17195:11;;17053:161;;;;:::o;19353:184::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19441:16:::1;19452:4;19441:10;:16::i;:::-;19433:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19522:7;19504:9;:15;19514:4;19504:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;19353:184:::0;;:::o;13773:41::-;;;;;;;;;;;;;:::o;16036:100::-;16089:7;16116:12;;16109:19;;16036:100;:::o;17986:135::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18107:6:::1;18077:19;:27;18097:6;18077:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17986:135:::0;;:::o;20767:313::-;20865:4;20882:36;20892:6;20900:9;20911:6;20882:9;:36::i;:::-;;20929:121;20938:6;20946:12;:10;:12::i;:::-;20960:89;20998:6;20960:89;;;;;;;;;;;;;;;;;:11;:19;20972:6;20960:19;;;;;;;;;;;;;;;:33;20980:12;:10;:12::i;:::-;20960:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20929:8;:121::i;:::-;21068:4;21061:11;;20767:313;;;;;:::o;18363:113::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18460:8:::1;18441:16;;:27;;;;;;;;;;;;;;;;;;18363:113:::0;:::o;12485:81::-;;;:::o;19189:156::-;19242:7;19269:68;19314:22;19324:11;19314:9;:22::i;:::-;19269:40;19286:22;19296:11;19286:9;:22::i;:::-;19269:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19262:75;;19189:156;:::o;15945:83::-;15986:5;16011:9;;;;;;;;;;;16004:16;;15945:83;:::o;16422:218::-;16510:4;16527:83;16536:12;:10;:12::i;:::-;16550:7;16559:50;16598:10;16559:11;:25;16571:12;:10;:12::i;:::-;16559:25;;;;;;;;;;;;;;;:34;16585:7;16559:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16527:8;:83::i;:::-;16628:4;16621:11;;16422:218;;;;:::o;18594:124::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18702:8:::1;18676:23;:34;;;;18594:124:::0;:::o;12967:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13888:40::-;;;;;;;;;;;;;:::o;18726:139::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18846:10:::1;18813:22;;:44;;;;;;;;;;;;;;;;;;18726:139:::0;:::o;12796:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;4236:90::-;4276:7;4303:15;4296:22;;4236:90;:::o;13250:35::-;;;;:::o;19683:807::-;19763:22;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19800:35:::1;19857:16;19800:74;;19923:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19905:53;;;19967:4;19974:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19905:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19888:110;;20040:1;20014:28;;:14;:28;;;20011:225;;;20128:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20110:74;;;20193:4;20200:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20110:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20093:131;;20011:225;20262:14;20248:11;;:28;;;;;;;;;;;;;;;;;;20328:16;20310:15;;:34;;;;;;;;;;;;;;;;;;20426:4;20382:19;:41;20410:11;;;;;;;;;;;20382:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;20478:4;20441:12;:34;20462:11;;;;;;;;;;;20441:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;3724:1;19683:807:::0;;;:::o;13292:35::-;;;;:::o;16144:119::-;16210:7;16237:9;:18;16247:7;16237:18;;;;;;;;;;;;;;;;16230:25;;16144:119;;;:::o;13533:60::-;;;;:::o;13608:::-;;;;:::o;13375:33::-;;;;:::o;17567:129::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17680:8:::1;17656:12;:21;17669:7;17656:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17567:129:::0;;:::o;14031:41::-;;;;;;;;;;;;;:::o;13160:37::-;;;;:::o;12912:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3520:79::-;3558:7;3585:6;;;;;;;;;;;3578:13;;3520:79;:::o;3745:227::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3849:42:::1;3812:81;;3833:6;::::0;::::1;;;;;;;;3812:81;;;;;;;;;;;;3921:42;3904:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3745:227::o:0;15850:87::-;15889:13;15922:7;15915:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15850:87;:::o;16925:120::-;16987:7;17014:23;;17007:30;;16925:120;:::o;13421:39::-;;;;:::o;16648:269::-;16741:4;16758:129;16767:12;:10;:12::i;:::-;16781:7;16790:96;16829:15;16790:96;;;;;;;;;;;;;;;;;:11;:25;16802:12;:10;:12::i;:::-;16790:25;;;;;;;;;;;;;;;:34;16816:7;16790:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16758:8;:129::i;:::-;16905:4;16898:11;;16648:269;;;;:::o;19052:125::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19161:8:::1;19133:25;;:36;;;;;;;;;;;;;;;;;;19052:125:::0;:::o;20592:167::-;20670:4;20687:42;20697:12;:10;:12::i;:::-;20711:9;20722:6;20687:9;:42::i;:::-;;20747:4;20740:11;;20592:167;;;;:::o;18873:171::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18974:8:::1;18950:21;;:32;;;;;;;;;;;;;;;;;;18998:38;19027:8;18998:38;;;;;;:::i;:::-;;;;;;;;18873:171:::0;:::o;13112:35::-;;;;:::o;13821:26::-;;;;;;;;;;;;;:::o;13204:37::-;;;;:::o;12853:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;12373:99::-;;;;;;;;;;;;;:::o;13935:45::-;;;;;;;;;;;;;:::o;13070:35::-;;;;:::o;16271:143::-;16352:7;16379:11;:18;16391:5;16379:18;;;;;;;;;;;;;;;:27;16398:7;16379:27;;;;;;;;;;;;;;;;16372:34;;16271:143;;;;:::o;18244:111::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18336:11:::1;18321:12;:26;;;;18244:111:::0;:::o;18129:107::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18221:7:::1;18196:22;;:32;;;;;;;;;;;;;;;;;;18129:107:::0;:::o;17843:135::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17962:8:::1;17933:17;:26;17951:7;17933:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17843:135:::0;;:::o;13336:32::-;;;;:::o;18484:102::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18570:8:::1;18556:10;:22;;;;18484:102:::0;:::o;3980:244::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4089:1:::1;4069:22;;:8;:22;;;;4061:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4179:8;4150:38;;4171:6;::::0;::::1;;;;;;;;4150:38;;;;;;;;;;;;4208:8;4199:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3980:244:::0;:::o;17704:127::-;3664:12;:10;:12::i;:::-;3654:22;;:6;;;;;;;;;;:22;;;3646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17817:6:::1;17791:15;:23;17807:6;17791:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17704:127:::0;;:::o;13989:35::-;;;;;;;;;;;;;:::o;13019:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;2144:250::-;2202:7;2231:1;2226;:6;2222:47;;;2256:1;2249:8;;;;2222:47;2281:9;2297:1;2293;:5;;;;:::i;:::-;2281:17;;2326:1;2321;2317;:5;;;;:::i;:::-;:10;2309:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2385:1;2378:8;;;2144:250;;;;;:::o;2402:132::-;2460:7;2487:39;2491:1;2494;2487:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2480:46;;2402:132;;;;:::o;1611:181::-;1669:7;1689:9;1705:1;1701;:5;;;;:::i;:::-;1689:17;;1730:1;1725;:6;;1717:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1783:1;1776:8;;;1611:181;;;;:::o;669:115::-;722:15;765:10;750:26;;669:115;:::o;17222:337::-;17332:1;17315:19;;:5;:19;;;;17307:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17413:1;17394:21;;:7;:21;;;;17386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17497:6;17467:11;:18;17479:5;17467:18;;;;;;;;;;;;;;;:27;17486:7;17467:27;;;;;;;;;;;;;;;:36;;;;17535:7;17519:32;;17528:5;17519:32;;;17544:6;17519:32;;;;;;:::i;:::-;;;;;;;;17222:337;;;:::o;25994:325::-;26054:4;26071:16;26098:19;26120:66;26098:88;;;;26240:7;26228:20;26216:32;;26280:11;26268:8;:23;;:42;;;;;26307:3;26295:15;;:8;:15;;26268:42;26260:51;;;;25994:325;;;:::o;21092:1870::-;21179:4;21224:1;21206:20;;:6;:20;;;;21198:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21308:1;21287:23;;:9;:23;;;;21279:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21370:9;:17;21380:6;21370:17;;;;;;;;;;;;;;;;;;;;;;;;;21369:18;:43;;;;;21392:9;:20;21402:9;21392:20;;;;;;;;;;;;;;;;;;;;;;;;;21391:21;21369:43;21361:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;21463:16;;;;;;;;;;;21460:1495;;;21513:41;21528:6;21536:9;21547:6;21513:14;:41::i;:::-;21506:48;;;;21460:1495;21610:15;:23;21626:6;21610:23;;;;;;;;;;;;;;;;;;;;;;;;;21609:24;:55;;;;;21638:15;:26;21654:9;21638:26;;;;;;;;;;;;;;;;;;;;;;;;;21637:27;21609:55;:81;;;;;21668:22;;;;;;;;;;;21609:81;21606:196;;;21729:12;;21719:6;:22;;21711:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21606:196;21830:28;21861:24;21879:4;21861:9;:24::i;:::-;21830:55;;21900:28;21955:23;;21931:20;:47;;21900:78;;22011:23;:44;;;;;22039:16;;;;;;;;;;;22038:17;22011:44;:69;;;;;22060:12;:20;22073:6;22060:20;;;;;;;;;;;;;;;;;;;;;;;;;22059:21;22011:69;:94;;;;;22084:21;;;;;;;;;;;22011:94;22007:305;;;22143:25;;;;;;;;;;;22140:97;;;22214:23;;22191:46;;22140:97;22256:36;22271:20;22256:14;:36::i;:::-;22007:305;22348:53;22370:6;22348:53;;;;;;;;;;;;;;;;;:9;:17;22358:6;22348:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22328:9;:17;22338:6;22328:17;;;;;;;;;;;;;;;:73;;;;22418:19;22441:17;:25;22459:6;22441:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22470:17;:28;22488:9;22470:28;;;;;;;;;;;;;;;;;;;;;;;;;22441:57;22440:148;;22554:34;22562:6;22570:9;22581:6;22554:7;:34::i;:::-;22440:148;;;22545:6;22440:148;22418:170;;22608:16;;;;;;;;;;;:51;;;;;22629:19;:30;22649:9;22629:30;;;;;;;;;;;;;;;;;;;;;;;;;22628:31;22608:51;22605:173;;;22727:10;;22686:37;22711:11;22686:20;22696:9;22686;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;22678:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22605:173;22818:37;22843:11;22818:9;:20;22828:9;22818:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;22795:9;:20;22805:9;22795:20;;;;;;;;;;;;;;;:60;;;;22894:9;22877:40;;22886:6;22877:40;;;22905:11;22877:40;;;;;;:::i;:::-;;;;;;;;22939:4;22932:11;;;;;21092:1870;;;;;;:::o;1944:192::-;2030:7;2063:1;2058;:6;;2066:12;2050:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2090:9;2106:1;2102;:5;;;;:::i;:::-;2090:17;;2127:1;2120:8;;;1944:192;;;;;:::o;1800:136::-;1858:7;1885:43;1889:1;1892;1885:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1878:50;;1800:136;;;;:::o;2542:278::-;2628:7;2660:1;2656;:5;2663:12;2648:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2687:9;2703:1;2699;:5;;;;:::i;:::-;2687:17;;2811:1;2804:8;;;2542:278;;;;;:::o;22970:330::-;23063:4;23100:53;23122:6;23100:53;;;;;;;;;;;;;;;;;:9;:17;23110:6;23100:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23080:9;:17;23090:6;23080:17;;;;;;;;;;;;;;;:73;;;;23187:32;23212:6;23187:9;:20;23197:9;23187:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23164:9;:20;23174:9;23164:20;;;;;;;;;;;;;;;:55;;;;23252:9;23235:35;;23244:6;23235:35;;;23263:6;23235:35;;;;;;:::i;:::-;;;;;;;;23288:4;23281:11;;22970:330;;;;;:::o;23308:849::-;14516:4;14497:16;;:23;;;;;;;;;;;;;;;;;;23390:19:::1;23412:65;23475:1;23412:58;23445:24;;23412:28;23424:15;;23412:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;23390:87;;23490:21;23514:24;23526:11;23514:7;:11;;:24;;;;:::i;:::-;23490:48;;23551:31;23568:13;23551:16;:31::i;:::-;23595:22;23620:21;23595:46;;23654:19;23676:52;23705:22;23725:1;23705:15;;:19;;:22;;;;:::i;:::-;23676:24;;:28;;:52;;;;:::i;:::-;23654:74;;23749:26;23778:59;23835:1;23778:52;23818:11;23778:35;23797:15;;23778:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;23749:88;;23848:26;23877:38;23896:18;23877:14;:18;;:38;;;;:::i;:::-;23848:67;;23952:1;23931:18;:22;23928:104;;;23968:64;23989:22;;;;;;;;;;;24013:18;23968:20;:64::i;:::-;23928:104;24069:1;24048:18;:22;:41;;;;;24088:1;24074:11;:15;24048:41;24045:104;;;24104:45;24117:11;24130:18;24104:12;:45::i;:::-;24045:104;14531:1;;;;;;14562:5:::0;14543:16;;:24;;;;;;;;;;;;;;;;;;23308:849;:::o;25364:622::-;25450:7;25480:17;25500:1;25480:21;;25525:12;:20;25538:6;25525:20;;;;;;;;;;;;;;;;;;;;;;;;;25522:223;;;25574:38;25608:3;25574:29;25585:17;;25574:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;25562:50;;25522:223;;;25642:12;:23;25655:9;25642:23;;;;;;;;;;;;;;;;;;;;;;;;;25639:106;;;25694:39;25729:3;25694:30;25705:18;;25694:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;25682:51;;25639:106;25522:223;25780:1;25768:9;:13;25765:173;;;25825:39;25854:9;25825;:24;25843:4;25825:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;25798:9;:24;25816:4;25798:24;;;;;;;;;;;;;;;:66;;;;25909:4;25884:42;;25893:6;25884:42;;;25916:9;25884:42;;;;;;:::i;:::-;;;;;;;;25765:173;25957:21;25968:9;25957:6;:10;;:21;;;;:::i;:::-;25950:28;;;25364:622;;;;;:::o;24169:666::-;24295:21;24333:1;24319:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24295:40;;24364:4;24346;24351:1;24346:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;24390:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24380:4;24385:1;24380:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;24425:62;24442:4;24457:15;;;;;;;;;;;24475:11;24425:8;:62::i;:::-;24526:15;;;;;;;;;;;:66;;;24607:11;24633:1;24677:4;24704;24740:15;24526:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24792:35;24809:11;24822:4;24792:35;;;;;;;:::i;:::-;;;;;;;;24169:666;;:::o;19545:126::-;19637:9;:18;;:26;19656:6;19637:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19545:126;;:::o;24843:513::-;24991:62;25008:4;25023:15;;;;;;;;;;;25041:11;24991:8;:62::i;:::-;25096:15;;;;;;;;;;;:31;;;25135:9;25168:4;25188:11;25214:1;25257;25300:7;:5;:7::i;:::-;25322:15;25096:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24843:513;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;2328:6;2336;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;2738:6;2746;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;3404:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:596::-;3701:6;3709;3717;3766:2;3754:9;3745:7;3741:23;3737:32;3734:2;;;3782:1;3779;3772:12;3734:2;3825:1;3850:64;3906:7;3897:6;3886:9;3882:22;3850:64;:::i;:::-;3840:74;;3796:128;3963:2;3989:64;4045:7;4036:6;4025:9;4021:22;3989:64;:::i;:::-;3979:74;;3934:129;4102:2;4128:64;4184:7;4175:6;4164:9;4160:22;4128:64;:::i;:::-;4118:74;;4073:129;3724:485;;;;;:::o;4215:179::-;4284:10;4305:46;4347:3;4339:6;4305:46;:::i;:::-;4383:4;4378:3;4374:14;4360:28;;4295:99;;;;:::o;4400:142::-;4503:32;4529:5;4503:32;:::i;:::-;4498:3;4491:45;4481:61;;:::o;4548:108::-;4625:24;4643:5;4625:24;:::i;:::-;4620:3;4613:37;4603:53;;:::o;4662:118::-;4749:24;4767:5;4749:24;:::i;:::-;4744:3;4737:37;4727:53;;:::o;4816:732::-;4935:3;4964:54;5012:5;4964:54;:::i;:::-;5034:86;5113:6;5108:3;5034:86;:::i;:::-;5027:93;;5144:56;5194:5;5144:56;:::i;:::-;5223:7;5254:1;5239:284;5264:6;5261:1;5258:13;5239:284;;;5340:6;5334:13;5367:63;5426:3;5411:13;5367:63;:::i;:::-;5360:70;;5453:60;5506:6;5453:60;:::i;:::-;5443:70;;5299:224;5286:1;5283;5279:9;5274:14;;5239:284;;;5243:14;5539:3;5532:10;;4940:608;;;;;;;:::o;5554:109::-;5635:21;5650:5;5635:21;:::i;:::-;5630:3;5623:34;5613:50;;:::o;5669:185::-;5783:64;5841:5;5783:64;:::i;:::-;5778:3;5771:77;5761:93;;:::o;5860:147::-;5955:45;5994:5;5955:45;:::i;:::-;5950:3;5943:58;5933:74;;:::o;6013:364::-;6101:3;6129:39;6162:5;6129:39;:::i;:::-;6184:71;6248:6;6243:3;6184:71;:::i;:::-;6177:78;;6264:52;6309:6;6304:3;6297:4;6290:5;6286:16;6264:52;:::i;:::-;6341:29;6363:6;6341:29;:::i;:::-;6336:3;6332:39;6325:46;;6105:272;;;;;:::o;6383:366::-;6525:3;6546:67;6610:2;6605:3;6546:67;:::i;:::-;6539:74;;6622:93;6711:3;6622:93;:::i;:::-;6740:2;6735:3;6731:12;6724:19;;6529:220;;;:::o;6755:366::-;6897:3;6918:67;6982:2;6977:3;6918:67;:::i;:::-;6911:74;;6994:93;7083:3;6994:93;:::i;:::-;7112:2;7107:3;7103:12;7096:19;;6901:220;;;:::o;7127:366::-;7269:3;7290:67;7354:2;7349:3;7290:67;:::i;:::-;7283:74;;7366:93;7455:3;7366:93;:::i;:::-;7484:2;7479:3;7475:12;7468:19;;7273:220;;;:::o;7499:366::-;7641:3;7662:67;7726:2;7721:3;7662:67;:::i;:::-;7655:74;;7738:93;7827:3;7738:93;:::i;:::-;7856:2;7851:3;7847:12;7840:19;;7645:220;;;:::o;7871:366::-;8013:3;8034:67;8098:2;8093:3;8034:67;:::i;:::-;8027:74;;8110:93;8199:3;8110:93;:::i;:::-;8228:2;8223:3;8219:12;8212:19;;8017:220;;;:::o;8243:366::-;8385:3;8406:67;8470:2;8465:3;8406:67;:::i;:::-;8399:74;;8482:93;8571:3;8482:93;:::i;:::-;8600:2;8595:3;8591:12;8584:19;;8389:220;;;:::o;8615:366::-;8757:3;8778:67;8842:2;8837:3;8778:67;:::i;:::-;8771:74;;8854:93;8943:3;8854:93;:::i;:::-;8972:2;8967:3;8963:12;8956:19;;8761:220;;;:::o;8987:366::-;9129:3;9150:67;9214:2;9209:3;9150:67;:::i;:::-;9143:74;;9226:93;9315:3;9226:93;:::i;:::-;9344:2;9339:3;9335:12;9328:19;;9133:220;;;:::o;9359:366::-;9501:3;9522:67;9586:2;9581:3;9522:67;:::i;:::-;9515:74;;9598:93;9687:3;9598:93;:::i;:::-;9716:2;9711:3;9707:12;9700:19;;9505:220;;;:::o;9731:366::-;9873:3;9894:67;9958:2;9953:3;9894:67;:::i;:::-;9887:74;;9970:93;10059:3;9970:93;:::i;:::-;10088:2;10083:3;10079:12;10072:19;;9877:220;;;:::o;10103:366::-;10245:3;10266:67;10330:2;10325:3;10266:67;:::i;:::-;10259:74;;10342:93;10431:3;10342:93;:::i;:::-;10460:2;10455:3;10451:12;10444:19;;10249:220;;;:::o;10475:366::-;10617:3;10638:67;10702:2;10697:3;10638:67;:::i;:::-;10631:74;;10714:93;10803:3;10714:93;:::i;:::-;10832:2;10827:3;10823:12;10816:19;;10621:220;;;:::o;10847:118::-;10934:24;10952:5;10934:24;:::i;:::-;10929:3;10922:37;10912:53;;:::o;10971:112::-;11054:22;11070:5;11054:22;:::i;:::-;11049:3;11042:35;11032:51;;:::o;11089:222::-;11182:4;11220:2;11209:9;11205:18;11197:26;;11233:71;11301:1;11290:9;11286:17;11277:6;11233:71;:::i;:::-;11187:124;;;;:::o;11317:254::-;11426:4;11464:2;11453:9;11449:18;11441:26;;11477:87;11561:1;11550:9;11546:17;11537:6;11477:87;:::i;:::-;11431:140;;;;:::o;11577:332::-;11698:4;11736:2;11725:9;11721:18;11713:26;;11749:71;11817:1;11806:9;11802:17;11793:6;11749:71;:::i;:::-;11830:72;11898:2;11887:9;11883:18;11874:6;11830:72;:::i;:::-;11703:206;;;;;:::o;11915:807::-;12164:4;12202:3;12191:9;12187:19;12179:27;;12216:71;12284:1;12273:9;12269:17;12260:6;12216:71;:::i;:::-;12297:72;12365:2;12354:9;12350:18;12341:6;12297:72;:::i;:::-;12379:80;12455:2;12444:9;12440:18;12431:6;12379:80;:::i;:::-;12469;12545:2;12534:9;12530:18;12521:6;12469:80;:::i;:::-;12559:73;12627:3;12616:9;12612:19;12603:6;12559:73;:::i;:::-;12642;12710:3;12699:9;12695:19;12686:6;12642:73;:::i;:::-;12169:553;;;;;;;;;:::o;12728:210::-;12815:4;12853:2;12842:9;12838:18;12830:26;;12866:65;12928:1;12917:9;12913:17;12904:6;12866:65;:::i;:::-;12820:118;;;;:::o;12944:276::-;13064:4;13102:2;13091:9;13087:18;13079:26;;13115:98;13210:1;13199:9;13195:17;13186:6;13115:98;:::i;:::-;13069:151;;;;:::o;13226:313::-;13339:4;13377:2;13366:9;13362:18;13354:26;;13426:9;13420:4;13416:20;13412:1;13401:9;13397:17;13390:47;13454:78;13527:4;13518:6;13454:78;:::i;:::-;13446:86;;13344:195;;;;:::o;13545:419::-;13711:4;13749:2;13738:9;13734:18;13726:26;;13798:9;13792:4;13788:20;13784:1;13773:9;13769:17;13762:47;13826:131;13952:4;13826:131;:::i;:::-;13818:139;;13716:248;;;:::o;13970:419::-;14136:4;14174:2;14163:9;14159:18;14151:26;;14223:9;14217:4;14213:20;14209:1;14198:9;14194:17;14187:47;14251:131;14377:4;14251:131;:::i;:::-;14243:139;;14141:248;;;:::o;14395:419::-;14561:4;14599:2;14588:9;14584:18;14576:26;;14648:9;14642:4;14638:20;14634:1;14623:9;14619:17;14612:47;14676:131;14802:4;14676:131;:::i;:::-;14668:139;;14566:248;;;:::o;14820:419::-;14986:4;15024:2;15013:9;15009:18;15001:26;;15073:9;15067:4;15063:20;15059:1;15048:9;15044:17;15037:47;15101:131;15227:4;15101:131;:::i;:::-;15093:139;;14991:248;;;:::o;15245:419::-;15411:4;15449:2;15438:9;15434:18;15426:26;;15498:9;15492:4;15488:20;15484:1;15473:9;15469:17;15462:47;15526:131;15652:4;15526:131;:::i;:::-;15518:139;;15416:248;;;:::o;15670:419::-;15836:4;15874:2;15863:9;15859:18;15851:26;;15923:9;15917:4;15913:20;15909:1;15898:9;15894:17;15887:47;15951:131;16077:4;15951:131;:::i;:::-;15943:139;;15841:248;;;:::o;16095:419::-;16261:4;16299:2;16288:9;16284:18;16276:26;;16348:9;16342:4;16338:20;16334:1;16323:9;16319:17;16312:47;16376:131;16502:4;16376:131;:::i;:::-;16368:139;;16266:248;;;:::o;16520:419::-;16686:4;16724:2;16713:9;16709:18;16701:26;;16773:9;16767:4;16763:20;16759:1;16748:9;16744:17;16737:47;16801:131;16927:4;16801:131;:::i;:::-;16793:139;;16691:248;;;:::o;16945:419::-;17111:4;17149:2;17138:9;17134:18;17126:26;;17198:9;17192:4;17188:20;17184:1;17173:9;17169:17;17162:47;17226:131;17352:4;17226:131;:::i;:::-;17218:139;;17116:248;;;:::o;17370:419::-;17536:4;17574:2;17563:9;17559:18;17551:26;;17623:9;17617:4;17613:20;17609:1;17598:9;17594:17;17587:47;17651:131;17777:4;17651:131;:::i;:::-;17643:139;;17541:248;;;:::o;17795:419::-;17961:4;17999:2;17988:9;17984:18;17976:26;;18048:9;18042:4;18038:20;18034:1;18023:9;18019:17;18012:47;18076:131;18202:4;18076:131;:::i;:::-;18068:139;;17966:248;;;:::o;18220:419::-;18386:4;18424:2;18413:9;18409:18;18401:26;;18473:9;18467:4;18463:20;18459:1;18448:9;18444:17;18437:47;18501:131;18627:4;18501:131;:::i;:::-;18493:139;;18391:248;;;:::o;18645:222::-;18738:4;18776:2;18765:9;18761:18;18753:26;;18789:71;18857:1;18846:9;18842:17;18833:6;18789:71;:::i;:::-;18743:124;;;;:::o;18873:483::-;19044:4;19082:2;19071:9;19067:18;19059:26;;19095:71;19163:1;19152:9;19148:17;19139:6;19095:71;:::i;:::-;19213:9;19207:4;19203:20;19198:2;19187:9;19183:18;19176:48;19241:108;19344:4;19335:6;19241:108;:::i;:::-;19233:116;;19049:307;;;;;:::o;19362:831::-;19625:4;19663:3;19652:9;19648:19;19640:27;;19677:71;19745:1;19734:9;19730:17;19721:6;19677:71;:::i;:::-;19758:80;19834:2;19823:9;19819:18;19810:6;19758:80;:::i;:::-;19885:9;19879:4;19875:20;19870:2;19859:9;19855:18;19848:48;19913:108;20016:4;20007:6;19913:108;:::i;:::-;19905:116;;20031:72;20099:2;20088:9;20084:18;20075:6;20031:72;:::i;:::-;20113:73;20181:3;20170:9;20166:19;20157:6;20113:73;:::i;:::-;19630:563;;;;;;;;:::o;20199:214::-;20288:4;20326:2;20315:9;20311:18;20303:26;;20339:67;20403:1;20392:9;20388:17;20379:6;20339:67;:::i;:::-;20293:120;;;;:::o;20419:132::-;20486:4;20509:3;20501:11;;20539:4;20534:3;20530:14;20522:22;;20491:60;;;:::o;20557:114::-;20624:6;20658:5;20652:12;20642:22;;20631:40;;;:::o;20677:99::-;20729:6;20763:5;20757:12;20747:22;;20736:40;;;:::o;20782:113::-;20852:4;20884;20879:3;20875:14;20867:22;;20857:38;;;:::o;20901:184::-;21000:11;21034:6;21029:3;21022:19;21074:4;21069:3;21065:14;21050:29;;21012:73;;;;:::o;21091:169::-;21175:11;21209:6;21204:3;21197:19;21249:4;21244:3;21240:14;21225:29;;21187:73;;;;:::o;21266:305::-;21306:3;21325:20;21343:1;21325:20;:::i;:::-;21320:25;;21359:20;21377:1;21359:20;:::i;:::-;21354:25;;21513:1;21445:66;21441:74;21438:1;21435:81;21432:2;;;21519:18;;:::i;:::-;21432:2;21563:1;21560;21556:9;21549:16;;21310:261;;;;:::o;21577:185::-;21617:1;21634:20;21652:1;21634:20;:::i;:::-;21629:25;;21668:20;21686:1;21668:20;:::i;:::-;21663:25;;21707:1;21697:2;;21712:18;;:::i;:::-;21697:2;21754:1;21751;21747:9;21742:14;;21619:143;;;;:::o;21768:348::-;21808:7;21831:20;21849:1;21831:20;:::i;:::-;21826:25;;21865:20;21883:1;21865:20;:::i;:::-;21860:25;;22053:1;21985:66;21981:74;21978:1;21975:81;21970:1;21963:9;21956:17;21952:105;21949:2;;;22060:18;;:::i;:::-;21949:2;22108:1;22105;22101:9;22090:20;;21816:300;;;;:::o;22122:191::-;22162:4;22182:20;22200:1;22182:20;:::i;:::-;22177:25;;22216:20;22234:1;22216:20;:::i;:::-;22211:25;;22255:1;22252;22249:8;22246:2;;;22260:18;;:::i;:::-;22246:2;22305:1;22302;22298:9;22290:17;;22167:146;;;;:::o;22319:96::-;22356:7;22385:24;22403:5;22385:24;:::i;:::-;22374:35;;22364:51;;;:::o;22421:104::-;22466:7;22495:24;22513:5;22495:24;:::i;:::-;22484:35;;22474:51;;;:::o;22531:90::-;22565:7;22608:5;22601:13;22594:21;22583:32;;22573:48;;;:::o;22627:126::-;22664:7;22704:42;22697:5;22693:54;22682:65;;22672:81;;;:::o;22759:77::-;22796:7;22825:5;22814:16;;22804:32;;;:::o;22842:86::-;22877:7;22917:4;22910:5;22906:16;22895:27;;22885:43;;;:::o;22934:180::-;23011:9;23044:64;23102:5;23044:64;:::i;:::-;23031:77;;23021:93;;;:::o;23120:140::-;23197:9;23230:24;23248:5;23230:24;:::i;:::-;23217:37;;23207:53;;;:::o;23266:121::-;23324:9;23357:24;23375:5;23357:24;:::i;:::-;23344:37;;23334:53;;;:::o;23393:307::-;23461:1;23471:113;23485:6;23482:1;23479:13;23471:113;;;23570:1;23565:3;23561:11;23555:18;23551:1;23546:3;23542:11;23535:39;23507:2;23504:1;23500:10;23495:15;;23471:113;;;23602:6;23599:1;23596:13;23593:2;;;23682:1;23673:6;23668:3;23664:16;23657:27;23593:2;23442:258;;;;:::o;23706:320::-;23750:6;23787:1;23781:4;23777:12;23767:22;;23834:1;23828:4;23824:12;23855:18;23845:2;;23911:4;23903:6;23899:17;23889:27;;23845:2;23973;23965:6;23962:14;23942:18;23939:38;23936:2;;;23992:18;;:::i;:::-;23936:2;23757:269;;;;:::o;24032:180::-;24080:77;24077:1;24070:88;24177:4;24174:1;24167:15;24201:4;24198:1;24191:15;24218:180;24266:77;24263:1;24256:88;24363:4;24360:1;24353:15;24387:4;24384:1;24377:15;24404:180;24452:77;24449:1;24442:88;24549:4;24546:1;24539:15;24573:4;24570:1;24563:15;24590:102;24631:6;24682:2;24678:7;24673:2;24666:5;24662:14;24658:28;24648:38;;24638:54;;;:::o;24698:222::-;24838:34;24834:1;24826:6;24822:14;24815:58;24907:5;24902:2;24894:6;24890:15;24883:30;24804:116;:::o;24926:225::-;25066:34;25062:1;25054:6;25050:14;25043:58;25135:8;25130:2;25122:6;25118:15;25111:33;25032:119;:::o;25157:221::-;25297:34;25293:1;25285:6;25281:14;25274:58;25366:4;25361:2;25353:6;25349:15;25342:29;25263:115;:::o;25384:177::-;25524:29;25520:1;25512:6;25508:14;25501:53;25490:71;:::o;25567:224::-;25707:34;25703:1;25695:6;25691:14;25684:58;25776:7;25771:2;25763:6;25759:15;25752:32;25673:118;:::o;25797:227::-;25937:34;25933:1;25925:6;25921:14;25914:58;26006:10;26001:2;25993:6;25989:15;25982:35;25903:121;:::o;26030:220::-;26170:34;26166:1;26158:6;26154:14;26147:58;26239:3;26234:2;26226:6;26222:15;26215:28;26136:114;:::o;26256:182::-;26396:34;26392:1;26384:6;26380:14;26373:58;26362:76;:::o;26444:224::-;26584:34;26580:1;26572:6;26568:14;26561:58;26653:7;26648:2;26640:6;26636:15;26629:32;26550:118;:::o;26674:182::-;26814:34;26810:1;26802:6;26798:14;26791:58;26780:76;:::o;26862:223::-;27002:34;26998:1;26990:6;26986:14;26979:58;27071:6;27066:2;27058:6;27054:15;27047:31;26968:117;:::o;27091:180::-;27231:32;27227:1;27219:6;27215:14;27208:56;27197:74;:::o;27277:122::-;27350:24;27368:5;27350:24;:::i;:::-;27343:5;27340:35;27330:2;;27389:1;27386;27379:12;27330:2;27320:79;:::o;27405:116::-;27475:21;27490:5;27475:21;:::i;:::-;27468:5;27465:32;27455:2;;27511:1;27508;27501:12;27455:2;27445:76;:::o;27527:122::-;27600:24;27618:5;27600:24;:::i;:::-;27593:5;27590:35;27580:2;;27639:1;27636;27629:12;27580:2;27570:79;:::o

Swarm Source

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