ETH Price: $3,354.98 (-2.88%)
Gas: 2 Gwei

Contract

0xcedB5eca5fd60e54DFa108Fd197d1A5748A2b2e0
 

Overview

ETH Balance

1 wei

Eth Value

Less Than $0.01 (@ $3,354.98/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve178347702023-08-03 13:28:59334 days ago1691069339IN
0xcedB5eca...748A2b2e0
0 ETH0.0007366130.28833633
Transfer177982602023-07-29 11:01:23339 days ago1690628483IN
0xcedB5eca...748A2b2e0
0 ETH0.0046980119
Transfer177982532023-07-29 10:59:47339 days ago1690628387IN
0xcedB5eca...748A2b2e0
0 ETH0.0046980119
Transfer177982422023-07-29 10:57:35339 days ago1690628255IN
0xcedB5eca...748A2b2e0
0 ETH0.0047157716
Transfer177982372023-07-29 10:56:35339 days ago1690628195IN
0xcedB5eca...748A2b2e0
0 ETH0.0039562216
Transfer177982102023-07-29 10:50:59339 days ago1690627859IN
0xcedB5eca...748A2b2e0
0 ETH0.0039562216
Transfer177982042023-07-29 10:49:35339 days ago1690627775IN
0xcedB5eca...748A2b2e0
0 ETH0.0039564116
Transfer177981992023-07-29 10:48:35339 days ago1690627715IN
0xcedB5eca...748A2b2e0
0 ETH0.0039564116
Transfer177981942023-07-29 10:47:35339 days ago1690627655IN
0xcedB5eca...748A2b2e0
0 ETH0.0039564116
Transfer177981862023-07-29 10:45:59339 days ago1690627559IN
0xcedB5eca...748A2b2e0
0 ETH0.0042034817
Transfer177981812023-07-29 10:44:59339 days ago1690627499IN
0xcedB5eca...748A2b2e0
0 ETH0.0042036917
Transfer177981752023-07-29 10:43:47339 days ago1690627427IN
0xcedB5eca...748A2b2e0
0 ETH0.0042036917
Transfer177981702023-07-29 10:42:47339 days ago1690627367IN
0xcedB5eca...748A2b2e0
0 ETH0.0042034817
Transfer177981652023-07-29 10:41:47339 days ago1690627307IN
0xcedB5eca...748A2b2e0
0 ETH0.0042036917
Transfer177981592023-07-29 10:40:35339 days ago1690627235IN
0xcedB5eca...748A2b2e0
0 ETH0.0042036917
Transfer177981552023-07-29 10:39:47339 days ago1690627187IN
0xcedB5eca...748A2b2e0
0 ETH0.0046982419
Transfer177981472023-07-29 10:38:11339 days ago1690627091IN
0xcedB5eca...748A2b2e0
0 ETH0.0050105117
Transfer177981422023-07-29 10:37:11339 days ago1690627031IN
0xcedB5eca...748A2b2e0
0 ETH0.0042036917
Transfer177981372023-07-29 10:36:11339 days ago1690626971IN
0xcedB5eca...748A2b2e0
0 ETH0.0042036917
Transfer177981322023-07-29 10:35:11339 days ago1690626911IN
0xcedB5eca...748A2b2e0
0 ETH0.0042036917
Transfer177981262023-07-29 10:33:59339 days ago1690626839IN
0xcedB5eca...748A2b2e0
0 ETH0.0042036917
Transfer177980672023-07-29 10:22:11339 days ago1690626131IN
0xcedB5eca...748A2b2e0
0 ETH0.0044509618
Transfer177980412023-07-29 10:16:59339 days ago1690625819IN
0xcedB5eca...748A2b2e0
0 ETH0.0044509618
Transfer177764192023-07-26 9:40:47342 days ago1690364447IN
0xcedB5eca...748A2b2e0
0 ETH0.005010317
Transfer177763632023-07-26 9:29:35342 days ago1690363775IN
0xcedB5eca...748A2b2e0
0 ETH0.0042036917
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
177982602023-07-29 11:01:23339 days ago1690628483
0xcedB5eca...748A2b2e0
0.00044492 ETH
177982602023-07-29 11:01:23339 days ago1690628483
0xcedB5eca...748A2b2e0
0.00022246 ETH
177982602023-07-29 11:01:23339 days ago1690628483
0xcedB5eca...748A2b2e0
0.00022246 ETH
177982602023-07-29 11:01:23339 days ago1690628483
0xcedB5eca...748A2b2e0
0.00088984 ETH
177982532023-07-29 10:59:47339 days ago1690628387
0xcedB5eca...748A2b2e0
0.00053843 ETH
177982532023-07-29 10:59:47339 days ago1690628387
0xcedB5eca...748A2b2e0
0.00026921 ETH
177982532023-07-29 10:59:47339 days ago1690628387
0xcedB5eca...748A2b2e0
0.00026921 ETH
177982532023-07-29 10:59:47339 days ago1690628387
0xcedB5eca...748A2b2e0
0.00107686 ETH
177982422023-07-29 10:57:35339 days ago1690628255
0xcedB5eca...748A2b2e0
0.00053843 ETH
177982422023-07-29 10:57:35339 days ago1690628255
0xcedB5eca...748A2b2e0
0.00026921 ETH
177982422023-07-29 10:57:35339 days ago1690628255
0xcedB5eca...748A2b2e0
0.00026921 ETH
177982422023-07-29 10:57:35339 days ago1690628255
0xcedB5eca...748A2b2e0
0.00107686 ETH
177982372023-07-29 10:56:35339 days ago1690628195
0xcedB5eca...748A2b2e0
0.00059511 ETH
177982372023-07-29 10:56:35339 days ago1690628195
0xcedB5eca...748A2b2e0
0.00029755 ETH
177982372023-07-29 10:56:35339 days ago1690628195
0xcedB5eca...748A2b2e0
0.00029755 ETH
177982372023-07-29 10:56:35339 days ago1690628195
0xcedB5eca...748A2b2e0
0.00119023 ETH
177982102023-07-29 10:50:59339 days ago1690627859
0xcedB5eca...748A2b2e0
0.0006375 ETH
177982102023-07-29 10:50:59339 days ago1690627859
0xcedB5eca...748A2b2e0
0.00031875 ETH
177982102023-07-29 10:50:59339 days ago1690627859
0xcedB5eca...748A2b2e0
0.00031875 ETH
177982102023-07-29 10:50:59339 days ago1690627859
0xcedB5eca...748A2b2e0
0.001275 ETH
177982042023-07-29 10:49:35339 days ago1690627775
0xcedB5eca...748A2b2e0
0.00067192 ETH
177982042023-07-29 10:49:35339 days ago1690627775
0xcedB5eca...748A2b2e0
0.00033596 ETH
177982042023-07-29 10:49:35339 days ago1690627775
0xcedB5eca...748A2b2e0
0.00033596 ETH
177982042023-07-29 10:49:35339 days ago1690627775
0xcedB5eca...748A2b2e0
0.00134384 ETH
177981992023-07-29 10:48:35339 days ago1690627715
0xcedB5eca...748A2b2e0
0.00070116 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MEGUSTA

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-20
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

interface IUniswapV2Router {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

contract MEGUSTA is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "MEGUSTA";
    string private constant _symbol = "MEGUSTA";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private isTxLimitExept;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 8;
    uint256 private _redisFeeOnSell = 0; 
    uint256 private _taxFeeOnSell = 8;
    uint256 public maxTxAmount = (_tTotal * 1) / 100; //1%
    uint256 public maxWallet = (_tTotal * 1) / 100; //1%

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; 

    address payable private _devAddress = payable(0x1371C7fea6dF5164B09dad4336770C91EA636539);
    address payable private _marketingAddress = payable(0xB2629c53306c7b67B71b97bCFCc4f1B4891F7529);
    address payable private _megustaPoolAddress = payable(0xFCeAc595864469e19c7CC8F89384d903db5D02a5);


    IUniswapV2Router public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTokenAmount = (_tTotal * 1) / 1000; // 0.1%
    uint256 public _swapTokensAtAmount = (_tTotal * 1) / 100000;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_devAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[_megustaPoolAddress] = true;
        isTxLimitExept[owner()] = true;
        isTxLimitExept[address(this)] = true;
        isTxLimitExept[_megustaPoolAddress] = true;
        isTxLimitExept[address(uniswapV2Router)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }


    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function setMaxWallet(uint256 amount) external onlyOwner {
        require(amount >= totalSupply() / 50); //2%
        maxWallet = amount;
    }

    function setTxLimit(uint256 amount) external onlyOwner {
        require(amount >= totalSupply() / 50); //2%
        maxTxAmount = amount;
    }

    function checkWalletLimit(address recipient, uint256 amount) internal view {
        address DEAD = 0x000000000000000000000000000000000000dEaD;
        if (
            recipient != owner() &&
            recipient != address(this) &&
            recipient != address(DEAD) &&
            recipient != uniswapV2Pair &&
            recipient != _megustaPoolAddress &&
            recipient != address(uniswapV2Router)
        ) {
            uint256 heldTokens = balanceOf(recipient);
            require(
                (heldTokens + amount) <= maxWallet,
                "Total Holding is currently limited, you can not buy that much."
            );
        }
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(
            amount <= maxTxAmount || isTxLimitExept[sender],
            "TX Limit Exceeded"
        );
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            require(!bots[from] && !bots[to], "TOKEN: Bot!");

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTokenAmount)
            {
                contractTokenBalance = _maxTokenAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        checkWalletLimit(to, amount);
        checkTxLimit(from, amount);

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                //Trade start check
                if (!tradingOpen) {
                    require(from == owner(), "TOKEN: Trading disabled");
                }
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                if (!tradingOpen) {
                    require(from == owner(), "TOKEN: Trading disabled");
                }
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function sendETHToFee(uint256 amount) private {
        uint256 devAddressAmount = (amount * 25) / 100; // 25%
        uint256 marketingAddressAmount = (amount * 25) / 100; // 25%
        uint256 megustaPoolAddressAmount = (amount * 50) / 100; // 50%

        _devAddress.transfer(devAddressAmount);
        _marketingAddress.transfer(marketingAddressAmount);
        _megustaPoolAddress.transfer(megustaPoolAddressAmount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }


    function addLiquidity() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router _uniswapV2Router = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function manualswap() external {
        require(_msgSender() == _devAddress || _msgSender() == _marketingAddress || _msgSender() == _megustaPoolAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _devAddress || _msgSender() == _marketingAddress || _msgSender() == _megustaPoolAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBot(address bot) public onlyOwner {
        bots[bot] = true;
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy + taxFeeOnBuy <= 15, "Buy tax cannot be greater than 15%");
        require(redisFeeOnSell + taxFeeOnSell <= 15, "Sell tax cannot be greater than 15%");
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTokenAmount(uint256 maxTokenAmount) public onlyOwner {
        _maxTokenAmount = maxTokenAmount;
    }

    function updateDevAddress(address payable newDevAddress) public onlyOwner{
        _devAddress = newDevAddress;
    }

    function updateMarketingAddress(address payable newMarketingAddress) public onlyOwner{
        _marketingAddress = newMarketingAddress;
    }

    function updateMegustaPoolAddress(address payable newMegustaPoolAddress) public onlyOwner{
        _megustaPoolAddress = newMegustaPoolAddress;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[],"name":"_maxTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"blockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTokenAmount","type":"uint256"}],"name":"setMaxTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevAddress","type":"address"}],"name":"updateDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingAddress","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMegustaPoolAddress","type":"address"}],"name":"updateMegustaPoolAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000019662386f26fc10000600019620002da565b620000279060001962000307565b60075560006009556008600a556000600b556008600c556064662386f26fc10000600162000056919062000321565b62000062919062000343565b600d5560646200007b662386f26fc10000600162000321565b62000087919062000343565b600e55600b54600f819055600c546010819055601191909155601255601480546001600160a01b0319908116731371c7fea6df5164b09dad4336770c91ea6365391790915560158054821673b2629c53306c7b67b71b97bcfcc4f1b4891f75291790556016805490911673fceac595864469e19c7cc8f89384d903db5d02a51790556018805461ffff60a81b1916600160b01b1790556103e862000134662386f26fc10000600162000321565b62000140919062000343565b601955620186a06200015b662386f26fc10000600162000321565b62000167919062000343565b601a553480156200017757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007543360008181526002602090815260408083209490945581546001600160a01b039081168352600582528483208054600160ff19918216811790925530808652878620805483168417905560145484168652878620805483168417905560155484168652878620805483168417905560168054851687528887208054841685179055865485168752600686528887208054841685179055908652878620805483168417905554831685528685208054821683179055601754909216845285842080549092161790559251662386f26fc100008152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200035a565b634e487b7160e01b600052601260045260246000fd5b600082620002ec57620002ec620002c4565b500690565b634e487b7160e01b600052601160045260246000fd5b6000828210156200031c576200031c620002f1565b500390565b60008160001904831182151516156200033e576200033e620002f1565b500290565b600082620003555762000355620002c4565b500490565b612577806200036a6000396000f3fe6080604052600436106102085760003560e01c8063793da93111610118578063b839a80e116100a0578063dd62ed3e1161006f578063dd62ed3e146105d0578063e70ef8a414610616578063e8078d9414610636578063f2fde38b1461064b578063f8b45b051461066b57600080fd5b8063b839a80e1461054b578063bfd792841461056b578063c3c8cd801461059b578063c492f046146105b057600080fd5b80638f70ccf7116100e75780638f70ccf7146104cb57806395d89b411461021457806398a5c315146104eb578063a2a957bb1461050b578063a9059cbb1461052b57600080fd5b8063793da9311461045757806385033762146104775780638c0b5e22146104975780638da5cb5b146104ad57600080fd5b8063313ce5671161019b5780636b9990531161016a5780636b999053146103cd5780636d8aa8f8146103ed5780636fc3eaec1461040d57806370a0823114610422578063715018a61461044257600080fd5b8063313ce5671461035157806349bd5a5e1461036d5780635c85974f1461038d5780635d0044ca146103ad57600080fd5b806318160ddd116101d757806318160ddd146102df5780632369bf83146102f957806323b872dd1461031b5780632fd689e31461033b57600080fd5b806306fdde0314610214578063095ea7b3146102535780630e9756de146102835780631694505e146102a757600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5060408051808201825260078152664d45475553544160c81b6020820152905161024a919061212b565b60405180910390f35b34801561025f57600080fd5b5061027361026e366004612195565b610681565b604051901515815260200161024a565b34801561028f57600080fd5b5061029960195481565b60405190815260200161024a565b3480156102b357600080fd5b506017546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b3480156102eb57600080fd5b50662386f26fc10000610299565b34801561030557600080fd5b506103196103143660046121c1565b610698565b005b34801561032757600080fd5b506102736103363660046121de565b6106ed565b34801561034757600080fd5b50610299601a5481565b34801561035d57600080fd5b506040516009815260200161024a565b34801561037957600080fd5b506018546102c7906001600160a01b031681565b34801561039957600080fd5b506103196103a836600461221f565b610756565b3480156103b957600080fd5b506103196103c836600461221f565b6107a3565b3480156103d957600080fd5b506103196103e83660046121c1565b6107f0565b3480156103f957600080fd5b50610319610408366004612246565b61083b565b34801561041957600080fd5b50610319610883565b34801561042e57600080fd5b5061029961043d3660046121c1565b6108ec565b34801561044e57600080fd5b5061031961090e565b34801561046357600080fd5b506103196104723660046121c1565b610982565b34801561048357600080fd5b506103196104923660046121c1565b6109ce565b3480156104a357600080fd5b50610299600d5481565b3480156104b957600080fd5b506000546001600160a01b03166102c7565b3480156104d757600080fd5b506103196104e6366004612246565b610a1a565b3480156104f757600080fd5b5061031961050636600461221f565b610a62565b34801561051757600080fd5b50610319610526366004612263565b610a91565b34801561053757600080fd5b50610273610546366004612195565b610b9a565b34801561055757600080fd5b5061031961056636600461221f565b610ba7565b34801561057757600080fd5b506102736105863660046121c1565b60136020526000908152604090205460ff1681565b3480156105a757600080fd5b50610319610bd6565b3480156105bc57600080fd5b506103196105cb366004612295565b610c48565b3480156105dc57600080fd5b506102996105eb36600461231b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561062257600080fd5b506103196106313660046121c1565b610ce9565b34801561064257600080fd5b50610319610d37565b34801561065757600080fd5b506103196106663660046121c1565b6110d8565b34801561067757600080fd5b50610299600e5481565b600061068e3384846111c2565b5060015b92915050565b6000546001600160a01b031633146106cb5760405162461bcd60e51b81526004016106c290612354565b60405180910390fd5b601580546001600160a01b0319166001600160a01b0392909216919091179055565b60006106fa8484846112e6565b61074c84336107478560405180606001604052806028815260200161251a602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061177c565b6111c2565b5060019392505050565b6000546001600160a01b031633146107805760405162461bcd60e51b81526004016106c290612354565b6107926032662386f26fc1000061239f565b81101561079e57600080fd5b600d55565b6000546001600160a01b031633146107cd5760405162461bcd60e51b81526004016106c290612354565b6107df6032662386f26fc1000061239f565b8110156107eb57600080fd5b600e55565b6000546001600160a01b0316331461081a5760405162461bcd60e51b81526004016106c290612354565b6001600160a01b03166000908152601360205260409020805460ff19169055565b6000546001600160a01b031633146108655760405162461bcd60e51b81526004016106c290612354565b60188054911515600160b01b0260ff60b01b19909216919091179055565b6014546001600160a01b0316336001600160a01b031614806108b857506015546001600160a01b0316336001600160a01b0316145b806108d657506016546001600160a01b0316336001600160a01b0316145b6108df57600080fd5b476108e9816117b6565b50565b6001600160a01b038116600090815260026020526040812054610692906118bd565b6000546001600160a01b031633146109385760405162461bcd60e51b81526004016106c290612354565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109ac5760405162461bcd60e51b81526004016106c290612354565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109f85760405162461bcd60e51b81526004016106c290612354565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610a445760405162461bcd60e51b81526004016106c290612354565b60188054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610a8c5760405162461bcd60e51b81526004016106c290612354565b601a55565b6000546001600160a01b03163314610abb5760405162461bcd60e51b81526004016106c290612354565b600f610ac783866123c1565b1115610b205760405162461bcd60e51b815260206004820152602260248201527f427579207461782063616e6e6f742062652067726561746572207468616e2031604482015261352560f01b60648201526084016106c2565b600f610b2c82856123c1565b1115610b865760405162461bcd60e51b815260206004820152602360248201527f53656c6c207461782063616e6e6f742062652067726561746572207468616e2060448201526231352560e81b60648201526084016106c2565b600993909355600b91909155600a55600c55565b600061068e3384846112e6565b6000546001600160a01b03163314610bd15760405162461bcd60e51b81526004016106c290612354565b601955565b6014546001600160a01b0316336001600160a01b03161480610c0b57506015546001600160a01b0316336001600160a01b0316145b80610c2957506016546001600160a01b0316336001600160a01b0316145b610c3257600080fd5b6000610c3d306108ec565b90506108e981611941565b6000546001600160a01b03163314610c725760405162461bcd60e51b81526004016106c290612354565b60005b82811015610ce3578160056000868685818110610c9457610c946123d9565b9050602002016020810190610ca991906121c1565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610cdb816123ef565b915050610c75565b50505050565b6000546001600160a01b03163314610d135760405162461bcd60e51b81526004016106c290612354565b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b6000546001600160a01b03163314610d615760405162461bcd60e51b81526004016106c290612354565b601854600160a01b900460ff1615610dbb5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106c2565b601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610df63082662386f26fc100006111c2565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e2f57600080fd5b505afa158015610e43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e67919061240a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610eaf57600080fd5b505afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee7919061240a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610f2f57600080fd5b505af1158015610f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f67919061240a565b601880546001600160a01b0319166001600160a01b039283161790556017541663f305d7194730610f97816108ec565b600080610fac6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561100f57600080fd5b505af1158015611023573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110489190612427565b505060185460175460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b15801561109c57600080fd5b505af11580156110b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d49190612455565b5050565b6000546001600160a01b031633146111025760405162461bcd60e51b81526004016106c290612354565b6001600160a01b0381166111675760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106c2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166112245760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106c2565b6001600160a01b0382166112855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106c2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661134a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c2565b6001600160a01b0382166113ac5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c2565b6000811161140e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106c2565b6000546001600160a01b0384811691161480159061143a57506000546001600160a01b03838116911614155b15611592576001600160a01b03831660009081526013602052604090205460ff1615801561148157506001600160a01b03821660009081526013602052604090205460ff16155b6114bb5760405162461bcd60e51b815260206004820152600b60248201526a544f4b454e3a20426f742160a81b60448201526064016106c2565b60006114c6306108ec565b601a546019549192508210159082106114df5760195491505b8080156114f65750601854600160a81b900460ff16155b801561151057506018546001600160a01b03868116911614155b80156115255750601854600160b01b900460ff165b801561154a57506001600160a01b03851660009081526005602052604090205460ff16155b801561156f57506001600160a01b03841660009081526005602052604090205460ff16155b1561158f5761157d82611941565b47801561158d5761158d476117b6565b505b50505b600161159e8383611aca565b6115a88483611c0e565b6001600160a01b03841660009081526005602052604090205460ff16806115e757506001600160a01b03831660009081526005602052604090205460ff165b8061161957506018546001600160a01b0385811691161480159061161957506018546001600160a01b03848116911614155b1561162657506000611770565b6018546001600160a01b03858116911614801561165157506017546001600160a01b03848116911614155b156116cb57601854600160a01b900460ff166116be576000546001600160a01b038581169116146116be5760405162461bcd60e51b81526020600482015260176024820152761513d2d1538e88151c98591a5b99c8191a5cd8589b1959604a1b60448201526064016106c2565b600954600f55600a546010555b6018546001600160a01b0384811691161480156116f657506017546001600160a01b03858116911614155b1561177057601854600160a01b900460ff16611763576000546001600160a01b038581169116146117635760405162461bcd60e51b81526020600482015260176024820152761513d2d1538e88151c98591a5b99c8191a5cd8589b1959604a1b60448201526064016106c2565b600b54600f55600c546010555b610ce384848484611c77565b600081848411156117a05760405162461bcd60e51b81526004016106c2919061212b565b5060006117ad8486612472565b95945050505050565b600060646117c5836019612489565b6117cf919061239f565b9050600060646117e0846019612489565b6117ea919061239f565b9050600060646117fb856032612489565b611805919061239f565b6014546040519192506001600160a01b03169084156108fc029085906000818181858888f19350505050158015611840573d6000803e3d6000fd5b506015546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561187b573d6000803e3d6000fd5b506016546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156118b6573d6000803e3d6000fd5b5050505050565b60006007548211156119245760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106c2565b600061192e611ca5565b905061193a8382611cc8565b9392505050565b6018805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611989576119896123d9565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156119dd57600080fd5b505afa1580156119f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a15919061240a565b81600181518110611a2857611a286123d9565b6001600160a01b039283166020918202929092010152601754611a4e91309116846111c2565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a879085906000908690309042906004016124a8565b600060405180830381600087803b158015611aa157600080fd5b505af1158015611ab5573d6000803e3d6000fd5b50506018805460ff60a81b1916905550505050565b61dead611adf6000546001600160a01b031690565b6001600160a01b0316836001600160a01b031614158015611b0957506001600160a01b0383163014155b8015611b275750806001600160a01b0316836001600160a01b031614155b8015611b4157506018546001600160a01b03848116911614155b8015611b5b57506016546001600160a01b03848116911614155b8015611b7557506017546001600160a01b03848116911614155b15611c09576000611b85846108ec565b600e54909150611b9584836123c1565b1115610ce35760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016106c2565b505050565b600d5481111580611c3757506001600160a01b03821660009081526006602052604090205460ff165b6110d45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016106c2565b80611c8457611c84611d0a565b611c8f848484611d38565b80610ce357610ce3601154600f55601254601055565b6000806000611cb2611e2f565b9092509050611cc18282611cc8565b9250505090565b600061193a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e6d565b600f54158015611d1a5750601054155b15611d2157565b600f80546011556010805460125560009182905555565b600080600080600080611d4a87611e9b565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611d7c9087611ef8565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611dab9086611f3a565b6001600160a01b038916600090815260026020526040902055611dcd81611f99565b611dd78483611fe3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e1c91815260200190565b60405180910390a3505050505050505050565b6007546000908190662386f26fc10000611e498282611cc8565b821015611e6457505060075492662386f26fc1000092509050565b90939092509050565b60008183611e8e5760405162461bcd60e51b81526004016106c2919061212b565b5060006117ad848661239f565b6000806000806000806000806000611eb88a600f54601054612007565b9250925092506000611ec8611ca5565b90506000806000611edb8e87878761205c565b919e509c509a509598509396509194505050505091939550919395565b600061193a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061177c565b600080611f4783856123c1565b90508381101561193a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106c2565b6000611fa3611ca5565b90506000611fb183836120ac565b30600090815260026020526040902054909150611fce9082611f3a565b30600090815260026020526040902055505050565b600754611ff09083611ef8565b6007556008546120009082611f3a565b6008555050565b6000808080612021606461201b89896120ac565b90611cc8565b90506000612034606461201b8a896120ac565b9050600061204c826120468b86611ef8565b90611ef8565b9992985090965090945050505050565b600080808061206b88866120ac565b9050600061207988876120ac565b9050600061208788886120ac565b90506000612099826120468686611ef8565b939b939a50919850919650505050505050565b6000826120bb57506000610692565b60006120c78385612489565b9050826120d4858361239f565b1461193a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106c2565b600060208083528351808285015260005b818110156121585785810183015185820160400152820161213c565b8181111561216a576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146108e957600080fd5b600080604083850312156121a857600080fd5b82356121b381612180565b946020939093013593505050565b6000602082840312156121d357600080fd5b813561193a81612180565b6000806000606084860312156121f357600080fd5b83356121fe81612180565b9250602084013561220e81612180565b929592945050506040919091013590565b60006020828403121561223157600080fd5b5035919050565b80151581146108e957600080fd5b60006020828403121561225857600080fd5b813561193a81612238565b6000806000806080858703121561227957600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000604084860312156122aa57600080fd5b833567ffffffffffffffff808211156122c257600080fd5b818601915086601f8301126122d657600080fd5b8135818111156122e557600080fd5b8760208260051b85010111156122fa57600080fd5b6020928301955093505084013561231081612238565b809150509250925092565b6000806040838503121561232e57600080fd5b823561233981612180565b9150602083013561234981612180565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826123bc57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156123d4576123d4612389565b500190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561240357612403612389565b5060010190565b60006020828403121561241c57600080fd5b815161193a81612180565b60008060006060848603121561243c57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561246757600080fd5b815161193a81612238565b60008282101561248457612484612389565b500390565b60008160001904831182151516156124a3576124a3612389565b500290565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124f85784516001600160a01b0316835293830193918301916001016124d3565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bac07162a2bc817589c50a9fc97fe1dbfb451173382a5ec9e4a3a47302fd914764736f6c63430008090033

Deployed Bytecode

0x6080604052600436106102085760003560e01c8063793da93111610118578063b839a80e116100a0578063dd62ed3e1161006f578063dd62ed3e146105d0578063e70ef8a414610616578063e8078d9414610636578063f2fde38b1461064b578063f8b45b051461066b57600080fd5b8063b839a80e1461054b578063bfd792841461056b578063c3c8cd801461059b578063c492f046146105b057600080fd5b80638f70ccf7116100e75780638f70ccf7146104cb57806395d89b411461021457806398a5c315146104eb578063a2a957bb1461050b578063a9059cbb1461052b57600080fd5b8063793da9311461045757806385033762146104775780638c0b5e22146104975780638da5cb5b146104ad57600080fd5b8063313ce5671161019b5780636b9990531161016a5780636b999053146103cd5780636d8aa8f8146103ed5780636fc3eaec1461040d57806370a0823114610422578063715018a61461044257600080fd5b8063313ce5671461035157806349bd5a5e1461036d5780635c85974f1461038d5780635d0044ca146103ad57600080fd5b806318160ddd116101d757806318160ddd146102df5780632369bf83146102f957806323b872dd1461031b5780632fd689e31461033b57600080fd5b806306fdde0314610214578063095ea7b3146102535780630e9756de146102835780631694505e146102a757600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5060408051808201825260078152664d45475553544160c81b6020820152905161024a919061212b565b60405180910390f35b34801561025f57600080fd5b5061027361026e366004612195565b610681565b604051901515815260200161024a565b34801561028f57600080fd5b5061029960195481565b60405190815260200161024a565b3480156102b357600080fd5b506017546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b3480156102eb57600080fd5b50662386f26fc10000610299565b34801561030557600080fd5b506103196103143660046121c1565b610698565b005b34801561032757600080fd5b506102736103363660046121de565b6106ed565b34801561034757600080fd5b50610299601a5481565b34801561035d57600080fd5b506040516009815260200161024a565b34801561037957600080fd5b506018546102c7906001600160a01b031681565b34801561039957600080fd5b506103196103a836600461221f565b610756565b3480156103b957600080fd5b506103196103c836600461221f565b6107a3565b3480156103d957600080fd5b506103196103e83660046121c1565b6107f0565b3480156103f957600080fd5b50610319610408366004612246565b61083b565b34801561041957600080fd5b50610319610883565b34801561042e57600080fd5b5061029961043d3660046121c1565b6108ec565b34801561044e57600080fd5b5061031961090e565b34801561046357600080fd5b506103196104723660046121c1565b610982565b34801561048357600080fd5b506103196104923660046121c1565b6109ce565b3480156104a357600080fd5b50610299600d5481565b3480156104b957600080fd5b506000546001600160a01b03166102c7565b3480156104d757600080fd5b506103196104e6366004612246565b610a1a565b3480156104f757600080fd5b5061031961050636600461221f565b610a62565b34801561051757600080fd5b50610319610526366004612263565b610a91565b34801561053757600080fd5b50610273610546366004612195565b610b9a565b34801561055757600080fd5b5061031961056636600461221f565b610ba7565b34801561057757600080fd5b506102736105863660046121c1565b60136020526000908152604090205460ff1681565b3480156105a757600080fd5b50610319610bd6565b3480156105bc57600080fd5b506103196105cb366004612295565b610c48565b3480156105dc57600080fd5b506102996105eb36600461231b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561062257600080fd5b506103196106313660046121c1565b610ce9565b34801561064257600080fd5b50610319610d37565b34801561065757600080fd5b506103196106663660046121c1565b6110d8565b34801561067757600080fd5b50610299600e5481565b600061068e3384846111c2565b5060015b92915050565b6000546001600160a01b031633146106cb5760405162461bcd60e51b81526004016106c290612354565b60405180910390fd5b601580546001600160a01b0319166001600160a01b0392909216919091179055565b60006106fa8484846112e6565b61074c84336107478560405180606001604052806028815260200161251a602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061177c565b6111c2565b5060019392505050565b6000546001600160a01b031633146107805760405162461bcd60e51b81526004016106c290612354565b6107926032662386f26fc1000061239f565b81101561079e57600080fd5b600d55565b6000546001600160a01b031633146107cd5760405162461bcd60e51b81526004016106c290612354565b6107df6032662386f26fc1000061239f565b8110156107eb57600080fd5b600e55565b6000546001600160a01b0316331461081a5760405162461bcd60e51b81526004016106c290612354565b6001600160a01b03166000908152601360205260409020805460ff19169055565b6000546001600160a01b031633146108655760405162461bcd60e51b81526004016106c290612354565b60188054911515600160b01b0260ff60b01b19909216919091179055565b6014546001600160a01b0316336001600160a01b031614806108b857506015546001600160a01b0316336001600160a01b0316145b806108d657506016546001600160a01b0316336001600160a01b0316145b6108df57600080fd5b476108e9816117b6565b50565b6001600160a01b038116600090815260026020526040812054610692906118bd565b6000546001600160a01b031633146109385760405162461bcd60e51b81526004016106c290612354565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109ac5760405162461bcd60e51b81526004016106c290612354565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109f85760405162461bcd60e51b81526004016106c290612354565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610a445760405162461bcd60e51b81526004016106c290612354565b60188054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610a8c5760405162461bcd60e51b81526004016106c290612354565b601a55565b6000546001600160a01b03163314610abb5760405162461bcd60e51b81526004016106c290612354565b600f610ac783866123c1565b1115610b205760405162461bcd60e51b815260206004820152602260248201527f427579207461782063616e6e6f742062652067726561746572207468616e2031604482015261352560f01b60648201526084016106c2565b600f610b2c82856123c1565b1115610b865760405162461bcd60e51b815260206004820152602360248201527f53656c6c207461782063616e6e6f742062652067726561746572207468616e2060448201526231352560e81b60648201526084016106c2565b600993909355600b91909155600a55600c55565b600061068e3384846112e6565b6000546001600160a01b03163314610bd15760405162461bcd60e51b81526004016106c290612354565b601955565b6014546001600160a01b0316336001600160a01b03161480610c0b57506015546001600160a01b0316336001600160a01b0316145b80610c2957506016546001600160a01b0316336001600160a01b0316145b610c3257600080fd5b6000610c3d306108ec565b90506108e981611941565b6000546001600160a01b03163314610c725760405162461bcd60e51b81526004016106c290612354565b60005b82811015610ce3578160056000868685818110610c9457610c946123d9565b9050602002016020810190610ca991906121c1565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610cdb816123ef565b915050610c75565b50505050565b6000546001600160a01b03163314610d135760405162461bcd60e51b81526004016106c290612354565b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b6000546001600160a01b03163314610d615760405162461bcd60e51b81526004016106c290612354565b601854600160a01b900460ff1615610dbb5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106c2565b601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610df63082662386f26fc100006111c2565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e2f57600080fd5b505afa158015610e43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e67919061240a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610eaf57600080fd5b505afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee7919061240a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610f2f57600080fd5b505af1158015610f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f67919061240a565b601880546001600160a01b0319166001600160a01b039283161790556017541663f305d7194730610f97816108ec565b600080610fac6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561100f57600080fd5b505af1158015611023573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110489190612427565b505060185460175460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b15801561109c57600080fd5b505af11580156110b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d49190612455565b5050565b6000546001600160a01b031633146111025760405162461bcd60e51b81526004016106c290612354565b6001600160a01b0381166111675760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106c2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166112245760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106c2565b6001600160a01b0382166112855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106c2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661134a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c2565b6001600160a01b0382166113ac5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c2565b6000811161140e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106c2565b6000546001600160a01b0384811691161480159061143a57506000546001600160a01b03838116911614155b15611592576001600160a01b03831660009081526013602052604090205460ff1615801561148157506001600160a01b03821660009081526013602052604090205460ff16155b6114bb5760405162461bcd60e51b815260206004820152600b60248201526a544f4b454e3a20426f742160a81b60448201526064016106c2565b60006114c6306108ec565b601a546019549192508210159082106114df5760195491505b8080156114f65750601854600160a81b900460ff16155b801561151057506018546001600160a01b03868116911614155b80156115255750601854600160b01b900460ff165b801561154a57506001600160a01b03851660009081526005602052604090205460ff16155b801561156f57506001600160a01b03841660009081526005602052604090205460ff16155b1561158f5761157d82611941565b47801561158d5761158d476117b6565b505b50505b600161159e8383611aca565b6115a88483611c0e565b6001600160a01b03841660009081526005602052604090205460ff16806115e757506001600160a01b03831660009081526005602052604090205460ff165b8061161957506018546001600160a01b0385811691161480159061161957506018546001600160a01b03848116911614155b1561162657506000611770565b6018546001600160a01b03858116911614801561165157506017546001600160a01b03848116911614155b156116cb57601854600160a01b900460ff166116be576000546001600160a01b038581169116146116be5760405162461bcd60e51b81526020600482015260176024820152761513d2d1538e88151c98591a5b99c8191a5cd8589b1959604a1b60448201526064016106c2565b600954600f55600a546010555b6018546001600160a01b0384811691161480156116f657506017546001600160a01b03858116911614155b1561177057601854600160a01b900460ff16611763576000546001600160a01b038581169116146117635760405162461bcd60e51b81526020600482015260176024820152761513d2d1538e88151c98591a5b99c8191a5cd8589b1959604a1b60448201526064016106c2565b600b54600f55600c546010555b610ce384848484611c77565b600081848411156117a05760405162461bcd60e51b81526004016106c2919061212b565b5060006117ad8486612472565b95945050505050565b600060646117c5836019612489565b6117cf919061239f565b9050600060646117e0846019612489565b6117ea919061239f565b9050600060646117fb856032612489565b611805919061239f565b6014546040519192506001600160a01b03169084156108fc029085906000818181858888f19350505050158015611840573d6000803e3d6000fd5b506015546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561187b573d6000803e3d6000fd5b506016546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156118b6573d6000803e3d6000fd5b5050505050565b60006007548211156119245760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106c2565b600061192e611ca5565b905061193a8382611cc8565b9392505050565b6018805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611989576119896123d9565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156119dd57600080fd5b505afa1580156119f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a15919061240a565b81600181518110611a2857611a286123d9565b6001600160a01b039283166020918202929092010152601754611a4e91309116846111c2565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a879085906000908690309042906004016124a8565b600060405180830381600087803b158015611aa157600080fd5b505af1158015611ab5573d6000803e3d6000fd5b50506018805460ff60a81b1916905550505050565b61dead611adf6000546001600160a01b031690565b6001600160a01b0316836001600160a01b031614158015611b0957506001600160a01b0383163014155b8015611b275750806001600160a01b0316836001600160a01b031614155b8015611b4157506018546001600160a01b03848116911614155b8015611b5b57506016546001600160a01b03848116911614155b8015611b7557506017546001600160a01b03848116911614155b15611c09576000611b85846108ec565b600e54909150611b9584836123c1565b1115610ce35760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016106c2565b505050565b600d5481111580611c3757506001600160a01b03821660009081526006602052604090205460ff165b6110d45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016106c2565b80611c8457611c84611d0a565b611c8f848484611d38565b80610ce357610ce3601154600f55601254601055565b6000806000611cb2611e2f565b9092509050611cc18282611cc8565b9250505090565b600061193a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e6d565b600f54158015611d1a5750601054155b15611d2157565b600f80546011556010805460125560009182905555565b600080600080600080611d4a87611e9b565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611d7c9087611ef8565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611dab9086611f3a565b6001600160a01b038916600090815260026020526040902055611dcd81611f99565b611dd78483611fe3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e1c91815260200190565b60405180910390a3505050505050505050565b6007546000908190662386f26fc10000611e498282611cc8565b821015611e6457505060075492662386f26fc1000092509050565b90939092509050565b60008183611e8e5760405162461bcd60e51b81526004016106c2919061212b565b5060006117ad848661239f565b6000806000806000806000806000611eb88a600f54601054612007565b9250925092506000611ec8611ca5565b90506000806000611edb8e87878761205c565b919e509c509a509598509396509194505050505091939550919395565b600061193a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061177c565b600080611f4783856123c1565b90508381101561193a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106c2565b6000611fa3611ca5565b90506000611fb183836120ac565b30600090815260026020526040902054909150611fce9082611f3a565b30600090815260026020526040902055505050565b600754611ff09083611ef8565b6007556008546120009082611f3a565b6008555050565b6000808080612021606461201b89896120ac565b90611cc8565b90506000612034606461201b8a896120ac565b9050600061204c826120468b86611ef8565b90611ef8565b9992985090965090945050505050565b600080808061206b88866120ac565b9050600061207988876120ac565b9050600061208788886120ac565b90506000612099826120468686611ef8565b939b939a50919850919650505050505050565b6000826120bb57506000610692565b60006120c78385612489565b9050826120d4858361239f565b1461193a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106c2565b600060208083528351808285015260005b818110156121585785810183015185820160400152820161213c565b8181111561216a576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146108e957600080fd5b600080604083850312156121a857600080fd5b82356121b381612180565b946020939093013593505050565b6000602082840312156121d357600080fd5b813561193a81612180565b6000806000606084860312156121f357600080fd5b83356121fe81612180565b9250602084013561220e81612180565b929592945050506040919091013590565b60006020828403121561223157600080fd5b5035919050565b80151581146108e957600080fd5b60006020828403121561225857600080fd5b813561193a81612238565b6000806000806080858703121561227957600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000604084860312156122aa57600080fd5b833567ffffffffffffffff808211156122c257600080fd5b818601915086601f8301126122d657600080fd5b8135818111156122e557600080fd5b8760208260051b85010111156122fa57600080fd5b6020928301955093505084013561231081612238565b809150509250925092565b6000806040838503121561232e57600080fd5b823561233981612180565b9150602083013561234981612180565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826123bc57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156123d4576123d4612389565b500190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561240357612403612389565b5060010190565b60006020828403121561241c57600080fd5b815161193a81612180565b60008060006060848603121561243c57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561246757600080fd5b815161193a81612238565b60008282101561248457612484612389565b500390565b60008160001904831182151516156124a3576124a3612389565b500290565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124f85784516001600160a01b0316835293830193918301916001016124d3565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bac07162a2bc817589c50a9fc97fe1dbfb451173382a5ec9e4a3a47302fd914764736f6c63430008090033

Deployed Bytecode Sourcemap

4066:16229:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6650:83;;;;;;;;;;-1:-1:-1;6720:5:0;;;;;;;;;;;-1:-1:-1;;;6720:5:0;;;;6650:83;;;;6720:5;6650:83;:::i;:::-;;;;;;;;7575:193;;;;;;;;;;-1:-1:-1;7575:193:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;7575:193:0;1072:187:1;5823:53:0;;;;;;;;;;;;;;;;;;;1410:25:1;;;1398:2;1383:18;5823:53:0;1264:177:1;5635:39:0;;;;;;;;;;-1:-1:-1;5635:39:0;;;;-1:-1:-1;;;;;5635:39:0;;;;;;-1:-1:-1;;;;;1634:32:1;;;1616:51;;1604:2;1589:18;5635:39:0;1446:227:1;6927:95:0;;;;;;;;;;-1:-1:-1;4668:16:0;6927:95;;19746:143;;;;;;;;;;-1:-1:-1;19746:143:0;;;;;:::i;:::-;;:::i;:::-;;7776:446;;;;;;;;;;-1:-1:-1;7776:446:0;;;;;:::i;:::-;;:::i;5891:59::-;;;;;;;;;;;;;;;;6836:83;;;;;;;;;;-1:-1:-1;6836:83:0;;4288:1;2541:36:1;;2529:2;2514:18;6836:83:0;2399:184:1;5681:28:0;;;;;;;;;;-1:-1:-1;5681:28:0;;;;-1:-1:-1;;;;;5681:28:0;;;9447:147;;;;;;;;;;-1:-1:-1;9447:147:0;;;;;:::i;:::-;;:::i;9292:::-;;;;;;;;;;-1:-1:-1;9292:147:0;;;;;:::i;:::-;;:::i;15135:92::-;;;;;;;;;;-1:-1:-1;15135:92:0;;;;;:::i;:::-;;:::i;19352:101::-;;;;;;;;;;-1:-1:-1;19352:101:0;;;;;:::i;:::-;;:::i;14770:266::-;;;;;;;;;;;;;:::i;7030:138::-;;;;;;;;;;-1:-1:-1;7030:138:0;;;;;:::i;:::-;;:::i;2446:148::-;;;;;;;;;;;;;:::i;19897:151::-;;;;;;;;;;-1:-1:-1;19897:151:0;;;;;:::i;:::-;;:::i;19619:119::-;;;;;;;;;;-1:-1:-1;19619:119:0;;;;;:::i;:::-;;:::i;4943:48::-;;;;;;;;;;;;;;;;2232:79;;;;;;;;;;-1:-1:-1;2270:7:0;2297:6;-1:-1:-1;;;;;2297:6:0;2232:79;;13699:101;;;;;;;;;;-1:-1:-1;13699:101:0;;;;;:::i;:::-;;:::i;19161:139::-;;;;;;;;;;-1:-1:-1;19161:139:0;;;;;:::i;:::-;;:::i;18633:476::-;;;;;;;;;;-1:-1:-1;18633:476:0;;;;;:::i;:::-;;:::i;7176:199::-;;;;;;;;;;-1:-1:-1;7176:199:0;;;;;:::i;:::-;;:::i;19492:119::-;;;;;;;;;;-1:-1:-1;19492:119:0;;;;;:::i;:::-;;:::i;5283:36::-;;;;;;;;;;-1:-1:-1;5283:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14495:267;;;;;;;;;;;;;:::i;20056:234::-;;;;;;;;;;-1:-1:-1;20056:234:0;;;;;:::i;:::-;;:::i;7383:184::-;;;;;;;;;;-1:-1:-1;7383:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7532:18:0;;;7500:7;7532:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7383:184;15044:83;;;;;;;;;;-1:-1:-1;15044:83:0;;;;;:::i;:::-;;:::i;13810:677::-;;;;;;;;;;;;;:::i;2602:244::-;;;;;;;;;;-1:-1:-1;2602:244:0;;;;;:::i;:::-;;:::i;5003:46::-;;;;;;;;;;;;;;;;7575:193;7677:4;7699:39;1828:10;7722:7;7731:6;7699:8;:39::i;:::-;-1:-1:-1;7756:4:0;7575:193;;;;;:::o;19746:143::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;;;;;;;;;19842:17:::1;:39:::0;;-1:-1:-1;;;;;;19842:39:0::1;-1:-1:-1::0;;;;;19842:39:0;;;::::1;::::0;;;::::1;::::0;;19746:143::o;7776:446::-;7908:4;7925:36;7935:6;7943:9;7954:6;7925:9;:36::i;:::-;7972:220;7995:6;1828:10;8043:138;8099:6;8043:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8043:19:0;;;;;;:11;:19;;;;;;;;1828:10;8043:33;;;;;;;;;;:37;:138::i;:::-;7972:8;:220::i;:::-;-1:-1:-1;8210:4:0;7776:446;;;;;:::o;9447:147::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;9531:18:::1;9547:2;4668:16:::0;9531:18:::1;:::i;:::-;9521:6;:28;;9513:37;;;::::0;::::1;;9566:11;:20:::0;9447:147::o;9292:::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;9378:18:::1;9394:2;4668:16:::0;9378:18:::1;:::i;:::-;9368:6;:28;;9360:37;;;::::0;::::1;;9413:9;:18:::0;9292:147::o;15135:92::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15199:12:0::1;15214:5;15199:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;15199:20:0::1;::::0;;15135:92::o;19352:101::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;19419:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;19419:26:0::1;-1:-1:-1::0;;;;19419:26:0;;::::1;::::0;;;::::1;::::0;;19352:101::o;14770:266::-;14836:11;;-1:-1:-1;;;;;14836:11:0;1828:10;-1:-1:-1;;;;;14820:27:0;;:64;;;-1:-1:-1;14867:17:0;;-1:-1:-1;;;;;14867:17:0;1828:10;-1:-1:-1;;;;;14851:33:0;;14820:64;:103;;;-1:-1:-1;14904:19:0;;-1:-1:-1;;;;;14904:19:0;1828:10;-1:-1:-1;;;;;14888:35:0;;14820:103;14812:112;;;;;;14964:21;14996:32;14964:21;14996:12;:32::i;:::-;14801:235;14770:266::o;7030:138::-;-1:-1:-1;;;;;7143:16:0;;7096:7;7143:16;;;:7;:16;;;;;;7123:37;;:19;:37::i;2446:148::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;2553:1:::1;2537:6:::0;;2516:40:::1;::::0;-1:-1:-1;;;;;2537:6:0;;::::1;::::0;2516:40:::1;::::0;2553:1;;2516:40:::1;2584:1;2567:19:::0;;-1:-1:-1;;;;;;2567:19:0::1;::::0;;2446:148::o;19897:151::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;19997:19:::1;:43:::0;;-1:-1:-1;;;;;;19997:43:0::1;-1:-1:-1::0;;;;;19997:43:0;;;::::1;::::0;;;::::1;::::0;;19897:151::o;19619:119::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;19703:11:::1;:27:::0;;-1:-1:-1;;;;;;19703:27:0::1;-1:-1:-1::0;;;;;19703:27:0;;;::::1;::::0;;;::::1;::::0;;19619:119::o;13699:101::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;13766:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;13766:26:0::1;-1:-1:-1::0;;;;13766:26:0;;::::1;::::0;;;::::1;::::0;;13699:101::o;19161:139::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;19252:19:::1;:40:::0;19161:139::o;18633:476::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;18806:2:::1;18775:27;18791:11:::0;18775:13;:27:::1;:::i;:::-;:33;;18767:80;;;::::0;-1:-1:-1;;;18767:80:0;;6190:2:1;18767:80:0::1;::::0;::::1;6172:21:1::0;6229:2;6209:18;;;6202:30;6268:34;6248:18;;;6241:62;-1:-1:-1;;;6319:18:1;;;6312:32;6361:19;;18767:80:0::1;5988:398:1::0;18767:80:0::1;18899:2;18866:29;18883:12:::0;18866:14;:29:::1;:::i;:::-;:35;;18858:83;;;::::0;-1:-1:-1;;;18858:83:0;;6593:2:1;18858:83:0::1;::::0;::::1;6575:21:1::0;6632:2;6612:18;;;6605:30;6671:34;6651:18;;;6644:62;-1:-1:-1;;;6722:18:1;;;6715:33;6765:19;;18858:83:0::1;6391:399:1::0;18858:83:0::1;18952:14;:30:::0;;;;18993:15:::1;:32:::0;;;;19036:12:::1;:26:::0;19073:13:::1;:28:::0;18633:476::o;7176:199::-;7281:4;7303:42;1828:10;7327:9;7338:6;7303:9;:42::i;19492:119::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;19571:15:::1;:32:::0;19492:119::o;14495:267::-;14561:11;;-1:-1:-1;;;;;14561:11:0;1828:10;-1:-1:-1;;;;;14545:27:0;;:64;;;-1:-1:-1;14592:17:0;;-1:-1:-1;;;;;14592:17:0;1828:10;-1:-1:-1;;;;;14576:33:0;;14545:64;:103;;;-1:-1:-1;14629:19:0;;-1:-1:-1;;;;;14629:19:0;1828:10;-1:-1:-1;;;;;14613:35:0;;14545:103;14537:112;;;;;;14660:23;14686:24;14704:4;14686:9;:24::i;:::-;14660:50;;14721:33;14738:15;14721:16;:33::i;20056:234::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;20173:9:::1;20169:114;20188:19:::0;;::::1;20169:114;;;20263:8;20229:18;:31;20248:8;;20257:1;20248:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20229:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20229:31:0;:42;;-1:-1:-1;;20229:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20209:3;::::1;::::0;::::1;:::i;:::-;;;;20169:114;;;;20056:234:::0;;;:::o;15044:83::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15103:9:0::1;;::::0;;;:4:::1;:9;::::0;;;;:16;;-1:-1:-1;;15103:16:0::1;15115:4;15103:16;::::0;;15044:83::o;13810:677::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;13875:11:::1;::::0;-1:-1:-1;;;13875:11:0;::::1;;;13874:12;13866:47;;;::::0;-1:-1:-1;;;13866:47:0;;7269:2:1;13866:47:0::1;::::0;::::1;7251:21:1::0;7308:2;7288:18;;;7281:30;7347:25;7327:18;;;7320:53;7390:18;;13866:47:0::1;7067:347:1::0;13866:47:0::1;14031:15;:34:::0;;-1:-1:-1;;;;;;14031:34:0::1;13977:42;14031:34:::0;;::::1;::::0;;;14076:58:::1;14093:4;13977:42:::0;4668:16:::1;14076:8;:58::i;:::-;14179:16;-1:-1:-1::0;;;;;14179:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14161:56:0::1;;14226:4;14233:16;-1:-1:-1::0;;;;;14233:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14161:96;::::0;-1:-1:-1;;;;;;14161:96:0::1;::::0;;;;;;-1:-1:-1;;;;;7905:15:1;;;14161:96:0::1;::::0;::::1;7887:34:1::0;7957:15;;7937:18;;;7930:43;7822:18;;14161:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14145:13;:112:::0;;-1:-1:-1;;;;;;14145:112:0::1;-1:-1:-1::0;;;;;14145:112:0;;::::1;;::::0;;14268:15:::1;::::0;::::1;:31;14307:21;14338:4;14344:24;14338:4:::0;14344:9:::1;:24::i;:::-;14369:1;14371::::0;14373:7:::1;2270::::0;2297:6;-1:-1:-1;;;;;2297:6:0;;2232:79;14373:7:::1;14268:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;14268:129:0;;;-1:-1:-1;;;;;8343:15:1;;;14268:129:0::1;::::0;::::1;8325:34:1::0;8375:18;;;8368:34;;;;8418:18;;;8411:34;;;;8461:18;;;8454:34;8525:15;;;8504:19;;;8497:44;14381:15:0::1;8557:19:1::0;;;8550:35;8259:19;;14268:129:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14415:13:0::1;::::0;14446:15:::1;::::0;14408:71:::1;::::0;-1:-1:-1;;;14408:71:0;;-1:-1:-1;;;;;14446:15:0;;::::1;14408:71;::::0;::::1;9081:51:1::0;-1:-1:-1;;9148:18:1;;;9141:34;14415:13:0;::::1;::::0;-1:-1:-1;14408:29:0::1;::::0;9054:18:1;;14408:71:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13855:632;13810:677::o:0;2602:244::-;2359:6;;-1:-1:-1;;;;;2359:6:0;1828:10;2359:22;2351:67;;;;-1:-1:-1;;;2351:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2691:22:0;::::1;2683:73;;;::::0;-1:-1:-1;;;2683:73:0;;9638:2:1;2683:73:0::1;::::0;::::1;9620:21:1::0;9677:2;9657:18;;;9650:30;9716:34;9696:18;;;9689:62;-1:-1:-1;;;9767:18:1;;;9760:36;9813:19;;2683:73:0::1;9436:402:1::0;2683:73:0::1;2793:6;::::0;;2772:38:::1;::::0;-1:-1:-1;;;;;2772:38:0;;::::1;::::0;2793:6;::::1;::::0;2772:38:::1;::::0;::::1;2821:6;:17:::0;;-1:-1:-1;;;;;;2821:17:0::1;-1:-1:-1::0;;;;;2821:17:0;;;::::1;::::0;;;::::1;::::0;;2602:244::o;8915:369::-;-1:-1:-1;;;;;9042:19:0;;9034:68;;;;-1:-1:-1;;;9034:68:0;;10045:2:1;9034:68:0;;;10027:21:1;10084:2;10064:18;;;10057:30;10123:34;10103:18;;;10096:62;-1:-1:-1;;;10174:18:1;;;10167:34;10218:19;;9034:68:0;9843:400:1;9034:68:0;-1:-1:-1;;;;;9121:21:0;;9113:68;;;;-1:-1:-1;;;9113:68:0;;10450:2:1;9113:68:0;;;10432:21:1;10489:2;10469:18;;;10462:30;10528:34;10508:18;;;10501:62;-1:-1:-1;;;10579:18:1;;;10572:32;10621:19;;9113:68:0;10248:398:1;9113:68:0;-1:-1:-1;;;;;9192:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9244:32;;1410:25:1;;;9244:32:0;;1383:18:1;9244:32:0;;;;;;;8915:369;;;:::o;10503:2252::-;-1:-1:-1;;;;;10625:18:0;;10617:68;;;;-1:-1:-1;;;10617:68:0;;10853:2:1;10617:68:0;;;10835:21:1;10892:2;10872:18;;;10865:30;10931:34;10911:18;;;10904:62;-1:-1:-1;;;10982:18:1;;;10975:35;11027:19;;10617:68:0;10651:401:1;10617:68:0;-1:-1:-1;;;;;10704:16:0;;10696:64;;;;-1:-1:-1;;;10696:64:0;;11259:2:1;10696:64:0;;;11241:21:1;11298:2;11278:18;;;11271:30;11337:34;11317:18;;;11310:62;-1:-1:-1;;;11388:18:1;;;11381:33;11431:19;;10696:64:0;11057:399:1;10696:64:0;10788:1;10779:6;:10;10771:64;;;;-1:-1:-1;;;10771:64:0;;11663:2:1;10771:64:0;;;11645:21:1;11702:2;11682:18;;;11675:30;11741:34;11721:18;;;11714:62;-1:-1:-1;;;11792:18:1;;;11785:39;11841:19;;10771:64:0;11461:405:1;10771:64:0;2270:7;2297:6;-1:-1:-1;;;;;10852:15:0;;;2297:6;;10852:15;;;;:32;;-1:-1:-1;2270:7:0;2297:6;-1:-1:-1;;;;;10871:13:0;;;2297:6;;10871:13;;10852:32;10848:808;;;-1:-1:-1;;;;;10912:10:0;;;;;;:4;:10;;;;;;;;10911:11;:24;;;;-1:-1:-1;;;;;;10927:8:0;;;;;;:4;:8;;;;;;;;10926:9;10911:24;10903:48;;;;-1:-1:-1;;;10903:48:0;;12073:2:1;10903:48:0;;;12055:21:1;12112:2;12092:18;;;12085:30;-1:-1:-1;;;12131:18:1;;;12124:41;12182:18;;10903:48:0;11871:335:1;10903:48:0;10968:28;10999:24;11017:4;10999:9;:24::i;:::-;11077:19;;11140:15;;10968:55;;-1:-1:-1;11053:43:0;;;;11116:39;;11113:130;;11212:15;;11189:38;;11113:130;11263:7;:18;;;;-1:-1:-1;11275:6:0;;-1:-1:-1;;;11275:6:0;;;;11274:7;11263:18;:43;;;;-1:-1:-1;11293:13:0;;-1:-1:-1;;;;;11285:21:0;;;11293:13;;11285:21;;11263:43;:58;;;;-1:-1:-1;11310:11:0;;-1:-1:-1;;;11310:11:0;;;;11263:58;:87;;;;-1:-1:-1;;;;;;11326:24:0;;;;;;:18;:24;;;;;;;;11325:25;11263:87;:114;;;;-1:-1:-1;;;;;;11355:22:0;;;;;;:18;:22;;;;;;;;11354:23;11263:114;11259:386;;;11398:38;11415:20;11398:16;:38::i;:::-;11484:21;11528:22;;11524:106;;11575:35;11588:21;11575:12;:35::i;:::-;11379:266;11259:386;10886:770;;10848:808;11683:4;11700:28;11717:2;11721:6;11700:16;:28::i;:::-;11739:26;11752:4;11758:6;11739:12;:26::i;:::-;-1:-1:-1;;;;;11810:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;11838:22:0;;;;;;:18;:22;;;;;;;;11810:50;11809:102;;;-1:-1:-1;11874:13:0;;-1:-1:-1;;;;;11866:21:0;;;11874:13;;11866:21;;;;:44;;-1:-1:-1;11897:13:0;;-1:-1:-1;;;;;11891:19:0;;;11897:13;;11891:19;;11866:44;11805:889;;;-1:-1:-1;11938:5:0;11805:889;;;12019:13;;-1:-1:-1;;;;;12011:21:0;;;12019:13;;12011:21;:55;;;;-1:-1:-1;12050:15:0;;-1:-1:-1;;;;;12036:30:0;;;12050:15;;12036:30;;12011:55;12008:329;;;12129:11;;-1:-1:-1;;;12129:11:0;;;;12124:112;;2270:7;2297:6;-1:-1:-1;;;;;12173:15:0;;;2297:6;;12173:15;12165:51;;;;-1:-1:-1;;;12165:51:0;;12413:2:1;12165:51:0;;;12395:21:1;12452:2;12432:18;;;12425:30;-1:-1:-1;;;12471:18:1;;;12464:53;12534:18;;12165:51:0;12211:347:1;12165:51:0;12266:14;;12254:9;:26;12309:12;;12299:7;:22;12008:329;12396:13;;-1:-1:-1;;;;;12390:19:0;;;12396:13;;12390:19;:55;;;;-1:-1:-1;12429:15:0;;-1:-1:-1;;;;;12413:32:0;;;12429:15;;12413:32;;12390:55;12386:295;;;12471:11;;-1:-1:-1;;;12471:11:0;;;;12466:112;;2270:7;2297:6;-1:-1:-1;;;;;12515:15:0;;;2297:6;;12515:15;12507:51;;;;-1:-1:-1;;;12507:51:0;;12413:2:1;12507:51:0;;;12395:21:1;12452:2;12432:18;;;12425:30;-1:-1:-1;;;12471:18:1;;;12464:53;12534:18;;12507:51:0;12211:347:1;12507:51:0;12608:15;;12596:9;:27;12652:13;;12642:7;:23;12386:295;12706:41;12721:4;12727:2;12731:6;12739:7;12706:14;:41::i;3210:224::-;3330:7;3366:12;3358:6;;;;3350:29;;;;-1:-1:-1;;;3350:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3390:9:0;3402:5;3406:1;3402;:5;:::i;:::-;3390:17;3210:224;-1:-1:-1;;;;;3210:224:0:o;13254:437::-;13311:24;13354:3;13339:11;:6;13348:2;13339:11;:::i;:::-;13338:19;;;;:::i;:::-;13311:46;-1:-1:-1;13375:30:0;13424:3;13409:11;:6;13418:2;13409:11;:::i;:::-;13408:19;;;;:::i;:::-;13375:52;-1:-1:-1;13445:32:0;13496:3;13481:11;:6;13490:2;13481:11;:::i;:::-;13480:19;;;;:::i;:::-;13519:11;;:38;;13445:54;;-1:-1:-1;;;;;;13519:11:0;;:38;;;;;13540:16;;13519:11;:38;:11;:38;13540:16;13519:11;:38;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13568:17:0;;:50;;-1:-1:-1;;;;;13568:17:0;;;;:50;;;;;13595:22;;13568:17;:50;:17;:50;13595:22;13568:17;:50;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13629:19:0;;:54;;-1:-1:-1;;;;;13629:19:0;;;;:54;;;;;13658:24;;13629:19;:54;:19;:54;13658:24;13629:19;:54;;;;;;;;;;;;;;;;;;;;;13300:391;;;13254:437;:::o;8230:323::-;8325:7;8383;;8372;:18;;8350:110;;;;-1:-1:-1;;;8350:110:0;;13068:2:1;8350:110:0;;;13050:21:1;13107:2;13087:18;;;13080:30;13146:34;13126:18;;;13119:62;-1:-1:-1;;;13197:18:1;;;13190:40;13247:19;;8350:110:0;12866:406:1;8350:110:0;8471:19;8493:10;:8;:10::i;:::-;8471:32;-1:-1:-1;8521:24:0;:7;8471:32;8521:11;:24::i;:::-;8514:31;8230:323;-1:-1:-1;;;8230:323:0:o;12763:483::-;5991:6;:13;;-1:-1:-1;;;;5991:13:0;-1:-1:-1;;;5991:13:0;;;12865:16:::1;::::0;;12879:1:::1;12865:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12865:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12865:16:0::1;12841:40;;12910:4;12892;12897:1;12892:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12892:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12936:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12936:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12892:7;;12936:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12926:4;12931:1;12926:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12926:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13001:15:::1;::::0;12969:62:::1;::::0;12986:4:::1;::::0;13001:15:::1;13019:11:::0;12969:8:::1;:62::i;:::-;13042:15;::::0;:196:::1;::::0;-1:-1:-1;;;13042:196:0;;-1:-1:-1;;;;;13042:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13123:11;;13042:15:::1;::::0;13165:4;;13192::::1;::::0;13212:15:::1;::::0;13042:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6027:6:0;:14;;-1:-1:-1;;;;6027:14:0;;;-1:-1:-1;;;;12763:483:0:o;9602:684::-;9703:42;9787:7;2270;2297:6;-1:-1:-1;;;;;2297:6:0;;2232:79;9787:7;-1:-1:-1;;;;;9774:20:0;:9;-1:-1:-1;;;;;9774:20:0;;;:63;;;;-1:-1:-1;;;;;;9811:26:0;;9832:4;9811:26;;9774:63;:106;;;;;9875:4;-1:-1:-1;;;;;9854:26:0;:9;-1:-1:-1;;;;;9854:26:0;;;9774:106;:149;;;;-1:-1:-1;9910:13:0;;-1:-1:-1;;;;;9897:26:0;;;9910:13;;9897:26;;9774:149;:198;;;;-1:-1:-1;9953:19:0;;-1:-1:-1;;;;;9940:32:0;;;9953:19;;9940:32;;9774:198;:252;;;;-1:-1:-1;10010:15:0;;-1:-1:-1;;;;;9989:37:0;;;10010:15;;9989:37;;9774:252;9756:523;;;10053:18;10074:20;10084:9;10074;:20::i;:::-;10160:9;;10053:41;;-1:-1:-1;10136:19:0;10149:6;10053:41;10136:19;:::i;:::-;10135:34;;10109:158;;;;-1:-1:-1;;;10109:158:0;;14596:2:1;10109:158:0;;;14578:21:1;14635:2;14615:18;;;14608:30;14674:34;14654:18;;;14647:62;14745:32;14725:18;;;14718:60;14795:19;;10109:158:0;14394:426:1;9756:523:0;9677:609;9602:684;;:::o;10294:201::-;10405:11;;10395:6;:21;;:47;;;-1:-1:-1;;;;;;10420:22:0;;;;;;:14;:22;;;;;;;;10395:47;10373:114;;;;-1:-1:-1;;;10373:114:0;;15027:2:1;10373:114:0;;;15009:21:1;15066:2;15046:18;;;15039:30;-1:-1:-1;;;15085:18:1;;;15078:47;15142:18;;10373:114:0;14825:341:1;15235:282:0;15391:7;15386:28;;15400:14;:12;:14::i;:::-;15425:44;15443:6;15451:9;15462:6;15425:17;:44::i;:::-;15485:7;15480:29;;15494:15;8846:17;;8834:9;:29;8884:15;;8874:7;:25;8790:117;18196:164;18238:7;18259:15;18276;18295:19;:17;:19::i;:::-;18258:56;;-1:-1:-1;18258:56:0;-1:-1:-1;18332:20:0;18258:56;;18332:11;:20::i;:::-;18325:27;;;;18196:164;:::o;3696:132::-;3754:7;3781:39;3785:1;3788;3781:39;;;;;;;;;;;;;;;;;:3;:39::i;8563:219::-;8610:9;;:14;:30;;;;-1:-1:-1;8628:7:0;;:12;8610:30;8606:43;;;8563:219::o;8606:43::-;8681:9;;;8661:17;:29;8719:7;;;8701:15;:25;-1:-1:-1;8739:13:0;;;;8763:11;8563:219::o;15525:610::-;15672:15;15702:23;15740:12;15767:23;15805:12;15832:13;15859:19;15870:7;15859:10;:19::i;:::-;-1:-1:-1;;;;;15907:15:0;;;;;;:7;:15;;;;;;15657:221;;-1:-1:-1;15657:221:0;;-1:-1:-1;15657:221:0;;-1:-1:-1;15657:221:0;-1:-1:-1;15657:221:0;-1:-1:-1;15657:221:0;-1:-1:-1;15907:28:0;;15657:221;15907:19;:28::i;:::-;-1:-1:-1;;;;;15889:15:0;;;;;;;:7;:15;;;;;;:46;;;;15967:18;;;;;;;:39;;15990:15;15967:22;:39::i;:::-;-1:-1:-1;;;;;15946:18:0;;;;;;:7;:18;;;;;:60;16017:16;16027:5;16017:9;:16::i;:::-;16044:23;16056:4;16062;16044:11;:23::i;:::-;16100:9;-1:-1:-1;;;;;16083:44:0;16092:6;-1:-1:-1;;;;;16083:44:0;;16111:15;16083:44;;;;1410:25:1;;1398:2;1383:18;;1264:177;16083:44:0;;;;;;;;15646:489;;;;;;15525:610;;;:::o;18368:257::-;18466:7;;18419;;;;4668:16;18534:20;18466:7;4668:16;18534:11;:20::i;:::-;18524:7;:30;18520:61;;;-1:-1:-1;;18564:7:0;;;4668:16;;-1:-1:-1;18368:257:0;-1:-1:-1;18368:257:0:o;18520:61::-;18600:7;;18609;;-1:-1:-1;18368:257:0;-1:-1:-1;18368:257:0:o;3836:223::-;3956:7;3991:12;3984:5;3976:28;;;;-1:-1:-1;;;3976:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4015:9:0;4027:5;4031:1;4027;:5;:::i;16554:615::-;16654:7;16676;16698;16720;16742;16764;16800:23;16825:12;16839:13;16869:40;16881:7;16890:9;;16901:7;;16869:11;:40::i;:::-;16799:110;;;;;;16920:19;16942:10;:8;:10::i;:::-;16920:32;;16964:15;16981:23;17006:12;17035:46;17047:7;17056:4;17062:5;17069:11;17035;:46::i;:::-;16963:118;;-1:-1:-1;16963:118:0;-1:-1:-1;16963:118:0;-1:-1:-1;17132:15:0;;-1:-1:-1;17149:4:0;;-1:-1:-1;17155:5:0;;-1:-1:-1;;;;;16554:615:0;;;;;;;:::o;3066:136::-;3124:7;3151:43;3155:1;3158;3151:43;;;;;;;;;;;;;;;;;:3;:43::i;2879:179::-;2937:7;;2969:5;2973:1;2969;:5;:::i;:::-;2957:17;;2998:1;2993;:6;;2985:46;;;;-1:-1:-1;;;2985:46:0;;15373:2:1;2985:46:0;;;15355:21:1;15412:2;15392:18;;;15385:30;15451:29;15431:18;;;15424:57;15498:18;;2985:46:0;15171:351:1;16143:211:0;16196:19;16218:10;:8;:10::i;:::-;16196:32;-1:-1:-1;16239:13:0;16255:22;:5;16196:32;16255:9;:22::i;:::-;16329:4;16313:22;;;;:7;:22;;;;;;16239:38;;-1:-1:-1;16313:33:0;;16239:38;16313:26;:33::i;:::-;16304:4;16288:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;16143:211:0:o;16362:147::-;16440:7;;:17;;16452:4;16440:11;:17::i;:::-;16430:7;:27;16481:10;;:20;;16496:4;16481:14;:20::i;:::-;16468:10;:33;-1:-1:-1;;16362:147:0:o;17177:469::-;17346:7;;;;17440:30;17466:3;17440:21;:7;17452:8;17440:11;:21::i;:::-;:25;;:30::i;:::-;17425:45;-1:-1:-1;17481:13:0;17497:28;17521:3;17497:19;:7;17509:6;17497:11;:19::i;:28::-;17481:44;-1:-1:-1;17536:23:0;17562:28;17481:44;17562:17;:7;17574:4;17562:11;:17::i;:::-;:21;;:28::i;:::-;17536:54;17626:4;;-1:-1:-1;17632:5:0;;-1:-1:-1;17177:469:0;;-1:-1:-1;;;;;17177:469:0:o;17654:534::-;17848:7;;;;17945:24;:7;17957:11;17945;:24::i;:::-;17927:42;-1:-1:-1;17980:12:0;17995:21;:4;18004:11;17995:8;:21::i;:::-;17980:36;-1:-1:-1;18027:13:0;18043:22;:5;18053:11;18043:9;:22::i;:::-;18027:38;-1:-1:-1;18076:23:0;18102:28;18027:38;18102:17;:7;18114:4;18102:11;:17::i;:28::-;18149:7;;;;-1:-1:-1;18175:4:0;;-1:-1:-1;17654:534:0;;-1:-1:-1;;;;;;;17654:534:0:o;3442:246::-;3500:7;3524:6;3520:47;;-1:-1:-1;3554:1:0;3547:8;;3520:47;3577:9;3589:5;3593:1;3589;:5;:::i;:::-;3577:17;-1:-1:-1;3622:1:0;3613:5;3617:1;3577:17;3613:5;:::i;:::-;:10;3605:56;;;;-1:-1:-1;;;3605:56:0;;15729:2:1;3605:56:0;;;15711:21:1;15768:2;15748:18;;;15741:30;15807:34;15787:18;;;15780:62;-1:-1:-1;;;15858:18:1;;;15851:31;15899:19;;3605:56:0;15527:397:1;14:597;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1678:255::-;1745:6;1798:2;1786:9;1777:7;1773:23;1769:32;1766:52;;;1814:1;1811;1804:12;1766:52;1853:9;1840:23;1872:31;1897:5;1872:31;:::i;1938:456::-;2015:6;2023;2031;2084:2;2072:9;2063:7;2059:23;2055:32;2052:52;;;2100:1;2097;2090:12;2052:52;2139:9;2126:23;2158:31;2183:5;2158:31;:::i;:::-;2208:5;-1:-1:-1;2265:2:1;2250:18;;2237:32;2278:33;2237:32;2278:33;:::i;:::-;1938:456;;2330:7;;-1:-1:-1;;;2384:2:1;2369:18;;;;2356:32;;1938:456::o;2796:180::-;2855:6;2908:2;2896:9;2887:7;2883:23;2879:32;2876:52;;;2924:1;2921;2914:12;2876:52;-1:-1:-1;2947:23:1;;2796:180;-1:-1:-1;2796:180:1:o;3233:118::-;3319:5;3312:13;3305:21;3298:5;3295:32;3285:60;;3341:1;3338;3331:12;3356:241;3412:6;3465:2;3453:9;3444:7;3440:23;3436:32;3433:52;;;3481:1;3478;3471:12;3433:52;3520:9;3507:23;3539:28;3561:5;3539:28;:::i;3602:385::-;3688:6;3696;3704;3712;3765:3;3753:9;3744:7;3740:23;3736:33;3733:53;;;3782:1;3779;3772:12;3733:53;-1:-1:-1;;3805:23:1;;;3875:2;3860:18;;3847:32;;-1:-1:-1;3926:2:1;3911:18;;3898:32;;3977:2;3962:18;3949:32;;-1:-1:-1;3602:385:1;-1:-1:-1;3602:385:1:o;3992:750::-;4084:6;4092;4100;4153:2;4141:9;4132:7;4128:23;4124:32;4121:52;;;4169:1;4166;4159:12;4121:52;4209:9;4196:23;4238:18;4279:2;4271:6;4268:14;4265:34;;;4295:1;4292;4285:12;4265:34;4333:6;4322:9;4318:22;4308:32;;4378:7;4371:4;4367:2;4363:13;4359:27;4349:55;;4400:1;4397;4390:12;4349:55;4440:2;4427:16;4466:2;4458:6;4455:14;4452:34;;;4482:1;4479;4472:12;4452:34;4537:7;4530:4;4520:6;4517:1;4513:14;4509:2;4505:23;4501:34;4498:47;4495:67;;;4558:1;4555;4548:12;4495:67;4589:4;4581:13;;;;-1:-1:-1;4613:6:1;-1:-1:-1;;4654:20:1;;4641:34;4684:28;4641:34;4684:28;:::i;:::-;4731:5;4721:15;;;3992:750;;;;;:::o;4747:388::-;4815:6;4823;4876:2;4864:9;4855:7;4851:23;4847:32;4844:52;;;4892:1;4889;4882:12;4844:52;4931:9;4918:23;4950:31;4975:5;4950:31;:::i;:::-;5000:5;-1:-1:-1;5057:2:1;5042:18;;5029:32;5070:33;5029:32;5070:33;:::i;:::-;5122:7;5112:17;;;4747:388;;;;;:::o;5140:356::-;5342:2;5324:21;;;5361:18;;;5354:30;5420:34;5415:2;5400:18;;5393:62;5487:2;5472:18;;5140:356::o;5501:127::-;5562:10;5557:3;5553:20;5550:1;5543:31;5593:4;5590:1;5583:15;5617:4;5614:1;5607:15;5633:217;5673:1;5699;5689:132;;5743:10;5738:3;5734:20;5731:1;5724:31;5778:4;5775:1;5768:15;5806:4;5803:1;5796:15;5689:132;-1:-1:-1;5835:9:1;;5633:217::o;5855:128::-;5895:3;5926:1;5922:6;5919:1;5916:13;5913:39;;;5932:18;;:::i;:::-;-1:-1:-1;5968:9:1;;5855:128::o;6795:127::-;6856:10;6851:3;6847:20;6844:1;6837:31;6887:4;6884:1;6877:15;6911:4;6908:1;6901:15;6927:135;6966:3;-1:-1:-1;;6987:17:1;;6984:43;;;7007:18;;:::i;:::-;-1:-1:-1;7054:1:1;7043:13;;6927:135::o;7419:251::-;7489:6;7542:2;7530:9;7521:7;7517:23;7513:32;7510:52;;;7558:1;7555;7548:12;7510:52;7590:9;7584:16;7609:31;7634:5;7609:31;:::i;8596:306::-;8684:6;8692;8700;8753:2;8741:9;8732:7;8728:23;8724:32;8721:52;;;8769:1;8766;8759:12;8721:52;8798:9;8792:16;8782:26;;8848:2;8837:9;8833:18;8827:25;8817:35;;8892:2;8881:9;8877:18;8871:25;8861:35;;8596:306;;;;;:::o;9186:245::-;9253:6;9306:2;9294:9;9285:7;9281:23;9277:32;9274:52;;;9322:1;9319;9312:12;9274:52;9354:9;9348:16;9373:28;9395:5;9373:28;:::i;12563:125::-;12603:4;12631:1;12628;12625:8;12622:34;;;12636:18;;:::i;:::-;-1:-1:-1;12673:9:1;;12563:125::o;12693:168::-;12733:7;12799:1;12795;12791:6;12787:14;12784:1;12781:21;12776:1;12769:9;12762:17;12758:45;12755:71;;;12806:18;;:::i;:::-;-1:-1:-1;12846:9:1;;12693:168::o;13409:980::-;13671:4;13719:3;13708:9;13704:19;13750:6;13739:9;13732:25;13776:2;13814:6;13809:2;13798:9;13794:18;13787:34;13857:3;13852:2;13841:9;13837:18;13830:31;13881:6;13916;13910:13;13947:6;13939;13932:22;13985:3;13974:9;13970:19;13963:26;;14024:2;14016:6;14012:15;13998:29;;14045:1;14055:195;14069:6;14066:1;14063:13;14055:195;;;14134:13;;-1:-1:-1;;;;;14130:39:1;14118:52;;14225:15;;;;14190:12;;;;14166:1;14084:9;14055:195;;;-1:-1:-1;;;;;;;14306:32:1;;;;14301:2;14286:18;;14279:60;-1:-1:-1;;;14370:3:1;14355:19;14348:35;14267:3;13409:980;-1:-1:-1;;;13409:980:1:o

Swarm Source

ipfs://bac07162a2bc817589c50a9fc97fe1dbfb451173382a5ec9e4a3a47302fd9147

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.