ETH Price: $3,717.47 (+4.36%)

Token

ERC-20: MYSTEREUM (MYSTEREUM)
 

Overview

Max Total Supply

1,000,000,000,000,000 MYSTEREUM

Holders

34

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,416,705,500,000.950009113466860523 MYSTEREUM

Value
$0.00
0x49a7ebd400fb6ab8f59a56375c03d7e9cff059ff
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:
MYSTEREUM

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-12
*/

/**


 ███▄ ▄███▓▓██   ██▓  ██████ ▄▄▄█████▓▓█████  ██▀███  ▓█████  █    ██  ███▄ ▄███▓
▓██▒▀█▀ ██▒ ▒██  ██▒▒██    ▒ ▓  ██▒ ▓▒▓█   ▀ ▓██ ▒ ██▒▓█   ▀  ██  ▓██▒▓██▒▀█▀ ██▒
▓██    ▓██░  ▒██ ██░░ ▓██▄   ▒ ▓██░ ▒░▒███   ▓██ ░▄█ ▒▒███   ▓██  ▒██░▓██    ▓██░
▒██    ▒██   ░ ▐██▓░  ▒   ██▒░ ▓██▓ ░ ▒▓█  ▄ ▒██▀▀█▄  ▒▓█  ▄ ▓▓█  ░██░▒██    ▒██ 
▒██▒   ░██▒  ░ ██▒▓░▒██████▒▒  ▒██▒ ░ ░▒████▒░██▓ ▒██▒░▒████▒▒▒█████▓ ▒██▒   ░██▒
░ ▒░   ░  ░   ██▒▒▒ ▒ ▒▓▒ ▒ ░  ▒ ░░   ░░ ▒░ ░░ ▒▓ ░▒▓░░░ ▒░ ░░▒▓▒ ▒ ▒ ░ ▒░   ░  ░
░  ░      ░ ▓██ ░▒░ ░ ░▒  ░ ░    ░     ░ ░  ░  ░▒ ░ ▒░ ░ ░  ░░░▒░ ░ ░ ░  ░      ░
░      ░    ▒ ▒ ░░  ░  ░  ░    ░         ░     ░░   ░    ░    ░░░ ░ ░ ░      ░   
       ░    ░ ░           ░              ░  ░   ░        ░  ░   ░            ░   
            ░ ░                                                                 

FUCK THE SOCIALS

FUD FREE

LIFE IS A MYSTERY AND PEOPLE DESERVE PLEASANT SURPRISES

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        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 Address {

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

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

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


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

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

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

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

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

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


abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}




contract MYSTEREUM is Context,IERC20, Ownable{
    using Address for address;

    string private _name = "MYSTEREUM";
    string private _symbol = "MYSTEREUM";
    uint8 private _decimals = 18;
    uint256 totalFeeFortx = 0;
      uint256 maxWalletTreshold = 3;
    uint256 maxTxTreshold = 2;
    uint256 private swapTreshold =2;

    uint256 private currentThreshold = 20; //Once the token value goes up this number can be decreased (To reduce price impact on asset)
    uint256 private _totalSupply = (100000000000 * 10**4) * 10**_decimals; //1T supply
    uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _excludedFromFees;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public automatedMarketMakerPairs;
    address _owner;
    address payable public marketingAddress = payable(0x84E60B0FB2136Fef860C78Ce78ad5a1AF86E530F);
    uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; // starting 1%
    uint256 maxTxAmount = _totalSupply*maxTxTreshold/100;
    mapping (address => bool) botWallets;
    bool botTradeEnabled = false;
    bool checkWalletSize = true;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private presaleAddresses;
    //15% buy tax 20% sell tax

    uint256 private buyliqFee = 2; //10
    uint256 private buyprevLiqFee = 10;
    uint256 private buymktFee = 3;//3
    uint256 private buyPrevmktFee = 3;
    uint256 ZeroTaxcooldown = 0;
    bool private tradeEnabled = false;

    
    uint256 private sellliqFee = 1;
    uint256 private sellprevLiqFee = 1;
    uint256 private sellmktFee = 4;
    uint256 private sellPrevmktFee = 4;
    


    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private mktTokens = 0;
    uint256 private liqTokens = 0;

    
    event SwapAndLiquify(uint256 tokensSwapped,
		uint256 ethReceived,
		uint256 tokensIntoLiquidity
	);
    event tokensSwappedDuringTokenomics(uint256 amount);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
    IUniswapV2Router02 _router;
    address public uniswapV2Pair;

    //Balances tracker

    modifier lockTheSwap{
		inSwapAndLiquify = true;
		_;
		inSwapAndLiquify = false;
	}
    

    constructor(){
        _balances[_msgSender()] = _totalSupply;
        //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks
        IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory())
            .createPair(address(this), _uniRouter.WETH());
        
        _excludedFromFees[owner()] = true;         
        _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees
        _router = _uniRouter;
        _liquidityHolders[address(_router)] = true;
        _liquidityHolders[owner()] = true;
        _liquidityHolders[address(this)] = true;
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        emit Transfer(address(0),_msgSender(),_totalSupply);




    }
    receive() external payable{}


    //general token data and tracking of balances to be swapped.
    function getOwner()external view returns(address){
            return owner();
    }
    function currentmktTokens() external view returns (uint256){
            return mktTokens;
     }

     function currentLiqTokens() external view returns (uint256){
            return liqTokens;
     }

     function totalSupply() external view override returns (uint256){
            return _totalSupply;
     }
   
    function balanceOf(address account) public view override returns (uint256){
        return _balances[account];
    }
   
    function transfer(address recipient, uint256 amount) external override returns (bool){
            _transfer(_msgSender(),recipient,amount);
            return true;

    }
   
    function allowance(address owner, address spender) external view override returns (uint256){
            return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) external override returns (bool){
            _approve(_msgSender(),spender,amount);
            return true;
    }

    function decimals()external view returns(uint256){
        return _decimals;
    }
    function name() external view returns (string memory) {
		return _name;
	}
    function symbol() external view returns (string memory){
        return _symbol;
    }
        function updateMaxTxTreshold(uint256 newVal) public onlyOwner{
        maxTxTreshold = newVal;
        maxTxAmount = _totalSupply*maxTxTreshold/100;// 1%

    }
     function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{
        maxWalletTreshold = newVal;
        maxWalletAmount = _totalSupply*maxWalletTreshold/100;

    }
    

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



    //Tokenomics related functions
    
    function ZeroTax() public onlyOwner{
         require(block.timestamp > ZeroTaxcooldown, "You cant call ZeroTax more than once per day");
         buyPrevmktFee = buymktFee;
         buyprevLiqFee = buyliqFee;
       
         buyliqFee = 0;
         buymktFee = 0;
    }
    function ZeroTaxOver() public onlyOwner{
         buyliqFee = buyprevLiqFee;
         buymktFee = buyPrevmktFee;
         ZeroTaxcooldown = block.timestamp + 86400;
    }

    function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{
        botWallets[detectedBot] = isBot;
    }
    function currentbuyliqFee() public view returns (uint256){
            return buyliqFee;
    }
    function currentbuymktfee() public view returns (uint256){
            return buymktFee;
    }

      function currentsellLiqFee() public view returns (uint256){
            return sellliqFee;
    }
    function currentsellmktfee() public view returns (uint256){
            return sellmktFee;
    }

    function currentThresholdInt()public view returns (uint256){
        return currentThreshold;
    }
    function isExcluded(address toCheck)public view returns (bool){
            return _excludedFromFees[toCheck];
    }

    function _transfer(address from, address to, uint256 amount) internal{
        
        require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0,"ERC20: transfered amount must be greater than zero");
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        if(tradeEnabled == false){
            require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled");
        }
        if(_liquidityHolders[to]==false && _liquidityHolders[from]==false){
        require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
         if(from == uniswapV2Pair){
                require(balanceOf(to)+amount <= maxWalletAmount);
            }
        }
        uint256 inContractBalance = balanceOf(address(this));
        if(inContractBalance >=requiredTokensToSwap && 
			!inSwapAndLiquify && 
			from != uniswapV2Pair && 
			swapAndLiquifyEnabled){
                if(inContractBalance >= requiredTokensToSwap ){
                    inContractBalance = requiredTokensToSwap;
                    swapForTokenomics(inContractBalance);
                }
            }

            bool takeFees = true;
            
            
            if(_excludedFromFees[from] || _excludedFromFees[to]) {
                totalFeeFortx = 0;
                takeFees = false;
               

            }
            uint256 mktAmount = 0;
		    uint256 liqAmount = 0;  // Amount to be added to liquidity.

            if(takeFees){
                
                
                //bot fees
                if(botWallets[from] == true||botWallets[to]==true){
                    revert("No bots can trade");
                }
                //Selling fees
                if (automatedMarketMakerPairs[to] && to != address(_router) ){
                        totalFeeFortx = 0;
                        mktAmount = amount * sellmktFee/100;
                        liqAmount = amount * sellliqFee/100;
                        totalFeeFortx = mktAmount + liqAmount;
                }
                //Buy Fees
                else if(automatedMarketMakerPairs[from] && from != address(_router)) {
                
                    totalFeeFortx = 0;
                    mktAmount = amount * buymktFee/100;
                    liqAmount = amount * buyliqFee/100;
                    totalFeeFortx = mktAmount + liqAmount ;
                }

                
            }

            _balances[from] = senderBalance - amount;
            _balances[to] += amount - mktAmount - liqAmount;

          if(liqAmount != 0) {
			_balances[address(this)] += totalFeeFortx;
			//tLiqTotal += liqAmount;
            liqTokens += liqAmount;
            mktTokens += mktAmount;
			emit Transfer(from, address(this), totalFeeFortx);
            
		    }
            emit Transfer(from, to,amount-totalFeeFortx);
            
        
    }
    function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{
        swapAndLiquify(liqTokens);
        swapTokensForETHmkt(mktTokens);
        emit tokensSwappedDuringTokenomics(balanceToswap);
        mktTokens = 0;
        liqTokens = 0;
    }
     function addLimitExempt(address newAddress)external onlyOwner{
        _liquidityHolders[newAddress] = true;
     
    }
    function swapTokensForETHmkt(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			marketingAddress,
			block.timestamp
		);

    }

    function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{
        //uint256 contractBalance = tokenToClear.balanceOf(address(this));
        tokenToClear.transfer(destination, amount);
    }

    function unstuckETH(address payable destination) public onlyOwner{
        uint256 ethBalance = address(this).balance;
        payable(destination).transfer(ethBalance);
    }

    function tradeStatus(bool status) public onlyOwner{
        tradeEnabled = status;
    }

    function swapAndLiquify(uint256 liqTokensPassed) private {
		uint256 half = liqTokensPassed / 2;
		uint256 otherHalf = liqTokensPassed - half;
		uint256 initialBalance = address(this).balance;

		swapTokensForETH(half);
		uint256 newBalance = address(this).balance - (initialBalance); 

		addLiquidity(otherHalf, newBalance);
		emit SwapAndLiquify(half,newBalance,otherHalf);
	}

    function swapTokensForETH(uint256 tokenAmount) private{
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), tokenAmount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			tokenAmount,
			0, // Accept any amount of ETH.
			path,
			address(this),
			block.timestamp
		);
	}
    
    function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{
		_approve(address(this), address(_router), tokenAmount);

		_router.addLiquidityETH{value:ethAmount}(
			address(this),
			tokenAmount,
			0,
			0,
			deadAddress,// tr
			block.timestamp
		);
	}

    function _approve(address owner,address spender, uint256 amount) internal{
        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);


    }




    //Fees related functions

    function addToExcluded(address toExclude) public onlyOwner{  
        _excludedFromFees[toExclude] = true;
    }

    function removeFromExcluded(address toRemove) public onlyOwner{
        _excludedFromFees[toRemove] = false;
    }
      function excludePresaleAddresses(address router, address presale) external onlyOwner {
        
        _liquidityHolders[address(router)] = true;
        _liquidityHolders[presale] = true;
        presaleAddresses[address(router)] = true;
        presaleAddresses[presale] = true;
       
    }
    function endPresaleStatus() public onlyOwner{
        buymktFee = 4;
        buyliqFee = 1;

        sellmktFee = 4;
        sellliqFee = 1;
        setSwapAndLiquify(true);
    }

    function updateThreshold(uint newThreshold) public onlyOwner{
        currentThreshold = newThreshold;

    }

    function setSwapAndLiquify(bool _enabled) public onlyOwner{
            swapAndLiquifyEnabled = _enabled;
    }


    //Marketing related 

    function setMktAddress(address newAddress) external onlyOwner{
        marketingAddress = payable(newAddress);
    }
    function transferAssetsETH(address payable to, uint256 amount) internal{
            to.transfer(amount);
    }
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{
            buyliqFee = newAmount;
    }
    function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{
             buymktFee= newAmount;
    }


      function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{
             sellliqFee= newAmount;
    }
    function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{
             sellmktFee= newAmount;
    }
    function currentMaxWallet() public view returns(uint256){
        return maxWalletAmount;
    }
    function currentMaxTx() public view returns(uint256){
        return maxTxAmount;
    }
    function updateSwapTreshold(uint256 newVal) public onlyOwner{
        swapTreshold = newVal;
        requiredTokensToSwap = _totalSupply*swapTreshold/1000;
        
    }
    function currentTradeStatus() public view returns (bool){
        return tradeEnabled;   
    }
    function currentSwapTreshold() public view returns(uint256){
        return swapTreshold;
    }
    function currentTokensToSwap() public view returns(uint256){
        return requiredTokensToSwap;
    }
}


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 Mint(address indexed sender, uint amount0, uint amount1);
    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 mint(address to) external returns (uint liquidity);
    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 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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[],"name":"ZeroTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ZeroTaxOver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600981526020017f4d595354455245554d0000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000999565b506040518060400160405280600981526020017f4d595354455245554d0000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000999565b506012600360006101000a81548160ff021916908360ff16021790555060006004556003600555600260065560026007556014600855600360009054906101000a900460ff16600a620000f3919062000b91565b66038d7ea4c6800062000107919062000cce565b6009556103e86007546009546200011f919062000cce565b6200012b919062000afe565b600a557384e60b0fb2136fef860c78ce78ad5a1af86e530f601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606460055460095462000197919062000cce565b620001a3919062000afe565b6011556064600654600954620001ba919062000cce565b620001c6919062000afe565b6012556000601460006101000a81548160ff0219169083151502179055506001601460016101000a81548160ff0219169083151502179055506002601755600a60185560036019556003601a556000601b556000601c60006101000a81548160ff0219169083151502179055506001601d556001601e556004601f5560046020556001602160016101000a81548160ff02191690831515021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525060006022556000602355348015620002b157600080fd5b50620002d2620002c66200080360201b60201c565b6200080b60201b60201c565b600954600b6000620002e96200080360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038757600080fd5b505afa1580156200039c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c2919062000a60565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200042557600080fd5b505afa1580156200043a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000460919062000a60565b6040518363ffffffff1660e01b81526004016200047f92919062000ab4565b602060405180830381600087803b1580156200049a57600080fd5b505af1158015620004af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d5919062000a60565b602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60006200052b620008cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000620006a5620008cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000783602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008f860201b60201c565b620007936200080360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620007f4919062000ae1565b60405180910390a35062000e69565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b828054620009a79062000d7a565b90600052602060002090601f016020900481019282620009cb576000855562000a17565b82601f10620009e657805160ff191683800117855562000a17565b8280016001018555821562000a17579182015b8281111562000a16578251825591602001919060010190620009f9565b5b50905062000a26919062000a2a565b5090565b5b8082111562000a4557600081600090555060010162000a2b565b5090565b60008151905062000a5a8162000e4f565b92915050565b60006020828403121562000a795762000a7862000e3d565b5b600062000a898482850162000a49565b91505092915050565b62000a9d8162000d2f565b82525050565b62000aae8162000d63565b82525050565b600060408201905062000acb600083018562000a92565b62000ada602083018462000a92565b9392505050565b600060208201905062000af8600083018462000aa3565b92915050565b600062000b0b8262000d63565b915062000b188362000d63565b92508262000b2b5762000b2a62000ddf565b5b828204905092915050565b6000808291508390505b600185111562000b885780860481111562000b605762000b5f62000db0565b5b600185161562000b705780820291505b808102905062000b808562000e42565b945062000b40565b94509492505050565b600062000b9e8262000d63565b915062000bab8362000d6d565b925062000bda7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000be2565b905092915050565b60008262000bf4576001905062000cc7565b8162000c04576000905062000cc7565b816001811462000c1d576002811462000c285762000c5e565b600191505062000cc7565b60ff84111562000c3d5762000c3c62000db0565b5b8360020a91508482111562000c575762000c5662000db0565b5b5062000cc7565b5060208310610133831016604e8410600b841016171562000c985782820a90508381111562000c925762000c9162000db0565b5b62000cc7565b62000ca7848484600162000b36565b9250905081840481111562000cc15762000cc062000db0565b5b81810290505b9392505050565b600062000cdb8262000d63565b915062000ce88362000d63565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d245762000d2362000db0565b5b828202905092915050565b600062000d3c8262000d43565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000d9357607f821691505b6020821081141562000daa5762000da962000e0e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b62000e5a8162000d2f565b811462000e6657600080fd5b50565b60805160601c614c1a62000e8f6000396000818161116001526138ff0152614c1a6000f3fe6080604052600436106103545760003560e01c80638cd0260c116101c6578063bf9b0159116100f7578063dd62ed3e11610095578063edcf19b21161006f578063edcf19b214610c11578063f2fde38b14610c3a578063f7da678514610c63578063f953cf3a14610c8c5761035b565b8063dd62ed3e14610b7e578063ddcf9b9814610bbb578063e1370dd314610be65761035b565b8063cba0e996116100d1578063cba0e99614610ac4578063d1294d4c14610b01578063d15bcf0f14610b2a578063d7d7442f14610b555761035b565b8063bf9b015914610a47578063bf9eb54014610a72578063cb66453414610a9b5761035b565b8063a13b71e911610164578063a7a074521161013e578063a7a074521461097b578063a9059cbb146109a4578063b4d95a93146109e1578063b62496f514610a0a5761035b565b8063a13b71e914610910578063a5ece94114610927578063a6c38f59146109525761035b565b806395d89b41116101a057806395d89b41146108665780639a7a23d6146108915780639b136da4146108ba578063a04bdc81146108e55761035b565b80638cd0260c146107e75780638da5cb5b1461081057806390f502831461083b5761035b565b80634a0e963c116102a05780636df3333a1161023e578063719b3db811610218578063719b3db814610753578063801527ce1461076a5780638628c23f14610793578063893d20e8146107bc5761035b565b80636df3333a146106d457806370a08231146106ff578063715018a61461073c5761035b565b80635297defd1161027a5780635297defd1461062c5780635be76f111461065757806364c16163146106805780636573c4df146106ab5761035b565b80634a0e963c146105ad5780634a74bb02146105d65780634bd7ace5146106015761035b565b806322788f861161030d5780632d03420b116102e75780632d03420b14610503578063313ce5671461052c578063487a69051461055757806349bd5a5e146105825761035b565b806322788f861461047057806323b872dd1461049b57806327c8f835146104d85761035b565b806306fdde03146103605780630882a8631461038b578063095ea7b3146103b457806313b4a7f4146103f157806318160ddd1461041a578063220f6696146104455761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ca3565b6040516103829190614125565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190613cc8565b610d35565b005b3480156103c057600080fd5b506103db60048036038101906103d69190613bdb565b610dbb565b6040516103e8919061410a565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613b08565b610dd9565b005b34801561042657600080fd5b5061042f610fb9565b60405161043c9190614307565b60405180910390f35b34801561045157600080fd5b5061045a610fc3565b604051610467919061410a565b60405180910390f35b34801561047c57600080fd5b50610485610fd6565b6040516104929190614307565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190613b48565b610fe0565b6040516104cf919061410a565b60405180910390f35b3480156104e457600080fd5b506104ed61115e565b6040516104fa919061404a565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190613c1b565b611182565b005b34801561053857600080fd5b5061054161121b565b60405161054e9190614307565b60405180910390f35b34801561056357600080fd5b5061056c611235565b6040516105799190614307565b60405180910390f35b34801561058e57600080fd5b5061059761123f565b6040516105a4919061404a565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf9190613a41565b611265565b005b3480156105e257600080fd5b506105eb61133c565b6040516105f8919061410a565b60405180910390f35b34801561060d57600080fd5b5061061661134f565b6040516106239190614307565b60405180910390f35b34801561063857600080fd5b50610641611359565b60405161064e9190614307565b60405180910390f35b34801561066357600080fd5b5061067e60048036038101906106799190613a9b565b611363565b005b34801561068c57600080fd5b5061069561142f565b6040516106a29190614307565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd9190613cc8565b611439565b005b3480156106e057600080fd5b506106e96114e1565b6040516106f69190614307565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190613a41565b6114eb565b6040516107339190614307565b60405180910390f35b34801561074857600080fd5b50610751611534565b005b34801561075f57600080fd5b506107686115bc565b005b34801561077657600080fd5b50610791600480360381019061078c9190613c1b565b6116a0565b005b34801561079f57600080fd5b506107ba60048036038101906107b59190613cc8565b611739565b005b3480156107c857600080fd5b506107d16117bf565b6040516107de919061404a565b60405180910390f35b3480156107f357600080fd5b5061080e60048036038101906108099190613cc8565b6117ce565b005b34801561081c57600080fd5b50610825611854565b604051610832919061404a565b60405180910390f35b34801561084757600080fd5b5061085061187d565b60405161085d9190614307565b60405180910390f35b34801561087257600080fd5b5061087b611887565b6040516108889190614125565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b39190613b9b565b611919565b005b3480156108c657600080fd5b506108cf611a34565b6040516108dc9190614307565b60405180910390f35b3480156108f157600080fd5b506108fa611a3e565b6040516109079190614307565b60405180910390f35b34801561091c57600080fd5b50610925611a44565b005b34801561093357600080fd5b5061093c611ae9565b6040516109499190614065565b60405180910390f35b34801561095e57600080fd5b5061097960048036038101906109749190613ac8565b611b0f565b005b34801561098757600080fd5b506109a2600480360381019061099d9190613cc8565b611be6565b005b3480156109b057600080fd5b506109cb60048036038101906109c69190613bdb565b611c8e565b6040516109d8919061410a565b60405180910390f35b3480156109ed57600080fd5b50610a086004803603810190610a039190613a41565b611cac565b005b348015610a1657600080fd5b50610a316004803603810190610a2c9190613a41565b611d83565b604051610a3e919061410a565b60405180910390f35b348015610a5357600080fd5b50610a5c611da3565b604051610a699190614307565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190613a41565b611dad565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190613a41565b611e6d565b005b348015610ad057600080fd5b50610aeb6004803603810190610ae69190613a41565b611f44565b604051610af8919061410a565b60405180910390f35b348015610b0d57600080fd5b50610b286004803603810190610b239190613cc8565b611f9a565b005b348015610b3657600080fd5b50610b3f612043565b604051610b4c919061410a565b60405180910390f35b348015610b6157600080fd5b50610b7c6004803603810190610b779190613cc8565b61205a565b005b348015610b8a57600080fd5b50610ba56004803603810190610ba09190613b08565b6120e0565b604051610bb29190614307565b60405180910390f35b348015610bc757600080fd5b50610bd0612167565b604051610bdd9190614307565b60405180910390f35b348015610bf257600080fd5b50610bfb612171565b604051610c089190614307565b60405180910390f35b348015610c1d57600080fd5b50610c386004803603810190610c339190613cc8565b61217b565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190613a41565b612201565b005b348015610c6f57600080fd5b50610c8a6004803603810190610c859190613c75565b6122f9565b005b348015610c9857600080fd5b50610ca1612408565b005b606060018054610cb29061465e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde9061465e565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b610d3d6124b0565b73ffffffffffffffffffffffffffffffffffffffff16610d5b611854565b73ffffffffffffffffffffffffffffffffffffffff1614610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da890614267565b60405180910390fd5b8060178190555050565b6000610dcf610dc86124b0565b84846124b8565b6001905092915050565b610de16124b0565b73ffffffffffffffffffffffffffffffffffffffff16610dff611854565b73ffffffffffffffffffffffffffffffffffffffff1614610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c90614267565b60405180910390fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600954905090565b602160009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061102b6124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90614247565b60405180910390fd5b6110b3848484612683565b611153846110bf6124b0565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111096124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114e9190614543565b6124b8565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61118a6124b0565b73ffffffffffffffffffffffffffffffffffffffff166111a8611854565b73ffffffffffffffffffffffffffffffffffffffff16146111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590614267565b60405180910390fd5b80601c60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600a54905090565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61126d6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661128b611854565b73ffffffffffffffffffffffffffffffffffffffff16146112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d890614267565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602160019054906101000a900460ff1681565b6000601754905090565b6000601f54905090565b61136b6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611389611854565b73ffffffffffffffffffffffffffffffffffffffff16146113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d690614267565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561142a573d6000803e3d6000fd5b505050565b6000602354905090565b6114416124b0565b73ffffffffffffffffffffffffffffffffffffffff1661145f611854565b73ffffffffffffffffffffffffffffffffffffffff16146114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac90614267565b60405180910390fd5b8060058190555060646005546009546114ce91906144e9565b6114d891906144b8565b60118190555050565b6000600754905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61153c6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661155a611854565b73ffffffffffffffffffffffffffffffffffffffff16146115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a790614267565b60405180910390fd5b6115ba6000613140565b565b6115c46124b0565b73ffffffffffffffffffffffffffffffffffffffff166115e2611854565b73ffffffffffffffffffffffffffffffffffffffff1614611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90614267565b60405180910390fd5b601b54421161167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611673906142c7565b60405180910390fd5b601954601a8190555060175460188190555060006017819055506000601981905550565b6116a86124b0565b73ffffffffffffffffffffffffffffffffffffffff166116c6611854565b73ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171390614267565b60405180910390fd5b80602160016101000a81548160ff02191690831515021790555050565b6117416124b0565b73ffffffffffffffffffffffffffffffffffffffff1661175f611854565b73ffffffffffffffffffffffffffffffffffffffff16146117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac90614267565b60405180910390fd5b80601f8190555050565b60006117c9611854565b905090565b6117d66124b0565b73ffffffffffffffffffffffffffffffffffffffff166117f4611854565b73ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184190614267565b60405180910390fd5b80601d8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601d54905090565b6060600280546118969061465e565b80601f01602080910402602001604051908101604052809291908181526020018280546118c29061465e565b801561190f5780601f106118e45761010080835404028352916020019161190f565b820191906000526020600020905b8154815290600101906020018083116118f257829003601f168201915b5050505050905090565b6119216124b0565b73ffffffffffffffffffffffffffffffffffffffff1661193f611854565b73ffffffffffffffffffffffffffffffffffffffff1614611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c90614267565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d906141a7565b60405180910390fd5b611a308282613204565b5050565b6000601954905090565b600a5481565b611a4c6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611a6a611854565b73ffffffffffffffffffffffffffffffffffffffff1614611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab790614267565b60405180910390fd5b601854601781905550601a546019819055506201518042611ae19190614462565b601b81905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b176124b0565b73ffffffffffffffffffffffffffffffffffffffff16611b35611854565b73ffffffffffffffffffffffffffffffffffffffff1614611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8290614267565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611bee6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611c0c611854565b73ffffffffffffffffffffffffffffffffffffffff1614611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990614267565b60405180910390fd5b806006819055506064600654600954611c7b91906144e9565b611c8591906144b8565b60128190555050565b6000611ca2611c9b6124b0565b8484612683565b6001905092915050565b611cb46124b0565b73ffffffffffffffffffffffffffffffffffffffff16611cd2611854565b73ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90614267565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601254905090565b611db56124b0565b73ffffffffffffffffffffffffffffffffffffffff16611dd3611854565b73ffffffffffffffffffffffffffffffffffffffff1614611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090614267565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e756124b0565b73ffffffffffffffffffffffffffffffffffffffff16611e93611854565b73ffffffffffffffffffffffffffffffffffffffff1614611ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee090614267565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611fa26124b0565b73ffffffffffffffffffffffffffffffffffffffff16611fc0611854565b73ffffffffffffffffffffffffffffffffffffffff1614612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d90614267565b60405180910390fd5b806007819055506103e860075460095461203091906144e9565b61203a91906144b8565b600a8190555050565b6000601c60009054906101000a900460ff16905090565b6120626124b0565b73ffffffffffffffffffffffffffffffffffffffff16612080611854565b73ffffffffffffffffffffffffffffffffffffffff16146120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd90614267565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602254905090565b6000601154905090565b6121836124b0565b73ffffffffffffffffffffffffffffffffffffffff166121a1611854565b73ffffffffffffffffffffffffffffffffffffffff16146121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee90614267565b60405180910390fd5b8060198190555050565b6122096124b0565b73ffffffffffffffffffffffffffffffffffffffff16612227611854565b73ffffffffffffffffffffffffffffffffffffffff161461227d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227490614267565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e490614167565b60405180910390fd5b6122f681613140565b50565b6123016124b0565b73ffffffffffffffffffffffffffffffffffffffff1661231f611854565b73ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90614267565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016123b0929190614080565b602060405180830381600087803b1580156123ca57600080fd5b505af11580156123de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124029190613c48565b50505050565b6124106124b0565b73ffffffffffffffffffffffffffffffffffffffff1661242e611854565b73ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b90614267565b60405180910390fd5b600460198190555060016017819055506004601f819055506001601d819055506124ae60016116a0565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f906142a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f90614187565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126769190614307565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea90614287565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a90614147565b60405180910390fd5b600081116127a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279d90614207565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561282d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612824906141c7565b60405180910390fd5b60001515601c60009054906101000a900460ff161515141561292a57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128ea5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292090614227565b60405180910390fd5b5b60001515601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156129da575060001515601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612a9e57601254821115612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b906141e7565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a9d5760115482612a87856114eb565b612a919190614462565b1115612a9c57600080fd5b5b5b6000612aa9306114eb565b9050600a548110158015612aca5750602160009054906101000a900460ff16155b8015612b245750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612b3c5750602160019054906101000a900460ff165b15612b5a57600a548110612b5957600a549050612b58816132a5565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c015750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c13576000600481905550600090505b6000808215612f0f5760011515601360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612ccb575060011515601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d02906142e7565b60405180910390fd5b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612db25750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15612e0e5760006004819055506064601f5487612dcf91906144e9565b612dd991906144b8565b91506064601d5487612deb91906144e9565b612df591906144b8565b90508082612e039190614462565b600481905550612f0e565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612eb55750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612f0d576000600481905550606460195487612ed291906144e9565b612edc91906144b8565b9150606460175487612eee91906144e9565b612ef891906144b8565b90508082612f069190614462565b6004819055505b5b5b8585612f1b9190614543565b600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808287612f6b9190614543565b612f759190614543565b600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fc39190614462565b92505081905550600081146130c457600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130239190614462565b92505081905550806023600082825461303c9190614462565b9250508190555081602260008282546130559190614462565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516130bb9190614307565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454896131219190614543565b60405161312e9190614307565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602160006101000a81548160ff0219169083151502179055506132cb60235461333b565b6132d66022546133c6565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904816040516133059190614307565b60405180910390a1600060228190555060006023819055506000602160006101000a81548160ff02191690831515021790555050565b600060028261334a91906144b8565b90506000818361335a9190614543565b9050600047905061336a8361363a565b600081476133789190614543565b9050613384838261388c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516133b7939291906143d6565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156133e3576133e261474c565b5b6040519080825280602002602001820160405280156134115781602001602082028036833780820191505090505b50905030816000815181106134295761342861471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156134cb57600080fd5b505afa1580156134df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135039190613a6e565b816001815181106135175761351661471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061357e30602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613604959493929190614322565b600060405180830381600087803b15801561361e57600080fd5b505af1158015613632573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff8111156136575761365661474c565b5b6040519080825280602002602001820160405280156136855781602001602082028036833780820191505090505b509050308160008151811061369d5761369c61471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561373f57600080fd5b505afa158015613753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137779190613a6e565b8160018151811061378b5761378a61471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137f230602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161385695949392919061437c565b600060405180830381600087803b15801561387057600080fd5b505af1158015613884573d6000803e3d6000fd5b505050505050565b6138b930602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b8152600401613940969594939291906140a9565b6060604051808303818588803b15801561395957600080fd5b505af115801561396d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139929190613cf5565b5050505050565b6000813590506139a881614b71565b92915050565b6000815190506139bd81614b71565b92915050565b6000813590506139d281614b88565b92915050565b6000813590506139e781614b9f565b92915050565b6000815190506139fc81614b9f565b92915050565b600081359050613a1181614bb6565b92915050565b600081359050613a2681614bcd565b92915050565b600081519050613a3b81614bcd565b92915050565b600060208284031215613a5757613a5661477b565b5b6000613a6584828501613999565b91505092915050565b600060208284031215613a8457613a8361477b565b5b6000613a92848285016139ae565b91505092915050565b600060208284031215613ab157613ab061477b565b5b6000613abf848285016139c3565b91505092915050565b60008060408385031215613adf57613ade61477b565b5b6000613aed858286016139c3565b9250506020613afe858286016139d8565b9150509250929050565b60008060408385031215613b1f57613b1e61477b565b5b6000613b2d85828601613999565b9250506020613b3e85828601613999565b9150509250929050565b600080600060608486031215613b6157613b6061477b565b5b6000613b6f86828701613999565b9350506020613b8086828701613999565b9250506040613b9186828701613a17565b9150509250925092565b60008060408385031215613bb257613bb161477b565b5b6000613bc085828601613999565b9250506020613bd1858286016139d8565b9150509250929050565b60008060408385031215613bf257613bf161477b565b5b6000613c0085828601613999565b9250506020613c1185828601613a17565b9150509250929050565b600060208284031215613c3157613c3061477b565b5b6000613c3f848285016139d8565b91505092915050565b600060208284031215613c5e57613c5d61477b565b5b6000613c6c848285016139ed565b91505092915050565b600080600060608486031215613c8e57613c8d61477b565b5b6000613c9c86828701613a02565b9350506020613cad868287016139c3565b9250506040613cbe86828701613a17565b9150509250925092565b600060208284031215613cde57613cdd61477b565b5b6000613cec84828501613a17565b91505092915050565b600080600060608486031215613d0e57613d0d61477b565b5b6000613d1c86828701613a2c565b9350506020613d2d86828701613a2c565b9250506040613d3e86828701613a2c565b9150509250925092565b6000613d548383613d7e565b60208301905092915050565b613d69816145e3565b82525050565b613d7881614589565b82525050565b613d8781614577565b82525050565b613d9681614577565b82525050565b6000613da78261441d565b613db18185614440565b9350613dbc8361440d565b8060005b83811015613ded578151613dd48882613d48565b9750613ddf83614433565b925050600181019050613dc0565b5085935050505092915050565b613e038161459b565b82525050565b613e12816145f5565b82525050565b6000613e2382614428565b613e2d8185614451565b9350613e3d81856020860161462b565b613e4681614780565b840191505092915050565b6000613e5e602383614451565b9150613e6982614791565b604082019050919050565b6000613e81602683614451565b9150613e8c826147e0565b604082019050919050565b6000613ea4602283614451565b9150613eaf8261482f565b604082019050919050565b6000613ec7603983614451565b9150613ed28261487e565b604082019050919050565b6000613eea602683614451565b9150613ef5826148cd565b604082019050919050565b6000613f0d602883614451565b9150613f188261491c565b604082019050919050565b6000613f30603283614451565b9150613f3b8261496b565b604082019050919050565b6000613f53601d83614451565b9150613f5e826149ba565b602082019050919050565b6000613f76602883614451565b9150613f81826149e3565b604082019050919050565b6000613f99602083614451565b9150613fa482614a32565b602082019050919050565b6000613fbc602583614451565b9150613fc782614a5b565b604082019050919050565b6000613fdf602483614451565b9150613fea82614aaa565b604082019050919050565b6000614002602c83614451565b915061400d82614af9565b604082019050919050565b6000614025601183614451565b915061403082614b48565b602082019050919050565b614044816145d9565b82525050565b600060208201905061405f6000830184613d8d565b92915050565b600060208201905061407a6000830184613d6f565b92915050565b60006040820190506140956000830185613d60565b6140a2602083018461403b565b9392505050565b600060c0820190506140be6000830189613d8d565b6140cb602083018861403b565b6140d86040830187613e09565b6140e56060830186613e09565b6140f26080830185613d8d565b6140ff60a083018461403b565b979650505050505050565b600060208201905061411f6000830184613dfa565b92915050565b6000602082019050818103600083015261413f8184613e18565b905092915050565b6000602082019050818103600083015261416081613e51565b9050919050565b6000602082019050818103600083015261418081613e74565b9050919050565b600060208201905081810360008301526141a081613e97565b9050919050565b600060208201905081810360008301526141c081613eba565b9050919050565b600060208201905081810360008301526141e081613edd565b9050919050565b6000602082019050818103600083015261420081613f00565b9050919050565b6000602082019050818103600083015261422081613f23565b9050919050565b6000602082019050818103600083015261424081613f46565b9050919050565b6000602082019050818103600083015261426081613f69565b9050919050565b6000602082019050818103600083015261428081613f8c565b9050919050565b600060208201905081810360008301526142a081613faf565b9050919050565b600060208201905081810360008301526142c081613fd2565b9050919050565b600060208201905081810360008301526142e081613ff5565b9050919050565b6000602082019050818103600083015261430081614018565b9050919050565b600060208201905061431c600083018461403b565b92915050565b600060a082019050614337600083018861403b565b6143446020830187613e09565b81810360408301526143568186613d9c565b90506143656060830185613d60565b614372608083018461403b565b9695505050505050565b600060a082019050614391600083018861403b565b61439e6020830187613e09565b81810360408301526143b08186613d9c565b90506143bf6060830185613d8d565b6143cc608083018461403b565b9695505050505050565b60006060820190506143eb600083018661403b565b6143f8602083018561403b565b614405604083018461403b565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061446d826145d9565b9150614478836145d9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144ad576144ac614690565b5b828201905092915050565b60006144c3826145d9565b91506144ce836145d9565b9250826144de576144dd6146bf565b5b828204905092915050565b60006144f4826145d9565b91506144ff836145d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561453857614537614690565b5b828202905092915050565b600061454e826145d9565b9150614559836145d9565b92508282101561456c5761456b614690565b5b828203905092915050565b6000614582826145b9565b9050919050565b6000614594826145b9565b9050919050565b60008115159050919050565b60006145b282614577565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006145ee82614607565b9050919050565b6000614600826145d9565b9050919050565b600061461282614619565b9050919050565b6000614624826145b9565b9050919050565b60005b8381101561464957808201518184015260208101905061462e565b83811115614658576000848401525b50505050565b6000600282049050600182168061467657607f821691505b6020821081141561468a576146896146ee565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f596f752063616e742063616c6c205a65726f546178206d6f7265207468616e2060008201527f6f6e636520706572206461790000000000000000000000000000000000000000602082015250565b7f4e6f20626f74732063616e207472616465000000000000000000000000000000600082015250565b614b7a81614577565b8114614b8557600080fd5b50565b614b9181614589565b8114614b9c57600080fd5b50565b614ba88161459b565b8114614bb357600080fd5b50565b614bbf816145a7565b8114614bca57600080fd5b50565b614bd6816145d9565b8114614be157600080fd5b5056fea26469706673582212204c14ead865ac20d6b220d0bd5253bc39f8cf1b9d25613c3faa44ce1b3a21743d64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103545760003560e01c80638cd0260c116101c6578063bf9b0159116100f7578063dd62ed3e11610095578063edcf19b21161006f578063edcf19b214610c11578063f2fde38b14610c3a578063f7da678514610c63578063f953cf3a14610c8c5761035b565b8063dd62ed3e14610b7e578063ddcf9b9814610bbb578063e1370dd314610be65761035b565b8063cba0e996116100d1578063cba0e99614610ac4578063d1294d4c14610b01578063d15bcf0f14610b2a578063d7d7442f14610b555761035b565b8063bf9b015914610a47578063bf9eb54014610a72578063cb66453414610a9b5761035b565b8063a13b71e911610164578063a7a074521161013e578063a7a074521461097b578063a9059cbb146109a4578063b4d95a93146109e1578063b62496f514610a0a5761035b565b8063a13b71e914610910578063a5ece94114610927578063a6c38f59146109525761035b565b806395d89b41116101a057806395d89b41146108665780639a7a23d6146108915780639b136da4146108ba578063a04bdc81146108e55761035b565b80638cd0260c146107e75780638da5cb5b1461081057806390f502831461083b5761035b565b80634a0e963c116102a05780636df3333a1161023e578063719b3db811610218578063719b3db814610753578063801527ce1461076a5780638628c23f14610793578063893d20e8146107bc5761035b565b80636df3333a146106d457806370a08231146106ff578063715018a61461073c5761035b565b80635297defd1161027a5780635297defd1461062c5780635be76f111461065757806364c16163146106805780636573c4df146106ab5761035b565b80634a0e963c146105ad5780634a74bb02146105d65780634bd7ace5146106015761035b565b806322788f861161030d5780632d03420b116102e75780632d03420b14610503578063313ce5671461052c578063487a69051461055757806349bd5a5e146105825761035b565b806322788f861461047057806323b872dd1461049b57806327c8f835146104d85761035b565b806306fdde03146103605780630882a8631461038b578063095ea7b3146103b457806313b4a7f4146103f157806318160ddd1461041a578063220f6696146104455761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ca3565b6040516103829190614125565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190613cc8565b610d35565b005b3480156103c057600080fd5b506103db60048036038101906103d69190613bdb565b610dbb565b6040516103e8919061410a565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613b08565b610dd9565b005b34801561042657600080fd5b5061042f610fb9565b60405161043c9190614307565b60405180910390f35b34801561045157600080fd5b5061045a610fc3565b604051610467919061410a565b60405180910390f35b34801561047c57600080fd5b50610485610fd6565b6040516104929190614307565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190613b48565b610fe0565b6040516104cf919061410a565b60405180910390f35b3480156104e457600080fd5b506104ed61115e565b6040516104fa919061404a565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190613c1b565b611182565b005b34801561053857600080fd5b5061054161121b565b60405161054e9190614307565b60405180910390f35b34801561056357600080fd5b5061056c611235565b6040516105799190614307565b60405180910390f35b34801561058e57600080fd5b5061059761123f565b6040516105a4919061404a565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf9190613a41565b611265565b005b3480156105e257600080fd5b506105eb61133c565b6040516105f8919061410a565b60405180910390f35b34801561060d57600080fd5b5061061661134f565b6040516106239190614307565b60405180910390f35b34801561063857600080fd5b50610641611359565b60405161064e9190614307565b60405180910390f35b34801561066357600080fd5b5061067e60048036038101906106799190613a9b565b611363565b005b34801561068c57600080fd5b5061069561142f565b6040516106a29190614307565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd9190613cc8565b611439565b005b3480156106e057600080fd5b506106e96114e1565b6040516106f69190614307565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190613a41565b6114eb565b6040516107339190614307565b60405180910390f35b34801561074857600080fd5b50610751611534565b005b34801561075f57600080fd5b506107686115bc565b005b34801561077657600080fd5b50610791600480360381019061078c9190613c1b565b6116a0565b005b34801561079f57600080fd5b506107ba60048036038101906107b59190613cc8565b611739565b005b3480156107c857600080fd5b506107d16117bf565b6040516107de919061404a565b60405180910390f35b3480156107f357600080fd5b5061080e60048036038101906108099190613cc8565b6117ce565b005b34801561081c57600080fd5b50610825611854565b604051610832919061404a565b60405180910390f35b34801561084757600080fd5b5061085061187d565b60405161085d9190614307565b60405180910390f35b34801561087257600080fd5b5061087b611887565b6040516108889190614125565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b39190613b9b565b611919565b005b3480156108c657600080fd5b506108cf611a34565b6040516108dc9190614307565b60405180910390f35b3480156108f157600080fd5b506108fa611a3e565b6040516109079190614307565b60405180910390f35b34801561091c57600080fd5b50610925611a44565b005b34801561093357600080fd5b5061093c611ae9565b6040516109499190614065565b60405180910390f35b34801561095e57600080fd5b5061097960048036038101906109749190613ac8565b611b0f565b005b34801561098757600080fd5b506109a2600480360381019061099d9190613cc8565b611be6565b005b3480156109b057600080fd5b506109cb60048036038101906109c69190613bdb565b611c8e565b6040516109d8919061410a565b60405180910390f35b3480156109ed57600080fd5b50610a086004803603810190610a039190613a41565b611cac565b005b348015610a1657600080fd5b50610a316004803603810190610a2c9190613a41565b611d83565b604051610a3e919061410a565b60405180910390f35b348015610a5357600080fd5b50610a5c611da3565b604051610a699190614307565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190613a41565b611dad565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190613a41565b611e6d565b005b348015610ad057600080fd5b50610aeb6004803603810190610ae69190613a41565b611f44565b604051610af8919061410a565b60405180910390f35b348015610b0d57600080fd5b50610b286004803603810190610b239190613cc8565b611f9a565b005b348015610b3657600080fd5b50610b3f612043565b604051610b4c919061410a565b60405180910390f35b348015610b6157600080fd5b50610b7c6004803603810190610b779190613cc8565b61205a565b005b348015610b8a57600080fd5b50610ba56004803603810190610ba09190613b08565b6120e0565b604051610bb29190614307565b60405180910390f35b348015610bc757600080fd5b50610bd0612167565b604051610bdd9190614307565b60405180910390f35b348015610bf257600080fd5b50610bfb612171565b604051610c089190614307565b60405180910390f35b348015610c1d57600080fd5b50610c386004803603810190610c339190613cc8565b61217b565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190613a41565b612201565b005b348015610c6f57600080fd5b50610c8a6004803603810190610c859190613c75565b6122f9565b005b348015610c9857600080fd5b50610ca1612408565b005b606060018054610cb29061465e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde9061465e565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b610d3d6124b0565b73ffffffffffffffffffffffffffffffffffffffff16610d5b611854565b73ffffffffffffffffffffffffffffffffffffffff1614610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da890614267565b60405180910390fd5b8060178190555050565b6000610dcf610dc86124b0565b84846124b8565b6001905092915050565b610de16124b0565b73ffffffffffffffffffffffffffffffffffffffff16610dff611854565b73ffffffffffffffffffffffffffffffffffffffff1614610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c90614267565b60405180910390fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600954905090565b602160009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061102b6124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90614247565b60405180910390fd5b6110b3848484612683565b611153846110bf6124b0565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111096124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114e9190614543565b6124b8565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b61118a6124b0565b73ffffffffffffffffffffffffffffffffffffffff166111a8611854565b73ffffffffffffffffffffffffffffffffffffffff16146111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590614267565b60405180910390fd5b80601c60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600a54905090565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61126d6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661128b611854565b73ffffffffffffffffffffffffffffffffffffffff16146112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d890614267565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602160019054906101000a900460ff1681565b6000601754905090565b6000601f54905090565b61136b6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611389611854565b73ffffffffffffffffffffffffffffffffffffffff16146113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d690614267565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561142a573d6000803e3d6000fd5b505050565b6000602354905090565b6114416124b0565b73ffffffffffffffffffffffffffffffffffffffff1661145f611854565b73ffffffffffffffffffffffffffffffffffffffff16146114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac90614267565b60405180910390fd5b8060058190555060646005546009546114ce91906144e9565b6114d891906144b8565b60118190555050565b6000600754905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61153c6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661155a611854565b73ffffffffffffffffffffffffffffffffffffffff16146115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a790614267565b60405180910390fd5b6115ba6000613140565b565b6115c46124b0565b73ffffffffffffffffffffffffffffffffffffffff166115e2611854565b73ffffffffffffffffffffffffffffffffffffffff1614611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90614267565b60405180910390fd5b601b54421161167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611673906142c7565b60405180910390fd5b601954601a8190555060175460188190555060006017819055506000601981905550565b6116a86124b0565b73ffffffffffffffffffffffffffffffffffffffff166116c6611854565b73ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171390614267565b60405180910390fd5b80602160016101000a81548160ff02191690831515021790555050565b6117416124b0565b73ffffffffffffffffffffffffffffffffffffffff1661175f611854565b73ffffffffffffffffffffffffffffffffffffffff16146117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac90614267565b60405180910390fd5b80601f8190555050565b60006117c9611854565b905090565b6117d66124b0565b73ffffffffffffffffffffffffffffffffffffffff166117f4611854565b73ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184190614267565b60405180910390fd5b80601d8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601d54905090565b6060600280546118969061465e565b80601f01602080910402602001604051908101604052809291908181526020018280546118c29061465e565b801561190f5780601f106118e45761010080835404028352916020019161190f565b820191906000526020600020905b8154815290600101906020018083116118f257829003601f168201915b5050505050905090565b6119216124b0565b73ffffffffffffffffffffffffffffffffffffffff1661193f611854565b73ffffffffffffffffffffffffffffffffffffffff1614611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c90614267565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d906141a7565b60405180910390fd5b611a308282613204565b5050565b6000601954905090565b600a5481565b611a4c6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611a6a611854565b73ffffffffffffffffffffffffffffffffffffffff1614611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab790614267565b60405180910390fd5b601854601781905550601a546019819055506201518042611ae19190614462565b601b81905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b176124b0565b73ffffffffffffffffffffffffffffffffffffffff16611b35611854565b73ffffffffffffffffffffffffffffffffffffffff1614611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8290614267565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611bee6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611c0c611854565b73ffffffffffffffffffffffffffffffffffffffff1614611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990614267565b60405180910390fd5b806006819055506064600654600954611c7b91906144e9565b611c8591906144b8565b60128190555050565b6000611ca2611c9b6124b0565b8484612683565b6001905092915050565b611cb46124b0565b73ffffffffffffffffffffffffffffffffffffffff16611cd2611854565b73ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90614267565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601254905090565b611db56124b0565b73ffffffffffffffffffffffffffffffffffffffff16611dd3611854565b73ffffffffffffffffffffffffffffffffffffffff1614611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090614267565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e756124b0565b73ffffffffffffffffffffffffffffffffffffffff16611e93611854565b73ffffffffffffffffffffffffffffffffffffffff1614611ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee090614267565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611fa26124b0565b73ffffffffffffffffffffffffffffffffffffffff16611fc0611854565b73ffffffffffffffffffffffffffffffffffffffff1614612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d90614267565b60405180910390fd5b806007819055506103e860075460095461203091906144e9565b61203a91906144b8565b600a8190555050565b6000601c60009054906101000a900460ff16905090565b6120626124b0565b73ffffffffffffffffffffffffffffffffffffffff16612080611854565b73ffffffffffffffffffffffffffffffffffffffff16146120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd90614267565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602254905090565b6000601154905090565b6121836124b0565b73ffffffffffffffffffffffffffffffffffffffff166121a1611854565b73ffffffffffffffffffffffffffffffffffffffff16146121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee90614267565b60405180910390fd5b8060198190555050565b6122096124b0565b73ffffffffffffffffffffffffffffffffffffffff16612227611854565b73ffffffffffffffffffffffffffffffffffffffff161461227d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227490614267565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e490614167565b60405180910390fd5b6122f681613140565b50565b6123016124b0565b73ffffffffffffffffffffffffffffffffffffffff1661231f611854565b73ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90614267565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016123b0929190614080565b602060405180830381600087803b1580156123ca57600080fd5b505af11580156123de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124029190613c48565b50505050565b6124106124b0565b73ffffffffffffffffffffffffffffffffffffffff1661242e611854565b73ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b90614267565b60405180910390fd5b600460198190555060016017819055506004601f819055506001601d819055506124ae60016116a0565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f906142a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f90614187565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126769190614307565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea90614287565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a90614147565b60405180910390fd5b600081116127a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279d90614207565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561282d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612824906141c7565b60405180910390fd5b60001515601c60009054906101000a900460ff161515141561292a57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128ea5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292090614227565b60405180910390fd5b5b60001515601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156129da575060001515601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612a9e57601254821115612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b906141e7565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a9d5760115482612a87856114eb565b612a919190614462565b1115612a9c57600080fd5b5b5b6000612aa9306114eb565b9050600a548110158015612aca5750602160009054906101000a900460ff16155b8015612b245750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612b3c5750602160019054906101000a900460ff165b15612b5a57600a548110612b5957600a549050612b58816132a5565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c015750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c13576000600481905550600090505b6000808215612f0f5760011515601360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612ccb575060011515601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d02906142e7565b60405180910390fd5b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612db25750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15612e0e5760006004819055506064601f5487612dcf91906144e9565b612dd991906144b8565b91506064601d5487612deb91906144e9565b612df591906144b8565b90508082612e039190614462565b600481905550612f0e565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612eb55750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612f0d576000600481905550606460195487612ed291906144e9565b612edc91906144b8565b9150606460175487612eee91906144e9565b612ef891906144b8565b90508082612f069190614462565b6004819055505b5b5b8585612f1b9190614543565b600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808287612f6b9190614543565b612f759190614543565b600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fc39190614462565b92505081905550600081146130c457600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130239190614462565b92505081905550806023600082825461303c9190614462565b9250508190555081602260008282546130559190614462565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516130bb9190614307565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454896131219190614543565b60405161312e9190614307565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602160006101000a81548160ff0219169083151502179055506132cb60235461333b565b6132d66022546133c6565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904816040516133059190614307565b60405180910390a1600060228190555060006023819055506000602160006101000a81548160ff02191690831515021790555050565b600060028261334a91906144b8565b90506000818361335a9190614543565b9050600047905061336a8361363a565b600081476133789190614543565b9050613384838261388c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516133b7939291906143d6565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156133e3576133e261474c565b5b6040519080825280602002602001820160405280156134115781602001602082028036833780820191505090505b50905030816000815181106134295761342861471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156134cb57600080fd5b505afa1580156134df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135039190613a6e565b816001815181106135175761351661471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061357e30602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613604959493929190614322565b600060405180830381600087803b15801561361e57600080fd5b505af1158015613632573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff8111156136575761365661474c565b5b6040519080825280602002602001820160405280156136855781602001602082028036833780820191505090505b509050308160008151811061369d5761369c61471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561373f57600080fd5b505afa158015613753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137779190613a6e565b8160018151811061378b5761378a61471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137f230602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161385695949392919061437c565b600060405180830381600087803b15801561387057600080fd5b505af1158015613884573d6000803e3d6000fd5b505050505050565b6138b930602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f000000000000000000000000000000000000000000000000000000000000dead426040518863ffffffff1660e01b8152600401613940969594939291906140a9565b6060604051808303818588803b15801561395957600080fd5b505af115801561396d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139929190613cf5565b5050505050565b6000813590506139a881614b71565b92915050565b6000815190506139bd81614b71565b92915050565b6000813590506139d281614b88565b92915050565b6000813590506139e781614b9f565b92915050565b6000815190506139fc81614b9f565b92915050565b600081359050613a1181614bb6565b92915050565b600081359050613a2681614bcd565b92915050565b600081519050613a3b81614bcd565b92915050565b600060208284031215613a5757613a5661477b565b5b6000613a6584828501613999565b91505092915050565b600060208284031215613a8457613a8361477b565b5b6000613a92848285016139ae565b91505092915050565b600060208284031215613ab157613ab061477b565b5b6000613abf848285016139c3565b91505092915050565b60008060408385031215613adf57613ade61477b565b5b6000613aed858286016139c3565b9250506020613afe858286016139d8565b9150509250929050565b60008060408385031215613b1f57613b1e61477b565b5b6000613b2d85828601613999565b9250506020613b3e85828601613999565b9150509250929050565b600080600060608486031215613b6157613b6061477b565b5b6000613b6f86828701613999565b9350506020613b8086828701613999565b9250506040613b9186828701613a17565b9150509250925092565b60008060408385031215613bb257613bb161477b565b5b6000613bc085828601613999565b9250506020613bd1858286016139d8565b9150509250929050565b60008060408385031215613bf257613bf161477b565b5b6000613c0085828601613999565b9250506020613c1185828601613a17565b9150509250929050565b600060208284031215613c3157613c3061477b565b5b6000613c3f848285016139d8565b91505092915050565b600060208284031215613c5e57613c5d61477b565b5b6000613c6c848285016139ed565b91505092915050565b600080600060608486031215613c8e57613c8d61477b565b5b6000613c9c86828701613a02565b9350506020613cad868287016139c3565b9250506040613cbe86828701613a17565b9150509250925092565b600060208284031215613cde57613cdd61477b565b5b6000613cec84828501613a17565b91505092915050565b600080600060608486031215613d0e57613d0d61477b565b5b6000613d1c86828701613a2c565b9350506020613d2d86828701613a2c565b9250506040613d3e86828701613a2c565b9150509250925092565b6000613d548383613d7e565b60208301905092915050565b613d69816145e3565b82525050565b613d7881614589565b82525050565b613d8781614577565b82525050565b613d9681614577565b82525050565b6000613da78261441d565b613db18185614440565b9350613dbc8361440d565b8060005b83811015613ded578151613dd48882613d48565b9750613ddf83614433565b925050600181019050613dc0565b5085935050505092915050565b613e038161459b565b82525050565b613e12816145f5565b82525050565b6000613e2382614428565b613e2d8185614451565b9350613e3d81856020860161462b565b613e4681614780565b840191505092915050565b6000613e5e602383614451565b9150613e6982614791565b604082019050919050565b6000613e81602683614451565b9150613e8c826147e0565b604082019050919050565b6000613ea4602283614451565b9150613eaf8261482f565b604082019050919050565b6000613ec7603983614451565b9150613ed28261487e565b604082019050919050565b6000613eea602683614451565b9150613ef5826148cd565b604082019050919050565b6000613f0d602883614451565b9150613f188261491c565b604082019050919050565b6000613f30603283614451565b9150613f3b8261496b565b604082019050919050565b6000613f53601d83614451565b9150613f5e826149ba565b602082019050919050565b6000613f76602883614451565b9150613f81826149e3565b604082019050919050565b6000613f99602083614451565b9150613fa482614a32565b602082019050919050565b6000613fbc602583614451565b9150613fc782614a5b565b604082019050919050565b6000613fdf602483614451565b9150613fea82614aaa565b604082019050919050565b6000614002602c83614451565b915061400d82614af9565b604082019050919050565b6000614025601183614451565b915061403082614b48565b602082019050919050565b614044816145d9565b82525050565b600060208201905061405f6000830184613d8d565b92915050565b600060208201905061407a6000830184613d6f565b92915050565b60006040820190506140956000830185613d60565b6140a2602083018461403b565b9392505050565b600060c0820190506140be6000830189613d8d565b6140cb602083018861403b565b6140d86040830187613e09565b6140e56060830186613e09565b6140f26080830185613d8d565b6140ff60a083018461403b565b979650505050505050565b600060208201905061411f6000830184613dfa565b92915050565b6000602082019050818103600083015261413f8184613e18565b905092915050565b6000602082019050818103600083015261416081613e51565b9050919050565b6000602082019050818103600083015261418081613e74565b9050919050565b600060208201905081810360008301526141a081613e97565b9050919050565b600060208201905081810360008301526141c081613eba565b9050919050565b600060208201905081810360008301526141e081613edd565b9050919050565b6000602082019050818103600083015261420081613f00565b9050919050565b6000602082019050818103600083015261422081613f23565b9050919050565b6000602082019050818103600083015261424081613f46565b9050919050565b6000602082019050818103600083015261426081613f69565b9050919050565b6000602082019050818103600083015261428081613f8c565b9050919050565b600060208201905081810360008301526142a081613faf565b9050919050565b600060208201905081810360008301526142c081613fd2565b9050919050565b600060208201905081810360008301526142e081613ff5565b9050919050565b6000602082019050818103600083015261430081614018565b9050919050565b600060208201905061431c600083018461403b565b92915050565b600060a082019050614337600083018861403b565b6143446020830187613e09565b81810360408301526143568186613d9c565b90506143656060830185613d60565b614372608083018461403b565b9695505050505050565b600060a082019050614391600083018861403b565b61439e6020830187613e09565b81810360408301526143b08186613d9c565b90506143bf6060830185613d8d565b6143cc608083018461403b565b9695505050505050565b60006060820190506143eb600083018661403b565b6143f8602083018561403b565b614405604083018461403b565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061446d826145d9565b9150614478836145d9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144ad576144ac614690565b5b828201905092915050565b60006144c3826145d9565b91506144ce836145d9565b9250826144de576144dd6146bf565b5b828204905092915050565b60006144f4826145d9565b91506144ff836145d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561453857614537614690565b5b828202905092915050565b600061454e826145d9565b9150614559836145d9565b92508282101561456c5761456b614690565b5b828203905092915050565b6000614582826145b9565b9050919050565b6000614594826145b9565b9050919050565b60008115159050919050565b60006145b282614577565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006145ee82614607565b9050919050565b6000614600826145d9565b9050919050565b600061461282614619565b9050919050565b6000614624826145b9565b9050919050565b60005b8381101561464957808201518184015260208101905061462e565b83811115614658576000848401525b50505050565b6000600282049050600182168061467657607f821691505b6020821081141561468a576146896146ee565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f596f752063616e742063616c6c205a65726f546178206d6f7265207468616e2060008201527f6f6e636520706572206461790000000000000000000000000000000000000000602082015250565b7f4e6f20626f74732063616e207472616465000000000000000000000000000000600082015250565b614b7a81614577565b8114614b8557600080fd5b50565b614b9181614589565b8114614b9c57600080fd5b50565b614ba88161459b565b8114614bb357600080fd5b50565b614bbf816145a7565b8114614bca57600080fd5b50565b614bd6816145d9565b8114614be157600080fd5b5056fea26469706673582212204c14ead865ac20d6b220d0bd5253bc39f8cf1b9d25613c3faa44ce1b3a21743d64736f6c63430008070033

Deployed Bytecode Sourcemap

7158:15768:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11888:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21757:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11622:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20297:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11032:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8993:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13890:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12428:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9075:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18495:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11798:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22818:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9582:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20051:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9028:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13472:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13784:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18309:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10924:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12239:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22715:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11149:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6523:94;;;;;;;;;;;;;:::i;:::-;;12870:278;;;;;;;;;;;;;:::i;:::-;;20919:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22116:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10724:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21997:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5872:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13680:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11970:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21313:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13574:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7731:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13154:174;;;;;;;;;;;;;:::i;:::-;;8082:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13336:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12068:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11278:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20173:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7996:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22337:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21070:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17522:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13997:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22432:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22612:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20799:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11465:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10816:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22234:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21874:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6772:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18058:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20605:186;;;;;;;;;;;;;:::i;:::-;;11888:76;11927:13;11954:5;11947:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11888:76;:::o;21757:111::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21851:9:::1;21839;:21;;;;21757:111:::0;:::o;11622:168::-;11699:4;11719:37;11728:12;:10;:12::i;:::-;11741:7;11749:6;11719:8;:37::i;:::-;11778:4;11771:11;;11622:168;;;;:::o;20297:302::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20440:4:::1;20403:17;:34;20429:6;20403:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;20484:4;20455:17;:26;20473:7;20455:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;20535:4;20499:16;:33;20524:6;20499:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;20578:4;20550:16;:25;20567:7;20550:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20297:302:::0;;:::o;11032:106::-;11087:7;11117:12;;11110:19;;11032:106;:::o;8993:28::-;;;;;;;;;;;;;:::o;13890:101::-;13941:7;13967:16;;13960:23;;13890:101;:::o;12428:388::-;12560:4;12594:11;:19;12606:6;12594:19;;;;;;;;;;;;;;;:33;12614:12;:10;:12::i;:::-;12594:33;;;;;;;;;;;;;;;;12584:6;:43;;12576:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;12677:36;12687:6;12695:9;12706:6;12677:9;:36::i;:::-;12718:74;12727:6;12735:12;:10;:12::i;:::-;12785:6;12749:11;:19;12761:6;12749:19;;;;;;;;;;;;;;;:33;12769:12;:10;:12::i;:::-;12749:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;12718:8;:74::i;:::-;12804:4;12797:11;;12428:388;;;;;:::o;9075:81::-;;;:::o;18495:90::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18571:6:::1;18556:12;;:21;;;;;;;;;;;;;;;;;;18495:90:::0;:::o;11798:84::-;11839:7;11865:9;;;;;;;;;;;11858:16;;;;11798:84;:::o;22818:105::-;22869:7;22895:20;;22888:27;;22818:105;:::o;9582:28::-;;;;;;;;;;;;;:::o;20051:114::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20153:4:::1;20122:17;:28;20140:9;20122:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;20051:114:::0;:::o;9028:40::-;;;;;;;;;;;;;:::o;13472:96::-;13521:7;13551:9;;13544:16;;13472:96;:::o;13784:98::-;13834:7;13864:10;;13857:17;;13784:98;:::o;18309:178::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18385:18:::1;18406:21;18385:42;;18446:11;18438:29;;:41;18468:10;18438:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18374:113;18309:178:::0;:::o;10924:99::-;10975:7;11005:9;;10998:16;;10924:99;:::o;12239:175::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12335:6:::1;12315:17;:26;;;;12401:3;12383:17;;12370:12;;:30;;;;:::i;:::-;:34;;;;:::i;:::-;12352:15;:52;;;;12239:175:::0;:::o;22715:97::-;22766:7;22792:12;;22785:19;;22715:97;:::o;11149:118::-;11215:7;11241:9;:18;11251:7;11241:18;;;;;;;;;;;;;;;;11234:25;;11149:118;;;:::o;6523:94::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6588:21:::1;6606:1;6588:9;:21::i;:::-;6523:94::o:0;12870:278::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12943:15:::1;;12925;:33;12917:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13035:9;;13019:13;:25;;;;13072:9;;13056:13;:25;;;;13114:1;13102:9;:13;;;;13139:1;13127:9;:13;;;;12870:278::o:0;20919:113::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21016:8:::1;20992:21;;:32;;;;;;;;;;;;;;;;;;20919:113:::0;:::o;22116:112::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22211:9:::1;22199:10;:21;;;;22116:112:::0;:::o;10724:86::-;10765:7;10795;:5;:7::i;:::-;10788:14;;10724:86;:::o;21997:113::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22093:9:::1;22081:10;:21;;;;21997:113:::0;:::o;5872:87::-;5918:7;5945:6;;;;;;;;;;;5938:13;;5872:87;:::o;13680:98::-;13730:7;13760:10;;13753:17;;13680:98;:::o;11970:88::-;12011:13;12043:7;12036:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11970:88;:::o;21313:242::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21420:13:::1;;;;;;;;;;;21412:21;;:4;:21;;;;21404:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;21506:41;21535:4;21541:5;21506:28;:41::i;:::-;21313:242:::0;;:::o;13574:96::-;13623:7;13653:9;;13646:16;;13574:96;:::o;7731:71::-;;;;:::o;13154:174::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13217:13:::1;;13205:9;:25;;;;13254:13;;13242:9;:25;;;;13315:5;13297:15;:23;;;;:::i;:::-;13279:15;:41;;;;13154:174::o:0;8082:93::-;;;;;;;;;;;;;:::o;13336:130::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13453:5:::1;13427:10;:23;13438:11;13427:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13336:130:::0;;:::o;12068:164::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12156:6:::1;12140:13;:22;;;;12214:3;12200:13;;12187:12;;:26;;;;:::i;:::-;:30;;;;:::i;:::-;12173:11;:44;;;;12068:164:::0;:::o;11278:176::-;11358:4;11378:40;11388:12;:10;:12::i;:::-;11401:9;11411:6;11378:9;:40::i;:::-;11440:4;11433:11;;11278:176;;;;:::o;20173:116::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20276:5:::1;20246:17;:27;20264:8;20246:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;20173:116:::0;:::o;7996:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;22337:89::-;22381:7;22407:11;;22400:18;;22337:89;:::o;21070:118::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21169:10:::1;21142:16;;:38;;;;;;;;;;;;;;;;;;21070:118:::0;:::o;17522:123::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17626:4:::1;17594:17;:29;17612:10;17594:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17522:123:::0;:::o;13997:118::-;14054:4;14081:17;:26;14099:7;14081:26;;;;;;;;;;;;;;;;;;;;;;;;;14074:33;;13997:118;;;:::o;22432:174::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22518:6:::1;22503:12;:21;;;;22584:4;22571:12;;22558;;:25;;;;:::i;:::-;:30;;;;:::i;:::-;22535:20;:53;;;;22432:174:::0;:::o;22612:97::-;22663:4;22686:12;;;;;;;;;;;22679:19;;22612:97;:::o;20799:112::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20889:12:::1;20870:16;:31;;;;20799:112:::0;:::o;11465:148::-;11548:7;11578:11;:18;11590:5;11578:18;;;;;;;;;;;;;;;:27;11597:7;11578:27;;;;;;;;;;;;;;;;11571:34;;11465:148;;;;:::o;10816:99::-;10867:7;10897:9;;10890:16;;10816:99;:::o;22234:97::-;22282:7;22308:15;;22301:22;;22234:97;:::o;21874:111::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21968:9:::1;21957;:20;;;;21874:111:::0;:::o;6772:192::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6881:1:::1;6861:22;;:8;:22;;;;6853:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6937:19;6947:8;6937:9;:19::i;:::-;6772:192:::0;:::o;18058:243::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18251:12:::1;:21;;;18273:11;18286:6;18251:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18058:243:::0;;;:::o;20605:186::-;6103:12;:10;:12::i;:::-;6092:23;;:7;:5;:7::i;:::-;:23;;;6084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20672:1:::1;20660:9;:13;;;;20696:1;20684:9;:13;;;;20723:1;20710:10;:14;;;;20748:1;20735:10;:14;;;;20760:23;20778:4;20760:17;:23::i;:::-;20605:186::o:0;1832:98::-;1885:7;1912:10;1905:17;;1832:98;:::o;19683:322::-;19792:1;19775:19;;:5;:19;;;;19767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19867:1;19848:21;;:7;:21;;;;19840:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19945:6;19915:11;:18;19927:5;19915:18;;;;;;;;;;;;;;;:27;19934:7;19915:27;;;;;;;;;;;;;;;:36;;;;19977:7;19961:32;;19970:5;19961:32;;;19986:6;19961:32;;;;;;:::i;:::-;;;;;;;;19683:322;;;:::o;14123:3124::-;14237:1;14221:18;;:4;:18;;;;14213:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14308:1;14294:16;;:2;:16;;;;14286:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14378:1;14369:6;:10;14361:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14444:21;14468:9;:15;14478:4;14468:15;;;;;;;;;;;;;;;;14444:39;;14519:6;14502:13;:23;;14494:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14598:5;14582:21;;:12;;;;;;;;;;;:21;;;14579:141;;;14627:17;:21;14645:2;14627:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;14652:17;:23;14670:4;14652:23;;;;;;;;;;;;;;;;;;;;;;;;;14627:48;14619:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;14579:141;14756:5;14733:28;;:17;:21;14751:2;14733:21;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;:62;;;;;14790:5;14765:30;;:17;:23;14783:4;14765:23;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;14733:62;14730:282;;;14825:11;;14815:6;:21;;14807:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14904:13;;;;;;;;;;;14896:21;;:4;:21;;;14893:108;;;14969:15;;14959:6;14945:13;14955:2;14945:9;:13::i;:::-;:20;;;;:::i;:::-;:39;;14937:48;;;;;;14893:108;14730:282;15022:25;15050:24;15068:4;15050:9;:24::i;:::-;15022:52;;15108:20;;15088:17;:40;;:66;;;;;15138:16;;;;;;;;;;;15137:17;15088:66;:96;;;;;15171:13;;;;;;;;;;;15163:21;;:4;:21;;;;15088:96;:126;;;;;15193:21;;;;;;;;;;;15088:126;15085:352;;;15258:20;;15237:17;:41;15234:188;;15323:20;;15303:40;;15366:36;15384:17;15366;:36::i;:::-;15234:188;15085:352;15453:13;15469:4;15453:20;;15519:17;:23;15537:4;15519:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;15546:17;:21;15564:2;15546:21;;;;;;;;;;;;;;;;;;;;;;;;;15519:48;15516:159;;;15604:1;15588:13;:17;;;;15635:5;15624:16;;15516:159;15689:17;15719;15797:8;15794:981;;;15912:4;15892:24;;:10;:16;15903:4;15892:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;:46;;;;15934:4;15918:20;;:10;:14;15929:2;15918:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;15892:46;15889:120;;;15962:27;;;;;;;;;;:::i;:::-;;;;;;;;15889:120;16063:25;:29;16089:2;16063:29;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;16110:7;;;;;;;;;;;16096:22;;:2;:22;;;;16063:55;16059:681;;;16163:1;16147:13;:17;;;;16223:3;16212:10;;16203:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;16191:35;;16285:3;16274:10;;16265:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;16253:35;;16343:9;16331;:21;;;;:::i;:::-;16315:13;:37;;;;16059:681;;;16426:25;:31;16452:4;16426:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;16477:7;;;;;;;;;;;16461:24;;:4;:24;;;;16426:59;16423:317;;;16544:1;16528:13;:17;;;;16599:3;16589:9;;16580:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;16568:34;;16656:3;16646:9;;16637:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;16625:34;;16710:9;16698;:21;;;;:::i;:::-;16682:13;:37;;;;16423:317;16059:681;15794:981;16825:6;16809:13;:22;;;;:::i;:::-;16791:9;:15;16801:4;16791:15;;;;;;;;;;;;;;;:40;;;;16884:9;16872;16863:6;:18;;;;:::i;:::-;:30;;;;:::i;:::-;16846:9;:13;16856:2;16846:13;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;16924:1;16911:9;:14;16908:249;;16961:13;;16933:9;:24;16951:4;16933:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;17032:9;17019;;:22;;;;;;;:::i;:::-;;;;;;;;17069:9;17056;;:22;;;;;;;:::i;:::-;;;;;;;;17112:4;17089:44;;17098:4;17089:44;;;17119:13;;17089:44;;;;;;:::i;:::-;;;;;;;;16908:249;17191:2;17176:39;;17185:4;17176:39;;;17201:13;;17194:6;:20;;;;:::i;:::-;17176:39;;;;;;:::i;:::-;;;;;;;;14192:3055;;;;;14123:3124;;;:::o;6972:173::-;7028:16;7047:6;;;;;;;;;;;7028:25;;7073:8;7064:6;;:17;;;;;;;;;;;;;;;;;;7128:8;7097:40;;7118:8;7097:40;;;;;;;;;;;;7017:128;6972:173;:::o;21561:188::-;21678:5;21644:25;:31;21670:4;21644:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21735:5;21701:40;;21729:4;21701:40;;;;;;;;;;;;21561:188;;:::o;17253:262::-;9689:4;9670:16;;:23;;;;;;;;;;;;;;;;;;17333:25:::1;17348:9;;17333:14;:25::i;:::-;17369:30;17389:9;;17369:19;:30::i;:::-;17415:44;17445:13;17415:44;;;;;;:::i;:::-;;;;;;;;17482:1;17470:9;:13;;;;17506:1;17494:9;:13;;;;9723:5:::0;9704:16;;:24;;;;;;;;;;;;;;;;;;17253:262;:::o;18593:388::-;18655:12;18688:1;18670:15;:19;;;;:::i;:::-;18655:34;;18694:17;18732:4;18714:15;:22;;;;:::i;:::-;18694:42;;18741:22;18766:21;18741:46;;18794:22;18811:4;18794:16;:22::i;:::-;18821:18;18867:14;18842:21;:40;;;;:::i;:::-;18821:61;;18890:35;18903:9;18914:10;18890:12;:35::i;:::-;18935:41;18950:4;18955:10;18966:9;18935:41;;;;;;;;:::i;:::-;;;;;;;;18650:331;;;;18593:388;:::o;17651:399::-;17714:21;17752:1;17738:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17714:40;;17777:4;17759;17764:1;17759:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17797:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17787:4;17792:1;17787:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;17816:49;17833:4;17848:7;;;;;;;;;;;17858:6;17816:8;:49::i;:::-;17876:7;;;;;;;;;;;:58;;;17940:6;17952:1;17988:4;17998:16;;;;;;;;;;;18020:15;17876:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17703:347;17651:399;:::o;18989:397::-;19048:21;19086:1;19072:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19048:40;;19111:4;19093;19098:1;19093:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19131:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19121:4;19126:1;19121:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;19150:54;19167:4;19182:7;;;;;;;;;;;19192:11;19150:8;:54::i;:::-;19215:7;;;;;;;;;;;:58;;;19279:11;19296:1;19332:4;19350;19361:15;19215:166;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19043:343;18989:397;:::o;19398:277::-;19471:54;19488:4;19503:7;;;;;;;;;;;19513:11;19471:8;:54::i;:::-;19532:7;;;;;;;;;;;:23;;;19562:9;19586:4;19597:11;19614:1;19621;19628:11;19650:15;19532:138;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19398:277;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:137::-;655:5;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;601:137;;;;:::o;744:165::-;803:5;841:6;828:20;819:29;;857:46;897:5;857:46;:::i;:::-;744:165;;;;:::o;915:139::-;961:5;999:6;986:20;977:29;;1015:33;1042:5;1015:33;:::i;:::-;915:139;;;;:::o;1060:143::-;1117:5;1148:6;1142:13;1133:22;;1164:33;1191:5;1164:33;:::i;:::-;1060:143;;;;:::o;1209:329::-;1268:6;1317:2;1305:9;1296:7;1292:23;1288:32;1285:119;;;1323:79;;:::i;:::-;1285:119;1443:1;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1414:117;1209:329;;;;:::o;1544:351::-;1614:6;1663:2;1651:9;1642:7;1638:23;1634:32;1631:119;;;1669:79;;:::i;:::-;1631:119;1789:1;1814:64;1870:7;1861:6;1850:9;1846:22;1814:64;:::i;:::-;1804:74;;1760:128;1544:351;;;;:::o;1901:345::-;1968:6;2017:2;2005:9;1996:7;1992:23;1988:32;1985:119;;;2023:79;;:::i;:::-;1985:119;2143:1;2168:61;2221:7;2212:6;2201:9;2197:22;2168:61;:::i;:::-;2158:71;;2114:125;1901:345;;;;:::o;2252:484::-;2325:6;2333;2382:2;2370:9;2361:7;2357:23;2353:32;2350:119;;;2388:79;;:::i;:::-;2350:119;2508:1;2533:61;2586:7;2577:6;2566:9;2562:22;2533:61;:::i;:::-;2523:71;;2479:125;2643:2;2669:50;2711:7;2702:6;2691:9;2687:22;2669:50;:::i;:::-;2659:60;;2614:115;2252:484;;;;;:::o;2742:474::-;2810:6;2818;2867:2;2855:9;2846:7;2842:23;2838:32;2835:119;;;2873:79;;:::i;:::-;2835:119;2993:1;3018:53;3063:7;3054:6;3043:9;3039:22;3018:53;:::i;:::-;3008:63;;2964:117;3120:2;3146:53;3191:7;3182:6;3171:9;3167:22;3146:53;:::i;:::-;3136:63;;3091:118;2742:474;;;;;:::o;3222:619::-;3299:6;3307;3315;3364:2;3352:9;3343:7;3339:23;3335:32;3332:119;;;3370:79;;:::i;:::-;3332:119;3490:1;3515:53;3560:7;3551:6;3540:9;3536:22;3515:53;:::i;:::-;3505:63;;3461:117;3617:2;3643:53;3688:7;3679:6;3668:9;3664:22;3643:53;:::i;:::-;3633:63;;3588:118;3745:2;3771:53;3816:7;3807:6;3796:9;3792:22;3771:53;:::i;:::-;3761:63;;3716:118;3222:619;;;;;:::o;3847:468::-;3912:6;3920;3969:2;3957:9;3948:7;3944:23;3940:32;3937:119;;;3975:79;;:::i;:::-;3937:119;4095:1;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4066:117;4222:2;4248:50;4290:7;4281:6;4270:9;4266:22;4248:50;:::i;:::-;4238:60;;4193:115;3847:468;;;;;:::o;4321:474::-;4389:6;4397;4446:2;4434:9;4425:7;4421:23;4417:32;4414:119;;;4452:79;;:::i;:::-;4414:119;4572:1;4597:53;4642:7;4633:6;4622:9;4618:22;4597:53;:::i;:::-;4587:63;;4543:117;4699:2;4725:53;4770:7;4761:6;4750:9;4746:22;4725:53;:::i;:::-;4715:63;;4670:118;4321:474;;;;;:::o;4801:323::-;4857:6;4906:2;4894:9;4885:7;4881:23;4877:32;4874:119;;;4912:79;;:::i;:::-;4874:119;5032:1;5057:50;5099:7;5090:6;5079:9;5075:22;5057:50;:::i;:::-;5047:60;;5003:114;4801:323;;;;:::o;5130:345::-;5197:6;5246:2;5234:9;5225:7;5221:23;5217:32;5214:119;;;5252:79;;:::i;:::-;5214:119;5372:1;5397:61;5450:7;5441:6;5430:9;5426:22;5397:61;:::i;:::-;5387:71;;5343:125;5130:345;;;;:::o;5481:661::-;5579:6;5587;5595;5644:2;5632:9;5623:7;5619:23;5615:32;5612:119;;;5650:79;;:::i;:::-;5612:119;5770:1;5795:66;5853:7;5844:6;5833:9;5829:22;5795:66;:::i;:::-;5785:76;;5741:130;5910:2;5936:61;5989:7;5980:6;5969:9;5965:22;5936:61;:::i;:::-;5926:71;;5881:126;6046:2;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6017:118;5481:661;;;;;:::o;6148:329::-;6207:6;6256:2;6244:9;6235:7;6231:23;6227:32;6224:119;;;6262:79;;:::i;:::-;6224:119;6382:1;6407:53;6452:7;6443:6;6432:9;6428:22;6407:53;:::i;:::-;6397:63;;6353:117;6148:329;;;;:::o;6483:663::-;6571:6;6579;6587;6636:2;6624:9;6615:7;6611:23;6607:32;6604:119;;;6642:79;;:::i;:::-;6604:119;6762:1;6787:64;6843:7;6834:6;6823:9;6819:22;6787:64;:::i;:::-;6777:74;;6733:128;6900:2;6926:64;6982:7;6973:6;6962:9;6958:22;6926:64;:::i;:::-;6916:74;;6871:129;7039:2;7065:64;7121:7;7112:6;7101:9;7097:22;7065:64;:::i;:::-;7055:74;;7010:129;6483:663;;;;;:::o;7152:179::-;7221:10;7242:46;7284:3;7276:6;7242:46;:::i;:::-;7320:4;7315:3;7311:14;7297:28;;7152:179;;;;:::o;7337:147::-;7432:45;7471:5;7432:45;:::i;:::-;7427:3;7420:58;7337:147;;:::o;7490:142::-;7593:32;7619:5;7593:32;:::i;:::-;7588:3;7581:45;7490:142;;:::o;7638:108::-;7715:24;7733:5;7715:24;:::i;:::-;7710:3;7703:37;7638:108;;:::o;7752:118::-;7839:24;7857:5;7839:24;:::i;:::-;7834:3;7827:37;7752:118;;:::o;7906:732::-;8025:3;8054:54;8102:5;8054:54;:::i;:::-;8124:86;8203:6;8198:3;8124:86;:::i;:::-;8117:93;;8234:56;8284:5;8234:56;:::i;:::-;8313:7;8344:1;8329:284;8354:6;8351:1;8348:13;8329:284;;;8430:6;8424:13;8457:63;8516:3;8501:13;8457:63;:::i;:::-;8450:70;;8543:60;8596:6;8543:60;:::i;:::-;8533:70;;8389:224;8376:1;8373;8369:9;8364:14;;8329:284;;;8333:14;8629:3;8622:10;;8030:608;;;7906:732;;;;:::o;8644:109::-;8725:21;8740:5;8725:21;:::i;:::-;8720:3;8713:34;8644:109;;:::o;8759:147::-;8854:45;8893:5;8854:45;:::i;:::-;8849:3;8842:58;8759:147;;:::o;8912:364::-;9000:3;9028:39;9061:5;9028:39;:::i;:::-;9083:71;9147:6;9142:3;9083:71;:::i;:::-;9076:78;;9163:52;9208:6;9203:3;9196:4;9189:5;9185:16;9163:52;:::i;:::-;9240:29;9262:6;9240:29;:::i;:::-;9235:3;9231:39;9224:46;;9004:272;8912:364;;;;:::o;9282:366::-;9424:3;9445:67;9509:2;9504:3;9445:67;:::i;:::-;9438:74;;9521:93;9610:3;9521:93;:::i;:::-;9639:2;9634:3;9630:12;9623:19;;9282:366;;;:::o;9654:::-;9796:3;9817:67;9881:2;9876:3;9817:67;:::i;:::-;9810:74;;9893:93;9982:3;9893:93;:::i;:::-;10011:2;10006:3;10002:12;9995:19;;9654:366;;;:::o;10026:::-;10168:3;10189:67;10253:2;10248:3;10189:67;:::i;:::-;10182:74;;10265:93;10354:3;10265:93;:::i;:::-;10383:2;10378:3;10374:12;10367:19;;10026:366;;;:::o;10398:::-;10540:3;10561:67;10625:2;10620:3;10561:67;:::i;:::-;10554:74;;10637:93;10726:3;10637:93;:::i;:::-;10755:2;10750:3;10746:12;10739:19;;10398:366;;;:::o;10770:::-;10912:3;10933:67;10997:2;10992:3;10933:67;:::i;:::-;10926:74;;11009:93;11098:3;11009:93;:::i;:::-;11127:2;11122:3;11118:12;11111:19;;10770:366;;;:::o;11142:::-;11284:3;11305:67;11369:2;11364:3;11305:67;:::i;:::-;11298:74;;11381:93;11470:3;11381:93;:::i;:::-;11499:2;11494:3;11490:12;11483:19;;11142:366;;;:::o;11514:::-;11656:3;11677:67;11741:2;11736:3;11677:67;:::i;:::-;11670:74;;11753:93;11842:3;11753:93;:::i;:::-;11871:2;11866:3;11862:12;11855:19;;11514:366;;;:::o;11886:::-;12028:3;12049:67;12113:2;12108:3;12049:67;:::i;:::-;12042:74;;12125:93;12214:3;12125:93;:::i;:::-;12243:2;12238:3;12234:12;12227:19;;11886:366;;;:::o;12258:::-;12400:3;12421:67;12485:2;12480:3;12421:67;:::i;:::-;12414:74;;12497:93;12586:3;12497:93;:::i;:::-;12615:2;12610:3;12606:12;12599:19;;12258:366;;;:::o;12630:::-;12772:3;12793:67;12857:2;12852:3;12793:67;:::i;:::-;12786:74;;12869:93;12958:3;12869:93;:::i;:::-;12987:2;12982:3;12978:12;12971:19;;12630:366;;;:::o;13002:::-;13144:3;13165:67;13229:2;13224:3;13165:67;:::i;:::-;13158:74;;13241:93;13330:3;13241:93;:::i;:::-;13359:2;13354:3;13350:12;13343:19;;13002:366;;;:::o;13374:::-;13516:3;13537:67;13601:2;13596:3;13537:67;:::i;:::-;13530:74;;13613:93;13702:3;13613:93;:::i;:::-;13731:2;13726:3;13722:12;13715:19;;13374:366;;;:::o;13746:::-;13888:3;13909:67;13973:2;13968:3;13909:67;:::i;:::-;13902:74;;13985:93;14074:3;13985:93;:::i;:::-;14103:2;14098:3;14094:12;14087:19;;13746:366;;;:::o;14118:::-;14260:3;14281:67;14345:2;14340:3;14281:67;:::i;:::-;14274:74;;14357:93;14446:3;14357:93;:::i;:::-;14475:2;14470:3;14466:12;14459:19;;14118:366;;;:::o;14490:118::-;14577:24;14595:5;14577:24;:::i;:::-;14572:3;14565:37;14490:118;;:::o;14614:222::-;14707:4;14745:2;14734:9;14730:18;14722:26;;14758:71;14826:1;14815:9;14811:17;14802:6;14758:71;:::i;:::-;14614:222;;;;:::o;14842:254::-;14951:4;14989:2;14978:9;14974:18;14966:26;;15002:87;15086:1;15075:9;15071:17;15062:6;15002:87;:::i;:::-;14842:254;;;;:::o;15102:348::-;15231:4;15269:2;15258:9;15254:18;15246:26;;15282:79;15358:1;15347:9;15343:17;15334:6;15282:79;:::i;:::-;15371:72;15439:2;15428:9;15424:18;15415:6;15371:72;:::i;:::-;15102:348;;;;;:::o;15456:807::-;15705:4;15743:3;15732:9;15728:19;15720:27;;15757:71;15825:1;15814:9;15810:17;15801:6;15757:71;:::i;:::-;15838:72;15906:2;15895:9;15891:18;15882:6;15838:72;:::i;:::-;15920:80;15996:2;15985:9;15981:18;15972:6;15920:80;:::i;:::-;16010;16086:2;16075:9;16071:18;16062:6;16010:80;:::i;:::-;16100:73;16168:3;16157:9;16153:19;16144:6;16100:73;:::i;:::-;16183;16251:3;16240:9;16236:19;16227:6;16183:73;:::i;:::-;15456:807;;;;;;;;;:::o;16269:210::-;16356:4;16394:2;16383:9;16379:18;16371:26;;16407:65;16469:1;16458:9;16454:17;16445:6;16407:65;:::i;:::-;16269:210;;;;:::o;16485:313::-;16598:4;16636:2;16625:9;16621:18;16613:26;;16685:9;16679:4;16675:20;16671:1;16660:9;16656:17;16649:47;16713:78;16786:4;16777:6;16713:78;:::i;:::-;16705:86;;16485:313;;;;:::o;16804:419::-;16970:4;17008:2;16997:9;16993:18;16985:26;;17057:9;17051:4;17047:20;17043:1;17032:9;17028:17;17021:47;17085:131;17211:4;17085:131;:::i;:::-;17077:139;;16804:419;;;:::o;17229:::-;17395:4;17433:2;17422:9;17418:18;17410:26;;17482:9;17476:4;17472:20;17468:1;17457:9;17453:17;17446:47;17510:131;17636:4;17510:131;:::i;:::-;17502:139;;17229:419;;;:::o;17654:::-;17820:4;17858:2;17847:9;17843:18;17835:26;;17907:9;17901:4;17897:20;17893:1;17882:9;17878:17;17871:47;17935:131;18061:4;17935:131;:::i;:::-;17927:139;;17654:419;;;:::o;18079:::-;18245:4;18283:2;18272:9;18268:18;18260:26;;18332:9;18326:4;18322:20;18318:1;18307:9;18303:17;18296:47;18360:131;18486:4;18360:131;:::i;:::-;18352:139;;18079:419;;;:::o;18504:::-;18670:4;18708:2;18697:9;18693:18;18685:26;;18757:9;18751:4;18747:20;18743:1;18732:9;18728:17;18721:47;18785:131;18911:4;18785:131;:::i;:::-;18777:139;;18504:419;;;:::o;18929:::-;19095:4;19133:2;19122:9;19118:18;19110:26;;19182:9;19176:4;19172:20;19168:1;19157:9;19153:17;19146:47;19210:131;19336:4;19210:131;:::i;:::-;19202:139;;18929:419;;;:::o;19354:::-;19520:4;19558:2;19547:9;19543:18;19535:26;;19607:9;19601:4;19597:20;19593:1;19582:9;19578:17;19571:47;19635:131;19761:4;19635:131;:::i;:::-;19627:139;;19354:419;;;:::o;19779:::-;19945:4;19983:2;19972:9;19968:18;19960:26;;20032:9;20026:4;20022:20;20018:1;20007:9;20003:17;19996:47;20060:131;20186:4;20060:131;:::i;:::-;20052:139;;19779:419;;;:::o;20204:::-;20370:4;20408:2;20397:9;20393:18;20385:26;;20457:9;20451:4;20447:20;20443:1;20432:9;20428:17;20421:47;20485:131;20611:4;20485:131;:::i;:::-;20477:139;;20204:419;;;:::o;20629:::-;20795:4;20833:2;20822:9;20818:18;20810:26;;20882:9;20876:4;20872:20;20868:1;20857:9;20853:17;20846:47;20910:131;21036:4;20910:131;:::i;:::-;20902:139;;20629:419;;;:::o;21054:::-;21220:4;21258:2;21247:9;21243:18;21235:26;;21307:9;21301:4;21297:20;21293:1;21282:9;21278:17;21271:47;21335:131;21461:4;21335:131;:::i;:::-;21327:139;;21054:419;;;:::o;21479:::-;21645:4;21683:2;21672:9;21668:18;21660:26;;21732:9;21726:4;21722:20;21718:1;21707:9;21703:17;21696:47;21760:131;21886:4;21760:131;:::i;:::-;21752:139;;21479:419;;;:::o;21904:::-;22070:4;22108:2;22097:9;22093:18;22085:26;;22157:9;22151:4;22147:20;22143:1;22132:9;22128:17;22121:47;22185:131;22311:4;22185:131;:::i;:::-;22177:139;;21904:419;;;:::o;22329:::-;22495:4;22533:2;22522:9;22518:18;22510:26;;22582:9;22576:4;22572:20;22568:1;22557:9;22553:17;22546:47;22610:131;22736:4;22610:131;:::i;:::-;22602:139;;22329:419;;;:::o;22754:222::-;22847:4;22885:2;22874:9;22870:18;22862:26;;22898:71;22966:1;22955:9;22951:17;22942:6;22898:71;:::i;:::-;22754:222;;;;:::o;22982:847::-;23253:4;23291:3;23280:9;23276:19;23268:27;;23305:71;23373:1;23362:9;23358:17;23349:6;23305:71;:::i;:::-;23386:80;23462:2;23451:9;23447:18;23438:6;23386:80;:::i;:::-;23513:9;23507:4;23503:20;23498:2;23487:9;23483:18;23476:48;23541:108;23644:4;23635:6;23541:108;:::i;:::-;23533:116;;23659:80;23735:2;23724:9;23720:18;23711:6;23659:80;:::i;:::-;23749:73;23817:3;23806:9;23802:19;23793:6;23749:73;:::i;:::-;22982:847;;;;;;;;:::o;23835:831::-;24098:4;24136:3;24125:9;24121:19;24113:27;;24150:71;24218:1;24207:9;24203:17;24194:6;24150:71;:::i;:::-;24231:80;24307:2;24296:9;24292:18;24283:6;24231:80;:::i;:::-;24358:9;24352:4;24348:20;24343:2;24332:9;24328:18;24321:48;24386:108;24489:4;24480:6;24386:108;:::i;:::-;24378:116;;24504:72;24572:2;24561:9;24557:18;24548:6;24504:72;:::i;:::-;24586:73;24654:3;24643:9;24639:19;24630:6;24586:73;:::i;:::-;23835:831;;;;;;;;:::o;24672:442::-;24821:4;24859:2;24848:9;24844:18;24836:26;;24872:71;24940:1;24929:9;24925:17;24916:6;24872:71;:::i;:::-;24953:72;25021:2;25010:9;25006:18;24997:6;24953:72;:::i;:::-;25035;25103:2;25092:9;25088:18;25079:6;25035:72;:::i;:::-;24672:442;;;;;;:::o;25201:132::-;25268:4;25291:3;25283:11;;25321:4;25316:3;25312:14;25304:22;;25201:132;;;:::o;25339:114::-;25406:6;25440:5;25434:12;25424:22;;25339:114;;;:::o;25459:99::-;25511:6;25545:5;25539:12;25529:22;;25459:99;;;:::o;25564:113::-;25634:4;25666;25661:3;25657:14;25649:22;;25564:113;;;:::o;25683:184::-;25782:11;25816:6;25811:3;25804:19;25856:4;25851:3;25847:14;25832:29;;25683:184;;;;:::o;25873:169::-;25957:11;25991:6;25986:3;25979:19;26031:4;26026:3;26022:14;26007:29;;25873:169;;;;:::o;26048:305::-;26088:3;26107:20;26125:1;26107:20;:::i;:::-;26102:25;;26141:20;26159:1;26141:20;:::i;:::-;26136:25;;26295:1;26227:66;26223:74;26220:1;26217:81;26214:107;;;26301:18;;:::i;:::-;26214:107;26345:1;26342;26338:9;26331:16;;26048:305;;;;:::o;26359:185::-;26399:1;26416:20;26434:1;26416:20;:::i;:::-;26411:25;;26450:20;26468:1;26450:20;:::i;:::-;26445:25;;26489:1;26479:35;;26494:18;;:::i;:::-;26479:35;26536:1;26533;26529:9;26524:14;;26359:185;;;;:::o;26550:348::-;26590:7;26613:20;26631:1;26613:20;:::i;:::-;26608:25;;26647:20;26665:1;26647:20;:::i;:::-;26642:25;;26835:1;26767:66;26763:74;26760:1;26757:81;26752:1;26745:9;26738:17;26734:105;26731:131;;;26842:18;;:::i;:::-;26731:131;26890:1;26887;26883:9;26872:20;;26550:348;;;;:::o;26904:191::-;26944:4;26964:20;26982:1;26964:20;:::i;:::-;26959:25;;26998:20;27016:1;26998:20;:::i;:::-;26993:25;;27037:1;27034;27031:8;27028:34;;;27042:18;;:::i;:::-;27028:34;27087:1;27084;27080:9;27072:17;;26904:191;;;;:::o;27101:96::-;27138:7;27167:24;27185:5;27167:24;:::i;:::-;27156:35;;27101:96;;;:::o;27203:104::-;27248:7;27277:24;27295:5;27277:24;:::i;:::-;27266:35;;27203:104;;;:::o;27313:90::-;27347:7;27390:5;27383:13;27376:21;27365:32;;27313:90;;;:::o;27409:109::-;27459:7;27488:24;27506:5;27488:24;:::i;:::-;27477:35;;27409:109;;;:::o;27524:126::-;27561:7;27601:42;27594:5;27590:54;27579:65;;27524:126;;;:::o;27656:77::-;27693:7;27722:5;27711:16;;27656:77;;;:::o;27739:134::-;27797:9;27830:37;27861:5;27830:37;:::i;:::-;27817:50;;27739:134;;;:::o;27879:121::-;27937:9;27970:24;27988:5;27970:24;:::i;:::-;27957:37;;27879:121;;;:::o;28006:126::-;28056:9;28089:37;28120:5;28089:37;:::i;:::-;28076:50;;28006:126;;;:::o;28138:113::-;28188:9;28221:24;28239:5;28221:24;:::i;:::-;28208:37;;28138:113;;;:::o;28257:307::-;28325:1;28335:113;28349:6;28346:1;28343:13;28335:113;;;28434:1;28429:3;28425:11;28419:18;28415:1;28410:3;28406:11;28399:39;28371:2;28368:1;28364:10;28359:15;;28335:113;;;28466:6;28463:1;28460:13;28457:101;;;28546:1;28537:6;28532:3;28528:16;28521:27;28457:101;28306:258;28257:307;;;:::o;28570:320::-;28614:6;28651:1;28645:4;28641:12;28631:22;;28698:1;28692:4;28688:12;28719:18;28709:81;;28775:4;28767:6;28763:17;28753:27;;28709:81;28837:2;28829:6;28826:14;28806:18;28803:38;28800:84;;;28856:18;;:::i;:::-;28800:84;28621:269;28570:320;;;:::o;28896:180::-;28944:77;28941:1;28934:88;29041:4;29038:1;29031:15;29065:4;29062:1;29055:15;29082:180;29130:77;29127:1;29120:88;29227:4;29224:1;29217:15;29251:4;29248:1;29241:15;29268:180;29316:77;29313:1;29306:88;29413:4;29410:1;29403:15;29437:4;29434:1;29427:15;29454:180;29502:77;29499:1;29492:88;29599:4;29596:1;29589:15;29623:4;29620:1;29613:15;29640:180;29688:77;29685:1;29678:88;29785:4;29782:1;29775:15;29809:4;29806:1;29799:15;29949:117;30058:1;30055;30048:12;30072:102;30113:6;30164:2;30160:7;30155:2;30148:5;30144:14;30140:28;30130:38;;30072:102;;;:::o;30180:222::-;30320:34;30316:1;30308:6;30304:14;30297:58;30389:5;30384:2;30376:6;30372:15;30365:30;30180:222;:::o;30408:225::-;30548:34;30544:1;30536:6;30532:14;30525:58;30617:8;30612:2;30604:6;30600:15;30593:33;30408:225;:::o;30639:221::-;30779:34;30775:1;30767:6;30763:14;30756:58;30848:4;30843:2;30835:6;30831:15;30824:29;30639:221;:::o;30866:244::-;31006:34;31002:1;30994:6;30990:14;30983:58;31075:27;31070:2;31062:6;31058:15;31051:52;30866:244;:::o;31116:225::-;31256:34;31252:1;31244:6;31240:14;31233:58;31325:8;31320:2;31312:6;31308:15;31301:33;31116:225;:::o;31347:227::-;31487:34;31483:1;31475:6;31471:14;31464:58;31556:10;31551:2;31543:6;31539:15;31532:35;31347:227;:::o;31580:237::-;31720:34;31716:1;31708:6;31704:14;31697:58;31789:20;31784:2;31776:6;31772:15;31765:45;31580:237;:::o;31823:179::-;31963:31;31959:1;31951:6;31947:14;31940:55;31823:179;:::o;32008:227::-;32148:34;32144:1;32136:6;32132:14;32125:58;32217:10;32212:2;32204:6;32200:15;32193:35;32008:227;:::o;32241:182::-;32381:34;32377:1;32369:6;32365:14;32358:58;32241:182;:::o;32429:224::-;32569:34;32565:1;32557:6;32553:14;32546:58;32638:7;32633:2;32625:6;32621:15;32614:32;32429:224;:::o;32659:223::-;32799:34;32795:1;32787:6;32783:14;32776:58;32868:6;32863:2;32855:6;32851:15;32844:31;32659:223;:::o;32888:231::-;33028:34;33024:1;33016:6;33012:14;33005:58;33097:14;33092:2;33084:6;33080:15;33073:39;32888:231;:::o;33125:167::-;33265:19;33261:1;33253:6;33249:14;33242:43;33125:167;:::o;33298:122::-;33371:24;33389:5;33371:24;:::i;:::-;33364:5;33361:35;33351:63;;33410:1;33407;33400:12;33351:63;33298:122;:::o;33426:138::-;33507:32;33533:5;33507:32;:::i;:::-;33500:5;33497:43;33487:71;;33554:1;33551;33544:12;33487:71;33426:138;:::o;33570:116::-;33640:21;33655:5;33640:21;:::i;:::-;33633:5;33630:32;33620:60;;33676:1;33673;33666:12;33620:60;33570:116;:::o;33692:148::-;33778:37;33809:5;33778:37;:::i;:::-;33771:5;33768:48;33758:76;;33830:1;33827;33820:12;33758:76;33692:148;:::o;33846:122::-;33919:24;33937:5;33919:24;:::i;:::-;33912:5;33909:35;33899:63;;33958:1;33955;33948:12;33899:63;33846:122;:::o

Swarm Source

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