ETH Price: $2,621.69 (+0.95%)

Token

Clifford Inu (CLIFFORD)
 

Overview

Max Total Supply

1,000,000,000 CLIFFORD

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,411,177.871753255788031834 CLIFFORD

Value
$0.00
0x5ef78319040da146ee6cb74396eca4c75d88c0fc
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:
CLIFFO

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-03
*/

// SPDX-License-Identifier: MIT

/*
Website: https://clifford-inu.com/
Twitter: https://twitter.com/CLIFFOERC
TG: https://t.me/CliffordInuPortal
*/

pragma solidity ^0.8.0;

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);

        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
}

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;

        return c;
    }

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

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

		function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

		event Mint(address indexed sender, uint amount0, uint amount1);
		event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
		event Swap(
				address indexed sender,
				uint amount0In,
				uint amount1In,
				uint amount0Out,
				uint amount1Out,
				address indexed to
		);
		event Sync(uint112 reserve0, uint112 reserve1);

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

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

		function initialize(address, address) external;
}

interface IUniSwapRouter{
		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);
		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;
}

interface IUniSwapFactory {
		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;
}

contract Ownable {
    address private _owner;

    event OwnershipRenounced(address indexed previousOwner);

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

    constructor() {
        _owner = msg.sender;
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(_owner);
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_
    ) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

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

contract CLIFFO is ERC20Detailed, Ownable {

    using SafeMath for uint256;
    using SafeMathInt for int256;


    modifier validRecipient(address to) {
        require(to != address(0x0));
        _;
    }

    uint256 public buyLiquidityFee = 10;
    uint256 public buyMarketingFee = 40;
    uint256 public buyTeamFee = 30;
    uint256 public buyBurnFee = 0;

    uint256 public sellLiquidityFee = 10;
    uint256 public sellMarketingFee = 40;
    uint256 public sellTeamFee = 30;
    uint256 public sellBurnFee = 0;

    uint256 public AmountLiquidityFee;
    uint256 public AmountMarketingFee;
    uint256 public AmountTeamFee;
    // uint256 public AmountBurnFee;

    uint256 public feeDenominator = 1000;

    address public marketingWallet = payable(0xBEFfB0D55A03D9dfbb2d075Ea823805510aC82Ed);
    address public teamWallet = payable(0x6D1990d445C4C40585EcFF065B1D2FE50b88e859);
    address public liquidityWallet;

    address private constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address private constant ZeroWallet = 0x0000000000000000000000000000000000000000;

    mapping(address => bool) public blacklist;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public automatedMarketMakerPairs;

    uint256 public constant DECIMALS = 18;

    uint256 public _totalSupply = 1000_000_000 * (10 ** DECIMALS);
    uint256 public swapTokensAtAmount = _totalSupply.mul(1).div(feeDenominator);  //0.1%

    uint256 public MaxWalletLimit = _totalSupply.mul(20).div(feeDenominator);  //2%
    uint256 public MaxTxLimit = _totalSupply.mul(20).div(feeDenominator);  //2%

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

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

    bool public _autoAddLiquidity = true;
    
    address public pair;
    IUniSwapPair public pairContract;
    IUniSwapRouter public router;

    bool inSwap = false;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() ERC20Detailed("Clifford Inu", "CLIFFORD", uint8(DECIMALS)) Ownable() {

        router = IUniSwapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        pair = IUniSwapFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );

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

        liquidityWallet = msg.sender;

        pairContract = IUniSwapPair(pair);
        automatedMarketMakerPairs[pair] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[pair] = true;
        isWalletLimitExempt[address(this)] = true;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;

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

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

    function transfer(address to, uint256 value)
        external
        override
        validRecipient(to)
        returns (bool)
    {
        _transferFrom(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override validRecipient(to) returns (bool) {
        
        if (_allowances[from][msg.sender] != ~uint256(0)) {
            _allowances[from][msg.sender] = _allowances[from][
                msg.sender
            ].sub(value, "Insufficient Allowance");
        }
        _transferFrom(from, to, value);
        return true;
    }

    function _basicTransfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount);
        return true;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal 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,"Error: Invalid Amount!");
        require(!blacklist[sender] && !blacklist[recipient], "in_blacklist");

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

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

        if (shouldAddLiquidity()) {
            addLiquidity();
        }

        _balances[sender] = _balances[sender].sub(amount);
        
        uint256 AmountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;

        if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
            require(balanceOf(recipient).add(AmountReceived) <= MaxWalletLimit,"Error: Transfer Amount exceeds Wallet Limit.");
        }

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

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

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal  returns (uint256) {

        uint256 feeAmount;
        uint LFEE;
        uint MFEE;
        uint TFEE;
        uint BFEE;
        
        if(automatedMarketMakerPairs[sender]){

            LFEE = amount.mul(buyLiquidityFee).div(feeDenominator);
            AmountLiquidityFee += LFEE;
            MFEE = amount.mul(buyMarketingFee).div(feeDenominator);
            AmountMarketingFee += MFEE;
            TFEE = amount.mul(buyTeamFee).div(feeDenominator);
            AmountTeamFee += TFEE;
            BFEE = amount.mul(buyBurnFee).div(feeDenominator);

            feeAmount = LFEE.add(MFEE).add(TFEE);
        }
        else if(automatedMarketMakerPairs[recipient]){

            LFEE = amount.mul(sellLiquidityFee).div(feeDenominator);
            AmountLiquidityFee += LFEE;
            MFEE = amount.mul(sellMarketingFee).div(feeDenominator);
            AmountMarketingFee += MFEE;
            TFEE = amount.mul(sellTeamFee).div(feeDenominator);
            AmountTeamFee += TFEE;
            BFEE = amount.mul(sellBurnFee).div(feeDenominator);

            feeAmount = LFEE.add(MFEE).add(TFEE);
    
        }

        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        if(BFEE > 0) {
            _totalSupply = _totalSupply.sub(BFEE);
            emit Transfer(sender, address(0), BFEE);
        }

        return amount.sub(feeAmount).sub(BFEE);
    }

    function manualSwap() public onlyOwner swapping { 
        if(AmountLiquidityFee > 0) swapForLiquidity(AmountLiquidityFee); 
        if(AmountMarketingFee > 0) swapForMarketing(AmountMarketingFee);
        if(AmountTeamFee > 0) swapForTeam(AmountTeamFee);
    }

    function addLiquidity() internal swapping {

        if(AmountLiquidityFee > 0){
            swapForLiquidity(AmountLiquidityFee);
        }

        if(AmountMarketingFee > 0){
            swapForMarketing(AmountMarketingFee);
        }

        if(AmountTeamFee > 0){
            swapForTeam(AmountTeamFee);
        }

    }

    function shouldTakeFee(address from, address to)
        internal
        view
        returns (bool)
    {
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            return false;
        }        
        else{
            return (automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]);
        }
    }

    function shouldAddLiquidity() internal view returns (bool) {

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        return
            _autoAddLiquidity && 
            !inSwap && 
            canSwap &&
            !automatedMarketMakerPairs[msg.sender];
    }

    function setAutoAddLiquidity(bool _flag) external onlyOwner {
        if(_flag) {
            _autoAddLiquidity = _flag;
        } else {
            _autoAddLiquidity = _flag;
        }
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        returns (bool)
    {
        uint256 oldValue = _allowances[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowances[msg.sender][spender] = 0;
        } else {
            _allowances[msg.sender][spender] = oldValue.sub(
                subtractedValue
            );
        }
        emit Approval(
            msg.sender,
            spender,
            _allowances[msg.sender][spender]
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        external
        returns (bool)
    {
        _allowances[msg.sender][spender] = _allowances[msg.sender][
            spender
        ].add(addedValue);
        emit Approval(
            msg.sender,
            spender,
            _allowances[msg.sender][spender]
        );
        return true;
    }

    function approve(address spender, uint256 value)
        external
        override
        returns (bool)
    {
        _approve(msg.sender,spender,value);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 checkFeeExempt(address _addr) external view returns (bool) {
        return _isExcludedFromFees[_addr];
    }

    function enableDisableTxLimit(bool _status) public onlyOwner {
        EnableTransactionLimit = _status;
    }

    function enableDisableWalletLimit(bool _status) public onlyOwner {
        checkWalletLimit = _status;
    }

    function setBuyFee(
            uint _newLp,
            uint _newMarketing,
            uint _newTeam,
            uint _newBurn
        ) public onlyOwner {
      
        buyLiquidityFee = _newLp;
        buyMarketingFee = _newMarketing;
        buyTeamFee = _newTeam;
        buyBurnFee = _newBurn;
    }

    function setSellFee(
            uint _newLp,
            uint _newMarketing,
            uint _newTeam,
            uint _newBurn
        ) public onlyOwner {

        sellLiquidityFee = _newLp;
        sellMarketingFee = _newMarketing;
        sellTeamFee = _newTeam;
        sellBurnFee = _newBurn;
    }

    function clearStuckBalance(address _receiver) external onlyOwner {
        uint256 balance = address(this).balance;
        payable(_receiver).transfer(balance);
    }

    function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyOwner returns (bool success){
        return IERC20(tokenAddress).transfer(_receiver, tokens);
    }

    function setMarketingWallet(address _marketing) public onlyOwner {
        marketingWallet = _marketing;
    }

    function setTeamWallet(address _team) public onlyOwner {
        teamWallet = _team;
    }

    function setLiquidityWallet(address _Liquidity) public onlyOwner {
        liquidityWallet = _Liquidity;
    }

    function setMaxWalletLimit(uint _value) public onlyOwner {
        MaxWalletLimit = _value;
    }

    function setMaxTxLimit(uint _value) public onlyOwner {
        MaxTxLimit = _value; 
    }

    function getCirculatingSupply() public view returns (uint256) {
        return
            _totalSupply.sub(_balances[deadWallet]).sub(_balances[ZeroWallet]);
    }

    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    function manualSync() external {
        IUniSwapPair(pair).sync();
    }

    function setLP(address _address) external onlyOwner {
        pairContract = IUniSwapPair(_address);
        pair = _address;
    }

    function setAutomaticPairMarket(address _addr,bool _status) public onlyOwner {
        if(_status) {
            require(!automatedMarketMakerPairs[_addr],"Pair Already Set!!");
        }
        automatedMarketMakerPairs[_addr] = _status;
        isWalletLimitExempt[_addr] = true;
    }

    function setWhitelistFee(address _addr,bool _status) external onlyOwner {
        require(_isExcludedFromFees[_addr] != _status, "Error: Not changed");
        _isExcludedFromFees[_addr] = _status;
    }

    function setEdTxLimit(address _addr,bool _status) external onlyOwner {
        isTxLimitExempt[_addr] = _status;
    }

    function setEdWalletLimit(address _addr,bool _status) external onlyOwner {
        isWalletLimitExempt[_addr] = _status;
    }

    function setBotBlacklist(address _botAddress, bool _flag) external onlyOwner {
        blacklist[_botAddress] = _flag;    
    }

    function setMinSwapAmount(uint _value) external onlyOwner {
        swapTokensAtAmount = _value;
    }
    
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }
   
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function swapForMarketing(uint _tokens) private {
        uint initalBalance = address(this).balance;
        swapTokensForEth(_tokens);
        uint recieveBalance = address(this).balance.sub(initalBalance);
        AmountMarketingFee = AmountMarketingFee.sub(_tokens);
        payable(marketingWallet).transfer(recieveBalance);
    }

    function swapForTeam(uint _tokens) private {
        uint initalBalance = address(this).balance;
        swapTokensForEth(_tokens);
        uint recieveBalance = address(this).balance.sub(initalBalance);
        AmountTeamFee = AmountTeamFee.sub(_tokens);
        payable(teamWallet).transfer(recieveBalance);
    }

    function swapForLiquidity(uint _tokens) private {
        uint half = AmountLiquidityFee.div(2);
        uint otherhalf = AmountLiquidityFee.sub(half);
        uint initalBalance = address(this).balance;
        swapTokensForEth(half);
        uint recieveBalance = address(this).balance.sub(initalBalance);
        AmountLiquidityFee = AmountLiquidityFee.sub(_tokens);
        addLiquidity(otherhalf,recieveBalance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);
        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            liquidityWallet,
            block.timestamp
        );

    }

    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] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

    }

    receive() external payable {}

}

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"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"AmountLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","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":"_status","type":"bool"}],"name":"enableDisableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract IUniSwapPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAutomaticPairMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_botAddress","type":"address"},{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setBotBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLp","type":"uint256"},{"internalType":"uint256","name":"_newMarketing","type":"uint256"},{"internalType":"uint256","name":"_newTeam","type":"uint256"},{"internalType":"uint256","name":"_newBurn","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setEdTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setEdWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_Liquidity","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMinSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLp","type":"uint256"},{"internalType":"uint256","name":"_newMarketing","type":"uint256"},{"internalType":"uint256","name":"_newTeam","type":"uint256"},{"internalType":"uint256","name":"_newBurn","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"}],"name":"setTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600a600381905560286004819055601e600581905560006006819055600784905560089290925560095581556103e8600e55600f80546001600160a01b031990811673beffb0d55a03d9dfbb2d075ea823805510ac82ed1790915560108054909116736d1990d445c4c40585ecff065b1d2fe50b88e8591790556200008c90601290620008b1565b6200009c90633b9aca0062000999565b601755620000d7600e54620000c36001601754620005be60201b620016f41790919060201c565b6200061e60201b620017391790919060201c565b601855620000fe600e54620000c36014601754620005be60201b620016f41790919060201c565b60195562000125600e54620000c36014601754620005be60201b620016f41790919060201c565b601a55601b8054610100600160ff19928316811761ff00191691909117909255601e805490911690911790556020805460ff60a01b191690553480156200016b57600080fd5b50604080518082018252600c81526b436c6966666f726420496e7560a01b60208083019182528351808501909452600884526710d312519193d49160c21b908401528151919291601291620001c49160009190620006ba565b508151620001da906001906020850190620006ba565b506002805460ff191660ff9290921691909117610100600160a81b0319166101003302179055505060208054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0319909116178082556040805163c45a015560e01b815290516001600160a01b039092169263c45a015592600480840193829003018186803b1580156200026857600080fd5b505afa1580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000760565b60208054604080516315ab88c960e31b815290516001600160a01b039485169463c9c653969493169263ad5c46489260048082019391829003018186803b158015620002ee57600080fd5b505afa15801562000303573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000329919062000760565b306040518363ffffffff1660e01b81526004016200034992919062000789565b602060405180830381600087803b1580156200036457600080fd5b505af115801562000379573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039f919062000760565b601e8054610100600160a81b0319166101006001600160a01b039384168102919091178255306000908152601d602090815260408083208254871684528252808320600019905560118054336001600160a01b0319918216179091559454601f80549590910490961693909416831790945590815260169092528120805460ff19166001908117909155906015906200043762000668565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601e5461010090049091168152601590925280822080548416600190811790915530835290822080549093168117909255601390620004a362000668565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526013909252812080549092166001908117909255601490620004f362000668565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260149092528120805490921660011790915560175490601c906200054562000668565b6001600160a01b031681526020810191909152604001600020556200056962000668565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601754604051620005b091906200083a565b60405180910390a362000a0e565b600082620005cf5750600062000618565b6000620005dd838562000999565b905082620005ec858362000843565b14620006155760405162461bcd60e51b81526004016200060c90620007f9565b60405180910390fd5b90505b92915050565b60006200061583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200067c60201b60201c565b60025461010090046001600160a01b031690565b60008183620006a05760405162461bcd60e51b81526004016200060c9190620007a3565b506000620006af848662000843565b9150505b9392505050565b828054620006c890620009bb565b90600052602060002090601f016020900481019282620006ec576000855562000737565b82601f106200070757805160ff191683800117855562000737565b8280016001018555821562000737579182015b82811115620007375782518255916020019190600101906200071a565b506200074592915062000749565b5090565b5b808211156200074557600081556001016200074a565b60006020828403121562000772578081fd5b81516001600160a01b038116811462000615578182fd5b6001600160a01b0392831681529116602082015260400190565b6000602080835283518082850152825b81811015620007d157858101830151858201604001528201620007b3565b81811115620007e35783604083870101525b50601f01601f1916929092016040019392505050565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b90815260200190565b6000826200085f57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611620008785750620008a8565b8187048211156200088d576200088d620009f8565b808616156200089b57918102915b9490941c93800262000867565b94509492505050565b6000620006156000198484600082620008cd57506001620006b3565b81620008dc57506000620006b3565b8160018114620008f55760028114620009005762000934565b6001915050620006b3565b60ff841115620009145762000914620009f8565b6001841b9150848211156200092d576200092d620009f8565b50620006b3565b5060208310610133831016604e8410600b84101617156200096c575081810a83811115620009665762000966620009f8565b620006b3565b6200097b848484600162000864565b808604821115620009905762000990620009f8565b02949350505050565b6000816000190483118215151615620009b657620009b6620009f8565b500290565b600281046001821680620009d057607f821691505b60208210811415620009f257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b612ab78062000a1e6000396000f3fe6080604052600436106103fe5760003560e01c80637e504d5911610213578063cfe0e61911610123578063e71dc3f5116100ab578063f63743421161007a578063f637434214610aeb578063f832679514610b00578063f872858a14610b15578063f887ea4014610b2a578063f9f92be414610b3f57610405565b8063e71dc3f514610a81578063ea8b2c4414610a96578063f11a24d314610ab6578063f2fde38b14610acb57610405565b8063dd62ed3e116100f2578063dd62ed3e146109ec578063dde04b9514610a0c578063e2f4560514610a2c578063e5711e8b14610a41578063e653da0814610a6157610405565b8063cfe0e6191461098d578063d4399790146109a2578063d4698016146109c2578063d729715f146109d757610405565b806395d89b41116101a6578063a9059cbb11610175578063a9059cbb146108f8578063adb873bd14610918578063b62496f51461092d578063c867d60b1461094d578063cfbac92f1461096d57610405565b806395d89b41146108995780639c2e4ac6146108ae578063a457c2d7146108c3578063a8aa1b31146108e357610405565b80638c5a133d116101e25780638c5a133d1461083a5780638da5cb5b1461085a5780638f32d59b1461086f578063921369131461088457610405565b80637e504d59146107d057806383b4ac68146107f057806385261485146108055780638b42507f1461081a57610405565b806337c9be871161030e57806364f5a5bb116102a1578063728d41c911610270578063728d41c914610751578063753d02a11461077157806375f0a87414610786578063764d72bf1461079b5780637bce5a04146107bb57610405565b806364f5a5bb146106e75780636912652c1461070757806370a082311461071c578063715018a61461073c57610405565b806351bc3c85116102dd57806351bc3c851461067d57806359927044146106925780635d098b38146106a75780636140a51e146106c757610405565b806337c9be871461060657806339509351146106265780633eaaf86b146106465780634d709adf1461065b57610405565b80632563ae83116103915780632ed9aed1116103605780632ed9aed11461057a5780632f34d2821461058f578063313ce567146105af578063320d4534146105d157806333490191146105f157610405565b80632563ae8314610510578063296f0a0c146105305780632b112e49146105505780632e0f26251461056557610405565b8063180fe7c9116103cd578063180fe7c9146104a657806318160ddd146104c657806323a2f1fc146104db57806323b872dd146104f057610405565b806306fdde031461040a578063095ea7b3146104355780631525ff7d14610462578063180b0d7e1461048457610405565b3661040557005b600080fd5b34801561041657600080fd5b5061041f610b5f565b60405161042c91906125f6565b60405180910390f35b34801561044157600080fd5b506104556104503660046124aa565b610bf1565b60405161042c91906125eb565b34801561046e57600080fd5b5061048261047d3660046123cd565b610c08565b005b34801561049057600080fd5b50610499610c3b565b60405161042c9190612918565b3480156104b257600080fd5b506104826104c136600461247d565b610c41565b3480156104d257600080fd5b50610499610c7d565b3480156104e757600080fd5b50610499610c83565b3480156104fc57600080fd5b5061045561050b36600461243d565b610c89565b34801561051c57600080fd5b5061048261052b3660046124d5565b610d63565b34801561053c57600080fd5b5061048261054b3660046123cd565b610d8e565b34801561055c57600080fd5b50610499610dc1565b34801561057157600080fd5b50610499610e32565b34801561058657600080fd5b50610499610e37565b34801561059b57600080fd5b506104826105aa3660046123cd565b610e3d565b3480156105bb57600080fd5b506105c4610e8a565b60405161042c9190612991565b3480156105dd57600080fd5b506104826105ec36600461250d565b610e93565b3480156105fd57600080fd5b50610499610ea9565b34801561061257600080fd5b5061048261062136600461247d565b610eaf565b34801561063257600080fd5b506104556106413660046124aa565b610eeb565b34801561065257600080fd5b50610499610f82565b34801561066757600080fd5b50610670610f88565b60405161042c9190612583565b34801561068957600080fd5b50610482610f97565b34801561069e57600080fd5b50610670611003565b3480156106b357600080fd5b506104826106c23660046123cd565b611012565b3480156106d357600080fd5b506104826106e23660046124d5565b611045565b3480156106f357600080fd5b5061048261070236600461250d565b611069565b34801561071357600080fd5b5061045561107f565b34801561072857600080fd5b506104996107373660046123cd565b611088565b34801561074857600080fd5b506104826110a3565b34801561075d57600080fd5b5061048261076c36600461250d565b611103565b34801561077d57600080fd5b50610482611119565b34801561079257600080fd5b50610670611183565b3480156107a757600080fd5b506104826107b63660046123cd565b611192565b3480156107c757600080fd5b506104996111e0565b3480156107dc57600080fd5b506104826107eb36600461247d565b6111e6565b3480156107fc57600080fd5b50610455611222565b34801561081157600080fd5b50610455611233565b34801561082657600080fd5b506104556108353660046123cd565b61123c565b34801561084657600080fd5b50610482610855366004612552565b611251565b34801561086657600080fd5b50610670611276565b34801561087b57600080fd5b5061045561128a565b34801561089057600080fd5b506104996112a0565b3480156108a557600080fd5b5061041f6112a6565b3480156108ba57600080fd5b506104996112b5565b3480156108cf57600080fd5b506104556108de3660046124aa565b6112bb565b3480156108ef57600080fd5b506106706113a7565b34801561090457600080fd5b506104556109133660046124aa565b6113bb565b34801561092457600080fd5b506104996113e7565b34801561093957600080fd5b506104556109483660046123cd565b6113ed565b34801561095957600080fd5b506104556109683660046123cd565b611402565b34801561097957600080fd5b506104826109883660046124d5565b611417565b34801561099957600080fd5b50610499611453565b3480156109ae57600080fd5b506104556109bd3660046123cd565b611459565b3480156109ce57600080fd5b50610670611477565b3480156109e357600080fd5b50610499611486565b3480156109f857600080fd5b50610499610a07366004612405565b61148c565b348015610a1857600080fd5b50610482610a2736600461247d565b6114b7565b348015610a3857600080fd5b5061049961153b565b348015610a4d57600080fd5b50610455610a5c36600461243d565b611541565b348015610a6d57600080fd5b50610482610a7c366004612552565b6115de565b348015610a8d57600080fd5b50610499611603565b348015610aa257600080fd5b50610482610ab136600461247d565b611609565b348015610ac257600080fd5b50610499611696565b348015610ad757600080fd5b50610482610ae63660046123cd565b61169c565b348015610af757600080fd5b506104996116b6565b348015610b0c57600080fd5b506104996116bc565b348015610b2157600080fd5b506104556116c2565b348015610b3657600080fd5b506106706116d0565b348015610b4b57600080fd5b50610455610b5a3660046123cd565b6116df565b606060008054610b6e90612a0d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9a90612a0d565b8015610be75780601f10610bbc57610100808354040283529160200191610be7565b820191906000526020600020905b815481529060010190602001808311610bca57829003601f168201915b5050505050905090565b6000610bfe33848461177b565b5060015b92915050565b610c1061128a565b610c1957600080fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600e5481565b610c4961128a565b610c5257600080fd5b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b60175490565b601a5481565b6000826001600160a01b038116610c9f57600080fd5b6001600160a01b0385166000908152601d6020908152604080832033845290915290205460001914610d4c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0388166000908152601d82528381203382529091529190912054610d2791859061182f565b6001600160a01b0386166000908152601d602090815260408083203384529091529020555b610d57858585611869565b50600195945050505050565b610d6b61128a565b610d7457600080fd5b601b80549115156101000261ff0019909216919091179055565b610d9661128a565b610d9f57600080fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b601c6020527fb9c6de81004e18dedadca3e5eabaab449ca91dff6f58efc9461da635fe77f8495461dead60009081527fa48bd8e7b1565515cde2859b6cc48308ba05b5325bcf90fb096b9ac0b8087dfc546017549192610e2d929091610e279190611b37565b90611b37565b905090565b601281565b600d5481565b610e4561128a565b610e4e57600080fd5b601f80546001600160a01b0319166001600160a01b03929092169182179055601e8054610100600160a81b031916610100909202919091179055565b60025460ff1690565b610e9b61128a565b610ea457600080fd5b601855565b60195481565b610eb761128a565b610ec057600080fd5b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b336000908152601d602090815260408083206001600160a01b0386168452909152812054610f199083611b79565b336000818152601d602090815260408083206001600160a01b038916808552925291829020849055905190927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591610f719190612918565b60405180910390a350600192915050565b60175481565b601f546001600160a01b031681565b610f9f61128a565b610fa857600080fd5b6020805460ff60a01b1916600160a01b179055600b5415610fce57610fce600b54611ba8565b600c5415610fe157610fe1600c54611c0e565b600d5415610ff457610ff4600d54611c71565b6020805460ff60a01b19169055565b6010546001600160a01b031681565b61101a61128a565b61102357600080fd5b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b61104d61128a565b61105657600080fd5b601b805460ff1916911515919091179055565b61107161128a565b61107a57600080fd5b601a55565b601e5460ff1681565b6001600160a01b03166000908152601c602052604090205490565b6110ab61128a565b6110b457600080fd5b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260028054610100600160a81b0319169055565b61110b61128a565b61111457600080fd5b601955565b601e60019054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561116957600080fd5b505af115801561117d573d6000803e3d6000fd5b50505050565b600f546001600160a01b031681565b61119a61128a565b6111a357600080fd5b60405147906001600160a01b0383169082156108fc029083906000818181858888f193505050501580156111db573d6000803e3d6000fd5b505050565b60045481565b6111ee61128a565b6111f757600080fd5b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b602054600160a01b900460ff161590565b601b5460ff1681565b60146020526000908152604090205460ff1681565b61125961128a565b61126257600080fd5b600393909355600491909155600555600655565b60025461010090046001600160a01b031690565b60025461010090046001600160a01b0316331490565b60085481565b606060018054610b6e90612a0d565b60055481565b336000908152601d602090815260408083206001600160a01b038616845290915281205480831061130f57336000908152601d602090815260408083206001600160a01b038816845290915281205561133e565b6113198184611b37565b336000908152601d602090815260408083206001600160a01b03891684529091529020555b336000818152601d602090815260408083206001600160a01b0389168085529252918290205491519092917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916113959190612918565b60405180910390a35060019392505050565b601e5461010090046001600160a01b031681565b6000826001600160a01b0381166113d157600080fd5b6113dc338585611869565b506001949350505050565b600a5481565b60166020526000908152604090205460ff1681565b60156020526000908152604090205460ff1681565b61141f61128a565b61142857600080fd5b801561144157601e805460ff1916821515179055611450565b601e805460ff19168215151790555b50565b600c5481565b6001600160a01b031660009081526013602052604090205460ff1690565b6011546001600160a01b031681565b60095481565b6001600160a01b039182166000908152601d6020908152604080832093909416825291909152205490565b6114bf61128a565b6114c857600080fd5b6001600160a01b03821660009081526013602052604090205460ff16151581151514156115105760405162461bcd60e51b8152600401611507906128ec565b60405180910390fd5b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b60185481565b600061154b61128a565b61155457600080fd5b60405163a9059cbb60e01b81526001600160a01b0385169063a9059cbb906115829086908690600401612597565b602060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d491906124f1565b90505b9392505050565b6115e661128a565b6115ef57600080fd5b600793909355600891909155600955600a55565b60065481565b61161161128a565b61161a57600080fd5b8015611659576001600160a01b03821660009081526016602052604090205460ff16156116595760405162461bcd60e51b8152600401611507906126ce565b6001600160a01b039091166000908152601660209081526040808320805494151560ff199586161790556015909152902080549091166001179055565b60035481565b6116a461128a565b6116ad57600080fd5b61145081611cd4565b60075481565b600b5481565b601b54610100900460ff1681565b6020546001600160a01b031681565b60126020526000908152604090205460ff1681565b60008261170357506000610c02565b600061170f83856129d7565b90508261171c85836129b7565b146115d75760405162461bcd60e51b815260040161150790612780565b60006115d783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d4e565b6001600160a01b0383166117a15760405162461bcd60e51b81526004016115079061285c565b6001600160a01b0382166117c75760405162461bcd60e51b81526004016115079061268c565b6001600160a01b038084166000818152601d602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611822908590612918565b60405180910390a3505050565b600081848411156118535760405162461bcd60e51b815260040161150791906125f6565b50600061186084866129f6565b95945050505050565b60006001600160a01b0384166118915760405162461bcd60e51b815260040161150790612817565b6001600160a01b0383166118b75760405162461bcd60e51b815260040161150790612649565b600082116118d75760405162461bcd60e51b8152600401611507906127e7565b6001600160a01b03841660009081526012602052604090205460ff1615801561191957506001600160a01b03831660009081526012602052604090205460ff16155b6119355760405162461bcd60e51b8152600401611507906127c1565b6001600160a01b03841660009081526014602052604090205460ff1615801561197757506001600160a01b03831660009081526014602052604090205460ff16155b80156119855750601b5460ff165b156119ac57601a548211156119ac5760405162461bcd60e51b815260040161150790612731565b602054600160a01b900460ff16156119d0576119c9848484611d7c565b90506115d7565b6119d8611df1565b156119e5576119e5610fa8565b6001600160a01b0384166000908152601c6020526040902054611a089083611b37565b6001600160a01b0385166000908152601c6020526040812091909155611a2e8585611e4f565b611a385782611a43565b611a43858585611ee1565b601b54909150610100900460ff168015611a7657506001600160a01b03841660009081526015602052604090205460ff16155b15611aaf57601954611a9182611a8b87611088565b90611b79565b1115611aaf5760405162461bcd60e51b8152600401611507906128a0565b6001600160a01b0384166000908152601c6020526040902054611ad29082611b79565b6001600160a01b038086166000818152601c602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b24908590612918565b60405180910390a3506001949350505050565b60006115d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061182f565b600080611b86838561299f565b9050838110156115d75760405162461bcd60e51b8152600401611507906126fa565b600b54600090611bb9906002611739565b90506000611bd282600b54611b3790919063ffffffff16565b905047611bde8361219d565b6000611bea4783611b37565b600b54909150611bfa9086611b37565b600b55611c078382612323565b5050505050565b47611c188261219d565b6000611c244783611b37565b600c54909150611c349084611b37565b600c55600f546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561117d573d6000803e3d6000fd5b47611c7b8261219d565b6000611c874783611b37565b600d54909150611c979084611b37565b600d556010546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561117d573d6000803e3d6000fd5b6001600160a01b038116611ce757600080fd5b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60008183611d6f5760405162461bcd60e51b815260040161150791906125f6565b50600061186084866129b7565b6001600160a01b0383166000908152601c6020526040812054611d9f9083611b37565b6001600160a01b038086166000908152601c60205260408082209390935590851681522054611dce9083611b79565b6001600160a01b0384166000908152601c60205260409020555060019392505050565b600080611dfd30611088565b601854601e549192508210159060ff168015611e235750602054600160a01b900460ff16155b8015611e2c5750805b8015611e4857503360009081526016602052604090205460ff16155b9250505090565b6001600160a01b03821660009081526013602052604081205460ff1680611e8e57506001600160a01b03821660009081526013602052604090205460ff165b15611e9b57506000610c02565b6001600160a01b03831660009081526016602052604090205460ff1680611eda57506001600160a01b03821660009081526016602052604090205460ff165b9050610c02565b6001600160a01b0383166000908152601660205260408120548190819081908190819060ff1615611fd157611f2d600e54611f276003548a6116f490919063ffffffff16565b90611739565b935083600b6000828254611f41919061299f565b9091555050600e54600454611f5c9190611f27908a906116f4565b925082600c6000828254611f70919061299f565b9091555050600e54600554611f8b9190611f27908a906116f4565b915081600d6000828254611f9f919061299f565b9091555050600e54600654611fba9190611f27908a906116f4565b9050611fca82611a8b8686611b79565b94506120ad565b6001600160a01b03881660009081526016602052604090205460ff16156120ad5761200d600e54611f276007548a6116f490919063ffffffff16565b935083600b6000828254612021919061299f565b9091555050600e5460085461203c9190611f27908a906116f4565b925082600c6000828254612050919061299f565b9091555050600e5460095461206b9190611f27908a906116f4565b915081600d600082825461207f919061299f565b9091555050600e54600a5461209a9190611f27908a906116f4565b90506120aa82611a8b8686611b79565b94505b841561212557306000908152601c60205260409020546120cd9086611b79565b306000818152601c6020526040908190209290925590516001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061211c908990612918565b60405180910390a35b8015612182576017546121389082611b37565b6017556040516000906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612179908590612918565b60405180910390a35b61219081610e278988611b37565b9998505050505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121e057634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092018101919091528054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561223357600080fd5b505afa158015612247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226b91906123e9565b8160018151811061228c57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152546122b4913091168461177b565b60205460405163791ac94760e01b81526001600160a01b039091169063791ac947906122ed908590600090869030904290600401612921565b600060405180830381600087803b15801561230757600080fd5b505af115801561231b573d6000803e3d6000fd5b505050505050565b60205461233b9030906001600160a01b03168461177b565b60205460115460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261237b92309289926000928392169042906004016125b0565b6060604051808303818588803b15801561239457600080fd5b505af11580156123a8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c079190612525565b6000602082840312156123de578081fd5b81356115d781612a5e565b6000602082840312156123fa578081fd5b81516115d781612a5e565b60008060408385031215612417578081fd5b823561242281612a5e565b9150602083013561243281612a5e565b809150509250929050565b600080600060608486031215612451578081fd5b833561245c81612a5e565b9250602084013561246c81612a5e565b929592945050506040919091013590565b6000806040838503121561248f578182fd5b823561249a81612a5e565b9150602083013561243281612a73565b600080604083850312156124bc578182fd5b82356124c781612a5e565b946020939093013593505050565b6000602082840312156124e6578081fd5b81356115d781612a73565b600060208284031215612502578081fd5b81516115d781612a73565b60006020828403121561251e578081fd5b5035919050565b600080600060608486031215612539578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612567578081fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b8181101561262257858101830151858201604001528201612606565b818111156126335783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601290820152715061697220416c726561647920536574212160701b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602f908201527f4572726f723a205472616e7366657220616d6f756e742065786365656473207460408201526e34329036b0bc2a3c20b6b7bab73a1760891b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252600c908201526b1a5b97d89b1858dadb1a5cdd60a21b604082015260600190565b6020808252601690820152754572726f723a20496e76616c696420416d6f756e742160501b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4572726f723a205472616e7366657220416d6f756e742065786365656473205760408201526b30b63632ba102634b6b4ba1760a11b606082015260800190565b602080825260129082015271115c9c9bdc8e88139bdd0818da185b99d95960721b604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156129705784516001600160a01b03168352938301939183019160010161294b565b50506001600160a01b03969096166060850152505050608001529392505050565b60ff91909116815260200190565b600082198211156129b2576129b2612a48565b500190565b6000826129d257634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156129f1576129f1612a48565b500290565b600082821015612a0857612a08612a48565b500390565b600281046001821680612a2157607f821691505b60208210811415612a4257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461145057600080fd5b801515811461145057600080fdfea2646970667358221220b1df3b021b978f835381aeafd327c93ec10ad8a2175b6c1fd00ec1f1ffdf2e9764736f6c63430008000033

