ETH Price: $2,803.34 (-5.26%)

Token

DoNotBuy (DNB)

Overview

Max Total Supply

100,000,000 DNB

Holders

6

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
fruitiloops.linea.eth
Balance
54,297.878279104148403096 DNB

Value
$0.00
0x9d12c7aad8297e042e8cdbae5e12df12f297eef9
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
DoNotBuy

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 1000 runs

Other Settings:
london EvmVersion
File 1 of 1 : DoNotBuy.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.26;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return(true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a / b;}}

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function circulatingSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

struct route {
    address from;
    address to;
    bool stable;
}

interface IFactory {
    function createPair(address tokenA, address tokenB, bool stable) external returns (address pair);
    function getPair(address tokenA, address tokenB, bool stable) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function wETH() external pure returns (address);
    function getAmountsOut(uint amountIn, route[] calldata routes) external view returns (uint[] memory amounts);
    function addLiquidityETH(
        address token,
        bool stable,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        route[] calldata routes,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        route[] calldata routes,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
    uint amountIn,
    uint amountOutMin,
    route[] calldata routes,
    address to,
    uint deadline
   ) external;
}

contract DoNotBuy is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'DoNotBuy';
    string private constant _symbol = 'DNB';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 100000000 * (10 ** _decimals);
    uint256 private _maxTxAmount = ( _totalSupply * 200 ) / 10000;
    uint256 private _maxSellAmount = ( _totalSupply * 200 ) / 10000;
    uint256 private _maxWalletToken = ( _totalSupply * 200 ) / 10000;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isDividendExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 200;
    uint256 private marketingFee = 1800;
    uint256 private rewardsFee = 7000;
    uint256 private developmentFee = 1000;
    uint256 private burnFee = 0;
    uint256 private totalFee = 1000;
    uint256 private sellFee = 1500;
    uint256 private transferFee = 200;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 private swapThreshold = ( _totalSupply * 500 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    address public reward = 0x176211869cA2b568f2A7D4EE941E073a821EE1ff;
    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 internal dividendsPerShare;
    uint256 internal dividendsPerShareAccuracyFactor = 10 ** 36;
    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    struct Share {uint256 amount; uint256 totalExcluded; uint256 totalRealised; }
    mapping (address => Share) public shares;
    uint256 internal currentIndex;
    uint256 public minPeriod = 60 minutes;
    uint256 public minDistribution = 1 * (10 ** 16);
    uint256 public distributorGas = 350000;
    function _claimDividend() external {distributeDividend(msg.sender);}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0x0F245A7D374388CD76fC8139Dd900E9B02bF69d7; 
    address internal constant marketing_receiver = 0x27DFbEC90EEa392446f71638b70193c6F558c001;
    address internal constant liquidity_receiver = 0xd53686b4298Ac78B1d182E95FeAC1A4DD1D780bD;

    constructor() Ownable(msg.sender) {
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        isDividendExempt[address(msg.sender)] = true;        
        isDividendExempt[address(this)] = true;
        isDividendExempt[address(DEAD)] = true;
        isDividendExempt[address(0)] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }




    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function getOwner() external view override returns (address) { return owner; }
    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(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function startTrading() external onlyOwner {
        require(!tradingAllowed,"trading is already open");
        tradingAllowed = true;
    }

    function setPair(address _routerAddress) external onlyOwner {
        require(_routerAddress != address(0), "Router cannot be zero address");
        router = IRouter(_routerAddress);
        pair = IFactory(router.factory()).getPair(address(this), router.wETH(), false);
        if (pair == address(0)) {
            pair = IFactory(router.factory()).createPair(address(this), router.wETH(), false);
        }
        isDividendExempt[pair] = true;
    }

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
        if(!isDividendExempt[sender]){setShare(sender, balanceOf(sender));}
        if(!isDividendExempt[recipient]){setShare(recipient, balanceOf(recipient));}
        if(shares[recipient].amount > 0){distributeDividend(recipient);}
        process(distributorGas);
    }

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _rewards, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        rewardsFee = _rewards;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        //require(totalFee <= denominator.div(10) && sellFee <= denominator.div(10) && transferFee <= denominator.div(10), "totalFee and sellFee cannot be more than 10%");
    }

    function setisBot(address _address, bool _enabled) external onlyOwner {
        require(_address != address(pair) && _address != address(router) && _address != address(this), "Ineligible Address");
        isBot[_address] = _enabled;
    }

    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmount = newTx;
        _maxSellAmount = newTransfer;
        _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            false,
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        route[] memory routes = new route[](1);
        routes[0] = route({
            from: address(this),
            to: router.wETH(),
            stable: false
        });
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            routes,
            address(this),
            block.timestamp);
    }

    function swapETHForRewardToken(uint256 ethAmount) external onlyOwner {
        route[] memory routes = new route[](1);
        routes[0] = route({
            from: router.wETH(),
            to: reward,
            stable: true
        });
       
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0,
            routes,
            address(this),
            block.timestamp);
    }


    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(2) && aboveThreshold;
    }

    function deposit(uint256 amountETH) private {
        uint256 balanceBefore = IERC20(reward).balanceOf(address(this));
        route[] memory routes = new route[](1);
        routes[0] = route({
            from: router.wETH(),
            to: reward,
            stable: true
        });
       
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountETH}(
            0,
            routes,
            address(this),
            block.timestamp);
        uint256 amount = IERC20(reward).balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

