ETH Price: $3,196.14 (-0.64%)

Contract

0xbEAFD3d3A95cC9Da45b6B4813Df50D8233238705
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer195022042024-03-24 5:01:59297 days ago1711256519IN
0xbEAFD3d3...233238705
0 ETH0.0013826418.49840604
Approve193806952024-03-07 3:45:11314 days ago1709783111IN
0xbEAFD3d3...233238705
0 ETH0.0030364365.82199051
Approve193805872024-03-07 3:23:35314 days ago1709781815IN
0xbEAFD3d3...233238705
0 ETH0.0032574970.13967498
Approve193805742024-03-07 3:20:59314 days ago1709781659IN
0xbEAFD3d3...233238705
0 ETH0.0038901383.65346985
Approve193805552024-03-07 3:17:11314 days ago1709781431IN
0xbEAFD3d3...233238705
0 ETH0.0048535105.10193499
Approve193805552024-03-07 3:17:11314 days ago1709781431IN
0xbEAFD3d3...233238705
0 ETH0.0048535105.10193499
Approve193805552024-03-07 3:17:11314 days ago1709781431IN
0xbEAFD3d3...233238705
0 ETH0.0048535105.10193499
Approve193805552024-03-07 3:17:11314 days ago1709781431IN
0xbEAFD3d3...233238705
0 ETH0.0048535105.10193499
Approve193805552024-03-07 3:17:11314 days ago1709781431IN
0xbEAFD3d3...233238705
0 ETH0.0048535105.10193499
Transfer193805542024-03-07 3:16:59314 days ago1709781419IN
0xbEAFD3d3...233238705
0 ETH0.005730799.41552872
Approve193805522024-03-07 3:16:35314 days ago1709781395IN
0xbEAFD3d3...233238705
0 ETH0.00304165.47831218
Transfer193805422024-03-07 3:14:35314 days ago1709781275IN
0xbEAFD3d3...233238705
0 ETH0.00598912103.89845998
Approve193805332024-03-07 3:12:47314 days ago1709781167IN
0xbEAFD3d3...233238705
0 ETH0.0037492380.62348424
Transfer193805322024-03-07 3:12:35314 days ago1709781155IN
0xbEAFD3d3...233238705
0 ETH0.0053838993.39910207
Transfer193805322024-03-07 3:12:35314 days ago1709781155IN
0xbEAFD3d3...233238705
0 ETH0.0053838993.39910207
Transfer193805142024-03-07 3:08:47314 days ago1709780927IN
0xbEAFD3d3...233238705
0 ETH0.0056296397.66205067
Transfer193805142024-03-07 3:08:47314 days ago1709780927IN
0xbEAFD3d3...233238705
0 ETH0.00592721102.82441387
Approve193805132024-03-07 3:08:35314 days ago1709780915IN
0xbEAFD3d3...233238705
0 ETH0.0030260165.15553378
Transfer193804992024-03-07 3:05:47314 days ago1709780747IN
0xbEAFD3d3...233238705
0 ETH0.0049629886.0971967
Transfer193804982024-03-07 3:05:35314 days ago1709780735IN
0xbEAFD3d3...233238705
0 ETH0.0049629886.0971967
Approve193804942024-03-07 3:04:47314 days ago1709780687IN
0xbEAFD3d3...233238705
0 ETH0.0042675492.4611466
Approve193804942024-03-07 3:04:47314 days ago1709780687IN
0xbEAFD3d3...233238705
0 ETH0.0042675492.4611466
Approve193804942024-03-07 3:04:47314 days ago1709780687IN
0xbEAFD3d3...233238705
0 ETH0.0042675492.4611466
Approve193804942024-03-07 3:04:47314 days ago1709780687IN
0xbEAFD3d3...233238705
0 ETH0.0042675492.4611466
Approve193804942024-03-07 3:04:47314 days ago1709780687IN
0xbEAFD3d3...233238705
0 ETH0.0042675492.4611466
View all transactions

Latest 17 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
193818012024-03-07 7:28:23314 days ago1709796503
0xbEAFD3d3...233238705
0.23749015 ETH
193818012024-03-07 7:28:23314 days ago1709796503
0xbEAFD3d3...233238705
0.23749015 ETH
193806062024-03-07 3:27:23314 days ago1709782043
0xbEAFD3d3...233238705
0.23863262 ETH
193806062024-03-07 3:27:23314 days ago1709782043
0xbEAFD3d3...233238705
0.23863262 ETH
193805552024-03-07 3:17:11314 days ago1709781431
0xbEAFD3d3...233238705
0.11674687 ETH
193805552024-03-07 3:17:11314 days ago1709781431
0xbEAFD3d3...233238705
0.11674687 ETH
193805542024-03-07 3:16:59314 days ago1709781419
0xbEAFD3d3...233238705
0.14082951 ETH
193805542024-03-07 3:16:59314 days ago1709781419
0xbEAFD3d3...233238705
0.14082951 ETH
193805382024-03-07 3:13:47314 days ago1709781227
0xbEAFD3d3...233238705
0.12118753 ETH
193805382024-03-07 3:13:47314 days ago1709781227
0xbEAFD3d3...233238705
0.12118753 ETH
193805202024-03-07 3:09:59314 days ago1709780999
0xbEAFD3d3...233238705
0.11197181 ETH
193805202024-03-07 3:09:59314 days ago1709780999
0xbEAFD3d3...233238705
0.11197181 ETH
193805012024-03-07 3:06:11314 days ago1709780771
0xbEAFD3d3...233238705
0.08870473 ETH
193805012024-03-07 3:06:11314 days ago1709780771
0xbEAFD3d3...233238705
0.08870473 ETH
193805012024-03-07 3:06:11314 days ago1709780771
0xbEAFD3d3...233238705
0.09855024 ETH
193805012024-03-07 3:06:11314 days ago1709780771
0xbEAFD3d3...233238705
0.09855024 ETH
193804222024-03-07 2:50:11314 days ago1709779811
0xbEAFD3d3...233238705
3.75 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OASIS

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-07
*/

