ETH Price: $3,441.99 (-1.03%)
Gas: 5 Gwei

Contract

0xBA5eD69Ad282eC55a2f50bDEed948792DC43d31F
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve202012102024-06-30 1:25:592 days ago1719710759IN
0xBA5eD69A...2DC43d31F
0 ETH0.000188584.07503032
Approve201987152024-06-29 17:04:352 days ago1719680675IN
0xBA5eD69A...2DC43d31F
0 ETH0.000136824.693297
Approve201972122024-06-29 12:01:592 days ago1719662519IN
0xBA5eD69A...2DC43d31F
0 ETH0.000216684.65083542
Approve201937492024-06-29 0:25:113 days ago1719620711IN
0xBA5eD69A...2DC43d31F
0 ETH0.000119944.11261605
Approve201937392024-06-29 0:23:113 days ago1719620591IN
0xBA5eD69A...2DC43d31F
0 ETH0.000188154.06775851
Approve201880762024-06-28 5:24:474 days ago1719552287IN
0xBA5eD69A...2DC43d31F
0 ETH0.000241425.18198931
Approve201880712024-06-28 5:23:474 days ago1719552227IN
0xBA5eD69A...2DC43d31F
0 ETH0.000141293.03280773
Approve201880542024-06-28 5:20:234 days ago1719552023IN
0xBA5eD69A...2DC43d31F
0 ETH0.000129832.80554818
Approve201880502024-06-28 5:19:354 days ago1719551975IN
0xBA5eD69A...2DC43d31F
0 ETH0.000143093.09205758
Approve201772682024-06-26 17:10:595 days ago1719421859IN
0xBA5eD69A...2DC43d31F
0 ETH0.0016416435.23608326
Approve201718622024-06-25 23:04:356 days ago1719356675IN
0xBA5eD69A...2DC43d31F
0 ETH0.000151473.27239719
Approve201561082024-06-23 18:13:598 days ago1719166439IN
0xBA5eD69A...2DC43d31F
0 ETH0.000251085.38918722
Approve201556462024-06-23 16:41:118 days ago1719160871IN
0xBA5eD69A...2DC43d31F
0 ETH0.000361617.76156358
Approve201555722024-06-23 16:26:238 days ago1719159983IN
0xBA5eD69A...2DC43d31F
0 ETH0.000410768.81651643
Approve201536562024-06-23 10:00:598 days ago1719136859IN
0xBA5eD69A...2DC43d31F
0 ETH0.000143743.08534757
Approve201526782024-06-23 6:41:359 days ago1719124895IN
0xBA5eD69A...2DC43d31F
0 ETH0.00008731.87641342
Approve201522942024-06-23 5:24:479 days ago1719120287IN
0xBA5eD69A...2DC43d31F
0 ETH0.000109432.36725848
Approve201522672024-06-23 5:19:239 days ago1719119963IN
0xBA5eD69A...2DC43d31F
0 ETH0.000109542.36956567
Approve201522192024-06-23 5:09:479 days ago1719119387IN
0xBA5eD69A...2DC43d31F
0 ETH0.00013582.91870193
Approve201501442024-06-22 22:13:119 days ago1719094391IN
0xBA5eD69A...2DC43d31F
0 ETH0.000109482.36836522
Approve201488422024-06-22 17:50:239 days ago1719078623IN
0xBA5eD69A...2DC43d31F
0 ETH0.000193674.15703772
Approve201477382024-06-22 14:07:359 days ago1719065255IN
0xBA5eD69A...2DC43d31F
0 ETH0.000424049.10168029
Approve201471972024-06-22 12:18:479 days ago1719058727IN
0xBA5eD69A...2DC43d31F
0 ETH0.000135732.91338516
Approve201418522024-06-21 18:21:4710 days ago1718994107IN
0xBA5eD69A...2DC43d31F
0 ETH0.000432649.28626799
Approve201414992024-06-21 17:10:1110 days ago1718989811IN
0xBA5eD69A...2DC43d31F
0 ETH0.000341387.33689993
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
201973502024-06-29 12:29:592 days ago1719664199
0xBA5eD69A...2DC43d31F
0.00626844 ETH
201973502024-06-29 12:29:592 days ago1719664199
0xBA5eD69A...2DC43d31F
0.0130143 ETH
201973502024-06-29 12:29:592 days ago1719664199
0xBA5eD69A...2DC43d31F
0.00193033 ETH
201973502024-06-29 12:29:592 days ago1719664199
0xBA5eD69A...2DC43d31F
0.0043381 ETH
201973502024-06-29 12:29:592 days ago1719664199
0xBA5eD69A...2DC43d31F
0.02169051 ETH
201718812024-06-25 23:08:236 days ago1719356903
0xBA5eD69A...2DC43d31F
0.00825799 ETH
201718812024-06-25 23:08:236 days ago1719356903
0xBA5eD69A...2DC43d31F
0.01713877 ETH
201718812024-06-25 23:08:236 days ago1719356903
0xBA5eD69A...2DC43d31F
0.00254506 ETH
201718812024-06-25 23:08:236 days ago1719356903
0xBA5eD69A...2DC43d31F
0.00571292 ETH
201718812024-06-25 23:08:236 days ago1719356903
0xBA5eD69A...2DC43d31F
0.02856462 ETH
201694712024-06-25 15:03:596 days ago1719327839
0xBA5eD69A...2DC43d31F
0.0227733 ETH
201694712024-06-25 15:03:596 days ago1719327839
0xBA5eD69A...2DC43d31F
0.04714302 ETH
201694712024-06-25 15:03:596 days ago1719327839
0xBA5eD69A...2DC43d31F
0.00705896 ETH
201694712024-06-25 15:03:596 days ago1719327839
0xBA5eD69A...2DC43d31F
0.01571434 ETH
201694712024-06-25 15:03:596 days ago1719327839
0xBA5eD69A...2DC43d31F
0.0785717 ETH
201636402024-06-24 19:30:237 days ago1719257423
0xBA5eD69A...2DC43d31F
0.01134455 ETH
201636402024-06-24 19:30:237 days ago1719257423
0xBA5eD69A...2DC43d31F
0.02352536 ETH
201636402024-06-24 19:30:237 days ago1719257423
0xBA5eD69A...2DC43d31F
0.00350276 ETH
201636402024-06-24 19:30:237 days ago1719257423
0xBA5eD69A...2DC43d31F
0.00784178 ETH
201636402024-06-24 19:30:237 days ago1719257423
0xBA5eD69A...2DC43d31F
0.03920894 ETH
201623692024-06-24 15:14:477 days ago1719242087
0xBA5eD69A...2DC43d31F
0.00847201 ETH
201623692024-06-24 15:14:477 days ago1719242087
0xBA5eD69A...2DC43d31F
0.01758593 ETH
201623692024-06-24 15:14:477 days ago1719242087
0xBA5eD69A...2DC43d31F
0.00261003 ETH
201623692024-06-24 15:14:477 days ago1719242087
0xBA5eD69A...2DC43d31F
0.00586197 ETH
201623692024-06-24 15:14:477 days ago1719242087
0xBA5eD69A...2DC43d31F
0.02930988 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MAGIVERSE

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-09
*/

/**   
-------------------------------------------------------------------------------- 
                             *                  (              (    (        
      { --.\  |            (  `    (     (      )\ )           )\ ) )\ )     
       '-._\\ | (\___     )\))(   )\    )\ )  (()/((   (  (  (()/((()/((    
           `\\|{/ ^ _)--((_)()((((_)( (()/(   /(_))\  )\ )\  /(_))/(_))\   
       .'^^^^^^^  /`    (_()((_)\ _ )\ /(_))_(_))((_)((_|(_)(_)) (_))((_)  
      //\   ) ,  /      |  \/  (_)_\(_|_)) __|_ _\ \ / /| __| _ \/ __| __| 
,  _.'/  `\<-- \<       | |\/| |/ _ \   | (_ || | \ V / | _||   /\__ \ _|  
 `^^^`     ^^   ^^      |_|  |_/_/ \_\   \___|___| \_/  |___|_|_\|___/___| 
--------------------------------------------------------------------------------

Step into the enchanted realm of Magiverse, a Play to Earn MMORPG where magic and adventure await at every turn.

Website: https://magiverse.online/
Whitepaper: https://info.magiverse.online/welcome
X: https://x.com/Magiverse_ERC
TG: https://t.me/magiverse 

                                                                       
*/

// SPDX-License-Identifier: UNLICENSE

