ETH Price: $3,694.93 (+1.13%)

Contract

0xBB62a5CA15e657dbf85d78A49de11F2E127CA641
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve212989202024-11-30 7:11:4721 hrs ago1732950707IN
0xBB62a5CA...E127CA641
0 ETH0.000357257.670173
Approve210062732024-10-20 10:44:2341 days ago1729421063IN
0xBB62a5CA...E127CA641
0 ETH0.000223499.2
Approve202063342024-06-30 18:36:47153 days ago1719772607IN
0xBB62a5CA...E127CA641
0 ETH0.00008933.68513255
Transfer198240132024-05-08 8:00:35206 days ago1715155235IN
0xBB62a5CA...E127CA641
0 ETH0.000364175.28111697
Approve195219732024-03-26 23:53:59249 days ago1711497239IN
0xBB62a5CA...E127CA641
0 ETH0.0006930928.60113816
Approve190994132024-01-27 17:29:47308 days ago1706376587IN
0xBB62a5CA...E127CA641
0 ETH0.0003165713.03160666
Approve190272902024-01-17 14:46:23318 days ago1705502783IN
0xBB62a5CA...E127CA641
0 ETH0.0008883736.65983517
Approve189683102024-01-09 8:46:59326 days ago1704790019IN
0xBB62a5CA...E127CA641
0 ETH0.0008417218.09497077
Approve189595772024-01-08 3:15:47328 days ago1704683747IN
0xBB62a5CA...E127CA641
0 ETH0.0014919332.07286282
Approve189595542024-01-08 3:10:59328 days ago1704683459IN
0xBB62a5CA...E127CA641
0 ETH0.0012379526.57869222
Transfer189420102024-01-05 15:38:35330 days ago1704469115IN
0xBB62a5CA...E127CA641
0 ETH0.0021676131.433862
Approve189338212024-01-04 11:58:35331 days ago1704369515IN
0xBB62a5CA...E127CA641
0 ETH0.0004098916.91458351
Approve188332092023-12-21 9:00:11345 days ago1703149211IN
0xBB62a5CA...E127CA641
0 ETH0.0017459137.48452598
Approve187884732023-12-15 2:14:47352 days ago1702606487IN
0xBB62a5CA...E127CA641
0 ETH0.0008118933.50359039
Approve184704852023-10-31 13:44:35396 days ago1698759875IN
0xBB62a5CA...E127CA641
0 ETH0.0006204125.53875895
Approve184234082023-10-24 23:31:47403 days ago1698190307IN
0xBB62a5CA...E127CA641
0 ETH0.0006115125.17229452
Approve182188412023-09-26 8:44:11431 days ago1695717851IN
0xBB62a5CA...E127CA641
0 ETH0.0003585414.79574161
Approve182093362023-09-25 0:49:23433 days ago1695602963IN
0xBB62a5CA...E127CA641
0 ETH0.000328327.10223102
Approve181285752023-09-13 16:29:11444 days ago1694622551IN
0xBB62a5CA...E127CA641
0 ETH0.0003026212.48802388
Transfer181238642023-09-13 0:37:59445 days ago1694565479IN
0xBB62a5CA...E127CA641
0 ETH0.000660969.58674121
Approve180994302023-09-09 14:29:11448 days ago1694269751IN
0xBB62a5CA...E127CA641
0 ETH0.0004744410.25501381
Approve180808312023-09-06 23:59:23451 days ago1694044763IN
0xBB62a5CA...E127CA641
0 ETH0.0005237511.32067287
Approve179573972023-08-20 17:18:23468 days ago1692551903IN
0xBB62a5CA...E127CA641
0 ETH0.0009936321.47705853
Approve179061742023-08-13 13:16:11475 days ago1691932571IN
0xBB62a5CA...E127CA641
0 ETH0.0007688516.50718396
Approve179061722023-08-13 13:15:47475 days ago1691932547IN
0xBB62a5CA...E127CA641
0 ETH0.0008211317.629574
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
181020772023-09-09 23:21:59448 days ago1694301719
0xBB62a5CA...E127CA641
0.00293385 ETH
181020772023-09-09 23:21:59448 days ago1694301719
0xBB62a5CA...E127CA641
0.00293385 ETH
179015132023-08-12 21:38:35476 days ago1691876315
0xBB62a5CA...E127CA641
0.00455102 ETH
179015132023-08-12 21:38:35476 days ago1691876315
0xBB62a5CA...E127CA641
0.00455102 ETH
178650562023-08-07 19:11:59481 days ago1691435519
0xBB62a5CA...E127CA641
0.00391557 ETH
178650562023-08-07 19:11:59481 days ago1691435519
0xBB62a5CA...E127CA641
0.00391557 ETH
178510732023-08-05 20:11:35483 days ago1691266295
0xBB62a5CA...E127CA641
0.0056982 ETH
178510732023-08-05 20:11:35483 days ago1691266295
0xBB62a5CA...E127CA641
0.0056982 ETH
178510552023-08-05 20:07:59483 days ago1691266079
0xBB62a5CA...E127CA641
0.00562052 ETH
178510552023-08-05 20:07:59483 days ago1691266079
0xBB62a5CA...E127CA641
0.00562052 ETH
178510512023-08-05 20:07:11483 days ago1691266031
0xBB62a5CA...E127CA641
0.00706321 ETH
178510512023-08-05 20:07:11483 days ago1691266031
0xBB62a5CA...E127CA641
0.00706321 ETH
178510302023-08-05 20:02:59483 days ago1691265779
0xBB62a5CA...E127CA641
0.02833935 ETH
178510302023-08-05 20:02:59483 days ago1691265779
0xBB62a5CA...E127CA641
0.02833935 ETH
178483792023-08-05 11:09:59483 days ago1691233799
0xBB62a5CA...E127CA641
0.00853572 ETH
178483792023-08-05 11:09:59483 days ago1691233799
0xBB62a5CA...E127CA641
0.00853572 ETH
178455812023-08-05 1:46:11484 days ago1691199971
0xBB62a5CA...E127CA641
0.00497062 ETH
178455812023-08-05 1:46:11484 days ago1691199971
0xBB62a5CA...E127CA641
0.00497062 ETH
178418042023-08-04 13:05:11484 days ago1691154311
0xBB62a5CA...E127CA641
0.00574952 ETH
178418042023-08-04 13:05:11484 days ago1691154311
0xBB62a5CA...E127CA641
0.00574952 ETH
178410922023-08-04 10:42:23484 days ago1691145743
0xBB62a5CA...E127CA641
0.0075554 ETH
178410922023-08-04 10:42:23484 days ago1691145743
0xBB62a5CA...E127CA641
0.0075554 ETH
178404412023-08-04 8:30:47484 days ago1691137847
0xBB62a5CA...E127CA641
0.01152773 ETH
178404412023-08-04 8:30:47484 days ago1691137847
0xBB62a5CA...E127CA641
0.01152773 ETH
178399582023-08-04 6:52:59484 days ago1691131979
0xBB62a5CA...E127CA641
0.03698373 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FIFO

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
tg: https://t.me/fifobot_eth
tw: https://twitter.com/FIFO_Ethereum
web: https://fifo.finance/
*/

