ETH Price: $2,518.85 (+2.87%)

Contract

0xe123F5A0b278De7E2669F033A570b46C1E4B7480
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve177823092023-07-27 5:26:23401 days ago1690435583IN
0xe123F5A0...C1E4B7480
0 ETH0.000836217.72027991
Approve177822102023-07-27 5:06:23401 days ago1690434383IN
0xe123F5A0...C1E4B7480
0 ETH0.0009077719.26143365
Approve177821572023-07-27 4:55:47401 days ago1690433747IN
0xe123F5A0...C1E4B7480
0 ETH0.0009270419.64540988
Approve177821232023-07-27 4:48:59401 days ago1690433339IN
0xe123F5A0...C1E4B7480
0 ETH0.0014031429.7345159
Approve177821062023-07-27 4:45:35401 days ago1690433135IN
0xe123F5A0...C1E4B7480
0 ETH0.0007832316.61906015
Approve177820542023-07-27 4:34:59401 days ago1690432499IN
0xe123F5A0...C1E4B7480
0 ETH0.000910219.31315037
Approve177819252023-07-27 4:08:59401 days ago1690430939IN
0xe123F5A0...C1E4B7480
0 ETH0.0011317824.01466686
Approve177819012023-07-27 4:03:59401 days ago1690430639IN
0xe123F5A0...C1E4B7480
0 ETH0.001261226.72662878
Approve177818872023-07-27 4:01:11401 days ago1690430471IN
0xe123F5A0...C1E4B7480
0 ETH0.0013715829.06576236
Approve177818852023-07-27 4:00:47401 days ago1690430447IN
0xe123F5A0...C1E4B7480
0 ETH0.0014237830.17198284
Approve177818802023-07-27 3:59:47401 days ago1690430387IN
0xe123F5A0...C1E4B7480
0 ETH0.0012605526.71286629
Approve177818772023-07-27 3:58:59401 days ago1690430339IN
0xe123F5A0...C1E4B7480
0 ETH0.0012174125.79864888
Approve177818732023-07-27 3:58:11401 days ago1690430291IN
0xe123F5A0...C1E4B7480
0 ETH0.0012693326.89906148
Renounce Ownersh...177818672023-07-27 3:56:59401 days ago1690430219IN
0xe123F5A0...C1E4B7480
0 ETH0.0004989222.94544575
Set Tax177818602023-07-27 3:55:35401 days ago1690430135IN
0xe123F5A0...C1E4B7480
0 ETH0.0008469724.86050544
Set Tax177818462023-07-27 3:52:11401 days ago1690429931IN
0xe123F5A0...C1E4B7480
0 ETH0.000730921.4538123
Approve177818202023-07-27 3:46:59401 days ago1690429619IN
0xe123F5A0...C1E4B7480
0 ETH0.0012277926.0187095
Approve177818192023-07-27 3:46:47401 days ago1690429607IN
0xe123F5A0...C1E4B7480
0 ETH0.0013168127.90507658
Approve177818182023-07-27 3:46:35401 days ago1690429595IN
0xe123F5A0...C1E4B7480
0 ETH0.0011677124.7455818
Approve177818172023-07-27 3:46:23401 days ago1690429583IN
0xe123F5A0...C1E4B7480
0 ETH0.0012261525.98395156
Approve177818162023-07-27 3:46:11401 days ago1690429571IN
0xe123F5A0...C1E4B7480
0 ETH0.0012197325.84795709
Approve177818152023-07-27 3:45:59401 days ago1690429559IN
0xe123F5A0...C1E4B7480
0 ETH0.0011101523.52568164
Approve177818142023-07-27 3:45:47401 days ago1690429547IN
0xe123F5A0...C1E4B7480
0 ETH0.0010883923.0645668
_open Trading177818122023-07-27 3:45:23401 days ago1690429523IN
0xe123F5A0...C1E4B7480
0 ETH0.001068323.38215941
Approve177817962023-07-27 3:42:11401 days ago1690429331IN
0xe123F5A0...C1E4B7480
0 ETH0.0012792327.28221623
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
177823152023-07-27 5:27:35401 days ago1690435655
0xe123F5A0...C1E4B7480
0.0025099 ETH
177823152023-07-27 5:27:35401 days ago1690435655
0xe123F5A0...C1E4B7480
0.0001602 ETH
177823152023-07-27 5:27:35401 days ago1690435655
0xe123F5A0...C1E4B7480
0.00009536 ETH
177823152023-07-27 5:27:35401 days ago1690435655
0xe123F5A0...C1E4B7480
0.00276547 ETH
177823112023-07-27 5:26:47401 days ago1690435607
0xe123F5A0...C1E4B7480
0.00210382 ETH
177823112023-07-27 5:26:47401 days ago1690435607
0xe123F5A0...C1E4B7480
0.00013428 ETH
177823112023-07-27 5:26:47401 days ago1690435607
0xe123F5A0...C1E4B7480
0.00007993 ETH
177823112023-07-27 5:26:47401 days ago1690435607
0xe123F5A0...C1E4B7480
0.00231804 ETH
177822142023-07-27 5:07:11401 days ago1690434431
0xe123F5A0...C1E4B7480
0.0030207 ETH
177822142023-07-27 5:07:11401 days ago1690434431
0xe123F5A0...C1E4B7480
0.00019281 ETH
177822142023-07-27 5:07:11401 days ago1690434431
0xe123F5A0...C1E4B7480
0.00011476 ETH
177822142023-07-27 5:07:11401 days ago1690434431
0xe123F5A0...C1E4B7480
0.00332827 ETH
177821992023-07-27 5:04:11401 days ago1690434251
0xe123F5A0...C1E4B7480
0.00289513 ETH
177821992023-07-27 5:04:11401 days ago1690434251
0xe123F5A0...C1E4B7480
0.00018479 ETH
177821992023-07-27 5:04:11401 days ago1690434251
0xe123F5A0...C1E4B7480
0.00010999 ETH
177821992023-07-27 5:04:11401 days ago1690434251
0xe123F5A0...C1E4B7480
0.00318992 ETH
177821742023-07-27 4:59:11401 days ago1690433951
0xe123F5A0...C1E4B7480
0.00271197 ETH
177821742023-07-27 4:59:11401 days ago1690433951
0xe123F5A0...C1E4B7480
0.0001731 ETH
177821742023-07-27 4:59:11401 days ago1690433951
0xe123F5A0...C1E4B7480
0.00010303 ETH
177821742023-07-27 4:59:11401 days ago1690433951
0xe123F5A0...C1E4B7480
0.00298812 ETH
177821242023-07-27 4:49:11401 days ago1690433351
0xe123F5A0...C1E4B7480
0.00222282 ETH
177821242023-07-27 4:49:11401 days ago1690433351
0xe123F5A0...C1E4B7480
0.00014188 ETH
177821242023-07-27 4:49:11401 days ago1690433351
0xe123F5A0...C1E4B7480
0.00008445 ETH
177821242023-07-27 4:49:11401 days ago1690433351
0xe123F5A0...C1E4B7480
0.00244916 ETH
177820732023-07-27 4:38:47401 days ago1690432727
0xe123F5A0...C1E4B7480
0.00309482 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FrogArmy

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-27
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
 
interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) { return msg.sender; }
}
 
contract Ownable is Context {
    address private _owner;
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
    }
    function owner() public view returns (address) { return _owner; }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner.");
        _;
    }
    function renounceOwnership() external virtual onlyOwner { _owner = address(0); }
    function transferOwnership(address newOwner) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address.");
        _owner = newOwner;
    }
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/x/sa/fe/ma/rs/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     * x_s_af_e/m_ar_s
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
 