function swapandreward(uint256 tokens) private lockTheSwap {
    uint256 _totalFee_denominator = marketingFee + developmentFee + rewardsFee;
    if (totalFee == 0) return;

    // Approve router to spend tokens
    _approve(address(this), address(router), tokens);

    // Create route: token -> reward (e.g., USDC)
    route[] memory routes = new route[](1);
    routes[0] = route({
        from: address(this),
        to: reward,
        stable: true
    });

    // Record balance before swap
    uint256 balanceBefore = IERC20(reward).balanceOf(address(this));

    // Swap tokens for reward token (stable)
    router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
        tokens,
        0,
        routes,
        address(this),
        block.timestamp
    );

    // Calculate received amount of reward token
    uint256 rewardReceived = IERC20(reward).balanceOf(address(this)) - balanceBefore;

    // Split the reward token
    uint256 rewardPortion = (rewardReceived * rewardsFee) / _totalFee_denominator;
    uint256 marketingPortion = (rewardReceived * marketingFee) / _totalFee_denominator;
    uint256 developmentPortion = rewardReceived - rewardPortion - marketingPortion;

    // Distribute reward token
    if (rewardPortion > 0) {
        totalDividends += rewardPortion;
        dividendsPerShare += (dividendsPerShareAccuracyFactor * rewardPortion) / totalShares;
    }
    if (marketingPortion > 0) {
        IERC20(reward).transfer(marketing_receiver, marketingPortion);
    }
    if (developmentPortion > 0) {
        IERC20(reward).transfer(development_receiver, developmentPortion);
    }
}

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee).add(rewardsFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmount > 0){payable(marketing_receiver).transfer(marketingAmount);}
        uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsFee);
        if(rewardsAmount > 0){deposit(rewardsAmount);}
        if(address(this).balance > uint256(0)){payable(development_receiver).transfer(address(this).balance);}
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapandreward(swapThreshold); swapTimes = uint256(0);}
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

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

    function triggerSwap() external onlyOwner {
        require(balanceOf(address(this)) >= swapThreshold, "Insufficient tokens for swap");
        require(swapEnabled, "Swaps are disabled");
        require(tradingAllowed, "Trading is not allowed");
        swapandreward(swapThreshold);
       // swapTimes = 0;
    }

    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 setisDividendExempt(address holder, bool exempt) external onlyOwner {
        isDividendExempt[holder] = exempt;
        if(exempt){setShare(holder, 0);}
        else{setShare(holder, balanceOf(holder)); }
    }

    function setShare(address shareholder, uint256 amount) internal {
        if(amount > 0 && shares[shareholder].amount == 0){addShareholder(shareholder);}
        else if(amount == 0 && shares[shareholder].amount > 0){removeShareholder(shareholder); }
        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    

    function process(uint256 gas) internal {
        uint256 shareholderCount = shareholders.length;
        if(shareholderCount == 0) { return; }
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;
        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){currentIndex = 0;}
            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);}
            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

   function rescueERC20(address _address, uint256 _amount) external onlyOwner {
    IERC20(_address).transfer(marketing_receiver, _amount);

    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function totalRewardsDistributed(address _wallet) external view returns (uint256) {
        address shareholder = _wallet;
        return uint256(shares[shareholder].totalRealised);
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }
        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            IERC20(reward).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);}
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }
        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _distributorGas) external onlyOwner {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
        distributorGas = _distributorGas;
    }
}

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

Contract Security Audit

Contract ABI