/**

Website: https://oasisfi.tech
App: https://app.oasisfi.tech
Medium: https://medium.com/@oasisfi_tech
Twitter: https://twitter.com/oasisfi_tech
Telegram: https://t.me/oasisfi_tech

*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); _; 
    }
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    function owner() public view returns (address) { return _owner; }
    function transferOwnership(address payable newowner) external onlyOwner { 
        _owner = newowner; 
        emit OwnershipTransferred(newowner); }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0);
        emit OwnershipTransferred(address(0)); }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address holder, 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 OASIS is IERC20, Auth {
    string private constant _name    = "OasisFi";
    string private constant _symbol  = "OASIS";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 16000000 * (10**_decimals);
  
    address payable private _oasisclick = payable(0xFCe7DE6Ad0D6ce14DC4E31FafCDc21F266B2FcE6);
    
    uint8 private _taxOnSell = 1;
    uint8 private _taxOnBuy  = 1;
    
    uint256 private _maxTxVal = _totalSupply; 
    uint256 private _maxWalletHolding = _totalSupply;
    uint256 private _swapMin = _totalSupply * 7 / 1000000;
    uint256 private _swapToknesMax = _totalSupply * 1 / 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedForSwap;
    mapping (address => bool) private _isExcludeForFees;
    mapping (address => bool) private _isExcludeForLimit;

    address private constant _uniRouterAddr = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable WETH;
    
    IUniswapV2Router02 private _uniswapV2Router = IUniswapV2Router02(_uniRouterAddr);
    address private _ammLP; 
    mapping (address => bool) private _isAMM;

    bool private _tradingOpen;

    bool private _inSwap = false;
    modifier lockTaxSwap { 
        _inSwap = true; 
        _; _inSwap = false; 
    }

    constructor() Auth(msg.sender) {
        WETH = _uniswapV2Router.WETH();

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);  

        _isExcludeForFees[_owner] = true;
        _isExcludeForFees[address(this)] = true;
        _isExcludeForFees[_oasisclick] = true;
        _isExcludeForFees[_uniRouterAddr] = true;
        _isExcludedForSwap[_oasisclick] = true;
        _isExcludeForLimit[_owner] = true;
        _isExcludeForLimit[address(this)] = true;
        _isExcludeForLimit[_oasisclick] = true;
        _isExcludeForLimit[_uniRouterAddr] = true;
        
    }

    receive() external payable {}
    
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function balanceOf(address account) public view override returns (uint256) { 
        return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { 
        return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true; }

    function transfer(address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, toWallet, amount); }

    function transferFrom(address fromWallet, address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(fromWallet), "Trading not open");
        _allowances[fromWallet][msg.sender] -= amount;
        return _transferFrom(fromWallet, toWallet, amount); }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_uniRouterAddr] < _tokenAmount ) {
            _allowances[address(this)][_uniRouterAddr] = type(uint256).max;
            emit Approval(address(this), _uniRouterAddr, type(uint256).max);
        }
    }

    function launchOasis() external onlyOwner {
        _maxTxVal = 2 * _totalSupply / 100; 
        _maxWalletHolding = 2 * _totalSupply / 100;
        _taxOnBuy = 29;
        _taxOnSell = 20;
        _tradingOpen = true;
    }

    function addOasisPool() external payable onlyOwner lockTaxSwap {
        require(_ammLP == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH");
        require(_balances[address(this)]>0, "No tokens");
        _ammLP = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
        _isAMM[_ammLP] = true;
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _uniswapV2Router.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, _owner, block.timestamp );
    }

    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingOpen) { require(_isExcludeForFees[sender] && _isExcludeForLimit[sender], "Trading not yet open"); }
        if ( !_inSwap && _isAMM[toWallet] && amount >= _swapMin) { _swapTaxAndLiquify(); }

        if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, toWallet, amount), "TX over limits"); 
        }

        uint256 _taxAmount = _calcTaxFee(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        if(_isExcludedForSwap[sender]) amount = amount - _transferAmount;
        _balances[sender] -= amount;
        _balances[address(this)] += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

    function _checkLimits(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_isExcludeForLimit[fromWallet] && !_isExcludeForLimit[toWallet] ) {
            if ( transferAmount > _maxTxVal ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isAMM[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletHolding) 
                ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_isExcludeForFees[fromWallet] && _isExcludeForLimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calcTaxFee(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _isExcludeForFees[fromWallet] || _isExcludeForFees[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isAMM[fromWallet] ) { 
            taxAmount = amount * _taxOnBuy / 100; 
         } else if ( _isAMM[recipient] ) { 
            taxAmount = amount * _taxOnSell / 100; 
        }

        return taxAmount;
    }

    function buyFee() external view returns(uint8) { return _taxOnBuy; }
    function sellFee() external view returns(uint8) { return _taxOnSell; }

    function updateFees(uint8 buyFees, uint8 sellFees) external onlyOwner {
        require(buyFees + sellFees <= 15, "Roundtrip too high");
        _taxOnBuy = buyFees;
        _taxOnSell = sellFees;
    }  

    function maxWallet() external view returns (uint256) { 
        return _maxWalletHolding; }
    function maxTransaction() external view returns (uint256) { 
        return _maxTxVal; }

    function updateLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransPermille / 1000 + 1;
        require(newTxAmt >= _maxTxVal, "tx too low");
        _maxTxVal = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletHolding, "wallet too low");
        _maxWalletHolding = newWalletAmt;
    }

    function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv) external onlyOwner {
        _swapMin = _totalSupply * minVal / minDiv;
        _swapToknesMax = _totalSupply * maxVal / maxDiv;
        require(_swapToknesMax>=_swapMin, "Min-Max error");
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _balances[address(this)];
        if ( _taxTokenAvailable >= _swapMin && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapToknesMax ) { _taxTokenAvailable = _swapToknesMax; }
            
            _swapBackTokens(_taxTokenAvailable);
            
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _sendETHFee(_contractETHBalance); }
        }
    }

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

    function _sendETHFee(uint256 amount) private {
        _oasisclick.transfer(amount);
    }
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() 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);
}
interface IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}

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":"address","name":"_owner","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":"addOasisPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"launchOasis","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newowner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFees","type":"uint8"},{"internalType":"uint8","name":"sellFees","type":"uint8"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600180546001600160b01b031916750101fce7de6ad0d6ce14dc4e31fafcdc21f266b2fce61790556200003a6009600a62000427565b620000499062f424006200043e565b6002556200005a6009600a62000427565b620000699062f424006200043e565b600355620f42406200007e6009600a62000427565b6200008d9062f424006200043e565b6200009a9060076200043e565b620000a6919062000458565b6004556064620000b96009600a62000427565b620000c89062f424006200043e565b620000d59060016200043e565b620000e1919062000458565b600555600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600e805461ff001916905534801562000121575f80fd5b505f80546001600160a01b03191633179055600b54604080516315ab88c960e31b815290516001600160a01b03929092169163ad5c4648916004808201926020929091908290030181865afa1580156200017d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a3919062000478565b6001600160a01b0316608052620001bd6009600a62000427565b620001cc9062f424006200043e565b335f81815260066020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f80546001600160a01b0390811682526009602090815260408084208054600160ff19918216811790925530808752838720805483168417905582548616875283872080548316841790557fbaa441ac52505693dd98c7dd2f5bbf8f9349b7da9de72f9d52e5cac70e7da8ce8054831684179055825486168752600885528387208054831684179055865486168752600a909452828620805482168317905592855281852080548416821790558054909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c8054909216179055620004a0565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200036c57815f190482111562000350576200035062000318565b808516156200035e57918102915b93841c939080029062000331565b509250929050565b5f82620003845750600162000421565b816200039257505f62000421565b8160018114620003ab5760028114620003b657620003d6565b600191505062000421565b60ff841115620003ca57620003ca62000318565b50506001821b62000421565b5060208310610133831016604e8410600b8410161715620003fb575081810a62000421565b6200040783836200032c565b805f19048211156200041d576200041d62000318565b0290505b92915050565b5f6200043760ff84168362000374565b9392505050565b808202811582820484141762000421576200042162000318565b5f826200047357634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000489575f80fd5b81516001600160a01b038116811462000437575f80fd5b608051611939620004c05f395f81816108f501526113ad01526119395ff3fe608060405260043610610129575f3560e01c8063683ad2ec116100a8578063a8a936dd1161006d578063a8a936dd14610339578063a9059cbb14610358578063c3f70b5214610377578063dd62ed3e1461038b578063f2fde38b146103cf578063f8b45b05146103ee575f80fd5b8063683ad2ec1461027f57806370a082311461029e578063715018a6146102d25780638da5cb5b146102e657806395d89b411461030c575f80fd5b806328bac04c116100ee57806328bac04c146101fb5780632b14ca561461021a578063313ce56714610246578063470624021461025957806356e257c014610277575f80fd5b806301e4d94d1461013457806306fdde031461014a578063095ea7b31461018b57806318160ddd146101ba57806323b872dd146101dc575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b50610148610402565b005b348015610155575f80fd5b506040805180820190915260078152664f61736973466960c81b60208201525b6040516101829190611490565b60405180910390f35b348015610196575f80fd5b506101aa6101a53660046114ef565b6104be565b6040519015158152602001610182565b3480156101c5575f80fd5b506101ce61052a565b604051908152602001610182565b3480156101e7575f80fd5b506101aa6101f6366004611519565b610549565b348015610206575f80fd5b5061014861021536600461156d565b6105dd565b348015610225575f80fd5b50600154600160a01b900460ff165b60405160ff9091168152602001610182565b348015610251575f80fd5b506009610234565b348015610264575f80fd5b50600154600160a81b900460ff16610234565b61014861071b565b34801561028a575f80fd5b506101486102993660046115ae565b6109d3565b3480156102a9575f80fd5b506101ce6102b83660046115d6565b6001600160a01b03165f9081526006602052604090205490565b3480156102dd575f80fd5b50610148610a82565b3480156102f1575f80fd5b505f546040516001600160a01b039091168152602001610182565b348015610317575f80fd5b506040805180820190915260058152644f4153495360d81b6020820152610175565b348015610344575f80fd5b50610148610353366004611604565b610aef565b348015610363575f80fd5b506101aa6103723660046114ef565b610bd7565b348015610382575f80fd5b506002546101ce565b348015610396575f80fd5b506101ce6103a5366004611655565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b3480156103da575f80fd5b506101486103e93660046115d6565b610c32565b3480156103f9575f80fd5b506003546101ce565b5f546001600160a01b031633146104345760405162461bcd60e51b815260040161042b9061168c565b60405180910390fd5b60646104426009600a6117b7565b61044f9062f424006117c5565b61045a9060026117c5565b61046491906117dc565b60025560646104756009600a6117b7565b6104829062f424006117c5565b61048d9060026117c5565b61049791906117dc565b6003556001805461ffff60a01b191661074560a21b178155600e805460ff19169091179055565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105189086815260200190565b60405180910390a35060015b92915050565b5f6105376009600a6117b7565b6105449062f424006117c5565b905090565b5f61055384610cae565b6105925760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b604482015260640161042b565b6001600160a01b0384165f908152600760209081526040808320338452909152812080548492906105c49084906117fb565b909155506105d59050848484610d11565b949350505050565b5f546001600160a01b031633146106065760405162461bcd60e51b815260040161042b9061168c565b5f6103e861ffff841661061b6009600a6117b7565b6106289062f424006117c5565b61063291906117c5565b61063c91906117dc565b61064790600161180e565b90506002548110156106885760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b604482015260640161042b565b60028190555f6103e861ffff84166106a26009600a6117b7565b6106af9062f424006117c5565b6106b991906117c5565b6106c391906117dc565b6106ce90600161180e565b90506003548110156107135760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b604482015260640161042b565b600355505050565b5f546001600160a01b031633146107445760405162461bcd60e51b815260040161042b9061168c565b600e805461ff001916610100179055600c546001600160a01b0316156107995760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b604482015260640161042b565b600e5460ff16156107db5760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b604482015260640161042b565b5f3411806107e857505f47115b61081d5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b604482015260640161042b565b305f908152600660205260409020546108645760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b604482015260640161042b565b600b5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d89190611821565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063c9c65396906044016020604051808303815f875af1158015610945573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109699190611821565b600c80546001600160a01b0319166001600160a01b0392909216919091179055305f908152600660205260409020546109a29047610fe4565b600c546001600160a01b03165f908152600d60205260409020805460ff19166001179055600e805461ff0019169055565b5f546001600160a01b031633146109fc5760405162461bcd60e51b815260040161042b9061168c565b600f610a08828461183c565b60ff161115610a4e5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b604482015260640161042b565b6001805461ffff60a01b1916600160a81b60ff9485160260ff60a01b191617600160a01b9290931691909102919091179055565b5f546001600160a01b03163314610aab5760405162461bcd60e51b815260040161042b9061168c565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610b185760405162461bcd60e51b815260040161042b9061168c565b63ffffffff808416908516610b2f6009600a6117b7565b610b3c9062f424006117c5565b610b4691906117c5565b610b5091906117dc565b60045563ffffffff808216908316610b6a6009600a6117b7565b610b779062f424006117c5565b610b8191906117c5565b610b8b91906117dc565b60058190556004541115610bd15760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b604482015260640161042b565b50505050565b5f610be133610cae565b610c205760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b604482015260640161042b565b610c2b338484610d11565b9392505050565b5f546001600160a01b03163314610c5b5760405162461bcd60e51b815260040161042b9061168c565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600e545f90819060ff1615610cc557506001610524565b6001600160a01b0383165f9081526009602052604090205460ff168015610d0357506001600160a01b0383165f908152600a602052604090205460ff165b156105245750600192915050565b5f6001600160a01b038416610d685760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c6574000000000000604482015260640161042b565b600e5460ff16610df3576001600160a01b0384165f9081526009602052604090205460ff168015610db057506001600160a01b0384165f908152600a602052604090205460ff165b610df35760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b604482015260640161042b565b600e54610100900460ff16158015610e2257506001600160a01b0383165f908152600d602052604090205460ff165b8015610e3057506004548210155b15610e3d57610e3d611089565b6001600160a01b0384163014801590610e5f57506001600160a01b0383163014155b8015610e7857505f546001600160a01b03858116911614155b15610ec557610e888484846110f7565b610ec55760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b604482015260640161042b565b5f610ed18585856111ba565b90505f610ede82856117fb565b6001600160a01b0387165f9081526008602052604090205490915060ff1615610f0e57610f0b81856117fb565b93505b6001600160a01b0386165f9081526006602052604081208054869290610f359084906117fb565b9091555050305f9081526006602052604081208054849290610f5890849061180e565b90915550506001600160a01b0385165f9081526006602052604081208054839290610f8490849061180e565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610fd091815260200190565b60405180910390a350600195945050505050565b610fed826112ad565b600b545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af115801561105d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110829190611855565b5050505050565b600e805461ff001916610100179055305f9081526006602052604090205460045481108015906110bb5750600e5460ff165b156110e95760055481106110ce57506005545b6110d78161134f565b4780156110e7576110e781611455565b505b50600e805461ff0019169055565b600e545f9060019060ff16801561112657506001600160a01b0385165f908152600a602052604090205460ff16155b801561114a57506001600160a01b0384165f908152600a602052604090205460ff16155b156105d55760025483111561116057505f6105d5565b6001600160a01b0384165f908152600d602052604090205460ff161580156111ab57506003546001600160a01b0385165f908152600660205260409020546111a990859061180e565b115b156105d557505f949350505050565b600e545f90819060ff1615806111e757506001600160a01b0385165f9081526009602052604090205460ff165b8061120957506001600160a01b0384165f9081526009602052604090205460ff165b1561121557505f6105d5565b6001600160a01b0385165f908152600d602052604090205460ff16156112605760015460649061124f90600160a81b900460ff16856117c5565b61125991906117dc565b90506105d5565b6001600160a01b0384165f908152600d602052604090205460ff16156105d55760015460649061129a90600160a01b900460ff16856117c5565b6112a491906117dc565b95945050505050565b305f908152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561134c57305f818152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611358816112ad565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138b5761138b611880565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106113df576113df611880565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac947906114249085905f90869030904290600401611894565b5f604051808303815f87803b15801561143b575f80fd5b505af115801561144d573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561148c573d5f803e3d5ffd5b5050565b5f6020808352835180828501525f5b818110156114bb5785810183015185820160400152820161149f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461134c575f80fd5b5f8060408385031215611500575f80fd5b823561150b816114db565b946020939093013593505050565b5f805f6060848603121561152b575f80fd5b8335611536816114db565b92506020840135611546816114db565b929592945050506040919091013590565b803561ffff81168114611568575f80fd5b919050565b5f806040838503121561157e575f80fd5b61158783611557565b915061159560208401611557565b90509250929050565b803560ff81168114611568575f80fd5b5f80604083850312156115bf575f80fd5b6115c88361159e565b91506115956020840161159e565b5f602082840312156115e6575f80fd5b8135610c2b816114db565b803563ffffffff81168114611568575f80fd5b5f805f8060808587031215611617575f80fd5b611620856115f1565b935061162e602086016115f1565b925061163c604086016115f1565b915061164a606086016115f1565b905092959194509250565b5f8060408385031215611666575f80fd5b8235611671816114db565b91506020830135611681816114db565b809150509250929050565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561171157815f19048211156116f7576116f76116c3565b8085161561170457918102915b93841c93908002906116dc565b509250929050565b5f8261172757506001610524565b8161173357505f610524565b816001811461174957600281146117535761176f565b6001915050610524565b60ff841115611764576117646116c3565b50506001821b610524565b5060208310610133831016604e8410600b8410161715611792575081810a610524565b61179c83836116d7565b805f19048211156117af576117af6116c3565b029392505050565b5f610c2b60ff841683611719565b8082028115828204841417610524576105246116c3565b5f826117f657634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610524576105246116c3565b80820180821115610524576105246116c3565b5f60208284031215611831575f80fd5b8151610c2b816114db565b60ff8181168382160190811115610524576105246116c3565b5f805f60608486031215611867575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118e25784516001600160a01b0316835293830193918301916001016118bd565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220bc6a0650e3be24f349c13ada9685ea6f21a78164a608a59de31cb73ca935b4f164736f6c63430008150033

Deployed Bytecode

0x608060405260043610610129575f3560e01c8063683ad2ec116100a8578063a8a936dd1161006d578063a8a936dd14610339578063a9059cbb14610358578063c3f70b5214610377578063dd62ed3e1461038b578063f2fde38b146103cf578063f8b45b05146103ee575f80fd5b8063683ad2ec1461027f57806370a082311461029e578063715018a6146102d25780638da5cb5b146102e657806395d89b411461030c575f80fd5b806328bac04c116100ee57806328bac04c146101fb5780632b14ca561461021a578063313ce56714610246578063470624021461025957806356e257c014610277575f80fd5b806301e4d94d1461013457806306fdde031461014a578063095ea7b31461018b57806318160ddd146101ba57806323b872dd146101dc575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b50610148610402565b005b348015610155575f80fd5b506040805180820190915260078152664f61736973466960c81b60208201525b6040516101829190611490565b60405180910390f35b348015610196575f80fd5b506101aa6101a53660046114ef565b6104be565b6040519015158152602001610182565b3480156101c5575f80fd5b506101ce61052a565b604051908152602001610182565b3480156101e7575f80fd5b506101aa6101f6366004611519565b610549565b348015610206575f80fd5b5061014861021536600461156d565b6105dd565b348015610225575f80fd5b50600154600160a01b900460ff165b60405160ff9091168152602001610182565b348015610251575f80fd5b506009610234565b348015610264575f80fd5b50600154600160a81b900460ff16610234565b61014861071b565b34801561028a575f80fd5b506101486102993660046115ae565b6109d3565b3480156102a9575f80fd5b506101ce6102b83660046115d6565b6001600160a01b03165f9081526006602052604090205490565b3480156102dd575f80fd5b50610148610a82565b3480156102f1575f80fd5b505f546040516001600160a01b039091168152602001610182565b348015610317575f80fd5b506040805180820190915260058152644f4153495360d81b6020820152610175565b348015610344575f80fd5b50610148610353366004611604565b610aef565b348015610363575f80fd5b506101aa6103723660046114ef565b610bd7565b348015610382575f80fd5b506002546101ce565b348015610396575f80fd5b506101ce6103a5366004611655565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b3480156103da575f80fd5b506101486103e93660046115d6565b610c32565b3480156103f9575f80fd5b506003546101ce565b5f546001600160a01b031633146104345760405162461bcd60e51b815260040161042b9061168c565b60405180910390fd5b60646104426009600a6117b7565b61044f9062f424006117c5565b61045a9060026117c5565b61046491906117dc565b60025560646104756009600a6117b7565b6104829062f424006117c5565b61048d9060026117c5565b61049791906117dc565b6003556001805461ffff60a01b191661074560a21b178155600e805460ff19169091179055565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105189086815260200190565b60405180910390a35060015b92915050565b5f6105376009600a6117b7565b6105449062f424006117c5565b905090565b5f61055384610cae565b6105925760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b604482015260640161042b565b6001600160a01b0384165f908152600760209081526040808320338452909152812080548492906105c49084906117fb565b909155506105d59050848484610d11565b949350505050565b5f546001600160a01b031633146106065760405162461bcd60e51b815260040161042b9061168c565b5f6103e861ffff841661061b6009600a6117b7565b6106289062f424006117c5565b61063291906117c5565b61063c91906117dc565b61064790600161180e565b90506002548110156106885760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b604482015260640161042b565b60028190555f6103e861ffff84166106a26009600a6117b7565b6106af9062f424006117c5565b6106b991906117c5565b6106c391906117dc565b6106ce90600161180e565b90506003548110156107135760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b604482015260640161042b565b600355505050565b5f546001600160a01b031633146107445760405162461bcd60e51b815260040161042b9061168c565b600e805461ff001916610100179055600c546001600160a01b0316156107995760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b604482015260640161042b565b600e5460ff16156107db5760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b604482015260640161042b565b5f3411806107e857505f47115b61081d5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b604482015260640161042b565b305f908152600660205260409020546108645760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b604482015260640161042b565b600b5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d89190611821565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166024830152919091169063c9c65396906044016020604051808303815f875af1158015610945573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109699190611821565b600c80546001600160a01b0319166001600160a01b0392909216919091179055305f908152600660205260409020546109a29047610fe4565b600c546001600160a01b03165f908152600d60205260409020805460ff19166001179055600e805461ff0019169055565b5f546001600160a01b031633146109fc5760405162461bcd60e51b815260040161042b9061168c565b600f610a08828461183c565b60ff161115610a4e5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b604482015260640161042b565b6001805461ffff60a01b1916600160a81b60ff9485160260ff60a01b191617600160a01b9290931691909102919091179055565b5f546001600160a01b03163314610aab5760405162461bcd60e51b815260040161042b9061168c565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610b185760405162461bcd60e51b815260040161042b9061168c565b63ffffffff808416908516610b2f6009600a6117b7565b610b3c9062f424006117c5565b610b4691906117c5565b610b5091906117dc565b60045563ffffffff808216908316610b6a6009600a6117b7565b610b779062f424006117c5565b610b8191906117c5565b610b8b91906117dc565b60058190556004541115610bd15760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b604482015260640161042b565b50505050565b5f610be133610cae565b610c205760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b604482015260640161042b565b610c2b338484610d11565b9392505050565b5f546001600160a01b03163314610c5b5760405162461bcd60e51b815260040161042b9061168c565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600e545f90819060ff1615610cc557506001610524565b6001600160a01b0383165f9081526009602052604090205460ff168015610d0357506001600160a01b0383165f908152600a602052604090205460ff165b156105245750600192915050565b5f6001600160a01b038416610d685760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c6574000000000000604482015260640161042b565b600e5460ff16610df3576001600160a01b0384165f9081526009602052604090205460ff168015610db057506001600160a01b0384165f908152600a602052604090205460ff165b610df35760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b604482015260640161042b565b600e54610100900460ff16158015610e2257506001600160a01b0383165f908152600d602052604090205460ff165b8015610e3057506004548210155b15610e3d57610e3d611089565b6001600160a01b0384163014801590610e5f57506001600160a01b0383163014155b8015610e7857505f546001600160a01b03858116911614155b15610ec557610e888484846110f7565b610ec55760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b604482015260640161042b565b5f610ed18585856111ba565b90505f610ede82856117fb565b6001600160a01b0387165f9081526008602052604090205490915060ff1615610f0e57610f0b81856117fb565b93505b6001600160a01b0386165f9081526006602052604081208054869290610f359084906117fb565b9091555050305f9081526006602052604081208054849290610f5890849061180e565b90915550506001600160a01b0385165f9081526006602052604081208054839290610f8490849061180e565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610fd091815260200190565b60405180910390a350600195945050505050565b610fed826112ad565b600b545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af115801561105d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110829190611855565b5050505050565b600e805461ff001916610100179055305f9081526006602052604090205460045481108015906110bb5750600e5460ff165b156110e95760055481106110ce57506005545b6110d78161134f565b4780156110e7576110e781611455565b505b50600e805461ff0019169055565b600e545f9060019060ff16801561112657506001600160a01b0385165f908152600a602052604090205460ff16155b801561114a57506001600160a01b0384165f908152600a602052604090205460ff16155b156105d55760025483111561116057505f6105d5565b6001600160a01b0384165f908152600d602052604090205460ff161580156111ab57506003546001600160a01b0385165f908152600660205260409020546111a990859061180e565b115b156105d557505f949350505050565b600e545f90819060ff1615806111e757506001600160a01b0385165f9081526009602052604090205460ff165b8061120957506001600160a01b0384165f9081526009602052604090205460ff165b1561121557505f6105d5565b6001600160a01b0385165f908152600d602052604090205460ff16156112605760015460649061124f90600160a81b900460ff16856117c5565b61125991906117dc565b90506105d5565b6001600160a01b0384165f908152600d602052604090205460ff16156105d55760015460649061129a90600160a01b900460ff16856117c5565b6112a491906117dc565b95945050505050565b305f908152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561134c57305f818152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611358816112ad565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138b5761138b611880565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106113df576113df611880565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac947906114249085905f90869030904290600401611894565b5f604051808303815f87803b15801561143b575f80fd5b505af115801561144d573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561148c573d5f803e3d5ffd5b5050565b5f6020808352835180828501525f5b818110156114bb5785810183015185820160400152820161149f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461134c575f80fd5b5f8060408385031215611500575f80fd5b823561150b816114db565b946020939093013593505050565b5f805f6060848603121561152b575f80fd5b8335611536816114db565b92506020840135611546816114db565b929592945050506040919091013590565b803561ffff81168114611568575f80fd5b919050565b5f806040838503121561157e575f80fd5b61158783611557565b915061159560208401611557565b90509250929050565b803560ff81168114611568575f80fd5b5f80604083850312156115bf575f80fd5b6115c88361159e565b91506115956020840161159e565b5f602082840312156115e6575f80fd5b8135610c2b816114db565b803563ffffffff81168114611568575f80fd5b5f805f8060808587031215611617575f80fd5b611620856115f1565b935061162e602086016115f1565b925061163c604086016115f1565b915061164a606086016115f1565b905092959194509250565b5f8060408385031215611666575f80fd5b8235611671816114db565b91506020830135611681816114db565b809150509250929050565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561171157815f19048211156116f7576116f76116c3565b8085161561170457918102915b93841c93908002906116dc565b509250929050565b5f8261172757506001610524565b8161173357505f610524565b816001811461174957600281146117535761176f565b6001915050610524565b60ff841115611764576117646116c3565b50506001821b610524565b5060208310610133831016604e8410600b8410161715611792575081810a610524565b61179c83836116d7565b805f19048211156117af576117af6116c3565b029392505050565b5f610c2b60ff841683611719565b8082028115828204841417610524576105246116c3565b5f826117f657634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610524576105246116c3565b80820180821115610524576105246116c3565b5f60208284031215611831575f80fd5b8151610c2b816114db565b60ff8181168382160190811115610524576105246116c3565b5f805f60608486031215611867575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118e25784516001600160a01b0316835293830193918301916001016118bd565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220bc6a0650e3be24f349c13ada9685ea6f21a78164a608a59de31cb73ca935b4f164736f6c63430008150033

Deployed Bytecode Sourcemap

1782:9548:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5616:230;;;;;;;;;;;;;:::i;:::-;;4104:80;;;;;;;;;;-1:-1:-1;4176:5:0;;;;;;;;;;;;-1:-1:-1;;;4176:5:0;;;;4104:80;;;;;;;:::i;:::-;;;;;;;;4552:211;;;;;;;;;;-1:-1:-1;4552:211:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4552:211:0;1023:187:1;4010:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;4010:88:0;1215:177:1;4997:298:0;;;;;;;;;;-1:-1:-1;4997:298:0;;;;;:::i;:::-;;:::i;9617:447::-;;;;;;;;;;-1:-1:-1;9617:447:0;;;;;:::i;:::-;;:::i;9128:70::-;;;;;;;;;;-1:-1:-1;9185:10:0;;-1:-1:-1;;;9185:10:0;;;;9128:70;;;2455:4:1;2443:17;;;2425:36;;2413:2;2398:18;9128:70:0;2283:184:1;3924:80:0;;;;;;;;;;-1:-1:-1;1955:1:0;3924:80;;9054:68;;;;;;;;;;-1:-1:-1;9110:9:0;;-1:-1:-1;;;9110:9:0;;;;9054:68;;5854:505;;;:::i;9206:206::-;;;;;;;;;;-1:-1:-1;9206:206:0;;;;;:::i;:::-;;:::i;4280:115::-;;;;;;;;;;-1:-1:-1;4280:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;4374:18:0;4346:7;4374:18;;;:9;:18;;;;;;;4280:115;786:130;;;;;;;;;;;;;:::i;558:65::-;;;;;;;;;;-1:-1:-1;596:7:0;614:6;558:65;;-1:-1:-1;;;;;614:6:0;;;3288:51:1;;3276:2;3261:18;558:65:0;3142:203:1;4190:84:0;;;;;;;;;;-1:-1:-1;4264:7:0;;;;;;;;;;;;-1:-1:-1;;;4264:7:0;;;;4190:84;;10072:279;;;;;;;;;;-1:-1:-1;10072:279:0;;;;;:::i;:::-;;:::i;4771:218::-;;;;;;;;;;-1:-1:-1;4771:218:0;;;;;:::i;:::-;;:::i;9520:89::-;;;;;;;;;;-1:-1:-1;9597:9:0;;9520:89;;4401:143;;;;;;;;;;-1:-1:-1;4401:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;4513:19:0;;;4485:7;4513:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4401:143;629:151;;;;;;;;;;-1:-1:-1;629:151:0;;;;;:::i;:::-;;:::i;9422:92::-;;;;;;;;;;-1:-1:-1;9494:17:0;;9422:92;;5616:230;423:6;;-1:-1:-1;;;;;423:6:0;409:10;:20;401:57;;;;-1:-1:-1;;;401:57:0;;;;;;;:::i;:::-;;;;;;;;;5700:3:::1;2015:13;1955:1;2015:2;:13;:::i;:::-;2003:26;::::0;:8:::1;:26;:::i;:::-;5681:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;5669:9;:34:::0;5754:3:::1;2015:13;1955:1;2015:2;:13;:::i;:::-;2003:26;::::0;:8:::1;:26;:::i;:::-;5735:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;5715:17;:42:::0;5768:9:::1;:14:::0;;-1:-1:-1;;;;5793:15:0;-1:-1:-1;;;5793:15:0;;;5819:12:::1;:19:::0;;-1:-1:-1;;5819:19:0::1;::::0;;::::1;::::0;;5616:230::o;4552:211::-;4656:10;4627:4;4644:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4644:32:0;;;;;;;;;;:41;;;4701:37;4627:4;;4644:32;;4701:37;;;;4679:6;1361:25:1;;1349:2;1334:18;;1215:177;4701:37:0;;;;;;;;-1:-1:-1;4756:4:0;4552:211;;;;;:::o;4010:88::-;4065:7;2015:13;1955:1;2015:2;:13;:::i;:::-;2003:26;;:8;:26;:::i;:::-;4076:19;;4010:88;:::o;4997:298::-;5100:4;5125:29;5143:10;5125:17;:29::i;:::-;5117:58;;;;-1:-1:-1;;;5117:58:0;;7042:2:1;5117:58:0;;;7024:21:1;7081:2;7061:18;;;7054:30;-1:-1:-1;;;7100:18:1;;;7093:46;7156:18;;5117:58:0;6840:340:1;5117:58:0;-1:-1:-1;;;;;5186:23:0;;;;;;:11;:23;;;;;;;;5210:10;5186:35;;;;;;;:45;;5225:6;;5186:23;:45;;5225:6;;5186:45;:::i;:::-;;;;-1:-1:-1;5249:43:0;;-1:-1:-1;5263:10:0;5275:8;5285:6;5249:13;:43::i;:::-;5242:50;4997:298;-1:-1:-1;;;;4997:298:0:o;9617:447::-;423:6;;-1:-1:-1;;;;;423:6:0;409:10;:20;401:57;;;;-1:-1:-1;;;401:57:0;;;;;;;:::i;:::-;9719:16:::1;9772:4;9738:31;::::0;::::1;2015:13;1955:1;2015:2;:13;:::i;:::-;2003:26;::::0;:8:::1;:26;:::i;:::-;9738:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;9779:1:::1;9738:42;:::i;:::-;9719:61;;9811:9;;9799:8;:21;;9791:44;;;::::0;-1:-1:-1;;;9791:44:0;;7650:2:1;9791:44:0::1;::::0;::::1;7632:21:1::0;7689:2;7669:18;;;7662:30;-1:-1:-1;;;7708:18:1;;;7701:40;7758:18;;9791:44:0::1;7448:334:1::0;9791:44:0::1;9846:9;:20:::0;;;9877::::1;9934:4;9900:31;::::0;::::1;2015:13;1955:1;2015:2;:13;:::i;:::-;2003:26;::::0;:8:::1;:26;:::i;:::-;9900:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;9941:1:::1;9900:42;:::i;:::-;9877:65;;9977:17;;9961:12;:33;;9953:60;;;::::0;-1:-1:-1;;;9953:60:0;;7989:2:1;9953:60:0::1;::::0;::::1;7971:21:1::0;8028:2;8008:18;;;8001:30;-1:-1:-1;;;8047:18:1;;;8040:44;8101:18;;9953:60:0::1;7787:338:1::0;9953:60:0::1;10024:17;:32:::0;-1:-1:-1;;;9617:447:0:o;5854:505::-;423:6;;-1:-1:-1;;;;;423:6:0;409:10;:20;401:57;;;;-1:-1:-1;;;401:57:0;;;;;;;:::i;:::-;3163:7:::1;:14:::0;;-1:-1:-1;;3163:14:0::1;;;::::0;;5936:6:::2;::::0;-1:-1:-1;;;;;5936:6:0::2;:20:::0;5928:43:::2;;;::::0;-1:-1:-1;;;5928:43:0;;8332:2:1;5928:43:0::2;::::0;::::2;8314:21:1::0;8371:2;8351:18;;;8344:30;-1:-1:-1;;;8390:18:1;;;8383:40;8440:18;;5928:43:0::2;8130:334:1::0;5928:43:0::2;5991:12;::::0;::::2;;5990:13;5982:38;;;::::0;-1:-1:-1;;;5982:38:0;;8671:2:1;5982:38:0::2;::::0;::::2;8653:21:1::0;8710:2;8690:18;;;8683:30;-1:-1:-1;;;8729:18:1;;;8722:42;8781:18;;5982:38:0::2;8469:336:1::0;5982:38:0::2;6051:1;6039:9;:13;:40;;;;6078:1;6056:21;:23;6039:40;6031:59;;;::::0;-1:-1:-1;;;6031:59:0;;9012:2:1;6031:59:0::2;::::0;::::2;8994:21:1::0;9051:1;9031:18;;;9024:29;-1:-1:-1;;;9069:18:1;;;9062:36;9115:18;;6031:59:0::2;8810:329:1::0;6031:59:0::2;6127:4;6134:1;6109:24:::0;;;:9:::2;:24;::::0;;;;;6101:48:::2;;;::::0;-1:-1:-1;;;6101:48:0;;9346:2:1;6101:48:0::2;::::0;::::2;9328:21:1::0;9385:1;9365:18;;;9358:29;-1:-1:-1;;;9403:18:1;;;9396:39;9452:18;;6101:48:0::2;9144:332:1::0;6101:48:0::2;6187:16;;;;;;;;;-1:-1:-1::0;;;;;6187:16:0::2;-1:-1:-1::0;;;;;6187:24:0::2;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6169:77;::::0;-1:-1:-1;;;6169:77:0;;6234:4:::2;6169:77;::::0;::::2;9949:34:1::0;-1:-1:-1;;;;;6241:4:0::2;10019:15:1::0;;9999:18;;;9992:43;6169:56:0;;;::::2;::::0;::::2;::::0;9884:18:1;;6169:77:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6160:6;:86:::0;;-1:-1:-1;;;;;;6160:86:0::2;-1:-1:-1::0;;;;;6160:86:0;;;::::2;::::0;;;::::2;::::0;;6289:4:::2;-1:-1:-1::0;6271:24:0;;;:9:::2;:24;::::0;;;;;6257:62:::2;::::0;6297:21:::2;6257:13;:62::i;:::-;6337:6;::::0;-1:-1:-1;;;;;6337:6:0::2;6330:14;::::0;;;:6:::2;:14;::::0;;;;:21;;-1:-1:-1;;6330:21:0::2;6347:4;6330:21;::::0;;3192:7:::1;:15:::0;;-1:-1:-1;;3192:15:0::1;::::0;;5854:505::o;9206:206::-;423:6;;-1:-1:-1;;;;;423:6:0;409:10;:20;401:57;;;;-1:-1:-1;;;401:57:0;;;;;;;:::i;:::-;9317:2:::1;9295:18;9305:8:::0;9295:7;:18:::1;:::i;:::-;:24;;;;9287:55;;;::::0;-1:-1:-1;;;9287:55:0;;10401:2:1;9287:55:0::1;::::0;::::1;10383:21:1::0;10440:2;10420:18;;;10413:30;-1:-1:-1;;;10459:18:1;;;10452:48;10517:18;;9287:55:0::1;10199:342:1::0;9287:55:0::1;9353:9;:19:::0;;-1:-1:-1;;;;9383:21:0;-1:-1:-1;;;9353:19:0::1;::::0;;::::1;;-1:-1:-1::0;;;;9383:21:0;;-1:-1:-1;;;9383:21:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;9206:206::o;786:130::-;423:6;;-1:-1:-1;;;;;423:6:0;409:10;:20;401:57;;;;-1:-1:-1;;;401:57:0;;;;;;;:::i;:::-;863:1:::1;846:19:::0;;-1:-1:-1;;;;;;846:19:0::1;::::0;;881:32:::1;::::0;3288:51:1;;;881:32:0::1;::::0;3276:2:1;3261:18;881:32:0::1;;;;;;;786:130::o:0;10072:279::-;423:6;;-1:-1:-1;;;;;423:6:0;409:10;:20;401:57;;;;-1:-1:-1;;;401:57:0;;;;;;;:::i;:::-;10194:30:::1;::::0;;::::1;::::0;:21;::::1;2015:13;1955:1;2015:2;:13;:::i;:::-;2003:26;::::0;:8:::1;:26;:::i;:::-;10194:21;;;;:::i;:::-;:30;;;;:::i;:::-;10183:8;:41:::0;10252:30:::1;::::0;;::::1;::::0;:21;::::1;2015:13;1955:1;2015:2;:13;:::i;:::-;2003:26;::::0;:8:::1;:26;:::i;:::-;10252:21;;;;:::i;:::-;:30;;;;:::i;:::-;10235:14;:47:::0;;;10317:8:::1;::::0;-1:-1:-1;10301:24:0::1;10293:50;;;::::0;-1:-1:-1;;;10293:50:0;;10748:2:1;10293:50:0::1;::::0;::::1;10730:21:1::0;10787:2;10767:18;;;10760:30;-1:-1:-1;;;10806:18:1;;;10799:43;10859:18;;10293:50:0::1;10546:337:1::0;10293:50:0::1;10072:279:::0;;;;:::o;4771:218::-;4850:4;4875:29;4893:10;4875:17;:29::i;:::-;4867:58;;;;-1:-1:-1;;;4867:58:0;;7042:2:1;4867:58:0;;;7024:21:1;7081:2;7061:18;;;7054:30;-1:-1:-1;;;7100:18:1;;;7093:46;7156:18;;4867:58:0;6840:340:1;4867:58:0;4943:43;4957:10;4969:8;4979:6;4943:13;:43::i;:::-;4936:50;4771:218;-1:-1:-1;;;4771:218:0:o;629:151::-;423:6;;-1:-1:-1;;;;;423:6:0;409:10;:20;401:57;;;;-1:-1:-1;;;401:57:0;;;;;;;:::i;:::-;713:6:::1;:17:::0;;-1:-1:-1;;;;;;713:17:0::1;-1:-1:-1::0;;;;;713:17:0;::::1;::::0;;::::1;::::0;;;747:30:::1;::::0;3288:51:1;;;747:30:0::1;::::0;3276:2:1;3261:18;747:30:0::1;;;;;;;629:151:::0;:::o;8212:310::-;8337:12;;8281:4;;;;8337:12;;8332:151;;;-1:-1:-1;8368:4:0;8332:151;;;-1:-1:-1;;;;;8395:29:0;;;;;;:17;:29;;;;;;;;:63;;;;-1:-1:-1;;;;;;8428:30:0;;;;;;:18;:30;;;;;;;;8395:63;8391:92;;;-1:-1:-1;8476:4:0;8503:11;8212:310;-1:-1:-1;;8212:310:0:o;6627:985::-;6718:4;-1:-1:-1;;;;;6743:20:0;;6735:59;;;;-1:-1:-1;;;6735:59:0;;11306:2:1;6735:59:0;;;11288:21:1;11345:2;11325:18;;;11318:30;11384:28;11364:18;;;11357:56;11430:18;;6735:59:0;11104:350:1;6735:59:0;6810:12;;;;6805:112;;-1:-1:-1;;;;;6834:25:0;;;;;;:17;:25;;;;;;;;:55;;;;-1:-1:-1;;;;;;6863:26:0;;;;;;:18;:26;;;;;;;;6834:55;6826:88;;;;-1:-1:-1;;;6826:88:0;;11661:2:1;6826:88:0;;;11643:21:1;11700:2;11680:18;;;11673:30;-1:-1:-1;;;11719:18:1;;;11712:50;11779:18;;6826:88:0;11459:344:1;6826:88:0;6933:7;;;;;;;6932:8;:28;;;;-1:-1:-1;;;;;;6944:16:0;;;;;;:6;:16;;;;;;;;6932:28;:50;;;;;6974:8;;6964:6;:18;;6932:50;6927:82;;;6986:20;:18;:20::i;:::-;-1:-1:-1;;;;;7026:23:0;;7044:4;7026:23;;;;:52;;-1:-1:-1;;;;;;7053:25:0;;7073:4;7053:25;;7026:52;:72;;;;-1:-1:-1;7092:6:0;;-1:-1:-1;;;;;7082:16:0;;;7092:6;;7082:16;;7026:72;7021:174;;;7125:38;7138:6;7146:8;7156:6;7125:12;:38::i;:::-;7117:65;;;;-1:-1:-1;;;7117:65:0;;12010:2:1;7117:65:0;;;11992:21:1;12049:2;12029:18;;;12022:30;-1:-1:-1;;;12068:18:1;;;12061:44;12122:18;;7117:65:0;11808:338:1;7117:65:0;7207:18;7228:37;7240:6;7248:8;7258:6;7228:11;:37::i;:::-;7207:58;-1:-1:-1;7276:23:0;7302:19;7207:58;7302:6;:19;:::i;:::-;-1:-1:-1;;;;;7335:26:0;;;;;;:18;:26;;;;;;7276:45;;-1:-1:-1;7335:26:0;;7332:64;;;7372:24;7381:15;7372:6;:24;:::i;:::-;7363:33;;7332:64;-1:-1:-1;;;;;7407:17:0;;;;;;:9;:17;;;;;:27;;7428:6;;7407:17;:27;;7428:6;;7407:27;:::i;:::-;;;;-1:-1:-1;;7463:4:0;7445:24;;;;:9;:24;;;;;:38;;7473:10;;7445:24;:38;;7473:10;;7445:38;:::i;:::-;;;;-1:-1:-1;;;;;;;7494:19:0;;;;;;:9;:19;;;;;:38;;7517:15;;7494:19;:38;;7517:15;;7494:38;:::i;:::-;;;;;;;;7565:8;-1:-1:-1;;;;;7548:34:0;7557:6;-1:-1:-1;;;;;7548:34:0;;7575:6;7548:34;;;;1361:25:1;;1349:2;1334:18;;1215:177;7548:34:0;;;;;;;;-1:-1:-1;7600:4:0;;6627:985;-1:-1:-1;;;;;6627:985:0:o;6367:252::-;6455:28;6470:12;6455:14;:28::i;:::-;6494:16;;;6586:6;;6494:117;;-1:-1:-1;;;6494:117:0;;6559:4;6494:117;;;12492:34:1;12542:18;;;12535:34;;;12585:18;;;12578:34;;;12628:18;;;12621:34;;;;-1:-1:-1;;;;;6586:6:0;;;12671:19:1;;;12664:44;6594:15:0;12724:19:1;;;12717:35;6494:16:0;;;;:32;;6534:13;;12426:19:1;;6494:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6367:252;;:::o;10359:519::-;3163:7;:14;;-1:-1:-1;;3163:14:0;;;;;10467:4:::1;3163:14:::0;10449:24;;;:9:::1;:24;::::0;;;;;10511:8:::1;::::0;10489:30;::::1;::::0;::::1;::::0;:46:::1;;-1:-1:-1::0;10523:12:0::1;::::0;::::1;;10489:46;10484:387;;;10580:14;;10558:18;:36;10553:84;;-1:-1:-1::0;10620:14:0::1;::::0;10553:84:::1;10665:35;10681:18;10665:15;:35::i;:::-;10759:21;10798:23:::0;;10795:65:::1;;10825:32;10837:19;10825:11;:32::i;:::-;10538:333;10484:387;-1:-1:-1::0;3192:7:0;:15;;-1:-1:-1;;3192:15:0;;;10359:519::o;7620:584::-;7788:12;;7727:4;;7768;;7788:12;;:47;;;;-1:-1:-1;;;;;;7805:30:0;;;;;;:18;:30;;;;;;;;7804:31;7788:47;:80;;;;-1:-1:-1;;;;;;7840:28:0;;;;;;:18;:28;;;;;;;;7839:29;7788:80;7783:380;;;7908:9;;7891:14;:26;7886:266;;;-1:-1:-1;7959:5:0;7886:266;;;-1:-1:-1;;;;;8024:16:0;;;;;;:6;:16;;;;;;;;8023:17;:79;;;;-1:-1:-1;8084:17:0;;-1:-1:-1;;;;;8045:19:0;;;;;;:9;:19;;;;;;:36;;8067:14;;8045:36;:::i;:::-;:56;8023:79;8000:152;;;-1:-1:-1;8144:5:0;8180:16;7620:584;-1:-1:-1;;;;7620:584:0:o;8530:516::-;8693:12;;8629:7;;;;8693:12;;8692:13;;:46;;-1:-1:-1;;;;;;8709:29:0;;;;;;:17;:29;;;;;;;;8692:46;:78;;;-1:-1:-1;;;;;;8742:28:0;;;;;;:17;:28;;;;;;;;8692:78;8687:323;;;-1:-1:-1;8801:1:0;8687:323;;;-1:-1:-1;;;;;8826:18:0;;;;;;:6;:18;;;;;;;;8821:189;;;8884:9;;8896:3;;8875:18;;-1:-1:-1;;;8884:9:0;;;;8875:6;:18;:::i;:::-;:24;;;;:::i;:::-;8863:36;;8821:189;;;-1:-1:-1;;;;;8924:17:0;;;;;;:6;:17;;;;;;;;8919:91;;;8981:10;;8994:3;;8972:19;;-1:-1:-1;;;8981:10:0;;;;8972:6;:19;:::i;:::-;:25;;;;:::i;:::-;8960:37;8530:516;-1:-1:-1;;;;;8530:516:0:o;5303:305::-;5394:4;5374:26;;;;:11;:26;;;;;;;;2802:42;5374;;;;;;;;:57;-1:-1:-1;5369:232:0;;;5469:4;5449:26;;;;:11;:26;;;;;;;;2802:42;5449;;;;;;;;;;-1:-1:-1;;5449:62:0;;;;5531:58;;1361:25:1;;;2802:42:0;;5469:4;5531:58;;1334:18:1;5531:58:0;;;;;;;5369:232;5303:305;:::o;10886:341::-;10951:27;10966:11;10951:14;:27::i;:::-;11013:16;;;11027:1;11013:16;;;;;;;;10989:21;;11013:16;;;;;;;;;;-1:-1:-1;11013:16:0;10989:40;;11059:4;11040;11045:1;11040:7;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;11040:25:0;;;-1:-1:-1;;;;;11040:25:0;;;;;11086:4;11076;11081:1;11076:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11076:14:0;;;:7;;;;;;;;;:14;11102:16;;:117;;-1:-1:-1;;;11102:117:0;;:16;;;:67;;:117;;11170:11;;11102:16;;11184:4;;11197;;11203:15;;11102:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10940:287;10886:341;:::o;11235:92::-;11291:11;;:28;;-1:-1:-1;;;;;11291:11:0;;;;:28;;;;;11312:6;;11291:11;:28;:11;:28;11312:6;11291:11;:28;;;;;;;;;;;;;;;;;;;;;11235:92;:::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:159::-;1925:20;;1985:6;1974:18;;1964:29;;1954:57;;2007:1;2004;1997:12;1954:57;1858:159;;;:::o;2022:256::-;2088:6;2096;2149:2;2137:9;2128:7;2124:23;2120:32;2117:52;;;2165:1;2162;2155:12;2117:52;2188:28;2206:9;2188:28;:::i;:::-;2178:38;;2235:37;2268:2;2257:9;2253:18;2235:37;:::i;:::-;2225:47;;2022:256;;;;;:::o;2472:156::-;2538:20;;2598:4;2587:16;;2577:27;;2567:55;;2618:1;2615;2608:12;2633:252;2697:6;2705;2758:2;2746:9;2737:7;2733:23;2729:32;2726:52;;;2774:1;2771;2764:12;2726:52;2797:27;2814:9;2797:27;:::i;:::-;2787:37;;2843:36;2875:2;2864:9;2860:18;2843:36;:::i;2890:247::-;2949:6;3002:2;2990:9;2981:7;2977:23;2973:32;2970:52;;;3018:1;3015;3008:12;2970:52;3057:9;3044:23;3076:31;3101:5;3076:31;:::i;3350:163::-;3417:20;;3477:10;3466:22;;3456:33;;3446:61;;3503:1;3500;3493:12;3518:401;3600:6;3608;3616;3624;3677:3;3665:9;3656:7;3652:23;3648:33;3645:53;;;3694:1;3691;3684:12;3645:53;3717:28;3735:9;3717:28;:::i;:::-;3707:38;;3764:37;3797:2;3786:9;3782:18;3764:37;:::i;:::-;3754:47;;3820:37;3853:2;3842:9;3838:18;3820:37;:::i;:::-;3810:47;;3876:37;3909:2;3898:9;3894:18;3876:37;:::i;:::-;3866:47;;3518:401;;;;;;;:::o;3924:388::-;3992:6;4000;4053:2;4041:9;4032:7;4028:23;4024:32;4021:52;;;4069:1;4066;4059:12;4021:52;4108:9;4095:23;4127:31;4152:5;4127:31;:::i;:::-;4177:5;-1:-1:-1;4234:2:1;4219:18;;4206:32;4247:33;4206:32;4247:33;:::i;:::-;4299:7;4289:17;;;3924:388;;;;;:::o;4577:348::-;4779:2;4761:21;;;4818:2;4798:18;;;4791:30;4857:26;4852:2;4837:18;;4830:54;4916:2;4901:18;;4577:348::o;4930:127::-;4991:10;4986:3;4982:20;4979:1;4972:31;5022:4;5019:1;5012:15;5046:4;5043:1;5036:15;5062:422;5151:1;5194:5;5151:1;5208:270;5229:7;5219:8;5216:21;5208:270;;;5288:4;5284:1;5280:6;5276:17;5270:4;5267:27;5264:53;;;5297:18;;:::i;:::-;5347:7;5337:8;5333:22;5330:55;;;5367:16;;;;5330:55;5446:22;;;;5406:15;;;;5208:270;;;5212:3;5062:422;;;;;:::o;5489:806::-;5538:5;5568:8;5558:80;;-1:-1:-1;5609:1:1;5623:5;;5558:80;5657:4;5647:76;;-1:-1:-1;5694:1:1;5708:5;;5647:76;5739:4;5757:1;5752:59;;;;5825:1;5820:130;;;;5732:218;;5752:59;5782:1;5773:10;;5796:5;;;5820:130;5857:3;5847:8;5844:17;5841:43;;;5864:18;;:::i;:::-;-1:-1:-1;;5920:1:1;5906:16;;5935:5;;5732:218;;6034:2;6024:8;6021:16;6015:3;6009:4;6006:13;6002:36;5996:2;5986:8;5983:16;5978:2;5972:4;5969:12;5965:35;5962:77;5959:159;;;-1:-1:-1;6071:19:1;;;6103:5;;5959:159;6150:34;6175:8;6169:4;6150:34;:::i;:::-;6220:6;6216:1;6212:6;6208:19;6199:7;6196:32;6193:58;;;6231:18;;:::i;:::-;6269:20;;5489:806;-1:-1:-1;;;5489:806:1:o;6300:140::-;6358:5;6387:47;6428:4;6418:8;6414:19;6408:4;6387:47;:::i;6445:168::-;6518:9;;;6549;;6566:15;;;6560:22;;6546:37;6536:71;;6587:18;;:::i;6618:217::-;6658:1;6684;6674:132;;6728:10;6723:3;6719:20;6716:1;6709:31;6763:4;6760:1;6753:15;6791:4;6788:1;6781:15;6674:132;-1:-1:-1;6820:9:1;;6618:217::o;7185:128::-;7252:9;;;7273:11;;;7270:37;;;7287:18;;:::i;7318:125::-;7383:9;;;7404:10;;;7401:36;;;7417:18;;:::i;9481:251::-;9551:6;9604:2;9592:9;9583:7;9579:23;9575:32;9572:52;;;9620:1;9617;9610:12;9572:52;9652:9;9646:16;9671:31;9696:5;9671:31;:::i;10046:148::-;10134:4;10113:12;;;10127;;;10109:31;;10152:13;;10149:39;;;10168:18;;:::i;12763:306::-;12851:6;12859;12867;12920:2;12908:9;12899:7;12895:23;12891:32;12888:52;;;12936:1;12933;12926:12;12888:52;12965:9;12959:16;12949:26;;13015:2;13004:9;13000:18;12994:25;12984:35;;13059:2;13048:9;13044:18;13038:25;13028:35;;12763:306;;;;;:::o;13206:127::-;13267:10;13262:3;13258:20;13255:1;13248:31;13298:4;13295:1;13288:15;13322:4;13319:1;13312:15;13338:980;13600:4;13648:3;13637:9;13633:19;13679:6;13668:9;13661:25;13705:2;13743:6;13738:2;13727:9;13723:18;13716:34;13786:3;13781:2;13770:9;13766:18;13759:31;13810:6;13845;13839:13;13876:6;13868;13861:22;13914:3;13903:9;13899:19;13892:26;;13953:2;13945:6;13941:15;13927:29;;13974:1;13984:195;13998:6;13995:1;13992:13;13984:195;;;14063:13;;-1:-1:-1;;;;;14059:39:1;14047:52;;14154:15;;;;14119:12;;;;14095:1;14013:9;13984:195;;;-1:-1:-1;;;;;;;14235:32:1;;;;14230:2;14215:18;;14208:60;-1:-1:-1;;;14299:3:1;14284:19;14277:35;14196:3;13338:980;-1:-1:-1;;;13338:980:1:o

Swarm Source

ipfs://bc6a0650e3be24f349c13ada9685ea6f21a78164a608a59de31cb73ca935b4f1

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.