ETH Price: $2,416.11 (-9.19%)

Contract

0x7FC5829f248dDF438F813413248e0EB0Ade4E947
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer171797122023-05-03 10:50:23664 days ago1683111023IN
0x7FC5829f...0Ade4E947
0 ETH0.0033681658.03880326
Approve171311502023-04-26 14:59:11671 days ago1682521151IN
0x7FC5829f...0Ade4E947
0 ETH0.0018266239.23838241
Approve170843712023-04-20 1:05:59677 days ago1681952759IN
0x7FC5829f...0Ade4E947
0 ETH0.0026231456.34878328
Approve170843502023-04-20 1:01:35677 days ago1681952495IN
0x7FC5829f...0Ade4E947
0 ETH0.0031323267.2
Approve170841012023-04-20 0:10:59677 days ago1681949459IN
0x7FC5829f...0Ade4E947
0 ETH0.0031746168.10719214
Set Sell Tax170840792023-04-20 0:06:23677 days ago1681949183IN
0x7FC5829f...0Ade4E947
0 ETH0.0020154265.30025979
Set Swapback Thr...170840722023-04-20 0:04:59677 days ago1681949099IN
0x7FC5829f...0Ade4E947
0 ETH0.0018902666.01015819
Set Buy Taxes170840702023-04-20 0:04:35677 days ago1681949075IN
0x7FC5829f...0Ade4E947
0 ETH0.0016374968.5401224
Set Sell Tax170840692023-04-20 0:04:23677 days ago1681949063IN
0x7FC5829f...0Ade4E947
0 ETH0.0025088468.5401224
Set Buy Taxes170840682023-04-20 0:04:11677 days ago1681949051IN
0x7FC5829f...0Ade4E947
0 ETH0.0019912669.34588985
Approve170839522023-04-19 23:40:35677 days ago1681947635IN
0x7FC5829f...0Ade4E947
0 ETH0.00483389103.70493926
Approve170839442023-04-19 23:38:59677 days ago1681947539IN
0x7FC5829f...0Ade4E947
0 ETH0.00502948108.04012586
Set Buy Taxes170839202023-04-19 23:34:11677 days ago1681947251IN
0x7FC5829f...0Ade4E947
0 ETH0.00316853110.34439359
Approve170839172023-04-19 23:33:35677 days ago1681947215IN
0x7FC5829f...0Ade4E947
0 ETH0.006319135.56604738
Set Sell Tax170839162023-04-19 23:33:23677 days ago1681947203IN
0x7FC5829f...0Ade4E947
0 ETH0.00465285112.34439359
Approve170838712023-04-19 23:23:47677 days ago1681946627IN
0x7FC5829f...0Ade4E947
0 ETH0.0048961105.03968286
Approve170838712023-04-19 23:23:47677 days ago1681946627IN
0x7FC5829f...0Ade4E947
0 ETH0.00491941105.53968286
Approve170838702023-04-19 23:23:35677 days ago1681946615IN
0x7FC5829f...0Ade4E947
0 ETH0.00485605104.18026465
Approve170838652023-04-19 23:22:35677 days ago1681946555IN
0x7FC5829f...0Ade4E947
0 ETH0.00544735116.86588512
Approve170838592023-04-19 23:21:23677 days ago1681946483IN
0x7FC5829f...0Ade4E947
0 ETH0.00541222116.11234751
Approve170838582023-04-19 23:21:11677 days ago1681946471IN
0x7FC5829f...0Ade4E947
0 ETH0.004631899.36937049
Set Max Wallet170838352023-04-19 23:16:35677 days ago1681946195IN
0x7FC5829f...0Ade4E947
0 ETH0.0019727168.71417501
Approve170838352023-04-19 23:16:35677 days ago1681946195IN
0x7FC5829f...0Ade4E947
0 ETH0.0032961270.71417501
Approve170838342023-04-19 23:16:23677 days ago1681946183IN
0x7FC5829f...0Ade4E947
0 ETH0.0031398767.44875135
Approve170838272023-04-19 23:14:59677 days ago1681946099IN
0x7FC5829f...0Ade4E947
0 ETH0.0032628470
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
170839812023-04-19 23:46:35677 days ago1681947995
0x7FC5829f...0Ade4E947
0.02360409 ETH
170839812023-04-19 23:46:35677 days ago1681947995
0x7FC5829f...0Ade4E947
0.09441637 ETH
170839812023-04-19 23:46:35677 days ago1681947995
0x7FC5829f...0Ade4E947
0.11802046 ETH
170839552023-04-19 23:41:11677 days ago1681947671
0x7FC5829f...0Ade4E947
0.02621621 ETH
170839552023-04-19 23:41:11677 days ago1681947671
0x7FC5829f...0Ade4E947
0.10486486 ETH
170839552023-04-19 23:41:11677 days ago1681947671
0x7FC5829f...0Ade4E947
0.13108108 ETH
170839402023-04-19 23:38:11677 days ago1681947491
0x7FC5829f...0Ade4E947
0.02912889 ETH
170839402023-04-19 23:38:11677 days ago1681947491
0x7FC5829f...0Ade4E947
0.11651557 ETH
170839402023-04-19 23:38:11677 days ago1681947491
0x7FC5829f...0Ade4E947
0.14564446 ETH
170839172023-04-19 23:33:35677 days ago1681947215
0x7FC5829f...0Ade4E947
0.03437072 ETH
170839172023-04-19 23:33:35677 days ago1681947215
0x7FC5829f...0Ade4E947
0.1374829 ETH
170839172023-04-19 23:33:35677 days ago1681947215
0x7FC5829f...0Ade4E947
0.17185363 ETH
170838972023-04-19 23:29:23677 days ago1681946963
0x7FC5829f...0Ade4E947
0.03883229 ETH
170838972023-04-19 23:29:23677 days ago1681946963
0x7FC5829f...0Ade4E947
0.15532916 ETH
170838972023-04-19 23:29:23677 days ago1681946963
0x7FC5829f...0Ade4E947
0.19416145 ETH
170838722023-04-19 23:23:59677 days ago1681946639
0x7FC5829f...0Ade4E947
0.04368205 ETH
170838722023-04-19 23:23:59677 days ago1681946639
0x7FC5829f...0Ade4E947
0.1747282 ETH
170838722023-04-19 23:23:59677 days ago1681946639
0x7FC5829f...0Ade4E947
0.21841025 ETH
170838712023-04-19 23:23:47677 days ago1681946627
0x7FC5829f...0Ade4E947
0.04819784 ETH
170838712023-04-19 23:23:47677 days ago1681946627
0x7FC5829f...0Ade4E947
0.19279138 ETH
170838712023-04-19 23:23:47677 days ago1681946627
0x7FC5829f...0Ade4E947
0.24098922 ETH
170838342023-04-19 23:16:23677 days ago1681946183
0x7FC5829f...0Ade4E947
0.03795889 ETH
170838342023-04-19 23:16:23677 days ago1681946183
0x7FC5829f...0Ade4E947
0.15183558 ETH
170838342023-04-19 23:16:23677 days ago1681946183
0x7FC5829f...0Ade4E947
0.18979448 ETH
170838282023-04-19 23:15:11677 days ago1681946111
0x7FC5829f...0Ade4E947
0.04155196 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BOB

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

interface IUniswapV2Pair {
    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);
}

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

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() external view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() external view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() external view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) external virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) external virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) external virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }
}