pragma solidity 0.8.20;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

}

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

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

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

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

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

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract FIFO is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;

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

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"Fifo Bot";
    string private constant _symbol = unicode"FIFO";
    uint256 public _maxTxAmount = 20000000 * 10**_decimals;
    uint256 public _maxWalletSize = 20000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 10000000 * 10**_decimals;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

            if (transferDelayEnabled) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                              block.number,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

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


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

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

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"Trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

60806040526005805460ff191660011790556014600655601e6007819055600360088190556009556019600a908155600b829055600c919091555f600d556200004b906012906200034a565b6200005b906301312d0062000361565b600e556200006c6012600a6200034a565b6200007c906301312d0062000361565b600f556200008d6012600a6200034a565b6200009c90620f424062000361565b601055620000ad6012600a6200034a565b620000bc906298968062000361565b6011556013805461ffff60a81b19169055348015620000d9575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060058054610100600160a81b03191661010033021790556200013f6012600a6200034a565b6200014f90633b9aca0062000361565b335f908152600160208190526040822092909255600390620001785f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556005546101009004909116835291208054909216179055620001db3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002146012600a6200034a565b6200022490633b9aca0062000361565b60405190815260200160405180910390a36200037b565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200028f57815f19048211156200027357620002736200023b565b808516156200028157918102915b93841c939080029062000254565b509250929050565b5f82620002a75750600162000344565b81620002b557505f62000344565b8160018114620002ce5760028114620002d957620002f9565b600191505062000344565b60ff841115620002ed57620002ed6200023b565b50506001821b62000344565b5060208310610133831016604e8410600b84101617156200031e575081810a62000344565b6200032a83836200024f565b805f19048211156200034057620003406200023b565b0290505b92915050565b5f6200035a60ff84168362000297565b9392505050565b80820281158282048414176200034457620003446200023b565b61178180620003895f395ff3fe608060405260043610610108575f3560e01c80637d1db4a511610092578063a9059cbb11610062578063a9059cbb146102cf578063bf474bed146102ee578063c876d0b914610303578063c9567bf91461031c578063dd62ed3e14610330575f80fd5b80637d1db4a5146102535780638da5cb5b146102685780638f9a55c01461028e57806395d89b41146102a3575f80fd5b806323b872dd116100d857806323b872dd146101bb578063313ce567146101da57806370a08231146101f5578063715018a614610229578063751039fc1461023f575f80fd5b806306fdde0314610113578063095ea7b3146101555780630faee56f1461018457806318160ddd146101a7575f80fd5b3661010f57005b5f80fd5b34801561011e575f80fd5b50604080518082019091526008815267119a599bc8109bdd60c21b60208201525b60405161014c9190611374565b60405180910390f35b348015610160575f80fd5b5061017461016f3660046113d6565b610374565b604051901515815260200161014c565b34801561018f575f80fd5b5061019960115481565b60405190815260200161014c565b3480156101b2575f80fd5b5061019961038a565b3480156101c6575f80fd5b506101746101d5366004611400565b6103aa565b3480156101e5575f80fd5b506040516012815260200161014c565b348015610200575f80fd5b5061019961020f36600461143e565b6001600160a01b03165f9081526001602052604090205490565b348015610234575f80fd5b5061023d610411565b005b34801561024a575f80fd5b5061023d61048b565b34801561025e575f80fd5b50610199600e5481565b348015610273575f80fd5b505f546040516001600160a01b03909116815260200161014c565b348015610299575f80fd5b50610199600f5481565b3480156102ae575f80fd5b506040805180820190915260048152634649464f60e01b602082015261013f565b3480156102da575f80fd5b506101746102e93660046113d6565b610546565b3480156102f9575f80fd5b5061019960105481565b34801561030e575f80fd5b506005546101749060ff1681565b348015610327575f80fd5b5061023d610552565b34801561033b575f80fd5b5061019961034a366004611459565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103803384846108fa565b5060015b92915050565b5f6103976012600a611584565b6103a590633b9aca00611592565b905090565b5f6103b6848484610a1d565b610407843361040285604051806060016040528060288152602001611724602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610fe8565b6108fa565b5060019392505050565b5f546001600160a01b031633146104435760405162461bcd60e51b815260040161043a906115a9565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104b45760405162461bcd60e51b815260040161043a906115a9565b6104c06012600a611584565b6104ce90633b9aca00611592565b600e556104dd6012600a611584565b6104eb90633b9aca00611592565b600f556005805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105256012600a611584565b61053390633b9aca00611592565b60405190815260200160405180910390a1565b5f610380338484610a1d565b5f546001600160a01b0316331461057b5760405162461bcd60e51b815260040161043a906115a9565b601354600160a01b900460ff16156105d55760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161043a565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117825561061d9130919061060f90600a611584565b61040290633b9aca00611592565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561066d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069191906115de565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071491906115de565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561075e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078291906115de565b601380546001600160a01b039283166001600160a01b03199091161790556012541663f305d71947306107c9816001600160a01b03165f9081526001602052604090205490565b5f806107dc5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610842573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061086791906115f9565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156108bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e09190611624565b506013805462ff00ff60a01b19166201000160a01b179055565b6001600160a01b03831661095c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161043a565b6001600160a01b0382166109bd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161043a565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a815760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161043a565b6001600160a01b038216610ae35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161043a565b5f8111610b445760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161043a565b5f80546001600160a01b03858116911614801590610b6f57505f546001600160a01b03848116911614155b15610eab57610ba06064610b9a600a54600d5411610b8f57600654610b93565b6008545b8590611020565b906110a5565b60055490915060ff1615610c86576012546001600160a01b03848116911614801590610bda57506013546001600160a01b03848116911614155b15610c8657325f908152600460205260409020544311610c745760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a40161043a565b325f9081526004602052604090204390555b6013546001600160a01b038581169116148015610cb157506012546001600160a01b03848116911614155b8015610cd557506001600160a01b0383165f9081526003602052604090205460ff16155b15610dbb57600e54821115610d2c5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161043a565b600f5482610d4e856001600160a01b03165f9081526001602052604090205490565b610d589190611643565b1115610da65760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161043a565b600d8054905f610db583611656565b91905055505b6013546001600160a01b038481169116148015610de157506001600160a01b0384163014155b15610e0e57610e0b6064610b9a600b54600d5411610e0157600754610b93565b6009548590611020565b90505b305f90815260016020526040902054601354600160a81b900460ff16158015610e4457506013546001600160a01b038581169116145b8015610e595750601354600160b01b900460ff165b8015610e66575060105481115b8015610e755750600c54600d54115b15610ea957610e97610e9284610e8d846011546110e6565b6110e6565b6110fa565b478015610ea757610ea74761126a565b505b505b8015610f2357305f90815260016020526040902054610eca90826112a9565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f1a9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054610f459083611307565b6001600160a01b0385165f90815260016020526040902055610f88610f6a8383611307565b6001600160a01b0385165f90815260016020526040902054906112a9565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610fd18585611307565b60405190815260200160405180910390a350505050565b5f818484111561100b5760405162461bcd60e51b815260040161043a9190611374565b505f611017848661166e565b95945050505050565b5f825f0361102f57505f610384565b5f61103a8385611592565b9050826110478583611681565b1461109e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161043a565b9392505050565b5f61109e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611348565b5f8183116110f4578261109e565b50919050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611140576111406116a0565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611197573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bb91906115de565b816001815181106111ce576111ce6116a0565b6001600160a01b0392831660209182029290920101526012546111f491309116846108fa565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac9479061122c9085905f908690309042906004016116b4565b5f604051808303815f87803b158015611243575f80fd5b505af1158015611255573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6005546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f193505050501580156112a5573d5f803e3d5ffd5b5050565b5f806112b58385611643565b90508381101561109e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161043a565b5f61109e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fe8565b5f81836113685760405162461bcd60e51b815260040161043a9190611374565b505f6110178486611681565b5f6020808352835180828501525f5b8181101561139f57858101830151858201604001528201611383565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113d3575f80fd5b50565b5f80604083850312156113e7575f80fd5b82356113f2816113bf565b946020939093013593505050565b5f805f60608486031215611412575f80fd5b833561141d816113bf565b9250602084013561142d816113bf565b929592945050506040919091013590565b5f6020828403121561144e575f80fd5b813561109e816113bf565b5f806040838503121561146a575f80fd5b8235611475816113bf565b91506020830135611485816113bf565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156114de57815f19048211156114c4576114c4611490565b808516156114d157918102915b93841c93908002906114a9565b509250929050565b5f826114f457506001610384565b8161150057505f610384565b816001811461151657600281146115205761153c565b6001915050610384565b60ff84111561153157611531611490565b50506001821b610384565b5060208310610133831016604e8410600b841016171561155f575081810a610384565b61156983836114a4565b805f190482111561157c5761157c611490565b029392505050565b5f61109e60ff8416836114e6565b808202811582820484141761038457610384611490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156115ee575f80fd5b815161109e816113bf565b5f805f6060848603121561160b575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611634575f80fd5b8151801515811461109e575f80fd5b8082018082111561038457610384611490565b5f6001820161166757611667611490565b5060010190565b8181038181111561038457610384611490565b5f8261169b57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117025784516001600160a01b0316835293830193918301916001016116dd565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202d2cb7241f22d8aea9a7662cd17addda5b57bd737a429ea911be4a0b7f45f5d564736f6c63430008140033