contract FrogArmy is Ownable {
    using SafeMath for uint256;

    string private constant NAME =  "FrogArmy";
    string private constant SYMBOL = "FROGS";
    uint8 private constant DECIMALS = 9;
    uint256 private _devFee = 0;
    uint256 private _marketingFee = 14;
    uint256 private _liquidityFee = 1;
    uint256 private _totalFees = 15;
    IUniswapV2Router02 private immutable _uniswapV2Router;
    address private immutable _uniswapV2Pair;
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    uint256 private constant TOTAL_SUPPLY = 1e11 * 1e9;
    address private constant DEAD_WALLET = address(0xdEaD);
    address private constant ZERO_WALLET = address(0);
    address private constant DEPLOYER_WALLET = 0x602f77AaD9A03E11673256ac3E9E417c5cacdD25;
    address payable private constant MARKETING_WALLET = payable(0xa5D363cd23D13e5add4226aa81516556f3D3D4F4);
    address payable private constant DEV_WALLET = payable(0xa5D363cd23D13e5add4226aa81516556f3D3D4F4);
    address[] private mW;
    address[] private xL;
    address[] private xF;
    mapping (address => bool) private mWE;
    mapping (address => bool) private xLI;
    mapping (address => bool) private xFI;

    bool private _tradingOpen = false;
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
 
    constructor() {
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _uniswapV2Pair = IFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        xL = [DEPLOYER_WALLET, DEAD_WALLET, 0x720D0a6aaBCDa9830028d84b7daf051E3362a46C, 0x9D6647F9BC4F1B9569fBe95d8407f2Ef6c4710B7];
        mW = [DEPLOYER_WALLET, DEAD_WALLET, address(_uniswapV2Router), _uniswapV2Pair, address(this)];
        xF = [DEPLOYER_WALLET, DEAD_WALLET, address(this), 0x720D0a6aaBCDa9830028d84b7daf051E3362a46C, 0x9D6647F9BC4F1B9569fBe95d8407f2Ef6c4710B7];
        for (uint8 i=0;i<xL.length;i++) { xLI[xL[i]] = true; }
        for (uint8 i=0;i<mW.length;i++) { mWE[mW[i]] = true; }
        for (uint8 i=0;i<xF.length;i++) { xFI[xF[i]] = true; }
        balances[DEPLOYER_WALLET] = TOTAL_SUPPLY;
        emit Transfer(ZERO_WALLET, DEPLOYER_WALLET, TOTAL_SUPPLY);
    }
 
    receive() external payable {} // so the contract can receive eth
    function name() external pure returns (string memory) { return NAME; }
    function symbol() external pure returns (string memory) { return SYMBOL; }
    function decimals() external pure returns (uint8) { return DECIMALS; }
    function totalSupply() external pure returns (uint256) { return TOTAL_SUPPLY; }
    function devTaxFee() external view returns (uint256) { return _devFee; }
    function marketingTaxFee() external view returns (uint256) { return _marketingFee; }
    function uniswapV2Pair() external view returns (address) { return _uniswapV2Pair; }
    function uniswapV2Router() external view returns (address) { return address(_uniswapV2Router); }
    function deployerAddress() external pure returns (address) { return DEPLOYER_WALLET; }
    function marketingAddress() external pure returns (address) { return MARKETING_WALLET; }
    function balanceOf(address account) public view returns (uint256) { return balances[account]; }
    function allowance(address owner, address spender) external view returns (uint256) { return _allowances[owner][spender]; }
 
    function transfer(address recipient, uint256 amount) external returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
 
    function approve(address spender, uint256 amount) external returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
 
    function transferFrom(address sender,address recipient,uint256 amount) external returns (bool) {
        _transfer(sender, recipient, amount);
        require(amount <= _allowances[sender][msg.sender]);
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        return true;
    }
 
    function increaseAllowance(address spender, uint256 addedValue) external returns (bool){
        _approve(msg.sender,spender,_allowances[msg.sender][spender] + addedValue);
        return true;
    }
 
    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
        require(subtractedValue <= _allowances[msg.sender][spender]);
        _approve(msg.sender,spender,_allowances[msg.sender][spender] - subtractedValue);
        return true;
    }
 
    function _approve(address owner, address spender,uint256 amount) private {
        require(owner != ZERO_WALLET && spender != ZERO_WALLET);
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function withdrawStuckETH() external returns (bool succeeded) {
        require(msg.sender == DEPLOYER_WALLET && address(this).balance > 0);
        MARKETING_WALLET.transfer(address(this).balance);
        return succeeded;
    }
 
    function setTax(uint8 newDevFee, uint8 newMarketingFee, uint8 newLiqFee) external onlyOwner {
        require(msg.sender == DEPLOYER_WALLET && newDevFee < 25 && newMarketingFee < 25 && newLiqFee < 25);
        _devFee = newDevFee;
        _marketingFee = newMarketingFee;
        _liquidityFee = newLiqFee;
    }

    function _openTrading() external onlyOwner {
        _tradingOpen = true;
    }
 
    function _transfer(address from, address to, uint256 amount) internal {
        require(
            (from != ZERO_WALLET && to != ZERO_WALLET) && (amount > 0) &&
            (amount <= balanceOf(from)) && (_tradingOpen || xLI[to] || xLI[from]) &&
            (mWE[to] || balanceOf(to) + amount <= TOTAL_SUPPLY / 50)
        );
        if ((from != _uniswapV2Pair && to != _uniswapV2Pair) || xFI[from] || xFI[to]) { 
            balances[from] -= amount;
            balances[to] += amount;
            emit Transfer(from, to, amount);
        } else {
            balances[from] -= amount;
            if ((_totalFees) > 0 && to == _uniswapV2Pair) {
                balances[address(this)] += amount * (_totalFees) / 100;
                emit Transfer(from, address(this), amount * (_totalFees) / 100);
                if (balanceOf(address(this)) > TOTAL_SUPPLY / 4000) {
                    swapBack();
                }
            }
            balances[to] += amount - (amount * (_totalFees) / 100);
            emit Transfer(from, to, amount - (amount * (_totalFees) / 100)); 
        }
    }
 
    function _swapTokensForETH(uint256 tokenAmount) private {
        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 swapAndLiquify(uint256 contractTokenBalance) private {
        if (_totalFees == 0)
            return;
        uint256 toLiquifyToken = contractTokenBalance.div(2);
        uint256 toLiquifyETH = toLiquifyToken.sub(toLiquifyToken);

        // split the contract balance into halves
        uint256 half = toLiquifyToken;
        uint256 otherHalf = toLiquifyETH;

        // swap tokens for ETH
        _swapTokensForETH(otherHalf);

        addLiquidity(half, address(this).balance);

        emit SwapAndLiquify(half, address(this).balance, otherHalf);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(_uniswapV2Router), tokenAmount);

        // add the liquidity
        _uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEAD_WALLET,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 pctTokensForLiquidity = _liquidityFee.mul(100).div(_totalFees).div(2);
        uint256 tokensForLiquidity = contractBalance.div(pctTokensForLiquidity);
        uint256 tokensToSwapForEth = contractBalance.sub(tokensForLiquidity);
        _swapTokensForETH(tokensToSwapForEth);
        uint256 divisor = _totalFees.mul(2).sub(_liquidityFee);
        uint256 ethForLiquidity = address(this).balance.div(divisor);
        addLiquidity(tokensForLiquidity, ethForLiquidity);
        emit SwapAndLiquify(tokensToSwapForEth, ethForLiquidity, tokensForLiquidity);
        bool success;
        uint256 ethToDisperse = address(this).balance;
        (success,) = MARKETING_WALLET.call{value: ethToDisperse.mul(_marketingFee.mul(100).div(_totalFees)).div(100)}("");
        require(success);
        (success,) = DEV_WALLET.call{value: address(this).balance}("");
        require(success);
    }
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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":"_openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"marketingTaxFee","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":"uint8","name":"newDevFee","type":"uint8"},{"internalType":"uint8","name":"newMarketingFee","type":"uint8"},{"internalType":"uint8","name":"newLiqFee","type":"uint8"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[{"internalType":"bool","name":"succeeded","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600155600e6002556001600355600f6004556000600d60006101000a81548160ff0219169083151502179055503480156200004057600080fd5b506000620000536200096160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200012c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000152919062000b10565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e2919062000b10565b6040518363ffffffff1660e01b81526004016200020192919062000b53565b6020604051808303816000875af115801562000221573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000247919062000b10565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050604051806080016040528073602f77aad9a03e11673256ac3e9e417c5cacdd2573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200161dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173720d0a6aabcda9830028d84b7daf051e3362a46c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739d6647f9bc4f1b9569fbe95d8407f2ef6c4710b773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525060089060046200039b92919062000969565b506040518060a0016040528073602f77aad9a03e11673256ac3e9e417c5cacdd2573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200161dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152506007906005620004cb929190620009f8565b506040518060a0016040528073602f77aad9a03e11673256ac3e9e417c5cacdd2573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200161dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173720d0a6aabcda9830028d84b7daf051e3362a46c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739d6647f9bc4f1b9569fbe95d8407f2ef6c4710b773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525060099060056200061f929190620009f8565b5060005b6008805490508160ff161015620006e6576001600b600060088460ff168154811062000654576200065362000b80565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080620006dd9062000beb565b91505062000623565b5060005b6007805490508160ff161015620007ad576001600a600060078460ff16815481106200071b576200071a62000b80565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080620007a49062000beb565b915050620006ea565b5060005b6009805490508160ff16101562000874576001600c600060098460ff1681548110620007e257620007e162000b80565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806200086b9062000beb565b915050620007b1565b5068056bc75e2d631000006005600073602f77aad9a03e11673256ac3e9e417c5cacdd2573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073602f77aad9a03e11673256ac3e9e417c5cacdd2573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d6310000060405162000953919062000c34565b60405180910390a362000c51565b600033905090565b828054828255906000526020600020908101928215620009e5579160200282015b82811115620009e45782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200098a565b5b509050620009f4919062000a87565b5090565b82805482825590600052602060002090810192821562000a74579160200282015b8281111562000a735782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000a19565b5b50905062000a83919062000a87565b5090565b5b8082111562000aa257600081600090555060010162000a88565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ad88262000aab565b9050919050565b62000aea8162000acb565b811462000af657600080fd5b50565b60008151905062000b0a8162000adf565b92915050565b60006020828403121562000b295762000b2862000aa6565b5b600062000b398482850162000af9565b91505092915050565b62000b4d8162000acb565b82525050565b600060408201905062000b6a600083018562000b42565b62000b79602083018462000b42565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff82169050919050565b600062000bf88262000bde565b915060ff820362000c0e5762000c0d62000baf565b5b600182019050919050565b6000819050919050565b62000c2e8162000c19565b82525050565b600060208201905062000c4b600083018462000c23565b92915050565b60805160a05161297462000caf600039600081816108b0015281816112cb0152818161132201526115990152600081816105d701528181611c4001528181611d2101528181611d4801528181611de40152611e0b01526129746000f3fe6080604052600436106101445760003560e01c80636d204f50116100b6578063a5ece9411161006f578063a5ece9411461045b578063a9059cbb14610486578063dd62ed3e146104c3578063efdee94f14610500578063f2fde38b1461052b578063f5648a4f146105545761014b565b80636d204f501461034b57806370a0823114610374578063715018a6146103b15780638da5cb5b146103c857806395d89b41146103f3578063a457c2d71461041e5761014b565b806323b872dd1161010857806323b872dd14610225578063313ce56714610262578063395093511461028d5780633f9ef173146102ca57806348b3626b146102f557806349bd5a5e146103205761014b565b806306fdde0314610150578063095ea7b31461017b5780631694505e146101b857806318160ddd146101e35780631c1702f31461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561057f565b6040516101729190612011565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906120cc565b6105bc565b6040516101af9190612127565b60405180910390f35b3480156101c457600080fd5b506101cd6105d3565b6040516101da9190612151565b60405180910390f35b3480156101ef57600080fd5b506101f86105fb565b604051610205919061217b565b60405180910390f35b34801561021a57600080fd5b5061022361060c565b005b34801561023157600080fd5b5061024c60048036038101906102479190612196565b6106be565b6040516102599190612127565b60405180910390f35b34801561026e57600080fd5b506102776107f1565b6040516102849190612205565b60405180910390f35b34801561029957600080fd5b506102b460048036038101906102af91906120cc565b6107fa565b6040516102c19190612127565b60405180910390f35b3480156102d657600080fd5b506102df610898565b6040516102ec919061217b565b60405180910390f35b34801561030157600080fd5b5061030a6108a2565b604051610317919061217b565b60405180910390f35b34801561032c57600080fd5b506103356108ac565b6040516103429190612151565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d919061224c565b6108d4565b005b34801561038057600080fd5b5061039b6004803603810190610396919061229f565b610a05565b6040516103a8919061217b565b60405180910390f35b3480156103bd57600080fd5b506103c6610a4e565b005b3480156103d457600080fd5b506103dd610b26565b6040516103ea9190612151565b60405180910390f35b3480156103ff57600080fd5b50610408610b4f565b6040516104159190612011565b60405180910390f35b34801561042a57600080fd5b50610445600480360381019061044091906120cc565b610b8c565b6040516104529190612127565b60405180910390f35b34801561046757600080fd5b50610470610cb3565b60405161047d9190612151565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a891906120cc565b610ccf565b6040516104ba9190612127565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e591906122cc565b610ce6565b6040516104f7919061217b565b60405180910390f35b34801561050c57600080fd5b50610515610d6d565b6040516105229190612151565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d919061229f565b610d89565b005b34801561056057600080fd5b50610569610ed0565b6040516105769190612127565b60405180910390f35b60606040518060400160405280600881526020017f46726f6741726d79000000000000000000000000000000000000000000000000815250905090565b60006105c9338484610f88565b6001905092915050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600068056bc75e2d63100000905090565b6106146110e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106989061237e565b60405180910390fd5b6001600d60006101000a81548160ff021916908315150217905550565b60006106cb8484846110ee565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561075457600080fd5b6107e6843384600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107e191906123cd565b610f88565b600190509392505050565b60006009905090565b600061088e338484600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108899190612401565b610f88565b6001905092915050565b6000600254905090565b6000600154905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6108dc6110e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109609061237e565b60405180910390fd5b73602f77aad9a03e11673256ac3e9e417c5cacdd2573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156109bb575060198360ff16105b80156109ca575060198260ff16105b80156109d9575060198160ff16105b6109e257600080fd5b8260ff166001819055508160ff166002819055508060ff16600381905550505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a566110e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada9061237e565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f46524f4753000000000000000000000000000000000000000000000000000000815250905090565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610c1757600080fd5b610ca9338484600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca491906123cd565b610f88565b6001905092915050565b600073a5d363cd23d13e5add4226aa81516556f3d3d4f4905090565b6000610cdc3384846110ee565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073602f77aad9a03e11673256ac3e9e417c5cacdd25905090565b610d916110e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e159061237e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e84906124a7565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073602f77aad9a03e11673256ac3e9e417c5cacdd2573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015610f215750600047115b610f2a57600080fd5b73a5d363cd23d13e5add4226aa81516556f3d3d4f473ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f84573d6000803e3d6000fd5b5090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ff25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610ffb57600080fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110d9919061217b565b60405180910390a3505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156111585750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156111645750600081115b8015611178575061117483610a05565b8111155b80156112385750600d60009054906101000a900460ff16806111e35750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806112375750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b80156112c05750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806112bf5750603268056bc75e2d631000006112a891906124f6565b816112b284610a05565b6112bc9190612401565b11155b5b6112c957600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561137157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b806113c55750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806114195750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115345780600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461146d91906123cd565b9250508190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114c39190612401565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611527919061217b565b60405180910390a361180d565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461158391906123cd565b9250508190555060006004541180156115e757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611709576064600454826115fc9190612527565b61160691906124f6565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116549190612401565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600454856116ba9190612527565b6116c491906124f6565b6040516116d1919061217b565b60405180910390a3610fa068056bc75e2d631000006116f091906124f6565b6116f930610a05565b111561170857611707611812565b5b5b6064600454826117199190612527565b61172391906124f6565b8161172e91906123cd565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461177c9190612401565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600454856117e29190612527565b6117ec91906124f6565b846117f791906123cd565b604051611804919061217b565b60405180910390a35b505050565b600061181d30610a05565b9050600061185e60026118506004546118426064600354611a9390919063ffffffff16565b611b0d90919063ffffffff16565b611b0d90919063ffffffff16565b905060006118758284611b0d90919063ffffffff16565b9050600061188c8285611b5790919063ffffffff16565b905061189781611ba1565b60006118c36003546118b56002600454611a9390919063ffffffff16565b611b5790919063ffffffff16565b905060006118da8247611b0d90919063ffffffff16565b90506118e68482611dde565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56183828660405161191993929190612569565b60405180910390a160008047905073a5d363cd23d13e5add4226aa81516556f3d3d4f473ffffffffffffffffffffffffffffffffffffffff166119a160646119936119846004546119766064600254611a9390919063ffffffff16565b611b0d90919063ffffffff16565b85611a9390919063ffffffff16565b611b0d90919063ffffffff16565b6040516119ad906125d1565b60006040518083038185875af1925050503d80600081146119ea576040519150601f19603f3d011682016040523d82523d6000602084013e6119ef565b606091505b505080925050816119ff57600080fd5b73a5d363cd23d13e5add4226aa81516556f3d3d4f473ffffffffffffffffffffffffffffffffffffffff1647604051611a37906125d1565b60006040518083038185875af1925050503d8060008114611a74576040519150601f19603f3d011682016040523d82523d6000602084013e611a79565b606091505b50508092505081611a8957600080fd5b5050505050505050565b6000808303611aa55760009050611b07565b60008284611ab39190612527565b9050828482611ac291906124f6565b14611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af990612658565b60405180910390fd5b809150505b92915050565b6000611b4f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611eba565b905092915050565b6000611b9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f1d565b905092915050565b6000600267ffffffffffffffff811115611bbe57611bbd612678565b5b604051908082528060200260200182016040528015611bec5781602001602082028036833780820191505090505b5090503081600081518110611c0457611c036126a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccd91906126eb565b81600181518110611ce157611ce06126a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d46307f000000000000000000000000000000000000000000000000000000000000000084610f88565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611da895949392919061281b565b600060405180830381600087803b158015611dc257600080fd5b505af1158015611dd6573d6000803e3d6000fd5b505050505050565b611e09307f000000000000000000000000000000000000000000000000000000000000000084610f88565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401611e7096959493929190612875565b60606040518083038185885af1158015611e8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eb391906128eb565b5050505050565b60008083118290611f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef89190612011565b60405180910390fd5b5060008385611f1091906124f6565b9050809150509392505050565b6000838311158290611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c9190612011565b60405180910390fd5b5060008385611f7491906123cd565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fbb578082015181840152602081019050611fa0565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fe382611f81565b611fed8185611f8c565b9350611ffd818560208601611f9d565b61200681611fc7565b840191505092915050565b6000602082019050818103600083015261202b8184611fd8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061206382612038565b9050919050565b61207381612058565b811461207e57600080fd5b50565b6000813590506120908161206a565b92915050565b6000819050919050565b6120a981612096565b81146120b457600080fd5b50565b6000813590506120c6816120a0565b92915050565b600080604083850312156120e3576120e2612033565b5b60006120f185828601612081565b9250506020612102858286016120b7565b9150509250929050565b60008115159050919050565b6121218161210c565b82525050565b600060208201905061213c6000830184612118565b92915050565b61214b81612058565b82525050565b60006020820190506121666000830184612142565b92915050565b61217581612096565b82525050565b6000602082019050612190600083018461216c565b92915050565b6000806000606084860312156121af576121ae612033565b5b60006121bd86828701612081565b93505060206121ce86828701612081565b92505060406121df868287016120b7565b9150509250925092565b600060ff82169050919050565b6121ff816121e9565b82525050565b600060208201905061221a60008301846121f6565b92915050565b612229816121e9565b811461223457600080fd5b50565b60008135905061224681612220565b92915050565b60008060006060848603121561226557612264612033565b5b600061227386828701612237565b935050602061228486828701612237565b925050604061229586828701612237565b9150509250925092565b6000602082840312156122b5576122b4612033565b5b60006122c384828501612081565b91505092915050565b600080604083850312156122e3576122e2612033565b5b60006122f185828601612081565b925050602061230285828601612081565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000612368602183611f8c565b91506123738261230c565b604082019050919050565b600060208201905081810360008301526123978161235b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123d882612096565b91506123e383612096565b92508282039050818111156123fb576123fa61239e565b5b92915050565b600061240c82612096565b915061241783612096565b925082820190508082111561242f5761242e61239e565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573732e00000000000000000000000000000000000000000000000000602082015250565b6000612491602783611f8c565b915061249c82612435565b604082019050919050565b600060208201905081810360008301526124c081612484565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061250182612096565b915061250c83612096565b92508261251c5761251b6124c7565b5b828204905092915050565b600061253282612096565b915061253d83612096565b925082820261254b81612096565b915082820484148315176125625761256161239e565b5b5092915050565b600060608201905061257e600083018661216c565b61258b602083018561216c565b612598604083018461216c565b949350505050565b600081905092915050565b50565b60006125bb6000836125a0565b91506125c6826125ab565b600082019050919050565b60006125dc826125ae565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612642602183611f8c565b915061264d826125e6565b604082019050919050565b6000602082019050818103600083015261267181612635565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506126e58161206a565b92915050565b60006020828403121561270157612700612033565b5b600061270f848285016126d6565b91505092915050565b6000819050919050565b6000819050919050565b600061274761274261273d84612718565b612722565b612096565b9050919050565b6127578161272c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61279281612058565b82525050565b60006127a48383612789565b60208301905092915050565b6000602082019050919050565b60006127c88261275d565b6127d28185612768565b93506127dd83612779565b8060005b8381101561280e5781516127f58882612798565b9750612800836127b0565b9250506001810190506127e1565b5085935050505092915050565b600060a082019050612830600083018861216c565b61283d602083018761274e565b818103604083015261284f81866127bd565b905061285e6060830185612142565b61286b608083018461216c565b9695505050505050565b600060c08201905061288a6000830189612142565b612897602083018861216c565b6128a4604083018761274e565b6128b1606083018661274e565b6128be6080830185612142565b6128cb60a083018461216c565b979650505050505050565b6000815190506128e5816120a0565b92915050565b60008060006060848603121561290457612903612033565b5b6000612912868287016128d6565b9350506020612923868287016128d6565b9250506040612934868287016128d6565b915050925092509256fea2646970667358221220040b9d854ec565a68923dc66e7d22f5ed72ec8e908d3bcfce62a00e67366ad5864736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80636d204f50116100b6578063a5ece9411161006f578063a5ece9411461045b578063a9059cbb14610486578063dd62ed3e146104c3578063efdee94f14610500578063f2fde38b1461052b578063f5648a4f146105545761014b565b80636d204f501461034b57806370a0823114610374578063715018a6146103b15780638da5cb5b146103c857806395d89b41146103f3578063a457c2d71461041e5761014b565b806323b872dd1161010857806323b872dd14610225578063313ce56714610262578063395093511461028d5780633f9ef173146102ca57806348b3626b146102f557806349bd5a5e146103205761014b565b806306fdde0314610150578063095ea7b31461017b5780631694505e146101b857806318160ddd146101e35780631c1702f31461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561057f565b6040516101729190612011565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906120cc565b6105bc565b6040516101af9190612127565b60405180910390f35b3480156101c457600080fd5b506101cd6105d3565b6040516101da9190612151565b60405180910390f35b3480156101ef57600080fd5b506101f86105fb565b604051610205919061217b565b60405180910390f35b34801561021a57600080fd5b5061022361060c565b005b34801561023157600080fd5b5061024c60048036038101906102479190612196565b6106be565b6040516102599190612127565b60405180910390f35b34801561026e57600080fd5b506102776107f1565b6040516102849190612205565b60405180910390f35b34801561029957600080fd5b506102b460048036038101906102af91906120cc565b6107fa565b6040516102c19190612127565b60405180910390f35b3480156102d657600080fd5b506102df610898565b6040516102ec919061217b565b60405180910390f35b34801561030157600080fd5b5061030a6108a2565b604051610317919061217b565b60405180910390f35b34801561032c57600080fd5b506103356108ac565b6040516103429190612151565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d919061224c565b6108d4565b005b34801561038057600080fd5b5061039b6004803603810190610396919061229f565b610a05565b6040516103a8919061217b565b60405180910390f35b3480156103bd57600080fd5b506103c6610a4e565b005b3480156103d457600080fd5b506103dd610b26565b6040516103ea9190612151565b60405180910390f35b3480156103ff57600080fd5b50610408610b4f565b6040516104159190612011565b60405180910390f35b34801561042a57600080fd5b50610445600480360381019061044091906120cc565b610b8c565b6040516104529190612127565b60405180910390f35b34801561046757600080fd5b50610470610cb3565b60405161047d9190612151565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a891906120cc565b610ccf565b6040516104ba9190612127565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e591906122cc565b610ce6565b6040516104f7919061217b565b60405180910390f35b34801561050c57600080fd5b50610515610d6d565b6040516105229190612151565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d919061229f565b610d89565b005b34801561056057600080fd5b50610569610ed0565b6040516105769190612127565b60405180910390f35b60606040518060400160405280600881526020017f46726f6741726d79000000000000000000000000000000000000000000000000815250905090565b60006105c9338484610f88565b6001905092915050565b60007f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d905090565b600068056bc75e2d63100000905090565b6106146110e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106989061237e565b60405180910390fd5b6001600d60006101000a81548160ff021916908315150217905550565b60006106cb8484846110ee565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561075457600080fd5b6107e6843384600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107e191906123cd565b610f88565b600190509392505050565b60006009905090565b600061088e338484600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108899190612401565b610f88565b6001905092915050565b6000600254905090565b6000600154905090565b60007f00000000000000000000000025a826714fa6d5ef2eacc13038ddb61c451990a3905090565b6108dc6110e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109609061237e565b60405180910390fd5b73602f77aad9a03e11673256ac3e9e417c5cacdd2573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156109bb575060198360ff16105b80156109ca575060198260ff16105b80156109d9575060198160ff16105b6109e257600080fd5b8260ff166001819055508160ff166002819055508060ff16600381905550505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a566110e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada9061237e565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f46524f4753000000000000000000000000000000000000000000000000000000815250905090565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610c1757600080fd5b610ca9338484600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca491906123cd565b610f88565b6001905092915050565b600073a5d363cd23d13e5add4226aa81516556f3d3d4f4905090565b6000610cdc3384846110ee565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073602f77aad9a03e11673256ac3e9e417c5cacdd25905090565b610d916110e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e159061237e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e84906124a7565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073602f77aad9a03e11673256ac3e9e417c5cacdd2573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015610f215750600047115b610f2a57600080fd5b73a5d363cd23d13e5add4226aa81516556f3d3d4f473ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f84573d6000803e3d6000fd5b5090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ff25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610ffb57600080fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110d9919061217b565b60405180910390a3505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156111585750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156111645750600081115b8015611178575061117483610a05565b8111155b80156112385750600d60009054906101000a900460ff16806111e35750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806112375750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b80156112c05750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806112bf5750603268056bc75e2d631000006112a891906124f6565b816112b284610a05565b6112bc9190612401565b11155b5b6112c957600080fd5b7f00000000000000000000000025a826714fa6d5ef2eacc13038ddb61c451990a373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561137157507f00000000000000000000000025a826714fa6d5ef2eacc13038ddb61c451990a373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b806113c55750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806114195750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115345780600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461146d91906123cd565b9250508190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114c39190612401565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611527919061217b565b60405180910390a361180d565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461158391906123cd565b9250508190555060006004541180156115e757507f00000000000000000000000025a826714fa6d5ef2eacc13038ddb61c451990a373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611709576064600454826115fc9190612527565b61160691906124f6565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116549190612401565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600454856116ba9190612527565b6116c491906124f6565b6040516116d1919061217b565b60405180910390a3610fa068056bc75e2d631000006116f091906124f6565b6116f930610a05565b111561170857611707611812565b5b5b6064600454826117199190612527565b61172391906124f6565b8161172e91906123cd565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461177c9190612401565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600454856117e29190612527565b6117ec91906124f6565b846117f791906123cd565b604051611804919061217b565b60405180910390a35b505050565b600061181d30610a05565b9050600061185e60026118506004546118426064600354611a9390919063ffffffff16565b611b0d90919063ffffffff16565b611b0d90919063ffffffff16565b905060006118758284611b0d90919063ffffffff16565b9050600061188c8285611b5790919063ffffffff16565b905061189781611ba1565b60006118c36003546118b56002600454611a9390919063ffffffff16565b611b5790919063ffffffff16565b905060006118da8247611b0d90919063ffffffff16565b90506118e68482611dde565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56183828660405161191993929190612569565b60405180910390a160008047905073a5d363cd23d13e5add4226aa81516556f3d3d4f473ffffffffffffffffffffffffffffffffffffffff166119a160646119936119846004546119766064600254611a9390919063ffffffff16565b611b0d90919063ffffffff16565b85611a9390919063ffffffff16565b611b0d90919063ffffffff16565b6040516119ad906125d1565b60006040518083038185875af1925050503d80600081146119ea576040519150601f19603f3d011682016040523d82523d6000602084013e6119ef565b606091505b505080925050816119ff57600080fd5b73a5d363cd23d13e5add4226aa81516556f3d3d4f473ffffffffffffffffffffffffffffffffffffffff1647604051611a37906125d1565b60006040518083038185875af1925050503d8060008114611a74576040519150601f19603f3d011682016040523d82523d6000602084013e611a79565b606091505b50508092505081611a8957600080fd5b5050505050505050565b6000808303611aa55760009050611b07565b60008284611ab39190612527565b9050828482611ac291906124f6565b14611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af990612658565b60405180910390fd5b809150505b92915050565b6000611b4f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611eba565b905092915050565b6000611b9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f1d565b905092915050565b6000600267ffffffffffffffff811115611bbe57611bbd612678565b5b604051908082528060200260200182016040528015611bec5781602001602082028036833780820191505090505b5090503081600081518110611c0457611c036126a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccd91906126eb565b81600181518110611ce157611ce06126a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d46307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610f88565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611da895949392919061281b565b600060405180830381600087803b158015611dc257600080fd5b505af1158015611dd6573d6000803e3d6000fd5b505050505050565b611e09307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610f88565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401611e7096959493929190612875565b60606040518083038185885af1158015611e8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eb391906128eb565b5050505050565b60008083118290611f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef89190612011565b60405180910390fd5b5060008385611f1091906124f6565b9050809150509392505050565b6000838311158290611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c9190612011565b60405180910390fd5b5060008385611f7491906123cd565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fbb578082015181840152602081019050611fa0565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fe382611f81565b611fed8185611f8c565b9350611ffd818560208601611f9d565b61200681611fc7565b840191505092915050565b6000602082019050818103600083015261202b8184611fd8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061206382612038565b9050919050565b61207381612058565b811461207e57600080fd5b50565b6000813590506120908161206a565b92915050565b6000819050919050565b6120a981612096565b81146120b457600080fd5b50565b6000813590506120c6816120a0565b92915050565b600080604083850312156120e3576120e2612033565b5b60006120f185828601612081565b9250506020612102858286016120b7565b9150509250929050565b60008115159050919050565b6121218161210c565b82525050565b600060208201905061213c6000830184612118565b92915050565b61214b81612058565b82525050565b60006020820190506121666000830184612142565b92915050565b61217581612096565b82525050565b6000602082019050612190600083018461216c565b92915050565b6000806000606084860312156121af576121ae612033565b5b60006121bd86828701612081565b93505060206121ce86828701612081565b92505060406121df868287016120b7565b9150509250925092565b600060ff82169050919050565b6121ff816121e9565b82525050565b600060208201905061221a60008301846121f6565b92915050565b612229816121e9565b811461223457600080fd5b50565b60008135905061224681612220565b92915050565b60008060006060848603121561226557612264612033565b5b600061227386828701612237565b935050602061228486828701612237565b925050604061229586828701612237565b9150509250925092565b6000602082840312156122b5576122b4612033565b5b60006122c384828501612081565b91505092915050565b600080604083850312156122e3576122e2612033565b5b60006122f185828601612081565b925050602061230285828601612081565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000612368602183611f8c565b91506123738261230c565b604082019050919050565b600060208201905081810360008301526123978161235b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123d882612096565b91506123e383612096565b92508282039050818111156123fb576123fa61239e565b5b92915050565b600061240c82612096565b915061241783612096565b925082820190508082111561242f5761242e61239e565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573732e00000000000000000000000000000000000000000000000000602082015250565b6000612491602783611f8c565b915061249c82612435565b604082019050919050565b600060208201905081810360008301526124c081612484565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061250182612096565b915061250c83612096565b92508261251c5761251b6124c7565b5b828204905092915050565b600061253282612096565b915061253d83612096565b925082820261254b81612096565b915082820484148315176125625761256161239e565b5b5092915050565b600060608201905061257e600083018661216c565b61258b602083018561216c565b612598604083018461216c565b949350505050565b600081905092915050565b50565b60006125bb6000836125a0565b91506125c6826125ab565b600082019050919050565b60006125dc826125ae565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612642602183611f8c565b915061264d826125e6565b604082019050919050565b6000602082019050818103600083015261267181612635565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506126e58161206a565b92915050565b60006020828403121561270157612700612033565b5b600061270f848285016126d6565b91505092915050565b6000819050919050565b6000819050919050565b600061274761274261273d84612718565b612722565b612096565b9050919050565b6127578161272c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61279281612058565b82525050565b60006127a48383612789565b60208301905092915050565b6000602082019050919050565b60006127c88261275d565b6127d28185612768565b93506127dd83612779565b8060005b8381101561280e5781516127f58882612798565b9750612800836127b0565b9250506001810190506127e1565b5085935050505092915050565b600060a082019050612830600083018861216c565b61283d602083018761274e565b818103604083015261284f81866127bd565b905061285e6060830185612142565b61286b608083018461216c565b9695505050505050565b600060c08201905061288a6000830189612142565b612897602083018861216c565b6128a4604083018761274e565b6128b1606083018661274e565b6128be6080830185612142565b6128cb60a083018461216c565b979650505050505050565b6000815190506128e5816120a0565b92915050565b60008060006060848603121561290457612903612033565b5b6000612912868287016128d6565b9350506020612923868287016128d6565b9250506040612934868287016128d6565b915050925092509256fea2646970667358221220040b9d854ec565a68923dc66e7d22f5ed72ec8e908d3bcfce62a00e67366ad5864736f6c63430008130033

Deployed Bytecode Sourcemap

10545:9466:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13184:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14445:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13758:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13416:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16252:81;;;;;;;;;;;;;:::i;:::-;;14606:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13340:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14929:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13579:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13501:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13669:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15927:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14046:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5528:80;;;;;;;;;;;;;:::i;:::-;;5331:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13260:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15140:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13952:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14278:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14147:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13860:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5614:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15684:234;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13184:70;13223:13;13247:4;;;;;;;;;;;;;;;;;13240:11;;13184:70;:::o;14445:152::-;14513:4;14530:37;14539:10;14551:7;14560:6;14530:8;:37::i;:::-;14585:4;14578:11;;14445:152;;;;:::o;13758:96::-;13808:7;13834:16;13819:32;;13758:96;:::o;13416:79::-;13462:7;11182:10;13473:19;;13416:79;:::o;16252:81::-;5452:12;:10;:12::i;:::-;5442:22;;:6;;;;;;;;;;:22;;;5434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16321:4:::1;16306:12;;:19;;;;;;;;;;;;;;;;;;16252:81::o:0;14606:314::-;14695:4;14712:36;14722:6;14730:9;14741:6;14712:9;:36::i;:::-;14777:11;:19;14789:6;14777:19;;;;;;;;;;;;;;;:31;14797:10;14777:31;;;;;;;;;;;;;;;;14767:6;:41;;14759:50;;;;;;14820:70;14829:6;14837:10;14883:6;14849:11;:19;14861:6;14849:19;;;;;;;;;;;;;;;:31;14869:10;14849:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;14820:8;:70::i;:::-;14908:4;14901:11;;14606:314;;;;;:::o;13340:70::-;13383:5;10746:1;13392:15;;13340:70;:::o;14929:202::-;15011:4;15027:74;15036:10;15047:7;15090:10;15055:11;:23;15067:10;15055:23;;;;;;;;;;;;;;;:32;15079:7;15055:32;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;15027:8;:74::i;:::-;15119:4;15112:11;;14929:202;;;;:::o;13579:84::-;13629:7;13647:13;;13640:20;;13579:84;:::o;13501:72::-;13545:7;13563;;13556:14;;13501:72;:::o;13669:83::-;13717:7;13735:14;13728:21;;13669:83;:::o;15927:317::-;5452:12;:10;:12::i;:::-;5442:22;;:6;;;;;;;;;;:22;;;5434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11359:42:::1;16038:29;;:10;:29;;;:47;;;;;16083:2;16071:9;:14;;;16038:47;:71;;;;;16107:2;16089:15;:20;;;16038:71;:89;;;;;16125:2;16113:9;:14;;;16038:89;16030:98;;;::::0;::::1;;16149:9;16139:19;;:7;:19;;;;16185:15;16169:31;;:13;:31;;;;16227:9;16211:25;;:13;:25;;;;15927:317:::0;;;:::o;14046:95::-;14103:7;14121:8;:17;14130:7;14121:17;;;;;;;;;;;;;;;;14114:24;;14046:95;;;:::o;5528:80::-;5452:12;:10;:12::i;:::-;5442:22;;:6;;;;;;;;;;:22;;;5434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5603:1:::1;5586:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5528:80::o:0;5331:65::-;5369:7;5387:6;;;;;;;;;;;5380:13;;5331:65;:::o;13260:74::-;13301:13;13325:6;;;;;;;;;;;;;;;;;13318:13;;13260:74;:::o;15140:284::-;15227:4;15271:11;:23;15283:10;15271:23;;;;;;;;;;;;;;;:32;15295:7;15271:32;;;;;;;;;;;;;;;;15252:15;:51;;15244:60;;;;;;15315:79;15324:10;15335:7;15378:15;15343:11;:23;15355:10;15343:23;;;;;;;;;;;;;;;:32;15367:7;15343:32;;;;;;;;;;;;;;;;:50;;;;:::i;:::-;15315:8;:79::i;:::-;15412:4;15405:11;;15140:284;;;;:::o;13952:88::-;14003:7;11468:42;14014:23;;13952:88;:::o;14278:158::-;14349:4;14366:40;14376:10;14388:9;14399:6;14366:9;:40::i;:::-;14424:4;14417:11;;14278:158;;;;:::o;14147:122::-;14221:7;14239:11;:18;14251:5;14239:18;;;;;;;;;;;;;;;:27;14258:7;14239:27;;;;;;;;;;;;;;;;14232:34;;14147:122;;;;:::o;13860:86::-;13910:7;11359:42;13921:22;;13860:86;:::o;5614:193::-;5452:12;:10;:12::i;:::-;5442:22;;:6;;;;;;;;;;:22;;;5434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5725:1:::1;5705:22;;:8;:22;;::::0;5697:74:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5791:8;5782:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5614:193:::0;:::o;15684:234::-;15730:14;11359:42;15765:29;;:10;:29;;;:58;;;;;15822:1;15798:21;:25;15765:58;15757:67;;;;;;11468:42;15835:25;;:48;15861:21;15835:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15684:234;:::o;15433:242::-;11307:1;15525:20;;:5;:20;;;;:46;;;;;11307:1;15549:22;;:7;:22;;;;15525:46;15517:55;;;;;;15613:6;15583:11;:18;15595:5;15583:18;;;;;;;;;;;;;;;:27;15602:7;15583:27;;;;;;;;;;;;;;;:36;;;;15651:7;15635:32;;15644:5;15635:32;;;15660:6;15635:32;;;;;;:::i;:::-;;;;;;;;15433:242;;;:::o;5074:84::-;5127:7;5145:10;5138:17;;5074:84;:::o;16342:1121::-;11307:1;16446:19;;:4;:19;;;;:40;;;;;11307:1;16469:17;;:2;:17;;;;16446:40;16445:58;;;;;16501:1;16492:6;:10;16445:58;:102;;;;;16531:15;16541:4;16531:9;:15::i;:::-;16521:6;:25;;16445:102;:144;;;;;16552:12;;;;;;;;;;;:23;;;;16568:3;:7;16572:2;16568:7;;;;;;;;;;;;;;;;;;;;;;;;;16552:23;:36;;;;16579:3;:9;16583:4;16579:9;;;;;;;;;;;;;;;;;;;;;;;;;16552:36;16445:144;:217;;;;;16607:3;:7;16611:2;16607:7;;;;;;;;;;;;;;;;;;;;;;;;;:54;;;;16659:2;11182:10;16644:17;;;;:::i;:::-;16634:6;16618:13;16628:2;16618:9;:13::i;:::-;:22;;;;:::i;:::-;:43;;16607:54;16445:217;16423:250;;;;;;16697:14;16689:22;;:4;:22;;;;:46;;;;;16721:14;16715:20;;:2;:20;;;;16689:46;16688:61;;;;16740:3;:9;16744:4;16740:9;;;;;;;;;;;;;;;;;;;;;;;;;16688:61;:72;;;;16753:3;:7;16757:2;16753:7;;;;;;;;;;;;;;;;;;;;;;;;;16688:72;16684:772;;;16796:6;16778:8;:14;16787:4;16778:14;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;16833:6;16817:8;:12;16826:2;16817:12;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;16874:2;16859:26;;16868:4;16859:26;;;16878:6;16859:26;;;;;;:::i;:::-;;;;;;;;16684:772;;;16936:6;16918:8;:14;16927:4;16918:14;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;16976:1;16962:10;;16961:16;:40;;;;;16987:14;16981:20;;:2;:20;;;16961:40;16957:340;;;17073:3;17059:10;;17049:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17022:8;:23;17039:4;17022:23;;;;;;;;;;;;;;;;:54;;;;;;;:::i;:::-;;;;;;;;17123:4;17100:58;;17109:4;17100:58;;;17154:3;17140:10;;17130:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17100:58;;;;;;:::i;:::-;;;;;;;;17223:4;11182:10;17208:19;;;;:::i;:::-;17181:24;17199:4;17181:9;:24::i;:::-;:46;17177:105;;;17252:10;:8;:10::i;:::-;17177:105;16957:340;17361:3;17347:10;;17337:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17327:6;:38;;;;:::i;:::-;17311:8;:12;17320:2;17311:12;;;;;;;;;;;;;;;;:54;;;;;;;:::i;:::-;;;;;;;;17400:2;17385:58;;17394:4;17385:58;;;17438:3;17424:10;;17414:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17404:6;:38;;;;:::i;:::-;17385:58;;;;;;:::i;:::-;;;;;;;;16684:772;16342:1121;;;:::o;19001:1007::-;19040:23;19066:24;19084:4;19066:9;:24::i;:::-;19040:50;;19101:29;19133:45;19176:1;19133:38;19160:10;;19133:22;19151:3;19133:13;;:17;;:22;;;;:::i;:::-;:26;;:38;;;;:::i;:::-;:42;;:45;;;;:::i;:::-;19101:77;;19189:26;19218:42;19238:21;19218:15;:19;;:42;;;;:::i;:::-;19189:71;;19271:26;19300:39;19320:18;19300:15;:19;;:39;;;;:::i;:::-;19271:68;;19350:37;19368:18;19350:17;:37::i;:::-;19398:15;19416:36;19438:13;;19416:17;19431:1;19416:10;;:14;;:17;;;;:::i;:::-;:21;;:36;;;;:::i;:::-;19398:54;;19463:23;19489:34;19515:7;19489:21;:25;;:34;;;;:::i;:::-;19463:60;;19534:49;19547:18;19567:15;19534:12;:49::i;:::-;19599:71;19614:18;19634:15;19651:18;19599:71;;;;;;;;:::i;:::-;;;;;;;;19681:12;19704:21;19728;19704:45;;11468:42;19773:21;;19802:66;19864:3;19802:57;19820:38;19847:10;;19820:22;19838:3;19820:13;;:17;;:22;;;;:::i;:::-;:26;;:38;;;;:::i;:::-;19802:13;:17;;:57;;;;:::i;:::-;:61;;:66;;;;:::i;:::-;19773:100;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19760:113;;;;;19892:7;19884:16;;;;;;11572:42;19924:15;;19947:21;19924:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19911:62;;;;;19992:7;19984:16;;;;;;19029:979;;;;;;;;19001:1007::o;7431:462::-;7489:7;7730:1;7725;:6;7721:47;;7755:1;7748:8;;;;7721:47;7780:9;7796:1;7792;:5;;;;:::i;:::-;7780:17;;7825:1;7820;7816;:5;;;;:::i;:::-;:10;7808:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;7884:1;7877:8;;;7431:462;;;;;:::o;8369:132::-;8427:7;8454:39;8458:1;8461;8454:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;8447:46;;8369:132;;;;:::o;6541:136::-;6599:7;6626:43;6630:1;6633;6626:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;6619:50;;6541:136;;;;:::o;17472:399::-;17539:21;17577:1;17563:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17539:40;;17608:4;17590;17595:1;17590:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17634:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17624:4;17629:1;17624:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;17668:63;17685:4;17700:16;17719:11;17668:8;:63::i;:::-;17742:16;:67;;;17810:11;17823:1;17826:4;17840;17847:15;17742:121;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17528:343;17472:399;:::o;18474:519::-;18622:63;18639:4;18654:16;18673:11;18622:8;:63::i;:::-;18728:16;:32;;;18768:9;18801:4;18821:11;18847:1;18890;11246:6;18959:15;18728:257;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18474:519;;:::o;8997:278::-;9083:7;9115:1;9111;:5;9118:12;9103:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9142:9;9158:1;9154;:5;;;;:::i;:::-;9142:17;;9266:1;9259:8;;;8997:278;;;;;:::o;6980:192::-;7066:7;7099:1;7094;:6;;7102:12;7086:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7126:9;7142:1;7138;:5;;;;:::i;:::-;7126:17;;7163:1;7156:8;;;6980:192;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:222::-;4015:4;4053:2;4042:9;4038:18;4030:26;;4066:71;4134:1;4123:9;4119:17;4110:6;4066:71;:::i;:::-;3922:222;;;;:::o;4150:619::-;4227:6;4235;4243;4292:2;4280:9;4271:7;4267:23;4263:32;4260:119;;;4298:79;;:::i;:::-;4260:119;4418:1;4443:53;4488:7;4479:6;4468:9;4464:22;4443:53;:::i;:::-;4433:63;;4389:117;4545:2;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4516:118;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4150:619;;;;;:::o;4775:86::-;4810:7;4850:4;4843:5;4839:16;4828:27;;4775:86;;;:::o;4867:112::-;4950:22;4966:5;4950:22;:::i;:::-;4945:3;4938:35;4867:112;;:::o;4985:214::-;5074:4;5112:2;5101:9;5097:18;5089:26;;5125:67;5189:1;5178:9;5174:17;5165:6;5125:67;:::i;:::-;4985:214;;;;:::o;5205:118::-;5276:22;5292:5;5276:22;:::i;:::-;5269:5;5266:33;5256:61;;5313:1;5310;5303:12;5256:61;5205:118;:::o;5329:135::-;5373:5;5411:6;5398:20;5389:29;;5427:31;5452:5;5427:31;:::i;:::-;5329:135;;;;:::o;5470:607::-;5541:6;5549;5557;5606:2;5594:9;5585:7;5581:23;5577:32;5574:119;;;5612:79;;:::i;:::-;5574:119;5732:1;5757:51;5800:7;5791:6;5780:9;5776:22;5757:51;:::i;:::-;5747:61;;5703:115;5857:2;5883:51;5926:7;5917:6;5906:9;5902:22;5883:51;:::i;:::-;5873:61;;5828:116;5983:2;6009:51;6052:7;6043:6;6032:9;6028:22;6009:51;:::i;:::-;5999:61;;5954:116;5470:607;;;;;:::o;6083:329::-;6142:6;6191:2;6179:9;6170:7;6166:23;6162:32;6159:119;;;6197:79;;:::i;:::-;6159:119;6317:1;6342:53;6387:7;6378:6;6367:9;6363:22;6342:53;:::i;:::-;6332:63;;6288:117;6083:329;;;;:::o;6418:474::-;6486:6;6494;6543:2;6531:9;6522:7;6518:23;6514:32;6511:119;;;6549:79;;:::i;:::-;6511:119;6669:1;6694:53;6739:7;6730:6;6719:9;6715:22;6694:53;:::i;:::-;6684:63;;6640:117;6796:2;6822:53;6867:7;6858:6;6847:9;6843:22;6822:53;:::i;:::-;6812:63;;6767:118;6418:474;;;;;:::o;6898:220::-;7038:34;7034:1;7026:6;7022:14;7015:58;7107:3;7102:2;7094:6;7090:15;7083:28;6898:220;:::o;7124:366::-;7266:3;7287:67;7351:2;7346:3;7287:67;:::i;:::-;7280:74;;7363:93;7452:3;7363:93;:::i;:::-;7481:2;7476:3;7472:12;7465:19;;7124:366;;;:::o;7496:419::-;7662:4;7700:2;7689:9;7685:18;7677:26;;7749:9;7743:4;7739:20;7735:1;7724:9;7720:17;7713:47;7777:131;7903:4;7777:131;:::i;:::-;7769:139;;7496:419;;;:::o;7921:180::-;7969:77;7966:1;7959:88;8066:4;8063:1;8056:15;8090:4;8087:1;8080:15;8107:194;8147:4;8167:20;8185:1;8167:20;:::i;:::-;8162:25;;8201:20;8219:1;8201:20;:::i;:::-;8196:25;;8245:1;8242;8238:9;8230:17;;8269:1;8263:4;8260:11;8257:37;;;8274:18;;:::i;:::-;8257:37;8107:194;;;;:::o;8307:191::-;8347:3;8366:20;8384:1;8366:20;:::i;:::-;8361:25;;8400:20;8418:1;8400:20;:::i;:::-;8395:25;;8443:1;8440;8436:9;8429:16;;8464:3;8461:1;8458:10;8455:36;;;8471:18;;:::i;:::-;8455:36;8307:191;;;;:::o;8504:226::-;8644:34;8640:1;8632:6;8628:14;8621:58;8713:9;8708:2;8700:6;8696:15;8689:34;8504:226;:::o;8736:366::-;8878:3;8899:67;8963:2;8958:3;8899:67;:::i;:::-;8892:74;;8975:93;9064:3;8975:93;:::i;:::-;9093:2;9088:3;9084:12;9077:19;;8736:366;;;:::o;9108:419::-;9274:4;9312:2;9301:9;9297:18;9289:26;;9361:9;9355:4;9351:20;9347:1;9336:9;9332:17;9325:47;9389:131;9515:4;9389:131;:::i;:::-;9381:139;;9108:419;;;:::o;9533:180::-;9581:77;9578:1;9571:88;9678:4;9675:1;9668:15;9702:4;9699:1;9692:15;9719:185;9759:1;9776:20;9794:1;9776:20;:::i;:::-;9771:25;;9810:20;9828:1;9810:20;:::i;:::-;9805:25;;9849:1;9839:35;;9854:18;;:::i;:::-;9839:35;9896:1;9893;9889:9;9884:14;;9719:185;;;;:::o;9910:410::-;9950:7;9973:20;9991:1;9973:20;:::i;:::-;9968:25;;10007:20;10025:1;10007:20;:::i;:::-;10002:25;;10062:1;10059;10055:9;10084:30;10102:11;10084:30;:::i;:::-;10073:41;;10263:1;10254:7;10250:15;10247:1;10244:22;10224:1;10217:9;10197:83;10174:139;;10293:18;;:::i;:::-;10174:139;9958:362;9910:410;;;;:::o;10326:442::-;10475:4;10513:2;10502:9;10498:18;10490:26;;10526:71;10594:1;10583:9;10579:17;10570:6;10526:71;:::i;:::-;10607:72;10675:2;10664:9;10660:18;10651:6;10607:72;:::i;:::-;10689;10757:2;10746:9;10742:18;10733:6;10689:72;:::i;:::-;10326:442;;;;;;:::o;10774:147::-;10875:11;10912:3;10897:18;;10774:147;;;;:::o;10927:114::-;;:::o;11047:398::-;11206:3;11227:83;11308:1;11303:3;11227:83;:::i;:::-;11220:90;;11319:93;11408:3;11319:93;:::i;:::-;11437:1;11432:3;11428:11;11421:18;;11047:398;;;:::o;11451:379::-;11635:3;11657:147;11800:3;11657:147;:::i;:::-;11650:154;;11821:3;11814:10;;11451:379;;;:::o;11836:220::-;11976:34;11972:1;11964:6;11960:14;11953:58;12045:3;12040:2;12032:6;12028:15;12021:28;11836:220;:::o;12062:366::-;12204:3;12225:67;12289:2;12284:3;12225:67;:::i;:::-;12218:74;;12301:93;12390:3;12301:93;:::i;:::-;12419:2;12414:3;12410:12;12403:19;;12062:366;;;:::o;12434:419::-;12600:4;12638:2;12627:9;12623:18;12615:26;;12687:9;12681:4;12677:20;12673:1;12662:9;12658:17;12651:47;12715:131;12841:4;12715:131;:::i;:::-;12707:139;;12434:419;;;:::o;12859:180::-;12907:77;12904:1;12897:88;13004:4;13001:1;12994:15;13028:4;13025:1;13018:15;13045:180;13093:77;13090:1;13083:88;13190:4;13187:1;13180:15;13214:4;13211:1;13204:15;13231:143;13288:5;13319:6;13313:13;13304:22;;13335:33;13362:5;13335:33;:::i;:::-;13231:143;;;;:::o;13380:351::-;13450:6;13499:2;13487:9;13478:7;13474:23;13470:32;13467:119;;;13505:79;;:::i;:::-;13467:119;13625:1;13650:64;13706:7;13697:6;13686:9;13682:22;13650:64;:::i;:::-;13640:74;;13596:128;13380:351;;;;:::o;13737:85::-;13782:7;13811:5;13800:16;;13737:85;;;:::o;13828:60::-;13856:3;13877:5;13870:12;;13828:60;;;:::o;13894:158::-;13952:9;13985:61;14003:42;14012:32;14038:5;14012:32;:::i;:::-;14003:42;:::i;:::-;13985:61;:::i;:::-;13972:74;;13894:158;;;:::o;14058:147::-;14153:45;14192:5;14153:45;:::i;:::-;14148:3;14141:58;14058:147;;:::o;14211:114::-;14278:6;14312:5;14306:12;14296:22;;14211:114;;;:::o;14331:184::-;14430:11;14464:6;14459:3;14452:19;14504:4;14499:3;14495:14;14480:29;;14331:184;;;;:::o;14521:132::-;14588:4;14611:3;14603:11;;14641:4;14636:3;14632:14;14624:22;;14521:132;;;:::o;14659:108::-;14736:24;14754:5;14736:24;:::i;:::-;14731:3;14724:37;14659:108;;:::o;14773:179::-;14842:10;14863:46;14905:3;14897:6;14863:46;:::i;:::-;14941:4;14936:3;14932:14;14918:28;;14773:179;;;;:::o;14958:113::-;15028:4;15060;15055:3;15051:14;15043:22;;14958:113;;;:::o;15107:732::-;15226:3;15255:54;15303:5;15255:54;:::i;:::-;15325:86;15404:6;15399:3;15325:86;:::i;:::-;15318:93;;15435:56;15485:5;15435:56;:::i;:::-;15514:7;15545:1;15530:284;15555:6;15552:1;15549:13;15530:284;;;15631:6;15625:13;15658:63;15717:3;15702:13;15658:63;:::i;:::-;15651:70;;15744:60;15797:6;15744:60;:::i;:::-;15734:70;;15590:224;15577:1;15574;15570:9;15565:14;;15530:284;;;15534:14;15830:3;15823:10;;15231:608;;;15107:732;;;;:::o;15845:831::-;16108:4;16146:3;16135:9;16131:19;16123:27;;16160:71;16228:1;16217:9;16213:17;16204:6;16160:71;:::i;:::-;16241:80;16317:2;16306:9;16302:18;16293:6;16241:80;:::i;:::-;16368:9;16362:4;16358:20;16353:2;16342:9;16338:18;16331:48;16396:108;16499:4;16490:6;16396:108;:::i;:::-;16388:116;;16514:72;16582:2;16571:9;16567:18;16558:6;16514:72;:::i;:::-;16596:73;16664:3;16653:9;16649:19;16640:6;16596:73;:::i;:::-;15845:831;;;;;;;;:::o;16682:807::-;16931:4;16969:3;16958:9;16954:19;16946:27;;16983:71;17051:1;17040:9;17036:17;17027:6;16983:71;:::i;:::-;17064:72;17132:2;17121:9;17117:18;17108:6;17064:72;:::i;:::-;17146:80;17222:2;17211:9;17207:18;17198:6;17146:80;:::i;:::-;17236;17312:2;17301:9;17297:18;17288:6;17236:80;:::i;:::-;17326:73;17394:3;17383:9;17379:19;17370:6;17326:73;:::i;:::-;17409;17477:3;17466:9;17462:19;17453:6;17409:73;:::i;:::-;16682:807;;;;;;;;;:::o;17495:143::-;17552:5;17583:6;17577:13;17568:22;;17599:33;17626:5;17599:33;:::i;:::-;17495:143;;;;:::o;17644:663::-;17732:6;17740;17748;17797:2;17785:9;17776:7;17772:23;17768:32;17765:119;;;17803:79;;:::i;:::-;17765:119;17923:1;17948:64;18004:7;17995:6;17984:9;17980:22;17948:64;:::i;:::-;17938:74;;17894:128;18061:2;18087:64;18143:7;18134:6;18123:9;18119:22;18087:64;:::i;:::-;18077:74;;18032:129;18200:2;18226:64;18282:7;18273:6;18262:9;18258:22;18226:64;:::i;:::-;18216:74;;18171:129;17644:663;;;;;:::o

Swarm Source

ipfs://040b9d854ec565a68923dc66e7d22f5ed72ec8e908d3bcfce62a00e67366ad58

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.