contract BOB is ERC20, Ownable {
    address public marketingWalletAddress = 0xEDdC41843C7E02d4D1Cf2489cf568a6430994EF9;
    address public devWalletAddress = 0x4D9E3959C72c9597E975C9aaE692e5B98C6EF73d;

    uint256 public feesTotalBuy = 2500;

    uint256 public feesLiquidity;
    uint256 public feesMarketing = 4000;
    uint256 public feesDev = 1000;
    uint256 public taxTotal = feesLiquidity + feesMarketing + feesDev;

    uint256 public maxWallet;
    bool inSwapAndLiquify;
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    uint256 public _swapbackThreshold = 200;
   
    mapping(address => bool) private _isExcludedFromFee;
    
    bool public isOpen;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() ERC20("Pepe Bob", "BOB") {
        uint256 startSupply = 420e6 * 10 ** decimals();
        maxWallet = startSupply;
        _mint(msg.sender, (startSupply));
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[msg.sender] = true;
        
        _approve(msg.sender, address(uniswapV2Router), type(uint256).max);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);
    }

    function startTrade() external onlyOwner {
        isOpen = true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (
            _isExcludedFromFee[from] ||
            _isExcludedFromFee[to] ||
            inSwapAndLiquify
        ) {
            super._transfer(from, to, amount);
        } else {
            require(isOpen, "Not open yet");
            uint taxAmount;
            if (to == uniswapV2Pair) {
                // Sell
                uint256 bal = balanceOf(address(this));
                uint256 limit = balanceOf(uniswapV2Pair) * _swapbackThreshold / 10000;
                if (
                    bal >= limit
                ) {
                    if (bal >= 3 * limit) bal = 3 * limit;
                    _swapAndLiquify(bal);
                }
                taxAmount = amount * taxTotal / 10000;
            } else if (from == uniswapV2Pair) {
                taxAmount = amount * feesTotalBuy / 10000;
                require(
                    balanceOf(to) + amount - taxAmount <= maxWallet,
                    "ERC20: transfer amount exceeds max wallet amount"
                );
            } else {
                require(
                    balanceOf(to) + amount <= maxWallet,
                    "ERC20: transfer amount exceeds max wallet amount"
                );
            }
            super._transfer(from, to, amount - taxAmount);
            if (taxAmount > 0) {
                super._transfer(from, address(this), taxAmount);
            }
        }
    }

    function _swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 _taxTotal = taxTotal;
        if (_taxTotal == 0) return;
        uint256 taxWithoutHalfLP = _taxTotal - feesLiquidity / 2;
        uint256 toSell = contractTokenBalance * taxWithoutHalfLP / _taxTotal;

        _swapTokensForEth(toSell);
        uint256 newBalance = address(this).balance;

        uint256 toDev = newBalance * feesDev / taxWithoutHalfLP;
        uint256 toMarketing = newBalance * feesMarketing / taxWithoutHalfLP;
        if (feesLiquidity > 0) {
            _addLiquidity(
                contractTokenBalance - toSell,
                newBalance - toDev - toMarketing
            );
        }
        if (toMarketing > 0) {
            payable(marketingWalletAddress).transfer(toMarketing);
        }

        if (address(this).balance > 0) {
            payable(devWalletAddress).transfer(address(this).balance);
        }
    }

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

    function _addLiquidity(
        uint256 tokenAmount,
        uint256 ethAmount
    ) private lockTheSwap {
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function setMarketingWalletAddress(address newWallet) public onlyOwner {
        marketingWalletAddress = newWallet;
    }

    function setSwapbackThreshold(uint256 newValue) public onlyOwner {
        _swapbackThreshold = newValue;
    }

    function setDevWalletAddress(address newWallet) public onlyOwner {
        devWalletAddress = newWallet;
    }

    function setBuyTaxes(uint256 newValue) public onlyOwner {
        feesTotalBuy = newValue;
    }

    function excludeFromFees(address[] calldata addresses)
        public
        onlyOwner
    {
        for (uint256 i = 0; i < addresses.length; i++) {
            _isExcludedFromFee[addresses[i]] = true;
        }
    }

    function includeInFees(address[] calldata addresses)
        public
        onlyOwner
    {
        for (uint256 i = 0; i < addresses.length; i++) {
            _isExcludedFromFee[addresses[i]] = false;
        }
    }

    function setSellTax(
        uint256 _feesDev,
        uint256 _feesLiquidity,
        uint256 _feesMarketing
    ) public onlyOwner {
        feesDev = _feesDev;
        feesLiquidity = _feesLiquidity;
        feesMarketing = _feesMarketing;
        taxTotal = _feesDev + _feesLiquidity + _feesMarketing;
    }

    function setMaxWallet(uint256 _maxWallet) public onlyOwner {
        maxWallet = _maxWallet;
    }

    function saveETH() external onlyOwner {
        payable(owner()).transfer(address(this).balance);
    }

    function saveTokens(
        IERC20 tokenAddress,
        address walletAddress,
        uint256 amt
    ) external onlyOwner {
        uint256 bal = tokenAddress.balanceOf(address(this));
        IERC20(tokenAddress).transfer(
            walletAddress,
            amt > bal ? bal : amt
        );
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_swapbackThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesTotalBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"includeInFees","outputs":[],"stateMutability":"nonpayable","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":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saveETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenAddress","type":"address"},{"internalType":"address","name":"walletAddress","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"saveTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDevWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feesDev","type":"uint256"},{"internalType":"uint256","name":"_feesLiquidity","type":"uint256"},{"internalType":"uint256","name":"_feesMarketing","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSwapbackThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600680546001600160a01b031990811673eddc41843c7e02d4d1cf2489cf568a6430994ef91790915560078054909116734d9e3959c72c9597e975c9aae692e5b98c6ef73d1790556109c4600855610fa0600a8190556103e8600b8190556009549091620000729162000573565b6200007e919062000573565b600c5560c8600f553480156200009357600080fd5b50604051806040016040528060088152602001672832b832902137b160c11b815250604051806040016040528060038152602001622127a160e91b8152508160039081620000e2919062000634565b506004620000f1828262000634565b5050506200010e620001086200031860201b60201c565b6200031c565b60006200011e6012600a620007fd565b6200012e90631908b10062000815565b600d81905590506200014133826200036e565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000199573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bf91906200082f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023391906200082f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000281573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a791906200082f565b6001600160a01b0390811660a052811660808190526000818152601060205260408082208054600160ff1991821681179092553380855292909320805490931617909155620002f99160001962000435565b62000310306080516000196200043560201b60201c565b50506200085a565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620003ca5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060026000828254620003de919062000573565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038316620004995760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620003c1565b6001600160a01b038216620004fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620003c1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156200058957620005896200055d565b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005ba57607f821691505b602082108103620005db57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200062f57600081815260208120601f850160051c810160208610156200060a5750805b601f850160051c820191505b818110156200062b5782815560010162000616565b5050505b505050565b81516001600160401b038111156200065057620006506200058f565b6200066881620006618454620005a5565b84620005e1565b602080601f831160018114620006a05760008415620006875750858301515b600019600386901b1c1916600185901b1785556200062b565b600085815260208120601f198616915b82811015620006d157888601518255948401946001909101908401620006b0565b5085821015620006f05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115620007415781600019048211156200072557620007256200055d565b808516156200073357918102915b93841c939080029062000705565b509250929050565b6000826200075a5750600162000589565b81620007695750600062000589565b81600181146200078257600281146200078d57620007ad565b600191505062000589565b60ff841115620007a157620007a16200055d565b50506001821b62000589565b5060208310610133831016604e8410600b8410161715620007d2575081810a62000589565b620007de838362000700565b8060001904821115620007f557620007f56200055d565b029392505050565b60006200080e60ff84168362000749565b9392505050565b80820281158282048414176200058957620005896200055d565b6000602082840312156200084257600080fd5b81516001600160a01b03811681146200080e57600080fd5b60805160a051611add620008aa600039600081816103ba01528181610ea801528181610efd0152610f950152600081816102f1015281816114710152818161152901526115c00152611add6000f3fe60806040526004361061021e5760003560e01c8063715018a611610123578063a53343bc116100ab578063d1c7d9431161006f578063d1c7d94314610632578063dd62ed3e14610652578063ea2a487014610672578063f2fde38b14610688578063f8b45b05146106a857600080fd5b8063a53343bc146105a6578063a9059cbb146105bc578063aa962b02146105dc578063ba802b3d146105f2578063d158272d1461061257600080fd5b8063923ffc14116100f2578063923ffc141461051157806392f428701461053157806395d89b4114610551578063a3ca847d14610566578063a457c2d71461058657600080fd5b8063715018a6146104a9578063896f1a95146104be5780638da5cb5b146104d35780638f2076fd146104f157600080fd5b806347535d7b116101a65780635d0044ca116101755780635d0044ca14610412578063677187dc146104325780636c580801146104485780636f0a57391461045d57806370a082311461047357600080fd5b806347535d7b1461038e57806349bd5a5e146103a85780634cb80fd5146103dc57806358fe1600146103fc57600080fd5b80631694505e116101ed5780631694505e146102df57806318160ddd1461031357806323b872dd14610332578063313ce56714610352578063395093511461036e57600080fd5b806306fdde031461022a578063095ea7b3146102555780630e03881314610285578063120a0612146102bd57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f6106be565b60405161024c919061169b565b60405180910390f35b34801561026157600080fd5b506102756102703660046116fe565b610750565b604051901515815260200161024c565b34801561029157600080fd5b506007546102a5906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b3480156102c957600080fd5b506102dd6102d836600461172a565b61076a565b005b3480156102eb57600080fd5b506102a57f000000000000000000000000000000000000000000000000000000000000000081565b34801561031f57600080fd5b506002545b60405190815260200161024c565b34801561033e57600080fd5b5061027561034d36600461174e565b610794565b34801561035e57600080fd5b506040516012815260200161024c565b34801561037a57600080fd5b506102756103893660046116fe565b6107b8565b34801561039a57600080fd5b506011546102759060ff1681565b3480156103b457600080fd5b506102a57f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e857600080fd5b506102dd6103f736600461172a565b6107da565b34801561040857600080fd5b5061032460085481565b34801561041e57600080fd5b506102dd61042d36600461178f565b610804565b34801561043e57600080fd5b5061032460095481565b34801561045457600080fd5b506102dd610811565b34801561046957600080fd5b50610324600a5481565b34801561047f57600080fd5b5061032461048e36600461172a565b6001600160a01b031660009081526020819052604090205490565b3480156104b557600080fd5b506102dd610828565b3480156104ca57600080fd5b506102dd61083c565b3480156104df57600080fd5b506005546001600160a01b03166102a5565b3480156104fd57600080fd5b506102dd61050c3660046117a8565b610880565b34801561051d57600080fd5b506102dd61052c3660046117d4565b6108b4565b34801561053d57600080fd5b506102dd61054c3660046117d4565b610933565b34801561055d57600080fd5b5061023f6109ad565b34801561057257600080fd5b506102dd61058136600461178f565b6109bc565b34801561059257600080fd5b506102756105a13660046116fe565b6109c9565b3480156105b257600080fd5b50610324600b5481565b3480156105c857600080fd5b506102756105d73660046116fe565b610a49565b3480156105e857600080fd5b50610324600f5481565b3480156105fe57600080fd5b506102dd61060d36600461174e565b610a57565b34801561061e57600080fd5b506006546102a5906001600160a01b031681565b34801561063e57600080fd5b506102dd61064d36600461178f565b610b61565b34801561065e57600080fd5b5061032461066d366004611849565b610b6e565b34801561067e57600080fd5b50610324600c5481565b34801561069457600080fd5b506102dd6106a336600461172a565b610b99565b3480156106b457600080fd5b50610324600d5481565b6060600380546106cd90611882565b80601f01602080910402602001604051908101604052809291908181526020018280546106f990611882565b80156107465780601f1061071b57610100808354040283529160200191610746565b820191906000526020600020905b81548152906001019060200180831161072957829003601f168201915b5050505050905090565b60003361075e818585610c0f565b60019150505b92915050565b610772610d33565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000336107a2858285610d8d565b6107ad858585610e07565b506001949350505050565b60003361075e8185856107cb8383610b6e565b6107d591906118d2565b610c0f565b6107e2610d33565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b61080c610d33565b600d55565b610819610d33565b6011805460ff19166001179055565b610830610d33565b61083a60006110b4565b565b610844610d33565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561087d573d6000803e3d6000fd5b50565b610888610d33565b600b8390556009829055600a819055806108a283856118d2565b6108ac91906118d2565b600c55505050565b6108bc610d33565b60005b8181101561092e576000601060008585858181106108df576108df6118e5565b90506020020160208101906108f4919061172a565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610926816118fb565b9150506108bf565b505050565b61093b610d33565b60005b8181101561092e5760016010600085858581811061095e5761095e6118e5565b9050602002016020810190610973919061172a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806109a5816118fb565b91505061093e565b6060600480546106cd90611882565b6109c4610d33565b600855565b600033816109d78286610b6e565b905083811015610a3c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6107ad8286868403610c0f565b60003361075e818585610e07565b610a5f610d33565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca9190611914565b9050836001600160a01b031663a9059cbb84838511610ae95784610aeb565b835b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5a919061192d565b5050505050565b610b69610d33565b600f55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610ba1610d33565b6001600160a01b038116610c065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a33565b61087d816110b4565b6001600160a01b038316610c715760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a33565b6001600160a01b038216610cd25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a33565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b0316331461083a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a33565b6000610d998484610b6e565b90506000198114610e015781811015610df45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a33565b610e018484848403610c0f565b50505050565b6001600160a01b03831660009081526010602052604090205460ff1680610e4657506001600160a01b03821660009081526010602052604090205460ff165b80610e535750600e5460ff165b15610e635761092e838383611106565b60115460ff16610ea45760405162461bcd60e51b815260206004820152600c60248201526b139bdd081bdc195b881e595d60a21b6044820152606401610a33565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603610f93573060009081526020819052604080822054600f546001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684529183205490929161271091610f34919061194f565b610f3e9190611966565b9050808210610f6f57610f5281600361194f565b8210610f6657610f6381600361194f565b91505b610f6f826112ab565b612710600c5485610f80919061194f565b610f8a9190611966565b9250505061108f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316036110445761271060085483610fdd919061194f565b610fe79190611966565b9050600d54818361100d866001600160a01b031660009081526020819052604090205490565b61101791906118d2565b6110219190611988565b111561103f5760405162461bcd60e51b8152600401610a339061199b565b61108f565b600d5482611067856001600160a01b031660009081526020819052604090205490565b61107191906118d2565b111561108f5760405162461bcd60e51b8152600401610a339061199b565b6110a3848461109e8486611988565b611106565b8015610e0157610e01843083611106565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831661116a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a33565b6001600160a01b0382166111cc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a33565b6001600160a01b038316600090815260208190526040902054818110156112445760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a33565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600e805460ff19166001179055600c5460008190036112ca5750611400565b600060026009546112db9190611966565b6112e59083611988565b90506000826112f4838661194f565b6112fe9190611966565b90506113098161140d565b600b544790600090849061131d908461194f565b6113279190611966565b9050600084600a548461133a919061194f565b6113449190611966565b600954909150156113765761137661135c8589611988565b826113678587611988565b6113719190611988565b6115a9565b80156113b8576006546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113b6573d6000803e3d6000fd5b505b47156113f9576007546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156113f7573d6000803e3d6000fd5b505b5050505050505b50600e805460ff19169055565b600e805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061144f5761144f6118e5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f191906119eb565b81600181518110611504576115046118e5565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac94790611569908590600090869030904290600401611a08565b600060405180830381600087803b15801561158357600080fd5b505af1158015611597573d6000803e3d6000fd5b5050600e805460ff1916905550505050565b600e805460ff191660011790556001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663f305d7198230856000806115fd6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611665573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061168a9190611a79565b5050600e805460ff19169055505050565b600060208083528351808285015260005b818110156116c8578581018301518582016040015282016116ac565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461087d57600080fd5b6000806040838503121561171157600080fd5b823561171c816116e9565b946020939093013593505050565b60006020828403121561173c57600080fd5b8135611747816116e9565b9392505050565b60008060006060848603121561176357600080fd5b833561176e816116e9565b9250602084013561177e816116e9565b929592945050506040919091013590565b6000602082840312156117a157600080fd5b5035919050565b6000806000606084860312156117bd57600080fd5b505081359360208301359350604090920135919050565b600080602083850312156117e757600080fd5b823567ffffffffffffffff808211156117ff57600080fd5b818501915085601f83011261181357600080fd5b81358181111561182257600080fd5b8660208260051b850101111561183757600080fd5b60209290920196919550909350505050565b6000806040838503121561185c57600080fd5b8235611867816116e9565b91506020830135611877816116e9565b809150509250929050565b600181811c9082168061189657607f821691505b6020821081036118b657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610764576107646118bc565b634e487b7160e01b600052603260045260246000fd5b60006001820161190d5761190d6118bc565b5060010190565b60006020828403121561192657600080fd5b5051919050565b60006020828403121561193f57600080fd5b8151801515811461174757600080fd5b8082028115828204841417610764576107646118bc565b60008261198357634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610764576107646118bc565b60208082526030908201527f45524332303a207472616e7366657220616d6f756e742065786365656473206d60408201526f185e081dd85b1b195d08185b5bdd5b9d60821b606082015260800190565b6000602082840312156119fd57600080fd5b8151611747816116e9565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a585784516001600160a01b031683529383019391830191600101611a33565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611a8e57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212201768c13e546a3272ccc874269aa44b9ae7838d9bab454ea7f022bb1ee57e5dca64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c8063715018a611610123578063a53343bc116100ab578063d1c7d9431161006f578063d1c7d94314610632578063dd62ed3e14610652578063ea2a487014610672578063f2fde38b14610688578063f8b45b05146106a857600080fd5b8063a53343bc146105a6578063a9059cbb146105bc578063aa962b02146105dc578063ba802b3d146105f2578063d158272d1461061257600080fd5b8063923ffc14116100f2578063923ffc141461051157806392f428701461053157806395d89b4114610551578063a3ca847d14610566578063a457c2d71461058657600080fd5b8063715018a6146104a9578063896f1a95146104be5780638da5cb5b146104d35780638f2076fd146104f157600080fd5b806347535d7b116101a65780635d0044ca116101755780635d0044ca14610412578063677187dc146104325780636c580801146104485780636f0a57391461045d57806370a082311461047357600080fd5b806347535d7b1461038e57806349bd5a5e146103a85780634cb80fd5146103dc57806358fe1600146103fc57600080fd5b80631694505e116101ed5780631694505e146102df57806318160ddd1461031357806323b872dd14610332578063313ce56714610352578063395093511461036e57600080fd5b806306fdde031461022a578063095ea7b3146102555780630e03881314610285578063120a0612146102bd57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f6106be565b60405161024c919061169b565b60405180910390f35b34801561026157600080fd5b506102756102703660046116fe565b610750565b604051901515815260200161024c565b34801561029157600080fd5b506007546102a5906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b3480156102c957600080fd5b506102dd6102d836600461172a565b61076a565b005b3480156102eb57600080fd5b506102a57f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561031f57600080fd5b506002545b60405190815260200161024c565b34801561033e57600080fd5b5061027561034d36600461174e565b610794565b34801561035e57600080fd5b506040516012815260200161024c565b34801561037a57600080fd5b506102756103893660046116fe565b6107b8565b34801561039a57600080fd5b506011546102759060ff1681565b3480156103b457600080fd5b506102a57f000000000000000000000000bed0d3a35a09191265688ed02e8fe6c80a4ea69881565b3480156103e857600080fd5b506102dd6103f736600461172a565b6107da565b34801561040857600080fd5b5061032460085481565b34801561041e57600080fd5b506102dd61042d36600461178f565b610804565b34801561043e57600080fd5b5061032460095481565b34801561045457600080fd5b506102dd610811565b34801561046957600080fd5b50610324600a5481565b34801561047f57600080fd5b5061032461048e36600461172a565b6001600160a01b031660009081526020819052604090205490565b3480156104b557600080fd5b506102dd610828565b3480156104ca57600080fd5b506102dd61083c565b3480156104df57600080fd5b506005546001600160a01b03166102a5565b3480156104fd57600080fd5b506102dd61050c3660046117a8565b610880565b34801561051d57600080fd5b506102dd61052c3660046117d4565b6108b4565b34801561053d57600080fd5b506102dd61054c3660046117d4565b610933565b34801561055d57600080fd5b5061023f6109ad565b34801561057257600080fd5b506102dd61058136600461178f565b6109bc565b34801561059257600080fd5b506102756105a13660046116fe565b6109c9565b3480156105b257600080fd5b50610324600b5481565b3480156105c857600080fd5b506102756105d73660046116fe565b610a49565b3480156105e857600080fd5b50610324600f5481565b3480156105fe57600080fd5b506102dd61060d36600461174e565b610a57565b34801561061e57600080fd5b506006546102a5906001600160a01b031681565b34801561063e57600080fd5b506102dd61064d36600461178f565b610b61565b34801561065e57600080fd5b5061032461066d366004611849565b610b6e565b34801561067e57600080fd5b50610324600c5481565b34801561069457600080fd5b506102dd6106a336600461172a565b610b99565b3480156106b457600080fd5b50610324600d5481565b6060600380546106cd90611882565b80601f01602080910402602001604051908101604052809291908181526020018280546106f990611882565b80156107465780601f1061071b57610100808354040283529160200191610746565b820191906000526020600020905b81548152906001019060200180831161072957829003601f168201915b5050505050905090565b60003361075e818585610c0f565b60019150505b92915050565b610772610d33565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000336107a2858285610d8d565b6107ad858585610e07565b506001949350505050565b60003361075e8185856107cb8383610b6e565b6107d591906118d2565b610c0f565b6107e2610d33565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b61080c610d33565b600d55565b610819610d33565b6011805460ff19166001179055565b610830610d33565b61083a60006110b4565b565b610844610d33565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561087d573d6000803e3d6000fd5b50565b610888610d33565b600b8390556009829055600a819055806108a283856118d2565b6108ac91906118d2565b600c55505050565b6108bc610d33565b60005b8181101561092e576000601060008585858181106108df576108df6118e5565b90506020020160208101906108f4919061172a565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610926816118fb565b9150506108bf565b505050565b61093b610d33565b60005b8181101561092e5760016010600085858581811061095e5761095e6118e5565b9050602002016020810190610973919061172a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806109a5816118fb565b91505061093e565b6060600480546106cd90611882565b6109c4610d33565b600855565b600033816109d78286610b6e565b905083811015610a3c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6107ad8286868403610c0f565b60003361075e818585610e07565b610a5f610d33565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca9190611914565b9050836001600160a01b031663a9059cbb84838511610ae95784610aeb565b835b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5a919061192d565b5050505050565b610b69610d33565b600f55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610ba1610d33565b6001600160a01b038116610c065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a33565b61087d816110b4565b6001600160a01b038316610c715760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a33565b6001600160a01b038216610cd25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a33565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b0316331461083a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a33565b6000610d998484610b6e565b90506000198114610e015781811015610df45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a33565b610e018484848403610c0f565b50505050565b6001600160a01b03831660009081526010602052604090205460ff1680610e4657506001600160a01b03821660009081526010602052604090205460ff165b80610e535750600e5460ff165b15610e635761092e838383611106565b60115460ff16610ea45760405162461bcd60e51b815260206004820152600c60248201526b139bdd081bdc195b881e595d60a21b6044820152606401610a33565b60007f000000000000000000000000bed0d3a35a09191265688ed02e8fe6c80a4ea6986001600160a01b0316836001600160a01b031603610f93573060009081526020819052604080822054600f546001600160a01b037f000000000000000000000000bed0d3a35a09191265688ed02e8fe6c80a4ea6981684529183205490929161271091610f34919061194f565b610f3e9190611966565b9050808210610f6f57610f5281600361194f565b8210610f6657610f6381600361194f565b91505b610f6f826112ab565b612710600c5485610f80919061194f565b610f8a9190611966565b9250505061108f565b7f000000000000000000000000bed0d3a35a09191265688ed02e8fe6c80a4ea6986001600160a01b0316846001600160a01b0316036110445761271060085483610fdd919061194f565b610fe79190611966565b9050600d54818361100d866001600160a01b031660009081526020819052604090205490565b61101791906118d2565b6110219190611988565b111561103f5760405162461bcd60e51b8152600401610a339061199b565b61108f565b600d5482611067856001600160a01b031660009081526020819052604090205490565b61107191906118d2565b111561108f5760405162461bcd60e51b8152600401610a339061199b565b6110a3848461109e8486611988565b611106565b8015610e0157610e01843083611106565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831661116a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a33565b6001600160a01b0382166111cc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a33565b6001600160a01b038316600090815260208190526040902054818110156112445760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a33565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600e805460ff19166001179055600c5460008190036112ca5750611400565b600060026009546112db9190611966565b6112e59083611988565b90506000826112f4838661194f565b6112fe9190611966565b90506113098161140d565b600b544790600090849061131d908461194f565b6113279190611966565b9050600084600a548461133a919061194f565b6113449190611966565b600954909150156113765761137661135c8589611988565b826113678587611988565b6113719190611988565b6115a9565b80156113b8576006546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113b6573d6000803e3d6000fd5b505b47156113f9576007546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156113f7573d6000803e3d6000fd5b505b5050505050505b50600e805460ff19169055565b600e805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061144f5761144f6118e5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f191906119eb565b81600181518110611504576115046118e5565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac94790611569908590600090869030904290600401611a08565b600060405180830381600087803b15801561158357600080fd5b505af1158015611597573d6000803e3d6000fd5b5050600e805460ff1916905550505050565b600e805460ff191660011790556001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663f305d7198230856000806115fd6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611665573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061168a9190611a79565b5050600e805460ff19169055505050565b600060208083528351808285015260005b818110156116c8578581018301518582016040015282016116ac565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461087d57600080fd5b6000806040838503121561171157600080fd5b823561171c816116e9565b946020939093013593505050565b60006020828403121561173c57600080fd5b8135611747816116e9565b9392505050565b60008060006060848603121561176357600080fd5b833561176e816116e9565b9250602084013561177e816116e9565b929592945050506040919091013590565b6000602082840312156117a157600080fd5b5035919050565b6000806000606084860312156117bd57600080fd5b505081359360208301359350604090920135919050565b600080602083850312156117e757600080fd5b823567ffffffffffffffff808211156117ff57600080fd5b818501915085601f83011261181357600080fd5b81358181111561182257600080fd5b8660208260051b850101111561183757600080fd5b60209290920196919550909350505050565b6000806040838503121561185c57600080fd5b8235611867816116e9565b91506020830135611877816116e9565b809150509250929050565b600181811c9082168061189657607f821691505b6020821081036118b657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610764576107646118bc565b634e487b7160e01b600052603260045260246000fd5b60006001820161190d5761190d6118bc565b5060010190565b60006020828403121561192657600080fd5b5051919050565b60006020828403121561193f57600080fd5b8151801515811461174757600080fd5b8082028115828204841417610764576107646118bc565b60008261198357634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610764576107646118bc565b60208082526030908201527f45524332303a207472616e7366657220616d6f756e742065786365656473206d60408201526f185e081dd85b1b195d08185b5bdd5b9d60821b606082015260800190565b6000602082840312156119fd57600080fd5b8151611747816116e9565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a585784516001600160a01b031683529383019391830191600101611a33565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611a8e57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212201768c13e546a3272ccc874269aa44b9ae7838d9bab454ea7f022bb1ee57e5dca64736f6c63430008130033

Deployed Bytecode Sourcemap

16265:6881:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7284:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9484:228;;;;;;;;;;-1:-1:-1;9484:228:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9484:228:0;1023:187:1;16392:76:0;;;;;;;;;;-1:-1:-1;16392:76:0;;;;-1:-1:-1;;;;;16392:76:0;;;;;;-1:-1:-1;;;;;1379:32:1;;;1361:51;;1349:2;1334:18;16392:76:0;1215:203:1;21549:112:0;;;;;;;;;;-1:-1:-1;21549:112:0;;;;;:::i;:::-;;:::i;:::-;;16766:51;;;;;;;;;;;;;;;8389:110;;;;;;;;;;-1:-1:-1;8479:12:0;;8389:110;;;2055:25:1;;;2043:2;2028:18;8389:110:0;1909:177:1;10292:297:0;;;;;;;;;;-1:-1:-1;10292:297:0;;;;;:::i;:::-;;:::i;8231:93::-;;;;;;;;;;-1:-1:-1;8231:93:0;;8314:2;2694:36:1;;2682:2;2667:18;8231:93:0;2552:184:1;12001:265:0;;;;;;;;;;-1:-1:-1;12001:265:0;;;;;:::i;:::-;;:::i;16986:18::-;;;;;;;;;;-1:-1:-1;16986:18:0;;;;;;;;16824:38;;;;;;;;;;;;;;;21296:124;;;;;;;;;;-1:-1:-1;21296:124:0;;;;;:::i;:::-;;:::i;16477:34::-;;;;;;;;;;;;;;;;22570:100;;;;;;;;;;-1:-1:-1;22570:100:0;;;;;:::i;:::-;;:::i;16520:28::-;;;;;;;;;;;;;;;;17918:73;;;;;;;;;;;;;:::i;16555:35::-;;;;;;;;;;;;;;;;7449:143;;;;;;;;;;-1:-1:-1;7449:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7566:18:0;7539:7;7566:18;;;;;;;;;;;;7449:143;5739:103;;;;;;;;;;;;;:::i;22678:105::-;;;;;;;;;;;;;:::i;5091:87::-;;;;;;;;;;-1:-1:-1;5164:6:0;;-1:-1:-1;;;;;5164:6:0;5091:87;;22242:320;;;;;;;;;;-1:-1:-1;22242:320:0;;;;;:::i;:::-;;:::i;22009:225::-;;;;;;;;;;-1:-1:-1;22009:225:0;;;;;:::i;:::-;;:::i;21775:226::-;;;;;;;;;;-1:-1:-1;21775:226:0;;;;;:::i;:::-;;:::i;7108:106::-;;;;;;;;;;;;;:::i;21669:98::-;;;;;;;;;;-1:-1:-1;21669:98:0;;;;;:::i;:::-;;:::i;11092:500::-;;;;;;;;;;-1:-1:-1;11092:500:0;;;;;:::i;:::-;;:::i;16597:29::-;;;;;;;;;;;;;;;;8944:220;;;;;;;;;;-1:-1:-1;8944:220:0;;;;;:::i;:::-;;:::i;16871:39::-;;;;;;;;;;;;;;;;22791:315;;;;;;;;;;-1:-1:-1;22791:315:0;;;;;:::i;:::-;;:::i;16303:82::-;;;;;;;;;;-1:-1:-1;16303:82:0;;;;-1:-1:-1;;;;;16303:82:0;;;21428:113;;;;;;;;;;-1:-1:-1;21428:113:0;;;;;:::i;:::-;;:::i;8562:176::-;;;;;;;;;;-1:-1:-1;8562:176:0;;;;;:::i;:::-;;:::i;16633:65::-;;;;;;;;;;;;;;;;5997:238;;;;;;;;;;-1:-1:-1;5997:238:0;;;;;:::i;:::-;;:::i;16707:24::-;;;;;;;;;;;;;;;;7284:102;7340:13;7373:5;7366:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7284:102;:::o;9484:228::-;9594:4;4471:10;9650:32;4471:10;9666:7;9675:6;9650:8;:32::i;:::-;9700:4;9693:11;;;9484:228;;;;;:::o;21549:112::-;4977:13;:11;:13::i;:::-;21625:16:::1;:28:::0;;-1:-1:-1;;;;;;21625:28:0::1;-1:-1:-1::0;;;;;21625:28:0;;;::::1;::::0;;;::::1;::::0;;21549:112::o;10292:297::-;10425:4;4471:10;10483:38;10499:4;4471:10;10514:6;10483:15;:38::i;:::-;10532:27;10542:4;10548:2;10552:6;10532:9;:27::i;:::-;-1:-1:-1;10577:4:0;;10292:297;-1:-1:-1;;;;10292:297:0:o;12001:265::-;12116:4;4471:10;12172:64;4471:10;12188:7;12225:10;12197:25;4471:10;12188:7;12197:9;:25::i;:::-;:38;;;;:::i;:::-;12172:8;:64::i;21296:124::-;4977:13;:11;:13::i;:::-;21378:22:::1;:34:::0;;-1:-1:-1;;;;;;21378:34:0::1;-1:-1:-1::0;;;;;21378:34:0;;;::::1;::::0;;;::::1;::::0;;21296:124::o;22570:100::-;4977:13;:11;:13::i;:::-;22640:9:::1;:22:::0;22570:100::o;17918:73::-;4977:13;:11;:13::i;:::-;17970:6:::1;:13:::0;;-1:-1:-1;;17970:13:0::1;17979:4;17970:13;::::0;;17918:73::o;5739:103::-;4977:13;:11;:13::i;:::-;5804:30:::1;5831:1;5804:18;:30::i;:::-;5739:103::o:0;22678:105::-;4977:13;:11;:13::i;:::-;5164:6;;22727:48:::1;::::0;-1:-1:-1;;;;;5164:6:0;;;;22753:21:::1;22727:48:::0;::::1;;;::::0;::::1;::::0;;;22753:21;5164:6;22727:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22678:105::o:0;22242:320::-;4977:13;:11;:13::i;:::-;22390:7:::1;:18:::0;;;22419:13:::1;:30:::0;;;22460:13:::1;:30:::0;;;22476:14;22512:25:::1;22435:14:::0;22400:8;22512:25:::1;:::i;:::-;:42;;;;:::i;:::-;22501:8;:53:::0;-1:-1:-1;;;22242:320:0:o;22009:225::-;4977:13;:11;:13::i;:::-;22118:9:::1;22113:114;22133:20:::0;;::::1;22113:114;;;22210:5;22175:18;:32;22194:9;;22204:1;22194:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22175:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;22175:32:0;:40;;-1:-1:-1;;22175:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22155:3;::::1;::::0;::::1;:::i;:::-;;;;22113:114;;;;22009:225:::0;;:::o;21775:226::-;4977:13;:11;:13::i;:::-;21886:9:::1;21881:113;21901:20:::0;;::::1;21881:113;;;21978:4;21943:18;:32;21962:9;;21972:1;21962:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21943:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;21943:32:0;:39;;-1:-1:-1;;21943:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21923:3;::::1;::::0;::::1;:::i;:::-;;;;21881:113;;7108:106:::0;7166:13;7199:7;7192:14;;;;;:::i;21669:98::-;4977:13;:11;:13::i;:::-;21736:12:::1;:23:::0;21669:98::o;11092:500::-;11212:4;4471:10;11212:4;11295:25;4471:10;11312:7;11295:9;:25::i;:::-;11268:52;;11373:15;11353:16;:35;;11331:122;;;;-1:-1:-1;;;11331:122:0;;5855:2:1;11331:122:0;;;5837:21:1;5894:2;5874:18;;;5867:30;5933:34;5913:18;;;5906:62;-1:-1:-1;;;5984:18:1;;;5977:35;6029:19;;11331:122:0;;;;;;;;;11489:60;11498:5;11505:7;11533:15;11514:16;:34;11489:8;:60::i;8944:220::-;9050:4;4471:10;9106:28;4471:10;9123:2;9127:6;9106:9;:28::i;22791:315::-;4977:13;:11;:13::i;:::-;22946:37:::1;::::0;-1:-1:-1;;;22946:37:0;;22977:4:::1;22946:37;::::0;::::1;1361:51:1::0;22932:11:0::1;::::0;-1:-1:-1;;;;;22946:22:0;::::1;::::0;::::1;::::0;1334:18:1;;22946:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22932:51;;23001:12;-1:-1:-1::0;;;;;22994:29:0::1;;23038:13;23072:3;23066;:9;:21;;23084:3;23066:21;;;23078:3;23066:21;22994:104;::::0;-1:-1:-1;;;;;;22994:104:0::1;::::0;;;;;;-1:-1:-1;;;;;6440:32:1;;;22994:104:0::1;::::0;::::1;6422:51:1::0;6489:18;;;6482:34;6395:18;;22994:104:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22921:185;22791:315:::0;;;:::o;21428:113::-;4977:13;:11;:13::i;:::-;21504:18:::1;:29:::0;21428:113::o;8562:176::-;-1:-1:-1;;;;;8703:18:0;;;8676:7;8703:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8562:176::o;5997:238::-;4977:13;:11;:13::i;:::-;-1:-1:-1;;;;;6100:22:0;::::1;6078:110;;;::::0;-1:-1:-1;;;6078:110:0;;7011:2:1;6078:110:0::1;::::0;::::1;6993:21:1::0;7050:2;7030:18;;;7023:30;7089:34;7069:18;;;7062:62;-1:-1:-1;;;7140:18:1;;;7133:36;7186:19;;6078:110:0::1;6809:402:1::0;6078:110:0::1;6199:28;6218:8;6199:18;:28::i;14301:380::-:0;-1:-1:-1;;;;;14437:19:0;;14429:68;;;;-1:-1:-1;;;14429:68:0;;7418:2:1;14429:68:0;;;7400:21:1;7457:2;7437:18;;;7430:30;7496:34;7476:18;;;7469:62;-1:-1:-1;;;7547:18:1;;;7540:34;7591:19;;14429:68:0;7216:400:1;14429:68:0;-1:-1:-1;;;;;14516:21:0;;14508:68;;;;-1:-1:-1;;;14508:68:0;;7823:2:1;14508:68:0;;;7805:21:1;7862:2;7842:18;;;7835:30;7901:34;7881:18;;;7874:62;-1:-1:-1;;;7952:18:1;;;7945:32;7994:19;;14508:68:0;7621:398:1;14508:68:0;-1:-1:-1;;;;;14589:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14641:32;;2055:25:1;;;14641:32:0;;2028:18:1;14641:32:0;;;;;;;14301:380;;;:::o;5256:132::-;5164:6;;-1:-1:-1;;;;;5164:6:0;4471:10;5320:23;5312:68;;;;-1:-1:-1;;;5312:68:0;;8226:2:1;5312:68:0;;;8208:21:1;;;8245:18;;;8238:30;8304:34;8284:18;;;8277:62;8356:18;;5312:68:0;8024:356:1;14972:502:0;15107:24;15134:25;15144:5;15151:7;15134:9;:25::i;:::-;15107:52;;-1:-1:-1;;15174:16:0;:37;15170:297;;15274:6;15254:16;:26;;15228:117;;;;-1:-1:-1;;;15228:117:0;;8587:2:1;15228:117:0;;;8569:21:1;8626:2;8606:18;;;8599:30;8665:31;8645:18;;;8638:59;8714:18;;15228:117:0;8385:353:1;15228:117:0;15389:51;15398:5;15405:7;15433:6;15414:16;:25;15389:8;:51::i;:::-;15096:378;14972:502;;;:::o;17999:1560::-;-1:-1:-1;;;;;18141:24:0;;;;;;:18;:24;;;;;;;;;:63;;-1:-1:-1;;;;;;18182:22:0;;;;;;:18;:22;;;;;;;;18141:63;:96;;;-1:-1:-1;18221:16:0;;;;18141:96;18123:1429;;;18264:33;18280:4;18286:2;18290:6;18264:15;:33::i;18123:1429::-;18338:6;;;;18330:31;;;;-1:-1:-1;;;18330:31:0;;8945:2:1;18330:31:0;;;8927:21:1;8984:2;8964:18;;;8957:30;-1:-1:-1;;;9003:18:1;;;8996:42;9055:18;;18330:31:0;8743:336:1;18330:31:0;18376:14;18415:13;-1:-1:-1;;;;;18409:19:0;:2;-1:-1:-1;;;;;18409:19:0;;18405:961;;18506:4;18474:11;7566:18;;;;;;;;;;;;18574;;-1:-1:-1;;;;;18557:13:0;7566:18;;;;;;;;;18474:11;18595:5;;18547:45;;;;:::i;:::-;:53;;;;:::i;:::-;18531:69;;18652:5;18645:3;:12;18619:181;;18711:9;18715:5;18711:1;:9;:::i;:::-;18704:3;:16;18700:37;;18728:9;18732:5;18728:1;:9;:::i;:::-;18722:15;;18700:37;18760:20;18776:3;18760:15;:20::i;:::-;18850:5;18839:8;;18830:6;:17;;;;:::i;:::-;:25;;;;:::i;:::-;18818:37;;18430:441;;18405:961;;;18889:13;-1:-1:-1;;;;;18881:21:0;:4;-1:-1:-1;;;;;18881:21:0;;18877:489;;18959:5;18944:12;;18935:6;:21;;;;:::i;:::-;:29;;;;:::i;:::-;18923:41;;19051:9;;19038;19029:6;19013:13;19023:2;-1:-1:-1;;;;;7566:18:0;7539:7;7566:18;;;;;;;;;;;;7449:143;19013:13;:22;;;;:::i;:::-;:34;;;;:::i;:::-;:47;;18983:169;;;;-1:-1:-1;;;18983:169:0;;;;;;;:::i;:::-;18877:489;;;19249:9;;19239:6;19223:13;19233:2;-1:-1:-1;;;;;7566:18:0;7539:7;7566:18;;;;;;;;;;;;7449:143;19223:13;:22;;;;:::i;:::-;:35;;19193:157;;;;-1:-1:-1;;;19193:157:0;;;;;;;:::i;:::-;19380:45;19396:4;19402:2;19406:18;19415:9;19406:6;:18;:::i;:::-;19380:15;:45::i;:::-;19444:13;;19440:101;;19478:47;19494:4;19508;19515:9;19478:15;:47::i;6395:191::-;6488:6;;;-1:-1:-1;;;;;6505:17:0;;;-1:-1:-1;;;;;;6505:17:0;;;;;;;6538:40;;6488:6;;;6505:17;6488:6;;6538:40;;6469:16;;6538:40;6458:128;6395:191;:::o;15482:776::-;-1:-1:-1;;;;;15613:18:0;;15605:68;;;;-1:-1:-1;;;15605:68:0;;10231:2:1;15605:68:0;;;10213:21:1;10270:2;10250:18;;;10243:30;10309:34;10289:18;;;10282:62;-1:-1:-1;;;10360:18:1;;;10353:35;10405:19;;15605:68:0;10029:401:1;15605:68:0;-1:-1:-1;;;;;15692:16:0;;15684:64;;;;-1:-1:-1;;;15684:64:0;;10637:2:1;15684:64:0;;;10619:21:1;10676:2;10656:18;;;10649:30;10715:34;10695:18;;;10688:62;-1:-1:-1;;;10766:18:1;;;10759:33;10809:19;;15684:64:0;10435:399:1;15684:64:0;-1:-1:-1;;;;;15783:15:0;;15761:19;15783:15;;;;;;;;;;;15831:21;;;;15809:109;;;;-1:-1:-1;;;15809:109:0;;11041:2:1;15809:109:0;;;11023:21:1;11080:2;11060:18;;;11053:30;11119:34;11099:18;;;11092:62;-1:-1:-1;;;11170:18:1;;;11163:36;11216:19;;15809:109:0;10839:402:1;15809:109:0;-1:-1:-1;;;;;15954:15:0;;;:9;:15;;;;;;;;;;;15972:20;;;15954:38;;16172:13;;;;;;;;;;:23;;;;;;16224:26;;2055:25:1;;;16172:13:0;;16224:26;;2028:18:1;16224:26:0;;;;;;;15594:664;15482:776;;;:::o;19567:967::-;17047:16;:23;;-1:-1:-1;;17047:23:0;17066:4;17047:23;;;19673:8:::1;::::0;17047:16;19696:14;;;19692:27:::1;;19712:7;;;19692:27;19729:24;19784:1;19768:13;;:17;;;;:::i;:::-;19756:29;::::0;:9;:29:::1;:::i;:::-;19729:56:::0;-1:-1:-1;19796:14:0::1;19855:9:::0;19813:39:::1;19729:56:::0;19813:20;:39:::1;:::i;:::-;:51;;;;:::i;:::-;19796:68;;19877:25;19895:6;19877:17;:25::i;:::-;19997:7;::::0;19934:21:::1;::::0;19913:18:::1;::::0;20007:16;;19984:20:::1;::::0;19934:21;19984:20:::1;:::i;:::-;:39;;;;:::i;:::-;19968:55;;20034:19;20085:16;20069:13;;20056:10;:26;;;;:::i;:::-;:45;;;;:::i;:::-;20116:13;::::0;20034:67;;-1:-1:-1;20116:17:0;20112:177:::1;;20150:127;20182:29;20205:6:::0;20182:20;:29:::1;:::i;:::-;20251:11:::0;20230:18:::1;20243:5:::0;20230:10;:18:::1;:::i;:::-;:32;;;;:::i;:::-;20150:13;:127::i;:::-;20303:15:::0;;20299:101:::1;;20343:22;::::0;20335:53:::1;::::0;-1:-1:-1;;;;;20343:22:0;;::::1;::::0;20335:53;::::1;;;::::0;20376:11;;20343:22:::1;20335:53:::0;20343:22;20335:53;20376:11;20343:22;20335:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20299:101;20416:21;:25:::0;20412:115:::1;;20466:16;::::0;20458:57:::1;::::0;-1:-1:-1;;;;;20466:16:0;;::::1;::::0;20493:21:::1;20458:57:::0;::::1;;;::::0;20466:16:::1;20458:57:::0;20466:16;20458:57;20493:21;20466:16;20458:57;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20412:115;19642:892;;;;;;17081:1;-1:-1:-1::0;17093:16:0;:24;;-1:-1:-1;;17093:24:0;;;19567:967::o;20542:413::-;17047:16;:23;;-1:-1:-1;;17047:23:0;17066:4;17047:23;;;20645:16:::1;::::0;;20659:1:::1;20645:16:::0;;;;;::::1;::::0;;-1:-1:-1;;20645:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20645:16:0::1;20621:40;;20690:4;20672;20677:1;20672:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;20672:23:0::1;;;-1:-1:-1::0;;;;;20672:23:0::1;;;::::0;::::1;20716:15;-1:-1:-1::0;;;;;20716:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20706:4;20711:1;20706:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20706:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;20749:198:::1;::::0;-1:-1:-1;;;20749:198:0;;:15:::1;:66:::0;;::::1;::::0;::::1;::::0;:198:::1;::::0;20830:11;;20856:1:::1;::::0;20872:4;;20899::::1;::::0;20920:15:::1;::::0;20749:198:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17093:16:0;:24;;-1:-1:-1;;17093:24:0;;;-1:-1:-1;;;;20542:413:0:o;20963:325::-;17047:16;:23;;-1:-1:-1;;17047:23:0;17066:4;17047:23;;;-1:-1:-1;;;;;21082:15:0::1;:31;;21121:9:::0;21154:4:::1;21174:11:::0;17047:16;;21232:7:::1;5164:6:::0;;-1:-1:-1;;;;;5164:6:0;;5091:87;21232:7:::1;21082:198;::::0;::::1;::::0;;;-1:-1:-1;;;;;;21082:198:0;;;-1:-1:-1;;;;;12978:15:1;;;21082:198:0::1;::::0;::::1;12960:34:1::0;13010:18;;;13003:34;;;;13053:18;;;13046:34;;;;13096:18;;;13089:34;13160:15;;;13139:19;;;13132:44;21254:15:0::1;13192:19:1::0;;;13185:35;12894:19;;21082:198:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17093:16:0;:24;;-1:-1:-1;;17093:24:0;;;-1:-1:-1;;;20963:325:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1423:247::-;1482:6;1535:2;1523:9;1514:7;1510:23;1506:32;1503:52;;;1551:1;1548;1541:12;1503:52;1590:9;1577:23;1609:31;1634:5;1609:31;:::i;:::-;1659:5;1423:247;-1:-1:-1;;;1423:247:1:o;2091:456::-;2168:6;2176;2184;2237:2;2225:9;2216:7;2212:23;2208:32;2205:52;;;2253:1;2250;2243:12;2205:52;2292:9;2279:23;2311:31;2336:5;2311:31;:::i;:::-;2361:5;-1:-1:-1;2418:2:1;2403:18;;2390:32;2431:33;2390:32;2431:33;:::i;:::-;2091:456;;2483:7;;-1:-1:-1;;;2537:2:1;2522:18;;;;2509:32;;2091:456::o;2741:180::-;2800:6;2853:2;2841:9;2832:7;2828:23;2824:32;2821:52;;;2869:1;2866;2859:12;2821:52;-1:-1:-1;2892:23:1;;2741:180;-1:-1:-1;2741:180:1:o;2926:316::-;3003:6;3011;3019;3072:2;3060:9;3051:7;3047:23;3043:32;3040:52;;;3088:1;3085;3078:12;3040:52;-1:-1:-1;;3111:23:1;;;3181:2;3166:18;;3153:32;;-1:-1:-1;3232:2:1;3217:18;;;3204:32;;2926:316;-1:-1:-1;2926:316:1:o;3247:615::-;3333:6;3341;3394:2;3382:9;3373:7;3369:23;3365:32;3362:52;;;3410:1;3407;3400:12;3362:52;3450:9;3437:23;3479:18;3520:2;3512:6;3509:14;3506:34;;;3536:1;3533;3526:12;3506:34;3574:6;3563:9;3559:22;3549:32;;3619:7;3612:4;3608:2;3604:13;3600:27;3590:55;;3641:1;3638;3631:12;3590:55;3681:2;3668:16;3707:2;3699:6;3696:14;3693:34;;;3723:1;3720;3713:12;3693:34;3776:7;3771:2;3761:6;3758:1;3754:14;3750:2;3746:23;3742:32;3739:45;3736:65;;;3797:1;3794;3787:12;3736:65;3828:2;3820:11;;;;;3850:6;;-1:-1:-1;3247:615:1;;-1:-1:-1;;;;3247:615:1:o;4341:388::-;4409:6;4417;4470:2;4458:9;4449:7;4445:23;4441:32;4438:52;;;4486:1;4483;4476:12;4438:52;4525:9;4512:23;4544:31;4569:5;4544:31;:::i;:::-;4594:5;-1:-1:-1;4651:2:1;4636:18;;4623:32;4664:33;4623:32;4664:33;:::i;:::-;4716:7;4706:17;;;4341:388;;;;;:::o;4734:380::-;4813:1;4809:12;;;;4856;;;4877:61;;4931:4;4923:6;4919:17;4909:27;;4877:61;4984:2;4976:6;4973:14;4953:18;4950:38;4947:161;;5030:10;5025:3;5021:20;5018:1;5011:31;5065:4;5062:1;5055:15;5093:4;5090:1;5083:15;4947:161;;4734:380;;;:::o;5119:127::-;5180:10;5175:3;5171:20;5168:1;5161:31;5211:4;5208:1;5201:15;5235:4;5232:1;5225:15;5251:125;5316:9;;;5337:10;;;5334:36;;;5350:18;;:::i;5381:127::-;5442:10;5437:3;5433:20;5430:1;5423:31;5473:4;5470:1;5463:15;5497:4;5494:1;5487:15;5513:135;5552:3;5573:17;;;5570:43;;5593:18;;:::i;:::-;-1:-1:-1;5640:1:1;5629:13;;5513:135::o;6059:184::-;6129:6;6182:2;6170:9;6161:7;6157:23;6153:32;6150:52;;;6198:1;6195;6188:12;6150:52;-1:-1:-1;6221:16:1;;6059:184;-1:-1:-1;6059:184:1:o;6527:277::-;6594:6;6647:2;6635:9;6626:7;6622:23;6618:32;6615:52;;;6663:1;6660;6653:12;6615:52;6695:9;6689:16;6748:5;6741:13;6734:21;6727:5;6724:32;6714:60;;6770:1;6767;6760:12;9084:168;9157:9;;;9188;;9205:15;;;9199:22;;9185:37;9175:71;;9226:18;;:::i;9257:217::-;9297:1;9323;9313:132;;9367:10;9362:3;9358:20;9355:1;9348:31;9402:4;9399:1;9392:15;9430:4;9427:1;9420:15;9313:132;-1:-1:-1;9459:9:1;;9257:217::o;9479:128::-;9546:9;;;9567:11;;;9564:37;;;9581:18;;:::i;9612:412::-;9814:2;9796:21;;;9853:2;9833:18;;;9826:30;9892:34;9887:2;9872:18;;9865:62;-1:-1:-1;;;9958:2:1;9943:18;;9936:46;10014:3;9999:19;;9612:412::o;11378:251::-;11448:6;11501:2;11489:9;11480:7;11476:23;11472:32;11469:52;;;11517:1;11514;11507:12;11469:52;11549:9;11543:16;11568:31;11593:5;11568:31;:::i;11634:980::-;11896:4;11944:3;11933:9;11929:19;11975:6;11964:9;11957:25;12001:2;12039:6;12034:2;12023:9;12019:18;12012:34;12082:3;12077:2;12066:9;12062:18;12055:31;12106:6;12141;12135:13;12172:6;12164;12157:22;12210:3;12199:9;12195:19;12188:26;;12249:2;12241:6;12237:15;12223:29;;12270:1;12280:195;12294:6;12291:1;12288:13;12280:195;;;12359:13;;-1:-1:-1;;;;;12355:39:1;12343:52;;12450:15;;;;12415:12;;;;12391:1;12309:9;12280:195;;;-1:-1:-1;;;;;;;12531:32:1;;;;12526:2;12511:18;;12504:60;-1:-1:-1;;;12595:3:1;12580:19;12573:35;12492:3;11634:980;-1:-1:-1;;;11634:980:1:o;13231:306::-;13319:6;13327;13335;13388:2;13376:9;13367:7;13363:23;13359:32;13356:52;;;13404:1;13401;13394:12;13356:52;13433:9;13427:16;13417:26;;13483:2;13472:9;13468:18;13462:25;13452:35;;13527:2;13516:9;13512:18;13506:25;13496:35;;13231:306;;;;;:::o

Swarm Source

ipfs://1768c13e546a3272ccc874269aa44b9ae7838d9bab454ea7f022bb1ee57e5dca

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.