Deployed Bytecode

0x6080604052600436106103fe5760003560e01c80637e504d5911610213578063cfe0e61911610123578063e71dc3f5116100ab578063f63743421161007a578063f637434214610aeb578063f832679514610b00578063f872858a14610b15578063f887ea4014610b2a578063f9f92be414610b3f57610405565b8063e71dc3f514610a81578063ea8b2c4414610a96578063f11a24d314610ab6578063f2fde38b14610acb57610405565b8063dd62ed3e116100f2578063dd62ed3e146109ec578063dde04b9514610a0c578063e2f4560514610a2c578063e5711e8b14610a41578063e653da0814610a6157610405565b8063cfe0e6191461098d578063d4399790146109a2578063d4698016146109c2578063d729715f146109d757610405565b806395d89b41116101a6578063a9059cbb11610175578063a9059cbb146108f8578063adb873bd14610918578063b62496f51461092d578063c867d60b1461094d578063cfbac92f1461096d57610405565b806395d89b41146108995780639c2e4ac6146108ae578063a457c2d7146108c3578063a8aa1b31146108e357610405565b80638c5a133d116101e25780638c5a133d1461083a5780638da5cb5b1461085a5780638f32d59b1461086f578063921369131461088457610405565b80637e504d59146107d057806383b4ac68146107f057806385261485146108055780638b42507f1461081a57610405565b806337c9be871161030e57806364f5a5bb116102a1578063728d41c911610270578063728d41c914610751578063753d02a11461077157806375f0a87414610786578063764d72bf1461079b5780637bce5a04146107bb57610405565b806364f5a5bb146106e75780636912652c1461070757806370a082311461071c578063715018a61461073c57610405565b806351bc3c85116102dd57806351bc3c851461067d57806359927044146106925780635d098b38146106a75780636140a51e146106c757610405565b806337c9be871461060657806339509351146106265780633eaaf86b146106465780634d709adf1461065b57610405565b80632563ae83116103915780632ed9aed1116103605780632ed9aed11461057a5780632f34d2821461058f578063313ce567146105af578063320d4534146105d157806333490191146105f157610405565b80632563ae8314610510578063296f0a0c146105305780632b112e49146105505780632e0f26251461056557610405565b8063180fe7c9116103cd578063180fe7c9146104a657806318160ddd146104c657806323a2f1fc146104db57806323b872dd146104f057610405565b806306fdde031461040a578063095ea7b3146104355780631525ff7d14610462578063180b0d7e1461048457610405565b3661040557005b600080fd5b34801561041657600080fd5b5061041f610b5f565b60405161042c91906125f6565b60405180910390f35b34801561044157600080fd5b506104556104503660046124aa565b610bf1565b60405161042c91906125eb565b34801561046e57600080fd5b5061048261047d3660046123cd565b610c08565b005b34801561049057600080fd5b50610499610c3b565b60405161042c9190612918565b3480156104b257600080fd5b506104826104c136600461247d565b610c41565b3480156104d257600080fd5b50610499610c7d565b3480156104e757600080fd5b50610499610c83565b3480156104fc57600080fd5b5061045561050b36600461243d565b610c89565b34801561051c57600080fd5b5061048261052b3660046124d5565b610d63565b34801561053c57600080fd5b5061048261054b3660046123cd565b610d8e565b34801561055c57600080fd5b50610499610dc1565b34801561057157600080fd5b50610499610e32565b34801561058657600080fd5b50610499610e37565b34801561059b57600080fd5b506104826105aa3660046123cd565b610e3d565b3480156105bb57600080fd5b506105c4610e8a565b60405161042c9190612991565b3480156105dd57600080fd5b506104826105ec36600461250d565b610e93565b3480156105fd57600080fd5b50610499610ea9565b34801561061257600080fd5b5061048261062136600461247d565b610eaf565b34801561063257600080fd5b506104556106413660046124aa565b610eeb565b34801561065257600080fd5b50610499610f82565b34801561066757600080fd5b50610670610f88565b60405161042c9190612583565b34801561068957600080fd5b50610482610f97565b34801561069e57600080fd5b50610670611003565b3480156106b357600080fd5b506104826106c23660046123cd565b611012565b3480156106d357600080fd5b506104826106e23660046124d5565b611045565b3480156106f357600080fd5b5061048261070236600461250d565b611069565b34801561071357600080fd5b5061045561107f565b34801561072857600080fd5b506104996107373660046123cd565b611088565b34801561074857600080fd5b506104826110a3565b34801561075d57600080fd5b5061048261076c36600461250d565b611103565b34801561077d57600080fd5b50610482611119565b34801561079257600080fd5b50610670611183565b3480156107a757600080fd5b506104826107b63660046123cd565b611192565b3480156107c757600080fd5b506104996111e0565b3480156107dc57600080fd5b506104826107eb36600461247d565b6111e6565b3480156107fc57600080fd5b50610455611222565b34801561081157600080fd5b50610455611233565b34801561082657600080fd5b506104556108353660046123cd565b61123c565b34801561084657600080fd5b50610482610855366004612552565b611251565b34801561086657600080fd5b50610670611276565b34801561087b57600080fd5b5061045561128a565b34801561089057600080fd5b506104996112a0565b3480156108a557600080fd5b5061041f6112a6565b3480156108ba57600080fd5b506104996112b5565b3480156108cf57600080fd5b506104556108de3660046124aa565b6112bb565b3480156108ef57600080fd5b506106706113a7565b34801561090457600080fd5b506104556109133660046124aa565b6113bb565b34801561092457600080fd5b506104996113e7565b34801561093957600080fd5b506104556109483660046123cd565b6113ed565b34801561095957600080fd5b506104556109683660046123cd565b611402565b34801561097957600080fd5b506104826109883660046124d5565b611417565b34801561099957600080fd5b50610499611453565b3480156109ae57600080fd5b506104556109bd3660046123cd565b611459565b3480156109ce57600080fd5b50610670611477565b3480156109e357600080fd5b50610499611486565b3480156109f857600080fd5b50610499610a07366004612405565b61148c565b348015610a1857600080fd5b50610482610a2736600461247d565b6114b7565b348015610a3857600080fd5b5061049961153b565b348015610a4d57600080fd5b50610455610a5c36600461243d565b611541565b348015610a6d57600080fd5b50610482610a7c366004612552565b6115de565b348015610a8d57600080fd5b50610499611603565b348015610aa257600080fd5b50610482610ab136600461247d565b611609565b348015610ac257600080fd5b50610499611696565b348015610ad757600080fd5b50610482610ae63660046123cd565b61169c565b348015610af757600080fd5b506104996116b6565b348015610b0c57600080fd5b506104996116bc565b348015610b2157600080fd5b506104556116c2565b348015610b3657600080fd5b506106706116d0565b348015610b4b57600080fd5b50610455610b5a3660046123cd565b6116df565b606060008054610b6e90612a0d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9a90612a0d565b8015610be75780601f10610bbc57610100808354040283529160200191610be7565b820191906000526020600020905b815481529060010190602001808311610bca57829003601f168201915b5050505050905090565b6000610bfe33848461177b565b5060015b92915050565b610c1061128a565b610c1957600080fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600e5481565b610c4961128a565b610c5257600080fd5b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b60175490565b601a5481565b6000826001600160a01b038116610c9f57600080fd5b6001600160a01b0385166000908152601d6020908152604080832033845290915290205460001914610d4c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0388166000908152601d82528381203382529091529190912054610d2791859061182f565b6001600160a01b0386166000908152601d602090815260408083203384529091529020555b610d57858585611869565b50600195945050505050565b610d6b61128a565b610d7457600080fd5b601b80549115156101000261ff0019909216919091179055565b610d9661128a565b610d9f57600080fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b601c6020527fb9c6de81004e18dedadca3e5eabaab449ca91dff6f58efc9461da635fe77f8495461dead60009081527fa48bd8e7b1565515cde2859b6cc48308ba05b5325bcf90fb096b9ac0b8087dfc546017549192610e2d929091610e279190611b37565b90611b37565b905090565b601281565b600d5481565b610e4561128a565b610e4e57600080fd5b601f80546001600160a01b0319166001600160a01b03929092169182179055601e8054610100600160a81b031916610100909202919091179055565b60025460ff1690565b610e9b61128a565b610ea457600080fd5b601855565b60195481565b610eb761128a565b610ec057600080fd5b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b336000908152601d602090815260408083206001600160a01b0386168452909152812054610f199083611b79565b336000818152601d602090815260408083206001600160a01b038916808552925291829020849055905190927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591610f719190612918565b60405180910390a350600192915050565b60175481565b601f546001600160a01b031681565b610f9f61128a565b610fa857600080fd5b6020805460ff60a01b1916600160a01b179055600b5415610fce57610fce600b54611ba8565b600c5415610fe157610fe1600c54611c0e565b600d5415610ff457610ff4600d54611c71565b6020805460ff60a01b19169055565b6010546001600160a01b031681565b61101a61128a565b61102357600080fd5b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b61104d61128a565b61105657600080fd5b601b805460ff1916911515919091179055565b61107161128a565b61107a57600080fd5b601a55565b601e5460ff1681565b6001600160a01b03166000908152601c602052604090205490565b6110ab61128a565b6110b457600080fd5b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260028054610100600160a81b0319169055565b61110b61128a565b61111457600080fd5b601955565b601e60019054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561116957600080fd5b505af115801561117d573d6000803e3d6000fd5b50505050565b600f546001600160a01b031681565b61119a61128a565b6111a357600080fd5b60405147906001600160a01b0383169082156108fc029083906000818181858888f193505050501580156111db573d6000803e3d6000fd5b505050565b60045481565b6111ee61128a565b6111f757600080fd5b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b602054600160a01b900460ff161590565b601b5460ff1681565b60146020526000908152604090205460ff1681565b61125961128a565b61126257600080fd5b600393909355600491909155600555600655565b60025461010090046001600160a01b031690565b60025461010090046001600160a01b0316331490565b60085481565b606060018054610b6e90612a0d565b60055481565b336000908152601d602090815260408083206001600160a01b038616845290915281205480831061130f57336000908152601d602090815260408083206001600160a01b038816845290915281205561133e565b6113198184611b37565b336000908152601d602090815260408083206001600160a01b03891684529091529020555b336000818152601d602090815260408083206001600160a01b0389168085529252918290205491519092917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916113959190612918565b60405180910390a35060019392505050565b601e5461010090046001600160a01b031681565b6000826001600160a01b0381166113d157600080fd5b6113dc338585611869565b506001949350505050565b600a5481565b60166020526000908152604090205460ff1681565b60156020526000908152604090205460ff1681565b61141f61128a565b61142857600080fd5b801561144157601e805460ff1916821515179055611450565b601e805460ff19168215151790555b50565b600c5481565b6001600160a01b031660009081526013602052604090205460ff1690565b6011546001600160a01b031681565b60095481565b6001600160a01b039182166000908152601d6020908152604080832093909416825291909152205490565b6114bf61128a565b6114c857600080fd5b6001600160a01b03821660009081526013602052604090205460ff16151581151514156115105760405162461bcd60e51b8152600401611507906128ec565b60405180910390fd5b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b60185481565b600061154b61128a565b61155457600080fd5b60405163a9059cbb60e01b81526001600160a01b0385169063a9059cbb906115829086908690600401612597565b602060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d491906124f1565b90505b9392505050565b6115e661128a565b6115ef57600080fd5b600793909355600891909155600955600a55565b60065481565b61161161128a565b61161a57600080fd5b8015611659576001600160a01b03821660009081526016602052604090205460ff16156116595760405162461bcd60e51b8152600401611507906126ce565b6001600160a01b039091166000908152601660209081526040808320805494151560ff199586161790556015909152902080549091166001179055565b60035481565b6116a461128a565b6116ad57600080fd5b61145081611cd4565b60075481565b600b5481565b601b54610100900460ff1681565b6020546001600160a01b031681565b60126020526000908152604090205460ff1681565b60008261170357506000610c02565b600061170f83856129d7565b90508261171c85836129b7565b146115d75760405162461bcd60e51b815260040161150790612780565b60006115d783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d4e565b6001600160a01b0383166117a15760405162461bcd60e51b81526004016115079061285c565b6001600160a01b0382166117c75760405162461bcd60e51b81526004016115079061268c565b6001600160a01b038084166000818152601d602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611822908590612918565b60405180910390a3505050565b600081848411156118535760405162461bcd60e51b815260040161150791906125f6565b50600061186084866129f6565b95945050505050565b60006001600160a01b0384166118915760405162461bcd60e51b815260040161150790612817565b6001600160a01b0383166118b75760405162461bcd60e51b815260040161150790612649565b600082116118d75760405162461bcd60e51b8152600401611507906127e7565b6001600160a01b03841660009081526012602052604090205460ff1615801561191957506001600160a01b03831660009081526012602052604090205460ff16155b6119355760405162461bcd60e51b8152600401611507906127c1565b6001600160a01b03841660009081526014602052604090205460ff1615801561197757506001600160a01b03831660009081526014602052604090205460ff16155b80156119855750601b5460ff165b156119ac57601a548211156119ac5760405162461bcd60e51b815260040161150790612731565b602054600160a01b900460ff16156119d0576119c9848484611d7c565b90506115d7565b6119d8611df1565b156119e5576119e5610fa8565b6001600160a01b0384166000908152601c6020526040902054611a089083611b37565b6001600160a01b0385166000908152601c6020526040812091909155611a2e8585611e4f565b611a385782611a43565b611a43858585611ee1565b601b54909150610100900460ff168015611a7657506001600160a01b03841660009081526015602052604090205460ff16155b15611aaf57601954611a9182611a8b87611088565b90611b79565b1115611aaf5760405162461bcd60e51b8152600401611507906128a0565b6001600160a01b0384166000908152601c6020526040902054611ad29082611b79565b6001600160a01b038086166000818152601c602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b24908590612918565b60405180910390a3506001949350505050565b60006115d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061182f565b600080611b86838561299f565b9050838110156115d75760405162461bcd60e51b8152600401611507906126fa565b600b54600090611bb9906002611739565b90506000611bd282600b54611b3790919063ffffffff16565b905047611bde8361219d565b6000611bea4783611b37565b600b54909150611bfa9086611b37565b600b55611c078382612323565b5050505050565b47611c188261219d565b6000611c244783611b37565b600c54909150611c349084611b37565b600c55600f546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561117d573d6000803e3d6000fd5b47611c7b8261219d565b6000611c874783611b37565b600d54909150611c979084611b37565b600d556010546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561117d573d6000803e3d6000fd5b6001600160a01b038116611ce757600080fd5b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60008183611d6f5760405162461bcd60e51b815260040161150791906125f6565b50600061186084866129b7565b6001600160a01b0383166000908152601c6020526040812054611d9f9083611b37565b6001600160a01b038086166000908152601c60205260408082209390935590851681522054611dce9083611b79565b6001600160a01b0384166000908152601c60205260409020555060019392505050565b600080611dfd30611088565b601854601e549192508210159060ff168015611e235750602054600160a01b900460ff16155b8015611e2c5750805b8015611e4857503360009081526016602052604090205460ff16155b9250505090565b6001600160a01b03821660009081526013602052604081205460ff1680611e8e57506001600160a01b03821660009081526013602052604090205460ff165b15611e9b57506000610c02565b6001600160a01b03831660009081526016602052604090205460ff1680611eda57506001600160a01b03821660009081526016602052604090205460ff165b9050610c02565b6001600160a01b0383166000908152601660205260408120548190819081908190819060ff1615611fd157611f2d600e54611f276003548a6116f490919063ffffffff16565b90611739565b935083600b6000828254611f41919061299f565b9091555050600e54600454611f5c9190611f27908a906116f4565b925082600c6000828254611f70919061299f565b9091555050600e54600554611f8b9190611f27908a906116f4565b915081600d6000828254611f9f919061299f565b9091555050600e54600654611fba9190611f27908a906116f4565b9050611fca82611a8b8686611b79565b94506120ad565b6001600160a01b03881660009081526016602052604090205460ff16156120ad5761200d600e54611f276007548a6116f490919063ffffffff16565b935083600b6000828254612021919061299f565b9091555050600e5460085461203c9190611f27908a906116f4565b925082600c6000828254612050919061299f565b9091555050600e5460095461206b9190611f27908a906116f4565b915081600d600082825461207f919061299f565b9091555050600e54600a5461209a9190611f27908a906116f4565b90506120aa82611a8b8686611b79565b94505b841561212557306000908152601c60205260409020546120cd9086611b79565b306000818152601c6020526040908190209290925590516001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061211c908990612918565b60405180910390a35b8015612182576017546121389082611b37565b6017556040516000906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612179908590612918565b60405180910390a35b61219081610e278988611b37565b9998505050505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121e057634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092018101919091528054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561223357600080fd5b505afa158015612247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226b91906123e9565b8160018151811061228c57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152546122b4913091168461177b565b60205460405163791ac94760e01b81526001600160a01b039091169063791ac947906122ed908590600090869030904290600401612921565b600060405180830381600087803b15801561230757600080fd5b505af115801561231b573d6000803e3d6000fd5b505050505050565b60205461233b9030906001600160a01b03168461177b565b60205460115460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261237b92309289926000928392169042906004016125b0565b6060604051808303818588803b15801561239457600080fd5b505af11580156123a8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c079190612525565b6000602082840312156123de578081fd5b81356115d781612a5e565b6000602082840312156123fa578081fd5b81516115d781612a5e565b60008060408385031215612417578081fd5b823561242281612a5e565b9150602083013561243281612a5e565b809150509250929050565b600080600060608486031215612451578081fd5b833561245c81612a5e565b9250602084013561246c81612a5e565b929592945050506040919091013590565b6000806040838503121561248f578182fd5b823561249a81612a5e565b9150602083013561243281612a73565b600080604083850312156124bc578182fd5b82356124c781612a5e565b946020939093013593505050565b6000602082840312156124e6578081fd5b81356115d781612a73565b600060208284031215612502578081fd5b81516115d781612a73565b60006020828403121561251e578081fd5b5035919050565b600080600060608486031215612539578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612567578081fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b8181101561262257858101830151858201604001528201612606565b818111156126335783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601290820152715061697220416c726561647920536574212160701b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602f908201527f4572726f723a205472616e7366657220616d6f756e742065786365656473207460408201526e34329036b0bc2a3c20b6b7bab73a1760891b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252600c908201526b1a5b97d89b1858dadb1a5cdd60a21b604082015260600190565b6020808252601690820152754572726f723a20496e76616c696420416d6f756e742160501b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4572726f723a205472616e7366657220416d6f756e742065786365656473205760408201526b30b63632ba102634b6b4ba1760a11b606082015260800190565b602080825260129082015271115c9c9bdc8e88139bdd0818da185b99d95960721b604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156129705784516001600160a01b03168352938301939183019160010161294b565b50506001600160a01b03969096166060850152505050608001529392505050565b60ff91909116815260200190565b600082198211156129b2576129b2612a48565b500190565b6000826129d257634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156129f1576129f1612a48565b500290565b600082821015612a0857612a08612a48565b500390565b600281046001821680612a2157607f821691505b60208210811415612a4257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461145057600080fd5b801515811461145057600080fdfea2646970667358221220b1df3b021b978f835381aeafd327c93ec10ad8a2175b6c1fd00ec1f1ffdf2e9764736f6c63430008000033