pragma solidity 0.8.23;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract MAGIVERSE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    address payable private _taxWallet;
    address payable private _devWallet;
    address public _stakingContract;

    uint256 private _initialBuyTax = 25;
    uint256 private _initialSellTax = 35;
    uint256 private _finalBuyTax = 5;
    uint256 private _finalSellTax = 5;
    uint256 private _reduceBuyTaxAt = 20;
    uint256 private _reduceSellTaxAt = 25;
    uint256 private _preventSwapBefore = 20;
    uint256 private _buyCount = 0;
    uint256 private _txCount = 0;

    uint256 private _marketingFee = 2;
    uint256 private _devFee = 1;
    uint256 private _LpFee = 1;
    uint256 private _stakingFee = 1;
    uint256 private _totalFee =
        _marketingFee.add(_devFee).add(_LpFee).add(_stakingFee);

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = "Magiverse";
    string private constant _symbol = "MAGI";

    uint256 public _maxTxAmount = 2 * (_tTotal / 100);
    uint256 public _maxWalletSize = 2 * (_tTotal / 100);
    uint256 public _taxSwapThreshold = 5 * (_tTotal / 1000);

    uint256 private _minimumTaxSwapThreshold = 15 * (_tTotal / 10000);
    uint256 private _thresholdReduction = 5 * (_tTotal / 10000);
    uint256 private _reduceThresholdAfter = 100;

    uint256 public _stakingFeeTokens = 0;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public _stakingFeeActive = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(0x6E9B8A05aA14E445fd0f3EE5566B2C387F9be469);
        _devWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        uint256 stakingAmount = 0;
        if (from != owner() && to != owner()) {
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceBuyTaxAt)
                            ? _finalBuyTax
                            : _initialBuyTax
                    )
                    .div(100);
                _buyCount++;
                _txCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceSellTaxAt)
                            ? _finalSellTax
                            : _initialSellTax
                    )
                    .div(100);
                _txCount++;
            }

            uint256 contractTokenBalance = balanceOf(address(this)).sub(
                _stakingFeeTokens
            );
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance > _taxSwapThreshold &&
                _buyCount > _preventSwapBefore
            ) {
                swapAndLiquify(
                    min(amount, min(contractTokenBalance, _maxTxAmount))
                );
            }
        }

        if (_stakingFeeActive) {
            stakingAmount = amount.mul(_stakingFee).div(100);
            _stakingFeeTokens = _stakingFeeTokens + stakingAmount;
            _balances[address(this)] = _balances[address(this)].add(
                stakingAmount
            );
            emit Transfer(from, address(this), stakingAmount);
            if (taxAmount > 0) {
                taxAmount = taxAmount - stakingAmount;
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        uint256 totalTax = taxAmount.add(stakingAmount);
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(totalTax));
        emit Transfer(from, to, amount.sub(totalTax));

        if (
            _txCount > _reduceThresholdAfter &&
            _taxSwapThreshold > _minimumTaxSwapThreshold
        ) {
            _taxSwapThreshold = _taxSwapThreshold - _thresholdReduction;
            _txCount = 0;
        }
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function swapAndLiquify(uint256 tokenBalance) private lockTheSwap {
        uint256 actualMarketingFee = _marketingFee;
        if (!_stakingFeeActive) {
            actualMarketingFee = _marketingFee.add(_stakingFee);
        }
        uint256 tokens_to_M = (tokenBalance * actualMarketingFee) / _totalFee;
        uint256 tokens_to_D = (tokenBalance * _devFee) / _totalFee;
        uint256 tokens_to_LP = (tokenBalance * _LpFee) / _totalFee;

        uint256 totalTokensToSwap = tokens_to_M + tokens_to_D + tokens_to_LP;

        uint256 liquidityTokens = (tokenBalance * tokens_to_LP) /
            totalTokensToSwap /
            2;

        uint256 balanceBeforeSwap = address(this).balance;

        swapTokensForEth(tokenBalance - liquidityTokens);

        uint256 ETH_Total = address(this).balance - balanceBeforeSwap;
        uint256 ETH_M = (ETH_Total * actualMarketingFee) / _totalFee;
        uint256 ETH_D = (ETH_Total * _devFee) / _totalFee;
        uint256 ETH_L = ETH_Total - ETH_M - ETH_D;

        if (liquidityTokens > 0 && ETH_L > 0) {
            addLiquidity(liquidityTokens, ETH_L);
        }

        sendToWallet(_taxWallet, ETH_M);

        ETH_Total = address(this).balance;
        sendToWallet(_devWallet, ETH_Total);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            _devWallet,
            block.timestamp
        );
    }

    function sendToWallet(address payable wallet, uint256 amount) private {
        wallet.transfer(amount);
    }

    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
        );
    }

    /**
     * @dev Removes limits on transaction amounts and wallet sizes.
     * Can only be called by the contract owner.
     */
    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    /**
     * @dev Opens trading by setting up the Uniswap pair and adding initial liquidity.
     * Can only be called by the contract owner.
     */
    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    /**
     * @dev Reduces the transaction fees for buying and selling.
     * Can only be called by the tax wallet, doesn't allow to rise fees.
     * @param _newFee The new fee percentage to be set for both buying and selling.
     */
    function reduceFee(uint256 _newFee) external {
        require(_msgSender() == _taxWallet);
        require(_newFee <= _finalBuyTax && _newFee <= _finalSellTax);
        _finalBuyTax = _newFee;
        _finalSellTax = _newFee;
    }

    /**
     * @dev Transfers tokens held by the contract to the tax wallet.
     * Can only be called by the tax wallet.
     */
    function unclogContract() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            _transfer(address(this), _taxWallet, tokenBalance);
            _stakingFeeTokens = 0;
        }
    }

    /**
     * @dev Transfers ETH held by the contract to the tax wallet.
     * Can only be called by the tax wallet.
     */
    function clearStuckBalance() external {
        require(_msgSender() == _taxWallet);
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            _taxWallet.transfer(ethBalance);
        }
    }

    /**
     * @dev Swaps tokens held by the contract for ETH and transfers it to the tax wallet.
     * Can only be called by the tax wallet.
     */
    function manualSwap() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendToWallet(_taxWallet, ethBalance);
        }
        _stakingFeeTokens = 0;
    }

    /**
     * @dev Sets the address of the staking contract.
     * Can only be called by the tax wallet.
     * @param stakingContract The address of the staking contract.
     */
    function setStakingAddress(address stakingContract) external {
        require(_msgSender() == _taxWallet);
        require(stakingContract != address(0));
        _stakingContract = stakingContract;
    }

    /**
     * @dev Toggles the staking fee on or off.
     * Can only be called by the staking contract.
     */
    function toggleStakingFee() external {
        require(_msgSender() == _stakingContract);
        _stakingFeeActive = !_stakingFeeActive;
    }

    /**
     * @dev Sends a percentage of the staking fee tokens to the staking contract.
     * Can only be called by the tax wallet.
     * @param percentage The percentage of staking fee tokens to send.
     */
    function sendTokensToStakingContract(uint256 percentage) external {
        require(_msgSender() == _taxWallet);
        require(percentage > 0 && percentage <= 100);
        if (_stakingFeeTokens > 0) {
            uint256 tokensToSend = _stakingFeeTokens.mul(percentage).div(100);
            _balances[address(this)] = _balances[address(this)].sub(
                tokensToSend
            );
            _balances[_stakingContract] = _balances[_stakingContract].add(
                tokensToSend
            );
            _stakingFeeTokens = _stakingFeeTokens.sub(tokensToSend);
            emit Transfer(address(this), _stakingContract, tokensToSend);
        }
    }

    /**
     * @dev Sends a percentage of the staking fee tokens to a specified P2E wallet.
     * Can only be called by the tax wallet.
     * @param percentage The percentage of staking fee tokens to send.
     * @param p2eWallet The address of the P2E wallet.
     */
    function sendTokensToP2E(uint256 percentage, address p2eWallet) external {
        require(_msgSender() == _taxWallet);
        require(percentage > 0 && percentage <= 100);
        if (_stakingFeeTokens > 0) {
            uint256 tokensToSend = _stakingFeeTokens.mul(percentage).div(100);
            _balances[address(this)] = _balances[address(this)].sub(
                tokensToSend
            );
            _balances[p2eWallet] = _balances[p2eWallet].add(tokensToSend);
            _stakingFeeTokens = _stakingFeeTokens.sub(tokensToSend);
            emit Transfer(address(this), p2eWallet, tokensToSend);
        }
    }
}

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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingFeeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingFeeTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","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":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"},{"internalType":"address","name":"p2eWallet","type":"address"}],"name":"sendTokensToP2E","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"sendTokensToStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakingContract","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toggleStakingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclogContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526019600755602360085560056009556005600a556014600b556019600c556014600d555f600e555f600f556002601055600160115560016012556001601355620000716013546200006a6012546200006a6011546010546200035b60201b90919060201c565b906200035b565b6014556064620000846009600a620004d6565b6200009490633b9aca00620004ed565b620000a0919062000507565b620000ad906002620004ed565b6015556064620000c06009600a620004d6565b620000d090633b9aca00620004ed565b620000dc919062000507565b620000e9906002620004ed565b6016556103e8620000fd6009600a620004d6565b6200010d90633b9aca00620004ed565b62000119919062000507565b62000126906005620004ed565b6017556127106200013a6009600a620004d6565b6200014a90633b9aca00620004ed565b62000156919062000507565b6200016390600f620004ed565b601855612710620001776009600a620004d6565b6200018790633b9aca00620004ed565b62000193919062000507565b620001a0906005620004ed565b6019556064601a555f601b55601d805462ffffff60a81b19169055348015620001c7575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031916736e9b8a05aa14e445fd0f3ee5566b2c387f9be469179055620002363390565b600580546001600160a01b0319166001600160a01b0392909216919091179055620002646009600a620004d6565b6200027490633b9aca00620004ed565b335f9081526001602081905260408220929092556003906200029d5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600454909116835291208054909216179055620002fb3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003346009600a620004d6565b6200034490633b9aca00620004ed565b60405190815260200160405180910390a36200053d565b5f8062000369838562000527565b905083811015620003c05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200041d57815f1904821115620004015762000401620003c9565b808516156200040f57918102915b93841c9390800290620003e2565b509250929050565b5f826200043557506001620003c3565b816200044357505f620003c3565b81600181146200045c5760028114620004675762000487565b6001915050620003c3565b60ff8411156200047b576200047b620003c9565b50506001821b620003c3565b5060208310610133831016604e8410600b8410161715620004ac575081810a620003c3565b620004b88383620003dd565b805f1904821115620004ce57620004ce620003c9565b029392505050565b5f620004e660ff84168362000425565b9392505050565b8082028115828204841417620003c357620003c3620003c9565b5f826200052257634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620003c357620003c3620003c9565b611f90806200054b5f395ff3fe608060405260043610610198575f3560e01c80637d1db4a5116100e7578063bf474bed11610087578063dd62ed3e11610062578063dd62ed3e14610460578063ec1f3f63146104a4578063f4e0d9ac146104c3578063f9113fba146104e2575f80fd5b8063bf474bed14610422578063c9567bf914610437578063d59e81961461044b575f80fd5b80638f9a55c0116100c25780638f9a55c0146103a357806395d89b41146103b8578063a9059cbb146103e4578063b0de5e2914610403575f80fd5b80637d1db4a51461034a57806385707b001461035f5780638da5cb5b14610373575f80fd5b8063313ce56711610152578063669834911161012d57806366983491146102ce57806370a08231146102ee578063715018a614610322578063751039fc14610336575f80fd5b8063313ce5671461028b578063364333f4146102a657806351bc3c85146102ba575f80fd5b806306fdde03146101a3578063095ea7b3146101e657806318160ddd1461021557806323b872dd1461023757806328f4d2a0146102565780632ee6274c1461026c575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506040805180820190915260098152684d616769766572736560b81b60208201525b6040516101dd9190611aee565b60405180910390f35b3480156101f1575f80fd5b50610205610200366004611b4e565b610501565b60405190151581526020016101dd565b348015610220575f80fd5b50610229610517565b6040519081526020016101dd565b348015610242575f80fd5b50610205610251366004611b78565b610537565b348015610261575f80fd5b5061026a61059e565b005b348015610277575f80fd5b5061026a610286366004611bb6565b6105f2565b348015610296575f80fd5b50604051600981526020016101dd565b3480156102b1575f80fd5b5061026a6106f5565b3480156102c5575f80fd5b5061026a610752565b3480156102d9575f80fd5b50601d5461020590600160b81b900460ff1681565b3480156102f9575f80fd5b50610229610308366004611be4565b6001600160a01b03165f9081526001602052604090205490565b34801561032d575f80fd5b5061026a6107b4565b348015610341575f80fd5b5061026a61082e565b348015610355575f80fd5b5061022960155481565b34801561036a575f80fd5b5061026a6108df565b34801561037e575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101dd565b3480156103ae575f80fd5b5061022960165481565b3480156103c3575f80fd5b506040805180820190915260048152634d41474960e01b60208201526101d0565b3480156103ef575f80fd5b506102056103fe366004611b4e565b61091f565b34801561040e575f80fd5b5060065461038b906001600160a01b031681565b34801561042d575f80fd5b5061022960175481565b348015610442575f80fd5b5061026a61092b565b348015610456575f80fd5b50610229601b5481565b34801561046b575f80fd5b5061022961047a366004611bff565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104af575f80fd5b5061026a6104be366004611c2b565b610cac565b3480156104ce575f80fd5b5061026a6104dd366004611be4565b610cf1565b3480156104ed575f80fd5b5061026a6104fc366004611c2b565b610d44565b5f61050d338484610e46565b5060015b92915050565b5f6105246009600a611d36565b61053290633b9aca00611d44565b905090565b5f610543848484610f61565b610594843361058f85604051806060016040528060288152602001611f13602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061154d565b610e46565b5060019392505050565b6004546001600160a01b0316336001600160a01b0316146105bd575f80fd5b305f9081526001602052604090205480156105ef576004546105ea9030906001600160a01b031683610f61565b5f601b555b50565b6004546001600160a01b0316336001600160a01b031614610611575f80fd5b5f82118015610621575060648211155b610629575f80fd5b601b54156106f1575f610652606461064c85601b5461158590919063ffffffff16565b9061160a565b305f9081526001602052604090205490915061066e908261164b565b305f90815260016020526040808220929092556001600160a01b03841681522054610699908261168c565b6001600160a01b0383165f90815260016020526040902055601b546106be908261164b565b601b556040518181526001600160a01b0383169030905f80516020611f3b833981519152906020015b60405180910390a3505b5050565b6004546001600160a01b0316336001600160a01b031614610714575f80fd5b4780156105ef576004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156106f1573d5f803e3d5ffd5b6004546001600160a01b0316336001600160a01b031614610771575f80fd5b305f90815260016020526040902054801561078f5761078f816116ea565b4780156107ac576004546107ac906001600160a01b031682611832565b50505f601b55565b5f546001600160a01b031633146107e65760405162461bcd60e51b81526004016107dd90611d5b565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108575760405162461bcd60e51b81526004016107dd90611d5b565b6108636009600a611d36565b61087190633b9aca00611d44565b6015556108806009600a611d36565b61088e90633b9aca00611d44565b6016557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108be6009600a611d36565b6108cc90633b9aca00611d44565b60405190815260200160405180910390a1565b6006546001600160a01b0316336001600160a01b0316146108fe575f80fd5b601d805460ff60b81b198116600160b81b9182900460ff1615909102179055565b5f61050d338484610f61565b5f546001600160a01b031633146109545760405162461bcd60e51b81526004016107dd90611d5b565b601d54600160a01b900460ff16156109ae5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016107dd565b601c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109f79030906109e96009600a611d36565b61058f90633b9aca00611d44565b601c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611d90565b6001600160a01b031663c9c6539630601c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aee9190611d90565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5c9190611d90565b601d80546001600160a01b039283166001600160a01b0319909116179055601c541663f305d7194730610ba3816001600160a01b03165f9081526001602052604090205490565b5f80610bb65f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610bd896959493929190611dab565b60606040518083038185885af1158015610bf4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c199190611de6565b5050601d54601c5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610c6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c929190611e11565b50601d805462ff00ff60a01b19166201000160a01b179055565b6004546001600160a01b0316336001600160a01b031614610ccb575f80fd5b6009548111158015610cdf5750600a548111155b610ce7575f80fd5b6009819055600a55565b6004546001600160a01b0316336001600160a01b031614610d10575f80fd5b6001600160a01b038116610d22575f80fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316336001600160a01b031614610d63575f80fd5b5f81118015610d73575060648111155b610d7b575f80fd5b601b54156105ef575f610d9e606461064c84601b5461158590919063ffffffff16565b305f90815260016020526040902054909150610dba908261164b565b305f90815260016020526040808220929092556006546001600160a01b031681522054610de7908261168c565b6006546001600160a01b03165f90815260016020526040902055601b54610e0e908261164b565b601b556006546040518281526001600160a01b039091169030905f80516020611f3b8339815191529060200160405180910390a35050565b6001600160a01b038316610ea85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dd565b6001600160a01b038216610f095760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dd565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016106e7565b6001600160a01b038316610fc55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107dd565b6001600160a01b0382166110275760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107dd565b5f81116110885760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107dd565b5f8061109b5f546001600160a01b031690565b6001600160a01b0316856001600160a01b0316141580156110c957505f546001600160a01b03858116911614155b1561134357601d546001600160a01b0386811691161480156110f95750601c546001600160a01b03858116911614155b801561111d57506001600160a01b0384165f9081526003602052604090205460ff16155b1561123f576015548311156111745760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016107dd565b60165483611196866001600160a01b03165f9081526001602052604090205490565b6111a09190611e30565b11156111ee5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016107dd565b611214606461064c600b54600e54116112095760075461120d565b6009545b8690611585565b600e80549193505f61122583611e43565b9091555050600f8054905f61123983611e43565b91905055505b601d546001600160a01b03858116911614801561126557506001600160a01b0385163014155b156112a65761128f606461064c600c54600e54116112855760085461120d565b600a548690611585565b600f80549193505f6112a083611e43565b91905055505b601b54305f9081526001602052604081205490916112c4919061164b565b601d54909150600160a81b900460ff161580156112ee5750601d546001600160a01b038681169116145b80156113035750601d54600160b01b900460ff165b8015611310575060175481115b801561131f5750600d54600e54115b156113415761134161133c856113378460155461186a565b61186a565b61187e565b505b601d54600160b81b900460ff16156113f35761136f606461064c6013548661158590919063ffffffff16565b905080601b5461137f9190611e30565b601b55305f9081526001602052604090205461139b908261168c565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611f3b833981519152906113d89085815260200190565b60405180910390a381156113f3576113f08183611e5b565b91505b811561145857305f90815260016020526040902054611412908361168c565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611f3b8339815191529061144f9086815260200190565b60405180910390a35b5f611463838361168c565b6001600160a01b0387165f90815260016020526040902054909150611488908561164b565b6001600160a01b0387165f908152600160205260409020556114cb6114ad858361164b565b6001600160a01b0387165f908152600160205260409020549061168c565b6001600160a01b038087165f8181526001602052604090209290925587165f80516020611f3b833981519152611501878561164b565b60405190815260200160405180910390a3601a54600f541180156115285750601854601754115b156115455760195460175461153d9190611e5b565b6017555f600f555b505050505050565b5f81848411156115705760405162461bcd60e51b81526004016107dd9190611aee565b505f61157c8486611e5b565b95945050505050565b5f825f0361159457505f610511565b5f61159f8385611d44565b9050826115ac8583611e6e565b146116035760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107dd565b9392505050565b5f61160383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a23565b5f61160383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061154d565b5f806116988385611e30565b9050838110156116035760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107dd565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061171d5761171d611e8d565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611774573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117989190611d90565b816001815181106117ab576117ab611e8d565b6001600160a01b039283166020918202929092010152601c546117d19130911684610e46565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906118099085905f90869030904290600401611ea1565b5f604051808303815f87803b158015611820575f80fd5b505af1158015611545573d5f803e3d5ffd5b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611865573d5f803e3d5ffd5b505050565b5f8183116118785782611603565b50919050565b601d805460ff60a81b1916600160a81b179081905560105490600160b81b900460ff166118b7576013546010546118b49161168c565b90505b6014545f906118c68385611d44565b6118d09190611e6e565b90505f601454601154856118e49190611d44565b6118ee9190611e6e565b90505f601454601254866119029190611d44565b61190c9190611e6e565b90505f8161191a8486611e30565b6119249190611e30565b90505f600282611934858a611d44565b61193e9190611e6e565b6119489190611e6e565b90504761195d611958838a611e5b565b6116ea565b5f6119688247611e5b565b90505f601454898361197a9190611d44565b6119849190611e6e565b90505f601454601154846119989190611d44565b6119a29190611e6e565b90505f816119b08486611e5b565b6119ba9190611e5b565b90505f861180156119ca57505f81115b156119d9576119d98682611a4f565b6004546119ef906001600160a01b031684611832565b600554479450611a08906001600160a01b031685611832565b5050601d805460ff60a81b1916905550505050505050505050565b5f8183611a435760405162461bcd60e51b81526004016107dd9190611aee565b505f61157c8486611e6e565b601c54611a679030906001600160a01b031684610e46565b601c5460055460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611aa692309289925f92839216904290600401611dab565b60606040518083038185885af1158015611ac2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ae79190611de6565b5050505050565b5f602080835283518060208501525f5b81811015611b1a57858101830151858201604001528201611afe565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105ef575f80fd5b5f8060408385031215611b5f575f80fd5b8235611b6a81611b3a565b946020939093013593505050565b5f805f60608486031215611b8a575f80fd5b8335611b9581611b3a565b92506020840135611ba581611b3a565b929592945050506040919091013590565b5f8060408385031215611bc7575f80fd5b823591506020830135611bd981611b3a565b809150509250929050565b5f60208284031215611bf4575f80fd5b813561160381611b3a565b5f8060408385031215611c10575f80fd5b8235611c1b81611b3a565b91506020830135611bd981611b3a565b5f60208284031215611c3b575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c9057815f1904821115611c7657611c76611c42565b80851615611c8357918102915b93841c9390800290611c5b565b509250929050565b5f82611ca657506001610511565b81611cb257505f610511565b8160018114611cc85760028114611cd257611cee565b6001915050610511565b60ff841115611ce357611ce3611c42565b50506001821b610511565b5060208310610133831016604e8410600b8410161715611d11575081810a610511565b611d1b8383611c56565b805f1904821115611d2e57611d2e611c42565b029392505050565b5f61160360ff841683611c98565b808202811582820484141761051157610511611c42565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611da0575f80fd5b815161160381611b3a565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215611df8575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611e21575f80fd5b81518015158114611603575f80fd5b8082018082111561051157610511611c42565b5f60018201611e5457611e54611c42565b5060010190565b8181038181111561051157610511611c42565b5f82611e8857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611ef15784516001600160a01b031683529383019391830191600101611ecc565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220af3aef6a4d3d99f346b2d37be69569dd3b46af7bbd8ff85f37797d696214973f64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610198575f3560e01c80637d1db4a5116100e7578063bf474bed11610087578063dd62ed3e11610062578063dd62ed3e14610460578063ec1f3f63146104a4578063f4e0d9ac146104c3578063f9113fba146104e2575f80fd5b8063bf474bed14610422578063c9567bf914610437578063d59e81961461044b575f80fd5b80638f9a55c0116100c25780638f9a55c0146103a357806395d89b41146103b8578063a9059cbb146103e4578063b0de5e2914610403575f80fd5b80637d1db4a51461034a57806385707b001461035f5780638da5cb5b14610373575f80fd5b8063313ce56711610152578063669834911161012d57806366983491146102ce57806370a08231146102ee578063715018a614610322578063751039fc14610336575f80fd5b8063313ce5671461028b578063364333f4146102a657806351bc3c85146102ba575f80fd5b806306fdde03146101a3578063095ea7b3146101e657806318160ddd1461021557806323b872dd1461023757806328f4d2a0146102565780632ee6274c1461026c575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506040805180820190915260098152684d616769766572736560b81b60208201525b6040516101dd9190611aee565b60405180910390f35b3480156101f1575f80fd5b50610205610200366004611b4e565b610501565b60405190151581526020016101dd565b348015610220575f80fd5b50610229610517565b6040519081526020016101dd565b348015610242575f80fd5b50610205610251366004611b78565b610537565b348015610261575f80fd5b5061026a61059e565b005b348015610277575f80fd5b5061026a610286366004611bb6565b6105f2565b348015610296575f80fd5b50604051600981526020016101dd565b3480156102b1575f80fd5b5061026a6106f5565b3480156102c5575f80fd5b5061026a610752565b3480156102d9575f80fd5b50601d5461020590600160b81b900460ff1681565b3480156102f9575f80fd5b50610229610308366004611be4565b6001600160a01b03165f9081526001602052604090205490565b34801561032d575f80fd5b5061026a6107b4565b348015610341575f80fd5b5061026a61082e565b348015610355575f80fd5b5061022960155481565b34801561036a575f80fd5b5061026a6108df565b34801561037e575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101dd565b3480156103ae575f80fd5b5061022960165481565b3480156103c3575f80fd5b506040805180820190915260048152634d41474960e01b60208201526101d0565b3480156103ef575f80fd5b506102056103fe366004611b4e565b61091f565b34801561040e575f80fd5b5060065461038b906001600160a01b031681565b34801561042d575f80fd5b5061022960175481565b348015610442575f80fd5b5061026a61092b565b348015610456575f80fd5b50610229601b5481565b34801561046b575f80fd5b5061022961047a366004611bff565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104af575f80fd5b5061026a6104be366004611c2b565b610cac565b3480156104ce575f80fd5b5061026a6104dd366004611be4565b610cf1565b3480156104ed575f80fd5b5061026a6104fc366004611c2b565b610d44565b5f61050d338484610e46565b5060015b92915050565b5f6105246009600a611d36565b61053290633b9aca00611d44565b905090565b5f610543848484610f61565b610594843361058f85604051806060016040528060288152602001611f13602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061154d565b610e46565b5060019392505050565b6004546001600160a01b0316336001600160a01b0316146105bd575f80fd5b305f9081526001602052604090205480156105ef576004546105ea9030906001600160a01b031683610f61565b5f601b555b50565b6004546001600160a01b0316336001600160a01b031614610611575f80fd5b5f82118015610621575060648211155b610629575f80fd5b601b54156106f1575f610652606461064c85601b5461158590919063ffffffff16565b9061160a565b305f9081526001602052604090205490915061066e908261164b565b305f90815260016020526040808220929092556001600160a01b03841681522054610699908261168c565b6001600160a01b0383165f90815260016020526040902055601b546106be908261164b565b601b556040518181526001600160a01b0383169030905f80516020611f3b833981519152906020015b60405180910390a3505b5050565b6004546001600160a01b0316336001600160a01b031614610714575f80fd5b4780156105ef576004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156106f1573d5f803e3d5ffd5b6004546001600160a01b0316336001600160a01b031614610771575f80fd5b305f90815260016020526040902054801561078f5761078f816116ea565b4780156107ac576004546107ac906001600160a01b031682611832565b50505f601b55565b5f546001600160a01b031633146107e65760405162461bcd60e51b81526004016107dd90611d5b565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108575760405162461bcd60e51b81526004016107dd90611d5b565b6108636009600a611d36565b61087190633b9aca00611d44565b6015556108806009600a611d36565b61088e90633b9aca00611d44565b6016557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108be6009600a611d36565b6108cc90633b9aca00611d44565b60405190815260200160405180910390a1565b6006546001600160a01b0316336001600160a01b0316146108fe575f80fd5b601d805460ff60b81b198116600160b81b9182900460ff1615909102179055565b5f61050d338484610f61565b5f546001600160a01b031633146109545760405162461bcd60e51b81526004016107dd90611d5b565b601d54600160a01b900460ff16156109ae5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016107dd565b601c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109f79030906109e96009600a611d36565b61058f90633b9aca00611d44565b601c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611d90565b6001600160a01b031663c9c6539630601c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aee9190611d90565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5c9190611d90565b601d80546001600160a01b039283166001600160a01b0319909116179055601c541663f305d7194730610ba3816001600160a01b03165f9081526001602052604090205490565b5f80610bb65f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610bd896959493929190611dab565b60606040518083038185885af1158015610bf4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c199190611de6565b5050601d54601c5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610c6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c929190611e11565b50601d805462ff00ff60a01b19166201000160a01b179055565b6004546001600160a01b0316336001600160a01b031614610ccb575f80fd5b6009548111158015610cdf5750600a548111155b610ce7575f80fd5b6009819055600a55565b6004546001600160a01b0316336001600160a01b031614610d10575f80fd5b6001600160a01b038116610d22575f80fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316336001600160a01b031614610d63575f80fd5b5f81118015610d73575060648111155b610d7b575f80fd5b601b54156105ef575f610d9e606461064c84601b5461158590919063ffffffff16565b305f90815260016020526040902054909150610dba908261164b565b305f90815260016020526040808220929092556006546001600160a01b031681522054610de7908261168c565b6006546001600160a01b03165f90815260016020526040902055601b54610e0e908261164b565b601b556006546040518281526001600160a01b039091169030905f80516020611f3b8339815191529060200160405180910390a35050565b6001600160a01b038316610ea85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dd565b6001600160a01b038216610f095760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dd565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016106e7565b6001600160a01b038316610fc55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107dd565b6001600160a01b0382166110275760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107dd565b5f81116110885760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107dd565b5f8061109b5f546001600160a01b031690565b6001600160a01b0316856001600160a01b0316141580156110c957505f546001600160a01b03858116911614155b1561134357601d546001600160a01b0386811691161480156110f95750601c546001600160a01b03858116911614155b801561111d57506001600160a01b0384165f9081526003602052604090205460ff16155b1561123f576015548311156111745760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016107dd565b60165483611196866001600160a01b03165f9081526001602052604090205490565b6111a09190611e30565b11156111ee5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016107dd565b611214606461064c600b54600e54116112095760075461120d565b6009545b8690611585565b600e80549193505f61122583611e43565b9091555050600f8054905f61123983611e43565b91905055505b601d546001600160a01b03858116911614801561126557506001600160a01b0385163014155b156112a65761128f606461064c600c54600e54116112855760085461120d565b600a548690611585565b600f80549193505f6112a083611e43565b91905055505b601b54305f9081526001602052604081205490916112c4919061164b565b601d54909150600160a81b900460ff161580156112ee5750601d546001600160a01b038681169116145b80156113035750601d54600160b01b900460ff165b8015611310575060175481115b801561131f5750600d54600e54115b156113415761134161133c856113378460155461186a565b61186a565b61187e565b505b601d54600160b81b900460ff16156113f35761136f606461064c6013548661158590919063ffffffff16565b905080601b5461137f9190611e30565b601b55305f9081526001602052604090205461139b908261168c565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611f3b833981519152906113d89085815260200190565b60405180910390a381156113f3576113f08183611e5b565b91505b811561145857305f90815260016020526040902054611412908361168c565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611f3b8339815191529061144f9086815260200190565b60405180910390a35b5f611463838361168c565b6001600160a01b0387165f90815260016020526040902054909150611488908561164b565b6001600160a01b0387165f908152600160205260409020556114cb6114ad858361164b565b6001600160a01b0387165f908152600160205260409020549061168c565b6001600160a01b038087165f8181526001602052604090209290925587165f80516020611f3b833981519152611501878561164b565b60405190815260200160405180910390a3601a54600f541180156115285750601854601754115b156115455760195460175461153d9190611e5b565b6017555f600f555b505050505050565b5f81848411156115705760405162461bcd60e51b81526004016107dd9190611aee565b505f61157c8486611e5b565b95945050505050565b5f825f0361159457505f610511565b5f61159f8385611d44565b9050826115ac8583611e6e565b146116035760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107dd565b9392505050565b5f61160383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a23565b5f61160383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061154d565b5f806116988385611e30565b9050838110156116035760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107dd565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061171d5761171d611e8d565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611774573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117989190611d90565b816001815181106117ab576117ab611e8d565b6001600160a01b039283166020918202929092010152601c546117d19130911684610e46565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906118099085905f90869030904290600401611ea1565b5f604051808303815f87803b158015611820575f80fd5b505af1158015611545573d5f803e3d5ffd5b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611865573d5f803e3d5ffd5b505050565b5f8183116118785782611603565b50919050565b601d805460ff60a81b1916600160a81b179081905560105490600160b81b900460ff166118b7576013546010546118b49161168c565b90505b6014545f906118c68385611d44565b6118d09190611e6e565b90505f601454601154856118e49190611d44565b6118ee9190611e6e565b90505f601454601254866119029190611d44565b61190c9190611e6e565b90505f8161191a8486611e30565b6119249190611e30565b90505f600282611934858a611d44565b61193e9190611e6e565b6119489190611e6e565b90504761195d611958838a611e5b565b6116ea565b5f6119688247611e5b565b90505f601454898361197a9190611d44565b6119849190611e6e565b90505f601454601154846119989190611d44565b6119a29190611e6e565b90505f816119b08486611e5b565b6119ba9190611e5b565b90505f861180156119ca57505f81115b156119d9576119d98682611a4f565b6004546119ef906001600160a01b031684611832565b600554479450611a08906001600160a01b031685611832565b5050601d805460ff60a81b1916905550505050505050505050565b5f8183611a435760405162461bcd60e51b81526004016107dd9190611aee565b505f61157c8486611e6e565b601c54611a679030906001600160a01b031684610e46565b601c5460055460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611aa692309289925f92839216904290600401611dab565b60606040518083038185885af1158015611ac2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ae79190611de6565b5050505050565b5f602080835283518060208501525f5b81811015611b1a57858101830151858201604001528201611afe565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105ef575f80fd5b5f8060408385031215611b5f575f80fd5b8235611b6a81611b3a565b946020939093013593505050565b5f805f60608486031215611b8a575f80fd5b8335611b9581611b3a565b92506020840135611ba581611b3a565b929592945050506040919091013590565b5f8060408385031215611bc7575f80fd5b823591506020830135611bd981611b3a565b809150509250929050565b5f60208284031215611bf4575f80fd5b813561160381611b3a565b5f8060408385031215611c10575f80fd5b8235611c1b81611b3a565b91506020830135611bd981611b3a565b5f60208284031215611c3b575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c9057815f1904821115611c7657611c76611c42565b80851615611c8357918102915b93841c9390800290611c5b565b509250929050565b5f82611ca657506001610511565b81611cb257505f610511565b8160018114611cc85760028114611cd257611cee565b6001915050610511565b60ff841115611ce357611ce3611c42565b50506001821b610511565b5060208310610133831016604e8410600b8410161715611d11575081810a610511565b611d1b8383611c56565b805f1904821115611d2e57611d2e611c42565b029392505050565b5f61160360ff841683611c98565b808202811582820484141761051157610511611c42565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611da0575f80fd5b815161160381611b3a565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215611df8575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611e21575f80fd5b81518015158114611603575f80fd5b8082018082111561051157610511611c42565b5f60018201611e5457611e54611c42565b5060010190565b8181038181111561051157610511611c42565b5f82611e8857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611ef15784516001600160a01b031683529383019391830191600101611ecc565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220af3aef6a4d3d99f346b2d37be69569dd3b46af7bbd8ff85f37797d696214973f64736f6c63430008170033

