Contract Address Details

0xF8A829043857fbEDdFA01b0149c917c59652b451

Token
NerdTest (NerdTest)
Creator
0xbefd0f–bdd4f0 at 0xfa7e7c–b0d2d6
Balance
0.032888660174432885 TCRO
Tokens
Fetching tokens...
Transactions
6 Transactions
Transfers
15 Transfers
Gas Used
708,503
Last Balance Update
33075999
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
NerdTest




Optimization enabled
true
Compiler version
v0.8.13+commit.abaa5c0e




Optimization runs
200
EVM Version
default




Verified at
2022-04-05T23:47:00.298323Z

Contract source code

//SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

library SafeMath {
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    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 add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
}

interface IBEP20 {
    function approve(address spender, uint256 amount) external returns (bool);
    function symbol() external view returns (string memory);
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function balanceOf(address account) external view returns (uint256);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

interface IDEXRouter {
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    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);
}

abstract contract Ownable {
    address public owner;
    constructor(address owner_) {
        owner = owner_;
    }
    modifier onlyOwner() {
        require(isOwner(msg.sender), "Ownership required."); _;
    }
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
    function transferOwnership(address payable adr) public onlyOwner {
        address oldOwner = owner;
        owner = adr;
        emit OwnershipTransferred(oldOwner, owner);
    }
	function renouceOwnership() public onlyOwner {
		emit OwnershipTransferred(owner, address(0));
		owner = address(0);
	}
    event OwnershipTransferred(address from, address to);
}

interface IDividendDistributor {

    function setShare(address shareholder, uint256 amount) external;
    function process(uint256 gas) external;
    function claimDividend() external;
    function deposit() external payable;
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;
    address _token;
	
    IBEP20 CRO = IBEP20(0x4fea4C520f9c4a02993d64994280C24790444576);
    address WCRO  = 0x4fea4C520f9c4a02993d64994280C24790444576;
    

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
    IDEXRouter router;
    mapping (address => Share) public shares;
    mapping (address => uint256) shareholderIndexes;
    uint256 public totalShares;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;
    address[] shareholderList;
    mapping (address => uint256) shareholderClaims;
    uint256 public minPeriod = 1 hours; // min 1 hour delay
    uint256 public minDistribution = 1 * (10 ** 18); // 1 croReward minimum auto send
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 currentIndex;
    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }
    modifier onlyToken() {
        require(msg.sender == _token); _;
    }
    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x085d8C985C73Fbb425398209d864Addd062fF3c1); // TestNet
//  		: IDEXRouter(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); // Testnet
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }
        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 deposit() external payable override onlyToken {
        uint256 balanceBefore = CRO.balanceOf(address(this));
        address[] memory path = new address[](2);
        path[0] = WCRO;
        path[1] = address(CRO);
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amount = CRO.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholderList.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(shareholderList[currentIndex])){
                distributeDividend(shareholderList[currentIndex]);
            }
            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }
    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    
    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }
        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            CRO.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    function claimDividend() external override {
        distributeDividend(msg.sender);
    }
    function removeShareholder(address shareholder) internal {
        shareholderList[shareholderIndexes[shareholder]] = shareholderList[shareholderList.length-1];
        shareholderIndexes[shareholderList[shareholderList.length-1]] = shareholderIndexes[shareholder];
        shareholderList.pop();
    }
    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 addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholderList.length;
        shareholderList.push(shareholder);
    }
}

