ETH Price: $3,238.89 (+1.37%)
 

Overview

Max Total Supply

1,000,000,000 FH

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000002 FH

Value
$0.00
0xD10b3FD68b5069200F7C9888A566B2815E516B88
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:
foreverhands

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-27
*/

/**

FOREVERHANDS
A project simply built for the investors 
"Community" so the best thing to do
for your BAG and community is HOLD!

Tokenomic :  
1% for Liquidity 
1% for Marketing 

Official Telegram : https://t.me/ForeverHands
Official Website : https://www.foreverhands.vip
Official Twitter : http://www.twitter.com/ForeverHands1

*/

// SPDX-License-Identifier: Unlicensed


pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

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

    function initialize(address, address) external;
}

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

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

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

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

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

contract foreverhands is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "FOREVER HANDS";
    string private _symbol = "FH";
    uint8 private _decimals = 9;

    address payable public marketingWalletAddress = payable(0xe5bf79d4910cCA5C6631bE5790ce7EEE7980B298); 
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public _liquidityFee = 1;
    uint256 public _marketingFee = 1;
    uint256 public _totalTaxIfBuying = 1;
    uint256 public _totalTaxIfSelling = 2;

    uint256 private _totalSupply = 1000000000 * 10**9;
    uint256 public _maxTxAmount = 1000000000 * 10**9; 
    uint256 public _walletMax =  1000000000 * 10**9; 
    uint256 private minimumTokensBeforeSwap = 100; 

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

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

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

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

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _totalTaxIfBuying = _liquidityFee.add(0);
        _totalTaxIfSelling = _totalTaxIfBuying.add(_marketingFee);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapV2Pair)] = true;
        
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[0x000000000000000000000000000000000000dEaD] = true;
        
        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

    function setTaxes(uint256 newLiquidityTax, uint256 newMarketingTax) external onlyOwner() {
        _liquidityFee = newLiquidityTax;
        _marketingFee = newMarketingTax;
        

        _totalTaxIfBuying = _liquidityFee.add(0);
        _totalTaxIfSelling = _totalTaxIfBuying.add(_marketingFee);
    }

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

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

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

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

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

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

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

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

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

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

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

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

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

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

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

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

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

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(sender != owner() && recipient != owner()) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && sender != uniswapV2Pair && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

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

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

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

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

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

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
       
        uint256 tokensForLP = tAmount.div(_totalTaxIfBuying).mul(_liquidityFee).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

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

        uint256 totalETHFee = _totalTaxIfBuying.sub(_liquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountReceived.mul(_liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity);

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

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

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

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

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = recipient == uniswapV2Pair ? amount.mul(_totalTaxIfSelling).div(100) 
                                : amount.mul(_totalTaxIfBuying).div(100);

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

        return amount.sub(feeAmount);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600d81526020017f464f52455645522048414e44530000000000000000000000000000000000000081525060039080519060200190620000519291906200096b565b506040518060400160405280600281526020017f4648000000000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f9291906200096b565b506009600560006101000a81548160ff021916908360ff16021790555073e5bf79d4910cca5c6631be5790ce7eee7980b298600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001600a556001600b556001600c556002600d55670de0b6b3a7640000600e55670de0b6b3a7640000600f55670de0b6b3a764000060105560646011556001601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550348015620001e457600080fd5b506000620001f7620008d760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002f557600080fd5b505afa1580156200030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000330919062000a32565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039357600080fd5b505afa158015620003a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ce919062000a32565b6040518363ffffffff1660e01b8152600401620003ed92919062000aa7565b602060405180830381600087803b1580156200040857600080fd5b505af11580156200041d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000443919062000a32565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e54600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860006200057f620008df60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006456000600a546200090860201b62001f911790919060201c565b600c8190555062000669600b54600c546200090860201b62001f911790919060201c565b600d8190555060016009600062000685620008df60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016009600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e546006600062000819620008d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000867620008d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e54604051620008c8919062000af6565b60405180910390a35062000c96565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000919919062000b24565b90508381101562000961576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009589062000ad4565b60405180910390fd5b8091505092915050565b828054620009799062000bbf565b90600052602060002090601f0160209004810192826200099d5760008555620009e9565b82601f10620009b857805160ff1916838001178555620009e9565b82800160010185558215620009e9579182015b82811115620009e8578251825591602001919060010190620009cb565b5b509050620009f89190620009fc565b5090565b5b8082111562000a17576000816000905550600101620009fd565b5090565b60008151905062000a2c8162000c7c565b92915050565b60006020828403121562000a4557600080fd5b600062000a558482850162000a1b565b91505092915050565b62000a698162000b81565b82525050565b600062000a7e601b8362000b13565b915062000a8b8262000c53565b602082019050919050565b62000aa18162000bb5565b82525050565b600060408201905062000abe600083018562000a5e565b62000acd602083018462000a5e565b9392505050565b6000602082019050818103600083015262000aef8162000a6f565b9050919050565b600060208201905062000b0d600083018462000a96565b92915050565b600082825260208201905092915050565b600062000b318262000bb5565b915062000b3e8362000bb5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b765762000b7562000bf5565b5b828201905092915050565b600062000b8e8262000b95565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000bd857607f821691505b6020821081141562000bef5762000bee62000c24565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b62000c878162000b81565b811462000c9357600080fd5b50565b60805160601c61419d62000cbc60003960008181610d5d0152610d89015261419d6000f3fe6080604052600436106102555760003560e01c80637d1db4a511610139578063c647b20e116100b6578063ec28438a1161007a578063ec28438a146108ff578063ef422a1814610928578063f0cd1dac14610951578063f1d5f5171461097c578063f2fde38b146109a5578063f872858a146109ce5761025c565b8063c647b20e14610806578063c867d60b1461082f578063d158272d1461086c578063da00097d14610897578063dd62ed3e146108c25761025c565b8063a073d37f116100fd578063a073d37f1461070f578063a457c2d71461073a578063a5d69d1f14610777578063a9059cbb146107a0578063c49b9a80146107dd5761025c565b80637d1db4a514610638578063807c2d9c1461066357806382eefb431461068e5780638da5cb5b146106b957806395d89b41146106e45761025c565b8063313ce567116101d25780634cb80fd5116101965780634cb80fd5146105165780635342acb41461053f5780635881f3ef1461057c5780636bc87c3a146105b957806370a08231146105e4578063715018a6146106215761025c565b8063313ce5671461042f578063395093511461045a5780633b97084a1461049757806349bd5a5e146104c05780634a74bb02146104eb5761025c565b806322976e0d1161021957806322976e0d1461034857806323b872dd146103735780632563ae83146103b057806327c8f835146103d95780632b112e49146104045761025c565b806306fdde0314610261578063095ea7b31461028c5780631694505e146102c957806318160ddd146102f45780632198cf6c1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109f9565b60405161028391906138df565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061344b565b610a8b565b6040516102c091906138a9565b60405180910390f35b3480156102d557600080fd5b506102de610aa9565b6040516102eb91906138c4565b60405180910390f35b34801561030057600080fd5b50610309610acf565b6040516103169190613a41565b60405180910390f35b34801561032b57600080fd5b506103466004803603810190610341919061340f565b610ad9565b005b34801561035457600080fd5b5061035d610bc9565b60405161036a9190613a41565b60405180910390f35b34801561037f57600080fd5b5061039a600480360381019061039591906133c0565b610bcf565b6040516103a791906138a9565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190613487565b610ca9565b005b3480156103e557600080fd5b506103ee610d5b565b6040516103fb91906137e9565b60405180910390f35b34801561041057600080fd5b50610419610d7f565b6040516104269190613a41565b60405180910390f35b34801561043b57600080fd5b50610444610dc3565b6040516104519190613ae6565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c919061344b565b610dda565b60405161048e91906138a9565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b991906134b0565b610e8d565b005b3480156104cc57600080fd5b506104d5610f2c565b6040516104e291906137e9565b60405180910390f35b3480156104f757600080fd5b50610500610f52565b60405161050d91906138a9565b60405180910390f35b34801561052257600080fd5b5061053d60048036038101906105389190613332565b610f65565b005b34801561054b57600080fd5b5061056660048036038101906105619190613332565b61103e565b60405161057391906138a9565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190613332565b61105e565b6040516105b091906137e9565b60405180910390f35b3480156105c557600080fd5b506105ce6114c8565b6040516105db9190613a41565b60405180910390f35b3480156105f057600080fd5b5061060b60048036038101906106069190613332565b6114ce565b6040516106189190613a41565b60405180910390f35b34801561062d57600080fd5b50610636611517565b005b34801561064457600080fd5b5061064d61166a565b60405161065a9190613a41565b60405180910390f35b34801561066f57600080fd5b50610678611670565b6040516106859190613a41565b60405180910390f35b34801561069a57600080fd5b506106a3611676565b6040516106b09190613a41565b60405180910390f35b3480156106c557600080fd5b506106ce61167c565b6040516106db91906137e9565b60405180910390f35b3480156106f057600080fd5b506106f96116a5565b60405161070691906138df565b60405180910390f35b34801561071b57600080fd5b50610724611737565b6040516107319190613a41565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c919061344b565b611741565b60405161076e91906138a9565b60405180910390f35b34801561078357600080fd5b5061079e60048036038101906107999190613487565b61180e565b005b3480156107ac57600080fd5b506107c760048036038101906107c2919061344b565b6118c0565b6040516107d491906138a9565b60405180910390f35b3480156107e957600080fd5b5061080460048036038101906107ff9190613487565b6118df565b005b34801561081257600080fd5b5061082d600480360381019061082891906134d9565b6119c8565b005b34801561083b57600080fd5b5061085660048036038101906108519190613332565b611aa8565b60405161086391906138a9565b60405180910390f35b34801561087857600080fd5b50610881611ac8565b60405161088e9190613804565b60405180910390f35b3480156108a357600080fd5b506108ac611aee565b6040516108b991906138a9565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e49190613384565b611b01565b6040516108f69190613a41565b60405180910390f35b34801561090b57600080fd5b50610926600480360381019061092191906134b0565b611b88565b005b34801561093457600080fd5b5061094f600480360381019061094a919061340f565b611c27565b005b34801561095d57600080fd5b50610966611d17565b6040516109739190613a41565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e91906134b0565b611d1d565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190613332565b611dbc565b005b3480156109da57600080fd5b506109e3611f7e565b6040516109f091906138a9565b60405180910390f35b606060038054610a0890613d3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3490613d3b565b8015610a815780601f10610a5657610100808354040283529160200191610a81565b820191906000526020600020905b815481529060010190602001808311610a6457829003601f168201915b5050505050905090565b6000610a9f610a98611fef565b8484611ff7565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e54905090565b610ae1611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b65906139c1565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b5481565b6000610bdc8484846121c2565b50610c9e84610be9611fef565b610c998560405180606001604052806028815260200161411b60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c4f611fef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c09092919063ffffffff16565b611ff7565b600190509392505050565b610cb1611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d35906139c1565b60405180910390fd5b80601360176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610dbe610dad7f00000000000000000000000000000000000000000000000000000000000000006114ce565b600e5461282490919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b6000610e83610de7611fef565b84610e7e8560076000610df8611fef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9190919063ffffffff16565b611ff7565b6001905092915050565b610e95611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f19906139c1565b60405180910390fd5b8060118190555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360159054906101000a900460ff1681565b610f6d611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff1906139c1565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611068611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec906139c1565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561114057600080fd5b505afa158015611154573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611178919061335b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111da57600080fd5b505afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611212919061335b565b6040518363ffffffff1660e01b815260040161122f92919061381f565b60206040518083038186803b15801561124757600080fd5b505afa15801561125b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127f919061335b565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611440578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156112fc57600080fd5b505afa158015611310573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611334919061335b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561139657600080fd5b505afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce919061335b565b6040518363ffffffff1660e01b81526004016113eb92919061381f565b602060405180830381600087803b15801561140557600080fd5b505af1158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d919061335b565b91505b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b600a5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61151f611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a3906139c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60105481565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546116b490613d3b565b80601f01602080910402602001604051908101604052809291908181526020018280546116e090613d3b565b801561172d5780601f106117025761010080835404028352916020019161172d565b820191906000526020600020905b81548152906001019060200180831161171057829003601f168201915b5050505050905090565b6000601154905090565b600061180461174e611fef565b846117ff856040518060600160405280602581526020016141436025913960076000611778611fef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c09092919063ffffffff16565b611ff7565b6001905092915050565b611816611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a906139c1565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b60006118d46118cd611fef565b84846121c2565b506001905092915050565b6118e7611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b906139c1565b60405180910390fd5b80601360156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516119bd91906138a9565b60405180910390a150565b6119d0611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a54906139c1565b60405180910390fd5b81600a8190555080600b81905550611a816000600a54611f9190919063ffffffff16565b600c81905550611a9e600b54600c54611f9190919063ffffffff16565b600d819055505050565b60096020528060005260406000206000915054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360169054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b90611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c14906139c1565b60405180910390fd5b80600f8190555050565b611c2f611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb3906139c1565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c5481565b611d25611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da9906139c1565b60405180910390fd5b8060108190555050565b611dc4611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e48906139c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb890613921565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360179054906101000a900460ff1681565b6000808284611fa09190613b56565b905083811015611fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdc90613961565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e90613a21565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce90613941565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121b59190613a41565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a90613a01565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229a90613901565b60405180910390fd5b600082116122e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dd906139e1565b60405180910390fd5b601360149054906101000a900460ff161561230d5761230684848461286e565b90506127b9565b61231561167c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612383575061235361167c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123ce57600f548211156123cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c490613981565b60405180910390fd5b5b60006123d9306114ce565b9050600060115482101590508080156123ff5750601360149054906101000a900460ff16155b80156124595750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156124715750601360159054906101000a900460ff165b1561249b57601360169054906101000a900460ff16156124915760115491505b61249a82612a41565b5b612524846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c09092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061260a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61261e57612619878787612b9e565b612620565b845b9050601360179054906101000a900460ff1680156126885750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126b7576010546126ab8261269d896114ce565b611f9190919063ffffffff16565b11156126b657600080fd5b5b61270981600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127a99190613a41565b60405180910390a3600193505050505b9392505050565b6000838311158290612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff91906138df565b60405180910390fd5b50600083856128179190613c37565b9050809150509392505050565b600061286683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127c0565b905092915050565b60006128f9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c09092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061298e82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a2e9190613a41565b60405180910390a3600190509392505050565b6001601360146101000a81548160ff0219169083151502179055506000612a9a6002612a8c600a54612a7e600c5487612d6590919063ffffffff16565b612daf90919063ffffffff16565b612d6590919063ffffffff16565b90506000612ab1828461282490919063ffffffff16565b9050612abc81612e2a565b60004790506000612aed612adc6002600a54612d6590919063ffffffff16565b600c5461282490919063ffffffff16565b90506000612b2b6002612b1d84612b0f600a5488612daf90919063ffffffff16565b612d6590919063ffffffff16565b612d6590919063ffffffff16565b90506000612b42828561282490919063ffffffff16565b9050612b70600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613127565b612b7a8683613172565b5050505050506000601360146101000a81548160ff02191690831515021790555050565b600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612c2357612c1e6064612c10600c5486612daf90919063ffffffff16565b612d6590919063ffffffff16565b612c4c565b612c4b6064612c3d600d5486612daf90919063ffffffff16565b612d6590919063ffffffff16565b5b9050612ca081600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9190919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d409190613a41565b60405180910390a3612d5b818461282490919063ffffffff16565b9150509392505050565b6000612da783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613266565b905092915050565b600080831415612dc25760009050612e24565b60008284612dd09190613bdd565b9050828482612ddf9190613bac565b14612e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e16906139a1565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff811115612e6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612e9b5781602001602082028036833780820191505090505b5090503081600081518110612ed9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612f7b57600080fd5b505afa158015612f8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb3919061335b565b81600181518110612fed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061305430601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ff7565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130b8959493929190613a8c565b600060405180830381600087803b1580156130d257600080fd5b505af11580156130e6573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161311b929190613a5c565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561316d573d6000803e3d6000fd5b505050565b61319f30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ff7565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806131eb61167c565b426040518863ffffffff1660e01b815260040161320d96959493929190613848565b6060604051808303818588803b15801561322657600080fd5b505af115801561323a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061325f9190613515565b5050505050565b600080831182906132ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a491906138df565b60405180910390fd5b50600083856132bc9190613bac565b9050809150509392505050565b6000813590506132d8816140d5565b92915050565b6000815190506132ed816140d5565b92915050565b600081359050613302816140ec565b92915050565b60008135905061331781614103565b92915050565b60008151905061332c81614103565b92915050565b60006020828403121561334457600080fd5b6000613352848285016132c9565b91505092915050565b60006020828403121561336d57600080fd5b600061337b848285016132de565b91505092915050565b6000806040838503121561339757600080fd5b60006133a5858286016132c9565b92505060206133b6858286016132c9565b9150509250929050565b6000806000606084860312156133d557600080fd5b60006133e3868287016132c9565b93505060206133f4868287016132c9565b925050604061340586828701613308565b9150509250925092565b6000806040838503121561342257600080fd5b6000613430858286016132c9565b9250506020613441858286016132f3565b9150509250929050565b6000806040838503121561345e57600080fd5b600061346c858286016132c9565b925050602061347d85828601613308565b9150509250929050565b60006020828403121561349957600080fd5b60006134a7848285016132f3565b91505092915050565b6000602082840312156134c257600080fd5b60006134d084828501613308565b91505092915050565b600080604083850312156134ec57600080fd5b60006134fa85828601613308565b925050602061350b85828601613308565b9150509250929050565b60008060006060848603121561352a57600080fd5b60006135388682870161331d565b93505060206135498682870161331d565b925050604061355a8682870161331d565b9150509250925092565b6000613570838361358b565b60208301905092915050565b61358581613c7d565b82525050565b61359481613c6b565b82525050565b6135a381613c6b565b82525050565b60006135b482613b11565b6135be8185613b34565b93506135c983613b01565b8060005b838110156135fa5781516135e18882613564565b97506135ec83613b27565b9250506001810190506135cd565b5085935050505092915050565b61361081613c8f565b82525050565b61361f81613cd2565b82525050565b61362e81613cf6565b82525050565b600061363f82613b1c565b6136498185613b45565b9350613659818560208601613d08565b61366281613dfa565b840191505092915050565b600061367a602383613b45565b915061368582613e0b565b604082019050919050565b600061369d602683613b45565b91506136a882613e5a565b604082019050919050565b60006136c0602283613b45565b91506136cb82613ea9565b604082019050919050565b60006136e3601b83613b45565b91506136ee82613ef8565b602082019050919050565b6000613706602883613b45565b915061371182613f21565b604082019050919050565b6000613729602183613b45565b915061373482613f70565b604082019050919050565b600061374c602083613b45565b915061375782613fbf565b602082019050919050565b600061376f602983613b45565b915061377a82613fe8565b604082019050919050565b6000613792602583613b45565b915061379d82614037565b604082019050919050565b60006137b5602483613b45565b91506137c082614086565b604082019050919050565b6137d481613cbb565b82525050565b6137e381613cc5565b82525050565b60006020820190506137fe600083018461359a565b92915050565b6000602082019050613819600083018461357c565b92915050565b6000604082019050613834600083018561359a565b613841602083018461359a565b9392505050565b600060c08201905061385d600083018961359a565b61386a60208301886137cb565b6138776040830187613625565b6138846060830186613625565b613891608083018561359a565b61389e60a08301846137cb565b979650505050505050565b60006020820190506138be6000830184613607565b92915050565b60006020820190506138d96000830184613616565b92915050565b600060208201905081810360008301526138f98184613634565b905092915050565b6000602082019050818103600083015261391a8161366d565b9050919050565b6000602082019050818103600083015261393a81613690565b9050919050565b6000602082019050818103600083015261395a816136b3565b9050919050565b6000602082019050818103600083015261397a816136d6565b9050919050565b6000602082019050818103600083015261399a816136f9565b9050919050565b600060208201905081810360008301526139ba8161371c565b9050919050565b600060208201905081810360008301526139da8161373f565b9050919050565b600060208201905081810360008301526139fa81613762565b9050919050565b60006020820190508181036000830152613a1a81613785565b9050919050565b60006020820190508181036000830152613a3a816137a8565b9050919050565b6000602082019050613a5660008301846137cb565b92915050565b6000604082019050613a7160008301856137cb565b8181036020830152613a8381846135a9565b90509392505050565b600060a082019050613aa160008301886137cb565b613aae6020830187613625565b8181036040830152613ac081866135a9565b9050613acf606083018561359a565b613adc60808301846137cb565b9695505050505050565b6000602082019050613afb60008301846137da565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613b6182613cbb565b9150613b6c83613cbb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ba157613ba0613d6d565b5b828201905092915050565b6000613bb782613cbb565b9150613bc283613cbb565b925082613bd257613bd1613d9c565b5b828204905092915050565b6000613be882613cbb565b9150613bf383613cbb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c2c57613c2b613d6d565b5b828202905092915050565b6000613c4282613cbb565b9150613c4d83613cbb565b925082821015613c6057613c5f613d6d565b5b828203905092915050565b6000613c7682613c9b565b9050919050565b6000613c8882613c9b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613cdd82613ce4565b9050919050565b6000613cef82613c9b565b9050919050565b6000613d0182613cbb565b9050919050565b60005b83811015613d26578082015181840152602081019050613d0b565b83811115613d35576000848401525b50505050565b60006002820490506001821680613d5357607f821691505b60208210811415613d6757613d66613dcb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6140de81613c6b565b81146140e957600080fd5b50565b6140f581613c8f565b811461410057600080fd5b50565b61410c81613cbb565b811461411757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220baec045605afd22c5610e879d311ef708181d35bb873a4fb07a013262aaf243364736f6c63430008040033

Deployed Bytecode

0x6080604052600436106102555760003560e01c80637d1db4a511610139578063c647b20e116100b6578063ec28438a1161007a578063ec28438a146108ff578063ef422a1814610928578063f0cd1dac14610951578063f1d5f5171461097c578063f2fde38b146109a5578063f872858a146109ce5761025c565b8063c647b20e14610806578063c867d60b1461082f578063d158272d1461086c578063da00097d14610897578063dd62ed3e146108c25761025c565b8063a073d37f116100fd578063a073d37f1461070f578063a457c2d71461073a578063a5d69d1f14610777578063a9059cbb146107a0578063c49b9a80146107dd5761025c565b80637d1db4a514610638578063807c2d9c1461066357806382eefb431461068e5780638da5cb5b146106b957806395d89b41146106e45761025c565b8063313ce567116101d25780634cb80fd5116101965780634cb80fd5146105165780635342acb41461053f5780635881f3ef1461057c5780636bc87c3a146105b957806370a08231146105e4578063715018a6146106215761025c565b8063313ce5671461042f578063395093511461045a5780633b97084a1461049757806349bd5a5e146104c05780634a74bb02146104eb5761025c565b806322976e0d1161021957806322976e0d1461034857806323b872dd146103735780632563ae83146103b057806327c8f835146103d95780632b112e49146104045761025c565b806306fdde0314610261578063095ea7b31461028c5780631694505e146102c957806318160ddd146102f45780632198cf6c1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109f9565b60405161028391906138df565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061344b565b610a8b565b6040516102c091906138a9565b60405180910390f35b3480156102d557600080fd5b506102de610aa9565b6040516102eb91906138c4565b60405180910390f35b34801561030057600080fd5b50610309610acf565b6040516103169190613a41565b60405180910390f35b34801561032b57600080fd5b506103466004803603810190610341919061340f565b610ad9565b005b34801561035457600080fd5b5061035d610bc9565b60405161036a9190613a41565b60405180910390f35b34801561037f57600080fd5b5061039a600480360381019061039591906133c0565b610bcf565b6040516103a791906138a9565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190613487565b610ca9565b005b3480156103e557600080fd5b506103ee610d5b565b6040516103fb91906137e9565b60405180910390f35b34801561041057600080fd5b50610419610d7f565b6040516104269190613a41565b60405180910390f35b34801561043b57600080fd5b50610444610dc3565b6040516104519190613ae6565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c919061344b565b610dda565b60405161048e91906138a9565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b991906134b0565b610e8d565b005b3480156104cc57600080fd5b506104d5610f2c565b6040516104e291906137e9565b60405180910390f35b3480156104f757600080fd5b50610500610f52565b60405161050d91906138a9565b60405180910390f35b34801561052257600080fd5b5061053d60048036038101906105389190613332565b610f65565b005b34801561054b57600080fd5b5061056660048036038101906105619190613332565b61103e565b60405161057391906138a9565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190613332565b61105e565b6040516105b091906137e9565b60405180910390f35b3480156105c557600080fd5b506105ce6114c8565b6040516105db9190613a41565b60405180910390f35b3480156105f057600080fd5b5061060b60048036038101906106069190613332565b6114ce565b6040516106189190613a41565b60405180910390f35b34801561062d57600080fd5b50610636611517565b005b34801561064457600080fd5b5061064d61166a565b60405161065a9190613a41565b60405180910390f35b34801561066f57600080fd5b50610678611670565b6040516106859190613a41565b60405180910390f35b34801561069a57600080fd5b506106a3611676565b6040516106b09190613a41565b60405180910390f35b3480156106c557600080fd5b506106ce61167c565b6040516106db91906137e9565b60405180910390f35b3480156106f057600080fd5b506106f96116a5565b60405161070691906138df565b60405180910390f35b34801561071b57600080fd5b50610724611737565b6040516107319190613a41565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c919061344b565b611741565b60405161076e91906138a9565b60405180910390f35b34801561078357600080fd5b5061079e60048036038101906107999190613487565b61180e565b005b3480156107ac57600080fd5b506107c760048036038101906107c2919061344b565b6118c0565b6040516107d491906138a9565b60405180910390f35b3480156107e957600080fd5b5061080460048036038101906107ff9190613487565b6118df565b005b34801561081257600080fd5b5061082d600480360381019061082891906134d9565b6119c8565b005b34801561083b57600080fd5b5061085660048036038101906108519190613332565b611aa8565b60405161086391906138a9565b60405180910390f35b34801561087857600080fd5b50610881611ac8565b60405161088e9190613804565b60405180910390f35b3480156108a357600080fd5b506108ac611aee565b6040516108b991906138a9565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e49190613384565b611b01565b6040516108f69190613a41565b60405180910390f35b34801561090b57600080fd5b50610926600480360381019061092191906134b0565b611b88565b005b34801561093457600080fd5b5061094f600480360381019061094a919061340f565b611c27565b005b34801561095d57600080fd5b50610966611d17565b6040516109739190613a41565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e91906134b0565b611d1d565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190613332565b611dbc565b005b3480156109da57600080fd5b506109e3611f7e565b6040516109f091906138a9565b60405180910390f35b606060038054610a0890613d3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3490613d3b565b8015610a815780601f10610a5657610100808354040283529160200191610a81565b820191906000526020600020905b815481529060010190602001808311610a6457829003601f168201915b5050505050905090565b6000610a9f610a98611fef565b8484611ff7565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e54905090565b610ae1611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b65906139c1565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b5481565b6000610bdc8484846121c2565b50610c9e84610be9611fef565b610c998560405180606001604052806028815260200161411b60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c4f611fef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c09092919063ffffffff16565b611ff7565b600190509392505050565b610cb1611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d35906139c1565b60405180910390fd5b80601360176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000610dbe610dad7f000000000000000000000000000000000000000000000000000000000000dead6114ce565b600e5461282490919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b6000610e83610de7611fef565b84610e7e8560076000610df8611fef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9190919063ffffffff16565b611ff7565b6001905092915050565b610e95611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f19906139c1565b60405180910390fd5b8060118190555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360159054906101000a900460ff1681565b610f6d611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff1906139c1565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611068611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec906139c1565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561114057600080fd5b505afa158015611154573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611178919061335b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111da57600080fd5b505afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611212919061335b565b6040518363ffffffff1660e01b815260040161122f92919061381f565b60206040518083038186803b15801561124757600080fd5b505afa15801561125b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127f919061335b565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611440578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156112fc57600080fd5b505afa158015611310573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611334919061335b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561139657600080fd5b505afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce919061335b565b6040518363ffffffff1660e01b81526004016113eb92919061381f565b602060405180830381600087803b15801561140557600080fd5b505af1158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d919061335b565b91505b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b600a5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61151f611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a3906139c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60105481565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546116b490613d3b565b80601f01602080910402602001604051908101604052809291908181526020018280546116e090613d3b565b801561172d5780601f106117025761010080835404028352916020019161172d565b820191906000526020600020905b81548152906001019060200180831161171057829003601f168201915b5050505050905090565b6000601154905090565b600061180461174e611fef565b846117ff856040518060600160405280602581526020016141436025913960076000611778611fef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c09092919063ffffffff16565b611ff7565b6001905092915050565b611816611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a906139c1565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b60006118d46118cd611fef565b84846121c2565b506001905092915050565b6118e7611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b906139c1565b60405180910390fd5b80601360156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516119bd91906138a9565b60405180910390a150565b6119d0611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a54906139c1565b60405180910390fd5b81600a8190555080600b81905550611a816000600a54611f9190919063ffffffff16565b600c81905550611a9e600b54600c54611f9190919063ffffffff16565b600d819055505050565b60096020528060005260406000206000915054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360169054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b90611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c14906139c1565b60405180910390fd5b80600f8190555050565b611c2f611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb3906139c1565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c5481565b611d25611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da9906139c1565b60405180910390fd5b8060108190555050565b611dc4611fef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e48906139c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb890613921565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360179054906101000a900460ff1681565b6000808284611fa09190613b56565b905083811015611fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdc90613961565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e90613a21565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce90613941565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121b59190613a41565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a90613a01565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229a90613901565b60405180910390fd5b600082116122e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dd906139e1565b60405180910390fd5b601360149054906101000a900460ff161561230d5761230684848461286e565b90506127b9565b61231561167c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612383575061235361167c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123ce57600f548211156123cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c490613981565b60405180910390fd5b5b60006123d9306114ce565b9050600060115482101590508080156123ff5750601360149054906101000a900460ff16155b80156124595750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156124715750601360159054906101000a900460ff165b1561249b57601360169054906101000a900460ff16156124915760115491505b61249a82612a41565b5b612524846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c09092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061260a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61261e57612619878787612b9e565b612620565b845b9050601360179054906101000a900460ff1680156126885750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126b7576010546126ab8261269d896114ce565b611f9190919063ffffffff16565b11156126b657600080fd5b5b61270981600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127a99190613a41565b60405180910390a3600193505050505b9392505050565b6000838311158290612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff91906138df565b60405180910390fd5b50600083856128179190613c37565b9050809150509392505050565b600061286683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127c0565b905092915050565b60006128f9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c09092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061298e82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a2e9190613a41565b60405180910390a3600190509392505050565b6001601360146101000a81548160ff0219169083151502179055506000612a9a6002612a8c600a54612a7e600c5487612d6590919063ffffffff16565b612daf90919063ffffffff16565b612d6590919063ffffffff16565b90506000612ab1828461282490919063ffffffff16565b9050612abc81612e2a565b60004790506000612aed612adc6002600a54612d6590919063ffffffff16565b600c5461282490919063ffffffff16565b90506000612b2b6002612b1d84612b0f600a5488612daf90919063ffffffff16565b612d6590919063ffffffff16565b612d6590919063ffffffff16565b90506000612b42828561282490919063ffffffff16565b9050612b70600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613127565b612b7a8683613172565b5050505050506000601360146101000a81548160ff02191690831515021790555050565b600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612c2357612c1e6064612c10600c5486612daf90919063ffffffff16565b612d6590919063ffffffff16565b612c4c565b612c4b6064612c3d600d5486612daf90919063ffffffff16565b612d6590919063ffffffff16565b5b9050612ca081600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9190919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d409190613a41565b60405180910390a3612d5b818461282490919063ffffffff16565b9150509392505050565b6000612da783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613266565b905092915050565b600080831415612dc25760009050612e24565b60008284612dd09190613bdd565b9050828482612ddf9190613bac565b14612e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e16906139a1565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff811115612e6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612e9b5781602001602082028036833780820191505090505b5090503081600081518110612ed9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612f7b57600080fd5b505afa158015612f8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb3919061335b565b81600181518110612fed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061305430601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ff7565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130b8959493929190613a8c565b600060405180830381600087803b1580156130d257600080fd5b505af11580156130e6573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161311b929190613a5c565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561316d573d6000803e3d6000fd5b505050565b61319f30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ff7565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806131eb61167c565b426040518863ffffffff1660e01b815260040161320d96959493929190613848565b6060604051808303818588803b15801561322657600080fd5b505af115801561323a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061325f9190613515565b5050505050565b600080831182906132ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a491906138df565b60405180910390fd5b50600083856132bc9190613bac565b9050809150509392505050565b6000813590506132d8816140d5565b92915050565b6000815190506132ed816140d5565b92915050565b600081359050613302816140ec565b92915050565b60008135905061331781614103565b92915050565b60008151905061332c81614103565b92915050565b60006020828403121561334457600080fd5b6000613352848285016132c9565b91505092915050565b60006020828403121561336d57600080fd5b600061337b848285016132de565b91505092915050565b6000806040838503121561339757600080fd5b60006133a5858286016132c9565b92505060206133b6858286016132c9565b9150509250929050565b6000806000606084860312156133d557600080fd5b60006133e3868287016132c9565b93505060206133f4868287016132c9565b925050604061340586828701613308565b9150509250925092565b6000806040838503121561342257600080fd5b6000613430858286016132c9565b9250506020613441858286016132f3565b9150509250929050565b6000806040838503121561345e57600080fd5b600061346c858286016132c9565b925050602061347d85828601613308565b9150509250929050565b60006020828403121561349957600080fd5b60006134a7848285016132f3565b91505092915050565b6000602082840312156134c257600080fd5b60006134d084828501613308565b91505092915050565b600080604083850312156134ec57600080fd5b60006134fa85828601613308565b925050602061350b85828601613308565b9150509250929050565b60008060006060848603121561352a57600080fd5b60006135388682870161331d565b93505060206135498682870161331d565b925050604061355a8682870161331d565b9150509250925092565b6000613570838361358b565b60208301905092915050565b61358581613c7d565b82525050565b61359481613c6b565b82525050565b6135a381613c6b565b82525050565b60006135b482613b11565b6135be8185613b34565b93506135c983613b01565b8060005b838110156135fa5781516135e18882613564565b97506135ec83613b27565b9250506001810190506135cd565b5085935050505092915050565b61361081613c8f565b82525050565b61361f81613cd2565b82525050565b61362e81613cf6565b82525050565b600061363f82613b1c565b6136498185613b45565b9350613659818560208601613d08565b61366281613dfa565b840191505092915050565b600061367a602383613b45565b915061368582613e0b565b604082019050919050565b600061369d602683613b45565b91506136a882613e5a565b604082019050919050565b60006136c0602283613b45565b91506136cb82613ea9565b604082019050919050565b60006136e3601b83613b45565b91506136ee82613ef8565b602082019050919050565b6000613706602883613b45565b915061371182613f21565b604082019050919050565b6000613729602183613b45565b915061373482613f70565b604082019050919050565b600061374c602083613b45565b915061375782613fbf565b602082019050919050565b600061376f602983613b45565b915061377a82613fe8565b604082019050919050565b6000613792602583613b45565b915061379d82614037565b604082019050919050565b60006137b5602483613b45565b91506137c082614086565b604082019050919050565b6137d481613cbb565b82525050565b6137e381613cc5565b82525050565b60006020820190506137fe600083018461359a565b92915050565b6000602082019050613819600083018461357c565b92915050565b6000604082019050613834600083018561359a565b613841602083018461359a565b9392505050565b600060c08201905061385d600083018961359a565b61386a60208301886137cb565b6138776040830187613625565b6138846060830186613625565b613891608083018561359a565b61389e60a08301846137cb565b979650505050505050565b60006020820190506138be6000830184613607565b92915050565b60006020820190506138d96000830184613616565b92915050565b600060208201905081810360008301526138f98184613634565b905092915050565b6000602082019050818103600083015261391a8161366d565b9050919050565b6000602082019050818103600083015261393a81613690565b9050919050565b6000602082019050818103600083015261395a816136b3565b9050919050565b6000602082019050818103600083015261397a816136d6565b9050919050565b6000602082019050818103600083015261399a816136f9565b9050919050565b600060208201905081810360008301526139ba8161371c565b9050919050565b600060208201905081810360008301526139da8161373f565b9050919050565b600060208201905081810360008301526139fa81613762565b9050919050565b60006020820190508181036000830152613a1a81613785565b9050919050565b60006020820190508181036000830152613a3a816137a8565b9050919050565b6000602082019050613a5660008301846137cb565b92915050565b6000604082019050613a7160008301856137cb565b8181036020830152613a8381846135a9565b90509392505050565b600060a082019050613aa160008301886137cb565b613aae6020830187613625565b8181036040830152613ac081866135a9565b9050613acf606083018561359a565b613adc60808301846137cb565b9695505050505050565b6000602082019050613afb60008301846137da565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613b6182613cbb565b9150613b6c83613cbb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ba157613ba0613d6d565b5b828201905092915050565b6000613bb782613cbb565b9150613bc283613cbb565b925082613bd257613bd1613d9c565b5b828204905092915050565b6000613be882613cbb565b9150613bf383613cbb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c2c57613c2b613d6d565b5b828202905092915050565b6000613c4282613cbb565b9150613c4d83613cbb565b925082821015613c6057613c5f613d6d565b5b828203905092915050565b6000613c7682613c9b565b9050919050565b6000613c8882613c9b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613cdd82613ce4565b9050919050565b6000613cef82613c9b565b9050919050565b6000613d0182613cbb565b9050919050565b60005b83811015613d26578082015181840152602081019050613d0b565b83811115613d35576000848401525b50505050565b60006002820490506001821680613d5357607f821691505b60208210811415613d6757613d66613dcb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6140de81613c6b565b81146140e957600080fd5b50565b6140f581613c8f565b811461410057600080fd5b50565b61410c81613cbb565b811461411757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220baec045605afd22c5610e879d311ef708181d35bb873a4fb07a013262aaf243364736f6c63430008040033

Deployed Bytecode Sourcemap

14624:12321:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17485:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18779:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15704:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17762:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19996:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15354:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22091:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19875:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14982:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20844:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17671:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18148:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20249:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15752:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15821:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20381:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15197:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21118:696;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15315:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17870:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6385:148;;;;;;;;;;;;;:::i;:::-;;15538:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15594:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15436:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6160:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17576:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18651:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18374:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20707:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21916:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20528:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19436:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15254:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14875:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15868:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17997:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19756:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19293:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15393:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20139:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6541:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15920:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17485:83;17522:13;17555:5;17548:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17485:83;:::o;18779:161::-;18854:4;18871:39;18880:12;:10;:12::i;:::-;18894:7;18903:6;18871:8;:39::i;:::-;18928:4;18921:11;;18779:161;;;;:::o;15704:41::-;;;;;;;;;;;;;:::o;17762:100::-;17815:7;17842:12;;17835:19;;17762:100;:::o;19996:135::-;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20117:6:::1;20087:19;:27;20107:6;20087:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;19996:135:::0;;:::o;15354:32::-;;;;:::o;22091:313::-;22189:4;22206:36;22216:6;22224:9;22235:6;22206:9;:36::i;:::-;;22253:121;22262:6;22270:12;:10;:12::i;:::-;22284:89;22322:6;22284:89;;;;;;;;;;;;;;;;;:11;:19;22296:6;22284:19;;;;;;;;;;;;;;;:33;22304:12;:10;:12::i;:::-;22284:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22253:8;:121::i;:::-;22392:4;22385:11;;22091:313;;;;;:::o;19875:113::-;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19972:8:::1;19953:16;;:27;;;;;;;;;;;;;;;;;;19875:113:::0;:::o;14982:81::-;;;:::o;20844:128::-;20897:7;20924:40;20941:22;20951:11;20941:9;:22::i;:::-;20924:12;;:16;;:40;;;;:::i;:::-;20917:47;;20844:128;:::o;17671:83::-;17712:5;17737:9;;;;;;;;;;;17730:16;;17671:83;:::o;18148:218::-;18236:4;18253:83;18262:12;:10;:12::i;:::-;18276:7;18285:50;18324:10;18285:11;:25;18297:12;:10;:12::i;:::-;18285:25;;;;;;;;;;;;;;;:34;18311:7;18285:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18253:8;:83::i;:::-;18354:4;18347:11;;18148:218;;;;:::o;20249:124::-;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20357:8:::1;20331:23;:34;;;;20249:124:::0;:::o;15752:28::-;;;;;;;;;;;;;:::o;15821:40::-;;;;;;;;;;;;;:::o;20381:139::-;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20501:10:::1;20468:22;;:44;;;;;;;;;;;;;;;;;;20381:139:::0;:::o;15197:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;21118:696::-;21198:22;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21235:35:::1;21292:16;21235:74;;21358:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21340:53;;;21402:4;21409:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21340:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21323:110;;21475:1;21449:28;;:14;:28;;;21446:225;;;21563:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21545:74;;;21628:4;21635:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21545:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21528:131;;21446:225;21699:14;21683:13;;:30;;;;;;;;;;;;;;;;;;21765:16;21747:15;;:34;;;;;;;;;;;;;;;;;;6364:1;21118:696:::0;;;:::o;15315:32::-;;;;:::o;17870:119::-;17936:7;17963:9;:18;17973:7;17963:18;;;;;;;;;;;;;;;;17956:25;;17870:119;;;:::o;6385:148::-;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6492:1:::1;6455:40;;6476:6;::::0;::::1;;;;;;;;6455:40;;;;;;;;;;;;6523:1;6506:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6385:148::o:0;15538:48::-;;;;:::o;15594:47::-;;;;:::o;15436:37::-;;;;:::o;6160:79::-;6198:7;6225:6;;;;;;;;;;;6218:13;;6160:79;:::o;17576:87::-;17615:13;17648:7;17641:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17576:87;:::o;18651:120::-;18713:7;18740:23;;18733:30;;18651:120;:::o;18374:269::-;18467:4;18484:129;18493:12;:10;:12::i;:::-;18507:7;18516:96;18555:15;18516:96;;;;;;;;;;;;;;;;;:11;:25;18528:12;:10;:12::i;:::-;18516:25;;;;;;;;;;;;;;;:34;18542:7;18516:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18484:8;:129::i;:::-;18631:4;18624:11;;18374:269;;;;:::o;20707:125::-;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20816:8:::1;20788:25;;:36;;;;;;;;;;;;;;;;;;20707:125:::0;:::o;21916:167::-;21994:4;22011:42;22021:12;:10;:12::i;:::-;22035:9;22046:6;22011:9;:42::i;:::-;;22071:4;22064:11;;21916:167;;;;:::o;20528:171::-;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20629:8:::1;20605:21;;:32;;;;;;;;;;;;;;;;;;20653:38;20682:8;20653:38;;;;;;:::i;:::-;;;;;;;;20528:171:::0;:::o;19436:312::-;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19552:15:::1;19536:13;:31;;;;19594:15;19578:13;:31;;;;19652:20;19670:1;19652:13;;:17;;:20;;;;:::i;:::-;19632:17;:40;;;;19704:36;19726:13;;19704:17;;:21;;:36;;;;:::i;:::-;19683:18;:57;;;;19436:312:::0;;:::o;15254:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;14875:99::-;;;;;;;;;;;;;:::o;15868:45::-;;;;;;;;;;;;;:::o;17997:143::-;18078:7;18105:11;:18;18117:5;18105:18;;;;;;;;;;;;;;;:27;18124:7;18105:27;;;;;;;;;;;;;;;;18098:34;;17997:143;;;;:::o;19756:111::-;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19848:11:::1;19833:12;:26;;;;19756:111:::0;:::o;19293:135::-;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19412:8:::1;19383:17;:26;19401:7;19383:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;19293:135:::0;;:::o;15393:36::-;;;;:::o;20139:102::-;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20225:8:::1;20211:10;:22;;;;20139:102:::0;:::o;6541:244::-;6304:12;:10;:12::i;:::-;6294:22;;:6;;;;;;;;;;:22;;;6286:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6650:1:::1;6630:22;;:8;:22;;;;6622:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6740:8;6711:38;;6732:6;::::0;::::1;;;;;;;;6711:38;;;;;;;;;;;;6769:8;6760:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6541:244:::0;:::o;15920:35::-;;;;;;;;;;;;;:::o;1530:181::-;1588:7;1608:9;1624:1;1620;:5;;;;:::i;:::-;1608:17;;1649:1;1644;:6;;1636:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1702:1;1695:8;;;1530:181;;;;:::o;462:115::-;515:15;558:10;543:26;;462:115;:::o;18948:337::-;19058:1;19041:19;;:5;:19;;;;19033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19139:1;19120:21;;:7;:21;;;;19112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19223:6;19193:11;:18;19205:5;19193:18;;;;;;;;;;;;;;;:27;19212:7;19193:27;;;;;;;;;;;;;;;:36;;;;19261:7;19245:32;;19254:5;19245:32;;;19270:6;19245:32;;;;;;:::i;:::-;;;;;;;;18948:337;;;:::o;22412:1778::-;22499:4;22544:1;22526:20;;:6;:20;;;;22518:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22628:1;22607:23;;:9;:23;;;;22599:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22698:1;22689:6;:10;22681:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22769:16;;;;;;;;;;;22766:1417;;;22819:41;22834:6;22842:9;22853:6;22819:14;:41::i;:::-;22812:48;;;;22766:1417;22925:7;:5;:7::i;:::-;22915:17;;:6;:17;;;;:41;;;;;22949:7;:5;:7::i;:::-;22936:20;;:9;:20;;;;22915:41;22912:156;;;22995:12;;22985:6;:22;;22977:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22912:156;23096:28;23127:24;23145:4;23127:9;:24::i;:::-;23096:55;;23166:28;23221:23;;23197:20;:47;;23166:78;;23277:23;:44;;;;;23305:16;;;;;;;;;;;23304:17;23277:44;:71;;;;;23335:13;;;;;;;;;;;23325:23;;:6;:23;;;;23277:71;:96;;;;;23352:21;;;;;;;;;;;23277:96;23273:307;;;23411:25;;;;;;;;;;;23408:97;;;23482:23;;23459:46;;23408:97;23524:36;23539:20;23524:14;:36::i;:::-;23273:307;23616:53;23638:6;23616:53;;;;;;;;;;;;;;;;;:9;:17;23626:6;23616:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23596:9;:17;23606:6;23596:17;;;;;;;;;;;;;;;:73;;;;23686:19;23709:17;:25;23727:6;23709:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;23738:17;:28;23756:9;23738:28;;;;;;;;;;;;;;;;;;;;;;;;;23709:57;23708:148;;23822:34;23830:6;23838:9;23849:6;23822:7;:34::i;:::-;23708:148;;;23813:6;23708:148;23686:170;;23876:16;;;;;;;;;;;:51;;;;;23897:19;:30;23917:9;23897:30;;;;;;;;;;;;;;;;;;;;;;;;;23896:31;23876:51;23873:133;;;23995:10;;23954:37;23979:11;23954:20;23964:9;23954;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;23946:60;;;;;;23873:133;24046:37;24071:11;24046:9;:20;24056:9;24046:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;24023:9;:20;24033:9;24023:20;;;;;;;;;;;;;;;:60;;;;24122:9;24105:40;;24114:6;24105:40;;;24133:11;24105:40;;;;;;:::i;:::-;;;;;;;;24167:4;24160:11;;;;;22412:1778;;;;;;:::o;1863:192::-;1949:7;1982:1;1977;:6;;1985:12;1969:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2009:9;2025:1;2021;:5;;;;:::i;:::-;2009:17;;2046:1;2039:8;;;1863:192;;;;;:::o;1719:136::-;1777:7;1804:43;1808:1;1811;1804:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1797:50;;1719:136;;;;:::o;24198:330::-;24291:4;24328:53;24350:6;24328:53;;;;;;;;;;;;;;;;;:9;:17;24338:6;24328:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24308:9;:17;24318:6;24308:17;;;;;;;;;;;;;;;:73;;;;24415:32;24440:6;24415:9;:20;24425:9;24415:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24392:9;:20;24402:9;24392:20;;;;;;;;;;;;;;;:55;;;;24480:9;24463:35;;24472:6;24463:35;;;24491:6;24463:35;;;;;;:::i;:::-;;;;;;;;24516:4;24509:11;;24198:330;;;;;:::o;24536:723::-;16397:4;16378:16;;:23;;;;;;;;;;;;;;;;;;24617:19:::1;24639:56;24693:1;24639:49;24674:13;;24639:30;24651:17;;24639:7;:11;;:30;;;;:::i;:::-;:34;;:49;;;;:::i;:::-;:53;;:56;;;;:::i;:::-;24617:78;;24706:21;24730:24;24742:11;24730:7;:11;;:24;;;;:::i;:::-;24706:48;;24767:31;24784:13;24767:16;:31::i;:::-;24809:22;24834:21;24809:46;;24868:19;24890:43;24912:20;24930:1;24912:13;;:17;;:20;;;;:::i;:::-;24890:17;;:21;;:43;;;;:::i;:::-;24868:65;;24954:26;24983:57;25038:1;24983:50;25021:11;24983:33;25002:13;;24983:14;:18;;:33;;;;:::i;:::-;:37;;:50;;;;:::i;:::-;:54;;:57;;;;:::i;:::-;24954:86;;25051:26;25080:38;25099:18;25080:14;:18;;:38;;;;:::i;:::-;25051:67;;25131:64;25152:22;;;;;;;;;;;25176:18;25131:20;:64::i;:::-;25206:45;25219:11;25232:18;25206:12;:45::i;:::-;16412:1;;;;;;16443:5:::0;16424:16;;:24;;;;;;;;;;;;;;;;;;24536:723;:::o;26471:465::-;26557:7;26587:17;26620:13;;;;;;;;;;;26607:26;;:9;:26;;;:143;;26712:38;26746:3;26712:29;26723:17;;26712:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;26607:143;;;26636:39;26671:3;26636:30;26647:18;;26636:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;26607:143;26587:163;;26790:39;26819:9;26790;:24;26808:4;26790:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;26763:9;:24;26781:4;26763:24;;;;;;;;;;;;;;;:66;;;;26870:4;26845:42;;26854:6;26845:42;;;26877:9;26845:42;;;;;;:::i;:::-;;;;;;;;26907:21;26918:9;26907:6;:10;;:21;;;;:::i;:::-;26900:28;;;26471:465;;;;;:::o;2321:132::-;2379:7;2406:39;2410:1;2413;2406:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2399:46;;2321:132;;;;:::o;2063:250::-;2121:7;2150:1;2145;:6;2141:47;;;2175:1;2168:8;;;;2141:47;2200:9;2216:1;2212;:5;;;;:::i;:::-;2200:17;;2245:1;2240;2236;:5;;;;:::i;:::-;:10;2228:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2304:1;2297:8;;;2063:250;;;;;:::o;25271:666::-;25397:21;25435:1;25421:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25397:40;;25466:4;25448;25453:1;25448:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;25492:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25482:4;25487:1;25482:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;25527:62;25544:4;25559:15;;;;;;;;;;;25577:11;25527:8;:62::i;:::-;25628:15;;;;;;;;;;;:66;;;25709:11;25735:1;25779:4;25806;25842:15;25628:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25894:35;25911:11;25924:4;25894:35;;;;;;;:::i;:::-;;;;;;;;25271:666;;:::o;20980:126::-;21072:9;:18;;:26;21091:6;21072:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20980:126;;:::o;25945:518::-;26093:62;26110:4;26125:15;;;;;;;;;;;26143:11;26093:8;:62::i;:::-;26203:15;;;;;;;;;;;:31;;;26242:9;26275:4;26295:11;26321:1;26364;26407:7;:5;:7::i;:::-;26429:15;26203:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25945:518;;:::o;2461:278::-;2547:7;2579:1;2575;:5;2582:12;2567:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2606:9;2622:1;2618;:5;;;;:::i;:::-;2606:17;;2730:1;2723:8;;;2461:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;2328:6;2336;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;2738:6;2746;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;3404:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:407::-;3681:6;3689;3738:2;3726:9;3717:7;3713:23;3709:32;3706:2;;;3754:1;3751;3744:12;3706:2;3797:1;3822:53;3867:7;3858:6;3847:9;3843:22;3822:53;:::i;:::-;3812:63;;3768:117;3924:2;3950:53;3995:7;3986:6;3975:9;3971:22;3950:53;:::i;:::-;3940:63;;3895:118;3696:324;;;;;:::o;4026:596::-;4114:6;4122;4130;4179:2;4167:9;4158:7;4154:23;4150:32;4147:2;;;4195:1;4192;4185:12;4147:2;4238:1;4263:64;4319:7;4310:6;4299:9;4295:22;4263:64;:::i;:::-;4253:74;;4209:128;4376:2;4402:64;4458:7;4449:6;4438:9;4434:22;4402:64;:::i;:::-;4392:74;;4347:129;4515:2;4541:64;4597:7;4588:6;4577:9;4573:22;4541:64;:::i;:::-;4531:74;;4486:129;4137:485;;;;;:::o;4628:179::-;4697:10;4718:46;4760:3;4752:6;4718:46;:::i;:::-;4796:4;4791:3;4787:14;4773:28;;4708:99;;;;:::o;4813:142::-;4916:32;4942:5;4916:32;:::i;:::-;4911:3;4904:45;4894:61;;:::o;4961:108::-;5038:24;5056:5;5038:24;:::i;:::-;5033:3;5026:37;5016:53;;:::o;5075:118::-;5162:24;5180:5;5162:24;:::i;:::-;5157:3;5150:37;5140:53;;:::o;5229:732::-;5348:3;5377:54;5425:5;5377:54;:::i;:::-;5447:86;5526:6;5521:3;5447:86;:::i;:::-;5440:93;;5557:56;5607:5;5557:56;:::i;:::-;5636:7;5667:1;5652:284;5677:6;5674:1;5671:13;5652:284;;;5753:6;5747:13;5780:63;5839:3;5824:13;5780:63;:::i;:::-;5773:70;;5866:60;5919:6;5866:60;:::i;:::-;5856:70;;5712:224;5699:1;5696;5692:9;5687:14;;5652:284;;;5656:14;5952:3;5945:10;;5353:608;;;;;;;:::o;5967:109::-;6048:21;6063:5;6048:21;:::i;:::-;6043:3;6036:34;6026:50;;:::o;6082:185::-;6196:64;6254:5;6196:64;:::i;:::-;6191:3;6184:77;6174:93;;:::o;6273:147::-;6368:45;6407:5;6368:45;:::i;:::-;6363:3;6356:58;6346:74;;:::o;6426:364::-;6514:3;6542:39;6575:5;6542:39;:::i;:::-;6597:71;6661:6;6656:3;6597:71;:::i;:::-;6590:78;;6677:52;6722:6;6717:3;6710:4;6703:5;6699:16;6677:52;:::i;:::-;6754:29;6776:6;6754:29;:::i;:::-;6749:3;6745:39;6738:46;;6518:272;;;;;:::o;6796:366::-;6938:3;6959:67;7023:2;7018:3;6959:67;:::i;:::-;6952:74;;7035:93;7124:3;7035:93;:::i;:::-;7153:2;7148:3;7144:12;7137:19;;6942:220;;;:::o;7168:366::-;7310:3;7331:67;7395:2;7390:3;7331:67;:::i;:::-;7324:74;;7407:93;7496:3;7407:93;:::i;:::-;7525:2;7520:3;7516:12;7509:19;;7314:220;;;:::o;7540:366::-;7682:3;7703:67;7767:2;7762:3;7703:67;:::i;:::-;7696:74;;7779:93;7868:3;7779:93;:::i;:::-;7897:2;7892:3;7888:12;7881:19;;7686:220;;;:::o;7912:366::-;8054:3;8075:67;8139:2;8134:3;8075:67;:::i;:::-;8068:74;;8151:93;8240:3;8151:93;:::i;:::-;8269:2;8264:3;8260:12;8253:19;;8058:220;;;:::o;8284:366::-;8426:3;8447:67;8511:2;8506:3;8447:67;:::i;:::-;8440:74;;8523:93;8612:3;8523:93;:::i;:::-;8641:2;8636:3;8632:12;8625:19;;8430:220;;;:::o;8656:366::-;8798:3;8819:67;8883:2;8878:3;8819:67;:::i;:::-;8812:74;;8895:93;8984:3;8895:93;:::i;:::-;9013:2;9008:3;9004:12;8997:19;;8802:220;;;:::o;9028:366::-;9170:3;9191:67;9255:2;9250:3;9191:67;:::i;:::-;9184:74;;9267:93;9356:3;9267:93;:::i;:::-;9385:2;9380:3;9376:12;9369:19;;9174:220;;;:::o;9400:366::-;9542:3;9563:67;9627:2;9622:3;9563:67;:::i;:::-;9556:74;;9639:93;9728:3;9639:93;:::i;:::-;9757:2;9752:3;9748:12;9741:19;;9546:220;;;:::o;9772:366::-;9914:3;9935:67;9999:2;9994:3;9935:67;:::i;:::-;9928:74;;10011:93;10100:3;10011:93;:::i;:::-;10129:2;10124:3;10120:12;10113:19;;9918:220;;;:::o;10144:366::-;10286:3;10307:67;10371:2;10366:3;10307:67;:::i;:::-;10300:74;;10383:93;10472:3;10383:93;:::i;:::-;10501:2;10496:3;10492:12;10485:19;;10290:220;;;:::o;10516:118::-;10603:24;10621:5;10603:24;:::i;:::-;10598:3;10591:37;10581:53;;:::o;10640:112::-;10723:22;10739:5;10723:22;:::i;:::-;10718:3;10711:35;10701:51;;:::o;10758:222::-;10851:4;10889:2;10878:9;10874:18;10866:26;;10902:71;10970:1;10959:9;10955:17;10946:6;10902:71;:::i;:::-;10856:124;;;;:::o;10986:254::-;11095:4;11133:2;11122:9;11118:18;11110:26;;11146:87;11230:1;11219:9;11215:17;11206:6;11146:87;:::i;:::-;11100:140;;;;:::o;11246:332::-;11367:4;11405:2;11394:9;11390:18;11382:26;;11418:71;11486:1;11475:9;11471:17;11462:6;11418:71;:::i;:::-;11499:72;11567:2;11556:9;11552:18;11543:6;11499:72;:::i;:::-;11372:206;;;;;:::o;11584:807::-;11833:4;11871:3;11860:9;11856:19;11848:27;;11885:71;11953:1;11942:9;11938:17;11929:6;11885:71;:::i;:::-;11966:72;12034:2;12023:9;12019:18;12010:6;11966:72;:::i;:::-;12048:80;12124:2;12113:9;12109:18;12100:6;12048:80;:::i;:::-;12138;12214:2;12203:9;12199:18;12190:6;12138:80;:::i;:::-;12228:73;12296:3;12285:9;12281:19;12272:6;12228:73;:::i;:::-;12311;12379:3;12368:9;12364:19;12355:6;12311:73;:::i;:::-;11838:553;;;;;;;;;:::o;12397:210::-;12484:4;12522:2;12511:9;12507:18;12499:26;;12535:65;12597:1;12586:9;12582:17;12573:6;12535:65;:::i;:::-;12489:118;;;;:::o;12613:276::-;12733:4;12771:2;12760:9;12756:18;12748:26;;12784:98;12879:1;12868:9;12864:17;12855:6;12784:98;:::i;:::-;12738:151;;;;:::o;12895:313::-;13008:4;13046:2;13035:9;13031:18;13023:26;;13095:9;13089:4;13085:20;13081:1;13070:9;13066:17;13059:47;13123:78;13196:4;13187:6;13123:78;:::i;:::-;13115:86;;13013:195;;;;:::o;13214:419::-;13380:4;13418:2;13407:9;13403:18;13395:26;;13467:9;13461:4;13457:20;13453:1;13442:9;13438:17;13431:47;13495:131;13621:4;13495:131;:::i;:::-;13487:139;;13385:248;;;:::o;13639:419::-;13805:4;13843:2;13832:9;13828:18;13820:26;;13892:9;13886:4;13882:20;13878:1;13867:9;13863:17;13856:47;13920:131;14046:4;13920:131;:::i;:::-;13912:139;;13810:248;;;:::o;14064:419::-;14230:4;14268:2;14257:9;14253:18;14245:26;;14317:9;14311:4;14307:20;14303:1;14292:9;14288:17;14281:47;14345:131;14471:4;14345:131;:::i;:::-;14337:139;;14235:248;;;:::o;14489:419::-;14655:4;14693:2;14682:9;14678:18;14670:26;;14742:9;14736:4;14732:20;14728:1;14717:9;14713:17;14706:47;14770:131;14896:4;14770:131;:::i;:::-;14762:139;;14660:248;;;:::o;14914:419::-;15080:4;15118:2;15107:9;15103:18;15095:26;;15167:9;15161:4;15157:20;15153:1;15142:9;15138:17;15131:47;15195:131;15321:4;15195:131;:::i;:::-;15187:139;;15085:248;;;:::o;15339:419::-;15505:4;15543:2;15532:9;15528:18;15520:26;;15592:9;15586:4;15582:20;15578:1;15567:9;15563:17;15556:47;15620:131;15746:4;15620:131;:::i;:::-;15612:139;;15510:248;;;:::o;15764:419::-;15930:4;15968:2;15957:9;15953:18;15945:26;;16017:9;16011:4;16007:20;16003:1;15992:9;15988:17;15981:47;16045:131;16171:4;16045:131;:::i;:::-;16037:139;;15935:248;;;:::o;16189:419::-;16355:4;16393:2;16382:9;16378:18;16370:26;;16442:9;16436:4;16432:20;16428:1;16417:9;16413:17;16406:47;16470:131;16596:4;16470:131;:::i;:::-;16462:139;;16360:248;;;:::o;16614:419::-;16780:4;16818:2;16807:9;16803:18;16795:26;;16867:9;16861:4;16857:20;16853:1;16842:9;16838:17;16831:47;16895:131;17021:4;16895:131;:::i;:::-;16887:139;;16785:248;;;:::o;17039:419::-;17205:4;17243:2;17232:9;17228:18;17220:26;;17292:9;17286:4;17282:20;17278:1;17267:9;17263:17;17256:47;17320:131;17446:4;17320:131;:::i;:::-;17312:139;;17210:248;;;:::o;17464:222::-;17557:4;17595:2;17584:9;17580:18;17572:26;;17608:71;17676:1;17665:9;17661:17;17652:6;17608:71;:::i;:::-;17562:124;;;;:::o;17692:483::-;17863:4;17901:2;17890:9;17886:18;17878:26;;17914:71;17982:1;17971:9;17967:17;17958:6;17914:71;:::i;:::-;18032:9;18026:4;18022:20;18017:2;18006:9;18002:18;17995:48;18060:108;18163:4;18154:6;18060:108;:::i;:::-;18052:116;;17868:307;;;;;:::o;18181:831::-;18444:4;18482:3;18471:9;18467:19;18459:27;;18496:71;18564:1;18553:9;18549:17;18540:6;18496:71;:::i;:::-;18577:80;18653:2;18642:9;18638:18;18629:6;18577:80;:::i;:::-;18704:9;18698:4;18694:20;18689:2;18678:9;18674:18;18667:48;18732:108;18835:4;18826:6;18732:108;:::i;:::-;18724:116;;18850:72;18918:2;18907:9;18903:18;18894:6;18850:72;:::i;:::-;18932:73;19000:3;18989:9;18985:19;18976:6;18932:73;:::i;:::-;18449:563;;;;;;;;:::o;19018:214::-;19107:4;19145:2;19134:9;19130:18;19122:26;;19158:67;19222:1;19211:9;19207:17;19198:6;19158:67;:::i;:::-;19112:120;;;;:::o;19238:132::-;19305:4;19328:3;19320:11;;19358:4;19353:3;19349:14;19341:22;;19310:60;;;:::o;19376:114::-;19443:6;19477:5;19471:12;19461:22;;19450:40;;;:::o;19496:99::-;19548:6;19582:5;19576:12;19566:22;;19555:40;;;:::o;19601:113::-;19671:4;19703;19698:3;19694:14;19686:22;;19676:38;;;:::o;19720:184::-;19819:11;19853:6;19848:3;19841:19;19893:4;19888:3;19884:14;19869:29;;19831:73;;;;:::o;19910:169::-;19994:11;20028:6;20023:3;20016:19;20068:4;20063:3;20059:14;20044:29;;20006:73;;;;:::o;20085:305::-;20125:3;20144:20;20162:1;20144:20;:::i;:::-;20139:25;;20178:20;20196:1;20178:20;:::i;:::-;20173:25;;20332:1;20264:66;20260:74;20257:1;20254:81;20251:2;;;20338:18;;:::i;:::-;20251:2;20382:1;20379;20375:9;20368:16;;20129:261;;;;:::o;20396:185::-;20436:1;20453:20;20471:1;20453:20;:::i;:::-;20448:25;;20487:20;20505:1;20487:20;:::i;:::-;20482:25;;20526:1;20516:2;;20531:18;;:::i;:::-;20516:2;20573:1;20570;20566:9;20561:14;;20438:143;;;;:::o;20587:348::-;20627:7;20650:20;20668:1;20650:20;:::i;:::-;20645:25;;20684:20;20702:1;20684:20;:::i;:::-;20679:25;;20872:1;20804:66;20800:74;20797:1;20794:81;20789:1;20782:9;20775:17;20771:105;20768:2;;;20879:18;;:::i;:::-;20768:2;20927:1;20924;20920:9;20909:20;;20635:300;;;;:::o;20941:191::-;20981:4;21001:20;21019:1;21001:20;:::i;:::-;20996:25;;21035:20;21053:1;21035:20;:::i;:::-;21030:25;;21074:1;21071;21068:8;21065:2;;;21079:18;;:::i;:::-;21065:2;21124:1;21121;21117:9;21109:17;;20986:146;;;;:::o;21138:96::-;21175:7;21204:24;21222:5;21204:24;:::i;:::-;21193:35;;21183:51;;;:::o;21240:104::-;21285:7;21314:24;21332:5;21314:24;:::i;:::-;21303:35;;21293:51;;;:::o;21350:90::-;21384:7;21427:5;21420:13;21413:21;21402:32;;21392:48;;;:::o;21446:126::-;21483:7;21523:42;21516:5;21512:54;21501:65;;21491:81;;;:::o;21578:77::-;21615:7;21644:5;21633:16;;21623:32;;;:::o;21661:86::-;21696:7;21736:4;21729:5;21725:16;21714:27;;21704:43;;;:::o;21753:180::-;21830:9;21863:64;21921:5;21863:64;:::i;:::-;21850:77;;21840:93;;;:::o;21939:140::-;22016:9;22049:24;22067:5;22049:24;:::i;:::-;22036:37;;22026:53;;;:::o;22085:121::-;22143:9;22176:24;22194:5;22176:24;:::i;:::-;22163:37;;22153:53;;;:::o;22212:307::-;22280:1;22290:113;22304:6;22301:1;22298:13;22290:113;;;22389:1;22384:3;22380:11;22374:18;22370:1;22365:3;22361:11;22354:39;22326:2;22323:1;22319:10;22314:15;;22290:113;;;22421:6;22418:1;22415:13;22412:2;;;22501:1;22492:6;22487:3;22483:16;22476:27;22412:2;22261:258;;;;:::o;22525:320::-;22569:6;22606:1;22600:4;22596:12;22586:22;;22653:1;22647:4;22643:12;22674:18;22664:2;;22730:4;22722:6;22718:17;22708:27;;22664:2;22792;22784:6;22781:14;22761:18;22758:38;22755:2;;;22811:18;;:::i;:::-;22755:2;22576:269;;;;:::o;22851:180::-;22899:77;22896:1;22889:88;22996:4;22993:1;22986:15;23020:4;23017:1;23010:15;23037:180;23085:77;23082:1;23075:88;23182:4;23179:1;23172:15;23206:4;23203:1;23196:15;23223:180;23271:77;23268:1;23261:88;23368:4;23365:1;23358:15;23392:4;23389:1;23382:15;23409:102;23450:6;23501:2;23497:7;23492:2;23485:5;23481:14;23477:28;23467:38;;23457:54;;;:::o;23517:222::-;23657:34;23653:1;23645:6;23641:14;23634:58;23726:5;23721:2;23713:6;23709:15;23702:30;23623:116;:::o;23745:225::-;23885:34;23881:1;23873:6;23869:14;23862:58;23954:8;23949:2;23941:6;23937:15;23930:33;23851:119;:::o;23976:221::-;24116:34;24112:1;24104:6;24100:14;24093:58;24185:4;24180:2;24172:6;24168:15;24161:29;24082:115;:::o;24203:177::-;24343:29;24339:1;24331:6;24327:14;24320:53;24309:71;:::o;24386:227::-;24526:34;24522:1;24514:6;24510:14;24503:58;24595:10;24590:2;24582:6;24578:15;24571:35;24492:121;:::o;24619:220::-;24759:34;24755:1;24747:6;24743:14;24736:58;24828:3;24823:2;24815:6;24811:15;24804:28;24725:114;:::o;24845:182::-;24985:34;24981:1;24973:6;24969:14;24962:58;24951:76;:::o;25033:228::-;25173:34;25169:1;25161:6;25157:14;25150:58;25242:11;25237:2;25229:6;25225:15;25218:36;25139:122;:::o;25267:224::-;25407:34;25403:1;25395:6;25391:14;25384:58;25476:7;25471:2;25463:6;25459:15;25452:32;25373:118;:::o;25497:223::-;25637:34;25633:1;25625:6;25621:14;25614:58;25706:6;25701:2;25693:6;25689:15;25682:31;25603:117;:::o;25726:122::-;25799:24;25817:5;25799:24;:::i;:::-;25792:5;25789:35;25779:2;;25838:1;25835;25828:12;25779:2;25769:79;:::o;25854:116::-;25924:21;25939:5;25924:21;:::i;:::-;25917:5;25914:32;25904:2;;25960:1;25957;25950:12;25904:2;25894:76;:::o;25976:122::-;26049:24;26067:5;26049:24;:::i;:::-;26042:5;26039:35;26029:2;;26088:1;26085;26078:12;26029:2;26019:79;:::o

Swarm Source

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