Deployed Bytecode Sourcemap

12309:16519:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12033:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22298:189;;;;;;;;;;-1:-1:-1;22298:189:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24400:92::-;;;;;;;;;;-1:-1:-1;24400:92:0;;;;;:::i;:::-;;:::i;:::-;;13011:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25836:120::-;;;;;;;;;;-1:-1:-1;25836:120:0;;;;;:::i;:::-;;:::i;26354:102::-;;;;;;;;;;;;;:::i;14028:68::-;;;;;;;;;;;;;:::i;15790:447::-;;;;;;;;;;-1:-1:-1;15790:447:0;;;;;:::i;:::-;;:::i;23131:110::-;;;;;;;;;;-1:-1:-1;23131:110:0;;;;;:::i;:::-;;:::i;24500:112::-;;;;;;;;;;-1:-1:-1;24500:112:0;;;;;:::i;:::-;;:::i;24827:167::-;;;;;;;;;;;;;:::i;13737:37::-;;;;;;;;;;;;;:::i;12936:28::-;;;;;;;;;;;;;:::i;25178:134::-;;;;;;;;;;-1:-1:-1;25178:134:0;;;;;:::i;:::-;;:::i;12219:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26238:104::-;;;;;;;;;;-1:-1:-1;26238:104:0;;;;;:::i;:::-;;:::i;13943:72::-;;;;;;;;;;;;;:::i;26100:130::-;;;;;;;;;;-1:-1:-1;26100:130:0;;;;;:::i;:::-;;:::i;21902:388::-;;;;;;;;;;-1:-1:-1;21902:388:0;;;;;:::i;:::-;;:::i;13783:61::-;;;;;;;;;;;;;:::i;14408:32::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19580:265::-;;;;;;;;;;;;;:::i;13147:79::-;;;;;;;;;;;;;:::i;24280:112::-;;;;;;;;;;-1:-1:-1;24280:112:0;;;;;:::i;:::-;;:::i;23011:::-;;;;;;;;;;-1:-1:-1;23011:112:0;;;;;:::i;:::-;;:::i;24727:92::-;;;;;;;;;;-1:-1:-1;24727:92:0;;;;;:::i;:::-;;:::i;14333:36::-;;;;;;;;;;;;;:::i;26467:119::-;;;;;;;;;;-1:-1:-1;26467:119:0;;;;;:::i;:::-;;:::i;11244:126::-;;;;;;;;;;;;;:::i;24620:99::-;;;;;;;;;;-1:-1:-1;24620:99:0;;;;;:::i;:::-;;:::i;25095:75::-;;;;;;;;;;;;;:::i;13056:84::-;;;;;;;;;;;;;:::i;23902:170::-;;;;;;;;;;-1:-1:-1;23902:170:0;;;;;:::i;:::-;;:::i;12576:35::-;;;;;;;;;;;;;:::i;25964:128::-;;;;;;;;;;-1:-1:-1;25964:128:0;;;;;:::i;:::-;;:::i;25002:85::-;;;;;;;;;;;;;:::i;14111:41::-;;;;;;;;;;;;;:::i;13556:48::-;;;;;;;;;;-1:-1:-1;13556:48:0;;;;;:::i;:::-;;:::i;23249:319::-;;;;;;;;;;-1:-1:-1;23249:319:0;;;;;:::i;:::-;;:::i;10979:79::-;;;;;;;;;;;;;:::i;11144:92::-;;;;;;;;;;;;;:::i;12736:36::-;;;;;;;;;;;;;:::i;12124:87::-;;;;;;;;;;;;;:::i;12618:30::-;;;;;;;;;;;;;:::i;21322:572::-;;;;;;;;;;-1:-1:-1;21322:572:0;;;;;:::i;:::-;;:::i;14382:19::-;;;;;;;;;;;;;:::i;15567:215::-;;;;;;;;;;-1:-1:-1;15567:215:0;;;;;:::i;:::-;;:::i;12817:30::-;;;;;;;;;;;;;:::i;13670:58::-;;;;;;;;;;-1:-1:-1;13670:58:0;;;;;:::i;:::-;;:::i;13611:52::-;;;;;;;;;;-1:-1:-1;13611:52:0;;;;;:::i;:::-;;:::i;20920:198::-;;;;;;;;;;-1:-1:-1;20920:198:0;;;;;:::i;:::-;;:::i;12896:33::-;;;;;;;;;;;;;:::i;22883:120::-;;;;;;;;;;-1:-1:-1;22883:120:0;;;;;:::i;:::-;;:::i;13233:30::-;;;;;;;;;;;;;:::i;12779:31::-;;;;;;;;;;;;;:::i;21126:188::-;;;;;;;;;;-1:-1:-1;21126:188:0;;;;;:::i;:::-;;:::i;25622:206::-;;;;;;;;;;-1:-1:-1;25622:206:0;;;;;:::i;:::-;;:::i;13851:75::-;;;;;;;;;;;;;:::i;24080:192::-;;;;;;;;;;-1:-1:-1;24080:192:0;;;;;:::i;:::-;;:::i;23576:318::-;;;;;;;;;;-1:-1:-1;23576:318:0;;;;;:::i;:::-;;:::i;12655:29::-;;;;;;;;;;;;;:::i;25320:294::-;;;;;;;;;;-1:-1:-1;25320:294:0;;;;;:::i;:::-;;:::i;12534:35::-;;;;;;;;;;;;;:::i;11378:109::-;;;;;;;;;;-1:-1:-1;11378:109:0;;;;;:::i;:::-;;:::i;12693:36::-;;;;;;;;;;;;;:::i;12856:33::-;;;;;;;;;;;;;:::i;14159:35::-;;;;;;;;;;;;;:::i;14447:28::-;;;;;;;;;;;;;:::i;13448:41::-;;;;;;;;;;-1:-1:-1;13448:41:0;;;;;:::i;:::-;;:::i;12033:83::-;12070:13;12103:5;12096:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12033:83;:::o;22298:189::-;22401:4;22423:34;22432:10;22443:7;22451:5;22423:8;:34::i;:::-;-1:-1:-1;22475:4:0;22298:189;;;;;:::o;24400:92::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;24466:10:::1;:18:::0;;-1:-1:-1;;;;;;24466:18:0::1;-1:-1:-1::0;;;;;24466:18:0;;;::::1;::::0;;;::::1;::::0;;24400:92::o;13011:36::-;;;;:::o;25836:120::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;-1:-1:-1;;;;;25916:22:0;;;::::1;;::::0;;;:15:::1;:22;::::0;;;;:32;;-1:-1:-1;;25916:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25836:120::o;26354:102::-;26436:12;;26354:102;:::o;14028:68::-;;;;:::o;15790:447::-;15933:4;15920:2;-1:-1:-1;;;;;12487:18:0;;12479:27;;;;;;-1:-1:-1;;;;;15964:17:0;::::1;16006:1;15964:17:::0;;;:11:::1;:17;::::0;;;;;;;15982:10:::1;15964:29:::0;;;;;;;;-1:-1:-1;;15964:44:0::1;15960:207;;16057:98;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;16057:98:0::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;16057:17:0;::::1;-1:-1:-1::0;16057:17:0;;;:11:::1;:17:::0;;;;;16093:10:::1;16057:61:::0;;;;;;;;;;:98:::1;::::0;16123:5;;16057:65:::1;:98::i;:::-;-1:-1:-1::0;;;;;16025:17:0;::::1;;::::0;;;:11:::1;:17;::::0;;;;;;;16043:10:::1;16025:29:::0;;;;;;;:130;15960:207:::1;16177:30;16191:4;16197:2;16201:5;16177:13;:30::i;:::-;-1:-1:-1::0;16225:4:0::1;::::0;15790:447;-1:-1:-1;;;;;15790:447:0:o;23131:110::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;23207:16:::1;:26:::0;;;::::1;;;;-1:-1:-1::0;;23207:26:0;;::::1;::::0;;;::::1;::::0;;23131:110::o;24500:112::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;24576:15:::1;:28:::0;;-1:-1:-1;;;;;;24576:28:0::1;-1:-1:-1::0;;;;;24576:28:0;;;::::1;::::0;;;::::1;::::0;;24500:112::o;24827:167::-;24964:9;:21;;;;13310:42;24880:7;24937:21;;;;;24920:12;;24880:7;;24920:66;;24964:21;;24920:39;;:12;:16;:39::i;:::-;:43;;:66::i;:::-;24900:86;;24827:167;:::o;13737:37::-;13772:2;13737:37;:::o;12936:28::-;;;;:::o;25178:134::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;25241:12:::1;:37:::0;;-1:-1:-1;;;;;;25241:37:0::1;-1:-1:-1::0;;;;;25241:37:0;;;::::1;::::0;;::::1;::::0;;25289:4:::1;:15:::0;;-1:-1:-1;;;;;;25289:15:0::1;25241:37;25289:15:::0;;::::1;::::0;;;::::1;::::0;;25178:134::o;12219:83::-;12285:9;;;;12219:83;:::o;26238:104::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;26307::::1;:27:::0;26238:104::o;13943:72::-;;;;:::o;26100:130::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;-1:-1:-1;;;;;26188:22:0;;;::::1;;::::0;;;:9:::1;:22;::::0;;;;:30;;-1:-1:-1;;26188:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26100:130::o;21902:388::-;22071:10;22002:4;22059:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;22059:56:0;;;;;;;;;;:72;;22120:10;22059:60;:72::i;:::-;22036:10;22024:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;22024:32:0;;;;;;;;;;;:107;;;22147:113;;22024:32;;22147:113;;;;22024:107;22147:113;:::i;:::-;;;;;;;;-1:-1:-1;22278:4:0;21902:388;;;;:::o;13783:61::-;;;;:::o;14408:32::-;;;-1:-1:-1;;;;;14408:32:0;;:::o;19580:265::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;14543:6:::1;:13:::0;;-1:-1:-1;;;;14543:13:0::1;-1:-1:-1::0;;;14543:13:0::1;::::0;;19643:18:::2;::::0;:22;19640:63:::2;;19667:36;19684:18;;19667:16;:36::i;:::-;19718:18;::::0;:22;19715:63:::2;;19742:36;19759:18;;19742:16;:36::i;:::-;19792:13;::::0;:17;19789:48:::2;;19811:26;19823:13;;19811:11;:26::i;:::-;14579:6:::1;:14:::0;;-1:-1:-1;;;;14579:14:0::1;::::0;;19580:265::o;13147:79::-;;;-1:-1:-1;;;;;13147:79:0;;:::o;24280:112::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;24356:15:::1;:28:::0;;-1:-1:-1;;;;;;24356:28:0::1;-1:-1:-1::0;;;;;24356:28:0;;;::::1;::::0;;;::::1;::::0;;24280:112::o;23011:::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;23083:22:::1;:32:::0;;-1:-1:-1;;23083:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23011:112::o;24727:92::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;24791:10:::1;:19:::0;24727:92::o;14333:36::-;;;;;;:::o;26467:119::-;-1:-1:-1;;;;;26560:18:0;26533:7;26560:18;;;:9;:18;;;;;;;26467:119::o;11244:126::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;11325:6:::1;::::0;11306:26:::1;::::0;11325:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;11325:6:0::1;::::0;11306:26:::1;::::0;;;::::1;11343:6;:19:::0;;-1:-1:-1;;;;;;11343:19:0::1;::::0;;11244:126::o;24620:99::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;24688:14:::1;:23:::0;24620:99::o;25095:75::-;25150:4;;;;;;;;;-1:-1:-1;;;;;25150:4:0;-1:-1:-1;;;;;25137:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25095:75::o;13056:84::-;;;-1:-1:-1;;;;;13056:84:0;;:::o;23902:170::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;24028:36:::1;::::0;23996:21:::1;::::0;-1:-1:-1;;;;;24028:27:0;::::1;::::0;:36;::::1;;;::::0;23996:21;;23978:15:::1;24028:36:::0;23978:15;24028:36;23996:21;24028:27;:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11127:1;23902:170:::0;:::o;12576:35::-;;;;:::o;25964:128::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;-1:-1:-1;;;;;26048:26:0;;;::::1;;::::0;;;:19:::1;:26;::::0;;;;:36;;-1:-1:-1;;26048:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25964:128::o;25002:85::-;25073:6;;-1:-1:-1;;;25073:6:0;;;;25072:7;;25002:85::o;14111:41::-;;;;;;:::o;13556:48::-;;;;;;;;;;;;;;;:::o;23249:319::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;23430:15:::1;:24:::0;;;;23465:15:::1;:31:::0;;;;23507:10:::1;:21:::0;23539:10:::1;:21:::0;23249:319::o;10979:79::-;11044:6;;;;;-1:-1:-1;;;;;11044:6:0;;10979:79::o;11144:92::-;11222:6;;;;;-1:-1:-1;;;;;11222:6:0;11208:10;:20;;11144:92::o;12736:36::-;;;;:::o;12124:87::-;12163:13;12196:7;12189:14;;;;;:::i;12618:30::-;;;;:::o;21322:572::-;21480:10;21427:4;21468:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;21468:32:0;;;;;;;;;;21515:27;;;21511:225;;21571:10;21594:1;21559:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;21559:32:0;;;;;;;;;:36;21511:225;;;21663:61;:8;21694:15;21663:12;:61::i;:::-;21640:10;21628:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;21628:32:0;;;;;;;;;:96;21511:225;21774:10;21821:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;21751:113:0;;21821:32;;;;;;;;;;21751:113;;;;21774:10;21751:113;;;;21821:32;21751:113;:::i;:::-;;;;;;;;-1:-1:-1;21882:4:0;;21322:572;-1:-1:-1;;;21322:572:0:o;14382:19::-;;;;;;-1:-1:-1;;;;;14382:19:0;;:::o;15567:215::-;15694:4;15672:2;-1:-1:-1;;;;;12487:18:0;;12479:27;;;;;;15716:36:::1;15730:10;15742:2;15746:5;15716:13;:36::i;:::-;-1:-1:-1::0;15770:4:0::1;::::0;15567:215;-1:-1:-1;;;;15567:215:0:o;12817:30::-;;;;:::o;13670:58::-;;;;;;;;;;;;;;;:::o;13611:52::-;;;;;;;;;;;;;;;:::o;20920:198::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;20994:5:::1;20991:120;;;21016:17;:25:::0;;-1:-1:-1;;21016:25:0::1;::::0;::::1;;;::::0;;20991:120:::1;;;21074:17;:25:::0;;-1:-1:-1;;21074:25:0::1;::::0;::::1;;;::::0;;20991:120:::1;20920:198:::0;:::o;12896:33::-;;;;:::o;22883:120::-;-1:-1:-1;;;;;22969:26:0;22945:4;22969:26;;;:19;:26;;;;;;;;;22883:120::o;13233:30::-;;;-1:-1:-1;;;;;13233:30:0;;:::o;12779:31::-;;;;:::o;21126:188::-;-1:-1:-1;;;;;21278:19:0;;;21246:7;21278:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;21126:188::o;25622:206::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;-1:-1:-1;;;;;25713:26:0;::::1;;::::0;;;:19:::1;:26;::::0;;;;;::::1;;:37;;::::0;::::1;;;;25705:68;;;;-1:-1:-1::0;;;25705:68:0::1;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1::0;;;;;25784:26:0;;;::::1;;::::0;;;:19:::1;:26;::::0;;;;:36;;-1:-1:-1;;25784:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25622:206::o;13851:75::-;;;;:::o;24080:192::-;24185:12;11106:9;:7;:9::i;:::-;11098:18;;;;;;24216:48:::1;::::0;-1:-1:-1;;;24216:48:0;;-1:-1:-1;;;;;24216:29:0;::::1;::::0;::::1;::::0;:48:::1;::::0;24246:9;;24257:6;;24216:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24209:55;;11127:1;24080:192:::0;;;;;:::o;23576:318::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;23752:16:::1;:25:::0;;;;23788:16:::1;:32:::0;;;;23831:11:::1;:22:::0;23864:11:::1;:22:::0;23576:318::o;12655:29::-;;;;:::o;25320:294::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;25411:7:::1;25408:102;;;-1:-1:-1::0;;;;;25444:32:0;::::1;;::::0;;;:25:::1;:32;::::0;;;;;::::1;;25443:33;25435:63;;;;-1:-1:-1::0;;;25435:63:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25520:32:0;;::::1;;::::0;;;:25:::1;:32;::::0;;;;;;;:42;;;::::1;;-1:-1:-1::0;;25520:42:0;;::::1;;::::0;;25573:19:::1;:26:::0;;;;;:33;;;;::::1;25520:42:::0;25573:33:::1;::::0;;25320:294::o;12534:35::-;;;;:::o;11378:109::-;11106:9;:7;:9::i;:::-;11098:18;;;;;;11451:28:::1;11470:8;11451:18;:28::i;12693:36::-:0;;;;:::o;12856:33::-;;;;:::o;14159:35::-;;;;;;;;;:::o;14447:28::-;;;-1:-1:-1;;;;;14447:28:0;;:::o;13448:41::-;;;;;;;;;;;;;;;:::o;1829:250::-;1887:7;1911:6;1907:47;;-1:-1:-1;1941:1:0;1934:8;;1907:47;1966:9;1978:5;1982:1;1978;:5;:::i;:::-;1966:17;-1:-1:-1;2011:1:0;2002:5;2006:1;1966:17;2002:5;:::i;:::-;:10;1994:56;;;;-1:-1:-1;;;1994:56:0;;;;;;;:::i;2087:132::-;2145:7;2172:39;2176:1;2179;2172:39;;;;;;;;;;;;;;;;;:3;:39::i;22495:380::-;-1:-1:-1;;;;;22631:19:0;;22623:68;;;;-1:-1:-1;;;22623:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22710:21:0;;22702:68;;;;-1:-1:-1;;;22702:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22783:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;22835:32;;;;;22813:6;;22835:32;:::i;:::-;;;;;;;;22495:380;;;:::o;1595:226::-;1715:7;1751:12;1743:6;;;;1735:29;;;;-1:-1:-1;;;1735:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1775:9:0;1787:5;1791:1;1787;:5;:::i;:::-;1775:17;1595:226;-1:-1:-1;;;;;1595:226:0:o;16515:1398::-;16641:4;-1:-1:-1;;;;;16666:20:0;;16658:70;;;;-1:-1:-1;;;16658:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16747:23:0;;16739:71;;;;-1:-1:-1;;;16739:71:0;;;;;;;:::i;:::-;16838:1;16829:6;:10;16821:44;;;;-1:-1:-1;;;16821:44:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16885:17:0;;;;;;:9;:17;;;;;;;;16884:18;:43;;;;-1:-1:-1;;;;;;16907:20:0;;;;;;:9;:20;;;;;;;;16906:21;16884:43;16876:68;;;;-1:-1:-1;;;16876:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16961:23:0;;;;;;:15;:23;;;;;;;;16960:24;:55;;;;-1:-1:-1;;;;;;16989:26:0;;;;;;:15;:26;;;;;;;;16988:27;16960:55;:81;;;;-1:-1:-1;17019:22:0;;;;16960:81;16957:193;;;17076:10;;17066:6;:20;;17058:80;;;;-1:-1:-1;;;17058:80:0;;;;;;;:::i;:::-;17166:6;;-1:-1:-1;;;17166:6:0;;;;17162:87;;;17196:41;17211:6;17219:9;17230:6;17196:14;:41::i;:::-;17189:48;;;;17162:87;17265:20;:18;:20::i;:::-;17261:67;;;17302:14;:12;:14::i;:::-;-1:-1:-1;;;;;17360:17:0;;;;;;:9;:17;;;;;;:29;;17382:6;17360:21;:29::i;:::-;-1:-1:-1;;;;;17340:17:0;;;;;;:9;:17;;;;;:49;;;;17435:32;17350:6;17457:9;17435:13;:32::i;:::-;:104;;17533:6;17435:104;;;17483:34;17491:6;17499:9;17510:6;17483:7;:34::i;:::-;17555:16;;17410:129;;-1:-1:-1;17555:16:0;;;;;:51;;;;-1:-1:-1;;;;;;17576:30:0;;;;;;:19;:30;;;;;;;;17575:31;17555:51;17552:197;;;17675:14;;17631:40;17656:14;17631:20;17641:9;17631;:20::i;:::-;:24;;:40::i;:::-;:58;;17623:114;;;;-1:-1:-1;;;17623:114:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17784:20:0;;;;;;:9;:20;;;;;;:40;;17809:14;17784:24;:40::i;:::-;-1:-1:-1;;;;;17761:20:0;;;;;;;:9;:20;;;;;;;:63;;;;17842:41;;;;;;;;;;17868:14;;17842:41;:::i;:::-;;;;;;;;-1:-1:-1;17901:4:0;;16515:1398;-1:-1:-1;;;;16515:1398:0:o;1451:136::-;1509:7;1536:43;1540:1;1543;1536:43;;;;;;;;;;;;;;;;;:3;:43::i;1262:181::-;1320:7;;1352:5;1356:1;1352;:5;:::i;:::-;1340:17;;1381:1;1376;:6;;1368:46;;;;-1:-1:-1;;;1368:46:0;;;;;;;:::i;27272:431::-;27343:18;;27331:9;;27343:25;;27366:1;27343:22;:25::i;:::-;27331:37;;27379:14;27396:28;27419:4;27396:18;;:22;;:28;;;;:::i;:::-;27379:45;-1:-1:-1;27456:21:0;27488:22;27505:4;27488:16;:22::i;:::-;27521:19;27543:40;:21;27569:13;27543:25;:40::i;:::-;27615:18;;27521:62;;-1:-1:-1;27615:31:0;;27638:7;27615:22;:31::i;:::-;27594:18;:52;27657:38;27670:9;27680:14;27657:12;:38::i;:::-;27272:431;;;;;:::o;26594:341::-;26674:21;26706:25;26723:7;26706:16;:25::i;:::-;26742:19;26764:40;:21;26790:13;26764:25;:40::i;:::-;26836:18;;26742:62;;-1:-1:-1;26836:31:0;;26859:7;26836:22;:31::i;:::-;26815:18;:52;26886:15;;26878:49;;-1:-1:-1;;;;;26886:15:0;;;;26878:49;;;;;26912:14;;26886:15;26878:49;26886:15;26878:49;26912:14;26886:15;26878:49;;;;;;;;;;;;;;;;;;;26943:321;27018:21;27050:25;27067:7;27050:16;:25::i;:::-;27086:19;27108:40;:21;27134:13;27108:25;:40::i;:::-;27175:13;;27086:62;;-1:-1:-1;27175:26:0;;27193:7;27175:17;:26::i;:::-;27159:13;:42;27220:10;;27212:44;;-1:-1:-1;;;;;27220:10:0;;;;27212:44;;;;;27241:14;;27220:10;27212:44;27220:10;27212:44;27241:14;27220:10;27212:44;;;;;;;;;;;;;;;;;;;11495:187;-1:-1:-1;;;;;11569:22:0;;11561:31;;;;;;11629:6;;11608:38;;-1:-1:-1;;;;;11608:38:0;;;;11629:6;;;;;11608:38;;;;;11657:6;:17;;-1:-1:-1;;;;;11657:17:0;;;;;-1:-1:-1;;;;;;11657:17:0;;;;;;;;;11495:187::o;2227:225::-;2347:7;2382:12;2375:5;2367:28;;;;-1:-1:-1;;;2367:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2406:9:0;2418:5;2422:1;2418;:5;:::i;16245:262::-;-1:-1:-1;;;;;16398:15:0;;16363:4;16398:15;;;:9;:15;;;;;;:27;;16418:6;16398:19;:27::i;:::-;-1:-1:-1;;;;;16380:15:0;;;;;;;:9;:15;;;;;;:45;;;;16452:13;;;;;;;:25;;16470:6;16452:17;:25::i;:::-;-1:-1:-1;;;;;16436:13:0;;;;;;:9;:13;;;;;:41;-1:-1:-1;16495:4:0;16245:262;;;;;:::o;20554:358::-;20607:4;20626:28;20657:24;20675:4;20657:9;:24::i;:::-;20731:18;;20782:17;;20626:55;;-1:-1:-1;20707:42:0;;;;20782:17;;:42;;;;-1:-1:-1;20818:6:0;;-1:-1:-1;;;20818:6:0;;;;20817:7;20782:42;:67;;;;;20842:7;20782:67;:122;;;;-1:-1:-1;20893:10:0;20867:37;;;;:25;:37;;;;;;;;20866:38;20782:122;20762:142;;;;20554:358;:::o;20201:345::-;-1:-1:-1;;;;;20325:25:0;;20300:4;20325:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;20354:23:0;;;;;;:19;:23;;;;;;;;20325:52;20322:217;;;-1:-1:-1;20400:5:0;20393:12;;20322:217;-1:-1:-1;;;;;20462:31:0;;;;;;:25;:31;;;;;;;;;:64;;-1:-1:-1;;;;;;20497:29:0;;;;;;:25;:29;;;;;;;;20462:64;20454:73;;;;17921:1651;-1:-1:-1;;;;;18185:33:0;;18042:7;18185:33;;;:25;:33;;;;;;18042:7;;;;;;;;;;18185:33;;18182:1004;;;18243:47;18275:14;;18243:27;18254:15;;18243:6;:10;;:27;;;;:::i;:::-;:31;;:47::i;:::-;18236:54;;18327:4;18305:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;18385:14:0;;18364:15;;18353:47;;18385:14;18353:27;;:6;;:10;:27::i;:47::-;18346:54;;18437:4;18415:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;18490:14:0;;18474:10;;18463:42;;18490:14;18463:22;;:6;;:10;:22::i;:42::-;18456:49;;18537:4;18520:13;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;18590:14:0;;18574:10;;18563:42;;18590:14;18563:22;;:6;;:10;:22::i;:42::-;18556:49;-1:-1:-1;18634:24:0;18653:4;18634:14;:4;18643;18634:8;:14::i;:24::-;18622:36;;18182:1004;;;-1:-1:-1;;;;;18688:36:0;;;;;;:25;:36;;;;;;;;18685:501;;;18749:48;18782:14;;18749:28;18760:16;;18749:6;:10;;:28;;;;:::i;:48::-;18742:55;;18834:4;18812:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;18893:14:0;;18871:16;;18860:48;;18893:14;18860:28;;:6;;:10;:28::i;:48::-;18853:55;;18945:4;18923:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;18999:14:0;;18982:11;;18971:43;;18999:14;18971:23;;:6;;:10;:23::i;:43::-;18964:50;;19046:4;19029:13;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;19100:14:0;;19083:11;;19072:43;;19100:14;19072:23;;:6;;:10;:23::i;:43::-;19065:50;-1:-1:-1;19144:24:0;19163:4;19144:14;:4;19153;19144:8;:14::i;:24::-;19132:36;;18685:501;19201:13;;19198:173;;19276:4;19258:24;;;;:9;:24;;;;;;:39;;19287:9;19258:28;:39::i;:::-;19249:4;19231:24;;;;:9;:24;;;;;;;:66;;;;19317:42;;-1:-1:-1;;;;;19317:42:0;;;;;;;19349:9;;19317:42;:::i;:::-;;;;;;;;19198:173;19386:8;;19383:131;;19426:12;;:22;;19443:4;19426:16;:22::i;:::-;19411:12;:37;19468:34;;19493:1;;-1:-1:-1;;;;;19468:34:0;;;;;;;19497:4;;19468:34;:::i;:::-;;;;;;;;19383:131;19533:31;19559:4;19533:21;:6;19544:9;19533:10;:21::i;:31::-;19526:38;17921:1651;-1:-1:-1;;;;;;;;;17921:1651:0:o;28222:564::-;28372:16;;;28386:1;28372:16;;;;;;;;28348:21;;28372:16;;;;;;;;;;-1:-1:-1;28372:16:0;28348:40;;28417:4;28399;28404:1;28399:7;;;;;;-1:-1:-1;;;28399:7:0;;;;;;;;;-1:-1:-1;;;;;28399:23:0;;;:7;;;;;;;;;;:23;;;;28443:6;;:13;;;-1:-1:-1;;;28443:13:0;;;;:6;;;;;:11;;:13;;;;;28399:7;;28443:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28433:4;28438:1;28433:7;;;;;;-1:-1:-1;;;28433:7:0;;;;;;;;;-1:-1:-1;;;;;28433:23:0;;;:7;;;;;;;;;;:23;;;;28501:6;28469:53;;28486:4;;28501:6;28510:11;28469:8;:53::i;:::-;28561:6;;:215;;-1:-1:-1;;;28561:215:0;;-1:-1:-1;;;;;28561:6:0;;;;:57;;:215;;28633:11;;28561:6;;28703:4;;28730;;28750:15;;28561:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28222:564;;:::o;27711:503::-;27891:6;;27859:53;;27876:4;;-1:-1:-1;;;;;27891:6:0;27900:11;27859:8;:53::i;:::-;27953:6;;28148:15;;27953:251;;-1:-1:-1;;;27953:251:0;;-1:-1:-1;;;;;27953:6:0;;;;:22;;27983:9;;27953:251;;28016:4;;28036:11;;27953:6;;;;28148:15;;28178;;27953:251;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;546:402::-;;;675:2;663:9;654:7;650:23;646:32;643:2;;;696:6;688;681:22;643:2;740:9;727:23;759:33;786:5;759:33;:::i;:::-;811:5;-1:-1:-1;868:2:1;853:18;;840:32;881:35;840:32;881:35;:::i;:::-;935:7;925:17;;;633:315;;;;;:::o;953:470::-;;;;1099:2;1087:9;1078:7;1074:23;1070:32;1067:2;;;1120:6;1112;1105:22;1067:2;1164:9;1151:23;1183:33;1210:5;1183:33;:::i;:::-;1235:5;-1:-1:-1;1292:2:1;1277:18;;1264:32;1305:35;1264:32;1305:35;:::i;:::-;1057:366;;1359:7;;-1:-1:-1;;;1413:2:1;1398:18;;;;1385:32;;1057:366::o;1428:396::-;;;1554:2;1542:9;1533:7;1529:23;1525:32;1522:2;;;1575:6;1567;1560:22;1522:2;1619:9;1606:23;1638:33;1665:5;1638:33;:::i;:::-;1690:5;-1:-1:-1;1747:2:1;1732:18;;1719:32;1760;1719;1760;:::i;1829:327::-;;;1958:2;1946:9;1937:7;1933:23;1929:32;1926:2;;;1979:6;1971;1964:22;1926:2;2023:9;2010:23;2042:33;2069:5;2042:33;:::i;:::-;2094:5;2146:2;2131:18;;;;2118:32;;-1:-1:-1;;;1916:240:1:o;2161:253::-;;2270:2;2258:9;2249:7;2245:23;2241:32;2238:2;;;2291:6;2283;2276:22;2238:2;2335:9;2322:23;2354:30;2378:5;2354:30;:::i;2419:257::-;;2539:2;2527:9;2518:7;2514:23;2510:32;2507:2;;;2560:6;2552;2545:22;2507:2;2597:9;2591:16;2616:30;2640:5;2616:30;:::i;2681:190::-;;2793:2;2781:9;2772:7;2768:23;2764:32;2761:2;;;2814:6;2806;2799:22;2761:2;-1:-1:-1;2842:23:1;;2751:120;-1:-1:-1;2751:120:1:o;2876:316::-;;;;3033:2;3021:9;3012:7;3008:23;3004:32;3001:2;;;3054:6;3046;3039:22;3001:2;3088:9;3082:16;3072:26;;3138:2;3127:9;3123:18;3117:25;3107:35;;3182:2;3171:9;3167:18;3161:25;3151:35;;2991:201;;;;;:::o;3197:395::-;;;;;3360:3;3348:9;3339:7;3335:23;3331:33;3328:2;;;3382:6;3374;3367:22;3328:2;-1:-1:-1;;3410:23:1;;;3480:2;3465:18;;3452:32;;-1:-1:-1;3531:2:1;3516:18;;3503:32;;3582:2;3567:18;3554:32;;-1:-1:-1;3318:274:1;-1:-1:-1;3318:274:1:o;3597:203::-;-1:-1:-1;;;;;3761:32:1;;;;3743:51;;3731:2;3716:18;;3698:102::o;3805:274::-;-1:-1:-1;;;;;3997:32:1;;;;3979:51;;4061:2;4046:18;;4039:34;3967:2;3952:18;;3934:145::o;4084:607::-;-1:-1:-1;;;;;4443:15:1;;;4425:34;;4490:2;4475:18;;4468:34;;;;4533:2;4518:18;;4511:34;;;;4576:2;4561:18;;4554:34;;;;4625:15;;;4619:3;4604:19;;4597:44;4405:3;4657:19;;4650:35;;;;4374:3;4359:19;;4341:350::o;4696:187::-;4861:14;;4854:22;4836:41;;4824:2;4809:18;;4791:92::o;5347:603::-;;5488:2;5517;5506:9;5499:21;5549:6;5543:13;5592:6;5587:2;5576:9;5572:18;5565:34;5617:4;5630:140;5644:6;5641:1;5638:13;5630:140;;;5739:14;;;5735:23;;5729:30;5705:17;;;5724:2;5701:26;5694:66;5659:10;;5630:140;;;5788:6;5785:1;5782:13;5779:2;;;5858:4;5853:2;5844:6;5833:9;5829:22;5825:31;5818:45;5779:2;-1:-1:-1;5934:2:1;5913:15;-1:-1:-1;;5909:29:1;5894:45;;;;5941:2;5890:54;;5468:482;-1:-1:-1;;;5468:482:1:o;5955:399::-;6157:2;6139:21;;;6196:2;6176:18;;;6169:30;6235:34;6230:2;6215:18;;6208:62;-1:-1:-1;;;6301:2:1;6286:18;;6279:33;6344:3;6329:19;;6129:225::o;6359:398::-;6561:2;6543:21;;;6600:2;6580:18;;;6573:30;6639:34;6634:2;6619:18;;6612:62;-1:-1:-1;;;6705:2:1;6690:18;;6683:32;6747:3;6732:19;;6533:224::o;6762:342::-;6964:2;6946:21;;;7003:2;6983:18;;;6976:30;-1:-1:-1;;;7037:2:1;7022:18;;7015:48;7095:2;7080:18;;6936:168::o;7109:351::-;7311:2;7293:21;;;7350:2;7330:18;;;7323:30;7389:29;7384:2;7369:18;;7362:57;7451:2;7436:18;;7283:177::o;7465:411::-;7667:2;7649:21;;;7706:2;7686:18;;;7679:30;7745:34;7740:2;7725:18;;7718:62;-1:-1:-1;;;7811:2:1;7796:18;;7789:45;7866:3;7851:19;;7639:237::o;7881:397::-;8083:2;8065:21;;;8122:2;8102:18;;;8095:30;8161:34;8156:2;8141:18;;8134:62;-1:-1:-1;;;8227:2:1;8212:18;;8205:31;8268:3;8253:19;;8055:223::o;8283:336::-;8485:2;8467:21;;;8524:2;8504:18;;;8497:30;-1:-1:-1;;;8558:2:1;8543:18;;8536:42;8610:2;8595:18;;8457:162::o;8624:346::-;8826:2;8808:21;;;8865:2;8845:18;;;8838:30;-1:-1:-1;;;8899:2:1;8884:18;;8877:52;8961:2;8946:18;;8798:172::o;8975:401::-;9177:2;9159:21;;;9216:2;9196:18;;;9189:30;9255:34;9250:2;9235:18;;9228:62;-1:-1:-1;;;9321:2:1;9306:18;;9299:35;9366:3;9351:19;;9149:227::o;9381:400::-;9583:2;9565:21;;;9622:2;9602:18;;;9595:30;9661:34;9656:2;9641:18;;9634:62;-1:-1:-1;;;9727:2:1;9712:18;;9705:34;9771:3;9756:19;;9555:226::o;9786:408::-;9988:2;9970:21;;;10027:2;10007:18;;;10000:30;10066:34;10061:2;10046:18;;10039:62;-1:-1:-1;;;10132:2:1;10117:18;;10110:42;10184:3;10169:19;;9960:234::o;10199:342::-;10401:2;10383:21;;;10440:2;10420:18;;;10413:30;-1:-1:-1;;;10474:2:1;10459:18;;10452:48;10532:2;10517:18;;10373:168::o;10546:177::-;10692:25;;;10680:2;10665:18;;10647:76::o;10728:983::-;;11038:3;11027:9;11023:19;11069:6;11058:9;11051:25;11095:2;11133:6;11128:2;11117:9;11113:18;11106:34;11176:3;11171:2;11160:9;11156:18;11149:31;11200:6;11235;11229:13;11266:6;11258;11251:22;11304:3;11293:9;11289:19;11282:26;;11343:2;11335:6;11331:15;11317:29;;11364:4;11377:195;11391:6;11388:1;11385:13;11377:195;;;11456:13;;-1:-1:-1;;;;;11452:39:1;11440:52;;11547:15;;;;11512:12;;;;11488:1;11406:9;11377:195;;;-1:-1:-1;;;;;;;11628:32:1;;;;11623:2;11608:18;;11601:60;-1:-1:-1;;;11692:3:1;11677:19;11670:35;11589:3;10999:712;-1:-1:-1;;;10999:712:1:o;11716:184::-;11888:4;11876:17;;;;11858:36;;11846:2;11831:18;;11813:87::o;11905:128::-;;11976:1;11972:6;11969:1;11966:13;11963:2;;;11982:18;;:::i;:::-;-1:-1:-1;12018:9:1;;11953:80::o;12038:217::-;;12104:1;12094:2;;-1:-1:-1;;;12129:31:1;;12183:4;12180:1;12173:15;12211:4;12136:1;12201:15;12094:2;-1:-1:-1;12240:9:1;;12084:171::o;12260:168::-;;12366:1;12362;12358:6;12354:14;12351:1;12348:21;12343:1;12336:9;12329:17;12325:45;12322:2;;;12373:18;;:::i;:::-;-1:-1:-1;12413:9:1;;12312:116::o;12433:125::-;;12501:1;12498;12495:8;12492:2;;;12506:18;;:::i;:::-;-1:-1:-1;12543:9:1;;12482:76::o;12563:380::-;12648:1;12638:12;;12695:1;12685:12;;;12706:2;;12760:4;12752:6;12748:17;12738:27;;12706:2;12813;12805:6;12802:14;12782:18;12779:38;12776:2;;;12859:10;12854:3;12850:20;12847:1;12840:31;12894:4;12891:1;12884:15;12922:4;12919:1;12912:15;12776:2;;12618:325;;;:::o;12948:127::-;13009:10;13004:3;13000:20;12997:1;12990:31;13040:4;13037:1;13030:15;13064:4;13061:1;13054:15;13080:133;-1:-1:-1;;;;;13157:31:1;;13147:42;;13137:2;;13203:1;13200;13193:12;13218:120;13306:5;13299:13;13292:21;13285:5;13282:32;13272:2;;13328:1;13325;13318:12

Swarm Source

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