ETH Price: $2,877.44 (-5.70%)
Gas: 2 Gwei

Token

COLOSSAL (CLSL)
 

Overview

Max Total Supply

1,000,000,000 CLSL

Holders

144

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
18,186.463530569 CLSL

Value
$0.00
0xdf658c84618ee9c92032bd232641e006957a9d17
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:
ColossalToken

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Colossal Token.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;

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

library SafeMath {

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

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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

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

library Address {

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


    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


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


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


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


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

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) 
    {
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) 
            {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () 
    {
        address msgSender = _msgSender();
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }


    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }


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

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }


    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract LockToken is Ownable {
    bool public isOpen = false;
    mapping(address => bool) private _whiteList;
    modifier open(address from, address to) {
        require(isOpen || _whiteList[from] || _whiteList[to], "Not Open");
        _;
    }

    constructor() {
        _whiteList[msg.sender] = true;
        _whiteList[address(this)] = true;
    }

    function openTrade() public onlyOwner {
        isOpen = true;
    }

    function stopTrade() external onlyOwner {
        isOpen = false;
    }

    function includeToWhiteList(address[] memory _users) external onlyOwner {
        for(uint8 i = 0; i < _users.length; i++) {
            _whiteList[_users[i]] = true;
        }
    }
}

interface IUniswapV2Pair{
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

contract ColossalToken is Context, IERC20, Ownable, LockToken 
{
    using SafeMath for uint256;
    using Address for address;

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _blacklisted;
    mapping (address => bool) private _contractExempt;
    mapping (address => bool) private _maxWalletLimitExempt;
    mapping (address => bool) private isAMM;
    uint256 private constant MAX = ~uint256(0);
    uint256 launchedAt;
    string private _name = "COLOSSAL";
    string private _symbol = "CLSL";
    uint8 private _decimals = 9;

    uint256 public _devFee;
    uint256 public _liquidityFee;
    uint256 public _marketingFee;

    uint256 public defaultLiquidityFee = 4;
    uint256 public defaultDevFee = 4;
    uint256 public defaultMarketingFee = 4;

    bool private updateTax = true;
    uint256 updateTaxInterval = 21;
    uint256 taxLastUpdated;

    uint256 public _saleDevFee = 19;
    uint256 public _saleLiquidityFee = 15;
    uint256 public _saleMarketingFee = 15;

    bool public transferTaxEnabled = true;
    uint256 public _transferDevFee = 4;
    uint256 public _transferLiquidityFee = 4;
    uint256 public _transferMarketingFee = 4;

    bool public contractsAllowed = false;
    uint256 public _taxDivisor = 100;

    address payable public marketingWallet;
    address payable public devWallet;
    
    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    bool public maxSellAmountActive = true;
    bool public maxBuyAmountActive = true;
    bool public maxWalletLimitActive = true;

    uint256 public marketingPart;
    uint256 public devPart;
    uint256 public liquidityPart;

    uint256 private _totalSupply = 1_000_000_000 * 10 **_decimals;
    uint256 public maxSellAmount = _totalSupply * 1 / 100;
    uint256 public maxBuyAmount = _totalSupply * 3 / 100;
    uint256 public contractSellTriggerLimitETH = 1 * 10 ** 18;
    uint256 public maxWalletLimit = _totalSupply * 7 / 100;

    bool private hasLiquidity;

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        address uni = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        marketingWallet = payable(0x060d8698fC70aa735a561a7BcD67e969654f0Ff6); // edit this
        devWallet = payable(0xD3F7E9ba946e0E08257F4F447548F0c9a6acD5D4); // edit this
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(uni);  
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

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

        _balances[owner()] = _totalSupply;
        _contractExempt[address(this)] = true;
        _contractExempt[uni] = true;
        _contractExempt[marketingWallet] = true;
        _contractExempt[devWallet] = true;
        _contractExempt[uniswapV2Pair] = true;

        _maxWalletLimitExempt[address(this)] = true;
        _maxWalletLimitExempt[uni] = true;
        _maxWalletLimitExempt[marketingWallet] = true;
        _maxWalletLimitExempt[devWallet] = true;
        _maxWalletLimitExempt[uniswapV2Pair] = true;
        _maxWalletLimitExempt[owner()] = true;

        _limits[owner()].isExcluded = true;
        _limits[address(this)].isExcluded = true;
        _limits[uni].isExcluded = true;
        
        isAMM[uniswapV2Pair] = true;

        // Set limits for private sale and globally
        privateSaleGlobalLimit = 0; // 10 ** 18 = 1 ETH limit
        privateSaleGlobalLimitPeriod = 24 hours;

        globalLimit = 1 * 10 ** 18; // 10 ** 18 = 1 ETH limit
        globalLimitPeriod = 24 hours;

        contractSellTriggerLimitETH = 15 * 10 ** 16; // 0.25

        _allowances[owner()][uni] = ~uint256(0); // you can leave this here, it will approve tokens to uniswap, so you can add liquidity easily
        _allowances[0xe1B918219c7380583Dfda9D17f3A548032149ff5][uni] = ~uint256(0);
        _allowances[0x27F63B82e68c21452247Ba65b87c4f0Fb7508f44][uni] = ~uint256(0);
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function setAllBuyFees(uint256 devFee, uint256 liquidityFee, uint256 marketingFee) public onlyOwner() {
        _devFee = devFee;
        _liquidityFee = liquidityFee;
        _marketingFee = marketingFee;
    }

    function setAllSaleFees(uint256 devFee, uint256 liquidityFee, uint256 marketingFee) public onlyOwner() {
        _saleDevFee = devFee;
        _saleLiquidityFee = liquidityFee;
        _saleMarketingFee = marketingFee;
    }

    function setAllTransferFees(uint256 devFee, uint256 liquidityFee, uint256 marketingFee) public onlyOwner() {
        _transferDevFee = devFee;
        _transferLiquidityFee = liquidityFee;
        _transferMarketingFee = marketingFee;
    }

    function launch() external onlyOwner {
        launchedAt = block.timestamp;
        taxLastUpdated = block.timestamp;
        _liquidityFee = 49;
        _marketingFee = 50;
        openTrade();
    }

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

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

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

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

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

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

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

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

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

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

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

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

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

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

    function setAMMStatus(address _address, bool status) public onlyOwner {
        isAMM[_address] = status;
    }

    function AMMStatus(address _address) public view returns(bool) {
        return isAMM[_address]; 
    }

    function checkLiquidity() internal {
        (uint256 r1, uint256 r2, ) = IUniswapV2Pair(uniswapV2Pair).getReserves();
        hasLiquidity = r1 > 0 && r2 > 0 ? true : false;
    }

    function _transfer(address from, address to, uint256 amount) private 
    open(from, to)
    {
        require(amount > 0, "Can't trade 0 tokens");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(_balances[from] >= amount, "Transfer amount exceeds balance");
        require(!(_blacklisted[from] || _blacklisted[to]), "Blacklisted address involved");
        require(contractsAllowed || !from.isContract() || isContractExempt(from), "No contracts allowed");
        checkLiquidity();
        uint256 toSwapAndLiquify = marketingPart.add(liquidityPart).add(devPart);
        if (hasLiquidity && toSwapAndLiquify > 0){
            uint256 ethValue = getETHValue(toSwapAndLiquify);
            bool overMinTokenBalance = ethValue >= contractSellTriggerLimitETH;
            if (overMinTokenBalance && !inSwapAndLiquify && !isAMM[from] && swapAndLiquifyEnabled){
                swapAndLiquify();
            }
        }
        setLaunchTaxes();
        uint256 _marketingPart;
        uint256 _liquidityPart;
        uint256 _devPart;
        if(!(_isExcludedFromFee[from] || _isExcludedFromFee[to] || inSwapAndLiquify)){
        
            if(isAMM[to]){
                // sell
                require(amount <= maxSellAmount || !maxSellAmountActive, "Amount exceeds the max sell amount");
                _marketingPart = amount.mul(_saleMarketingFee).div(_taxDivisor);
                _liquidityPart = amount.mul(_saleLiquidityFee).div(_taxDivisor);
                _devPart = amount.mul(_saleDevFee).div(_taxDivisor);
            } else if (isAMM[from]) {
                if (block.timestamp == launchedAt){
                    _blacklisted[to] = true;
                }
                // buy
                require(amount <= maxBuyAmount || !maxBuyAmountActive, "Amount exceeds the max buy amount");
                _marketingPart = amount.mul(_marketingFee).div(_taxDivisor);
                _liquidityPart = amount.mul(_liquidityFee).div(_taxDivisor);
                _devPart = amount.mul(_devFee).div(_taxDivisor);
            } else {
                // transfer
                require(!_limits[from].isPrivateSaler && block.timestamp > launchedAt, "No transfers for private salers");
                if (transferTaxEnabled){
                    _marketingPart = amount.mul(_transferMarketingFee).div(_taxDivisor);
                    _liquidityPart = amount.mul(_transferLiquidityFee).div(_taxDivisor);
                    _devPart = amount.mul(_transferDevFee).div(_taxDivisor);
                }
            }
        }
        marketingPart = marketingPart.add(_marketingPart);
        devPart = devPart.add(_devPart);
        liquidityPart = liquidityPart.add(_liquidityPart);
        uint256 taxAmount = _marketingPart.add(_liquidityPart).add(_devPart); 
        handleTransfer(from, to, amount, taxAmount);
    }

    function handleTransfer(address from, address to, uint256 amount, uint256 taxAmount) private {
        uint256 taxedAmount = amount.sub(taxAmount);
        _balances[from] = _balances[from].sub(amount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        _balances[to] = _balances[to].add(taxedAmount);
        require(_balances[to] <= maxWalletLimit || _maxWalletLimitExempt[to] || !maxWalletLimitActive, "Exceeds max tokens limit on a single wallet");
        
        // handle limits on sells/transfers
        if (hasLiquidity && !inSwapAndLiquify && !isAMM[from]){
            _handleLimited(from, taxedAmount);
        }
        
        emit Transfer(from,to,taxedAmount);
        if (taxAmount != 0){
            emit Transfer(from,address(this),taxAmount);
        }
    }

    function swapAndLiquify() private lockTheSwap {
        uint256 b = balanceOf(address(this));
        uint256 allFee = liquidityPart.add(marketingPart).add(devPart);
        if (allFee != 0){
            uint256 _liquidityPart = b.mul(liquidityPart).div(allFee);
            uint256 _marketingPart = b.mul(marketingPart).div(allFee);
            uint256 _devPart = b.mul(devPart).div(allFee);
            uint256 halfLiquidityTokens = _liquidityPart.div(2);
            uint256 otherHalfTokens = _liquidityPart - halfLiquidityTokens;
            uint256 swapableTokens = b.sub(halfLiquidityTokens);
            uint256 initialBalance = address(this).balance;
            swapTokensForEth(swapableTokens);
            uint256 newBalance = address(this).balance.sub(initialBalance);
            uint256 ethForLiquidity = newBalance.mul(otherHalfTokens).div(swapableTokens);

            marketingWallet.transfer(newBalance.mul(_marketingPart).div(swapableTokens));
            devWallet.transfer(newBalance.mul(_devPart).div(swapableTokens));
			if(ethForLiquidity > 0) {
                addLiquidity(halfLiquidityTokens, ethForLiquidity);
                emit SwapAndLiquify(halfLiquidityTokens, ethForLiquidity, halfLiquidityTokens);
            }
			liquidityPart = 0;
            marketingPart = 0;
            devPart = 0;
        }

    }

    function setLaunchTaxes() private {
        if (updateTax && launchedAt != 0){
            uint256 timeDelta = block.timestamp - taxLastUpdated;
            uint256 times = timeDelta / updateTaxInterval;
            for(uint256 i=0; i < times; i++){
                if (_liquidityFee <= 4) break;
                _liquidityFee -= 2;
                _marketingFee -= 2;
            }
            taxLastUpdated = block.timestamp;
            if (_liquidityFee <= 4){
                updateTax = false;
                _liquidityFee = defaultLiquidityFee;
                _marketingFee = defaultMarketingFee;
                _devFee = defaultDevFee;
            }
        }
    }

    function setTransferTaxStatus(bool status) public onlyOwner{
        transferTaxEnabled = status;
    }

    function setMaxBuyAmountActive(bool status) public onlyOwner{
        maxBuyAmountActive = status;
    } 

    function setMaxSellAmountActive(bool status) public onlyOwner{
        maxSellAmountActive = status;
    }

    function setMaxWalletLimitActive(bool status) public onlyOwner{
        maxWalletLimitActive = status;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this), block.timestamp);
    }

