ETH Price: $3,331.91 (+1.26%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve202984182024-07-13 15:16:59196 days ago1720883819IN
0xD5B97E62...00278aB98
0 ETH0.000125322.65654794
Approve200989082024-06-15 18:13:11224 days ago1718475191IN
0xD5B97E62...00278aB98
0 ETH0.000208474.42470087
Approve199824322024-05-30 11:41:47240 days ago1717069307IN
0xD5B97E62...00278aB98
0 ETH0.000430299.12107017
Transfer199627842024-05-27 17:45:59243 days ago1716831959IN
0xD5B97E62...00278aB98
0 ETH0.0016070822.97446865
Approve199547562024-05-26 14:50:35244 days ago1716735035IN
0xD5B97E62...00278aB98
0 ETH0.0009041219.26301479
Approve197564272024-04-28 21:14:35272 days ago1714338875IN
0xD5B97E62...00278aB98
0 ETH0.000248945.28362314
Approve195100192024-03-25 7:28:23307 days ago1711351703IN
0xD5B97E62...00278aB98
0 ETH0.0004432517.85
Approve192480062024-02-17 13:54:35343 days ago1708178075IN
0xD5B97E62...00278aB98
0 ETH0.0012466226.62811284
Approve191567602024-02-04 18:35:11356 days ago1707071711IN
0xD5B97E62...00278aB98
0 ETH0.0007901516.77043919
Approve190997932024-01-27 18:46:35364 days ago1706381195IN
0xD5B97E62...00278aB98
0 ETH0.0006295313.34433144
Approve190857702024-01-25 19:38:59366 days ago1706211539IN
0xD5B97E62...00278aB98
0 ETH0.0004958519.96821475
Approve190499172024-01-20 18:38:11371 days ago1705775891IN
0xD5B97E62...00278aB98
0 ETH0.000663614.17480121
Transfer190483422024-01-20 13:21:47371 days ago1705756907IN
0xD5B97E62...00278aB98
0 ETH0.0010242514.64247405
Approve190278172024-01-17 16:32:59374 days ago1705509179IN
0xD5B97E62...00278aB98
0 ETH0.0027147357.9131789
Approve190190362024-01-16 11:05:35375 days ago1705403135IN
0xD5B97E62...00278aB98
0 ETH0.0007617230.67521748
Approve190098362024-01-15 4:16:11377 days ago1705292171IN
0xD5B97E62...00278aB98
0 ETH0.0004806619.35655685
Approve190084082024-01-14 23:28:47377 days ago1705274927IN
0xD5B97E62...00278aB98
0 ETH0.0009946921.11151639
Approve190079462024-01-14 21:55:59377 days ago1705269359IN
0xD5B97E62...00278aB98
0 ETH0.0005781223.28127199
Approve190035002024-01-14 7:01:11378 days ago1705215671IN
0xD5B97E62...00278aB98
0 ETH0.0012943952.12618601
Approve190014112024-01-14 0:00:59378 days ago1705190459IN
0xD5B97E62...00278aB98
0 ETH0.0007489715.89632998
Approve189993522024-01-13 17:06:47378 days ago1705165607IN
0xD5B97E62...00278aB98
0 ETH0.0006397421.52856241
Approve189993442024-01-13 17:05:11378 days ago1705165511IN
0xD5B97E62...00278aB98
0 ETH0.0005591420.77364425
Approve189993372024-01-13 17:03:47378 days ago1705165427IN
0xD5B97E62...00278aB98
0 ETH0.0005794621.52876643
Approve189993332024-01-13 17:02:59378 days ago1705165379IN
0xD5B97E62...00278aB98
0 ETH0.0010641122.72963632
Approve189989342024-01-13 15:42:47378 days ago1705160567IN
0xD5B97E62...00278aB98
0 ETH0.0010590122.47665575
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
199547572024-05-26 14:50:47244 days ago1716735047
0xD5B97E62...00278aB98
0.01105271 ETH
199547572024-05-26 14:50:47244 days ago1716735047
0xD5B97E62...00278aB98
0.01105271 ETH
189978002024-01-13 11:54:11378 days ago1705146851
0xD5B97E62...00278aB98
0.04478295 ETH
189978002024-01-13 11:54:11378 days ago1705146851
0xD5B97E62...00278aB98
0.04478295 ETH
189950322024-01-13 2:36:35379 days ago1705113395
0xD5B97E62...00278aB98
0.08160777 ETH
189950322024-01-13 2:36:35379 days ago1705113395
0xD5B97E62...00278aB98
0.08160777 ETH
189948682024-01-13 2:03:35379 days ago1705111415
0xD5B97E62...00278aB98
0.02633767 ETH
189948682024-01-13 2:03:35379 days ago1705111415
0xD5B97E62...00278aB98
0.02633767 ETH
189947672024-01-13 1:43:23379 days ago1705110203
0xD5B97E62...00278aB98
0.1751398 ETH
189947672024-01-13 1:43:23379 days ago1705110203
0xD5B97E62...00278aB98
0.1751398 ETH
189946742024-01-13 1:24:47379 days ago1705109087
0xD5B97E62...00278aB98
0.0576314 ETH
189946742024-01-13 1:24:47379 days ago1705109087
0xD5B97E62...00278aB98
0.0576314 ETH
189946722024-01-13 1:24:23379 days ago1705109063
0xD5B97E62...00278aB98
0.00853683 ETH
189946722024-01-13 1:24:23379 days ago1705109063
0xD5B97E62...00278aB98
0.00853683 ETH
189946712024-01-13 1:24:11379 days ago1705109051
0xD5B97E62...00278aB98
0.01395424 ETH
189946712024-01-13 1:24:11379 days ago1705109051
0xD5B97E62...00278aB98
0.01395424 ETH
189946692024-01-13 1:23:35379 days ago1705109015
0xD5B97E62...00278aB98
0.04883461 ETH
189946692024-01-13 1:23:35379 days ago1705109015
0xD5B97E62...00278aB98
0.04883461 ETH
189946392024-01-13 1:17:35379 days ago1705108655
0xD5B97E62...00278aB98
0.10432765 ETH
189946392024-01-13 1:17:35379 days ago1705108655
0xD5B97E62...00278aB98
0.10432765 ETH
189946382024-01-13 1:17:23379 days ago1705108643
0xD5B97E62...00278aB98
0.24140804 ETH
189946382024-01-13 1:17:23379 days ago1705108643
0xD5B97E62...00278aB98
0.24140804 ETH
189946382024-01-13 1:17:23379 days ago1705108643
0xD5B97E62...00278aB98
0.00638586 ETH
189946382024-01-13 1:17:23379 days ago1705108643
0xD5B97E62...00278aB98
0.00638586 ETH
189946372024-01-13 1:17:11379 days ago1705108631
0xD5B97E62...00278aB98
0.02091566 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OrdiX

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : OrdiX.sol
/*
    https://ordix.io
    https://docs.ordix.io
    https://twitter.com/OrdiXProtocol
    https://t.me/ordixportal
    https://t.me/OrdiXBot
*/

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

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

contract Ownable {
    error NotOwner();

    address private _owner;

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

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        if (_owner != msg.sender) revert NotOwner();
        _;
    }

    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(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

contract OrdiX is IERC20, Ownable {
    error TradingAlreadyOpen();
    error ZeroAddress();
    error ZeroAmount();
    error ZeroValue();
    error ZeroToken();
    error TaxTooHigh();
    error NotSelf();
    error Unauthorized();

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromLimits;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    address payable private _taxWallet;
    uint256 private _firstBlock;

    uint256 private _initialBuyTax = 30;
    uint256 private _initialSellTax = 50;
    uint256 private _finalBuyTax = 15;
    uint256 private _finalSellTax = 20;
    uint256 private _reduceBuyTaxAt = 20;
    uint256 private _reduceSellTaxAt = 25;
    uint256 private _preventSwapBefore = 50;
    uint256 private _buyCount = 0;

    uint8 private constant _DECIMALS = 9;
    uint256 private constant _TOTAL = 1000000000 * 10 ** _DECIMALS;
    string private constant _NAME = unicode"OrdiX";
    string private constant _SYMBOL = unicode"ORDIX";
    uint256 public maxTx = 20000000 * 10 ** _DECIMALS;
    uint256 public maxWallet = 20000000 * 10 ** _DECIMALS;
    uint256 public swapThreshold = 10000000 * 10 ** _DECIMALS;
    uint256 public maxTaxSwap = 10000000 * 10 ** _DECIMALS;

    IUniswapV2Router02 private constant _UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private _uniswapV2Pair;
    bool public lpAdded;
    bool private _inSwap = false;
    bool private _swapEnabled = false;

    event MaxTxAmountUpdated(uint256 maxTx);

    constructor() {
        _taxWallet = payable(msg.sender);
        _balances[msg.sender] = _TOTAL;

        _isExcludedFromLimits[tx.origin] = true;
        _isExcludedFromLimits[address(0)] = true;
        _isExcludedFromLimits[address(0xdead)] = true;
        _isExcludedFromLimits[address(this)] = true;
        _isExcludedFromLimits[address(_UNISWAP_V2_ROUTER)] = true;

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[tx.origin] = true;

        emit Transfer(address(0), msg.sender, _TOTAL);
    }

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, 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(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        _transfer(sender, recipient, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) revert ZeroAddress();
        if (spender == address(0)) revert ZeroAddress();
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        if (from == address(0)) revert ZeroAddress();
        if (to == address(0)) revert ZeroAddress();
        if (amount == 0) revert ZeroAmount();

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

        if (maxWallet != _TOTAL && !_isExcludedFromLimits[to]) {
            require(balanceOf(to) + amount <= maxWallet, "Exceeds maxWallet");
        }

        if (maxTx != _TOTAL && !_isExcludedFromLimits[from]) {
            require(amount <= maxTx, "Exceeds maxTx");
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        if (
            !_inSwap && contractTokenBalance >= swapThreshold && _swapEnabled && _buyCount > _preventSwapBefore
                && to == _uniswapV2Pair && !_isExcludedFromFee[from]
        ) {
            _swapTokensForEth(_min(amount, _min(contractTokenBalance, maxTaxSwap)));
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                _sendETHToFee(contractETHBalance);
            }
        }

        uint256 taxAmount = 0;
        if (!_inSwap && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            // sell
            if (to == _uniswapV2Pair) {
                taxAmount = (amount * ((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax)) / 100;
            }
            // buy
            else if (from == _uniswapV2Pair) {
                if (_firstBlock + 25 > block.number) {
                    require(!_isContract(to), "contract");
                }
                taxAmount = (amount * ((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax)) / 100;
                ++_buyCount;
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)] + taxAmount;
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from] - amount;
        _balances[to] = _balances[to] + amount - taxAmount;
        emit Transfer(from, to, amount - taxAmount);
    }

    function removeLimits() external onlyOwner {
        maxTx = _TOTAL;
        maxWallet = _TOTAL;
        emit MaxTxAmountUpdated(_TOTAL);
    }

    function setBots(address[] memory bots_, bool isBot_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = isBot_;
        }
    }

    function openTrading(uint256 amount) external payable onlyOwner {
        if (lpAdded) revert TradingAlreadyOpen();
        if (msg.value == 0) revert ZeroValue();
        if (amount == 0) revert ZeroToken();
        _transfer(msg.sender, address(this), amount);
        _approve(address(this), address(_UNISWAP_V2_ROUTER), _TOTAL);

        _uniswapV2Pair =
            IUniswapV2Factory(_UNISWAP_V2_ROUTER.factory()).createPair(address(this), _UNISWAP_V2_ROUTER.WETH());
        _isExcludedFromLimits[_uniswapV2Pair] = true;

        _UNISWAP_V2_ROUTER.addLiquidityETH{value: address(this).balance}(
            address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp
        );
        IERC20(_uniswapV2Pair).approve(address(_UNISWAP_V2_ROUTER), type(uint256).max);
        _swapEnabled = true;
        lpAdded = true;
        _firstBlock = block.number;
    }

    function lowerTaxes(uint256 buyTax_, uint256 sellTax_) external onlyOwner {
        if (buyTax_ > _finalBuyTax) { revert TaxTooHigh(); }
        if (sellTax_ > _finalSellTax) { revert TaxTooHigh(); }

        _finalBuyTax = buyTax_;
        _finalSellTax = sellTax_;
    }

    function clearStuck() external {
        (bool success,) = _taxWallet.call{value: address(this).balance}("");
        require(success);
    }

    function clearStuckSelfToken() external {
        if (msg.sender != _taxWallet) { revert Unauthorized(); }
        _transfer(address(this), _taxWallet, balanceOf(address(this)));
    }

    function clearStuckToken(address token) external {
        if (token == address(this)) { revert NotSelf(); }
        IERC20(token).transfer(_taxWallet, IERC20(token).balanceOf(address(this)));
    }

    function isBot(address a) public view returns (bool) {
        return bots[a];
    }

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

    function _isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function _swapTokensForEth(uint256 tokenAmount) private {
        _inSwap = true;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _UNISWAP_V2_ROUTER.WETH();
        _approve(address(this), address(_UNISWAP_V2_ROUTER), tokenAmount);
        _UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount, 0, path, address(this), block.timestamp
        );
        _inSwap = false;
    }

    function _sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSelf","type":"error"},{"inputs":[],"name":"TaxTooHigh","type":"error"},{"inputs":[],"name":"TradingAlreadyOpen","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"inputs":[],"name":"ZeroToken","type":"error"},{"inputs":[],"name":"ZeroValue","type":"error"},{"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":"maxTx","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":[{"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":"clearStuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckSelfToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax_","type":"uint256"},{"internalType":"uint256","name":"sellTax_","type":"uint256"}],"name":"lowerTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"isBot_","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601e6008556032600955600f600a556014600b556014600c556019600d556032600e555f600f556009600a6200003b9190620006c2565b6301312d006200004c919062000712565b6010556009600a6200005f9190620006c2565b6301312d0062000070919062000712565b6011556009600a620000839190620006c2565b6298968062000093919062000712565b6012556009600a620000a69190620006c2565b62989680620000b6919062000712565b6013555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff021916908315150217905550348015620000f9575f80fd5b505f339050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620001e89190620006c2565b633b9aca00620001f9919062000712565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620005029190620006c2565b633b9aca0062000513919062000712565b6040516200052291906200076d565b60405180910390a362000788565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005ba5780860481111562000592576200059162000530565b5b6001851615620005a25780820291505b8081029050620005b2856200055d565b945062000572565b94509492505050565b5f82620005d45760019050620006a6565b81620005e3575f9050620006a6565b8160018114620005fc576002811462000607576200063d565b6001915050620006a6565b60ff8411156200061c576200061b62000530565b5b8360020a91508482111562000636576200063562000530565b5b50620006a6565b5060208310610133831016604e8410600b8410161715620006775782820a90508381111562000671576200067062000530565b5b620006a6565b62000686848484600162000569565b92509050818404811115620006a0576200069f62000530565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006ce82620006ad565b9150620006db83620006b6565b92506200070a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005c3565b905092915050565b5f6200071e82620006ad565b91506200072b83620006ad565b92508282026200073b81620006ad565b9150828204841483151762000755576200075462000530565b5b5092915050565b6200076781620006ad565b82525050565b5f602082019050620007825f8301846200075c565b92915050565b6130c080620007965f395ff3fe60806040526004361061014e575f3560e01c8063751039fc116100b5578063a9059cbb1161006e578063a9059cbb14610453578063af8deddb1461048f578063d1633649146104b9578063da2963ed146104d5578063dd62ed3e146104eb578063f8b45b051461052757610155565b8063751039fc146103835780638da5cb5b146103995780638de5c064146103c357806395d89b41146103d95780639be953b3146104035780639c0db5f31461042b57610155565b80633bbac579116101075780633bbac5791461027957806357d0a982146102b557806362997f8c146102dd57806370a0823114610307578063715018a6146103435780637437681e1461035957610155565b80630445b6671461015957806306fdde0314610183578063095ea7b3146101ad57806318160ddd146101e957806323b872dd14610213578063313ce5671461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610551565b60405161017a91906122fc565b60405180910390f35b34801561018e575f80fd5b50610197610557565b6040516101a4919061239f565b60405180910390f35b3480156101b8575f80fd5b506101d360048036038101906101ce9190612454565b610594565b6040516101e091906124ac565b60405180910390f35b3480156101f4575f80fd5b506101fd6105aa565b60405161020a91906122fc565b60405180910390f35b34801561021e575f80fd5b50610239600480360381019061023491906124c5565b6105cd565b60405161024691906124ac565b60405180910390f35b34801561025a575f80fd5b50610263610672565b6040516102709190612530565b60405180910390f35b348015610284575f80fd5b5061029f600480360381019061029a9190612549565b61067a565b6040516102ac91906124ac565b60405180910390f35b3480156102c0575f80fd5b506102db60048036038101906102d69190612574565b6106cc565b005b3480156102e8575f80fd5b506102f16107da565b6040516102fe91906122fc565b60405180910390f35b348015610312575f80fd5b5061032d60048036038101906103289190612549565b6107e0565b60405161033a91906122fc565b60405180910390f35b34801561034e575f80fd5b50610357610826565b005b348015610364575f80fd5b5061036d610964565b60405161037a91906122fc565b60405180910390f35b34801561038e575f80fd5b5061039761096a565b005b3480156103a4575f80fd5b506103ad610a89565b6040516103ba91906125c1565b60405180910390f35b3480156103ce575f80fd5b506103d7610ab0565b005b3480156103e4575f80fd5b506103ed610b45565b6040516103fa919061239f565b60405180910390f35b34801561040e575f80fd5b5061042960048036038101906104249190612549565b610b82565b005b348015610436575f80fd5b50610451600480360381019061044c9190612744565b610cfe565b005b34801561045e575f80fd5b5061047960048036038101906104749190612454565b610e0d565b60405161048691906124ac565b60405180910390f35b34801561049a575f80fd5b506104a3610e23565b6040516104b091906124ac565b60405180910390f35b6104d360048036038101906104ce919061279e565b610e34565b005b3480156104e0575f80fd5b506104e96113a0565b005b3480156104f6575f80fd5b50610511600480360381019061050c91906127c9565b61145c565b60405161051e91906122fc565b60405180910390f35b348015610532575f80fd5b5061053b6114de565b60405161054891906122fc565b60405180910390f35b60125481565b60606040518060400160405280600581526020017f4f72646958000000000000000000000000000000000000000000000000000000815250905090565b5f6105a03384846114e4565b6001905092915050565b5f6009600a6105b99190612963565b633b9aca006105c891906129ad565b905090565b5f61065c84338460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461065791906129ee565b6114e4565b610667848484611695565b600190509392505050565b5f6009905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610750576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5482111561078c576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b548111156107c8576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600a8190555080600b819055505050565b60135481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108aa576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ee576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009600a6109fc9190612963565b633b9aca00610a0b91906129ad565b6010819055506009600a610a1f9190612963565b633b9aca00610a2e91906129ad565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a639190612963565b633b9aca00610a7291906129ad565b604051610a7f91906122fc565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610af690612a4e565b5f6040518083038185875af1925050503d805f8114610b30576040519150601f19603f3d011682016040523d82523d5f602084013e610b35565b606091505b5050905080610b42575f80fd5b50565b60606040518060400160405280600581526020017f4f52444958000000000000000000000000000000000000000000000000000000815250905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610be7576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c5e91906125c1565b602060405180830381865afa158015610c79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9d9190612a76565b6040518363ffffffff1660e01b8152600401610cba929190612afc565b6020604051808303815f875af1158015610cd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfa9190612b37565b5050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d82576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610e08578160055f858481518110610da457610da3612b62565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610d84565b505050565b5f610e19338484611695565b6001905092915050565b60148054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb8576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60148054906101000a900460ff1615610efd576040517f94215aac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f3403610f36576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103610f6f576040517fad1991f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f7a333083611695565b610fb530737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a610fa19190612963565b633b9aca00610fb091906129ad565b6114e4565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611012573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110369190612ba3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d39190612ba3565b6040518363ffffffff1660e01b81526004016110f0929190612bce565b6020604051808303815f875af115801561110c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111309190612ba3565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611220306107e0565b5f8061122a610a89565b426040518863ffffffff1660e01b815260040161124c96959493929190612c2e565b60606040518083038185885af1158015611268573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061128d9190612c8d565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611320929190612cdd565b6020604051808303815f875af115801561133c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113609190612b37565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff0219169083151502179055504360078190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611426576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61145a3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611455306107e0565b611695565b565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611549576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161168891906122fc565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116fa576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361175f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103611798576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611836575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c90612d4e565b60405180910390fd5b6009600a6118839190612963565b633b9aca0061189291906129ad565b601154141580156118ea575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561194857601154816118fc846107e0565b6119069190612d6c565b1115611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90612de9565b60405180910390fd5b5b6009600a6119569190612963565b633b9aca0061196591906129ad565b601054141580156119bd575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a0857601054811115611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe90612e51565b60405180910390fd5b5b5f611a12306107e0565b9050601460159054906101000a900460ff16158015611a3357506012548110155b8015611a4b5750601460169054906101000a900460ff165b8015611a5a5750600e54600f54115b8015611ab2575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611b05575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b3f57611b27611b2283611b1d8460135461200f565b61200f565b612027565b5f4790505f811115611b3d57611b3c8161226b565b5b505b5f601460159054906101000a900460ff16158015611ba4575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bf7575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d815760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c85576064600d54600f5411611c6557600954611c69565b600b545b84611c7491906129ad565b611c7e9190612e9c565b9050611d80565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611d7f57436019600754611ce99190612d6c565b1115611d3957611cf8846122d3565b15611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f90612f16565b60405180910390fd5b5b6064600c54600f5411611d4e57600854611d52565b600a545b84611d5d91906129ad565b611d679190612e9c565b9050600f5f8154611d7790612f34565b919050819055505b5b5b5f811115611e79578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dd29190612d6c565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e7091906122fc565b60405180910390a35b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ec291906129ee565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550808360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f4d9190612d6c565b611f5791906129ee565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386611ff391906129ee565b60405161200091906122fc565b60405180910390a35050505050565b5f81831161201d578261201f565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561205e5761205d6125de565b5b60405190808252806020026020018201604052801561208c5781602001602082028036833780820191505090505b50905030815f815181106120a3576120a2612b62565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561213a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061215e9190612ba3565b8160018151811061217257612171612b62565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121cb30737a250d5630b4cf539739df2c5dacb4c659f2488d846114e4565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612220959493929190613032565b5f604051808303815f87803b158015612237575f80fd5b505af1158015612249573d5f803e3d5ffd5b505050505f601460156101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156122cf573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f819050919050565b6122f6816122e4565b82525050565b5f60208201905061230f5f8301846122ed565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561234c578082015181840152602081019050612331565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61237182612315565b61237b818561231f565b935061238b81856020860161232f565b61239481612357565b840191505092915050565b5f6020820190508181035f8301526123b78184612367565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123f9826123d0565b9050919050565b612409816123ef565b8114612413575f80fd5b50565b5f8135905061242481612400565b92915050565b612433816122e4565b811461243d575f80fd5b50565b5f8135905061244e8161242a565b92915050565b5f806040838503121561246a576124696123c8565b5b5f61247785828601612416565b925050602061248885828601612440565b9150509250929050565b5f8115159050919050565b6124a681612492565b82525050565b5f6020820190506124bf5f83018461249d565b92915050565b5f805f606084860312156124dc576124db6123c8565b5b5f6124e986828701612416565b93505060206124fa86828701612416565b925050604061250b86828701612440565b9150509250925092565b5f60ff82169050919050565b61252a81612515565b82525050565b5f6020820190506125435f830184612521565b92915050565b5f6020828403121561255e5761255d6123c8565b5b5f61256b84828501612416565b91505092915050565b5f806040838503121561258a576125896123c8565b5b5f61259785828601612440565b92505060206125a885828601612440565b9150509250929050565b6125bb816123ef565b82525050565b5f6020820190506125d45f8301846125b2565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61261482612357565b810181811067ffffffffffffffff82111715612633576126326125de565b5b80604052505050565b5f6126456123bf565b9050612651828261260b565b919050565b5f67ffffffffffffffff8211156126705761266f6125de565b5b602082029050602081019050919050565b5f80fd5b5f61269761269284612656565b61263c565b905080838252602082019050602084028301858111156126ba576126b9612681565b5b835b818110156126e357806126cf8882612416565b8452602084019350506020810190506126bc565b5050509392505050565b5f82601f830112612701576127006125da565b5b8135612711848260208601612685565b91505092915050565b61272381612492565b811461272d575f80fd5b50565b5f8135905061273e8161271a565b92915050565b5f806040838503121561275a576127596123c8565b5b5f83013567ffffffffffffffff811115612777576127766123cc565b5b612783858286016126ed565b925050602061279485828601612730565b9150509250929050565b5f602082840312156127b3576127b26123c8565b5b5f6127c084828501612440565b91505092915050565b5f80604083850312156127df576127de6123c8565b5b5f6127ec85828601612416565b92505060206127fd85828601612416565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128895780860481111561286557612864612807565b5b60018516156128745780820291505b808102905061288285612834565b9450612849565b94509492505050565b5f826128a1576001905061295c565b816128ae575f905061295c565b81600181146128c457600281146128ce576128fd565b600191505061295c565b60ff8411156128e0576128df612807565b5b8360020a9150848211156128f7576128f6612807565b5b5061295c565b5060208310610133831016604e8410600b84101617156129325782820a90508381111561292d5761292c612807565b5b61295c565b61293f8484846001612840565b9250905081840481111561295657612955612807565b5b81810290505b9392505050565b5f61296d826122e4565b915061297883612515565b92506129a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612892565b905092915050565b5f6129b7826122e4565b91506129c2836122e4565b92508282026129d0816122e4565b915082820484148315176129e7576129e6612807565b5b5092915050565b5f6129f8826122e4565b9150612a03836122e4565b9250828203905081811115612a1b57612a1a612807565b5b92915050565b5f81905092915050565b50565b5f612a395f83612a21565b9150612a4482612a2b565b5f82019050919050565b5f612a5882612a2e565b9150819050919050565b5f81519050612a708161242a565b92915050565b5f60208284031215612a8b57612a8a6123c8565b5b5f612a9884828501612a62565b91505092915050565b5f819050919050565b5f612ac4612abf612aba846123d0565b612aa1565b6123d0565b9050919050565b5f612ad582612aaa565b9050919050565b5f612ae682612acb565b9050919050565b612af681612adc565b82525050565b5f604082019050612b0f5f830185612aed565b612b1c60208301846122ed565b9392505050565b5f81519050612b318161271a565b92915050565b5f60208284031215612b4c57612b4b6123c8565b5b5f612b5984828501612b23565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612b9d81612400565b92915050565b5f60208284031215612bb857612bb76123c8565b5b5f612bc584828501612b8f565b91505092915050565b5f604082019050612be15f8301856125b2565b612bee60208301846125b2565b9392505050565b5f819050919050565b5f612c18612c13612c0e84612bf5565b612aa1565b6122e4565b9050919050565b612c2881612bfe565b82525050565b5f60c082019050612c415f8301896125b2565b612c4e60208301886122ed565b612c5b6040830187612c1f565b612c686060830186612c1f565b612c7560808301856125b2565b612c8260a08301846122ed565b979650505050505050565b5f805f60608486031215612ca457612ca36123c8565b5b5f612cb186828701612a62565b9350506020612cc286828701612a62565b9250506040612cd386828701612a62565b9150509250925092565b5f604082019050612cf05f8301856125b2565b612cfd60208301846122ed565b9392505050565b7f626f7473000000000000000000000000000000000000000000000000000000005f82015250565b5f612d3860048361231f565b9150612d4382612d04565b602082019050919050565b5f6020820190508181035f830152612d6581612d2c565b9050919050565b5f612d76826122e4565b9150612d81836122e4565b9250828201905080821115612d9957612d98612807565b5b92915050565b7f45786365656473206d617857616c6c65740000000000000000000000000000005f82015250565b5f612dd360118361231f565b9150612dde82612d9f565b602082019050919050565b5f6020820190508181035f830152612e0081612dc7565b9050919050565b7f45786365656473206d61785478000000000000000000000000000000000000005f82015250565b5f612e3b600d8361231f565b9150612e4682612e07565b602082019050919050565b5f6020820190508181035f830152612e6881612e2f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ea6826122e4565b9150612eb1836122e4565b925082612ec157612ec0612e6f565b5b828204905092915050565b7f636f6e74726163740000000000000000000000000000000000000000000000005f82015250565b5f612f0060088361231f565b9150612f0b82612ecc565b602082019050919050565b5f6020820190508181035f830152612f2d81612ef4565b9050919050565b5f612f3e826122e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f7057612f6f612807565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612fad816123ef565b82525050565b5f612fbe8383612fa4565b60208301905092915050565b5f602082019050919050565b5f612fe082612f7b565b612fea8185612f85565b9350612ff583612f95565b805f5b8381101561302557815161300c8882612fb3565b975061301783612fca565b925050600181019050612ff8565b5085935050505092915050565b5f60a0820190506130455f8301886122ed565b6130526020830187612c1f565b81810360408301526130648186612fd6565b905061307360608301856125b2565b61308060808301846122ed565b969550505050505056fea264697066735822122046ec6e37daaf185d984750e6c5ac05eedde0286eab86e9a5a4858f290bf80efb64736f6c63430008170033

Deployed Bytecode

0x60806040526004361061014e575f3560e01c8063751039fc116100b5578063a9059cbb1161006e578063a9059cbb14610453578063af8deddb1461048f578063d1633649146104b9578063da2963ed146104d5578063dd62ed3e146104eb578063f8b45b051461052757610155565b8063751039fc146103835780638da5cb5b146103995780638de5c064146103c357806395d89b41146103d95780639be953b3146104035780639c0db5f31461042b57610155565b80633bbac579116101075780633bbac5791461027957806357d0a982146102b557806362997f8c146102dd57806370a0823114610307578063715018a6146103435780637437681e1461035957610155565b80630445b6671461015957806306fdde0314610183578063095ea7b3146101ad57806318160ddd146101e957806323b872dd14610213578063313ce5671461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610551565b60405161017a91906122fc565b60405180910390f35b34801561018e575f80fd5b50610197610557565b6040516101a4919061239f565b60405180910390f35b3480156101b8575f80fd5b506101d360048036038101906101ce9190612454565b610594565b6040516101e091906124ac565b60405180910390f35b3480156101f4575f80fd5b506101fd6105aa565b60405161020a91906122fc565b60405180910390f35b34801561021e575f80fd5b50610239600480360381019061023491906124c5565b6105cd565b60405161024691906124ac565b60405180910390f35b34801561025a575f80fd5b50610263610672565b6040516102709190612530565b60405180910390f35b348015610284575f80fd5b5061029f600480360381019061029a9190612549565b61067a565b6040516102ac91906124ac565b60405180910390f35b3480156102c0575f80fd5b506102db60048036038101906102d69190612574565b6106cc565b005b3480156102e8575f80fd5b506102f16107da565b6040516102fe91906122fc565b60405180910390f35b348015610312575f80fd5b5061032d60048036038101906103289190612549565b6107e0565b60405161033a91906122fc565b60405180910390f35b34801561034e575f80fd5b50610357610826565b005b348015610364575f80fd5b5061036d610964565b60405161037a91906122fc565b60405180910390f35b34801561038e575f80fd5b5061039761096a565b005b3480156103a4575f80fd5b506103ad610a89565b6040516103ba91906125c1565b60405180910390f35b3480156103ce575f80fd5b506103d7610ab0565b005b3480156103e4575f80fd5b506103ed610b45565b6040516103fa919061239f565b60405180910390f35b34801561040e575f80fd5b5061042960048036038101906104249190612549565b610b82565b005b348015610436575f80fd5b50610451600480360381019061044c9190612744565b610cfe565b005b34801561045e575f80fd5b5061047960048036038101906104749190612454565b610e0d565b60405161048691906124ac565b60405180910390f35b34801561049a575f80fd5b506104a3610e23565b6040516104b091906124ac565b60405180910390f35b6104d360048036038101906104ce919061279e565b610e34565b005b3480156104e0575f80fd5b506104e96113a0565b005b3480156104f6575f80fd5b50610511600480360381019061050c91906127c9565b61145c565b60405161051e91906122fc565b60405180910390f35b348015610532575f80fd5b5061053b6114de565b60405161054891906122fc565b60405180910390f35b60125481565b60606040518060400160405280600581526020017f4f72646958000000000000000000000000000000000000000000000000000000815250905090565b5f6105a03384846114e4565b6001905092915050565b5f6009600a6105b99190612963565b633b9aca006105c891906129ad565b905090565b5f61065c84338460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461065791906129ee565b6114e4565b610667848484611695565b600190509392505050565b5f6009905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610750576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5482111561078c576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b548111156107c8576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600a8190555080600b819055505050565b60135481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108aa576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ee576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009600a6109fc9190612963565b633b9aca00610a0b91906129ad565b6010819055506009600a610a1f9190612963565b633b9aca00610a2e91906129ad565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a639190612963565b633b9aca00610a7291906129ad565b604051610a7f91906122fc565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610af690612a4e565b5f6040518083038185875af1925050503d805f8114610b30576040519150601f19603f3d011682016040523d82523d5f602084013e610b35565b606091505b5050905080610b42575f80fd5b50565b60606040518060400160405280600581526020017f4f52444958000000000000000000000000000000000000000000000000000000815250905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610be7576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c5e91906125c1565b602060405180830381865afa158015610c79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9d9190612a76565b6040518363ffffffff1660e01b8152600401610cba929190612afc565b6020604051808303815f875af1158015610cd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfa9190612b37565b5050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d82576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610e08578160055f858481518110610da457610da3612b62565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610d84565b505050565b5f610e19338484611695565b6001905092915050565b60148054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb8576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60148054906101000a900460ff1615610efd576040517f94215aac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f3403610f36576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103610f6f576040517fad1991f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f7a333083611695565b610fb530737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a610fa19190612963565b633b9aca00610fb091906129ad565b6114e4565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611012573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110369190612ba3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d39190612ba3565b6040518363ffffffff1660e01b81526004016110f0929190612bce565b6020604051808303815f875af115801561110c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111309190612ba3565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611220306107e0565b5f8061122a610a89565b426040518863ffffffff1660e01b815260040161124c96959493929190612c2e565b60606040518083038185885af1158015611268573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061128d9190612c8d565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611320929190612cdd565b6020604051808303815f875af115801561133c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113609190612b37565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff0219169083151502179055504360078190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611426576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61145a3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611455306107e0565b611695565b565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611549576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161168891906122fc565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116fa576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361175f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103611798576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611836575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c90612d4e565b60405180910390fd5b6009600a6118839190612963565b633b9aca0061189291906129ad565b601154141580156118ea575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561194857601154816118fc846107e0565b6119069190612d6c565b1115611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90612de9565b60405180910390fd5b5b6009600a6119569190612963565b633b9aca0061196591906129ad565b601054141580156119bd575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a0857601054811115611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe90612e51565b60405180910390fd5b5b5f611a12306107e0565b9050601460159054906101000a900460ff16158015611a3357506012548110155b8015611a4b5750601460169054906101000a900460ff165b8015611a5a5750600e54600f54115b8015611ab2575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611b05575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b3f57611b27611b2283611b1d8460135461200f565b61200f565b612027565b5f4790505f811115611b3d57611b3c8161226b565b5b505b5f601460159054906101000a900460ff16158015611ba4575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bf7575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d815760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c85576064600d54600f5411611c6557600954611c69565b600b545b84611c7491906129ad565b611c7e9190612e9c565b9050611d80565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611d7f57436019600754611ce99190612d6c565b1115611d3957611cf8846122d3565b15611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f90612f16565b60405180910390fd5b5b6064600c54600f5411611d4e57600854611d52565b600a545b84611d5d91906129ad565b611d679190612e9c565b9050600f5f8154611d7790612f34565b919050819055505b5b5b5f811115611e79578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dd29190612d6c565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e7091906122fc565b60405180910390a35b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ec291906129ee565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550808360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f4d9190612d6c565b611f5791906129ee565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386611ff391906129ee565b60405161200091906122fc565b60405180910390a35050505050565b5f81831161201d578261201f565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561205e5761205d6125de565b5b60405190808252806020026020018201604052801561208c5781602001602082028036833780820191505090505b50905030815f815181106120a3576120a2612b62565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561213a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061215e9190612ba3565b8160018151811061217257612171612b62565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121cb30737a250d5630b4cf539739df2c5dacb4c659f2488d846114e4565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612220959493929190613032565b5f604051808303815f87803b158015612237575f80fd5b505af1158015612249573d5f803e3d5ffd5b505050505f601460156101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156122cf573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f819050919050565b6122f6816122e4565b82525050565b5f60208201905061230f5f8301846122ed565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561234c578082015181840152602081019050612331565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61237182612315565b61237b818561231f565b935061238b81856020860161232f565b61239481612357565b840191505092915050565b5f6020820190508181035f8301526123b78184612367565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123f9826123d0565b9050919050565b612409816123ef565b8114612413575f80fd5b50565b5f8135905061242481612400565b92915050565b612433816122e4565b811461243d575f80fd5b50565b5f8135905061244e8161242a565b92915050565b5f806040838503121561246a576124696123c8565b5b5f61247785828601612416565b925050602061248885828601612440565b9150509250929050565b5f8115159050919050565b6124a681612492565b82525050565b5f6020820190506124bf5f83018461249d565b92915050565b5f805f606084860312156124dc576124db6123c8565b5b5f6124e986828701612416565b93505060206124fa86828701612416565b925050604061250b86828701612440565b9150509250925092565b5f60ff82169050919050565b61252a81612515565b82525050565b5f6020820190506125435f830184612521565b92915050565b5f6020828403121561255e5761255d6123c8565b5b5f61256b84828501612416565b91505092915050565b5f806040838503121561258a576125896123c8565b5b5f61259785828601612440565b92505060206125a885828601612440565b9150509250929050565b6125bb816123ef565b82525050565b5f6020820190506125d45f8301846125b2565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61261482612357565b810181811067ffffffffffffffff82111715612633576126326125de565b5b80604052505050565b5f6126456123bf565b9050612651828261260b565b919050565b5f67ffffffffffffffff8211156126705761266f6125de565b5b602082029050602081019050919050565b5f80fd5b5f61269761269284612656565b61263c565b905080838252602082019050602084028301858111156126ba576126b9612681565b5b835b818110156126e357806126cf8882612416565b8452602084019350506020810190506126bc565b5050509392505050565b5f82601f830112612701576127006125da565b5b8135612711848260208601612685565b91505092915050565b61272381612492565b811461272d575f80fd5b50565b5f8135905061273e8161271a565b92915050565b5f806040838503121561275a576127596123c8565b5b5f83013567ffffffffffffffff811115612777576127766123cc565b5b612783858286016126ed565b925050602061279485828601612730565b9150509250929050565b5f602082840312156127b3576127b26123c8565b5b5f6127c084828501612440565b91505092915050565b5f80604083850312156127df576127de6123c8565b5b5f6127ec85828601612416565b92505060206127fd85828601612416565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128895780860481111561286557612864612807565b5b60018516156128745780820291505b808102905061288285612834565b9450612849565b94509492505050565b5f826128a1576001905061295c565b816128ae575f905061295c565b81600181146128c457600281146128ce576128fd565b600191505061295c565b60ff8411156128e0576128df612807565b5b8360020a9150848211156128f7576128f6612807565b5b5061295c565b5060208310610133831016604e8410600b84101617156129325782820a90508381111561292d5761292c612807565b5b61295c565b61293f8484846001612840565b9250905081840481111561295657612955612807565b5b81810290505b9392505050565b5f61296d826122e4565b915061297883612515565b92506129a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612892565b905092915050565b5f6129b7826122e4565b91506129c2836122e4565b92508282026129d0816122e4565b915082820484148315176129e7576129e6612807565b5b5092915050565b5f6129f8826122e4565b9150612a03836122e4565b9250828203905081811115612a1b57612a1a612807565b5b92915050565b5f81905092915050565b50565b5f612a395f83612a21565b9150612a4482612a2b565b5f82019050919050565b5f612a5882612a2e565b9150819050919050565b5f81519050612a708161242a565b92915050565b5f60208284031215612a8b57612a8a6123c8565b5b5f612a9884828501612a62565b91505092915050565b5f819050919050565b5f612ac4612abf612aba846123d0565b612aa1565b6123d0565b9050919050565b5f612ad582612aaa565b9050919050565b5f612ae682612acb565b9050919050565b612af681612adc565b82525050565b5f604082019050612b0f5f830185612aed565b612b1c60208301846122ed565b9392505050565b5f81519050612b318161271a565b92915050565b5f60208284031215612b4c57612b4b6123c8565b5b5f612b5984828501612b23565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612b9d81612400565b92915050565b5f60208284031215612bb857612bb76123c8565b5b5f612bc584828501612b8f565b91505092915050565b5f604082019050612be15f8301856125b2565b612bee60208301846125b2565b9392505050565b5f819050919050565b5f612c18612c13612c0e84612bf5565b612aa1565b6122e4565b9050919050565b612c2881612bfe565b82525050565b5f60c082019050612c415f8301896125b2565b612c4e60208301886122ed565b612c5b6040830187612c1f565b612c686060830186612c1f565b612c7560808301856125b2565b612c8260a08301846122ed565b979650505050505050565b5f805f60608486031215612ca457612ca36123c8565b5b5f612cb186828701612a62565b9350506020612cc286828701612a62565b9250506040612cd386828701612a62565b9150509250925092565b5f604082019050612cf05f8301856125b2565b612cfd60208301846122ed565b9392505050565b7f626f7473000000000000000000000000000000000000000000000000000000005f82015250565b5f612d3860048361231f565b9150612d4382612d04565b602082019050919050565b5f6020820190508181035f830152612d6581612d2c565b9050919050565b5f612d76826122e4565b9150612d81836122e4565b9250828201905080821115612d9957612d98612807565b5b92915050565b7f45786365656473206d617857616c6c65740000000000000000000000000000005f82015250565b5f612dd360118361231f565b9150612dde82612d9f565b602082019050919050565b5f6020820190508181035f830152612e0081612dc7565b9050919050565b7f45786365656473206d61785478000000000000000000000000000000000000005f82015250565b5f612e3b600d8361231f565b9150612e4682612e07565b602082019050919050565b5f6020820190508181035f830152612e6881612e2f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ea6826122e4565b9150612eb1836122e4565b925082612ec157612ec0612e6f565b5b828204905092915050565b7f636f6e74726163740000000000000000000000000000000000000000000000005f82015250565b5f612f0060088361231f565b9150612f0b82612ecc565b602082019050919050565b5f6020820190508181035f830152612f2d81612ef4565b9050919050565b5f612f3e826122e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f7057612f6f612807565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612fad816123ef565b82525050565b5f612fbe8383612fa4565b60208301905092915050565b5f602082019050919050565b5f612fe082612f7b565b612fea8185612f85565b9350612ff583612f95565b805f5b8381101561302557815161300c8882612fb3565b975061301783612fca565b925050600181019050612ff8565b5085935050505092915050565b5f60a0820190506130455f8301886122ed565b6130526020830187612c1f565b81810360408301526130648186612fd6565b905061307360608301856125b2565b61308060808301846122ed565b969550505050505056fea264697066735822122046ec6e37daaf185d984750e6c5ac05eedde0286eab86e9a5a4858f290bf80efb64736f6c63430008170033

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.