Deployed Bytecode

0x608060405260043610610108575f3560e01c80637d1db4a511610092578063a9059cbb11610062578063a9059cbb146102cf578063bf474bed146102ee578063c876d0b914610303578063c9567bf91461031c578063dd62ed3e14610330575f80fd5b80637d1db4a5146102535780638da5cb5b146102685780638f9a55c01461028e57806395d89b41146102a3575f80fd5b806323b872dd116100d857806323b872dd146101bb578063313ce567146101da57806370a08231146101f5578063715018a614610229578063751039fc1461023f575f80fd5b806306fdde0314610113578063095ea7b3146101555780630faee56f1461018457806318160ddd146101a7575f80fd5b3661010f57005b5f80fd5b34801561011e575f80fd5b50604080518082019091526008815267119a599bc8109bdd60c21b60208201525b60405161014c9190611374565b60405180910390f35b348015610160575f80fd5b5061017461016f3660046113d6565b610374565b604051901515815260200161014c565b34801561018f575f80fd5b5061019960115481565b60405190815260200161014c565b3480156101b2575f80fd5b5061019961038a565b3480156101c6575f80fd5b506101746101d5366004611400565b6103aa565b3480156101e5575f80fd5b506040516012815260200161014c565b348015610200575f80fd5b5061019961020f36600461143e565b6001600160a01b03165f9081526001602052604090205490565b348015610234575f80fd5b5061023d610411565b005b34801561024a575f80fd5b5061023d61048b565b34801561025e575f80fd5b50610199600e5481565b348015610273575f80fd5b505f546040516001600160a01b03909116815260200161014c565b348015610299575f80fd5b50610199600f5481565b3480156102ae575f80fd5b506040805180820190915260048152634649464f60e01b602082015261013f565b3480156102da575f80fd5b506101746102e93660046113d6565b610546565b3480156102f9575f80fd5b5061019960105481565b34801561030e575f80fd5b506005546101749060ff1681565b348015610327575f80fd5b5061023d610552565b34801561033b575f80fd5b5061019961034a366004611459565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103803384846108fa565b5060015b92915050565b5f6103976012600a611584565b6103a590633b9aca00611592565b905090565b5f6103b6848484610a1d565b610407843361040285604051806060016040528060288152602001611724602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610fe8565b6108fa565b5060019392505050565b5f546001600160a01b031633146104435760405162461bcd60e51b815260040161043a906115a9565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104b45760405162461bcd60e51b815260040161043a906115a9565b6104c06012600a611584565b6104ce90633b9aca00611592565b600e556104dd6012600a611584565b6104eb90633b9aca00611592565b600f556005805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105256012600a611584565b61053390633b9aca00611592565b60405190815260200160405180910390a1565b5f610380338484610a1d565b5f546001600160a01b0316331461057b5760405162461bcd60e51b815260040161043a906115a9565b601354600160a01b900460ff16156105d55760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161043a565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117825561061d9130919061060f90600a611584565b61040290633b9aca00611592565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561066d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069191906115de565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071491906115de565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561075e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078291906115de565b601380546001600160a01b039283166001600160a01b03199091161790556012541663f305d71947306107c9816001600160a01b03165f9081526001602052604090205490565b5f806107dc5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610842573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061086791906115f9565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156108bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e09190611624565b506013805462ff00ff60a01b19166201000160a01b179055565b6001600160a01b03831661095c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161043a565b6001600160a01b0382166109bd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161043a565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a815760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161043a565b6001600160a01b038216610ae35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161043a565b5f8111610b445760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161043a565b5f80546001600160a01b03858116911614801590610b6f57505f546001600160a01b03848116911614155b15610eab57610ba06064610b9a600a54600d5411610b8f57600654610b93565b6008545b8590611020565b906110a5565b60055490915060ff1615610c86576012546001600160a01b03848116911614801590610bda57506013546001600160a01b03848116911614155b15610c8657325f908152600460205260409020544311610c745760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a40161043a565b325f9081526004602052604090204390555b6013546001600160a01b038581169116148015610cb157506012546001600160a01b03848116911614155b8015610cd557506001600160a01b0383165f9081526003602052604090205460ff16155b15610dbb57600e54821115610d2c5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161043a565b600f5482610d4e856001600160a01b03165f9081526001602052604090205490565b610d589190611643565b1115610da65760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161043a565b600d8054905f610db583611656565b91905055505b6013546001600160a01b038481169116148015610de157506001600160a01b0384163014155b15610e0e57610e0b6064610b9a600b54600d5411610e0157600754610b93565b6009548590611020565b90505b305f90815260016020526040902054601354600160a81b900460ff16158015610e4457506013546001600160a01b038581169116145b8015610e595750601354600160b01b900460ff165b8015610e66575060105481115b8015610e755750600c54600d54115b15610ea957610e97610e9284610e8d846011546110e6565b6110e6565b6110fa565b478015610ea757610ea74761126a565b505b505b8015610f2357305f90815260016020526040902054610eca90826112a9565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f1a9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054610f459083611307565b6001600160a01b0385165f90815260016020526040902055610f88610f6a8383611307565b6001600160a01b0385165f90815260016020526040902054906112a9565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610fd18585611307565b60405190815260200160405180910390a350505050565b5f818484111561100b5760405162461bcd60e51b815260040161043a9190611374565b505f611017848661166e565b95945050505050565b5f825f0361102f57505f610384565b5f61103a8385611592565b9050826110478583611681565b1461109e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161043a565b9392505050565b5f61109e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611348565b5f8183116110f4578261109e565b50919050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611140576111406116a0565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611197573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bb91906115de565b816001815181106111ce576111ce6116a0565b6001600160a01b0392831660209182029290920101526012546111f491309116846108fa565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac9479061122c9085905f908690309042906004016116b4565b5f604051808303815f87803b158015611243575f80fd5b505af1158015611255573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6005546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f193505050501580156112a5573d5f803e3d5ffd5b5050565b5f806112b58385611643565b90508381101561109e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161043a565b5f61109e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fe8565b5f81836113685760405162461bcd60e51b815260040161043a9190611374565b505f6110178486611681565b5f6020808352835180828501525f5b8181101561139f57858101830151858201604001528201611383565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113d3575f80fd5b50565b5f80604083850312156113e7575f80fd5b82356113f2816113bf565b946020939093013593505050565b5f805f60608486031215611412575f80fd5b833561141d816113bf565b9250602084013561142d816113bf565b929592945050506040919091013590565b5f6020828403121561144e575f80fd5b813561109e816113bf565b5f806040838503121561146a575f80fd5b8235611475816113bf565b91506020830135611485816113bf565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156114de57815f19048211156114c4576114c4611490565b808516156114d157918102915b93841c93908002906114a9565b509250929050565b5f826114f457506001610384565b8161150057505f610384565b816001811461151657600281146115205761153c565b6001915050610384565b60ff84111561153157611531611490565b50506001821b610384565b5060208310610133831016604e8410600b841016171561155f575081810a610384565b61156983836114a4565b805f190482111561157c5761157c611490565b029392505050565b5f61109e60ff8416836114e6565b808202811582820484141761038457610384611490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156115ee575f80fd5b815161109e816113bf565b5f805f6060848603121561160b575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611634575f80fd5b8151801515811461109e575f80fd5b8082018082111561038457610384611490565b5f6001820161166757611667611490565b5060010190565b8181038181111561038457610384611490565b5f8261169b57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117025784516001600160a01b0316835293830193918301916001016116dd565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202d2cb7241f22d8aea9a7662cd17addda5b57bd737a429ea911be4a0b7f45f5d564736f6c63430008140033