API
[{"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":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_claimDividend","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":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_routerAddress","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"swapETHForRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalRewardsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggerSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526100106012600a6103b5565b61001e906305f5e1006103cb565b60015561271060015460c861003391906103cb565b61003d91906103e2565b60025561271060015460c861005291906103cb565b61005c91906103e2565b60035561271060015460c861007191906103cb565b61007b91906103e2565b600455600b805460ff60a01b1916905560c8600c819055610708600d55611b58600e556103e8600f81905560006010556011556105dc6012556013556127106014556015805460ff1916600190811790915554620186a0906100df906101f46103cb565b6100e991906103e2565b601855620186a0600154600a6100ff91906103cb565b61010991906103e2565b601955601a80546001600160a01b03191673176211869ca2b568f2a7d4ee941e073a821ee1ff1790556ec097ce7bc90715b34b9f1000000000601f55610e10602555662386f26fc100006026556205573060275534801561016957600080fd5b50600080546001600160a01b03191633908117825530808352600760209081526040808520805460ff1990811660019081179092557f8e59ac7acde592c7ba2df38c5a1ecf7a6c39a39b6e4a94fdf4dfdb65e47f3b2380548216831790557f3bafff0d408724193cd1257de0975bfddf34c1c58e69455d3122fbd65073fb4a8054821683179055858752828720805482168317905560088452828720805482168317905593865281862080548516821790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548516821790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909416811790935591548385526005825282852081905591519182529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610404565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115610307578085048111156102eb576102eb6102b6565b60018416156102f957908102905b60019390931c9280026102d0565b935093915050565b60008261031e575060016103af565b8161032b575060006103af565b8160018114610341576002811461034b57610367565b60019150506103af565b60ff84111561035c5761035c6102b6565b50506001821b6103af565b5060208310610133831016604e8410600b841016171561038a575081810a6103af565b61039760001984846102cc565b80600019048211156103ab576103ab6102b6565b0290505b92915050565b60006103c460ff84168361030f565b9392505050565b80820281158282048414176103af576103af6102b6565b6000826103ff57634e487b7160e01b600052601260045260246000fd5b500490565b613028806104136000396000f3fe6080604052600436106102895760003560e01c80638187f51611610153578063a9059cbb116100cb578063e2d6f94c1161007f578063efca2eed11610064578063efca2eed146107dd578063f2fde38b146107f3578063ffd49c841461081357600080fd5b8063e2d6f94c1461079d578063ef43b02b146107bd57600080fd5b8063ca89b899116100b0578063ca89b899146106c7578063ce7c2ac214610700578063dd62ed3e1461075757600080fd5b8063a9059cbb14610692578063c942435d146106b257600080fd5b80638f937cc41161012257806395d89b411161010757806395d89b4114610616578063997664d71461065c578063a8aa1b311461067257600080fd5b80638f937cc4146105ec5780639358928b1461060157600080fd5b80638187f5161461056e578063893d20e81461058e5780638c41180e146105ac5780638cd4426d146105cc57600080fd5b8063313ce5671161020157806348ff2b8b116101b557806360e719621161019a57806360e719621461050257806370a08231146105185780637d3dec601461054e57600080fd5b806348ff2b8b146104cc5780634fab0ae8146104ec57600080fd5b80633a98ef39116101e65780633a98ef39146104565780633f4218e01461046c5780634355855a1461049c57600080fd5b8063313ce5671461041a57806334c5d2ce1461043657600080fd5b8063228cb7331161025857806328fd31981161023d57806328fd3198146103b6578063293230b8146103d65780632f54bf6e146103eb57600080fd5b8063228cb7331461035e57806323b872dd1461039657600080fd5b806306fdde0314610295578063095ea7b3146102ed5780630ca61cb11461031d57806318160ddd1461033f57600080fd5b3661029057005b600080fd5b3480156102a157600080fd5b5060408051808201909152600881527f446f4e6f7442757900000000000000000000000000000000000000000000000060208201525b6040516102e49190612be1565b60405180910390f35b3480156102f957600080fd5b5061030d610308366004612c47565b610829565b60405190151581526020016102e4565b34801561032957600080fd5b5061033d610338366004612c73565b610840565b005b34801561034b57600080fd5b506001545b6040519081526020016102e4565b34801561036a57600080fd5b50601a5461037e906001600160a01b031681565b6040516001600160a01b0390911681526020016102e4565b3480156103a257600080fd5b5061030d6103b1366004612c9f565b610896565b3480156103c257600080fd5b506103506103d1366004612ce0565b610900565b3480156103e257600080fd5b5061033d61098b565b3480156103f757600080fd5b5061030d610406366004612ce0565b6000546001600160a01b0391821691161490565b34801561042657600080fd5b50604051601281526020016102e4565b34801561044257600080fd5b5061033d610451366004612c73565b610a58565b34801561046257600080fd5b50610350601b5481565b34801561047857600080fd5b5061030d610487366004612ce0565b60076020526000908152604090205460ff1681565b3480156104a857600080fd5b5061030d6104b7366004612ce0565b60086020526000908152604090205460ff1681565b3480156104d857600080fd5b5061033d6104e7366004612d0b565b610bd4565b3480156104f857600080fd5b5061035060265481565b34801561050e57600080fd5b5061035060275481565b34801561052457600080fd5b50610350610533366004612ce0565b6001600160a01b031660009081526005602052604090205490565b34801561055a57600080fd5b5061033d610569366004612d44565b610c42565b34801561057a57600080fd5b5061033d610589366004612ce0565b610e13565b34801561059a57600080fd5b506000546001600160a01b031661037e565b3480156105b857600080fd5b5061033d6105c7366004612d0b565b61124f565b3480156105d857600080fd5b5061033d6105e7366004612c47565b61134a565b3480156105f857600080fd5b5061033d611417565b34801561060d57600080fd5b50610350611573565b34801561062257600080fd5b5060408051808201909152600381527f444e42000000000000000000000000000000000000000000000000000000000060208201526102d7565b34801561066857600080fd5b50610350601c5481565b34801561067e57600080fd5b50600b5461037e906001600160a01b031681565b34801561069e57600080fd5b5061030d6106ad366004612c47565b6115e4565b3480156106be57600080fd5b5061033d6115f1565b3480156106d357600080fd5b506103506106e2366004612ce0565b6001600160a01b031660009081526023602052604090206002015490565b34801561070c57600080fd5b5061073c61071b366004612ce0565b60236020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102e4565b34801561076357600080fd5b50610350610772366004612d5d565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156107a957600080fd5b5061033d6107b8366004612d8b565b6115fa565b3480156107c957600080fd5b5061033d6107d8366004612d0b565b611663565b3480156107e957600080fd5b50610350601d5481565b3480156107ff57600080fd5b5061033d61080e366004612ce0565b61170a565b34801561081f57600080fd5b5061035060255481565b60006108363384846117a1565b5060015b92915050565b6000546001600160a01b031633146108885760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064015b60405180910390fd5b602592909255602655602755565b60006108a38484846118f9565b6108f584336108f085604051806060016040528060288152602001612fcb602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611ad7565b6117a1565b5060015b9392505050565b6001600160a01b038116600090815260236020526040812054810361092757506000919050565b6001600160a01b03821660009081526023602052604081205461094990611b03565b6001600160a01b038416600090815260236020526040902060010154909150808211610979575060009392505050565b6109838282611b20565b949350505050565b6000546001600160a01b031633146109ce5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b600b54600160a01b900460ff1615610a285760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161087f565b600b80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b6000546001600160a01b03163314610a9b5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b600061271084610aaa60015490565b610ab49190612df6565b610abe9190612e0d565b9050600061271084610acf60015490565b610ad99190612df6565b610ae39190612e0d565b9050600061271084610af460015490565b610afe9190612df6565b610b089190612e0d565b60028490556003839055600481905590506000610b3b6103e8610b356005610b2f60015490565b90611b2c565b90611b38565b9050808410158015610b4d5750808310155b8015610b595750808210155b610bcb5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201527f206c657373207468616e202e3525000000000000000000000000000000000000606482015260840161087f565b50505050505050565b6000546001600160a01b03163314610c175760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c855760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b604080516001808252818301909252600091816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610c9c5750506040805160608101808352600a547ff24286210000000000000000000000000000000000000000000000000000000090915291519293509182916001600160a01b03169063f2428621906064808501916020918187030181865afa158015610d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d589190612e2f565b6001600160a01b039081168252601a54166020820152600160409091015281518290600090610d8957610d89612e4c565b6020908102919091010152600a546040517f76c727510000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906376c72751908490610de690600090869030904290600401612ece565b6000604051808303818588803b158015610dff57600080fd5b505af1158015610bcb573d6000803e3d6000fd5b6000546001600160a01b03163314610e565760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b6001600160a01b038116610eac5760405162461bcd60e51b815260206004820152601d60248201527f526f757465722063616e6e6f74206265207a65726f2061646472657373000000604482015260640161087f565b600a80546001600160a01b0319166001600160a01b038316908117909155604080517fc45a0155000000000000000000000000000000000000000000000000000000008152905163c45a0155916004808201926020929091908290030181865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f429190612e2f565b6001600160a01b0316636801cc3030600a60009054906101000a90046001600160a01b03166001600160a01b031663f24286216040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc89190612e2f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260006044820152606401602060405180830381865afa158015611032573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110569190612e2f565b600b80546001600160a01b0319166001600160a01b0392909216918217905561122757600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f09190612e2f565b6001600160a01b03166382dfdce430600a60009054906101000a90046001600160a01b03166001600160a01b031663f24286216040518163ffffffff1660e01b8152600401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190612e2f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152600060448201526064016020604051808303816000875af11580156111e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112069190612e2f565b600b80546001600160a01b0319166001600160a01b03929092169190911790555b50600b546001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b031633146112925760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b600b546001600160a01b038381169116148015906112be5750600a546001600160a01b03838116911614155b80156112d357506001600160a01b0382163014155b61131f5760405162461bcd60e51b815260206004820152601260248201527f496e656c696769626c6520416464726573730000000000000000000000000000604482015260640161087f565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461138d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b60405163a9059cbb60e01b81527327dfbec90eea392446f71638b70193c6f558c0016004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114129190612f03565b505050565b6000546001600160a01b0316331461145a5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b6018543060009081526005602052604090205410156114bb5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320666f72207377617000000000604482015260640161087f565b60155460ff1661150d5760405162461bcd60e51b815260206004820152601260248201527f5377617073206172652064697361626c65640000000000000000000000000000604482015260640161087f565b600b54600160a01b900460ff166115665760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f7420616c6c6f77656400000000000000000000604482015260640161087f565b611571601854611b44565b565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460015491926115df9290916115d99190611b20565b90611b20565b905090565b60006108363384846118f9565b61157133611f6f565b6000546001600160a01b0316331461163d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b600c97909755600d95909555601093909355600e91909155600f55601155601255601355565b6000546001600160a01b031633146116a65760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b6001600160a01b0382166000908152600860205260409020805460ff191682158015919091179091556116e2576116de8260006120a9565b5050565b6116de82611705846001600160a01b031660009081526005602052604090205490565b6120a9565b6000546001600160a01b0316331461174d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b03831661181c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161087f565b6001600160a01b0382166118985760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161087f565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6119048383836121bf565b61190e83836123bb565b61191983838361245b565b6119238383612547565b61192e83838361259e565b6119398383836126e3565b6001600160a01b03831660009081526005602052604090205461195c9082611b20565b6001600160a01b0384166000908152600560205260408120919091556119828484612708565b61198c5781611997565b61199784848461274e565b6001600160a01b0384166000908152600560205260409020549091506119bd908261283c565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a119085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff16611a5c57611a5c84611705866001600160a01b031660009081526005602052604090205490565b6001600160a01b03831660009081526008602052604090205460ff16611a9f57611a9f83611705856001600160a01b031660009081526005602052604090205490565b6001600160a01b03831660009081526023602052604090205415611ac657611ac683611f6f565b611ad1602754612848565b50505050565b60008184841115611afb5760405162461bcd60e51b815260040161087f9190612be1565b505050900390565b600061083a601f54610b35601e5485611b2c90919063ffffffff16565b60006108f98284612f20565b60006108f98284612df6565b60006108f98284612e0d565b6017805460ff19166001179055600e54600f54600d5460009291611b6791612f33565b611b719190612f33565b9050601154600003611b835750611f62565b600a54611b9b9030906001600160a01b0316846117a1565b604080516001808252818301909252600091816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611bb257505060408051606081018252308152601a546001600160a01b031660208201526001918101919091528151919250908290600090611c1c57611c1c612e4c565b6020908102919091010152601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c949190612f46565b600a546040517f6cc1ae130000000000000000000000000000000000000000000000000000000081529192506001600160a01b031690636cc1ae1390611ce7908790600090879030904290600401612f5f565b600060405180830381600087803b158015611d0157600080fd5b505af1158015611d15573d6000803e3d6000fd5b5050601a546040516370a0823160e01b8152306004820152600093508492506001600160a01b03909116906370a0823190602401602060405180830381865afa158015611d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8a9190612f46565b611d949190612f20565b9050600084600e5483611da79190612df6565b611db19190612e0d565b9050600085600d5484611dc49190612df6565b611dce9190612e0d565b9050600081611ddd8486612f20565b611de79190612f20565b90508215611e385782601c6000828254611e019190612f33565b9091555050601b54601f54611e17908590612df6565b611e219190612e0d565b601e6000828254611e329190612f33565b90915550505b8115611ec957601a5460405163a9059cbb60e01b81527327dfbec90eea392446f71638b70193c6f558c0016004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec79190612f03565b505b8015611f5a57601a5460405163a9059cbb60e01b8152730f245a7d374388cd76fc8139dd900e9b02bf69d76004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f589190612f03565b505b505050505050505b506017805460ff19169055565b6001600160a01b0381166000908152602360205260408120549003611f915750565b6000611f9c82610900565b905080156116de57601d54611fb1908261283c565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015612007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202b9190612f03565b506001600160a01b0382166000908152602260209081526040808320429055602390915290206002015461205f908261283c565b6001600160a01b038316600090815260236020526040902060028101919091555461208990611b03565b6001600160a01b0383166000908152602360205260409020600101555050565b6000811180156120cf57506001600160a01b038216600090815260236020526040902054155b1561213457602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b0319169091179055612167565b8015801561215957506001600160a01b03821660009081526023602052604090205415155b156121675761216782612935565b6001600160a01b038216600090815260236020526040902054601b5461219891839161219291611b20565b9061283c565b601b556001600160a01b038216600090815260236020526040902081905561208981611b03565b6001600160a01b03831661223b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161087f565b6001600160a01b0382166122b75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161087f565b6000811161232d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161087f565b6001600160a01b0383166000908152600560205260409020548111156114125760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201527f7468616e20796f75722062616c616e6365000000000000000000000000000000606482015260840161087f565b6001600160a01b03821660009081526007602052604090205460ff161580156123fd57506001600160a01b03811660009081526007602052604090205460ff16155b156116de57600b54600160a01b900460ff166116de5760405162461bcd60e51b815260206004820152600e60248201527f74726164696e67416c6c6f776564000000000000000000000000000000000000604482015260640161087f565b6001600160a01b03831660009081526007602052604090205460ff1615801561249d57506001600160a01b03821660009081526007602052604090205460ff16155b80156124b75750600b546001600160a01b03838116911614155b80156124ce57506001600160a01b03821661dead14155b15611412576004546001600160a01b0383166000908152600560205260409020546124f9908361283c565b11156114125760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161087f565b600b546001600160a01b03828116911614801561257d57506001600160a01b03821660009081526007602052604090205460ff16155b156116de576001601660008282546125959190612f33565b90915550505050565b600b546001600160a01b0384811691161461264b57600354811115806125dc57506001600160a01b03831660009081526007602052604090205460ff165b806125ff57506001600160a01b03821660009081526007602052604090205460ff165b61264b5760405162461bcd60e51b815260206004820152601160248201527f5458204c696d6974204578636565646564000000000000000000000000000000604482015260640161087f565b6002548111158061267457506001600160a01b03831660009081526007602052604090205460ff165b8061269757506001600160a01b03821660009081526007602052604090205460ff165b6114125760405162461bcd60e51b815260206004820152601160248201527f5458204c696d6974204578636565646564000000000000000000000000000000604482015260640161087f565b6126ee838383612a49565b15611412576126fe601854611b44565b6000601655505050565b6001600160a01b03821660009081526007602052604081205460ff161580156108f95750506001600160a01b031660009081526007602052604090205460ff1615919050565b60008061275b8585612afb565b111561283557600061277e6127708686612afb565b601454610b2f908690611b38565b3060009081526005602052604090205490915061279b908261283c565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906127ec9085815260200190565b60405180910390a360105415612823576128233061dead61281e601054610b2f60145489611b3890919063ffffffff16565b6118f9565b61282d8382611b20565b9150506108f9565b5092915050565b60006108f98284612f33565b6020546000819003612858575050565b6000805a905060005b848310801561286f57508381105b1561292e5783602454106128835760006024555b6128b560206024548154811061289b5761289b612e4c565b6000918252602090912001546001600160a01b0316612b9c565b156128ec576128ec6020602454815481106128d2576128d2612e4c565b6000918252602090912001546001600160a01b0316611f6f565b6129016128fa5a8490611b20565b849061283c565b92505a60248054919350600061291683612f9b565b9190505550808061292690612f9b565b915050612861565b5050505050565b6020805461294590600190612f20565b8154811061295557612955612e4c565b60009182526020808320909101546001600160a01b0384811684526021835260409093205482549390911692811061298f5761298f612e4c565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526021808352604082205483549093919291906129da90600190612f20565b815481106129ea576129ea612e4c565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902091909155805480612a2457612a24612fb4565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6019546018543060009081526005602052604081205460175491938510159211159060ff16158015612a7d575060155460ff165b8015612a925750600b54600160a01b900460ff165b8015612a9b5750815b8015612ac057506001600160a01b03861660009081526007602052604090205460ff16155b8015612ad95750600b546001600160a01b038681169116145b8015612ae85750600260165410155b8015612af15750805b9695505050505050565b6001600160a01b03821660009081526009602052604081205460ff1680612b3a57506001600160a01b03821660009081526009602052604090205460ff165b15612b5457601454612b4d906064611b20565b905061083a565b600b546001600160a01b0390811690831603612b73575060125461083a565b600b546001600160a01b0390811690841603612b92575060115461083a565b5060135492915050565b6025546001600160a01b03821660009081526022602052604081205490914291612bc69190612f33565b10801561083a5750602654612bda83610900565b1192915050565b602081526000825180602084015260005b81811015612c0f5760208186018101516040868401015201612bf2565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114612c4457600080fd5b50565b60008060408385031215612c5a57600080fd5b8235612c6581612c2f565b946020939093013593505050565b600080600060608486031215612c8857600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612cb457600080fd5b8335612cbf81612c2f565b92506020840135612ccf81612c2f565b929592945050506040919091013590565b600060208284031215612cf257600080fd5b81356108f981612c2f565b8015158114612c4457600080fd5b60008060408385031215612d1e57600080fd5b8235612d2981612c2f565b91506020830135612d3981612cfd565b809150509250929050565b600060208284031215612d5657600080fd5b5035919050565b60008060408385031215612d7057600080fd5b8235612d7b81612c2f565b91506020830135612d3981612c2f565b600080600080600080600080610100898b031215612da857600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761083a5761083a612de0565b600082612e2a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612e4157600080fd5b81516108f981612c2f565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b82811015612ec45781516001600160a01b0381511687526001600160a01b03602082015116602088015260408101511515604088015250606086019550602082019150600181019050612e76565b5093949350505050565b848152608060208201526000612ee76080830186612e62565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215612f1557600080fd5b81516108f981612cfd565b8181038181111561083a5761083a612de0565b8082018082111561083a5761083a612de0565b600060208284031215612f5857600080fd5b5051919050565b85815284602082015260a060408201526000612f7e60a0830186612e62565b6001600160a01b0394909416606083015250608001529392505050565b600060018201612fad57612fad612de0565b5060010190565b634e487b7160e01b600052603160045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a33fc60ffad814ea73b09b36496ae0f5dd8d13c80e64a976b8319897758b598564736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106102895760003560e01c80638187f51611610153578063a9059cbb116100cb578063e2d6f94c1161007f578063efca2eed11610064578063efca2eed146107dd578063f2fde38b146107f3578063ffd49c841461081357600080fd5b8063e2d6f94c1461079d578063ef43b02b146107bd57600080fd5b8063ca89b899116100b0578063ca89b899146106c7578063ce7c2ac214610700578063dd62ed3e1461075757600080fd5b8063a9059cbb14610692578063c942435d146106b257600080fd5b80638f937cc41161012257806395d89b411161010757806395d89b4114610616578063997664d71461065c578063a8aa1b311461067257600080fd5b80638f937cc4146105ec5780639358928b1461060157600080fd5b80638187f5161461056e578063893d20e81461058e5780638c41180e146105ac5780638cd4426d146105cc57600080fd5b8063313ce5671161020157806348ff2b8b116101b557806360e719621161019a57806360e719621461050257806370a08231146105185780637d3dec601461054e57600080fd5b806348ff2b8b146104cc5780634fab0ae8146104ec57600080fd5b80633a98ef39116101e65780633a98ef39146104565780633f4218e01461046c5780634355855a1461049c57600080fd5b8063313ce5671461041a57806334c5d2ce1461043657600080fd5b8063228cb7331161025857806328fd31981161023d57806328fd3198146103b6578063293230b8146103d65780632f54bf6e146103eb57600080fd5b8063228cb7331461035e57806323b872dd1461039657600080fd5b806306fdde0314610295578063095ea7b3146102ed5780630ca61cb11461031d57806318160ddd1461033f57600080fd5b3661029057005b600080fd5b3480156102a157600080fd5b5060408051808201909152600881527f446f4e6f7442757900000000000000000000000000000000000000000000000060208201525b6040516102e49190612be1565b60405180910390f35b3480156102f957600080fd5b5061030d610308366004612c47565b610829565b60405190151581526020016102e4565b34801561032957600080fd5b5061033d610338366004612c73565b610840565b005b34801561034b57600080fd5b506001545b6040519081526020016102e4565b34801561036a57600080fd5b50601a5461037e906001600160a01b031681565b6040516001600160a01b0390911681526020016102e4565b3480156103a257600080fd5b5061030d6103b1366004612c9f565b610896565b3480156103c257600080fd5b506103506103d1366004612ce0565b610900565b3480156103e257600080fd5b5061033d61098b565b3480156103f757600080fd5b5061030d610406366004612ce0565b6000546001600160a01b0391821691161490565b34801561042657600080fd5b50604051601281526020016102e4565b34801561044257600080fd5b5061033d610451366004612c73565b610a58565b34801561046257600080fd5b50610350601b5481565b34801561047857600080fd5b5061030d610487366004612ce0565b60076020526000908152604090205460ff1681565b3480156104a857600080fd5b5061030d6104b7366004612ce0565b60086020526000908152604090205460ff1681565b3480156104d857600080fd5b5061033d6104e7366004612d0b565b610bd4565b3480156104f857600080fd5b5061035060265481565b34801561050e57600080fd5b5061035060275481565b34801561052457600080fd5b50610350610533366004612ce0565b6001600160a01b031660009081526005602052604090205490565b34801561055a57600080fd5b5061033d610569366004612d44565b610c42565b34801561057a57600080fd5b5061033d610589366004612ce0565b610e13565b34801561059a57600080fd5b506000546001600160a01b031661037e565b3480156105b857600080fd5b5061033d6105c7366004612d0b565b61124f565b3480156105d857600080fd5b5061033d6105e7366004612c47565b61134a565b3480156105f857600080fd5b5061033d611417565b34801561060d57600080fd5b50610350611573565b34801561062257600080fd5b5060408051808201909152600381527f444e42000000000000000000000000000000000000000000000000000000000060208201526102d7565b34801561066857600080fd5b50610350601c5481565b34801561067e57600080fd5b50600b5461037e906001600160a01b031681565b34801561069e57600080fd5b5061030d6106ad366004612c47565b6115e4565b3480156106be57600080fd5b5061033d6115f1565b3480156106d357600080fd5b506103506106e2366004612ce0565b6001600160a01b031660009081526023602052604090206002015490565b34801561070c57600080fd5b5061073c61071b366004612ce0565b60236020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102e4565b34801561076357600080fd5b50610350610772366004612d5d565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156107a957600080fd5b5061033d6107b8366004612d8b565b6115fa565b3480156107c957600080fd5b5061033d6107d8366004612d0b565b611663565b3480156107e957600080fd5b50610350601d5481565b3480156107ff57600080fd5b5061033d61080e366004612ce0565b61170a565b34801561081f57600080fd5b5061035060255481565b60006108363384846117a1565b5060015b92915050565b6000546001600160a01b031633146108885760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064015b60405180910390fd5b602592909255602655602755565b60006108a38484846118f9565b6108f584336108f085604051806060016040528060288152602001612fcb602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611ad7565b6117a1565b5060015b9392505050565b6001600160a01b038116600090815260236020526040812054810361092757506000919050565b6001600160a01b03821660009081526023602052604081205461094990611b03565b6001600160a01b038416600090815260236020526040902060010154909150808211610979575060009392505050565b6109838282611b20565b949350505050565b6000546001600160a01b031633146109ce5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b600b54600160a01b900460ff1615610a285760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161087f565b600b80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b6000546001600160a01b03163314610a9b5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b600061271084610aaa60015490565b610ab49190612df6565b610abe9190612e0d565b9050600061271084610acf60015490565b610ad99190612df6565b610ae39190612e0d565b9050600061271084610af460015490565b610afe9190612df6565b610b089190612e0d565b60028490556003839055600481905590506000610b3b6103e8610b356005610b2f60015490565b90611b2c565b90611b38565b9050808410158015610b4d5750808310155b8015610b595750808210155b610bcb5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201527f206c657373207468616e202e3525000000000000000000000000000000000000606482015260840161087f565b50505050505050565b6000546001600160a01b03163314610c175760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c855760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b604080516001808252818301909252600091816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610c9c5750506040805160608101808352600a547ff24286210000000000000000000000000000000000000000000000000000000090915291519293509182916001600160a01b03169063f2428621906064808501916020918187030181865afa158015610d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d589190612e2f565b6001600160a01b039081168252601a54166020820152600160409091015281518290600090610d8957610d89612e4c565b6020908102919091010152600a546040517f76c727510000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906376c72751908490610de690600090869030904290600401612ece565b6000604051808303818588803b158015610dff57600080fd5b505af1158015610bcb573d6000803e3d6000fd5b6000546001600160a01b03163314610e565760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b6001600160a01b038116610eac5760405162461bcd60e51b815260206004820152601d60248201527f526f757465722063616e6e6f74206265207a65726f2061646472657373000000604482015260640161087f565b600a80546001600160a01b0319166001600160a01b038316908117909155604080517fc45a0155000000000000000000000000000000000000000000000000000000008152905163c45a0155916004808201926020929091908290030181865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f429190612e2f565b6001600160a01b0316636801cc3030600a60009054906101000a90046001600160a01b03166001600160a01b031663f24286216040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc89190612e2f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260006044820152606401602060405180830381865afa158015611032573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110569190612e2f565b600b80546001600160a01b0319166001600160a01b0392909216918217905561122757600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f09190612e2f565b6001600160a01b03166382dfdce430600a60009054906101000a90046001600160a01b03166001600160a01b031663f24286216040518163ffffffff1660e01b8152600401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190612e2f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152600060448201526064016020604051808303816000875af11580156111e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112069190612e2f565b600b80546001600160a01b0319166001600160a01b03929092169190911790555b50600b546001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b031633146112925760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b600b546001600160a01b038381169116148015906112be5750600a546001600160a01b03838116911614155b80156112d357506001600160a01b0382163014155b61131f5760405162461bcd60e51b815260206004820152601260248201527f496e656c696769626c6520416464726573730000000000000000000000000000604482015260640161087f565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461138d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b60405163a9059cbb60e01b81527327dfbec90eea392446f71638b70193c6f558c0016004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114129190612f03565b505050565b6000546001600160a01b0316331461145a5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b6018543060009081526005602052604090205410156114bb5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320666f72207377617000000000604482015260640161087f565b60155460ff1661150d5760405162461bcd60e51b815260206004820152601260248201527f5377617073206172652064697361626c65640000000000000000000000000000604482015260640161087f565b600b54600160a01b900460ff166115665760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f7420616c6c6f77656400000000000000000000604482015260640161087f565b611571601854611b44565b565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460015491926115df9290916115d99190611b20565b90611b20565b905090565b60006108363384846118f9565b61157133611f6f565b6000546001600160a01b0316331461163d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b600c97909755600d95909555601093909355600e91909155600f55601155601255601355565b6000546001600160a01b031633146116a65760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b6001600160a01b0382166000908152600860205260409020805460ff191682158015919091179091556116e2576116de8260006120a9565b5050565b6116de82611705846001600160a01b031660009081526005602052604090205490565b6120a9565b6000546001600160a01b0316331461174d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015260640161087f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b03831661181c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161087f565b6001600160a01b0382166118985760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161087f565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6119048383836121bf565b61190e83836123bb565b61191983838361245b565b6119238383612547565b61192e83838361259e565b6119398383836126e3565b6001600160a01b03831660009081526005602052604090205461195c9082611b20565b6001600160a01b0384166000908152600560205260408120919091556119828484612708565b61198c5781611997565b61199784848461274e565b6001600160a01b0384166000908152600560205260409020549091506119bd908261283c565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a119085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff16611a5c57611a5c84611705866001600160a01b031660009081526005602052604090205490565b6001600160a01b03831660009081526008602052604090205460ff16611a9f57611a9f83611705856001600160a01b031660009081526005602052604090205490565b6001600160a01b03831660009081526023602052604090205415611ac657611ac683611f6f565b611ad1602754612848565b50505050565b60008184841115611afb5760405162461bcd60e51b815260040161087f9190612be1565b505050900390565b600061083a601f54610b35601e5485611b2c90919063ffffffff16565b60006108f98284612f20565b60006108f98284612df6565b60006108f98284612e0d565b6017805460ff19166001179055600e54600f54600d5460009291611b6791612f33565b611b719190612f33565b9050601154600003611b835750611f62565b600a54611b9b9030906001600160a01b0316846117a1565b604080516001808252818301909252600091816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611bb257505060408051606081018252308152601a546001600160a01b031660208201526001918101919091528151919250908290600090611c1c57611c1c612e4c565b6020908102919091010152601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c949190612f46565b600a546040517f6cc1ae130000000000000000000000000000000000000000000000000000000081529192506001600160a01b031690636cc1ae1390611ce7908790600090879030904290600401612f5f565b600060405180830381600087803b158015611d0157600080fd5b505af1158015611d15573d6000803e3d6000fd5b5050601a546040516370a0823160e01b8152306004820152600093508492506001600160a01b03909116906370a0823190602401602060405180830381865afa158015611d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8a9190612f46565b611d949190612f20565b9050600084600e5483611da79190612df6565b611db19190612e0d565b9050600085600d5484611dc49190612df6565b611dce9190612e0d565b9050600081611ddd8486612f20565b611de79190612f20565b90508215611e385782601c6000828254611e019190612f33565b9091555050601b54601f54611e17908590612df6565b611e219190612e0d565b601e6000828254611e329190612f33565b90915550505b8115611ec957601a5460405163a9059cbb60e01b81527327dfbec90eea392446f71638b70193c6f558c0016004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec79190612f03565b505b8015611f5a57601a5460405163a9059cbb60e01b8152730f245a7d374388cd76fc8139dd900e9b02bf69d76004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f589190612f03565b505b505050505050505b506017805460ff19169055565b6001600160a01b0381166000908152602360205260408120549003611f915750565b6000611f9c82610900565b905080156116de57601d54611fb1908261283c565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015612007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202b9190612f03565b506001600160a01b0382166000908152602260209081526040808320429055602390915290206002015461205f908261283c565b6001600160a01b038316600090815260236020526040902060028101919091555461208990611b03565b6001600160a01b0383166000908152602360205260409020600101555050565b6000811180156120cf57506001600160a01b038216600090815260236020526040902054155b1561213457602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b0319169091179055612167565b8015801561215957506001600160a01b03821660009081526023602052604090205415155b156121675761216782612935565b6001600160a01b038216600090815260236020526040902054601b5461219891839161219291611b20565b9061283c565b601b556001600160a01b038216600090815260236020526040902081905561208981611b03565b6001600160a01b03831661223b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161087f565b6001600160a01b0382166122b75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161087f565b6000811161232d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161087f565b6001600160a01b0383166000908152600560205260409020548111156114125760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201527f7468616e20796f75722062616c616e6365000000000000000000000000000000606482015260840161087f565b6001600160a01b03821660009081526007602052604090205460ff161580156123fd57506001600160a01b03811660009081526007602052604090205460ff16155b156116de57600b54600160a01b900460ff166116de5760405162461bcd60e51b815260206004820152600e60248201527f74726164696e67416c6c6f776564000000000000000000000000000000000000604482015260640161087f565b6001600160a01b03831660009081526007602052604090205460ff1615801561249d57506001600160a01b03821660009081526007602052604090205460ff16155b80156124b75750600b546001600160a01b03838116911614155b80156124ce57506001600160a01b03821661dead14155b15611412576004546001600160a01b0383166000908152600560205260409020546124f9908361283c565b11156114125760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161087f565b600b546001600160a01b03828116911614801561257d57506001600160a01b03821660009081526007602052604090205460ff16155b156116de576001601660008282546125959190612f33565b90915550505050565b600b546001600160a01b0384811691161461264b57600354811115806125dc57506001600160a01b03831660009081526007602052604090205460ff165b806125ff57506001600160a01b03821660009081526007602052604090205460ff165b61264b5760405162461bcd60e51b815260206004820152601160248201527f5458204c696d6974204578636565646564000000000000000000000000000000604482015260640161087f565b6002548111158061267457506001600160a01b03831660009081526007602052604090205460ff165b8061269757506001600160a01b03821660009081526007602052604090205460ff165b6114125760405162461bcd60e51b815260206004820152601160248201527f5458204c696d6974204578636565646564000000000000000000000000000000604482015260640161087f565b6126ee838383612a49565b15611412576126fe601854611b44565b6000601655505050565b6001600160a01b03821660009081526007602052604081205460ff161580156108f95750506001600160a01b031660009081526007602052604090205460ff1615919050565b60008061275b8585612afb565b111561283557600061277e6127708686612afb565b601454610b2f908690611b38565b3060009081526005602052604090205490915061279b908261283c565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906127ec9085815260200190565b60405180910390a360105415612823576128233061dead61281e601054610b2f60145489611b3890919063ffffffff16565b6118f9565b61282d8382611b20565b9150506108f9565b5092915050565b60006108f98284612f33565b6020546000819003612858575050565b6000805a905060005b848310801561286f57508381105b1561292e5783602454106128835760006024555b6128b560206024548154811061289b5761289b612e4c565b6000918252602090912001546001600160a01b0316612b9c565b156128ec576128ec6020602454815481106128d2576128d2612e4c565b6000918252602090912001546001600160a01b0316611f6f565b6129016128fa5a8490611b20565b849061283c565b92505a60248054919350600061291683612f9b565b9190505550808061292690612f9b565b915050612861565b5050505050565b6020805461294590600190612f20565b8154811061295557612955612e4c565b60009182526020808320909101546001600160a01b0384811684526021835260409093205482549390911692811061298f5761298f612e4c565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526021808352604082205483549093919291906129da90600190612f20565b815481106129ea576129ea612e4c565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902091909155805480612a2457612a24612fb4565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6019546018543060009081526005602052604081205460175491938510159211159060ff16158015612a7d575060155460ff165b8015612a925750600b54600160a01b900460ff165b8015612a9b5750815b8015612ac057506001600160a01b03861660009081526007602052604090205460ff16155b8015612ad95750600b546001600160a01b038681169116145b8015612ae85750600260165410155b8015612af15750805b9695505050505050565b6001600160a01b03821660009081526009602052604081205460ff1680612b3a57506001600160a01b03821660009081526009602052604090205460ff165b15612b5457601454612b4d906064611b20565b905061083a565b600b546001600160a01b0390811690831603612b73575060125461083a565b600b546001600160a01b0390811690841603612b92575060115461083a565b5060135492915050565b6025546001600160a01b03821660009081526022602052604081205490914291612bc69190612f33565b10801561083a5750602654612bda83610900565b1192915050565b602081526000825180602084015260005b81811015612c0f5760208186018101516040868401015201612bf2565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114612c4457600080fd5b50565b60008060408385031215612c5a57600080fd5b8235612c6581612c2f565b946020939093013593505050565b600080600060608486031215612c8857600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612cb457600080fd5b8335612cbf81612c2f565b92506020840135612ccf81612c2f565b929592945050506040919091013590565b600060208284031215612cf257600080fd5b81356108f981612c2f565b8015158114612c4457600080fd5b60008060408385031215612d1e57600080fd5b8235612d2981612c2f565b91506020830135612d3981612cfd565b809150509250929050565b600060208284031215612d5657600080fd5b5035919050565b60008060408385031215612d7057600080fd5b8235612d7b81612c2f565b91506020830135612d3981612c2f565b600080600080600080600080610100898b031215612da857600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761083a5761083a612de0565b600082612e2a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612e4157600080fd5b81516108f981612c2f565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b82811015612ec45781516001600160a01b0381511687526001600160a01b03602082015116602088015260408101511515604088015250606086019550602082019150600181019050612e76565b5093949350505050565b848152608060208201526000612ee76080830186612e62565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215612f1557600080fd5b81516108f981612cfd565b8181038181111561083a5761083a612de0565b8082018082111561083a5761083a612de0565b600060208284031215612f5857600080fd5b5051919050565b85815284602082015260a060408201526000612f7e60a0830186612e62565b6001600160a01b0394909416606083015250608001529392505050565b600060018201612fad57612fad612de0565b5060010190565b634e487b7160e01b600052603160045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a33fc60ffad814ea73b09b36496ae0f5dd8d13c80e64a976b8319897758b598564736f6c634300081a0033

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.