ETH Price: $3,359.40 (+2.58%)
Gas: 5 Gwei

Contract

0x1cc33545eB2329becC882D37Effc76F10e6E405F
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve203256052024-07-17 10:18:5912 days ago1721211539IN
0x1cc33545...10e6E405F
0 ETH0.000435179.23130787
Approve201714472024-06-25 21:41:2333 days ago1719351683IN
0x1cc33545...10e6E405F
0 ETH0.00031496.68006923
Approve195465832024-03-30 11:50:59121 days ago1711799459IN
0x1cc33545...10e6E405F
0 ETH0.0009217819.52902951
Approve186374832023-11-23 22:43:59248 days ago1700779439IN
0x1cc33545...10e6E405F
0 ETH0.0010669922.76752285
Approve186029972023-11-19 2:51:47253 days ago1700362307IN
0x1cc33545...10e6E405F
0 ETH0.0008223517.42248756
Approve185803682023-11-15 22:48:23256 days ago1700088503IN
0x1cc33545...10e6E405F
0 ETH0.0014629631.03373656
Approve185803642023-11-15 22:47:35256 days ago1700088455IN
0x1cc33545...10e6E405F
0 ETH0.0015121532.03645728
Approve185803632023-11-15 22:47:23256 days ago1700088443IN
0x1cc33545...10e6E405F
0 ETH0.0008737132.00320283
Approve185803622023-11-15 22:47:11256 days ago1700088431IN
0x1cc33545...10e6E405F
0 ETH0.0015290832.39508048
Approve185802272023-11-15 22:19:59256 days ago1700086799IN
0x1cc33545...10e6E405F
0 ETH0.0017217336.52316125
Approve185802232023-11-15 22:19:11256 days ago1700086751IN
0x1cc33545...10e6E405F
0 ETH0.0017433736.98210729
Approve185802132023-11-15 22:17:11256 days ago1700086631IN
0x1cc33545...10e6E405F
0 ETH0.0015957933.85152872
Approve185801572023-11-15 22:05:59256 days ago1700085959IN
0x1cc33545...10e6E405F
0 ETH0.0018346739.13812278
Approve185801492023-11-15 22:04:23256 days ago1700085863IN
0x1cc33545...10e6E405F
0 ETH0.0009808739.36585491
Approve185801392023-11-15 22:02:23256 days ago1700085743IN
0x1cc33545...10e6E405F
0 ETH0.0019865142.37727753
Approve185801292023-11-15 22:00:23256 days ago1700085623IN
0x1cc33545...10e6E405F
0 ETH0.0020350543.16953181
Approve185800492023-11-15 21:44:23256 days ago1700084663IN
0x1cc33545...10e6E405F
0 ETH0.0019731241.81323284
Approve185800142023-11-15 21:37:23256 days ago1700084243IN
0x1cc33545...10e6E405F
0 ETH0.0020345143.10330887
Approve185799672023-11-15 21:27:59256 days ago1700083679IN
0x1cc33545...10e6E405F
0 ETH0.0017658937.45987573
Approve185799452023-11-15 21:23:35256 days ago1700083415IN
0x1cc33545...10e6E405F
0 ETH0.0016174334.26699489
Approve185799362023-11-15 21:21:47256 days ago1700083307IN
0x1cc33545...10e6E405F
0 ETH0.0018325838.82511614
Approve185798952023-11-15 21:13:23256 days ago1700082803IN
0x1cc33545...10e6E405F
0 ETH0.0016669535.56019365
Approve185798912023-11-15 21:12:35256 days ago1700082755IN
0x1cc33545...10e6E405F
0 ETH0.0017666337.47545121
Approve185798692023-11-15 21:08:11256 days ago1700082491IN
0x1cc33545...10e6E405F
0 ETH0.0021757146.1532997
Approve185798582023-11-15 21:05:59256 days ago1700082359IN
0x1cc33545...10e6E405F
0 ETH0.0022574848.15762826
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
185790262023-11-15 18:18:47256 days ago1700072327
0x1cc33545...10e6E405F
0.00548212 ETH
185790262023-11-15 18:18:47256 days ago1700072327
0x1cc33545...10e6E405F
0.04933915 ETH
185790262023-11-15 18:18:47256 days ago1700072327
0x1cc33545...10e6E405F
0.05482128 ETH
185790262023-11-15 18:18:47256 days ago1700072327
0x1cc33545...10e6E405F
0.00585312 ETH
185790262023-11-15 18:18:47256 days ago1700072327
0x1cc33545...10e6E405F
0.05267812 ETH
185790262023-11-15 18:18:47256 days ago1700072327
0x1cc33545...10e6E405F
0.05853125 ETH
185790242023-11-15 18:18:23256 days ago1700072303
0x1cc33545...10e6E405F
0.00612706 ETH
185790242023-11-15 18:18:23256 days ago1700072303
0x1cc33545...10e6E405F
0.05514354 ETH
185790242023-11-15 18:18:23256 days ago1700072303
0x1cc33545...10e6E405F
0.0612706 ETH
185790232023-11-15 18:18:11256 days ago1700072291
0x1cc33545...10e6E405F
0.00731179 ETH
185790232023-11-15 18:18:11256 days ago1700072291
0x1cc33545...10e6E405F
0.06580615 ETH
185790232023-11-15 18:18:11256 days ago1700072291
0x1cc33545...10e6E405F
0.07311795 ETH
185790202023-11-15 18:17:35256 days ago1700072255
0x1cc33545...10e6E405F
0.0077464 ETH
185790202023-11-15 18:17:35256 days ago1700072255
0x1cc33545...10e6E405F
0.06971768 ETH
185790202023-11-15 18:17:35256 days ago1700072255
0x1cc33545...10e6E405F
0.07746409 ETH
185790192023-11-15 18:17:23256 days ago1700072243
0x1cc33545...10e6E405F
0.00828002 ETH
185790192023-11-15 18:17:23256 days ago1700072243
0x1cc33545...10e6E405F
0.07452023 ETH
185790192023-11-15 18:17:23256 days ago1700072243
0x1cc33545...10e6E405F
0.08280026 ETH
185790172023-11-15 18:16:59256 days ago1700072219
0x1cc33545...10e6E405F
0.00838074 ETH
185790172023-11-15 18:16:59256 days ago1700072219
0x1cc33545...10e6E405F
0.07542666 ETH
185790172023-11-15 18:16:59256 days ago1700072219
0x1cc33545...10e6E405F
0.0838074 ETH
185790172023-11-15 18:16:59256 days ago1700072219
0x1cc33545...10e6E405F
0.0086426 ETH
185790172023-11-15 18:16:59256 days ago1700072219
0x1cc33545...10e6E405F
0.07778345 ETH
185790172023-11-15 18:16:59256 days ago1700072219
0x1cc33545...10e6E405F
0.08642605 ETH
185790162023-11-15 18:16:47256 days ago1700072207
0x1cc33545...10e6E405F
0.00866641 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-15
*/