Deployed Bytecode Sourcemap

4896:15604:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7354:83;;;;;;;;;;-1:-1:-1;7424:5:0;;;;;;;;;;;;-1:-1:-1;;;7424:5:0;;;;7354:83;;;;;;;:::i;:::-;;;;;;;;8237:186;;;;;;;;;;-1:-1:-1;8237:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8237:186:0;1023:187:1;7631:95:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;7631:95:0;1215:177:1;8431:446:0;;;;;;;;;;-1:-1:-1;8431:446:0;;;;;:::i;:::-;;:::i;16744:292::-;;;;;;;;;;;;;:::i;:::-;;19856:641;;;;;;;;;;-1:-1:-1;19856:641:0;;;;;:::i;:::-;;:::i;7540:83::-;;;;;;;;;;-1:-1:-1;7540:83:0;;5940:1;2320:36:1;;2308:2;2293:18;7540:83:0;2178:184:1;17175:233:0;;;;;;;;;;;;;:::i;17571:410::-;;;;;;;;;;;;;:::i;6722:37::-;;;;;;;;;;-1:-1:-1;6722:37:0;;;;-1:-1:-1;;;6722:37:0;;;;;;7734:119;;;;;;;;;;-1:-1:-1;7734:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7827:18:0;7800:7;7827:18;;;:9;:18;;;;;;;7734:119;3921:148;;;;;;;;;;;;;:::i;14951:162::-;;;;;;;;;;;;;:::i;6120:49::-;;;;;;;;;;;;;;;;18511:146;;;;;;;;;;;;;:::i;3707:79::-;;;;;;;;;;-1:-1:-1;3745:7:0;3772:6;-1:-1:-1;;;;;3772:6:0;3707:79;;;-1:-1:-1;;;;;2783:32:1;;;2765:51;;2753:2;2738:18;3707:79:0;2619:203:1;6176:51:0;;;;;;;;;;;;;;;;7445:87;;;;;;;;;;-1:-1:-1;7517:7:0;;;;;;;;;;;;-1:-1:-1;;;7517:7:0;;;;7445:87;;7861:192;;;;;;;;;;-1:-1:-1;7861:192:0;;;;;:::i;:::-;;:::i;5249:31::-;;;;;;;;;;-1:-1:-1;5249:31:0;;;;-1:-1:-1;;;;;5249:31:0;;;6234:55;;;;;;;;;;;;;;;;15277:837;;;;;;;;;;;;;:::i;6488:36::-;;;;;;;;;;;;;;;;8061:168;;;;;;;;;;-1:-1:-1;8061:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;8194:18:0;;;8167:7;8194:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8061:168;16365:237;;;;;;;;;;-1:-1:-1;16365:237:0;;;;;:::i;:::-;;:::i;18176:209::-;;;;;;;;;;-1:-1:-1;18176:209:0;;;;;:::i;:::-;;:::i;18884:687::-;;;;;;;;;;-1:-1:-1;18884:687:0;;;;;:::i;:::-;;:::i;8237:186::-;8337:4;8354:39;1322:10;8377:7;8386:6;8354:8;:39::i;:::-;-1:-1:-1;8411:4:0;8237:186;;;;;:::o;7631:95::-;7684:7;5999:15;5940:1;5999:2;:15;:::i;:::-;5983:31;;:13;:31;:::i;:::-;7704:14;;7631:95;:::o;8431:446::-;8563:4;8580:36;8590:6;8598:9;8609:6;8580:9;:36::i;:::-;8627:220;8650:6;1322:10;8698:138;8754:6;8698:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8698:19:0;;;;;;:11;:19;;;;;;;;1322:10;8698:33;;;;;;;;;;:37;:138::i;:::-;8627:8;:220::i;:::-;-1:-1:-1;8865:4:0;8431:446;;;;;:::o;16744:292::-;16814:10;;-1:-1:-1;;;;;16814:10:0;1322;-1:-1:-1;;;;;16798:26:0;;16790:35;;;;;;16877:4;16836:20;7827:18;;;:9;:18;;;;;;16898:16;;16894:135;;16956:10;;16931:50;;16949:4;;-1:-1:-1;;;;;16956:10:0;16968:12;16931:9;:50::i;:::-;17016:1;16996:17;:21;16894:135;16779:257;16744:292::o;19856:641::-;19964:10;;-1:-1:-1;;;;;19964:10:0;1322;-1:-1:-1;;;;;19948:26:0;;19940:35;;;;;;20007:1;19994:10;:14;:35;;;;;20026:3;20012:10;:17;;19994:35;19986:44;;;;;;20045:17;;:21;20041:449;;20083:20;20106:42;20144:3;20106:33;20128:10;20106:17;;:21;;:33;;;;:::i;:::-;:37;;:42::i;:::-;20208:4;20190:24;;;;:9;:24;;;;;;20083:65;;-1:-1:-1;20190:74:0;;20083:65;20190:28;:74::i;:::-;20181:4;20163:24;;;;:9;:24;;;;;;:101;;;;-1:-1:-1;;;;;20302:20:0;;;;;;:38;;20327:12;20302:24;:38::i;:::-;-1:-1:-1;;;;;20279:20:0;;;;;;:9;:20;;;;;:61;20375:17;;:35;;20397:12;20375:21;:35::i;:::-;20355:17;:55;20430:48;;1361:25:1;;;-1:-1:-1;;;;;20430:48:0;;;20447:4;;-1:-1:-1;;;;;;;;;;;20430:48:0;1349:2:1;1334:18;20430:48:0;;;;;;;;20068:422;20041:449;19856:641;;:::o;17175:233::-;17248:10;;-1:-1:-1;;;;;17248:10:0;1322;-1:-1:-1;;;;;17232:26:0;;17224:35;;;;;;17291:21;17327:14;;17323:78;;17358:10;;:31;;-1:-1:-1;;;;;17358:10:0;;;;:31;;;;;17378:10;;17358;:31;:10;:31;17378:10;17358;:31;;;;;;;;;;;;;;;;;;;17571:410;17637:10;;-1:-1:-1;;;;;17637:10:0;1322;-1:-1:-1;;;;;17621:26:0;;17613:35;;;;;;17700:4;17659:20;7827:18;;;:9;:18;;;;;;17721:16;;17717:79;;17754:30;17771:12;17754:16;:30::i;:::-;17827:21;17863:14;;17859:83;;17907:10;;17894:36;;-1:-1:-1;;;;;17907:10:0;17919;17894:12;:36::i;:::-;-1:-1:-1;;17972:1:0;17952:17;:21;17571:410::o;3921:148::-;3834:6;;-1:-1:-1;;;;;3834:6:0;1322:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;;;;;;;;;4028:1:::1;4012:6:::0;;3991:40:::1;::::0;-1:-1:-1;;;;;4012:6:0;;::::1;::::0;3991:40:::1;::::0;4028:1;;3991:40:::1;4059:1;4042:19:::0;;-1:-1:-1;;;;;;4042:19:0::1;::::0;;3921:148::o;14951:162::-;3834:6;;-1:-1:-1;;;;;3834:6:0;1322:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;5999:15:::1;5940:1;5999:2;:15;:::i;:::-;5983:31;::::0;:13:::1;:31;:::i;:::-;15005:12;:22:::0;5999:15:::1;5940:1;5999:2;:15;:::i;:::-;5983:31;::::0;:13:::1;:31;:::i;:::-;15038:14;:24:::0;15078:27:::1;5999:15;5940:1;5999:2;:15;:::i;:::-;5983:31;::::0;:13:::1;:31;:::i;:::-;15078:27;::::0;1361:25:1;;;1349:2;1334:18;15078:27:0::1;;;;;;;14951:162::o:0;18511:146::-;18583:16;;-1:-1:-1;;;;;18583:16:0;1322:10;-1:-1:-1;;;;;18567:32:0;;18559:41;;;;;;18632:17;;;-1:-1:-1;;;;18611:38:0;;-1:-1:-1;;;18632:17:0;;;;;;18631:18;18611:38;;;;;;18511:146::o;7861:192::-;7964:4;7981:42;1322:10;8005:9;8016:6;7981:9;:42::i;15277:837::-;3834:6;;-1:-1:-1;;;;;3834:6:0;1322:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;15339:11:::1;::::0;-1:-1:-1;;;15339:11:0;::::1;;;15338:12;15330:48;;;::::0;-1:-1:-1;;;15330:48:0;;5650:2:1;15330:48:0::1;::::0;::::1;5632:21:1::0;5689:2;5669:18;;;5662:30;5728:25;5708:18;;;5701:53;5771:18;;15330:48:0::1;5448:347:1::0;15330:48:0::1;15389:15;:104:::0;;-1:-1:-1;;;;;;15389:104:0::1;15440:42;15389:104:::0;;::::1;::::0;;;15504:58:::1;::::0;15521:4:::1;::::0;5999:15:::1;5940:1;5999:2;:15;:::i;:::-;5983:31;::::0;:13:::1;:31;:::i;15504:58::-;15607:15;;;;;;;;;-1:-1:-1::0;;;;;15607:15:0::1;-1:-1:-1::0;;;;;15607:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15589:55:0::1;;15671:4;15695:15;;;;;;;;;-1:-1:-1::0;;;;;15695:15:0::1;-1:-1:-1::0;;;;;15695:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15589:143;::::0;-1:-1:-1;;;;;;15589:143:0::1;::::0;;;;;;-1:-1:-1;;;;;6286:15:1;;;15589:143:0::1;::::0;::::1;6268:34:1::0;6338:15;;6318:18;;;6311:43;6203:18;;15589:143:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15573:13;:159:::0;;-1:-1:-1;;;;;15573:159:0;;::::1;-1:-1:-1::0;;;;;;15573:159:0;;::::1;;::::0;;15743:15:::1;::::0;::::1;:31;15782:21;15827:4;15847:24;15827:4:::0;-1:-1:-1;;;;;7827:18:0;7800:7;7827:18;;;:9;:18;;;;;;;7734:119;15847:24:::1;15886:1;15902::::0;15918:7:::1;3745::::0;3772:6;-1:-1:-1;;;;;3772:6:0;;3707:79;15918:7:::1;15940:15;15743:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15984:13:0::1;::::0;16015:15:::1;::::0;15977:71:::1;::::0;-1:-1:-1;;;15977:71:0;;-1:-1:-1;;;;;16015:15:0;;::::1;15977:71;::::0;::::1;7462:51:1::0;-1:-1:-1;;7529:18:1;;;7522:34;15984:13:0;::::1;::::0;-1:-1:-1;15977:29:0::1;::::0;7435:18:1;;15977:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;16059:11:0::1;:18:::0;;-1:-1:-1;;;;16088:18:0;-1:-1:-1;;;16088:18:0;;;15277:837::o;16365:237::-;16445:10;;-1:-1:-1;;;;;16445:10:0;1322;-1:-1:-1;;;;;16429:26:0;;16421:35;;;;;;16486:12;;16475:7;:23;;:51;;;;;16513:13;;16502:7;:24;;16475:51;16467:60;;;;;;16538:12;:22;;;16571:13;:23;16365:237::o;18176:209::-;18272:10;;-1:-1:-1;;;;;18272:10:0;1322;-1:-1:-1;;;;;18256:26:0;;18248:35;;;;;;-1:-1:-1;;;;;18302:29:0;;18294:38;;;;;;18343:16;:34;;-1:-1:-1;;;;;;18343:34:0;-1:-1:-1;;;;;18343:34:0;;;;;;;;;;18176:209::o;18884:687::-;18985:10;;-1:-1:-1;;;;;18985:10:0;1322;-1:-1:-1;;;;;18969:26:0;;18961:35;;;;;;19028:1;19015:10;:14;:35;;;;;19047:3;19033:10;:17;;19015:35;19007:44;;;;;;19066:17;;:21;19062:502;;19104:20;19127:42;19165:3;19127:33;19149:10;19127:17;;:21;;:33;;;;:::i;:42::-;19229:4;19211:24;;;;:9;:24;;;;;;19104:65;;-1:-1:-1;19211:74:0;;19104:65;19211:28;:74::i;:::-;19202:4;19184:24;;;;:9;:24;;;;;;:101;;;;19340:16;;-1:-1:-1;;;;;19340:16:0;19330:27;;;;:77;;19380:12;19330:31;:77::i;:::-;19310:16;;-1:-1:-1;;;;;19310:16:0;19300:27;;;;:9;:27;;;;;:107;19442:17;;:35;;19464:12;19442:21;:35::i;:::-;19422:17;:55;19521:16;;19497:55;;1361:25:1;;;-1:-1:-1;;;;;19521:16:0;;;;19514:4;;-1:-1:-1;;;;;;;;;;;19497:55:0;1349:2:1;1334:18;19497:55:0;;;;;;;19089:475;18884:687;:::o;8885:335::-;-1:-1:-1;;;;;8978:19:0;;8970:68;;;;-1:-1:-1;;;8970:68:0;;8051:2:1;8970:68:0;;;8033:21:1;8090:2;8070:18;;;8063:30;8129:34;8109:18;;;8102:62;-1:-1:-1;;;8180:18:1;;;8173:34;8224:19;;8970:68:0;7849:400:1;8970:68:0;-1:-1:-1;;;;;9057:21:0;;9049:68;;;;-1:-1:-1;;;9049:68:0;;8456:2:1;9049:68:0;;;8438:21:1;8495:2;8475:18;;;8468:30;8534:34;8514:18;;;8507:62;-1:-1:-1;;;8585:18:1;;;8578:32;8627:19;;9049:68:0;8254:398:1;9049:68:0;-1:-1:-1;;;;;9128:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9180:32;;1361:25:1;;;9180:32:0;;1334:18:1;9180:32:0;1215:177:1;9228:3200:0;-1:-1:-1;;;;;9316:18:0;;9308:68;;;;-1:-1:-1;;;9308:68:0;;8859:2:1;9308:68:0;;;8841:21:1;8898:2;8878:18;;;8871:30;8937:34;8917:18;;;8910:62;-1:-1:-1;;;8988:18:1;;;8981:35;9033:19;;9308:68:0;8657:401:1;9308:68:0;-1:-1:-1;;;;;9395:16:0;;9387:64;;;;-1:-1:-1;;;9387:64:0;;9265:2:1;9387:64:0;;;9247:21:1;9304:2;9284:18;;;9277:30;9343:34;9323:18;;;9316:62;-1:-1:-1;;;9394:18:1;;;9387:33;9437:19;;9387:64:0;9063:399:1;9387:64:0;9479:1;9470:6;:10;9462:64;;;;-1:-1:-1;;;9462:64:0;;9669:2:1;9462:64:0;;;9651:21:1;9708:2;9688:18;;;9681:30;9747:34;9727:18;;;9720:62;-1:-1:-1;;;9798:18:1;;;9791:39;9847:19;;9462:64:0;9467:405:1;9462:64:0;9537:17;9569:21;9617:7;3745;3772:6;-1:-1:-1;;;;;3772:6:0;;3707:79;9617:7;-1:-1:-1;;;;;9609:15:0;:4;-1:-1:-1;;;;;9609:15:0;;;:32;;;;-1:-1:-1;3745:7:0;3772:6;-1:-1:-1;;;;;9628:13:0;;;3772:6;;9628:13;;9609:32;9605:1684;;;9688:13;;-1:-1:-1;;;;;9680:21:0;;;9688:13;;9680:21;:72;;;;-1:-1:-1;9736:15:0;;-1:-1:-1;;;;;9722:30:0;;;9736:15;;9722:30;;9680:72;:116;;;;-1:-1:-1;;;;;;9774:22:0;;;;;;:18;:22;;;;;;;;9773:23;9680:116;9658:730;;;9849:12;;9839:6;:22;;9831:60;;;;-1:-1:-1;;;9831:60:0;;10079:2:1;9831:60:0;;;10061:21:1;10118:2;10098:18;;;10091:30;10157:27;10137:18;;;10130:55;10202:18;;9831:60:0;9877:349:1;9831:60:0;9966:14;;9956:6;9940:13;9950:2;-1:-1:-1;;;;;7827:18:0;7800:7;7827:18;;;:9;:18;;;;;;;7734:119;9940:13;:22;;;;:::i;:::-;:40;;9910:140;;;;-1:-1:-1;;;9910:140:0;;10563:2:1;9910:140:0;;;10545:21:1;10602:2;10582:18;;;10575:30;10641:28;10621:18;;;10614:56;10687:18;;9910:140:0;10361:350:1;9910:140:0;10081:232;10309:3;10081:201;10153:15;;10141:9;;:27;10140:119;;10245:14;;10140:119;;;10201:12;;10140:119;10081:6;;:32;:201::i;:232::-;10332:9;:11;;10069:244;;-1:-1:-1;10332:9:0;:11;;;:::i;:::-;;;;-1:-1:-1;;10362:8:0;:10;;;:8;:10;;;:::i;:::-;;;;;;9658:730;10414:13;;-1:-1:-1;;;;;10408:19:0;;;10414:13;;10408:19;:44;;;;-1:-1:-1;;;;;;10431:21:0;;10447:4;10431:21;;10408:44;10404:361;;;10485:235;10716:3;10485:204;10557:16;;10545:9;;:28;10544:122;;10651:15;;10544:122;;;10606:13;;10485:6;;:32;:204::i;:235::-;10739:8;:10;;10473:247;;-1:-1:-1;10739:8:0;:10;;;:::i;:::-;;;;;;10404:361;10859:17;;10830:4;10781:28;7827:18;;;:9;:18;;;;;;10781:28;;10812:79;;:28;;:79::i;:::-;10929:6;;10781:110;;-1:-1:-1;;;;10929:6:0;;;;10928:7;:47;;;;-1:-1:-1;10962:13:0;;-1:-1:-1;;;;;10956:19:0;;;10962:13;;10956:19;10928:47;:79;;;;-1:-1:-1;10996:11:0;;-1:-1:-1;;;10996:11:0;;;;10928:79;:140;;;;;11051:17;;11028:20;:40;10928:140;:191;;;;;11101:18;;11089:9;;:30;10928:191;10906:372;;;11154:108;11191:52;11195:6;11203:39;11207:20;11229:12;;11203:3;:39::i;:::-;11191:3;:52::i;:::-;11154:14;:108::i;:::-;9643:1646;9605:1684;11305:17;;-1:-1:-1;;;11305:17:0;;;;11301:452;;;11355:32;11383:3;11355:23;11366:11;;11355:6;:10;;:23;;;;:::i;:32::-;11339:48;;11442:13;11422:17;;:33;;;;:::i;:::-;11402:17;:53;11515:4;11497:24;;;;:9;:24;;;;;;:75;;11544:13;11497:28;:75::i;:::-;11488:4;11470:24;;;;:9;:24;;;;;;;:102;;;;11592:44;;-1:-1:-1;;;;;11592:44:0;;;-1:-1:-1;;;;;;;;;;;11592:44:0;;;11622:13;1361:25:1;;1349:2;1334:18;;1215:177;11592:44:0;;;;;;;;11655:13;;11651:91;;11701:25;11713:13;11701:9;:25;:::i;:::-;11689:37;;11651:91;11769:13;;11765:172;;11844:4;11826:24;;;;:9;:24;;;;;;:39;;11855:9;11826:28;:39::i;:::-;11817:4;11799:24;;;;:9;:24;;;;;;;:66;;;;11885:40;;-1:-1:-1;;;;;11885:40:0;;;-1:-1:-1;;;;;;;;;;;11885:40:0;;;11915:9;1361:25:1;;1349:2;1334:18;;1215:177;11885:40:0;;;;;;;;11765:172;11947:16;11966:28;:9;11980:13;11966;:28::i;:::-;-1:-1:-1;;;;;12023:15:0;;;;;;:9;:15;;;;;;11947:47;;-1:-1:-1;12023:27:0;;12043:6;12023:19;:27::i;:::-;-1:-1:-1;;;;;12005:15:0;;;;;;:9;:15;;;;;:45;12077:39;12095:20;:6;12106:8;12095:10;:20::i;:::-;-1:-1:-1;;;;;12077:13:0;;;;;;:9;:13;;;;;;;:17;:39::i;:::-;-1:-1:-1;;;;;12061:13:0;;;;;;;:9;:13;;;;;:55;;;;12132:40;;-1:-1:-1;;;;;;;;;;;12151:20:0;:6;12162:8;12151:10;:20::i;:::-;12132:40;;1361:25:1;;;1349:2;1334:18;12132:40:0;;;;;;;12214:21;;12203:8;;:32;:93;;;;;12272:24;;12252:17;;:44;12203:93;12185:236;;;12363:19;;12343:17;;:39;;;;:::i;:::-;12323:17;:59;12408:1;12397:8;:12;12185:236;9297:3131;;;9228:3200;;;:::o;2509:224::-;2629:7;2665:12;2657:6;;;;2649:29;;;;-1:-1:-1;;;2649:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2689:9:0;2701:5;2705:1;2701;:5;:::i;:::-;2689:17;2509:224;-1:-1:-1;;;;;2509:224:0:o;2741:246::-;2799:7;2823:1;2828;2823:6;2819:47;;-1:-1:-1;2853:1:0;2846:8;;2819:47;2876:9;2888:5;2892:1;2888;:5;:::i;:::-;2876:17;-1:-1:-1;2921:1:0;2912:5;2916:1;2876:17;2912:5;:::i;:::-;:10;2904:56;;;;-1:-1:-1;;;2904:56:0;;11413:2:1;2904:56:0;;;11395:21:1;11452:2;11432:18;;;11425:30;11491:34;11471:18;;;11464:62;-1:-1:-1;;;11542:18:1;;;11535:31;11583:19;;2904:56:0;11211:397:1;2904:56:0;2978:1;2741:246;-1:-1:-1;;;2741:246:0:o;2995:132::-;3053:7;3080:39;3084:1;3087;3080:39;;;;;;;;;;;;;;;;;:3;:39::i;2365:136::-;2423:7;2450:43;2454:1;2457;2450:43;;;;;;;;;;;;;;;;;:3;:43::i;2178:179::-;2236:7;;2268:5;2272:1;2268;:5;:::i;:::-;2256:17;;2297:1;2292;:6;;2284:46;;;;-1:-1:-1;;;2284:46:0;;11815:2:1;2284:46:0;;;11797:21:1;11854:2;11834:18;;;11827:30;11893:29;11873:18;;;11866:57;11940:18;;2284:46:0;11613:351:1;14335:471:0;14425:16;;;14439:1;14425:16;;;;;;;;14401:21;;14425:16;;;;;;;;;;-1:-1:-1;14425:16:0;14401:40;;14470:4;14452;14457:1;14452:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14452:23:0;;;:7;;;;;;;;;;:23;;;;14496:15;;:22;;;-1:-1:-1;;;14496:22:0;;;;:15;;;;;:20;;:22;;;;;14452:7;;14496:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14486:4;14491:1;14486:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14486:32:0;;;:7;;;;;;;;;:32;14561:15;;14529:62;;14546:4;;14561:15;14579:11;14529:8;:62::i;:::-;14602:15;;:196;;-1:-1:-1;;;14602:196:0;;-1:-1:-1;;;;;14602:15:0;;;;:66;;:196;;14683:11;;14602:15;;14725:4;;14752;;14772:15;;14602:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14215:112;14296:23;;-1:-1:-1;;;;;14296:15:0;;;:23;;;;;14312:6;;14296:23;;;;14312:6;14296:15;:23;;;;;;;;;;;;;;;;;;;;;14215:112;;:::o;12436:107::-;12493:7;12525:1;12521;:5;12520:15;;12534:1;12520:15;;;-1:-1:-1;12530:1:0;12436:107;-1:-1:-1;12436:107:0:o;12551:1285::-;6852:6;:13;;-1:-1:-1;;;;6852:13:0;-1:-1:-1;;;6852:13:0;;;;;12657::::1;::::0;;-1:-1:-1;;;12686:17:0;::::1;6852:13:::0;12686:17:::1;12681:102;;12759:11;::::0;12741:13:::1;::::0;:30:::1;::::0;:17:::1;:30::i;:::-;12720:51;;12681:102;12853:9;::::0;12793:19:::1;::::0;12816:33:::1;12831:18:::0;12816:12;:33:::1;:::i;:::-;12815:47;;;;:::i;:::-;12793:69;;12873:19;12922:9;;12911:7;;12896:12;:22;;;;:::i;:::-;12895:36;;;;:::i;:::-;12873:58;;12942:20;12991:9;;12981:6;;12966:12;:21;;;;:::i;:::-;12965:35;;;;:::i;:::-;12942:58:::0;-1:-1:-1;13013:25:0::1;12942:58:::0;13041:25:::1;13055:11:::0;13041;:25:::1;:::i;:::-;:40;;;;:::i;:::-;13013:68:::0;-1:-1:-1;13094:23:0::1;13198:1;13013:68:::0;13121:27:::1;13136:12:::0;13121;:27:::1;:::i;:::-;13120:62;;;;:::i;:::-;:79;;;;:::i;:::-;13094:105:::0;-1:-1:-1;13240:21:0::1;13274:48;13291:30;13094:105:::0;13291:12;:30:::1;:::i;:::-;13274:16;:48::i;:::-;13335:17;13355:41;13379:17:::0;13355:21:::1;:41;:::i;:::-;13335:61;;13407:13;13458:9;;13436:18;13424:9;:30;;;;:::i;:::-;13423:44;;;;:::i;:::-;13407:60;;13478:13;13518:9;;13507:7;;13495:9;:19;;;;:::i;:::-;13494:33;;;;:::i;:::-;13478:49:::0;-1:-1:-1;13538:13:0::1;13478:49:::0;13554:17:::1;13566:5:::0;13554:9;:17:::1;:::i;:::-;:25;;;;:::i;:::-;13538:41;;13614:1;13596:15;:19;:32;;;;;13627:1;13619:5;:9;13596:32;13592:101;;;13645:36;13658:15;13675:5;13645:12;:36::i;:::-;13718:10;::::0;13705:31:::1;::::0;-1:-1:-1;;;;;13718:10:0::1;13730:5:::0;13705:12:::1;:31::i;:::-;13806:10;::::0;13761:21:::1;::::0;-1:-1:-1;13793:35:0::1;::::0;-1:-1:-1;;;;;13806:10:0::1;13761:21:::0;13793:12:::1;:35::i;:::-;-1:-1:-1::0;;6888:6:0;:14;;-1:-1:-1;;;;6888:14:0;;;-1:-1:-1;;;;;;;;;;12551:1285:0:o;3135:223::-;3255:7;3290:12;3283:5;3275:28;;;;-1:-1:-1;;;3275:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3314:9:0;3326:5;3330:1;3326;:5;:::i;13844:363::-;13957:15;;13925:62;;13942:4;;-1:-1:-1;;;;;13957:15:0;13975:11;13925:8;:62::i;:::-;13998:15;;14148:10;;13998:201;;-1:-1:-1;;;13998:201:0;;-1:-1:-1;;;;;13998:15:0;;;;:31;;14037:9;;13998:201;;14070:4;;14090:11;;13998:15;;;;14148:10;;14173:15;;13998:201;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13844:363;;:::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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:315::-;1926:6;1934;1987:2;1975:9;1966:7;1962:23;1958:32;1955:52;;;2003:1;2000;1993:12;1955:52;2039:9;2026:23;2016:33;;2099:2;2088:9;2084:18;2071:32;2112:31;2137:5;2112:31;:::i;:::-;2162:5;2152:15;;;1858:315;;;;;:::o;2367:247::-;2426:6;2479:2;2467:9;2458:7;2454:23;2450:32;2447:52;;;2495:1;2492;2485:12;2447:52;2534:9;2521:23;2553:31;2578:5;2553:31;:::i;2827:388::-;2895:6;2903;2956:2;2944:9;2935:7;2931:23;2927:32;2924:52;;;2972:1;2969;2962:12;2924:52;3011:9;2998:23;3030:31;3055:5;3030:31;:::i;:::-;3080:5;-1:-1:-1;3137:2:1;3122:18;;3109:32;3150:33;3109:32;3150:33;:::i;3220:180::-;3279:6;3332:2;3320:9;3311:7;3307:23;3303:32;3300:52;;;3348:1;3345;3338:12;3300:52;-1:-1:-1;3371:23:1;;3220:180;-1:-1:-1;3220:180:1:o;3405:127::-;3466:10;3461:3;3457:20;3454:1;3447:31;3497:4;3494:1;3487:15;3521:4;3518:1;3511:15;3537:416;3626:1;3663:5;3626:1;3677:270;3698:7;3688:8;3685:21;3677:270;;;3757:4;3753:1;3749:6;3745:17;3739:4;3736:27;3733:53;;;3766:18;;:::i;:::-;3816:7;3806:8;3802:22;3799:55;;;3836:16;;;;3799:55;3915:22;;;;3875:15;;;;3677:270;;;3681:3;3537:416;;;;;:::o;3958:806::-;4007:5;4037:8;4027:80;;-1:-1:-1;4078:1:1;4092:5;;4027:80;4126:4;4116:76;;-1:-1:-1;4163:1:1;4177:5;;4116:76;4208:4;4226:1;4221:59;;;;4294:1;4289:130;;;;4201:218;;4221:59;4251:1;4242:10;;4265:5;;;4289:130;4326:3;4316:8;4313:17;4310:43;;;4333:18;;:::i;:::-;-1:-1:-1;;4389:1:1;4375:16;;4404:5;;4201:218;;4503:2;4493:8;4490:16;4484:3;4478:4;4475:13;4471:36;4465:2;4455:8;4452:16;4447:2;4441:4;4438:12;4434:35;4431:77;4428:159;;;-1:-1:-1;4540:19:1;;;4572:5;;4428:159;4619:34;4644:8;4638:4;4619:34;:::i;:::-;4689:6;4685:1;4681:6;4677:19;4668:7;4665:32;4662:58;;;4700:18;;:::i;:::-;4738:20;;3958:806;-1:-1:-1;;;3958:806:1:o;4769:140::-;4827:5;4856:47;4897:4;4887:8;4883:19;4877:4;4856:47;:::i;4914:168::-;4987:9;;;5018;;5035:15;;;5029:22;;5015:37;5005:71;;5056:18;;:::i;5087:356::-;5289:2;5271:21;;;5308:18;;;5301:30;5367:34;5362:2;5347:18;;5340:62;5434:2;5419:18;;5087:356::o;5800:251::-;5870:6;5923:2;5911:9;5902:7;5898:23;5894:32;5891:52;;;5939:1;5936;5929:12;5891:52;5971:9;5965:16;5990:31;6015:5;5990:31;:::i;6365:607::-;-1:-1:-1;;;;;6724:15:1;;;6706:34;;6771:2;6756:18;;6749:34;;;;6814:2;6799:18;;6792:34;;;;6857:2;6842:18;;6835:34;;;;6906:15;;;6900:3;6885:19;;6878:44;6686:3;6938:19;;6931:35;;;;6655:3;6640:19;;6365:607::o;6977:306::-;7065:6;7073;7081;7134:2;7122:9;7113:7;7109:23;7105:32;7102:52;;;7150:1;7147;7140:12;7102:52;7179:9;7173:16;7163:26;;7229:2;7218:9;7214:18;7208:25;7198:35;;7273:2;7262:9;7258:18;7252:25;7242:35;;6977:306;;;;;:::o;7567:277::-;7634:6;7687:2;7675:9;7666:7;7662:23;7658:32;7655:52;;;7703:1;7700;7693:12;7655:52;7735:9;7729:16;7788:5;7781:13;7774:21;7767:5;7764:32;7754:60;;7810:1;7807;7800:12;10231:125;10296:9;;;10317:10;;;10314:36;;;10330:18;;:::i;10716:135::-;10755:3;10776:17;;;10773:43;;10796:18;;:::i;:::-;-1:-1:-1;10843:1:1;10832:13;;10716:135::o;10856:128::-;10923:9;;;10944:11;;;10941:37;;;10958:18;;:::i;10989:217::-;11029:1;11055;11045:132;;11099:10;11094:3;11090:20;11087:1;11080:31;11134:4;11131:1;11124:15;11162:4;11159:1;11152:15;11045:132;-1:-1:-1;11191:9:1;;10989:217::o;12101:127::-;12162:10;12157:3;12153:20;12150:1;12143:31;12193:4;12190:1;12183:15;12217:4;12214:1;12207:15;12233:980;12495:4;12543:3;12532:9;12528:19;12574:6;12563:9;12556:25;12600:2;12638:6;12633:2;12622:9;12618:18;12611:34;12681:3;12676:2;12665:9;12661:18;12654:31;12705:6;12740;12734:13;12771:6;12763;12756:22;12809:3;12798:9;12794:19;12787:26;;12848:2;12840:6;12836:15;12822:29;;12869:1;12879:195;12893:6;12890:1;12887:13;12879:195;;;12958:13;;-1:-1:-1;;;;;12954:39:1;12942:52;;13049:15;;;;13014:12;;;;12990:1;12908:9;12879:195;;;-1:-1:-1;;;;;;;13130:32:1;;;;13125:2;13110:18;;13103:60;-1:-1:-1;;;13194:3:1;13179:19;13172:35;13091:3;12233:980;-1:-1:-1;;;12233:980:1:o

Swarm Source

ipfs://af3aef6a4d3d99f346b2d37be69569dd3b46af7bbd8ff85f37797d696214973f

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.