contract NerdTest is IBEP20, Ownable {
    using SafeMath for uint256;
    string constant _name = "NerdTest";
    string constant _symbol = "NerdTest";
    uint8 constant _decimals = 9;
    uint256 _totalSupply = 10 ** 9 * (10 ** _decimals);
    uint256 private _liquidityFee = 4;
    uint256 private _reflectionFee = 4;
    uint256 private _marketingFee = 4;

    uint256 private _maxWallet = _totalSupply / 20;
    address public marketingFeeReceiver = 0x000000000000000000000000000000000000dEaD;

    address routerAddress = 0x085d8C985C73Fbb425398209d864Addd062fF3c1;    // heraswap testnet
    address croReward = 0x4fea4C520f9c4a02993d64994280C24790444576; // Testnet

    address WBNB = 	0x4fea4C520f9c4a02993d64994280C24790444576; // Testnet

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) isMaxWalletExempt;
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isDividendExempt;
    uint256 private _feeDenominator = 100;
    uint256 public _totalFee = _liquidityFee + _reflectionFee + _marketingFee;
    address public autoLiquidityReceiver;
    address[] public pairs;
    IDEXRouter public router;
    address pancakeV2BNBPair;
    DividendDistributor distributor;
    uint256 distributorGas = 600000;
    uint256 public launchedAt;
    bool public liquifyEnabled = true;
    bool public swapEnabled = true;
    bool inSwap;
    uint256 public swapThreshold = _totalSupply / 1000; // 0.1%
    modifier swapping() { inSwap = true; _; inSwap = false; }
    event SwapBackSuccess(uint256 amount);
    event Launched(uint256 blockNumber, uint256 timestamp);
    event SwapBackFailed(string message);
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
    event MarketTransfer(bool status);

    constructor () Ownable(msg.sender) {
  //      router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E); // Mainnet
		router = IDEXRouter(0x085d8C985C73Fbb425398209d864Addd062fF3c1); // Testnet
        
		autoLiquidityReceiver = DEAD;
        pancakeV2BNBPair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = ~uint256(0);
        pairs.push(pancakeV2BNBPair);
        distributor = new DividendDistributor(address(router));
        address owner_ = msg.sender;
        isDividendExempt[DEAD] = true;
        isMaxWalletExempt[DEAD] = true;
        isMaxWalletExempt[pancakeV2BNBPair] = true;
        isDividendExempt[pancakeV2BNBPair] = true;
        isMaxWalletExempt[address(this)] = true;
        isFeeExempt[address(this)] = true;
        isDividendExempt[address(this)] = true;
        isFeeExempt[owner_] = true;
        isMaxWalletExempt[owner_] = true;
        _balances[owner_] = _totalSupply;
        emit Transfer(address(0), owner_, _totalSupply);
    }
    receive() external payable { }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function getOwner() external view override returns (address) { return owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }


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

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 amountReceived;

        if(!launched() && recipient == pancakeV2BNBPair){ require(_balances[sender] > 0); launch(); }
        
        if(!isMaxWalletExempt[recipient]){
            require(_balances[recipient] + amount <= _maxWallet, "Wallet cannot hold more than 1%");
        }

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

        if((recipient == pancakeV2BNBPair || recipient == address(router)) || (sender == pancakeV2BNBPair || sender == address(router) ) ) {
            // trade transaction
            amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, _getTotalFee(), amount) : amount;      
        } 

        else{
            // basic transfer
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
            return true;
        }
        if(shouldSwapBack()){ swapBack(); }

        
        _balances[recipient] = _balances[recipient].add(amountReceived);
        if(!isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} }
        if(!isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} }
        try distributor.process(distributorGas) {} catch {}
        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, ~uint256(0));
    }

    function _getTotalFee() private view returns (uint fee){
        return (_liquidityFee + _reflectionFee + _marketingFee );
    }

    function getTotalFees() public view returns( uint256 liquidityFee, uint256 reflectionFee, uint256 marketingFee, uint256 feeDenominator){
        return (_liquidityFee,
                _reflectionFee,
                _marketingFee,
                _feeDenominator
        );
    }


    
   
    function getcroReward() public view returns (address) {
        return croReward;
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if (isFeeExempt[sender] || isFeeExempt[recipient] || !launched()) return false;
        address[] memory liqPairs = pairs;
        for (uint256 i = 0; i < liqPairs.length; i++) {
            if (sender == liqPairs[i] || recipient == liqPairs[i]) return true;
        }
        // normal transfer
        return false;
    }


    function takeFee(address sender, uint256 fee, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(fee).div(_feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function setIsMaxWalletExempt(address holder, bool exempt) public onlyOwner() {
        isMaxWalletExempt[holder] = exempt;
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pancakeV2BNBPair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }


    function launch() internal {
        launchedAt = block.number;
        emit Launched(block.number, block.timestamp);
    }

    function setIsDividendExempt(address holder, bool exempt) public onlyOwner() {
        require(holder != address(this) && holder != pancakeV2BNBPair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function setIsFeeExempt(address holder, bool exempt) public onlyOwner() {
        isFeeExempt[holder] = exempt;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) public onlyOwner() {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) public onlyOwner() {
        require(gas <= 1000000);
        distributorGas = gas;
    }


    function setTotalFees(uint256 liquidityFee, uint256 reflectionFee, uint256 marketingFee, uint256 feeDenominator ) public onlyOwner() {
        _liquidityFee = liquidityFee;
        _reflectionFee = reflectionFee;
        _marketingFee = marketingFee;
        _totalFee = liquidityFee.add(_reflectionFee).add(_marketingFee);
        _feeDenominator = feeDenominator;
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) public onlyOwner() {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) public onlyOwner() {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function manualContractSwap() public onlyOwner{
        swapBack();
    }

    function setLiquifyEnabled(bool _enabled) public onlyOwner() {
        liquifyEnabled = _enabled;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function addPair(address pair) public onlyOwner() {
        pairs.push(pair);
    }

    function claimDividend() external {
        distributor.claimDividend();
    }

    function clearStuckBNB() external {
        payable(marketingFeeReceiver).transfer(address(this).balance);
    }

    function setMaxWalletPercentage(uint256 percent) public onlyOwner() {
         _maxWallet = (_totalSupply / 100) * percent;
    }    

    function setLaunchedAt(uint256 launched_) public onlyOwner() {
        launchedAt = launched_;
    }
    
    function removeLastPair() public onlyOwner() {
        pairs.pop();
    }


    function swapBack() internal swapping {
        uint256 swapLiquidityFee = liquifyEnabled ? _liquidityFee : 0;
        uint256 amountToLiquify = swapThreshold.mul(swapLiquidityFee).div(_totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WBNB;
        uint256 balanceBefore = address(this).balance;
        try router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        ) {
            uint256 amountBNB = address(this).balance.sub(balanceBefore);
            uint256 totalBNBFee = _totalFee.sub(swapLiquidityFee.div(2));
            uint256 amountBNBLiquidity = amountBNB.mul(swapLiquidityFee).div(totalBNBFee).div(2);
            uint256 amountBNBReflection = amountBNB.mul(_reflectionFee).div(totalBNBFee);
            uint256 amountBNBMarketing = amountBNB.mul(_marketingFee).div(totalBNBFee);
            try distributor.deposit{value: amountBNBReflection}() {} catch {}
            (bool marketSuccess, ) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
            emit MarketTransfer(marketSuccess);
            if(amountToLiquify > 0){
                try router.addLiquidityETH{ value: amountBNBLiquidity }(
                    address(this),
                    amountToLiquify,
                    0,
                    0,
                    autoLiquidityReceiver,
                    block.timestamp
                ) {
                    emit AutoLiquify(amountToLiquify, amountBNBLiquidity);
                } catch {
                    emit AutoLiquify(0, 0);
                }
            }
            emit SwapBackSuccess(amountToSwap);
        } catch Error(string memory e) {
            emit SwapBackFailed(string(abi.encodePacked("SwapBack failed with error ", e)));
        } catch {
            emit SwapBackFailed("SwapBack failed without an error message from pancakeSwap");
        }
    }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"AutoLiquify","inputs":[{"type":"uint256","name":"amountBNB","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountBOG","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Launched","inputs":[{"type":"uint256","name":"blockNumber","internalType":"uint256","indexed":false},{"type":"uint256","name":"timestamp","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"MarketTransfer","inputs":[{"type":"bool","name":"status","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"from","internalType":"address","indexed":false},{"type":"address","name":"to","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"SwapBackFailed","inputs":[{"type":"string","name":"message","internalType":"string","indexed":false}],"anonymous":false},{"type":"event","name":"SwapBackSuccess","inputs":[{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_totalFee","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"addPair","inputs":[{"type":"address","name":"pair","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approveMax","inputs":[{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"autoLiquidityReceiver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"claimDividend","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"clearStuckBNB","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getCirculatingSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getOwner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"liquidityFee","internalType":"uint256"},{"type":"uint256","name":"reflectionFee","internalType":"uint256"},{"type":"uint256","name":"marketingFee","internalType":"uint256"},{"type":"uint256","name":"feeDenominator","internalType":"uint256"}],"name":"getTotalFees","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getcroReward","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isOwner","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"launchedAt","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"liquifyEnabled","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"manualContractSwap","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"marketingFeeReceiver","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pairs","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"removeLastPair","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renouceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDEXRouter"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributionCriteria","inputs":[{"type":"uint256","name":"_minPeriod","internalType":"uint256"},{"type":"uint256","name":"_minDistribution","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributorSettings","inputs":[{"type":"uint256","name":"gas","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeeReceivers","inputs":[{"type":"address","name":"_autoLiquidityReceiver","internalType":"address"},{"type":"address","name":"_marketingFeeReceiver","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsDividendExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsFeeExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsMaxWalletExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setLaunchedAt","inputs":[{"type":"uint256","name":"launched_","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setLiquifyEnabled","inputs":[{"type":"bool","name":"_enabled","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxWalletPercentage","inputs":[{"type":"uint256","name":"percent","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSwapBackSettings","inputs":[{"type":"bool","name":"_enabled","internalType":"bool"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTotalFees","inputs":[{"type":"uint256","name":"liquidityFee","internalType":"uint256"},{"type":"uint256","name":"reflectionFee","internalType":"uint256"},{"type":"uint256","name":"marketingFee","internalType":"uint256"},{"type":"uint256","name":"feeDenominator","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"swapEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"swapThreshold","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"adr","internalType":"address payable"}]},{"type":"receive","stateMutability":"payable"}]
            

Contract Creation Code

0x6080604052620000126009600a62000547565b6200002290633b9aca006200055f565b6001556004600255600460035560048055601460015462000044919062000581565b600555600680546001600160a01b031990811661dead90811790925560078054821673085d8c985c73fbb425398209d864addd062ff3c1179055600880548216734fea4c520f9c4a02993d64994280c247904445769081179091556009805483169091179055600a80548216909217909155600b805490911690556064601155600454600354600254620000d99190620005a4565b620000e59190620005a4565b601255620927c0601855601a805461ffff191661010117905560015462000110906103e89062000581565b601b553480156200012057600080fd5b50600080546001600160a01b0319908116331790915560158054821673085d8c985c73fbb425398209d864addd062ff3c1908117909155600a54601380549093166001600160a01b0391909116179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d39190620005bf565b6009546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000225573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024b9190620005bf565b601680546001600160a01b039283166001600160a01b0319918216178255306000908152600d6020908152604080832060158054881685529252808320600019905593546014805460018101825593527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec909201805490931691851691909117909155549051911690620002df9062000424565b6001600160a01b039091168152602001604051809103906000f0801580156200030c573d6000803e3d6000fd5b50601780546001600160a01b0319166001600160a01b03928316179055600a805482166000908152601060208181526040808420805460ff199081166001908117909255955487168552600e80845282862080548816831790556016805489168752838720805489168417905554909716855283835281852080548716821790553085528683528185208054871682179055600f80845282862080548816831790559383528185208054871682179055338086529383528185208054871682179055958252808420805490951686179094559354600c855283832081905592519283529283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620005ea565b61101280620029f083390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004895781600019048211156200046d576200046d62000432565b808516156200047b57918102915b93841c93908002906200044d565b509250929050565b600082620004a25750600162000541565b81620004b15750600062000541565b8160018114620004ca5760028114620004d557620004f5565b600191505062000541565b60ff841115620004e957620004e962000432565b50506001821b62000541565b5060208310610133831016604e8410600b84101617156200051a575081810a62000541565b62000526838362000448565b80600019048211156200053d576200053d62000432565b0290505b92915050565b60006200055860ff84168362000491565b9392505050565b60008160001904831182151516156200057c576200057c62000432565b500290565b6000826200059f57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620005ba57620005ba62000432565b500190565b600060208284031215620005d257600080fd5b81516001600160a01b03811681146200055857600080fd5b6123f680620005fa6000396000f3fe60806040526004361061025f5760003560e01c80637a845ece11610144578063c2b7bbb6116100b6578063e96fada21161007a578063e96fada214610736578063ed5792d714610756578063f0fc6bca14610770578063f2fde38b14610785578063f708a64f146107a5578063f887ea40146107c557600080fd5b8063c2b7bbb614610670578063ca33e64c14610690578063da1cdbe4146106b0578063dd62ed3e146106d0578063df20fd491461071657600080fd5b80639d1944f5116101085780639d1944f5146105ba578063a4b45c00146105da578063a9059cbb146105fa578063b91ac7881461061a578063bf56b3711461063a578063c04a78ad1461065057600080fd5b80637a845ece14610547578063893d20e8146105675780638da5cb5b146105855780638edbbee3146105a557806395d89b41146102ab57600080fd5b80632f54bf6e116101dd578063588dcc83116101a1578063588dcc8314610452578063626e1ae714610467578063637661b3146104a0578063658d4b7f146104d25780636ddd1713146104f257806370a082311461051157600080fd5b80632f54bf6e146103b2578063313ce567146103e15780633611fd9c146103fd57806339e67c8a14610412578063571ac8b01461043257600080fd5b806318160ddd1161022457806318160ddd1461033257806323b872dd14610347578063283f7820146103675780632b112e491461037d5780632d48e8961461039257600080fd5b806293dc141461026b5780630445b6671461028257806306fdde03146102ab578063095ea7b3146102e257806315d890321461031257600080fd5b3661026657005b600080fd5b34801561027757600080fd5b506102806107e5565b005b34801561028e57600080fd5b50610298601b5481565b6040519081526020015b60405180910390f35b3480156102b757600080fd5b50604080518082018252600881526713995c9915195cdd60c21b602082015290516102a29190611f0a565b3480156102ee57600080fd5b506103026102fd366004611f52565b61084d565b60405190151581526020016102a2565b34801561031e57600080fd5b5061028061032d366004611f7e565b6108ba565b34801561033e57600080fd5b50600154610298565b34801561035357600080fd5b50610302610362366004611fb0565b610912565b34801561037357600080fd5b5061029860125481565b34801561038957600080fd5b506102986109d4565b34801561039e57600080fd5b506102806103ad366004611ff1565b610a26565b3480156103be57600080fd5b506103026103cd366004612013565b6000546001600160a01b0391821691161490565b3480156103ed57600080fd5b50604051600981526020016102a2565b34801561040957600080fd5b50610280610aba565b34801561041e57600080fd5b5061028061042d366004612030565b610af6565b34801561043e57600080fd5b5061030261044d366004612013565b610b25565b34801561045e57600080fd5b50610280610b33565b34801561047357600080fd5b506002546003546004546011546040805194855260208501939093529183015260608201526080016102a2565b3480156104ac57600080fd5b506008546001600160a01b03165b6040516001600160a01b0390911681526020016102a2565b3480156104de57600080fd5b506102806104ed36600461205e565b610b67565b3480156104fe57600080fd5b50601a5461030290610100900460ff1681565b34801561051d57600080fd5b5061029861052c366004612013565b6001600160a01b03166000908152600c602052604090205490565b34801561055357600080fd5b50610280610562366004612030565b610bbc565b34801561057357600080fd5b506000546001600160a01b03166104ba565b34801561059157600080fd5b506000546104ba906001600160a01b031681565b3480156105b157600080fd5b50610280610c06565b3480156105c657600080fd5b506102806105d5366004612030565b610c8a565b3480156105e657600080fd5b506102806105f5366004612093565b610cc9565b34801561060657600080fd5b50610302610615366004611f52565b610d21565b34801561062657600080fd5b506104ba610635366004612030565b610d2e565b34801561064657600080fd5b5061029860195481565b34801561065c57600080fd5b5061028061066b36600461205e565b610d58565b34801561067c57600080fd5b5061028061068b366004612013565b610dad565b34801561069c57600080fd5b506013546104ba906001600160a01b031681565b3480156106bc57600080fd5b506102806106cb3660046120cc565b610e29565b3480156106dc57600080fd5b506102986106eb366004612093565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b34801561072257600080fd5b506102806107313660046120e7565b610e66565b34801561074257600080fd5b506006546104ba906001600160a01b031681565b34801561076257600080fd5b50601a546103029060ff1681565b34801561077c57600080fd5b50610280610eae565b34801561079157600080fd5b506102806107a0366004612013565b610f18565b3480156107b157600080fd5b506102806107c036600461205e565b610fa3565b3480156107d157600080fd5b506015546104ba906001600160a01b031681565b6000546001600160a01b031633146108185760405162461bcd60e51b815260040161080f90612103565b60405180910390fd5b601480548061082957610829612130565b600082815260209020810160001990810180546001600160a01b0319169055019055565b336000818152600d602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108a89086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108e45760405162461bcd60e51b815260040161080f90612103565b6002849055600383905560048290556109078261090186866110ac565b906110ac565b601255601155505050565b6001600160a01b0383166000908152600d60209081526040808320338452909152812054600019146109bf576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600d8252838120338252909152919091205461099a91849061110b565b6001600160a01b0385166000908152600d602090815260408083203384529091529020555b6109ca848484611145565b90505b9392505050565b600b546001600160a01b03166000908152600c6020526040812054610a2190600a546001600160a01b03166000908152600c6020526040902054610a1b90600154906115d4565b906115d4565b905090565b6000546001600160a01b03163314610a505760405162461bcd60e51b815260040161080f90612103565b6017546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610a9e57600080fd5b505af1158015610ab2573d6000803e3d6000fd5b505050505050565b6006546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610af3573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610b205760405162461bcd60e51b815260040161080f90612103565b601955565b60006108b48260001961084d565b6000546001600160a01b03163314610b5d5760405162461bcd60e51b815260040161080f90612103565b610b65611616565b565b6000546001600160a01b03163314610b915760405162461bcd60e51b815260040161080f90612103565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610be65760405162461bcd60e51b815260040161080f90612103565b806064600154610bf6919061215c565b610c00919061217e565b60055550565b6000546001600160a01b03163314610c305760405162461bcd60e51b815260040161080f90612103565b60008054604080516001600160a01b03909216825260208201929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1600080546001600160a01b0319169055565b6000546001600160a01b03163314610cb45760405162461bcd60e51b815260040161080f90612103565b620f4240811115610cc457600080fd5b601855565b6000546001600160a01b03163314610cf35760405162461bcd60e51b815260040161080f90612103565b601380546001600160a01b039384166001600160a01b03199182161790915560068054929093169116179055565b60006109cd338484611145565b60148181548110610d3e57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314610d825760405162461bcd60e51b815260040161080f90612103565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dd75760405162461bcd60e51b815260040161080f90612103565b601480546001810182556000919091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e535760405162461bcd60e51b815260040161080f90612103565b601a805460ff1916911515919091179055565b6000546001600160a01b03163314610e905760405162461bcd60e51b815260040161080f90612103565b601a80549215156101000261ff001990931692909217909155601b55565b601760009054906101000a90046001600160a01b03166001600160a01b031663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610efe57600080fd5b505af1158015610f12573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610f425760405162461bcd60e51b815260040161080f90612103565b600080546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a15050565b6000546001600160a01b03163314610fcd5760405162461bcd60e51b815260040161080f90612103565b6001600160a01b0382163014801590610ff457506016546001600160a01b03838116911614155b610ffd57600080fd5b6001600160a01b0382166000908152601060205260409020805460ff1916821580159190911790915561106357601754604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610a84565b6017546001600160a01b038381166000818152600c602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610a84565b6000806110b9838561219d565b9050838110156109cd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161080f565b6000818484111561112f5760405162461bcd60e51b815260040161080f9190611f0a565b50600061113c84866121b5565b95945050505050565b600080611153601954151590565b15801561116d57506016546001600160a01b038581169116145b1561119c576001600160a01b0385166000908152600c602052604090205461119457600080fd5b61119c611b4a565b6001600160a01b0384166000908152600e602052604090205460ff16611231576005546001600160a01b0385166000908152600c60205260409020546111e390859061219d565b11156112315760405162461bcd60e51b815260206004820152601f60248201527f57616c6c65742063616e6e6f7420686f6c64206d6f7265207468616e20312500604482015260640161080f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600c909152919091205461128391859061110b565b6001600160a01b038087166000908152600c6020526040902091909155601654858216911614806112c157506015546001600160a01b038581169116145b806112f057506016546001600160a01b03868116911614806112f057506015546001600160a01b038681169116145b15611322576112ff8585611b8a565b611309578261131b565b61131b85611315611cdc565b85611cfb565b90506113ab565b6001600160a01b0384166000908152600c602052604090205461134590846110ac565b6001600160a01b038086166000818152600c602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113999087815260200190565b60405180910390a360019150506109cd565b6113b3611d97565b156113c0576113c0611616565b6001600160a01b0384166000908152600c60205260409020546113e390826110ac565b6001600160a01b038086166000908152600c602090815260408083209490945591881681526010909152205460ff16611487576017546001600160a01b038681166000818152600c602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561147457600080fd5b505af1925050508015611485575060015b505b6001600160a01b03841660009081526010602052604090205460ff16611518576017546001600160a01b038581166000818152600c602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561150557600080fd5b505af1925050508015611516575060015b505b6017546018546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916115509160040190815260200190565b600060405180830381600087803b15801561156a57600080fd5b505af192505050801561157b575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115c191815260200190565b60405180910390a3506001949350505050565b60006109cd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061110b565b601a805462ff0000198116620100001790915560009060ff1661163a57600061163e565b6002545b90506000611668600261166260125461166286601b54611df190919063ffffffff16565b90611e73565b9050600061168182601b546115d490919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106116bb576116bb6121cc565b6001600160a01b0392831660209182029290920101526009548251911690829060019081106116ec576116ec6121cc565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac947906117369086906000908790309042906004016121e2565b600060405180830381600087803b15801561175057600080fd5b505af1925050508015611761575060015b61187a5761176d612253565b806308c379a0036117e657506117816122aa565b8061178c57506117e8565b7fc41a20ad8c23d3903584975786330c6ec73ccfcc657629f10237b792268b0e02816040516020016117be9190612334565b60408051601f19818403018152908290526117d891611f0a565b60405180910390a150611b37565b505b7fc41a20ad8c23d3903584975786330c6ec73ccfcc657629f10237b792268b0e0260405161186d9060208082526039908201527f537761704261636b206661696c656420776974686f757420616e206572726f7260408201527f206d6573736167652066726f6d2070616e63616b655377617000000000000000606082015260800190565b60405180910390a1611b37565b600061188647836115d4565b905060006118a1611898886002611e73565b601254906115d4565b905060006118b660026116628481878d611df1565b905060006118d38361166260035487611df190919063ffffffff16565b905060006118f08461166260045488611df190919063ffffffff16565b9050601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561194257600080fd5b505af193505050508015611954575060015b506006546040516000916001600160a01b03169061753090849084818181858888f193505050503d80600081146119a7576040519150601f19603f3d011682016040523d82523d6000602084013e6119ac565b606091505b505090507fd04b0e25336eeca616d3b76a107b101372b843df55c376dba4e7f34b0d19f735816040516119e3911515815260200190565b60405180910390a18915611afd5760155460135460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af193505050508015611a7e575060408051601f3d908101601f19168201909252611a7b91810190612379565b60015b611ac05760408051600080825260208201527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506910160405180910390a1611afd565b5050604080518c8152602081018790527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6040518981527fb39214ef4f33ea2d9d329fb67a4f17e7588bf6e00ed15a7967137ba819697a279060200160405180910390a15050505050505b5050601a805462ff000019169055505050565b436019819055604080519182524260208301527f87dcd6626ffde0faf682a10e7b64aff36ea73a5470d5fa6cc7ebd372e4b19001910160405180910390a1565b6001600160a01b0382166000908152600f602052604081205460ff1680611bc957506001600160a01b0382166000908152600f602052604090205460ff165b80611bd45750601954155b15611be1575060006108b4565b60006014805480602002602001604051908101604052809291908181526020018280548015611c3957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611c1b575b5050505050905060005b8151811015611cd157818181518110611c5e57611c5e6121cc565b60200260200101516001600160a01b0316856001600160a01b03161480611caf5750818181518110611c9257611c926121cc565b60200260200101516001600160a01b0316846001600160a01b0316145b15611cbf576001925050506108b4565b80611cc9816123a7565b915050611c43565b506000949350505050565b6000600454600354600254611cf1919061219d565b610a21919061219d565b600080611d176011546116628686611df190919063ffffffff16565b306000908152600c6020526040902054909150611d3490826110ac565b306000818152600c6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d859085815260200190565b60405180910390a361113c83826115d4565b6016546000906001600160a01b03163314801590611dbe5750601a5462010000900460ff16155b8015611dd15750601a54610100900460ff165b8015610a21575050601b54306000908152600c6020526040902054101590565b600082600003611e03575060006108b4565b6000611e0f838561217e565b905082611e1c858361215c565b146109cd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161080f565b60006109cd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611ed15760405162461bcd60e51b815260040161080f9190611f0a565b50600061113c848661215c565b60005b83811015611ef9578181015183820152602001611ee1565b83811115610f125750506000910152565b6020815260008251806020840152611f29816040850160208701611ede565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610af357600080fd5b60008060408385031215611f6557600080fd5b8235611f7081611f3d565b946020939093013593505050565b60008060008060808587031215611f9457600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215611fc557600080fd5b8335611fd081611f3d565b92506020840135611fe081611f3d565b929592945050506040919091013590565b6000806040838503121561200457600080fd5b50508035926020909101359150565b60006020828403121561202557600080fd5b81356109cd81611f3d565b60006020828403121561204257600080fd5b5035919050565b8035801515811461205957600080fd5b919050565b6000806040838503121561207157600080fd5b823561207c81611f3d565b915061208a60208401612049565b90509250929050565b600080604083850312156120a657600080fd5b82356120b181611f3d565b915060208301356120c181611f3d565b809150509250929050565b6000602082840312156120de57600080fd5b6109cd82612049565b600080604083850312156120fa57600080fd5b611f7083612049565b60208082526013908201527227bbb732b939b434b8103932b8bab4b932b21760691b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008261217957634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561219857612198612146565b500290565b600082198211156121b0576121b0612146565b500190565b6000828210156121c7576121c7612146565b500390565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122325784516001600160a01b03168352938301939183019160010161220d565b50506001600160a01b03969096166060850152505050608001529392505050565b600060033d111561226c5760046000803e5060005160e01c5b90565b601f8201601f1916810167ffffffffffffffff811182821017156122a357634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d10156122b85790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156122e857505050505090565b82850191508151818111156123005750505050505090565b843d870101602082850101111561231a5750505050505090565b6123296020828601018761226f565b509095945050505050565b7f537761704261636b206661696c65642077697468206572726f7220000000000081526000825161236c81601b850160208701611ede565b91909101601b0192915050565b60008060006060848603121561238e57600080fd5b8351925060208401519150604084015190509250925092565b6000600182016123b9576123b9612146565b506001019056fea264697066735822122054560e4f33b2fcbb5f77b255b8e461b718ea03ecb61d40121ddb49fe8f06df9864736f6c634300080d0033608060405260018054734fea4c520f9c4a02993d64994280c247904445766001600160a01b031991821681179092556002805490911690911790556ec097ce7bc90715b34b9f1000000000600855610e10600b55670de0b6b3a7640000600c5534801561006b57600080fd5b5060405161101238038061101283398101604081905261008a916100e4565b6001600160a01b0381166100b25773085d8c985c73fbb425398209d864addd062ff3c16100b4565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610114565b6000602082840312156100f657600080fd5b81516001600160a01b038116811461010d57600080fd5b9392505050565b610eef806101236000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610224578063f0fc6bca1461023a578063ffb2c4791461024f578063ffd49c841461026f57600080fd5b8063ce7c2ac2146101af578063d0e30db014610206578063e2d2e2191461020e57600080fd5b80632d48e896116100bb5780632d48e8961461014d5780633a98ef391461016d5780634fab0ae814610183578063997664d71461019957600080fd5b806311ce023d146100e257806314b6ca961461010b57806328fd31981461012d575b600080fd5b3480156100ee57600080fd5b506100f860085481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004610c74565b610285565b005b34801561013957600080fd5b506100f8610148366004610c9e565b6103fd565b34801561015957600080fd5b5061012b610168366004610cb9565b610488565b34801561017957600080fd5b506100f860065481565b34801561018f57600080fd5b506100f8600c5481565b3480156101a557600080fd5b506100f8600d5481565b3480156101bb57600080fd5b506101eb6101ca366004610c9e565b60046020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b6104aa565b34801561021a57600080fd5b506100f860075481565b34801561023057600080fd5b506100f8600e5481565b34801561024657600080fd5b5061012b6106d9565b34801561025b57600080fd5b5061012b61026a366004610cdb565b6106e4565b34801561027b57600080fd5b506100f8600b5481565b6000546001600160a01b0316331461029c57600080fd5b6001600160a01b038216600090815260046020526040902054156102c3576102c3826107e8565b6000811180156102e957506001600160a01b038216600090815260046020526040902054155b1561034f57600980546001600160a01b0384166000818152600560205260408120839055600183018455929092527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055610382565b8015801561037457506001600160a01b03821660009081526004602052604090205415155b156103825761038282610906565b6001600160a01b0382166000908152600460205260409020546006546103b39183916103ad91610a1b565b90610a66565b6006556001600160a01b03821660009081526004602052604090208190556103da81610aca565b6001600160a01b0390921660009081526004602052604090206001019190915550565b6001600160a01b038116600090815260046020526040812054810361042457506000919050565b6001600160a01b03821660009081526004602052604081205461044690610aca565b6001600160a01b038416600090815260046020526040902060010154909150808211610476575060009392505050565b6104808282610a1b565b949350505050565b6000546001600160a01b0316331461049f57600080fd5b600b91909155600c55565b6000546001600160a01b031633146104c157600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561050a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052e9190610cf4565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061057457610574610d0d565b6001600160a01b03928316602091820292909201015260018054835192169183919081106105a4576105a4610d0d565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de959034906105ea90600090869030904290600401610d23565b6000604051808303818588803b15801561060357600080fd5b505af1158015610617573d6000803e3d6000fd5b50506001546040516370a0823160e01b81523060048201526000945061069793508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561066d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106919190610cf4565b90610a1b565b600d549091506106a79082610a66565b600d556006546008546106d1916106c8916106c29085610ae7565b90610b69565b60075490610a66565b600755505050565b6106e2336107e8565b565b6000546001600160a01b031633146106fb57600080fd5b600954600081900361070b575050565b6000805a905060005b848310801561072257508381105b156107e15783600f5410610736576000600f555b6107686009600f548154811061074e5761074e610d0d565b6000918252602090912001546001600160a01b0316610bab565b1561079f5761079f6009600f548154811061078557610785610d0d565b6000918252602090912001546001600160a01b03166107e8565b6107b46107ad5a8490610a1b565b8490610a66565b92505a600f805491935060006107c983610da3565b919050555080806107d990610da3565b915050610714565b5050505050565b6001600160a01b038116600090815260046020526040812054900361080a5750565b6000610815826103fd565b9050801561090257600e5461082a9082610a66565b600e5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a49190610dbc565b506001600160a01b0382166000908152600a6020908152604080832042905560049091529020600201546108d89082610a66565b6001600160a01b03831660009081526004602052604090206002810191909155546103da90610aca565b5050565b6009805461091690600190610dde565b8154811061092657610926610d0d565b60009182526020808320909101546001600160a01b038481168452600590925260409092205460098054929093169291811061096457610964610d0d565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460098054919392916109b090600190610dde565b815481106109c0576109c0610d0d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560098054806109f6576109f6610df5565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610a5d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bf0565b90505b92915050565b600080610a738385610e0b565b905083811015610a5d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610a606008546106c260075485610ae790919063ffffffff16565b600082600003610af957506000610a60565b6000610b058385610e23565b905082610b128583610e42565b14610a5d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ac1565b6000610a5d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610c2a565b600b546001600160a01b0382166000908152600a602052604081205490914291610bd59190610e0b565b108015610a605750600c54610be9836103fd565b1192915050565b60008184841115610c145760405162461bcd60e51b8152600401610ac19190610e64565b506000610c218486610dde565b95945050505050565b60008183610c4b5760405162461bcd60e51b8152600401610ac19190610e64565b506000610c218486610e42565b80356001600160a01b0381168114610c6f57600080fd5b919050565b60008060408385031215610c8757600080fd5b610c9083610c58565b946020939093013593505050565b600060208284031215610cb057600080fd5b610a5d82610c58565b60008060408385031215610ccc57600080fd5b50508035926020909101359150565b600060208284031215610ced57600080fd5b5035919050565b600060208284031215610d0657600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610d6d5784516001600160a01b031683529383019391830191600101610d48565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b600060018201610db557610db5610d8d565b5060010190565b600060208284031215610dce57600080fd5b81518015158114610a5d57600080fd5b600082821015610df057610df0610d8d565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115610e1e57610e1e610d8d565b500190565b6000816000190483118215151615610e3d57610e3d610d8d565b500290565b600082610e5f57634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015610e9157858101830151858201604001528201610e75565b81811115610ea3576000604083870101525b50601f01601f191692909201604001939250505056fea26469706673582212207ee78e8259fb45731bf27fd5637feb0d7e8225a490ac2a7aa80809f2074ad63f64736f6c634300080d0033

Deployed ByteCode

0x