Deployed Bytecode Sourcemap

3580:7568:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5464:83;;;;;;;;;;-1:-1:-1;5534:5:0;;;;;;;;;;;;-1:-1:-1;;;5534:5:0;;;;5464:83;;;;;;;:::i;:::-;;;;;;;;6297:161;;;;;;;;;;-1:-1:-1;6297:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6297:161:0;1023:187:1;4739:52:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;4739:52:0;1215:177:1;5741:95:0;;;;;;;;;;;;;:::i;6466:313::-;;;;;;;;;;-1:-1:-1;6466:313:0;;;;;:::i;:::-;;:::i;5650:83::-;;;;;;;;;;-1:-1:-1;5650:83:0;;4364:2;2000:36:1;;1988:2;1973:18;5650:83:0;1858:184:1;5844:119:0;;;;;;;;;;-1:-1:-1;5844:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;5937:18:0;5910:7;5937:18;;;:9;:18;;;;;;;5844:119;2661:148;;;;;;;;;;;;;:::i;:::-;;10133:196;;;;;;;;;;;;;:::i;4551:54::-;;;;;;;;;;;;;;;;2447:79;;;;;;;;;;-1:-1:-1;2485:7:0;2512:6;2447:79;;-1:-1:-1;;;;;2512:6:0;;;2445:51:1;;2433:2;2418:18;2447:79:0;2299:203:1;4612:56:0;;;;;;;;;;;;;;;;5555:87;;;;;;;;;;-1:-1:-1;5627:7:0;;;;;;;;;;;;-1:-1:-1;;;5627:7:0;;;;5555:87;;5971:167;;;;;;;;;;-1:-1:-1;5971:167:0;;;;;:::i;:::-;;:::i;4675:57::-;;;;;;;;;;;;;;;;3921:39;;;;;;;;;;-1:-1:-1;3921:39:0;;;;;;;;10437:671;;;;;;;;;;;;;:::i;6146:143::-;;;;;;;;;;-1:-1:-1;6146:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6254:18:0;;;6227:7;6254:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6146:143;6297:161;6372:4;6389:39;282:10;6412:7;6421:6;6389:8;:39::i;:::-;-1:-1:-1;6446:4:0;6297:161;;;;;:::o;5741:95::-;5794:7;4421:13;4364:2;4421;:13;:::i;:::-;4408:26;;:10;:26;:::i;:::-;5814:14;;5741:95;:::o;6466:313::-;6564:4;6581:36;6591:6;6599:9;6610:6;6581:9;:36::i;:::-;6628:121;6637:6;282:10;6659:89;6697:6;6659:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6659:19:0;;;;;;:11;:19;;;;;;;;282:10;6659:33;;;;;;;;;;:37;:89::i;:::-;6628:8;:121::i;:::-;-1:-1:-1;6767:4:0;6466:313;;;;;:::o;2661:148::-;2574:6;;-1:-1:-1;;;;;2574:6:0;282:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;;;;;;;;;2768:1:::1;2752:6:::0;;2731:40:::1;::::0;-1:-1:-1;;;;;2752:6:0;;::::1;::::0;2731:40:::1;::::0;2768:1;;2731:40:::1;2799:1;2782:19:::0;;-1:-1:-1;;;;;;2782:19:0::1;::::0;;2661:148::o;10133:196::-;2574:6;;-1:-1:-1;;;;;2574:6:0;282:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;4421:13:::1;4364:2;4421;:13;:::i;:::-;4408:26;::::0;:10:::1;:26;:::i;:::-;10186:12;:22:::0;4421:13:::1;4364:2;4421;:13;:::i;:::-;4408:26;::::0;:10:::1;:26;:::i;:::-;10219:14;:22:::0;10252:20:::1;:26:::0;;-1:-1:-1;;10252:26:0::1;::::0;;10294:27:::1;4421:13;4364:2;-1:-1:-1::0;4421:13:0::1;:::i;:::-;4408:26;::::0;:10:::1;:26;:::i;:::-;10294:27;::::0;1361:25:1;;;1349:2;1334:18;10294:27:0::1;;;;;;;10133:196::o:0;5971:167::-;6049:4;6066:42;282:10;6090:9;6101:6;6066:9;:42::i;10437:671::-;2574:6;;-1:-1:-1;;;;;2574:6:0;282:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;10501:11:::1;::::0;-1:-1:-1;;;10501:11:0;::::1;;;10500:12;10492:47;;;::::0;-1:-1:-1;;;10492:47:0;;5151:2:1;10492:47:0::1;::::0;::::1;5133:21:1::0;5190:2;5170:18;;;5163:30;5229:25;5209:18;;;5202:53;5272:18;;10492:47:0::1;4949:347:1::0;10492:47:0::1;10550:15;:80:::0;;-1:-1:-1;;;;;;10550:80:0::1;10587:42;10550:80:::0;;::::1;::::0;;10641:58:::1;::::0;10658:4:::1;::::0;10587:42;4421:13:::1;::::0;:2:::1;:13;:::i;:::-;4408:26;::::0;:10:::1;:26;:::i;10641:58::-;10744:15;;;;;;;;;-1:-1:-1::0;;;;;10744:15:0::1;-1:-1:-1::0;;;;;10744:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10726:55:0::1;;10790:4;10797:15;;;;;;;;;-1:-1:-1::0;;;;;10797:15:0::1;-1:-1:-1::0;;;;;10797:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10726:94;::::0;-1:-1:-1;;;;;;10726:94:0::1;::::0;;;;;;-1:-1:-1;;;;;5787:15:1;;;10726:94:0::1;::::0;::::1;5769:34:1::0;5839:15;;5819:18;;;5812:43;5704:18;;10726:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10710:13;:110:::0;;-1:-1:-1;;;;;10710:110:0;;::::1;-1:-1:-1::0;;;;;;10710:110:0;;::::1;;::::0;;10831:15:::1;::::0;::::1;:31;10870:21;10901:4;10907:24;10901:4:::0;-1:-1:-1;;;;;5937:18:0;5910:7;5937:18;;;:9;:18;;;;;;;5844:119;10907:24:::1;10932:1;10934::::0;10936:7:::1;2485::::0;2512:6;-1:-1:-1;;;;;2512:6:0;;2447:79;10936:7:::1;10831:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10831:129:0;;;-1:-1:-1;;;;;6225:15:1;;;10831:129:0::1;::::0;::::1;6207:34:1::0;6257:18;;;6250:34;;;;6300:18;;;6293:34;;;;6343:18;;;6336:34;6407:15;;;6386:19;;;6379:44;10944:15:0::1;6439:19:1::0;;;6432:35;6141:19;;10831:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10978:13:0::1;::::0;11009:15:::1;::::0;10971:71:::1;::::0;-1:-1:-1;;;10971:71:0;;-1:-1:-1;;;;;11009:15:0;;::::1;10971:71;::::0;::::1;6963:51:1::0;-1:-1:-1;;7030:18:1;;;7023:34;10978:13:0;::::1;::::0;-1:-1:-1;10971:29:0::1;::::0;6936:18:1;;10971:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;11053:11:0::1;:18:::0;;-1:-1:-1;;;;11082:18:0;-1:-1:-1;;;11082:18:0;;;10437:671::o;6787:335::-;-1:-1:-1;;;;;6880:19:0;;6872:68;;;;-1:-1:-1;;;6872:68:0;;7552:2:1;6872:68:0;;;7534:21:1;7591:2;7571:18;;;7564:30;7630:34;7610:18;;;7603:62;-1:-1:-1;;;7681:18:1;;;7674:34;7725:19;;6872:68:0;7350:400:1;6872:68:0;-1:-1:-1;;;;;6959:21:0;;6951:68;;;;-1:-1:-1;;;6951:68:0;;7957:2:1;6951:68:0;;;7939:21:1;7996:2;7976:18;;;7969:30;8035:34;8015:18;;;8008:62;-1:-1:-1;;;8086:18:1;;;8079:32;8128:19;;6951:68:0;7755:398:1;6951:68:0;-1:-1:-1;;;;;7030:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7082:32;;1361:25:1;;;7082:32:0;;1334:18:1;7082:32:0;;;;;;;6787:335;;;:::o;7130:2396::-;-1:-1:-1;;;;;7218:18:0;;7210:68;;;;-1:-1:-1;;;7210:68:0;;8360:2:1;7210:68:0;;;8342:21:1;8399:2;8379:18;;;8372:30;8438:34;8418:18;;;8411:62;-1:-1:-1;;;8489:18:1;;;8482:35;8534:19;;7210:68:0;8158:401:1;7210:68:0;-1:-1:-1;;;;;7297:16:0;;7289:64;;;;-1:-1:-1;;;7289:64:0;;8766:2:1;7289:64:0;;;8748:21:1;8805:2;8785:18;;;8778:30;8844:34;8824:18;;;8817:62;-1:-1:-1;;;8895:18:1;;;8888:33;8938:19;;7289:64:0;8564:399:1;7289:64:0;7381:1;7372:6;:10;7364:64;;;;-1:-1:-1;;;7364:64:0;;9170:2:1;7364:64:0;;;9152:21:1;9209:2;9189:18;;;9182:30;9248:34;9228:18;;;9221:62;-1:-1:-1;;;9299:18:1;;;9292:39;9348:19;;7364:64:0;8968:405:1;7364:64:0;7439:17;2512:6;;-1:-1:-1;;;;;7473:15:0;;;2512:6;;7473:15;;;;:32;;-1:-1:-1;2485:7:0;2512:6;-1:-1:-1;;;;;7492:13:0;;;2512:6;;7492:13;;7473:32;7469:1701;;;7534:76;7606:3;7534:67;7556:15;;7546:9;;:25;7545:55;;7586:14;;7545:55;;;7573:12;;7545:55;7534:6;;:10;:67::i;:::-;:71;;:76::i;:::-;7631:20;;7522:88;;-1:-1:-1;7631:20:0;;7627:508;;;7692:15;;-1:-1:-1;;;;;7678:30:0;;;7692:15;;7678:30;;;;:62;;-1:-1:-1;7726:13:0;;-1:-1:-1;;;;;7712:28:0;;;7726:13;;7712:28;;7678:62;7674:444;;;7832:9;7803:39;;;;:28;:39;;;;;;7876:12;-1:-1:-1;7767:250:0;;;;-1:-1:-1;;;7767:250:0;;9580:2:1;7767:250:0;;;9562:21:1;9619:2;9599:18;;;9592:30;9658:34;9638:18;;;9631:62;9729:34;9709:18;;;9702:62;-1:-1:-1;;;9780:19:1;;;9773:40;9830:19;;7767:250:0;9378:477:1;7767:250:0;8071:9;8042:39;;;;:28;:39;;;;;8084:12;8042:54;;7674:444;8163:13;;-1:-1:-1;;;;;8155:21:0;;;8163:13;;8155:21;:55;;;;-1:-1:-1;8194:15:0;;-1:-1:-1;;;;;8180:30:0;;;8194:15;;8180:30;;8155:55;:83;;;;-1:-1:-1;;;;;;8216:22:0;;;;;;:18;:22;;;;;;;;8214:24;8155:83;8151:313;;;8278:12;;8268:6;:22;;8260:60;;;;-1:-1:-1;;;8260:60:0;;10062:2:1;8260:60:0;;;10044:21:1;10101:2;10081:18;;;10074:30;10140:27;10120:18;;;10113:55;10185:18;;8260:60:0;9860:349:1;8260:60:0;8373:14;;8363:6;8347:13;8357:2;-1:-1:-1;;;;;5937:18:0;5910:7;5937:18;;;:9;:18;;;;;;;5844:119;8347:13;:22;;;;:::i;:::-;:40;;8339:79;;;;-1:-1:-1;;;8339:79:0;;10546:2:1;8339:79:0;;;10528:21:1;10585:2;10565:18;;;10558:30;10624:28;10604:18;;;10597:56;10670:18;;8339:79:0;10344:350:1;8339:79:0;8437:9;:11;;;:9;:11;;;:::i;:::-;;;;;;8151:313;8489:13;;-1:-1:-1;;;;;8483:19:0;;;8489:13;;8483:19;:43;;;;-1:-1:-1;;;;;;8506:20:0;;8521:4;8506:20;;8483:43;8480:174;;;8559:79;8634:3;8559:70;8581:16;;8571:9;;:26;8570:58;;8613:15;;8570:58;;;8599:13;;8559:6;;:10;:70::i;:79::-;8547:91;;8480:174;8719:4;8670:28;5937:18;;;:9;:18;;;;;;8745:6;;-1:-1:-1;;;8745:6:0;;;;8744:7;:30;;;;-1:-1:-1;8761:13:0;;-1:-1:-1;;;;;8755:19:0;;;8761:13;;8755:19;8744:30;:45;;;;-1:-1:-1;8778:11:0;;-1:-1:-1;;;8778:11:0;;;;8744:45;:87;;;;;8814:17;;8793:20;:38;8744:87;:119;;;;;8845:18;;8835:9;;:28;8744:119;8740:419;;;8884:67;8901:49;8905:6;8912:37;8916:20;8937:11;;8912:3;:37::i;:::-;8901:3;:49::i;:::-;8884:16;:67::i;:::-;8999:21;9042:22;;9039:105;;9089:35;9102:21;9089:12;:35::i;:::-;8865:294;8740:419;7507:1663;7469:1701;9185:11;;9182:161;;9253:4;9235:24;;;;:9;:24;;;;;;:39;;9264:9;9235:28;:39::i;:::-;9228:4;9210:24;;;;:9;:24;;;;;;;:64;;;;9292:39;;-1:-1:-1;;;;;9292:39:0;;;;;;;9321:9;1361:25:1;;1349:2;1334:18;;1215:177;9292:39:0;;;;;;;;9182:161;-1:-1:-1;;;;;9369:15:0;;;;;;:9;:15;;;;;;:27;;9389:6;9369:19;:27::i;:::-;-1:-1:-1;;;;;9353:15:0;;;;;;:9;:15;;;;;:43;9421:40;9439:21;:6;9450:9;9439:10;:21::i;:::-;-1:-1:-1;;;;;9421:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;9407:13:0;;;;;;;:9;:13;;;;;:54;;;;9477:41;;;9496:21;:6;9507:9;9496:10;:21::i;:::-;9477:41;;1361:25:1;;;1349:2;1334:18;9477:41:0;;;;;;;7199:2327;7130:2396;;;:::o;1339:190::-;1425:7;1461:12;1453:6;;;;1445:29;;;;-1:-1:-1;;;1445:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1485:9:0;1497:5;1501:1;1497;:5;:::i;:::-;1485:17;1339:190;-1:-1:-1;;;;;1339:190:0:o;1537:246::-;1595:7;1619:1;1624;1619:6;1615:47;;-1:-1:-1;1649:1:0;1642:8;;1615:47;1672:9;1684:5;1688:1;1684;:5;:::i;:::-;1672:17;-1:-1:-1;1717:1:0;1708:5;1712:1;1672:17;1708:5;:::i;:::-;:10;1700:56;;;;-1:-1:-1;;;1700:56:0;;11396:2:1;1700:56:0;;;11378:21:1;11435:2;11415:18;;;11408:30;11474:34;11454:18;;;11447:62;-1:-1:-1;;;11525:18:1;;;11518:31;11566:19;;1700:56:0;11194:397:1;1700:56:0;1774:1;1537:246;-1:-1:-1;;;1537:246:0:o;1791:132::-;1849:7;1876:39;1880:1;1883;1876:39;;;;;;;;;;;;;;;;;:3;:39::i;9536:98::-;9593:7;9620:1;9618;:3;9617:9;;9625:1;9617:9;;;-1:-1:-1;9623:1:0;9536:98;-1:-1:-1;9536:98:0:o;9642:483::-;5073:6;:13;;-1:-1:-1;;;;5073:13:0;-1:-1:-1;;;5073:13:0;;;9744:16:::1;::::0;;9758:1:::1;9744:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9744:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9744:16:0::1;9720:40;;9789:4;9771;9776:1;9771:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9771:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;9815:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;9815:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;9771:7;;9815:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9805:4;9810:1;9805:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9805:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;9880:15:::1;::::0;9848:62:::1;::::0;9865:4:::1;::::0;9880:15:::1;9898:11:::0;9848:8:::1;:62::i;:::-;9921:15;::::0;:196:::1;::::0;-1:-1:-1;;;9921:196:0;;-1:-1:-1;;;;;9921:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10002:11;;9921:15:::1;::::0;10044:4;;10071::::1;::::0;10091:15:::1;::::0;9921:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5109:6:0;:14;;-1:-1:-1;;;;5109:14:0;;;-1:-1:-1;;;;9642:483:0:o;10337:92::-;10394:10;;:27;;:10;;;;-1:-1:-1;;;;;10394:10:0;;:27;;;;;;;;;;;;:10;:27;;;;;;;;;;;;;;;;;;;;;10337:92;:::o;1008:179::-;1066:7;;1098:5;1102:1;1098;:5;:::i;:::-;1086:17;;1127:1;1122;:6;;1114:46;;;;-1:-1:-1;;;1114:46:0;;13047:2:1;1114:46:0;;;13029:21:1;13086:2;13066:18;;;13059:30;13125:29;13105:18;;;13098:57;13172:18;;1114:46:0;12845:351:1;1195:136:0;1253:7;1280:43;1284:1;1287;1280:43;;;;;;;;;;;;;;;;;:3;:43::i;1931:189::-;2017:7;2052:12;2045:5;2037:28;;;;-1:-1:-1;;;2037:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2076:9:0;2088:5;2092:1;2088;:5;:::i;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;622:70;567:131;:::o;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;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:422;3121:1;3164:5;3121:1;3178:270;3199:7;3189:8;3186:21;3178:270;;;3258:4;3254:1;3250:6;3246:17;3240:4;3237:27;3234:53;;;3267:18;;:::i;:::-;3317:7;3307:8;3303:22;3300:55;;;3337:16;;;;3300:55;3416:22;;;;3376:15;;;;3178:270;;;3182:3;3032:422;;;;;:::o;3459:806::-;3508:5;3538:8;3528:80;;-1:-1:-1;3579:1:1;3593:5;;3528:80;3627:4;3617:76;;-1:-1:-1;3664:1:1;3678:5;;3617:76;3709:4;3727:1;3722:59;;;;3795:1;3790:130;;;;3702:218;;3722:59;3752:1;3743:10;;3766:5;;;3790:130;3827:3;3817:8;3814:17;3811:43;;;3834:18;;:::i;:::-;-1:-1:-1;;3890:1:1;3876:16;;3905:5;;3702:218;;4004:2;3994:8;3991:16;3985:3;3979:4;3976:13;3972:36;3966:2;3956:8;3953:16;3948:2;3942:4;3939:12;3935:35;3932:77;3929:159;;;-1:-1:-1;4041:19:1;;;4073:5;;3929:159;4120:34;4145:8;4139:4;4120:34;:::i;:::-;4190:6;4186:1;4182:6;4178:19;4169:7;4166:32;4163:58;;;4201:18;;:::i;:::-;4239:20;;3459:806;-1:-1:-1;;;3459:806:1:o;4270:140::-;4328:5;4357:47;4398:4;4388:8;4384:19;4378:4;4357:47;:::i;4415:168::-;4488:9;;;4519;;4536:15;;;4530:22;;4516:37;4506:71;;4557:18;;:::i;4588:356::-;4790:2;4772:21;;;4809:18;;;4802:30;4868:34;4863:2;4848:18;;4841:62;4935:2;4920:18;;4588:356::o;5301:251::-;5371:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:52;;;5440:1;5437;5430:12;5392:52;5472:9;5466:16;5491:31;5516:5;5491:31;:::i;6478:306::-;6566:6;6574;6582;6635:2;6623:9;6614:7;6610:23;6606:32;6603:52;;;6651:1;6648;6641:12;6603:52;6680:9;6674:16;6664:26;;6730:2;6719:9;6715:18;6709:25;6699:35;;6774:2;6763:9;6759:18;6753:25;6743:35;;6478:306;;;;;:::o;7068:277::-;7135:6;7188:2;7176:9;7167:7;7163:23;7159:32;7156:52;;;7204:1;7201;7194:12;7156:52;7236:9;7230:16;7289:5;7282:13;7275:21;7268:5;7265:32;7255:60;;7311:1;7308;7301:12;10214:125;10279:9;;;10300:10;;;10297:36;;;10313:18;;:::i;10699:135::-;10738:3;10759:17;;;10756:43;;10779:18;;:::i;:::-;-1:-1:-1;10826:1:1;10815:13;;10699:135::o;10839:128::-;10906:9;;;10927:11;;;10924:37;;;10941:18;;:::i;10972:217::-;11012:1;11038;11028:132;;11082:10;11077:3;11073:20;11070:1;11063:31;11117:4;11114:1;11107:15;11145:4;11142:1;11135:15;11028:132;-1:-1:-1;11174:9:1;;10972:217::o;11728:127::-;11789:10;11784:3;11780:20;11777:1;11770:31;11820:4;11817:1;11810:15;11844:4;11841:1;11834:15;11860:980;12122:4;12170:3;12159:9;12155:19;12201:6;12190:9;12183:25;12227:2;12265:6;12260:2;12249:9;12245:18;12238:34;12308:3;12303:2;12292:9;12288:18;12281:31;12332:6;12367;12361:13;12398:6;12390;12383:22;12436:3;12425:9;12421:19;12414:26;;12475:2;12467:6;12463:15;12449:29;;12496:1;12506:195;12520:6;12517:1;12514:13;12506:195;;;12585:13;;-1:-1:-1;;;;;12581:39:1;12569:52;;12676:15;;;;12641:12;;;;12617:1;12535:9;12506:195;;;-1:-1:-1;;;;;;;12757:32:1;;;;12752:2;12737:18;;12730:60;-1:-1:-1;;;12821:3:1;12806:19;12799:35;12718:3;11860:980;-1:-1:-1;;;11860:980:1:o

Swarm Source

ipfs://2d2cb7241f22d8aea9a7662cd17addda5b57bd737a429ea911be4a0b7f45f5d5

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.