// SPDX-License-Identifier: MIT

    /*
        Website: http://milliontoken.net/
        X/Twitter: https://twitter.com/themilliontoken
        Telegram: https://t.me/themilliontoken
    */

    pragma solidity ^0.8.22;

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

        function _msgData() internal view virtual returns (bytes calldata) {
            return msg.data;
        }
    }

    interface IERC20 {
        function totalSupply() external view returns (uint256);
        function balanceOf(address account) external view returns (uint256);
        function transfer(address to, 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 from,
            address to,
            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);
    }

    interface IERC20Metadata is IERC20 {
        function name() external view returns (string memory);
        function symbol() external view returns (string memory);
        function decimals() external view returns (uint8);
    }

    contract ERC20 is Context, IERC20, IERC20Metadata {
        mapping(address => uint256) private _balances;
        mapping(address => mapping(address => uint256)) private _allowances;

        uint256 private _totalSupply;

        string private _name;
        string private _symbol;

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

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

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

        function decimals() public view virtual override returns (uint8) {
            return 18;
        }

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

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

        function transfer(address to, uint256 amount) public virtual override returns (bool) {
            address owner = _msgSender();
            _transfer(owner, to, amount);
            return true;
        }

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

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

        function transferFrom(
            address from,
            address to,
            uint256 amount
        ) public virtual override returns (bool) {
            address spender = _msgSender();
            _spendAllowance(from, spender, amount);
            _transfer(from, to, amount);
            return true;
        }

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

        function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
            address owner = _msgSender();
            uint256 currentAllowance = _allowances[owner][spender];
            require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
            unchecked {
                _approve(owner, spender, currentAllowance - subtractedValue);
            }

            return true;
        }

        function _transfer(
            address from,
            address to,
            uint256 amount
        ) internal virtual {
            require(from != address(0), "ERC20: transfer from the zero address");
            require(to != address(0), "ERC20: transfer to the zero address");

            _beforeTokenTransfer(from, to, amount);

            uint256 fromBalance = _balances[from];
            require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
            unchecked {
                _balances[from] = fromBalance - amount;
            }
            _balances[to] += amount;

            emit Transfer(from, to, amount);

            _afterTokenTransfer(from, to, amount);
        }

        function _mint(address account, uint256 amount) internal virtual {
            require(account != address(0), "ERC20: mint to the zero address");

            _beforeTokenTransfer(address(0), account, amount);

            _totalSupply += amount;
            _balances[account] += amount;
            emit Transfer(address(0), account, amount);

            _afterTokenTransfer(address(0), account, amount);
        }

        function _burn(address account, uint256 amount) internal virtual {
            require(account != address(0), "ERC20: burn from the zero address");

            _beforeTokenTransfer(account, address(0), amount);

            uint256 accountBalance = _balances[account];
            require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
            unchecked {
                _balances[account] = accountBalance - amount;
            }
            _totalSupply -= amount;

            emit Transfer(account, address(0), amount);

            _afterTokenTransfer(account, address(0), amount);
        }

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

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

        function _spendAllowance(
            address owner,
            address spender,
            uint256 amount
        ) internal virtual {
            uint256 currentAllowance = allowance(owner, spender);
            if (currentAllowance != type(uint256).max) {
                require(currentAllowance >= amount, "ERC20: insufficient allowance");
                unchecked {
                    _approve(owner, spender, currentAllowance - amount);
                }
            }
        }

        function _beforeTokenTransfer(
            address from,
            address to,
            uint256 amount
        ) internal virtual {}

        function _afterTokenTransfer(
            address from,
            address to,
            uint256 amount
        ) internal virtual {}
    }

    abstract contract Ownable is Context {
        address private _owner;

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

        constructor() {
            _transferOwnership(_msgSender());
        }

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

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

        function renounceOwnership() public virtual onlyOwner {
            _transferOwnership(address(0));
        }

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

        function _transferOwnership(address newOwner) internal virtual {
            address oldOwner = _owner;
            _owner = newOwner;
            emit OwnershipTransferred(oldOwner, newOwner);
        }
    }

    library SafeMath {
        function add(uint256 a, uint256 b) internal pure returns (uint256) {
            return a + b;
        }

        function sub(uint256 a, uint256 b) internal pure returns (uint256) {
            return a - b;
        }

        function mul(uint256 a, uint256 b) internal pure returns (uint256) {
            return a * b;
        }

        function div(uint256 a, uint256 b) internal pure returns (uint256) {
            return a / b;
        }

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

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

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

    interface IUniswapV2Router02 {
        function factory() external pure returns (address);
        function WETH() external pure returns (address);
            function addLiquidityETH(
            address token,
            uint amountTokenDesired,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
        function swapExactTokensForETHSupportingFeeOnTransferTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external;
    }

    contract Token is ERC20, Ownable {
        using SafeMath for uint256;

        IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        address public v2Pair;
        address public immutable feeAddr;

        uint256 public maxSwap;
        uint256 public maxHoldings;
        uint256 public feeTokenThreshold;
            
        uint256 public buyFee;
        uint256 public sellFee;

        bool private _inSwap;
        mapping (address => bool) private _excludedLimits;

        // much like onlyOwner() but used for the feeAddr so that once renounced fees, limits and threshold can still be changed
        modifier onlyFeeAddr() {
            require(feeAddr == _msgSender(), "Caller is not the feeAddr address.");
            _;
        }

        constructor() ERC20("Million", "MM") payable {
            uint256 totalSupply = 1000000 * 1e18;
            uint256 lpSupply = totalSupply.mul(4066).div(10000);

            maxSwap = totalSupply.mul(2).div(100);
            maxHoldings = totalSupply.mul(2).div(100);
            feeTokenThreshold = totalSupply.mul(10).div(10000);
            
            feeAddr = tx.origin;

            buyFee = 25;
            sellFee = 25;

            // exclusion from fees and limits
            _excludedLimits[feeAddr] = true;
            _excludedLimits[msg.sender] = true;
            _excludedLimits[address(this)] = true;
            _excludedLimits[address(0xdead)] = true;

            _mint(tx.origin, totalSupply.sub(lpSupply));
            _mint(msg.sender, lpSupply);
        }

        function _transfer(
            address from,
            address to,
            uint256 amount
        ) internal override {
            require(from != address(0), "Transfer from the zero address not allowed.");
            require(to != address(0), "Transfer to the zero address not allowed.");
            require(amount > 0, 'Transfer amount must be greater than zero.');

            bool excluded = _excludedLimits[from] || _excludedLimits[to];

            // check if liquidity pair exists
            require(v2Pair != address(0) || excluded, "Liquidity pair not yet created.");
            
            bool isSell = to == v2Pair;
            bool isBuy = from == v2Pair;
            
            // max swap check
            if ((isBuy || isSell) && maxSwap > 0 && !excluded)
                require(amount <= maxSwap, "Swap value exceeds max swap amount, try again with less swap value.");

            // max holdings check
            if (!isSell && maxHoldings > 0 && !excluded)
                require(balanceOf(to) + amount <= maxHoldings, "Balance exceeds max holdings amount, consider using a second wallet.");

            // take fees if they are on
            uint256 fee = isBuy ? buyFee : sellFee;
            if (fee > 0) {
                uint256 caTokenBal = balanceOf(address(this));
                if (
                    caTokenBal >= feeTokenThreshold &&
                    !_inSwap &&
                    isSell &&
                    !excluded
                ) {
                    _inSwap = true;
                    swapFee();
                    _inSwap = false;
                }

                // check if we should be taking the fee
                if (!excluded && !_inSwap && (isBuy || isSell)) {
                    uint256 fees = amount.mul(fee).div(100);                
                    if (fees > 0)
                        super._transfer(from, address(this), fees);
                    
                    amount = amount.sub(fees);
                }
            }

            super._transfer(from, to, amount);
        }

        // swaps fee from tokens to eth
        function swapFee() public {
            uint256 caTokenBal = balanceOf(address(this));
            if (caTokenBal == 0) return;
            if (caTokenBal > feeTokenThreshold) caTokenBal = feeTokenThreshold;
            
            uint256 initETHBal = address(this).balance;

            // swap
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = _router.WETH();

            _approve(address(this), address(_router), caTokenBal);

            _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                caTokenBal,
                0,
                path,
                address(this),
                block.timestamp
            );
            
            // send eth fee
            uint256 ethFee = address(this).balance.sub(initETHBal);
            uint256 splitFee = ethFee.mul(10).div(100);

            ethFee = ethFee.sub(splitFee);
            payable(feeAddr).transfer(ethFee);
            payable(0xa228b6dE33d0Fe0B39A4527F5a26e95879035E5A).transfer(splitFee);
        }

        // can only ever be the actual pair as it uses getPair
        function enableTrading() external onlyOwner {
            v2Pair = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
        }

        // updates the amount of tokens that needs to be reached before fee is swapped
        function updateFeeTokenThreshold(uint256 newThreshold) external onlyFeeAddr {
            require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
            require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
            feeTokenThreshold = newThreshold;
        }

        // change fees
        function setFees(uint256 newBuyFee, uint256 newSellFee) external onlyFeeAddr {
            require(newBuyFee <= 25 && newSellFee <= 25, 'Attempting to set fee higher than initial fee.'); // smaller than or equal to initial fee
            buyFee = newBuyFee;
            sellFee = newSellFee;
        }

        // perm disables all limits
        function disableLimits() external onlyFeeAddr {
            maxHoldings = 0;
            maxSwap = 0;
        }

        // perm disable max holdings
        function disableHoldingLimit() external onlyFeeAddr {
            maxHoldings = 0;
        }

        // perm disable max swap
        function disableSwapLimit() external onlyFeeAddr {
            maxSwap = 0;
        }

        // transfers any stuck eth from contract to feeAddr
        function transferStuckETH() external  {
            payable(feeAddr).transfer(address(this).balance);
        }

        // transfers any stuck token from contract to feeAddr
        function transferStuckERC20(IERC20 token) external  {
            token.transfer(feeAddr, token.balanceOf(address(this)));
        }

        receive() external payable {}
    }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableHoldingLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTokenThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"transferStuckERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"v2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600781526020017f4d696c6c696f6e000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f4d4d000000000000000000000000000000000000000000000000000000000000815250816003908162000081919062000851565b50806004908162000093919062000851565b505050620000b6620000aa6200036460201b60201c565b6200036b60201b60201c565b5f69d3c21bcecceda100000090505f620000f2612710620000e3610fe2856200042e60201b90919060201c565b6200044560201b90919060201c565b90506200011f6064620001106002856200042e60201b90919060201c565b6200044560201b90919060201c565b600781905550620001506064620001416002856200042e60201b90919060201c565b6200044560201b90919060201c565b6008819055506200018261271062000173600a856200042e60201b90919060201c565b6200044560201b90919060201c565b6009819055503273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506019600a819055506019600b819055506001600d5f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200034a326200033e83856200045c60201b90919060201c565b6200047360201b60201c565b6200035c33826200047360201b60201c565b505062000b2e565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836200043d919062000962565b905092915050565b5f8183620004549190620009d9565b905092915050565b5f81836200046b919062000a10565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004db9062000aa8565b60405180910390fd5b620004f75f8383620005e360201b60201c565b8060025f8282546200050a919062000ac8565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200055e919062000ac8565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005c4919062000b13565b60405180910390a3620005df5f8383620005e860201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200066957607f821691505b6020821081036200067f576200067e62000624565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006a6565b620006ef8683620006a6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000739620007336200072d8462000707565b62000710565b62000707565b9050919050565b5f819050919050565b620007548362000719565b6200076c620007638262000740565b848454620006b2565b825550505050565b5f90565b6200078262000774565b6200078f81848462000749565b505050565b5b81811015620007b657620007aa5f8262000778565b60018101905062000795565b5050565b601f8211156200080557620007cf8162000685565b620007da8462000697565b81016020851015620007ea578190505b62000802620007f98562000697565b83018262000794565b50505b505050565b5f82821c905092915050565b5f620008275f19846008026200080a565b1980831691505092915050565b5f62000841838362000816565b9150826002028217905092915050565b6200085c82620005ed565b67ffffffffffffffff811115620008785762000877620005f7565b5b62000884825462000651565b62000891828285620007ba565b5f60209050601f831160018114620008c7575f8415620008b2578287015190505b620008be858262000834565b8655506200092d565b601f198416620008d78662000685565b5f5b828110156200090057848901518255600182019150602085019450602081019050620008d9565b868310156200092057848901516200091c601f89168262000816565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200096e8262000707565b91506200097b8362000707565b92508282026200098b8162000707565b91508282048414831517620009a557620009a462000935565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620009e58262000707565b9150620009f28362000707565b92508262000a055762000a04620009ac565b5b828204905092915050565b5f62000a1c8262000707565b915062000a298362000707565b925082820390508181111562000a445762000a4362000935565b5b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000a90601f8362000a4a565b915062000a9d8262000a5a565b602082019050919050565b5f6020820190508181035f83015262000ac18162000a82565b9050919050565b5f62000ad48262000707565b915062000ae18362000707565b925082820190508082111562000afc5762000afb62000935565b5b92915050565b62000b0d8162000707565b82525050565b5f60208201905062000b285f83018462000b02565b92915050565b6080516135a062000b7f5f395f81816106f6015281816108460152818161092901528181610a7601528181610d2d01528181610e0f01528181610eab01528181611608015261178901526135a05ff3fe6080604052600436106101d0575f3560e01c80635564ad71116100f6578063a457c2d711610094578063e54f4faa11610063578063e54f4faa14610621578063f2fde38b1461064b578063f442d3fb14610673578063f928364c1461069b576101d7565b8063a457c2d714610543578063a9059cbb1461057f578063c4918b4e146105bb578063dd62ed3e146105e5576101d7565b8063715018a6116100d0578063715018a6146104c35780638a8c523c146104d95780638da5cb5b146104ef57806395d89b4114610519576101d7565b80635564ad711461044957806362aaff3a1461045f57806370a0823114610487576101d7565b80631ffc29981161016e578063395093511161013d57806339509351146103a357806339e7fddc146103df578063470624021461040957806354cf2aeb14610433576101d7565b80631ffc2998146102e957806323b872dd146103135780632b14ca561461034f578063313ce56714610379576101d7565b8063095ea7b3116101aa578063095ea7b3146102455780630b78f9c01461028157806318160ddd146102a95780631fac6a3b146102d3576101d7565b8063056939da146101db578063063be69e1461020557806306fdde031461021b576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106b1565b6040516101fc9190612333565b60405180910390f35b348015610210575f80fd5b506102196106d6565b005b348015610226575f80fd5b5061022f610774565b60405161023c91906123d6565b60405180910390f35b348015610250575f80fd5b5061026b60048036038101906102669190612457565b610804565b60405161027891906124af565b60405180910390f35b34801561028c575f80fd5b506102a760048036038101906102a291906124c8565b610826565b005b3480156102b4575f80fd5b506102bd61091e565b6040516102ca9190612515565b60405180910390f35b3480156102de575f80fd5b506102e7610927565b005b3480156102f4575f80fd5b506102fd61098d565b60405161030a9190612515565b60405180910390f35b34801561031e575f80fd5b506103396004803603810190610334919061252e565b610993565b60405161034691906124af565b60405180910390f35b34801561035a575f80fd5b506103636109c1565b6040516103709190612515565b60405180910390f35b348015610384575f80fd5b5061038d6109c7565b60405161039a9190612599565b60405180910390f35b3480156103ae575f80fd5b506103c960048036038101906103c49190612457565b6109cf565b6040516103d691906124af565b60405180910390f35b3480156103ea575f80fd5b506103f3610a74565b6040516104009190612333565b60405180910390f35b348015610414575f80fd5b5061041d610a98565b60405161042a9190612515565b60405180910390f35b34801561043e575f80fd5b50610447610a9e565b005b348015610454575f80fd5b5061045d610def565b005b34801561046a575f80fd5b50610485600480360381019061048091906125ed565b610e8d565b005b348015610492575f80fd5b506104ad60048036038101906104a89190612618565b610fa3565b6040516104ba9190612515565b60405180910390f35b3480156104ce575f80fd5b506104d7610fe8565b005b3480156104e4575f80fd5b506104ed61106f565b005b3480156104fa575f80fd5b506105036112a6565b6040516105109190612333565b60405180910390f35b348015610524575f80fd5b5061052d6112ce565b60405161053a91906123d6565b60405180910390f35b34801561054e575f80fd5b5061056960048036038101906105649190612457565b61135e565b60405161057691906124af565b60405180910390f35b34801561058a575f80fd5b506105a560048036038101906105a09190612457565b611442565b6040516105b291906124af565b60405180910390f35b3480156105c6575f80fd5b506105cf611464565b6040516105dc9190612515565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190612643565b61146a565b6040516106189190612515565b60405180910390f35b34801561062c575f80fd5b506106356114ec565b6040516106429190612515565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190612618565b6114f2565b005b34801561067e575f80fd5b5061069960048036038101906106949190612681565b6115e8565b005b3480156106a6575f80fd5b506106af611769565b005b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106de61180e565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161461076b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107629061271c565b60405180910390fd5b5f600781905550565b60606003805461078390612767565b80601f01602080910402602001604051908101604052809291908181526020018280546107af90612767565b80156107fa5780601f106107d1576101008083540402835291602001916107fa565b820191905f5260205f20905b8154815290600101906020018083116107dd57829003601f168201915b5050505050905090565b5f8061080e61180e565b905061081b818585611815565b600191505092915050565b61082e61180e565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b29061271c565b60405180910390fd5b601982111580156108cd575060198111155b61090c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090390612807565b60405180910390fd5b81600a8190555080600b819055505050565b5f600254905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561098a573d5f803e3d5ffd5b50565b60095481565b5f8061099d61180e565b90506109aa8582856119d8565b6109b5858585611a63565b60019150509392505050565b600b5481565b5f6012905090565b5f806109d961180e565b9050610a6981858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a649190612852565b611815565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5481565b5f610aa830610fa3565b90505f8103610ab75750610ded565b600954811115610ac75760095490505b5f4790505f600267ffffffffffffffff811115610ae757610ae6612885565b5b604051908082528060200260200182016040528015610b155781602001602082028036833780820191505090505b50905030815f81518110610b2c57610b2b6128b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be791906128f3565b81600181518110610bfb57610bfa6128b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610c5430737a250d5630b4cf539739df2c5dacb4c659f2488d85611815565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401610ca9959493929190612a17565b5f604051808303815f87803b158015610cc0575f80fd5b505af1158015610cd2573d5f803e3d5ffd5b505050505f610cea8347611f7390919063ffffffff16565b90505f610d146064610d06600a85611f8890919063ffffffff16565b611f9d90919063ffffffff16565b9050610d298183611f7390919063ffffffff16565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610d8e573d5f803e3d5ffd5b5073a228b6de33d0fe0b39a4527f5a26e95879035e5a73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610de6573d5f803e3d5ffd5b5050505050505b565b610df761180e565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7b9061271c565b60405180910390fd5b5f600881905550565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f00000000000000000000000000000000000000000000000000000000000000008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f039190612333565b602060405180830381865afa158015610f1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f429190612a83565b6040518363ffffffff1660e01b8152600401610f5f929190612aae565b6020604051808303815f875af1158015610f7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9f9190612aff565b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ff061180e565b73ffffffffffffffffffffffffffffffffffffffff1661100e6112a6565b73ffffffffffffffffffffffffffffffffffffffff1614611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90612b74565b60405180910390fd5b61106d5f611fb2565b565b61107761180e565b73ffffffffffffffffffffffffffffffffffffffff166110956112a6565b73ffffffffffffffffffffffffffffffffffffffff16146110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290612b74565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611148573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116c91906128f3565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111e5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120991906128f3565b6040518363ffffffff1660e01b8152600401611226929190612b92565b602060405180830381865afa158015611241573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126591906128f3565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112dd90612767565b80601f016020809104026020016040519081016040528092919081815260200182805461130990612767565b80156113545780601f1061132b57610100808354040283529160200191611354565b820191905f5260205f20905b81548152906001019060200180831161133757829003601f168201915b5050505050905090565b5f8061136861180e565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015611429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142090612c29565b60405180910390fd5b6114368286868403611815565b60019250505092915050565b5f8061144c61180e565b9050611459818585611a63565b600191505092915050565b60075481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b6114fa61180e565b73ffffffffffffffffffffffffffffffffffffffff166115186112a6565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590612b74565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d390612cb7565b60405180910390fd5b6115e581611fb2565b50565b6115f061180e565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161461167d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116749061271c565b60405180910390fd5b6116ad620186a061169f600161169161091e565b611f8890919063ffffffff16565b611f9d90919063ffffffff16565b8110156116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e690612d45565b60405180910390fd5b61171d606461170f600261170161091e565b611f8890919063ffffffff16565b611f9d90919063ffffffff16565b81111561175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690612dd3565b60405180910390fd5b8060098190555050565b61177161180e565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f59061271c565b60405180910390fd5b5f6008819055505f600781905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a90612e61565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890612eef565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119cb9190612515565b60405180910390a3505050565b5f6119e3848461146a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a5d5781811015611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4690612f57565b60405180910390fd5b611a5c8484848403611815565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac890612fe5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3690613073565b60405180910390fd5b5f8111611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890613101565b60405180910390fd5b5f600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611c1d5750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580611c785750805b611cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cae90613169565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490508080611d665750815b8015611d7357505f600754115b8015611d7d575082155b15611dc857600754841115611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe9061321d565b60405180910390fd5b5b81158015611dd757505f600854115b8015611de1575082155b15611e3f5760085484611df387610fa3565b611dfd9190612852565b1115611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e35906132d1565b60405180910390fd5b5b5f81611e4d57600b54611e51565b600a545b90505f811115611f5f575f611e6530610fa3565b90506009548110158015611e855750600c5f9054906101000a900460ff16155b8015611e8e5750835b8015611e98575084155b15611ed9576001600c5f6101000a81548160ff021916908315150217905550611ebf610a9e565b5f600c5f6101000a81548160ff0219169083151502179055505b84158015611ef35750600c5f9054906101000a900460ff16155b8015611f0457508280611f035750835b5b15611f5d575f611f306064611f22858a611f8890919063ffffffff16565b611f9d90919063ffffffff16565b90505f811115611f4657611f45893083612075565b5b611f598188611f7390919063ffffffff16565b9650505b505b611f6a878787612075565b50505050505050565b5f8183611f8091906132ef565b905092915050565b5f8183611f959190613322565b905092915050565b5f8183611faa9190613390565b905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120da90613430565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612151576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612148906134be565b60405180910390fd5b61215c8383836122ea565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d69061354c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461226d9190612852565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122d19190612515565b60405180910390a36122e48484846122ef565b50505050565b505050565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61231d826122f4565b9050919050565b61232d81612313565b82525050565b5f6020820190506123465f830184612324565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612383578082015181840152602081019050612368565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123a88261234c565b6123b28185612356565b93506123c2818560208601612366565b6123cb8161238e565b840191505092915050565b5f6020820190508181035f8301526123ee818461239e565b905092915050565b5f80fd5b61240381612313565b811461240d575f80fd5b50565b5f8135905061241e816123fa565b92915050565b5f819050919050565b61243681612424565b8114612440575f80fd5b50565b5f813590506124518161242d565b92915050565b5f806040838503121561246d5761246c6123f6565b5b5f61247a85828601612410565b925050602061248b85828601612443565b9150509250929050565b5f8115159050919050565b6124a981612495565b82525050565b5f6020820190506124c25f8301846124a0565b92915050565b5f80604083850312156124de576124dd6123f6565b5b5f6124eb85828601612443565b92505060206124fc85828601612443565b9150509250929050565b61250f81612424565b82525050565b5f6020820190506125285f830184612506565b92915050565b5f805f60608486031215612545576125446123f6565b5b5f61255286828701612410565b935050602061256386828701612410565b925050604061257486828701612443565b9150509250925092565b5f60ff82169050919050565b6125938161257e565b82525050565b5f6020820190506125ac5f83018461258a565b92915050565b5f6125bc82612313565b9050919050565b6125cc816125b2565b81146125d6575f80fd5b50565b5f813590506125e7816125c3565b92915050565b5f60208284031215612602576126016123f6565b5b5f61260f848285016125d9565b91505092915050565b5f6020828403121561262d5761262c6123f6565b5b5f61263a84828501612410565b91505092915050565b5f8060408385031215612659576126586123f6565b5b5f61266685828601612410565b925050602061267785828601612410565b9150509250929050565b5f60208284031215612696576126956123f6565b5b5f6126a384828501612443565b91505092915050565b7f43616c6c6572206973206e6f74207468652066656541646472206164647265735f8201527f732e000000000000000000000000000000000000000000000000000000000000602082015250565b5f612706602283612356565b9150612711826126ac565b604082019050919050565b5f6020820190508181035f830152612733816126fa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061277e57607f821691505b6020821081036127915761279061273a565b5b50919050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f6127f1602e83612356565b91506127fc82612797565b604082019050919050565b5f6020820190508181035f83015261281e816127e5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61285c82612424565b915061286783612424565b925082820190508082111561287f5761287e612825565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506128ed816123fa565b92915050565b5f60208284031215612908576129076123f6565b5b5f612915848285016128df565b91505092915050565b5f819050919050565b5f819050919050565b5f61294a6129456129408461291e565b612927565b612424565b9050919050565b61295a81612930565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61299281612313565b82525050565b5f6129a38383612989565b60208301905092915050565b5f602082019050919050565b5f6129c582612960565b6129cf818561296a565b93506129da8361297a565b805f5b83811015612a0a5781516129f18882612998565b97506129fc836129af565b9250506001810190506129dd565b5085935050505092915050565b5f60a082019050612a2a5f830188612506565b612a376020830187612951565b8181036040830152612a4981866129bb565b9050612a586060830185612324565b612a656080830184612506565b9695505050505050565b5f81519050612a7d8161242d565b92915050565b5f60208284031215612a9857612a976123f6565b5b5f612aa584828501612a6f565b91505092915050565b5f604082019050612ac15f830185612324565b612ace6020830184612506565b9392505050565b612ade81612495565b8114612ae8575f80fd5b50565b5f81519050612af981612ad5565b92915050565b5f60208284031215612b1457612b136123f6565b5b5f612b2184828501612aeb565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b5e602083612356565b9150612b6982612b2a565b602082019050919050565b5f6020820190508181035f830152612b8b81612b52565b9050919050565b5f604082019050612ba55f830185612324565b612bb26020830184612324565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612c13602583612356565b9150612c1e82612bb9565b604082019050919050565b5f6020820190508181035f830152612c4081612c07565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612ca1602683612356565b9150612cac82612c47565b604082019050919050565b5f6020820190508181035f830152612cce81612c95565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f612d2f603883612356565b9150612d3a82612cd5565b604082019050919050565b5f6020820190508181035f830152612d5c81612d23565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612dbd603583612356565b9150612dc882612d63565b604082019050919050565b5f6020820190508181035f830152612dea81612db1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612e4b602483612356565b9150612e5682612df1565b604082019050919050565b5f6020820190508181035f830152612e7881612e3f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612ed9602283612356565b9150612ee482612e7f565b604082019050919050565b5f6020820190508181035f830152612f0681612ecd565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612f41601d83612356565b9150612f4c82612f0d565b602082019050919050565b5f6020820190508181035f830152612f6e81612f35565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f612fcf602b83612356565b9150612fda82612f75565b604082019050919050565b5f6020820190508181035f830152612ffc81612fc3565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f61305d602983612356565b915061306882613003565b604082019050919050565b5f6020820190508181035f83015261308a81613051565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f6130eb602a83612356565b91506130f682613091565b604082019050919050565b5f6020820190508181035f830152613118816130df565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f613153601f83612356565b915061315e8261311f565b602082019050919050565b5f6020820190508181035f83015261318081613147565b9050919050565b7f537761702076616c75652065786365656473206d6178207377617020616d6f755f8201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c60208201527f75652e0000000000000000000000000000000000000000000000000000000000604082015250565b5f613207604383612356565b915061321282613187565b606082019050919050565b5f6020820190508181035f830152613234816131fb565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f6132bb604483612356565b91506132c68261323b565b606082019050919050565b5f6020820190508181035f8301526132e8816132af565b9050919050565b5f6132f982612424565b915061330483612424565b925082820390508181111561331c5761331b612825565b5b92915050565b5f61332c82612424565b915061333783612424565b925082820261334581612424565b9150828204841483151761335c5761335b612825565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61339a82612424565b91506133a583612424565b9250826133b5576133b4613363565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61341a602583612356565b9150613425826133c0565b604082019050919050565b5f6020820190508181035f8301526134478161340e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a8602383612356565b91506134b38261344e565b604082019050919050565b5f6020820190508181035f8301526134d58161349c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613536602683612356565b9150613541826134dc565b604082019050919050565b5f6020820190508181035f8301526135638161352a565b905091905056fea264697066735822122094cb781f7a43ee5c694f407a2d030620862380036c8a172cc68695c9e332037b64736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101d0575f3560e01c80635564ad71116100f6578063a457c2d711610094578063e54f4faa11610063578063e54f4faa14610621578063f2fde38b1461064b578063f442d3fb14610673578063f928364c1461069b576101d7565b8063a457c2d714610543578063a9059cbb1461057f578063c4918b4e146105bb578063dd62ed3e146105e5576101d7565b8063715018a6116100d0578063715018a6146104c35780638a8c523c146104d95780638da5cb5b146104ef57806395d89b4114610519576101d7565b80635564ad711461044957806362aaff3a1461045f57806370a0823114610487576101d7565b80631ffc29981161016e578063395093511161013d57806339509351146103a357806339e7fddc146103df578063470624021461040957806354cf2aeb14610433576101d7565b80631ffc2998146102e957806323b872dd146103135780632b14ca561461034f578063313ce56714610379576101d7565b8063095ea7b3116101aa578063095ea7b3146102455780630b78f9c01461028157806318160ddd146102a95780631fac6a3b146102d3576101d7565b8063056939da146101db578063063be69e1461020557806306fdde031461021b576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106b1565b6040516101fc9190612333565b60405180910390f35b348015610210575f80fd5b506102196106d6565b005b348015610226575f80fd5b5061022f610774565b60405161023c91906123d6565b60405180910390f35b348015610250575f80fd5b5061026b60048036038101906102669190612457565b610804565b60405161027891906124af565b60405180910390f35b34801561028c575f80fd5b506102a760048036038101906102a291906124c8565b610826565b005b3480156102b4575f80fd5b506102bd61091e565b6040516102ca9190612515565b60405180910390f35b3480156102de575f80fd5b506102e7610927565b005b3480156102f4575f80fd5b506102fd61098d565b60405161030a9190612515565b60405180910390f35b34801561031e575f80fd5b506103396004803603810190610334919061252e565b610993565b60405161034691906124af565b60405180910390f35b34801561035a575f80fd5b506103636109c1565b6040516103709190612515565b60405180910390f35b348015610384575f80fd5b5061038d6109c7565b60405161039a9190612599565b60405180910390f35b3480156103ae575f80fd5b506103c960048036038101906103c49190612457565b6109cf565b6040516103d691906124af565b60405180910390f35b3480156103ea575f80fd5b506103f3610a74565b6040516104009190612333565b60405180910390f35b348015610414575f80fd5b5061041d610a98565b60405161042a9190612515565b60405180910390f35b34801561043e575f80fd5b50610447610a9e565b005b348015610454575f80fd5b5061045d610def565b005b34801561046a575f80fd5b50610485600480360381019061048091906125ed565b610e8d565b005b348015610492575f80fd5b506104ad60048036038101906104a89190612618565b610fa3565b6040516104ba9190612515565b60405180910390f35b3480156104ce575f80fd5b506104d7610fe8565b005b3480156104e4575f80fd5b506104ed61106f565b005b3480156104fa575f80fd5b506105036112a6565b6040516105109190612333565b60405180910390f35b348015610524575f80fd5b5061052d6112ce565b60405161053a91906123d6565b60405180910390f35b34801561054e575f80fd5b5061056960048036038101906105649190612457565b61135e565b60405161057691906124af565b60405180910390f35b34801561058a575f80fd5b506105a560048036038101906105a09190612457565b611442565b6040516105b291906124af565b60405180910390f35b3480156105c6575f80fd5b506105cf611464565b6040516105dc9190612515565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190612643565b61146a565b6040516106189190612515565b60405180910390f35b34801561062c575f80fd5b506106356114ec565b6040516106429190612515565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190612618565b6114f2565b005b34801561067e575f80fd5b5061069960048036038101906106949190612681565b6115e8565b005b3480156106a6575f80fd5b506106af611769565b005b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106de61180e565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000f9417f9ba59b0431cfd973071134b23a48e0e60273ffffffffffffffffffffffffffffffffffffffff161461076b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107629061271c565b60405180910390fd5b5f600781905550565b60606003805461078390612767565b80601f01602080910402602001604051908101604052809291908181526020018280546107af90612767565b80156107fa5780601f106107d1576101008083540402835291602001916107fa565b820191905f5260205f20905b8154815290600101906020018083116107dd57829003601f168201915b5050505050905090565b5f8061080e61180e565b905061081b818585611815565b600191505092915050565b61082e61180e565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000f9417f9ba59b0431cfd973071134b23a48e0e60273ffffffffffffffffffffffffffffffffffffffff16146108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b29061271c565b60405180910390fd5b601982111580156108cd575060198111155b61090c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090390612807565b60405180910390fd5b81600a8190555080600b819055505050565b5f600254905090565b7f000000000000000000000000f9417f9ba59b0431cfd973071134b23a48e0e60273ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561098a573d5f803e3d5ffd5b50565b60095481565b5f8061099d61180e565b90506109aa8582856119d8565b6109b5858585611a63565b60019150509392505050565b600b5481565b5f6012905090565b5f806109d961180e565b9050610a6981858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a649190612852565b611815565b600191505092915050565b7f000000000000000000000000f9417f9ba59b0431cfd973071134b23a48e0e60281565b600a5481565b5f610aa830610fa3565b90505f8103610ab75750610ded565b600954811115610ac75760095490505b5f4790505f600267ffffffffffffffff811115610ae757610ae6612885565b5b604051908082528060200260200182016040528015610b155781602001602082028036833780820191505090505b50905030815f81518110610b2c57610b2b6128b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be791906128f3565b81600181518110610bfb57610bfa6128b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610c5430737a250d5630b4cf539739df2c5dacb4c659f2488d85611815565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401610ca9959493929190612a17565b5f604051808303815f87803b158015610cc0575f80fd5b505af1158015610cd2573d5f803e3d5ffd5b505050505f610cea8347611f7390919063ffffffff16565b90505f610d146064610d06600a85611f8890919063ffffffff16565b611f9d90919063ffffffff16565b9050610d298183611f7390919063ffffffff16565b91507f000000000000000000000000f9417f9ba59b0431cfd973071134b23a48e0e60273ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610d8e573d5f803e3d5ffd5b5073a228b6de33d0fe0b39a4527f5a26e95879035e5a73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610de6573d5f803e3d5ffd5b5050505050505b565b610df761180e565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000f9417f9ba59b0431cfd973071134b23a48e0e60273ffffffffffffffffffffffffffffffffffffffff1614610e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7b9061271c565b60405180910390fd5b5f600881905550565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f000000000000000000000000f9417f9ba59b0431cfd973071134b23a48e0e6028373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f039190612333565b602060405180830381865afa158015610f1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f429190612a83565b6040518363ffffffff1660e01b8152600401610f5f929190612aae565b6020604051808303815f875af1158015610f7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9f9190612aff565b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ff061180e565b73ffffffffffffffffffffffffffffffffffffffff1661100e6112a6565b73ffffffffffffffffffffffffffffffffffffffff1614611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90612b74565b60405180910390fd5b61106d5f611fb2565b565b61107761180e565b73ffffffffffffffffffffffffffffffffffffffff166110956112a6565b73ffffffffffffffffffffffffffffffffffffffff16146110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290612b74565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611148573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116c91906128f3565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111e5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120991906128f3565b6040518363ffffffff1660e01b8152600401611226929190612b92565b602060405180830381865afa158015611241573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126591906128f3565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112dd90612767565b80601f016020809104026020016040519081016040528092919081815260200182805461130990612767565b80156113545780601f1061132b57610100808354040283529160200191611354565b820191905f5260205f20905b81548152906001019060200180831161133757829003601f168201915b5050505050905090565b5f8061136861180e565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015611429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142090612c29565b60405180910390fd5b6114368286868403611815565b60019250505092915050565b5f8061144c61180e565b9050611459818585611a63565b600191505092915050565b60075481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b6114fa61180e565b73ffffffffffffffffffffffffffffffffffffffff166115186112a6565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590612b74565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d390612cb7565b60405180910390fd5b6115e581611fb2565b50565b6115f061180e565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000f9417f9ba59b0431cfd973071134b23a48e0e60273ffffffffffffffffffffffffffffffffffffffff161461167d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116749061271c565b60405180910390fd5b6116ad620186a061169f600161169161091e565b611f8890919063ffffffff16565b611f9d90919063ffffffff16565b8110156116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e690612d45565b60405180910390fd5b61171d606461170f600261170161091e565b611f8890919063ffffffff16565b611f9d90919063ffffffff16565b81111561175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690612dd3565b60405180910390fd5b8060098190555050565b61177161180e565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000f9417f9ba59b0431cfd973071134b23a48e0e60273ffffffffffffffffffffffffffffffffffffffff16146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f59061271c565b60405180910390fd5b5f6008819055505f600781905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a90612e61565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890612eef565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119cb9190612515565b60405180910390a3505050565b5f6119e3848461146a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a5d5781811015611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4690612f57565b60405180910390fd5b611a5c8484848403611815565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac890612fe5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3690613073565b60405180910390fd5b5f8111611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890613101565b60405180910390fd5b5f600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611c1d5750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580611c785750805b611cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cae90613169565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490508080611d665750815b8015611d7357505f600754115b8015611d7d575082155b15611dc857600754841115611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe9061321d565b60405180910390fd5b5b81158015611dd757505f600854115b8015611de1575082155b15611e3f5760085484611df387610fa3565b611dfd9190612852565b1115611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e35906132d1565b60405180910390fd5b5b5f81611e4d57600b54611e51565b600a545b90505f811115611f5f575f611e6530610fa3565b90506009548110158015611e855750600c5f9054906101000a900460ff16155b8015611e8e5750835b8015611e98575084155b15611ed9576001600c5f6101000a81548160ff021916908315150217905550611ebf610a9e565b5f600c5f6101000a81548160ff0219169083151502179055505b84158015611ef35750600c5f9054906101000a900460ff16155b8015611f0457508280611f035750835b5b15611f5d575f611f306064611f22858a611f8890919063ffffffff16565b611f9d90919063ffffffff16565b90505f811115611f4657611f45893083612075565b5b611f598188611f7390919063ffffffff16565b9650505b505b611f6a878787612075565b50505050505050565b5f8183611f8091906132ef565b905092915050565b5f8183611f959190613322565b905092915050565b5f8183611faa9190613390565b905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120da90613430565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612151576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612148906134be565b60405180910390fd5b61215c8383836122ea565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d69061354c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461226d9190612852565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122d19190612515565b60405180910390a36122e48484846122ef565b50505050565b505050565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61231d826122f4565b9050919050565b61232d81612313565b82525050565b5f6020820190506123465f830184612324565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612383578082015181840152602081019050612368565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123a88261234c565b6123b28185612356565b93506123c2818560208601612366565b6123cb8161238e565b840191505092915050565b5f6020820190508181035f8301526123ee818461239e565b905092915050565b5f80fd5b61240381612313565b811461240d575f80fd5b50565b5f8135905061241e816123fa565b92915050565b5f819050919050565b61243681612424565b8114612440575f80fd5b50565b5f813590506124518161242d565b92915050565b5f806040838503121561246d5761246c6123f6565b5b5f61247a85828601612410565b925050602061248b85828601612443565b9150509250929050565b5f8115159050919050565b6124a981612495565b82525050565b5f6020820190506124c25f8301846124a0565b92915050565b5f80604083850312156124de576124dd6123f6565b5b5f6124eb85828601612443565b92505060206124fc85828601612443565b9150509250929050565b61250f81612424565b82525050565b5f6020820190506125285f830184612506565b92915050565b5f805f60608486031215612545576125446123f6565b5b5f61255286828701612410565b935050602061256386828701612410565b925050604061257486828701612443565b9150509250925092565b5f60ff82169050919050565b6125938161257e565b82525050565b5f6020820190506125ac5f83018461258a565b92915050565b5f6125bc82612313565b9050919050565b6125cc816125b2565b81146125d6575f80fd5b50565b5f813590506125e7816125c3565b92915050565b5f60208284031215612602576126016123f6565b5b5f61260f848285016125d9565b91505092915050565b5f6020828403121561262d5761262c6123f6565b5b5f61263a84828501612410565b91505092915050565b5f8060408385031215612659576126586123f6565b5b5f61266685828601612410565b925050602061267785828601612410565b9150509250929050565b5f60208284031215612696576126956123f6565b5b5f6126a384828501612443565b91505092915050565b7f43616c6c6572206973206e6f74207468652066656541646472206164647265735f8201527f732e000000000000000000000000000000000000000000000000000000000000602082015250565b5f612706602283612356565b9150612711826126ac565b604082019050919050565b5f6020820190508181035f830152612733816126fa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061277e57607f821691505b6020821081036127915761279061273a565b5b50919050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f6127f1602e83612356565b91506127fc82612797565b604082019050919050565b5f6020820190508181035f83015261281e816127e5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61285c82612424565b915061286783612424565b925082820190508082111561287f5761287e612825565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506128ed816123fa565b92915050565b5f60208284031215612908576129076123f6565b5b5f612915848285016128df565b91505092915050565b5f819050919050565b5f819050919050565b5f61294a6129456129408461291e565b612927565b612424565b9050919050565b61295a81612930565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61299281612313565b82525050565b5f6129a38383612989565b60208301905092915050565b5f602082019050919050565b5f6129c582612960565b6129cf818561296a565b93506129da8361297a565b805f5b83811015612a0a5781516129f18882612998565b97506129fc836129af565b9250506001810190506129dd565b5085935050505092915050565b5f60a082019050612a2a5f830188612506565b612a376020830187612951565b8181036040830152612a4981866129bb565b9050612a586060830185612324565b612a656080830184612506565b9695505050505050565b5f81519050612a7d8161242d565b92915050565b5f60208284031215612a9857612a976123f6565b5b5f612aa584828501612a6f565b91505092915050565b5f604082019050612ac15f830185612324565b612ace6020830184612506565b9392505050565b612ade81612495565b8114612ae8575f80fd5b50565b5f81519050612af981612ad5565b92915050565b5f60208284031215612b1457612b136123f6565b5b5f612b2184828501612aeb565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b5e602083612356565b9150612b6982612b2a565b602082019050919050565b5f6020820190508181035f830152612b8b81612b52565b9050919050565b5f604082019050612ba55f830185612324565b612bb26020830184612324565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612c13602583612356565b9150612c1e82612bb9565b604082019050919050565b5f6020820190508181035f830152612c4081612c07565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612ca1602683612356565b9150612cac82612c47565b604082019050919050565b5f6020820190508181035f830152612cce81612c95565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f612d2f603883612356565b9150612d3a82612cd5565b604082019050919050565b5f6020820190508181035f830152612d5c81612d23565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612dbd603583612356565b9150612dc882612d63565b604082019050919050565b5f6020820190508181035f830152612dea81612db1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612e4b602483612356565b9150612e5682612df1565b604082019050919050565b5f6020820190508181035f830152612e7881612e3f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612ed9602283612356565b9150612ee482612e7f565b604082019050919050565b5f6020820190508181035f830152612f0681612ecd565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612f41601d83612356565b9150612f4c82612f0d565b602082019050919050565b5f6020820190508181035f830152612f6e81612f35565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f612fcf602b83612356565b9150612fda82612f75565b604082019050919050565b5f6020820190508181035f830152612ffc81612fc3565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f61305d602983612356565b915061306882613003565b604082019050919050565b5f6020820190508181035f83015261308a81613051565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f6130eb602a83612356565b91506130f682613091565b604082019050919050565b5f6020820190508181035f830152613118816130df565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f613153601f83612356565b915061315e8261311f565b602082019050919050565b5f6020820190508181035f83015261318081613147565b9050919050565b7f537761702076616c75652065786365656473206d6178207377617020616d6f755f8201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c60208201527f75652e0000000000000000000000000000000000000000000000000000000000604082015250565b5f613207604383612356565b915061321282613187565b606082019050919050565b5f6020820190508181035f830152613234816131fb565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f6132bb604483612356565b91506132c68261323b565b606082019050919050565b5f6020820190508181035f8301526132e8816132af565b9050919050565b5f6132f982612424565b915061330483612424565b925082820390508181111561331c5761331b612825565b5b92915050565b5f61332c82612424565b915061333783612424565b925082820261334581612424565b9150828204841483151761335c5761335b612825565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61339a82612424565b91506133a583612424565b9250826133b5576133b4613363565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61341a602583612356565b9150613425826133c0565b604082019050919050565b5f6020820190508181035f8301526134478161340e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a8602383612356565b91506134b38261344e565b604082019050919050565b5f6020820190508181035f8301526134d58161349c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613536602683612356565b9150613541826134dc565b604082019050919050565b5f6020820190508181035f8301526135638161352a565b905091905056fea264697066735822122094cb781f7a43ee5c694f407a2d030620862380036c8a172cc68695c9e332037b64736f6c63430008160033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.