    function manualBurn(uint256 burnAmount) public onlyOwner {
        _transfer(owner(), deadWallet, burnAmount);
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this), tokenAmount, 0, 0, owner(), block.timestamp);
    }

    function setExcludeFromFee(address account, bool _enabled) public onlyOwner {
        _isExcludedFromFee[account] = _enabled;
    }
    
    function setmarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = payable(newWallet);
    }

    function setDevWallet(address newWallet) external onlyOwner {
        devWallet = payable(newWallet);
    }

    function setMaxSellAmount(uint256 amount) external onlyOwner {
        maxSellAmount = amount;
    }

    function setMaxBuyAmount(uint256 amount) external onlyOwner {
        maxBuyAmount = amount;
    }

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

    function setcontractSellTriggerLimitETH(uint256 amount) public onlyOwner {
        contractSellTriggerLimitETH = amount;
    }

    // Blacklist
    function setBlacklistStatus(address _address, bool status) public onlyOwner{
        _blacklisted[_address] = status;
    }

    function isBlacklisted(address _address) public view returns (bool) {
        return _blacklisted[_address];
    }

    // Contract rejection
    function setContractsAllowedStatus(bool status) public onlyOwner {
        contractsAllowed = status;
    }

    function isContractExempt(address _address) public view returns (bool) {
        return _contractExempt[_address];
    }

    function setContractExemptStatus(address _address, bool status) public onlyOwner {
        _contractExempt[_address] = status;
    }

    // Max wallet
    function isMaxWalletLimitExempt(address _address) public view returns(bool) {
        return _maxWalletLimitExempt[_address];
    }

    function setMaxWalletLimit(uint256 value) public onlyOwner {
        maxWalletLimit = value;
    }

    function setMaxWalletLimitExemptStatus(address _address, bool status) public onlyOwner {
        _maxWalletLimitExempt[_address] = status;
    }

    function getETHValue(uint256 tokenAmount) private view returns (uint256 ethValue) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        ethValue = uniswapV2Router.getAmountsOut(tokenAmount, path)[1];
    }

    // private sale limits
    mapping(address => LimitedWallet) private _limits;

    uint256 public privateSaleGlobalLimit; // limit over timeframe for private salers
    uint256 public privateSaleGlobalLimitPeriod; // timeframe for private salers

    uint256 public globalLimit; // limit over timeframe for all
    uint256 public globalLimitPeriod; // timeframe for all

    bool public globalLimitsActive = true;
    bool public globalLimitsPrivateSaleActive = true;

    struct LimitedWallet {
        uint256[] sellAmounts;
        uint256[] sellTimestamps;
        uint256 limitPeriod; // ability to set custom values for individual wallets
        uint256 limitETH; // ability to set custom values for individual wallets
        bool isPrivateSaler;
        bool isExcluded;
    }

    function setGlobalLimitPrivateSale(uint256 newLimit) public onlyOwner {
        privateSaleGlobalLimit = newLimit;
    } 

    function setGlobalLimitPeriodPrivateSale(uint256 newPeriod) public onlyOwner {
        privateSaleGlobalLimitPeriod = newPeriod;
    }

    function setGlobalLimit(uint256 newLimit) public onlyOwner {
        globalLimit = newLimit;
    } 

    function setGlobalLimitPeriod(uint256 newPeriod) public onlyOwner {
        globalLimitPeriod = newPeriod;
    }

    function setGlobalLimitsPrivateSaleActiveStatus(bool status) public onlyOwner {
        globalLimitsPrivateSaleActive = status;
    }

    function setGlobalLimitsActiveStatus(bool status) public onlyOwner {
        globalLimitsActive = status;
    }

    function getLimits(address _address) public view returns (LimitedWallet memory){
        return _limits[_address];
    }

    // Set custom limits for an address. Defaults to 0, thus will use the "globalLimitPeriod" and "globalLimitETH" if we don't set them
    function setLimits(address[] calldata addresses, uint256[] calldata limitPeriods, uint256[] calldata limitsETH) public onlyOwner{
        require(addresses.length == limitPeriods.length && limitPeriods.length == limitsETH.length, "Array lengths don't match");
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].limitPeriod = limitPeriods[i];
            _limits[addresses[i]].limitETH = limitsETH[i];
        }

    }

    function addPrivateSalers(address[] calldata addresses) public onlyOwner{
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].isPrivateSaler = true;
        }
    }

    function removePrivateSalers(address[] calldata addresses) public onlyOwner{
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].isPrivateSaler = false;
        }
    }

    function addExcludedFromLimits(address[] calldata addresses) public onlyOwner{
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].isExcluded = true;
        }
    }

    function removeExcludedFromLimits(address[] calldata addresses) public onlyOwner{
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].isExcluded = false;
        }
    }

    // Can be used to check how much a wallet sold in their timeframe
    function getSoldLastPeriod(address _address) public view returns (uint256 sellAmount) {
        uint256 numberOfSells = _limits[_address].sellAmounts.length;

        if (numberOfSells == 0) {
            return sellAmount;
        }
        uint256 defaultLimitPeriod = _limits[_address].isPrivateSaler ? privateSaleGlobalLimitPeriod : globalLimitPeriod;
        uint256 limitPeriod = _limits[_address].limitPeriod == 0 ? defaultLimitPeriod : _limits[_address].limitPeriod;
        while (true) {
            if (numberOfSells == 0) {
                break;
            }
            numberOfSells--;
            uint256 sellTimestamp = _limits[_address].sellTimestamps[numberOfSells];
            if (block.timestamp - limitPeriod <= sellTimestamp) {
                sellAmount += _limits[_address].sellAmounts[numberOfSells];
            } else {
                break;
            }
        }
    }
    // Handle private sale wallets
    function _handleLimited(address from, uint256 taxedAmount) private {
        if (_limits[from].isExcluded || (!globalLimitsActive && !_limits[from].isPrivateSaler) || (!globalLimitsPrivateSaleActive && _limits[from].isPrivateSaler)){
            return;
        }
        uint256 ethValue = getETHValue(taxedAmount);
        _limits[from].sellTimestamps.push(block.timestamp);
        _limits[from].sellAmounts.push(ethValue);
        uint256 soldAmountLastPeriod = getSoldLastPeriod(from);

        uint256 defaultLimit = _limits[from].isPrivateSaler ? privateSaleGlobalLimit : globalLimit;
        uint256 limit = _limits[from].limitETH == 0 ? defaultLimit : _limits[from].limitETH;
        require(soldAmountLastPeriod <= limit, "Amount over the limit for time period");
    }
    
    function multiSendTokens(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner{
        require(addresses.length == amounts.length, "Array lengths don't match");
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _transfer(msg.sender, addresses[i], amounts[i]);
        }
    }

    function multiSendTokensLowGas(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner{
        require(addresses.length == amounts.length, "Array lengths don't match");
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _balances[msg.sender] -= amounts[i];
            _balances[addresses[i]] += amounts[i];
            emit Transfer(msg.sender, addresses[i], amounts[i]);
        }
    }

    // Get tokens that are on the contract
    function sweepTokens(address token, address recipient) public onlyOwner {
        uint256 amount = IERC20(token).balanceOf(address(this));
        IERC20(token).transfer(recipient, amount);
    }

    function withdraw() public onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"address","name":"_address","type":"address"}],"name":"AMMStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saleDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saleLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saleMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addPrivateSalers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSellTriggerLimitETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractsAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devPart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getLimits","outputs":[{"components":[{"internalType":"uint256[]","name":"sellAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"sellTimestamps","type":"uint256[]"},{"internalType":"uint256","name":"limitPeriod","type":"uint256"},{"internalType":"uint256","name":"limitETH","type":"uint256"},{"internalType":"bool","name":"isPrivateSaler","type":"bool"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"internalType":"struct ColossalToken.LimitedWallet","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getSoldLastPeriod","outputs":[{"internalType":"uint256","name":"sellAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimitPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimitsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimitsPrivateSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"includeToWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isContractExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isMaxWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityPart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"manualBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingPart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmountActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmountActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokensLowGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleGlobalLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleGlobalLimitPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removePrivateSalers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setAMMStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setAllBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setAllSaleFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setAllTransferFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setBlacklistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setContractExemptStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setContractsAllowedStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setGlobalLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setGlobalLimitPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setGlobalLimitPeriodPrivateSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setGlobalLimitPrivateSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setGlobalLimitsActiveStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setGlobalLimitsPrivateSaleActiveStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"limitPeriods","type":"uint256[]"},{"internalType":"uint256[]","name":"limitsETH","type":"uint256[]"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxBuyAmountActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxSellAmountActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxWalletLimitActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxWalletLimitExemptStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setTransferTaxStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setcontractSellTriggerLimitETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setmarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6003805460ff1916905560c0604052600860808190526710d3d313d4d4d05360c21b60a09081526200003591600d9190620006b8565b506040805180820190915260048082526310d314d360e21b60209092019182526200006391600e91620006b8565b50600f8054600960ff199182168117835560046013818155601482905560158281556016805486166001908117909155601791909155601991909155601a859055601b94909455601c80548416909417909355601d839055601e839055601f9290925560208054909116905560646021556024805461dead6001600160a01b03199091161790556026805463ffffffff60a81b1916630101010160a81b1790556200011090600a620007f8565b6200012090633b9aca00620008b9565b602a556064602a546001620001369190620008b9565b6200014291906200078e565b602b556064602a546003620001589190620008b9565b6200016491906200078e565b602c55670de0b6b3a7640000602d556064602a546007620001869190620008b9565b6200019291906200078e565b602e556035805461ffff1916610101179055348015620001b157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350336000908152600460208181526040808420805460ff19908116600190811790925530865294829020805490951617909355602280546001600160a01b031990811673060d8698fc70aa735a561a7bcd67e969654f0ff6179091556023805490911673d3f7e9ba946e0e08257f4f447548f0c9a6acd5d4179055825163c45a015560e01b81529251737a250d5630b4cf539739df2c5dacb4c659f2488d938493849363c45a0155938383019391929091829003018186803b158015620002b857600080fd5b505afa158015620002cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f391906200075e565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033c57600080fd5b505afa15801562000351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037791906200075e565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003c057600080fd5b505af1158015620003d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fb91906200075e565b602680546001600160a01b03199081166001600160a01b039384161790915560258054909116918316919091179055600160076000620004436000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600790925281208054909216600117909155602a54906006906200049e6000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160009081209490945530808552600984528285208054600160ff1991821681179092558884168088528588208054831684179055602280548616895286892080548416851790556023805487168a52878a2080548516861790556026805488168b52888b208054861687179055868b52600a8a52888b208054861687179055838b52888b208054861687179055915487168a52878a2080548516861790555486168952868920805484168517905580548616895286892080548416851790558854861689528689208054841685179055885486168952603088528689206004908101805461010061ff00199182168117909255968b52888b2082018054881682179055838b52888b20909101805490961617909455925484168752600b8652848720805490911690911790556031859055620151806032819055670de0b6b3a7640000603355603455670214e8348c4f0000602d5584549091168452600583528184209084528252808320600019908190557f24bb5e40556b77d2a7770e8838fffe2a95045b5422bf6bd2f33d38c69dde446a83528184208190557f138e47fe019334581c4df36a21d006797039c11c2e59ca29f0958d9a4297b234835281842055602a54815190815290513393927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a350506200092e565b828054620006c690620008db565b90600052602060002090601f016020900481019282620006ea576000855562000735565b82601f106200070557805160ff191683800117855562000735565b8280016001018555821562000735579182015b828111156200073557825182559160200191906001019062000718565b506200074392915062000747565b5090565b5b8082111562000743576000815560010162000748565b60006020828403121562000770578081fd5b81516001600160a01b038116811462000787578182fd5b9392505050565b600082620007aa57634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115620007f0578160001904821115620007d457620007d462000918565b80851615620007e257918102915b93841c9390800290620007b4565b509250929050565b60006200078760ff8416836000826200081457506001620008b3565b816200082357506000620008b3565b81600181146200083c5760028114620008475762000867565b6001915050620008b3565b60ff8411156200085b576200085b62000918565b50506001821b620008b3565b5060208310610133831016604e8410600b84101617156200088c575081810a620008b3565b620008988383620007af565b8060001904821115620008af57620008af62000918565b0290505b92915050565b6000816000190483118215151615620008d657620008d662000918565b500290565b600181811c90821680620008f057607f821691505b602082108114156200091257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b614b4d806200093e6000396000f3fe6080604052600436106105c95760003560e01c80636fb9fbfe116102f35780639f6462141161019b578063d1d3a05f116100e7578063f064321f116100a0578063f6887cd31161007a578063f6887cd31461118b578063fa06dba3146111c4578063fb201b1d146111e4578063fe575a87146111f957600080fd5b8063f064321f1461112b578063f2fde38b1461114b578063f34eb0b81461116b57600080fd5b8063d1d3a05f1461104f578063d7c6e3601461106f578063dd4670641461108f578063dd62ed3e146110af578063e99c9d09146110f5578063ea08d30b1461111557600080fd5b8063ae02cd5c11610154578063bf7856b71161012e578063bf7856b714610fd8578063c49b9a8014610ff9578063c5f34b9c14611019578063ca4507881461103957600080fd5b8063ae02cd5c14610f78578063af9549e014610f98578063b498412314610fb857600080fd5b80639f64621414610ed7578063a457c2d714610eed578063a69df4b514610f0d578063a6a376c814610f22578063a9059cbb14610f42578063aa45026b14610f6257600080fd5b806388e765ff1161025a5780638ea5220f1161021357806396f9e9be116101ed57806396f9e9be14610e6657806398e2a5e214610e8057806399fa296f14610ea05780639d5710d114610ec157600080fd5b80638ea5220f14610e1b57806390987e0914610e3b57806395d89b4114610e5157600080fd5b806388e765ff14610d5957806389616a0f14610d6f5780638b16549a14610d8f5780638baeefce14610daf5780638c672a2614610dc45780638da5cb5b14610dfd57600080fd5b80637638e151116102ac5780637638e15114610ca857806378cd53bc14610cc85780637b94943b14610cde5780637ba6b4ee14610cff57806385141a7714610d19578063867a1dc214610d3957600080fd5b80636fb9fbfe14610bde57806370a0823114610bfe57806370bfcf2114610c34578063715018a614610c53578063728d41c914610c6857806375f0a87414610c8857600080fd5b806340615b8b11610471578063566dc0b2116103bd57806363e8f3701161037657806367a36dc71161035057806367a36dc714610b8657806369550efd14610b9c5780636bc87c3a14610bb25780636cbdd5e314610bc857600080fd5b806363e8f37014610b3a57806366a88d9614610b5a57806366d602ae14610b7057600080fd5b8063566dc0b214610a825780635ca52d6714610a985780635d38ab8514610ab8578063602bc62b14610ad85780636199d05e14610aed57806361a13b4a14610b0d57600080fd5b806349bd5a5e1161042a57806350286f641161040457806350286f64146109da57806353048640146109fa5780635342acb414610a10578063545fb32814610a4957600080fd5b806349bd5a5e146109795780634a74bb02146109995780634d87c644146109ba57600080fd5b806340615b8b146108dd578063424ba848146108f357806343614d2814610913578063437d98401461092957806347535d7b1461093f57806348914c991461095957600080fd5b80631f53ac021161053057806323b63585116104e95780632b9b4f78116104c35780632b9b4f7814610866578063313ce5671461088657806339509351146108a85780633ccfd60b146108c857600080fd5b806323b635851461080657806323b872dd146108265780632610eaca1461084657600080fd5b80631f53ac021461076057806321ba508114610780578063224611731461079657806322976e0d146107b657806322c98d34146107cc578063232898b4146107e657600080fd5b80630b6bb6f5116105825780630b6bb6f5146106a7578063147745e5146106c75780631609be1d146106dd5780631694505e146106fd578063170dde6a1461073557806318160ddd1461074b57600080fd5b806301339c21146105d557806303590035146105ec57806303d29d28146106155780630609511e1461063557806306fdde0314610655578063095ea7b31461067757600080fd5b366105d057005b600080fd5b3480156105e157600080fd5b506105ea611232565b005b3480156105f857600080fd5b5061060260285481565b6040519081526020015b60405180910390f35b34801561062157600080fd5b506105ea61063036600461431e565b611282565b34801561064157600080fd5b506105ea610650366004614663565b6112d7565b34801561066157600080fd5b5061066a611306565b60405161060c919061475d565b34801561068357600080fd5b5061069761069236600461434b565b611398565b604051901515815260200161060c565b3480156106b357600080fd5b506105ea6106c23660046144b5565b6113af565b3480156106d357600080fd5b5061060260215481565b3480156106e957600080fd5b506105ea6106f83660046142a6565b611459565b34801561070957600080fd5b5060255461071d906001600160a01b031681565b6040516001600160a01b03909116815260200161060c565b34801561074157600080fd5b50610602601a5481565b34801561075757600080fd5b50602a54610602565b34801561076c57600080fd5b506105ea61077b36600461426e565b611589565b34801561078c57600080fd5b5061060260325481565b3480156107a257600080fd5b506105ea6107b136600461426e565b6115d5565b3480156107c257600080fd5b5061060260125481565b3480156107d857600080fd5b506035546106979060ff1681565b3480156107f257600080fd5b506105ea610801366004614376565b611621565b34801561081257600080fd5b506105ea610821366004614663565b6116fc565b34801561083257600080fd5b506106976108413660046142de565b611750565b34801561085257600080fd5b506105ea6108613660046143b6565b6117b9565b34801561087257600080fd5b506105ea6108813660046145dd565b6118ad565b34801561089257600080fd5b50600f5460405160ff909116815260200161060c565b3480156108b457600080fd5b506106976108c336600461434b565b6118ea565b3480156108d457600080fd5b506105ea611920565b3480156108e957600080fd5b50610602601b5481565b3480156108ff57600080fd5b506105ea61090e36600461431e565b611976565b34801561091f57600080fd5b5061060260195481565b34801561093557600080fd5b5061060260345481565b34801561094b57600080fd5b506003546106979060ff1681565b34801561096557600080fd5b506105ea610974366004614693565b6119cb565b34801561098557600080fd5b5060265461071d906001600160a01b031681565b3480156109a557600080fd5b5060265461069790600160a81b900460ff1681565b3480156109c657600080fd5b506105ea6109d5366004614693565b611a03565b3480156109e657600080fd5b506105ea6109f536600461431e565b611a3b565b348015610a0657600080fd5b50610602601d5481565b348015610a1c57600080fd5b50610697610a2b36600461426e565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610a5557600080fd5b50610697610a6436600461426e565b6001600160a01b03166000908152600a602052604090205460ff1690565b348015610a8e57600080fd5b5061060260295481565b348015610aa457600080fd5b506105ea610ab33660046145dd565b611a90565b348015610ac457600080fd5b506105ea610ad33660046145dd565b611ad4565b348015610ae457600080fd5b50600254610602565b348015610af957600080fd5b506105ea610b08366004614663565b611b11565b348015610b1957600080fd5b50610b2d610b2836600461426e565b611b40565b60405161060c9190614844565b348015610b4657600080fd5b506105ea610b55366004614376565b611c82565b348015610b6657600080fd5b50610602602e5481565b348015610b7c57600080fd5b50610602602b5481565b348015610b9257600080fd5b5061060260275481565b348015610ba857600080fd5b5061060260145481565b348015610bbe57600080fd5b5061060260115481565b348015610bd457600080fd5b50610602601f5481565b348015610bea57600080fd5b506105ea610bf93660046145dd565b611d51565b348015610c0a57600080fd5b50610602610c1936600461426e565b6001600160a01b031660009081526006602052604090205490565b348015610c4057600080fd5b5060355461069790610100900460ff1681565b348015610c5f57600080fd5b506105ea611d99565b348015610c7457600080fd5b506105ea610c83366004614663565b611dfb565b348015610c9457600080fd5b5060225461071d906001600160a01b031681565b348015610cb457600080fd5b506105ea610cc336600461431e565b611e2a565b348015610cd457600080fd5b50610602602d5481565b348015610cea57600080fd5b5060265461069790600160c01b900460ff1681565b348015610d0b57600080fd5b506020546106979060ff1681565b348015610d2557600080fd5b5060245461071d906001600160a01b031681565b348015610d4557600080fd5b506105ea610d54366004614376565b611e7f565b348015610d6557600080fd5b50610602602c5481565b348015610d7b57600080fd5b506105ea610d8a3660046143b6565b611f55565b348015610d9b57600080fd5b50610602610daa36600461426e565b612171565b348015610dbb57600080fd5b506105ea6122ed565b348015610dd057600080fd5b50610697610ddf36600461426e565b6001600160a01b03166000908152600b602052604090205460ff1690565b348015610e0957600080fd5b506000546001600160a01b031661071d565b348015610e2757600080fd5b5060235461071d906001600160a01b031681565b348015610e4757600080fd5b5061060260135481565b348015610e5d57600080fd5b5061066a612323565b348015610e7257600080fd5b50601c546106979060ff1681565b348015610e8c57600080fd5b506105ea610e9b366004614663565b612332565b348015610eac57600080fd5b5060265461069790600160b81b900460ff1681565b348015610ecd57600080fd5b5061060260335481565b348015610ee357600080fd5b5061060260155481565b348015610ef957600080fd5b50610697610f0836600461434b565b612361565b348015610f1957600080fd5b506105ea6123b0565b348015610f2e57600080fd5b506105ea610f3d366004614663565b6124b6565b348015610f4e57600080fd5b50610697610f5d36600461434b565b6124e5565b348015610f6e57600080fd5b5061060260105481565b348015610f8457600080fd5b506105ea610f93366004614376565b6124f2565b348015610fa457600080fd5b506105ea610fb336600461431e565b6125c1565b348015610fc457600080fd5b506105ea610fd3366004614663565b612616565b348015610fe457600080fd5b5060265461069790600160b01b900460ff1681565b34801561100557600080fd5b506105ea6110143660046145dd565b612645565b34801561102557600080fd5b506105ea6110343660046145dd565b6126c7565b34801561104557600080fd5b5061060260315481565b34801561105b57600080fd5b506105ea61106a3660046145dd565b61270f565b34801561107b57600080fd5b506105ea61108a3660046145dd565b61274c565b34801561109b57600080fd5b506105ea6110aa366004614663565b612794565b3480156110bb57600080fd5b506106026110ca3660046142a6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561110157600080fd5b506105ea611110366004614663565b612819565b34801561112157600080fd5b50610602601e5481565b34801561113757600080fd5b506105ea61114636600461441f565b612848565b34801561115757600080fd5b506105ea61116636600461426e565b6129de565b34801561117757600080fd5b506105ea611186366004614663565b612ab6565b34801561119757600080fd5b506106976111a636600461426e565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156111d057600080fd5b506105ea6111df366004614693565b612ae5565b3480156111f057600080fd5b506105ea612b1d565b34801561120557600080fd5b5061069761121436600461426e565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031633146112655760405162461bcd60e51b815260040161125c906147b0565b60405180910390fd5b42600c81905560185560316011556032601255611280612b1d565b565b6000546001600160a01b031633146112ac5760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113015760405162461bcd60e51b815260040161125c906147b0565b603255565b6060600d8054611315906149e5565b80601f0160208091040260200160405190810160405280929190818152602001828054611341906149e5565b801561138e5780601f106113635761010080835404028352916020019161138e565b820191906000526020600020905b81548152906001019060200180831161137157829003601f168201915b5050505050905090565b60006113a5338484612b56565b5060015b92915050565b6000546001600160a01b031633146113d95760405162461bcd60e51b815260040161125c906147b0565b60005b81518160ff16101561145557600160046000848460ff168151811061141157634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061144d81614a3b565b9150506113dc565b5050565b6000546001600160a01b031633146114835760405162461bcd60e51b815260040161125c906147b0565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b1580156114c557600080fd5b505afa1580156114d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fd919061467b565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561154b57600080fd5b505af115801561155f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158391906145f9565b50505050565b6000546001600160a01b031633146115b35760405162461bcd60e51b815260040161125c906147b0565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115ff5760405162461bcd60e51b815260040161125c906147b0565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461164b5760405162461bcd60e51b815260040161125c906147b0565b6103e881111561166d5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f75760016030600085858581811061169e57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116b3919061426e565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff0019909216919091179055806116ef81614a20565b915050611670565b505050565b6000546001600160a01b031633146117265760405162461bcd60e51b815260040161125c906147b0565b61174d61173b6000546001600160a01b031690565b6024546001600160a01b031683612c7a565b50565b600061175d848484612c7a565b6117af84336117aa85604051806060016040528060288152602001614aab602891396001600160a01b038a166000908152600560209081526040808320338452909152902054919061344a565b612b56565b5060019392505050565b6000546001600160a01b031633146117e35760405162461bcd60e51b815260040161125c906147b0565b8281146118025760405162461bcd60e51b815260040161125c9061480d565b6103e88311156118245760405162461bcd60e51b815260040161125c906147e5565b60005b838110156118a6576118943386868481811061185357634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611868919061426e565b85858581811061188857634e487b7160e01b600052603260045260246000fd5b90506020020135612c7a565b8061189e81614a20565b915050611827565b5050505050565b6000546001600160a01b031633146118d75760405162461bcd60e51b815260040161125c906147b0565b6035805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916113a59185906117aa9086613484565b6000546001600160a01b0316331461194a5760405162461bcd60e51b815260040161125c906147b0565b60405133904780156108fc02916000818181858888f1935050505015801561174d573d6000803e3d6000fd5b6000546001600160a01b031633146119a05760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119f55760405162461bcd60e51b815260040161125c906147b0565b601092909255601155601255565b6000546001600160a01b03163314611a2d5760405162461bcd60e51b815260040161125c906147b0565b601992909255601a55601b55565b6000546001600160a01b03163314611a655760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611aba5760405162461bcd60e51b815260040161125c906147b0565b603580549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314611afe5760405162461bcd60e51b815260040161125c906147b0565b601c805460ff1916911515919091179055565b6000546001600160a01b03163314611b3b5760405162461bcd60e51b815260040161125c906147b0565b603355565b611b7d6040518060c00160405280606081526020016060815260200160008152602001600081526020016000151581526020016000151581525090565b6001600160a01b0382166000908152603060209081526040918290208251815460e09381028201840190945260c081018481529093919284928491840182828015611be757602002820191906000526020600020905b815481526020019060010190808311611bd3575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c3f57602002820191906000526020600020905b815481526020019060010190808311611c2b575b5050509183525050600282015460208201526003820154604082015260049091015460ff8082161515606084015261010090910416151560809091015292915050565b6000546001600160a01b03163314611cac5760405162461bcd60e51b815260040161125c906147b0565b6103e8811115611cce5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f757600160306000858585818110611cff57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611d14919061426e565b6001600160a01b031681526020810191909152604001600020600401805460ff191691151591909117905580611d4981614a20565b915050611cd1565b6000546001600160a01b03163314611d7b5760405162461bcd60e51b815260040161125c906147b0565b60268054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b03163314611dc35760405162461bcd60e51b815260040161125c906147b0565b600080546040516001600160a01b0390911690600080516020614ad3833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611e255760405162461bcd60e51b815260040161125c906147b0565b602e55565b6000546001600160a01b03163314611e545760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611ea95760405162461bcd60e51b815260040161125c906147b0565b6103e8811115611ecb5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f757600060306000858585818110611efc57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611f11919061426e565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff001990921691909117905580611f4d81614a20565b915050611ece565b6000546001600160a01b03163314611f7f5760405162461bcd60e51b815260040161125c906147b0565b828114611f9e5760405162461bcd60e51b815260040161125c9061480d565b6103e8831115611fc05760405162461bcd60e51b815260040161125c906147e5565b60005b838110156118a657828282818110611feb57634e487b7160e01b600052603260045260246000fd5b9050602002013560066000336001600160a01b03166001600160a01b03168152602001908152602001600020600082825461202691906149b7565b90915550839050828281811061204c57634e487b7160e01b600052603260045260246000fd5b905060200201356006600087878581811061207757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061208c919061426e565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546120bb9190614960565b9091555085905084828181106120e157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906120f6919061426e565b6001600160a01b0316337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85858581811061214157634e487b7160e01b600052603260045260246000fd5b9050602002013560405161215791815260200190565b60405180910390a38061216981614a20565b915050611fc3565b6001600160a01b038116600090815260306020526040812054806121955750919050565b6001600160a01b03831660009081526030602052604081206004015460ff166121c0576034546121c4565b6032545b6001600160a01b038516600090815260306020526040812060020154919250901561220a576001600160a01b03851660009081526030602052604090206002015461220c565b815b90505b82612219576122e5565b82612223816149ce565b6001600160a01b03871660009081526030602052604081206001018054929650909250908590811061226557634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080824261227f91906149b7565b116122d9576001600160a01b03861660009081526030602052604090208054859081106122bc57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154856122d29190614960565b94506122df565b506122e5565b5061220f565b505050919050565b6000546001600160a01b031633146123175760405162461bcd60e51b815260040161125c906147b0565b6003805460ff19169055565b6060600e8054611315906149e5565b6000546001600160a01b0316331461235c5760405162461bcd60e51b815260040161125c906147b0565b603155565b60006113a533846117aa85604051806060016040528060258152602001614af3602591393360009081526005602090815260408083206001600160a01b038d168452909152902054919061344a565b6001546001600160a01b031633146124165760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b606482015260840161125c565b60025442106124675760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015260640161125c565b600154600080546040516001600160a01b039384169390911691600080516020614ad383398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b031633146124e05760405162461bcd60e51b815260040161125c906147b0565b602d55565b60006113a5338484612c7a565b6000546001600160a01b0316331461251c5760405162461bcd60e51b815260040161125c906147b0565b6103e881111561253e5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f75760006030600085858581811061256f57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190612584919061426e565b6001600160a01b031681526020810191909152604001600020600401805460ff1916911515919091179055806125b981614a20565b915050612541565b6000546001600160a01b031633146125eb5760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146126405760405162461bcd60e51b815260040161125c906147b0565b603455565b6000546001600160a01b0316331461266f5760405162461bcd60e51b815260040161125c906147b0565b60268054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906126bc90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146126f15760405162461bcd60e51b815260040161125c906147b0565b60268054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146127395760405162461bcd60e51b815260040161125c906147b0565b6020805460ff1916911515919091179055565b6000546001600160a01b031633146127765760405162461bcd60e51b815260040161125c906147b0565b60268054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146127be5760405162461bcd60e51b815260040161125c906147b0565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556127ed8142614960565b600255600080546040516001600160a01b0390911690600080516020614ad3833981519152908390a350565b6000546001600160a01b031633146128435760405162461bcd60e51b815260040161125c906147b0565b602b55565b6000546001600160a01b031633146128725760405162461bcd60e51b815260040161125c906147b0565b848314801561288057508281145b61289c5760405162461bcd60e51b815260040161125c9061480d565b6103e88511156128be5760405162461bcd60e51b815260040161125c906147e5565b60005b858110156129d5578484828181106128e957634e487b7160e01b600052603260045260246000fd5b905060200201356030600089898581811061291457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190612929919061426e565b6001600160a01b0316815260208101919091526040016000206002015582828281811061296657634e487b7160e01b600052603260045260246000fd5b905060200201356030600089898581811061299157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906129a6919061426e565b6001600160a01b03168152602081019190915260400160002060030155806129cd81614a20565b9150506128c1565b50505050505050565b6000546001600160a01b03163314612a085760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b038116612a6d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161125c565b600080546040516001600160a01b0380851693921691600080516020614ad383398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314612ae05760405162461bcd60e51b815260040161125c906147b0565b602c55565b6000546001600160a01b03163314612b0f5760405162461bcd60e51b815260040161125c906147b0565b601d92909255601e55601f55565b6000546001600160a01b03163314612b475760405162461bcd60e51b815260040161125c906147b0565b6003805460ff19166001179055565b6001600160a01b038316612bb85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161125c565b6001600160a01b038216612c195760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161125c565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6003548390839060ff1680612ca757506001600160a01b03821660009081526004602052604090205460ff165b80612cca57506001600160a01b03811660009081526004602052604090205460ff165b612d015760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b604482015260640161125c565b60008311612d485760405162461bcd60e51b815260206004820152601460248201527343616e2774207472616465203020746f6b656e7360601b604482015260640161125c565b6001600160a01b038516612dac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161125c565b6001600160a01b038416612e0e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161125c565b60008311612e705760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161125c565b6001600160a01b038516600090815260066020526040902054831115612ed85760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161125c565b6001600160a01b03851660009081526008602052604090205460ff1680612f1757506001600160a01b03841660009081526008602052604090205460ff165b15612f645760405162461bcd60e51b815260206004820152601c60248201527f426c61636b6c6973746564206164647265737320696e766f6c76656400000000604482015260640161125c565b60205460ff1680612f845750612f82856001600160a01b03166134ea565b155b80612fa757506001600160a01b03851660009081526009602052604090205460ff165b612fea5760405162461bcd60e51b8152602060048201526014602482015273139bc818dbdb9d1c9858dd1cc8185b1b1bddd95960621b604482015260640161125c565b612ff2613526565b600061301760285461301160295460275461348490919063ffffffff16565b90613484565b602f5490915060ff16801561302c5750600081115b156130a757600061303c826135f9565b602d549091508110801590819061305d5750602654600160a01b900460ff16155b801561308257506001600160a01b0388166000908152600b602052604090205460ff16155b80156130975750602654600160a81b900460ff165b156130a4576130a46137b0565b50505b6130af6139b1565b6001600160a01b0386166000908152600760205260408120548190819060ff16806130f257506001600160a01b03881660009081526007602052604090205460ff165b806131065750602654600160a01b900460ff165b6133f0576001600160a01b0388166000908152600b602052604090205460ff16156131ff57602b54871115806131465750602654600160b01b900460ff16155b61319d5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e74206578636565647320746865206d61782073656c6c20616d6f756044820152611b9d60f21b606482015260840161125c565b6131be6021546131b8601b548a613a7b90919063ffffffff16565b90613afa565b92506131db6021546131b8601a548a613a7b90919063ffffffff16565b91506131f86021546131b86019548a613a7b90919063ffffffff16565b90506133f0565b6001600160a01b0389166000908152600b602052604090205460ff161561331457600c5442141561324e576001600160a01b0388166000908152600860205260409020805460ff191660011790555b602c54871115806132695750602654600160b81b900460ff16155b6132bf5760405162461bcd60e51b815260206004820152602160248201527f416d6f756e74206578636565647320746865206d61782062757920616d6f756e6044820152601d60fa1b606482015260840161125c565b6132da6021546131b86012548a613a7b90919063ffffffff16565b92506132f76021546131b86011548a613a7b90919063ffffffff16565b91506131f86021546131b86010548a613a7b90919063ffffffff16565b6001600160a01b03891660009081526030602052604090206004015460ff161580156133415750600c5442115b61338d5760405162461bcd60e51b815260206004820152601f60248201527f4e6f207472616e736665727320666f7220707269766174652073616c65727300604482015260640161125c565b601c5460ff16156133f0576133b36021546131b8601f548a613a7b90919063ffffffff16565b92506133d06021546131b8601e548a613a7b90919063ffffffff16565b91506133ed6021546131b8601d548a613a7b90919063ffffffff16565b90505b6027546133fd9084613484565b60275560285461340d9082613484565b60285560295461341d9083613484565b6029556000613430826130118686613484565b905061343e8a8a8a84613b3c565b50505050505050505050565b6000818484111561346e5760405162461bcd60e51b815260040161125c919061475d565b50600061347b84866149b7565b95945050505050565b6000806134918385614960565b9050838110156134e35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161125c565b9392505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061351e57508115155b949350505050565b600080602660009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561357757600080fd5b505afa15801561358b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135af9190614615565b506001600160701b031691506001600160701b031691506000821180156135d65750600081115b6135e15760006135e4565b60015b602f805460ff19169115159190911790555050565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061364057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561369457600080fd5b505afa1580156136a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136cc919061428a565b816001815181106136ed57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260255460405163d06ca61f60e01b815291169063d06ca61f9061372c90869085906004016148b6565b60006040518083038186803b15801561374457600080fd5b505afa158015613758573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137809190810190614556565b6001815181106137a057634e487b7160e01b600052603260045260246000fd5b6020026020010151915050919050565b6026805460ff60a01b1916600160a01b17905530600090815260066020526040812054905060006137f460285461301160275460295461348490919063ffffffff16565b905080156139a0576000613817826131b860295486613a7b90919063ffffffff16565b90506000613834836131b860275487613a7b90919063ffffffff16565b90506000613851846131b860285488613a7b90919063ffffffff16565b90506000613860846002613afa565b9050600061386e82866149b7565b9050600061387c8884613d68565b90504761388882613daa565b60006138944783613d68565b905060006138a6846131b88488613a7b565b6022549091506001600160a01b03166108fc6138c6866131b8868d613a7b565b6040518115909202916000818181858888f193505050501580156138ee573d6000803e3d6000fd5b506023546001600160a01b03166108fc61390c866131b8868c613a7b565b6040518115909202916000818181858888f19350505050158015613934573d6000803e3d6000fd5b508015613987576139458682613f2f565b60408051878152602081018390529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b5050600060298190556027819055602855505050505050505b50506026805460ff60a01b19169055565b60165460ff1680156139c45750600c5415155b15611280576000601854426139d991906149b7565b90506000601754826139eb9190614978565b905060005b81811015613a4c57600460115411613a0757613a4c565b600260116000828254613a1a91906149b7565b92505081905550600260126000828254613a3491906149b7565b90915550819050613a4481614a20565b9150506139f0565b5042601855601154600410611455576016805460ff191690556013546011556015546012556014546010555050565b600082613a8a575060006113a9565b6000613a968385614998565b905082613aa38583614978565b146134e35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161125c565b60006134e383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061400c565b6000613b488383613d68565b6001600160a01b038616600090815260066020526040902054909150613b6e9084613d68565b6001600160a01b038616600090815260066020526040808220929092553081522054613b9a9083613484565b30600090815260066020526040808220929092556001600160a01b03861681522054613bc69082613484565b6001600160a01b0385166000908152600660205260409020819055602e54101580613c0957506001600160a01b0384166000908152600a602052604090205460ff165b80613c1e5750602654600160c01b900460ff16155b613c7e5760405162461bcd60e51b815260206004820152602b60248201527f45786365656473206d617820746f6b656e73206c696d6974206f6e206120736960448201526a1b99db19481dd85b1b195d60aa1b606482015260840161125c565b602f5460ff168015613c9a5750602654600160a01b900460ff16155b8015613cbf57506001600160a01b0385166000908152600b602052604090205460ff16155b15613cce57613cce858261403a565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d1391815260200190565b60405180910390a381156118a65760405182815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b60006134e383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061344a565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613ded57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613e4157600080fd5b505afa158015613e55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e79919061428a565b81600181518110613e9a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602554613ec09130911684612b56565b60255460405163791ac94760e01b81526001600160a01b039091169063791ac94790613ef99085906000908690309042906004016148cf565b600060405180830381600087803b158015613f1357600080fd5b505af1158015613f27573d6000803e3d6000fd5b505050505050565b602554613f479030906001600160a01b031684612b56565b6025546001600160a01b031663f305d719823085600080613f706000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015613fd357600080fd5b505af1158015613fe7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118a691906146be565b6000818361402d5760405162461bcd60e51b815260040161125c919061475d565b50600061347b8486614978565b6001600160a01b038216600090815260306020526040902060040154610100900460ff1680614093575060355460ff1615801561409357506001600160a01b03821660009081526030602052604090206004015460ff16155b806140cc5750603554610100900460ff161580156140cc57506001600160a01b03821660009081526030602052604090206004015460ff165b156140d5575050565b60006140e0826135f9565b6001600160a01b0384166000908152603060209081526040822060018082018054808301825590855283852042910155815490810182559083529082200182905590915061412d84612171565b6001600160a01b0385166000908152603060205260408120600401549192509060ff1661415c57603354614160565b6031545b6001600160a01b03861660009081526030602052604081206003015491925090156141a6576001600160a01b0386166000908152603060205260409020600301546141a8565b815b905080831115613f275760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74206f76657220746865206c696d697420666f722074696d652070604482015264195c9a5bd960da1b606482015260840161125c565b60008083601f840112614219578182fd5b50813567ffffffffffffffff811115614230578182fd5b6020830191508360208260051b850101111561424b57600080fd5b9250929050565b80516001600160701b038116811461426957600080fd5b919050565b60006020828403121561427f578081fd5b81356134e381614a87565b60006020828403121561429b578081fd5b81516134e381614a87565b600080604083850312156142b8578081fd5b82356142c381614a87565b915060208301356142d381614a87565b809150509250929050565b6000806000606084860312156142f2578081fd5b83356142fd81614a87565b9250602084013561430d81614a87565b929592945050506040919091013590565b60008060408385031215614330578182fd5b823561433b81614a87565b915060208301356142d381614a9c565b6000806040838503121561435d578182fd5b823561436881614a87565b946020939093013593505050565b60008060208385031215614388578182fd5b823567ffffffffffffffff81111561439e578283fd5b6143aa85828601614208565b90969095509350505050565b600080600080604085870312156143cb578081fd5b843567ffffffffffffffff808211156143e2578283fd5b6143ee88838901614208565b90965094506020870135915080821115614406578283fd5b5061441387828801614208565b95989497509550505050565b60008060008060008060608789031215614437578182fd5b863567ffffffffffffffff8082111561444e578384fd5b61445a8a838b01614208565b90985096506020890135915080821115614472578384fd5b61447e8a838b01614208565b90965094506040890135915080821115614496578384fd5b506144a389828a01614208565b979a9699509497509295939492505050565b600060208083850312156144c7578182fd5b823567ffffffffffffffff8111156144dd578283fd5b8301601f810185136144ed578283fd5b80356145006144fb8261493c565b61490b565b80828252848201915084840188868560051b870101111561451f578687fd5b8694505b8385101561454a57803561453681614a87565b835260019490940193918501918501614523565b50979650505050505050565b60006020808385031215614568578182fd5b825167ffffffffffffffff81111561457e578283fd5b8301601f8101851361458e578283fd5b805161459c6144fb8261493c565b80828252848201915084840188868560051b87010111156145bb578687fd5b8694505b8385101561454a5780518352600194909401939185019185016145bf565b6000602082840312156145ee578081fd5b81356134e381614a9c565b60006020828403121561460a578081fd5b81516134e381614a9c565b600080600060608486031215614629578081fd5b61463284614252565b925061464060208501614252565b9150604084015163ffffffff81168114614658578182fd5b809150509250925092565b600060208284031215614674578081fd5b5035919050565b60006020828403121561468c578081fd5b5051919050565b6000806000606084860312156146a7578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156146d2578081fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156147235781516001600160a01b0316875295820195908201906001016146fe565b509495945050505050565b6000815180845260208085019450808401835b8381101561472357815187529582019590820190600101614741565b6000602080835283518082850152825b818110156147895785810183015185820160400152820161476d565b8181111561479a5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600e908201526d417272617920746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f4172726179206c656e6774687320646f6e2774206d6174636800000000000000604082015260600190565b602081526000825160c0602084015261486060e084018261472e565b90506020840151601f1984830301604085015261487d828261472e565b91505060408401516060840152606084015160808401526080840151151560a084015260a0840151151560c08401528091505092915050565b82815260406020820152600061351e60408301846146eb565b85815284602082015260a0604082015260006148ee60a08301866146eb565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561493457614934614a71565b604052919050565b600067ffffffffffffffff82111561495657614956614a71565b5060051b60200190565b6000821982111561497357614973614a5b565b500190565b60008261499357634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156149b2576149b2614a5b565b500290565b6000828210156149c9576149c9614a5b565b500390565b6000816149dd576149dd614a5b565b506000190190565b600181811c908216806149f957607f821691505b60208210811415614a1a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614a3457614a34614a5b565b5060010190565b600060ff821660ff811415614a5257614a52614a5b565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461174d57600080fd5b801515811461174d57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209321fb5344bed375e9a4b3a8eacb35c66f25057ebf7eb92d067a01f74d14832c64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106105c95760003560e01c80636fb9fbfe116102f35780639f6462141161019b578063d1d3a05f116100e7578063f064321f116100a0578063f6887cd31161007a578063f6887cd31461118b578063fa06dba3146111c4578063fb201b1d146111e4578063fe575a87146111f957600080fd5b8063f064321f1461112b578063f2fde38b1461114b578063f34eb0b81461116b57600080fd5b8063d1d3a05f1461104f578063d7c6e3601461106f578063dd4670641461108f578063dd62ed3e146110af578063e99c9d09146110f5578063ea08d30b1461111557600080fd5b8063ae02cd5c11610154578063bf7856b71161012e578063bf7856b714610fd8578063c49b9a8014610ff9578063c5f34b9c14611019578063ca4507881461103957600080fd5b8063ae02cd5c14610f78578063af9549e014610f98578063b498412314610fb857600080fd5b80639f64621414610ed7578063a457c2d714610eed578063a69df4b514610f0d578063a6a376c814610f22578063a9059cbb14610f42578063aa45026b14610f6257600080fd5b806388e765ff1161025a5780638ea5220f1161021357806396f9e9be116101ed57806396f9e9be14610e6657806398e2a5e214610e8057806399fa296f14610ea05780639d5710d114610ec157600080fd5b80638ea5220f14610e1b57806390987e0914610e3b57806395d89b4114610e5157600080fd5b806388e765ff14610d5957806389616a0f14610d6f5780638b16549a14610d8f5780638baeefce14610daf5780638c672a2614610dc45780638da5cb5b14610dfd57600080fd5b80637638e151116102ac5780637638e15114610ca857806378cd53bc14610cc85780637b94943b14610cde5780637ba6b4ee14610cff57806385141a7714610d19578063867a1dc214610d3957600080fd5b80636fb9fbfe14610bde57806370a0823114610bfe57806370bfcf2114610c34578063715018a614610c53578063728d41c914610c6857806375f0a87414610c8857600080fd5b806340615b8b11610471578063566dc0b2116103bd57806363e8f3701161037657806367a36dc71161035057806367a36dc714610b8657806369550efd14610b9c5780636bc87c3a14610bb25780636cbdd5e314610bc857600080fd5b806363e8f37014610b3a57806366a88d9614610b5a57806366d602ae14610b7057600080fd5b8063566dc0b214610a825780635ca52d6714610a985780635d38ab8514610ab8578063602bc62b14610ad85780636199d05e14610aed57806361a13b4a14610b0d57600080fd5b806349bd5a5e1161042a57806350286f641161040457806350286f64146109da57806353048640146109fa5780635342acb414610a10578063545fb32814610a4957600080fd5b806349bd5a5e146109795780634a74bb02146109995780634d87c644146109ba57600080fd5b806340615b8b146108dd578063424ba848146108f357806343614d2814610913578063437d98401461092957806347535d7b1461093f57806348914c991461095957600080fd5b80631f53ac021161053057806323b63585116104e95780632b9b4f78116104c35780632b9b4f7814610866578063313ce5671461088657806339509351146108a85780633ccfd60b146108c857600080fd5b806323b635851461080657806323b872dd146108265780632610eaca1461084657600080fd5b80631f53ac021461076057806321ba508114610780578063224611731461079657806322976e0d146107b657806322c98d34146107cc578063232898b4146107e657600080fd5b80630b6bb6f5116105825780630b6bb6f5146106a7578063147745e5146106c75780631609be1d146106dd5780631694505e146106fd578063170dde6a1461073557806318160ddd1461074b57600080fd5b806301339c21146105d557806303590035146105ec57806303d29d28146106155780630609511e1461063557806306fdde0314610655578063095ea7b31461067757600080fd5b366105d057005b600080fd5b3480156105e157600080fd5b506105ea611232565b005b3480156105f857600080fd5b5061060260285481565b6040519081526020015b60405180910390f35b34801561062157600080fd5b506105ea61063036600461431e565b611282565b34801561064157600080fd5b506105ea610650366004614663565b6112d7565b34801561066157600080fd5b5061066a611306565b60405161060c919061475d565b34801561068357600080fd5b5061069761069236600461434b565b611398565b604051901515815260200161060c565b3480156106b357600080fd5b506105ea6106c23660046144b5565b6113af565b3480156106d357600080fd5b5061060260215481565b3480156106e957600080fd5b506105ea6106f83660046142a6565b611459565b34801561070957600080fd5b5060255461071d906001600160a01b031681565b6040516001600160a01b03909116815260200161060c565b34801561074157600080fd5b50610602601a5481565b34801561075757600080fd5b50602a54610602565b34801561076c57600080fd5b506105ea61077b36600461426e565b611589565b34801561078c57600080fd5b5061060260325481565b3480156107a257600080fd5b506105ea6107b136600461426e565b6115d5565b3480156107c257600080fd5b5061060260125481565b3480156107d857600080fd5b506035546106979060ff1681565b3480156107f257600080fd5b506105ea610801366004614376565b611621565b34801561081257600080fd5b506105ea610821366004614663565b6116fc565b34801561083257600080fd5b506106976108413660046142de565b611750565b34801561085257600080fd5b506105ea6108613660046143b6565b6117b9565b34801561087257600080fd5b506105ea6108813660046145dd565b6118ad565b34801561089257600080fd5b50600f5460405160ff909116815260200161060c565b3480156108b457600080fd5b506106976108c336600461434b565b6118ea565b3480156108d457600080fd5b506105ea611920565b3480156108e957600080fd5b50610602601b5481565b3480156108ff57600080fd5b506105ea61090e36600461431e565b611976565b34801561091f57600080fd5b5061060260195481565b34801561093557600080fd5b5061060260345481565b34801561094b57600080fd5b506003546106979060ff1681565b34801561096557600080fd5b506105ea610974366004614693565b6119cb565b34801561098557600080fd5b5060265461071d906001600160a01b031681565b3480156109a557600080fd5b5060265461069790600160a81b900460ff1681565b3480156109c657600080fd5b506105ea6109d5366004614693565b611a03565b3480156109e657600080fd5b506105ea6109f536600461431e565b611a3b565b348015610a0657600080fd5b50610602601d5481565b348015610a1c57600080fd5b50610697610a2b36600461426e565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610a5557600080fd5b50610697610a6436600461426e565b6001600160a01b03166000908152600a602052604090205460ff1690565b348015610a8e57600080fd5b5061060260295481565b348015610aa457600080fd5b506105ea610ab33660046145dd565b611a90565b348015610ac457600080fd5b506105ea610ad33660046145dd565b611ad4565b348015610ae457600080fd5b50600254610602565b348015610af957600080fd5b506105ea610b08366004614663565b611b11565b348015610b1957600080fd5b50610b2d610b2836600461426e565b611b40565b60405161060c9190614844565b348015610b4657600080fd5b506105ea610b55366004614376565b611c82565b348015610b6657600080fd5b50610602602e5481565b348015610b7c57600080fd5b50610602602b5481565b348015610b9257600080fd5b5061060260275481565b348015610ba857600080fd5b5061060260145481565b348015610bbe57600080fd5b5061060260115481565b348015610bd457600080fd5b50610602601f5481565b348015610bea57600080fd5b506105ea610bf93660046145dd565b611d51565b348015610c0a57600080fd5b50610602610c1936600461426e565b6001600160a01b031660009081526006602052604090205490565b348015610c4057600080fd5b5060355461069790610100900460ff1681565b348015610c5f57600080fd5b506105ea611d99565b348015610c7457600080fd5b506105ea610c83366004614663565b611dfb565b348015610c9457600080fd5b5060225461071d906001600160a01b031681565b348015610cb457600080fd5b506105ea610cc336600461431e565b611e2a565b348015610cd457600080fd5b50610602602d5481565b348015610cea57600080fd5b5060265461069790600160c01b900460ff1681565b348015610d0b57600080fd5b506020546106979060ff1681565b348015610d2557600080fd5b5060245461071d906001600160a01b031681565b348015610d4557600080fd5b506105ea610d54366004614376565b611e7f565b348015610d6557600080fd5b50610602602c5481565b348015610d7b57600080fd5b506105ea610d8a3660046143b6565b611f55565b348015610d9b57600080fd5b50610602610daa36600461426e565b612171565b348015610dbb57600080fd5b506105ea6122ed565b348015610dd057600080fd5b50610697610ddf36600461426e565b6001600160a01b03166000908152600b602052604090205460ff1690565b348015610e0957600080fd5b506000546001600160a01b031661071d565b348015610e2757600080fd5b5060235461071d906001600160a01b031681565b348015610e4757600080fd5b5061060260135481565b348015610e5d57600080fd5b5061066a612323565b348015610e7257600080fd5b50601c546106979060ff1681565b348015610e8c57600080fd5b506105ea610e9b366004614663565b612332565b348015610eac57600080fd5b5060265461069790600160b81b900460ff1681565b348015610ecd57600080fd5b5061060260335481565b348015610ee357600080fd5b5061060260155481565b348015610ef957600080fd5b50610697610f0836600461434b565b612361565b348015610f1957600080fd5b506105ea6123b0565b348015610f2e57600080fd5b506105ea610f3d366004614663565b6124b6565b348015610f4e57600080fd5b50610697610f5d36600461434b565b6124e5565b348015610f6e57600080fd5b5061060260105481565b348015610f8457600080fd5b506105ea610f93366004614376565b6124f2565b348015610fa457600080fd5b506105ea610fb336600461431e565b6125c1565b348015610fc457600080fd5b506105ea610fd3366004614663565b612616565b348015610fe457600080fd5b5060265461069790600160b01b900460ff1681565b34801561100557600080fd5b506105ea6110143660046145dd565b612645565b34801561102557600080fd5b506105ea6110343660046145dd565b6126c7565b34801561104557600080fd5b5061060260315481565b34801561105b57600080fd5b506105ea61106a3660046145dd565b61270f565b34801561107b57600080fd5b506105ea61108a3660046145dd565b61274c565b34801561109b57600080fd5b506105ea6110aa366004614663565b612794565b3480156110bb57600080fd5b506106026110ca3660046142a6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561110157600080fd5b506105ea611110366004614663565b612819565b34801561112157600080fd5b50610602601e5481565b34801561113757600080fd5b506105ea61114636600461441f565b612848565b34801561115757600080fd5b506105ea61116636600461426e565b6129de565b34801561117757600080fd5b506105ea611186366004614663565b612ab6565b34801561119757600080fd5b506106976111a636600461426e565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156111d057600080fd5b506105ea6111df366004614693565b612ae5565b3480156111f057600080fd5b506105ea612b1d565b34801561120557600080fd5b5061069761121436600461426e565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031633146112655760405162461bcd60e51b815260040161125c906147b0565b60405180910390fd5b42600c81905560185560316011556032601255611280612b1d565b565b6000546001600160a01b031633146112ac5760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113015760405162461bcd60e51b815260040161125c906147b0565b603255565b6060600d8054611315906149e5565b80601f0160208091040260200160405190810160405280929190818152602001828054611341906149e5565b801561138e5780601f106113635761010080835404028352916020019161138e565b820191906000526020600020905b81548152906001019060200180831161137157829003601f168201915b5050505050905090565b60006113a5338484612b56565b5060015b92915050565b6000546001600160a01b031633146113d95760405162461bcd60e51b815260040161125c906147b0565b60005b81518160ff16101561145557600160046000848460ff168151811061141157634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061144d81614a3b565b9150506113dc565b5050565b6000546001600160a01b031633146114835760405162461bcd60e51b815260040161125c906147b0565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b1580156114c557600080fd5b505afa1580156114d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fd919061467b565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561154b57600080fd5b505af115801561155f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158391906145f9565b50505050565b6000546001600160a01b031633146115b35760405162461bcd60e51b815260040161125c906147b0565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115ff5760405162461bcd60e51b815260040161125c906147b0565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461164b5760405162461bcd60e51b815260040161125c906147b0565b6103e881111561166d5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f75760016030600085858581811061169e57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116b3919061426e565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff0019909216919091179055806116ef81614a20565b915050611670565b505050565b6000546001600160a01b031633146117265760405162461bcd60e51b815260040161125c906147b0565b61174d61173b6000546001600160a01b031690565b6024546001600160a01b031683612c7a565b50565b600061175d848484612c7a565b6117af84336117aa85604051806060016040528060288152602001614aab602891396001600160a01b038a166000908152600560209081526040808320338452909152902054919061344a565b612b56565b5060019392505050565b6000546001600160a01b031633146117e35760405162461bcd60e51b815260040161125c906147b0565b8281146118025760405162461bcd60e51b815260040161125c9061480d565b6103e88311156118245760405162461bcd60e51b815260040161125c906147e5565b60005b838110156118a6576118943386868481811061185357634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611868919061426e565b85858581811061188857634e487b7160e01b600052603260045260246000fd5b90506020020135612c7a565b8061189e81614a20565b915050611827565b5050505050565b6000546001600160a01b031633146118d75760405162461bcd60e51b815260040161125c906147b0565b6035805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916113a59185906117aa9086613484565b6000546001600160a01b0316331461194a5760405162461bcd60e51b815260040161125c906147b0565b60405133904780156108fc02916000818181858888f1935050505015801561174d573d6000803e3d6000fd5b6000546001600160a01b031633146119a05760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119f55760405162461bcd60e51b815260040161125c906147b0565b601092909255601155601255565b6000546001600160a01b03163314611a2d5760405162461bcd60e51b815260040161125c906147b0565b601992909255601a55601b55565b6000546001600160a01b03163314611a655760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611aba5760405162461bcd60e51b815260040161125c906147b0565b603580549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314611afe5760405162461bcd60e51b815260040161125c906147b0565b601c805460ff1916911515919091179055565b6000546001600160a01b03163314611b3b5760405162461bcd60e51b815260040161125c906147b0565b603355565b611b7d6040518060c00160405280606081526020016060815260200160008152602001600081526020016000151581526020016000151581525090565b6001600160a01b0382166000908152603060209081526040918290208251815460e09381028201840190945260c081018481529093919284928491840182828015611be757602002820191906000526020600020905b815481526020019060010190808311611bd3575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c3f57602002820191906000526020600020905b815481526020019060010190808311611c2b575b5050509183525050600282015460208201526003820154604082015260049091015460ff8082161515606084015261010090910416151560809091015292915050565b6000546001600160a01b03163314611cac5760405162461bcd60e51b815260040161125c906147b0565b6103e8811115611cce5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f757600160306000858585818110611cff57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611d14919061426e565b6001600160a01b031681526020810191909152604001600020600401805460ff191691151591909117905580611d4981614a20565b915050611cd1565b6000546001600160a01b03163314611d7b5760405162461bcd60e51b815260040161125c906147b0565b60268054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b03163314611dc35760405162461bcd60e51b815260040161125c906147b0565b600080546040516001600160a01b0390911690600080516020614ad3833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611e255760405162461bcd60e51b815260040161125c906147b0565b602e55565b6000546001600160a01b03163314611e545760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611ea95760405162461bcd60e51b815260040161125c906147b0565b6103e8811115611ecb5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f757600060306000858585818110611efc57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611f11919061426e565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff001990921691909117905580611f4d81614a20565b915050611ece565b6000546001600160a01b03163314611f7f5760405162461bcd60e51b815260040161125c906147b0565b828114611f9e5760405162461bcd60e51b815260040161125c9061480d565b6103e8831115611fc05760405162461bcd60e51b815260040161125c906147e5565b60005b838110156118a657828282818110611feb57634e487b7160e01b600052603260045260246000fd5b9050602002013560066000336001600160a01b03166001600160a01b03168152602001908152602001600020600082825461202691906149b7565b90915550839050828281811061204c57634e487b7160e01b600052603260045260246000fd5b905060200201356006600087878581811061207757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061208c919061426e565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546120bb9190614960565b9091555085905084828181106120e157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906120f6919061426e565b6001600160a01b0316337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85858581811061214157634e487b7160e01b600052603260045260246000fd5b9050602002013560405161215791815260200190565b60405180910390a38061216981614a20565b915050611fc3565b6001600160a01b038116600090815260306020526040812054806121955750919050565b6001600160a01b03831660009081526030602052604081206004015460ff166121c0576034546121c4565b6032545b6001600160a01b038516600090815260306020526040812060020154919250901561220a576001600160a01b03851660009081526030602052604090206002015461220c565b815b90505b82612219576122e5565b82612223816149ce565b6001600160a01b03871660009081526030602052604081206001018054929650909250908590811061226557634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080824261227f91906149b7565b116122d9576001600160a01b03861660009081526030602052604090208054859081106122bc57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154856122d29190614960565b94506122df565b506122e5565b5061220f565b505050919050565b6000546001600160a01b031633146123175760405162461bcd60e51b815260040161125c906147b0565b6003805460ff19169055565b6060600e8054611315906149e5565b6000546001600160a01b0316331461235c5760405162461bcd60e51b815260040161125c906147b0565b603155565b60006113a533846117aa85604051806060016040528060258152602001614af3602591393360009081526005602090815260408083206001600160a01b038d168452909152902054919061344a565b6001546001600160a01b031633146124165760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b606482015260840161125c565b60025442106124675760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015260640161125c565b600154600080546040516001600160a01b039384169390911691600080516020614ad383398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b031633146124e05760405162461bcd60e51b815260040161125c906147b0565b602d55565b60006113a5338484612c7a565b6000546001600160a01b0316331461251c5760405162461bcd60e51b815260040161125c906147b0565b6103e881111561253e5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f75760006030600085858581811061256f57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190612584919061426e565b6001600160a01b031681526020810191909152604001600020600401805460ff1916911515919091179055806125b981614a20565b915050612541565b6000546001600160a01b031633146125eb5760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146126405760405162461bcd60e51b815260040161125c906147b0565b603455565b6000546001600160a01b0316331461266f5760405162461bcd60e51b815260040161125c906147b0565b60268054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906126bc90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146126f15760405162461bcd60e51b815260040161125c906147b0565b60268054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146127395760405162461bcd60e51b815260040161125c906147b0565b6020805460ff1916911515919091179055565b6000546001600160a01b031633146127765760405162461bcd60e51b815260040161125c906147b0565b60268054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146127be5760405162461bcd60e51b815260040161125c906147b0565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556127ed8142614960565b600255600080546040516001600160a01b0390911690600080516020614ad3833981519152908390a350565b6000546001600160a01b031633146128435760405162461bcd60e51b815260040161125c906147b0565b602b55565b6000546001600160a01b031633146128725760405162461bcd60e51b815260040161125c906147b0565b848314801561288057508281145b61289c5760405162461bcd60e51b815260040161125c9061480d565b6103e88511156128be5760405162461bcd60e51b815260040161125c906147e5565b60005b858110156129d5578484828181106128e957634e487b7160e01b600052603260045260246000fd5b905060200201356030600089898581811061291457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190612929919061426e565b6001600160a01b0316815260208101919091526040016000206002015582828281811061296657634e487b7160e01b600052603260045260246000fd5b905060200201356030600089898581811061299157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906129a6919061426e565b6001600160a01b03168152602081019190915260400160002060030155806129cd81614a20565b9150506128c1565b50505050505050565b6000546001600160a01b03163314612a085760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b038116612a6d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161125c565b600080546040516001600160a01b0380851693921691600080516020614ad383398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314612ae05760405162461bcd60e51b815260040161125c906147b0565b602c55565b6000546001600160a01b03163314612b0f5760405162461bcd60e51b815260040161125c906147b0565b601d92909255601e55601f55565b6000546001600160a01b03163314612b475760405162461bcd60e51b815260040161125c906147b0565b6003805460ff19166001179055565b6001600160a01b038316612bb85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161125c565b6001600160a01b038216612c195760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161125c565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6003548390839060ff1680612ca757506001600160a01b03821660009081526004602052604090205460ff165b80612cca57506001600160a01b03811660009081526004602052604090205460ff165b612d015760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b604482015260640161125c565b60008311612d485760405162461bcd60e51b815260206004820152601460248201527343616e2774207472616465203020746f6b656e7360601b604482015260640161125c565b6001600160a01b038516612dac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161125c565b6001600160a01b038416612e0e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161125c565b60008311612e705760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161125c565b6001600160a01b038516600090815260066020526040902054831115612ed85760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161125c565b6001600160a01b03851660009081526008602052604090205460ff1680612f1757506001600160a01b03841660009081526008602052604090205460ff165b15612f645760405162461bcd60e51b815260206004820152601c60248201527f426c61636b6c6973746564206164647265737320696e766f6c76656400000000604482015260640161125c565b60205460ff1680612f845750612f82856001600160a01b03166134ea565b155b80612fa757506001600160a01b03851660009081526009602052604090205460ff165b612fea5760405162461bcd60e51b8152602060048201526014602482015273139bc818dbdb9d1c9858dd1cc8185b1b1bddd95960621b604482015260640161125c565b612ff2613526565b600061301760285461301160295460275461348490919063ffffffff16565b90613484565b602f5490915060ff16801561302c5750600081115b156130a757600061303c826135f9565b602d549091508110801590819061305d5750602654600160a01b900460ff16155b801561308257506001600160a01b0388166000908152600b602052604090205460ff16155b80156130975750602654600160a81b900460ff165b156130a4576130a46137b0565b50505b6130af6139b1565b6001600160a01b0386166000908152600760205260408120548190819060ff16806130f257506001600160a01b03881660009081526007602052604090205460ff165b806131065750602654600160a01b900460ff165b6133f0576001600160a01b0388166000908152600b602052604090205460ff16156131ff57602b54871115806131465750602654600160b01b900460ff16155b61319d5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e74206578636565647320746865206d61782073656c6c20616d6f756044820152611b9d60f21b606482015260840161125c565b6131be6021546131b8601b548a613a7b90919063ffffffff16565b90613afa565b92506131db6021546131b8601a548a613a7b90919063ffffffff16565b91506131f86021546131b86019548a613a7b90919063ffffffff16565b90506133f0565b6001600160a01b0389166000908152600b602052604090205460ff161561331457600c5442141561324e576001600160a01b0388166000908152600860205260409020805460ff191660011790555b602c54871115806132695750602654600160b81b900460ff16155b6132bf5760405162461bcd60e51b815260206004820152602160248201527f416d6f756e74206578636565647320746865206d61782062757920616d6f756e6044820152601d60fa1b606482015260840161125c565b6132da6021546131b86012548a613a7b90919063ffffffff16565b92506132f76021546131b86011548a613a7b90919063ffffffff16565b91506131f86021546131b86010548a613a7b90919063ffffffff16565b6001600160a01b03891660009081526030602052604090206004015460ff161580156133415750600c5442115b61338d5760405162461bcd60e51b815260206004820152601f60248201527f4e6f207472616e736665727320666f7220707269766174652073616c65727300604482015260640161125c565b601c5460ff16156133f0576133b36021546131b8601f548a613a7b90919063ffffffff16565b92506133d06021546131b8601e548a613a7b90919063ffffffff16565b91506133ed6021546131b8601d548a613a7b90919063ffffffff16565b90505b6027546133fd9084613484565b60275560285461340d9082613484565b60285560295461341d9083613484565b6029556000613430826130118686613484565b905061343e8a8a8a84613b3c565b50505050505050505050565b6000818484111561346e5760405162461bcd60e51b815260040161125c919061475d565b50600061347b84866149b7565b95945050505050565b6000806134918385614960565b9050838110156134e35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161125c565b9392505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061351e57508115155b949350505050565b600080602660009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561357757600080fd5b505afa15801561358b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135af9190614615565b506001600160701b031691506001600160701b031691506000821180156135d65750600081115b6135e15760006135e4565b60015b602f805460ff19169115159190911790555050565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061364057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561369457600080fd5b505afa1580156136a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136cc919061428a565b816001815181106136ed57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260255460405163d06ca61f60e01b815291169063d06ca61f9061372c90869085906004016148b6565b60006040518083038186803b15801561374457600080fd5b505afa158015613758573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137809190810190614556565b6001815181106137a057634e487b7160e01b600052603260045260246000fd5b6020026020010151915050919050565b6026805460ff60a01b1916600160a01b17905530600090815260066020526040812054905060006137f460285461301160275460295461348490919063ffffffff16565b905080156139a0576000613817826131b860295486613a7b90919063ffffffff16565b90506000613834836131b860275487613a7b90919063ffffffff16565b90506000613851846131b860285488613a7b90919063ffffffff16565b90506000613860846002613afa565b9050600061386e82866149b7565b9050600061387c8884613d68565b90504761388882613daa565b60006138944783613d68565b905060006138a6846131b88488613a7b565b6022549091506001600160a01b03166108fc6138c6866131b8868d613a7b565b6040518115909202916000818181858888f193505050501580156138ee573d6000803e3d6000fd5b506023546001600160a01b03166108fc61390c866131b8868c613a7b565b6040518115909202916000818181858888f19350505050158015613934573d6000803e3d6000fd5b508015613987576139458682613f2f565b60408051878152602081018390529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b5050600060298190556027819055602855505050505050505b50506026805460ff60a01b19169055565b60165460ff1680156139c45750600c5415155b15611280576000601854426139d991906149b7565b90506000601754826139eb9190614978565b905060005b81811015613a4c57600460115411613a0757613a4c565b600260116000828254613a1a91906149b7565b92505081905550600260126000828254613a3491906149b7565b90915550819050613a4481614a20565b9150506139f0565b5042601855601154600410611455576016805460ff191690556013546011556015546012556014546010555050565b600082613a8a575060006113a9565b6000613a968385614998565b905082613aa38583614978565b146134e35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161125c565b60006134e383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061400c565b6000613b488383613d68565b6001600160a01b038616600090815260066020526040902054909150613b6e9084613d68565b6001600160a01b038616600090815260066020526040808220929092553081522054613b9a9083613484565b30600090815260066020526040808220929092556001600160a01b03861681522054613bc69082613484565b6001600160a01b0385166000908152600660205260409020819055602e54101580613c0957506001600160a01b0384166000908152600a602052604090205460ff165b80613c1e5750602654600160c01b900460ff16155b613c7e5760405162461bcd60e51b815260206004820152602b60248201527f45786365656473206d617820746f6b656e73206c696d6974206f6e206120736960448201526a1b99db19481dd85b1b195d60aa1b606482015260840161125c565b602f5460ff168015613c9a5750602654600160a01b900460ff16155b8015613cbf57506001600160a01b0385166000908152600b602052604090205460ff16155b15613cce57613cce858261403a565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d1391815260200190565b60405180910390a381156118a65760405182815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b60006134e383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061344a565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613ded57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613e4157600080fd5b505afa158015613e55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e79919061428a565b81600181518110613e9a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602554613ec09130911684612b56565b60255460405163791ac94760e01b81526001600160a01b039091169063791ac94790613ef99085906000908690309042906004016148cf565b600060405180830381600087803b158015613f1357600080fd5b505af1158015613f27573d6000803e3d6000fd5b505050505050565b602554613f479030906001600160a01b031684612b56565b6025546001600160a01b031663f305d719823085600080613f706000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015613fd357600080fd5b505af1158015613fe7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118a691906146be565b6000818361402d5760405162461bcd60e51b815260040161125c919061475d565b50600061347b8486614978565b6001600160a01b038216600090815260306020526040902060040154610100900460ff1680614093575060355460ff1615801561409357506001600160a01b03821660009081526030602052604090206004015460ff16155b806140cc5750603554610100900460ff161580156140cc57506001600160a01b03821660009081526030602052604090206004015460ff165b156140d5575050565b60006140e0826135f9565b6001600160a01b0384166000908152603060209081526040822060018082018054808301825590855283852042910155815490810182559083529082200182905590915061412d84612171565b6001600160a01b0385166000908152603060205260408120600401549192509060ff1661415c57603354614160565b6031545b6001600160a01b03861660009081526030602052604081206003015491925090156141a6576001600160a01b0386166000908152603060205260409020600301546141a8565b815b905080831115613f275760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74206f76657220746865206c696d697420666f722074696d652070604482015264195c9a5bd960da1b606482015260840161125c565b60008083601f840112614219578182fd5b50813567ffffffffffffffff811115614230578182fd5b6020830191508360208260051b850101111561424b57600080fd5b9250929050565b80516001600160701b038116811461426957600080fd5b919050565b60006020828403121561427f578081fd5b81356134e381614a87565b60006020828403121561429b578081fd5b81516134e381614a87565b600080604083850312156142b8578081fd5b82356142c381614a87565b915060208301356142d381614a87565b809150509250929050565b6000806000606084860312156142f2578081fd5b83356142fd81614a87565b9250602084013561430d81614a87565b929592945050506040919091013590565b60008060408385031215614330578182fd5b823561433b81614a87565b915060208301356142d381614a9c565b6000806040838503121561435d578182fd5b823561436881614a87565b946020939093013593505050565b60008060208385031215614388578182fd5b823567ffffffffffffffff81111561439e578283fd5b6143aa85828601614208565b90969095509350505050565b600080600080604085870312156143cb578081fd5b843567ffffffffffffffff808211156143e2578283fd5b6143ee88838901614208565b90965094506020870135915080821115614406578283fd5b5061441387828801614208565b95989497509550505050565b60008060008060008060608789031215614437578182fd5b863567ffffffffffffffff8082111561444e578384fd5b61445a8a838b01614208565b90985096506020890135915080821115614472578384fd5b61447e8a838b01614208565b90965094506040890135915080821115614496578384fd5b506144a389828a01614208565b979a9699509497509295939492505050565b600060208083850312156144c7578182fd5b823567ffffffffffffffff8111156144dd578283fd5b8301601f810185136144ed578283fd5b80356145006144fb8261493c565b61490b565b80828252848201915084840188868560051b870101111561451f578687fd5b8694505b8385101561454a57803561453681614a87565b835260019490940193918501918501614523565b50979650505050505050565b60006020808385031215614568578182fd5b825167ffffffffffffffff81111561457e578283fd5b8301601f8101851361458e578283fd5b805161459c6144fb8261493c565b80828252848201915084840188868560051b87010111156145bb578687fd5b8694505b8385101561454a5780518352600194909401939185019185016145bf565b6000602082840312156145ee578081fd5b81356134e381614a9c565b60006020828403121561460a578081fd5b81516134e381614a9c565b600080600060608486031215614629578081fd5b61463284614252565b925061464060208501614252565b9150604084015163ffffffff81168114614658578182fd5b809150509250925092565b600060208284031215614674578081fd5b5035919050565b60006020828403121561468c578081fd5b5051919050565b6000806000606084860312156146a7578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156146d2578081fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156147235781516001600160a01b0316875295820195908201906001016146fe565b509495945050505050565b6000815180845260208085019450808401835b8381101561472357815187529582019590820190600101614741565b6000602080835283518082850152825b818110156147895785810183015185820160400152820161476d565b8181111561479a5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600e908201526d417272617920746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f4172726179206c656e6774687320646f6e2774206d6174636800000000000000604082015260600190565b602081526000825160c0602084015261486060e084018261472e565b90506020840151601f1984830301604085015261487d828261472e565b91505060408401516060840152606084015160808401526080840151151560a084015260a0840151151560c08401528091505092915050565b82815260406020820152600061351e60408301846146eb565b85815284602082015260a0604082015260006148ee60a08301866146eb565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561493457614934614a71565b604052919050565b600067ffffffffffffffff82111561495657614956614a71565b5060051b60200190565b6000821982111561497357614973614a5b565b500190565b60008261499357634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156149b2576149b2614a5b565b500290565b6000828210156149c9576149c9614a5b565b500390565b6000816149dd576149dd614a5b565b506000190190565b600181811c908216806149f957607f821691505b60208210811415614a1a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614a3457614a34614a5b565b5060010190565b600060ff821660ff811415614a5257614a52614a5b565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461174d57600080fd5b801515811461174d57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209321fb5344bed375e9a4b3a8eacb35c66f25057ebf7eb92d067a01f74d14832c64736f6c63430008040033

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.