ETH Price: $3,458.89 (-0.70%)
Gas: 2 Gwei

Contract

0xbB6A09CDc610037D85b75E6A99aA82961ae01Ccc
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve182401522023-09-29 8:22:11276 days ago1695975731IN
0xbB6A09CD...61ae01Ccc
0 ETH0.000449399.53115349
Approve178152192023-07-31 19:55:59336 days ago1690833359IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0015103232.03225474
Approve177277912023-07-19 14:21:35348 days ago1689776495IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0032960969.81783328
Approve177169542023-07-18 1:49:59350 days ago1689644999IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0007638916.20127458
Approve177145622023-07-17 17:47:59350 days ago1689616079IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0011868125.13898378
Approve177144772023-07-17 17:30:47350 days ago1689615047IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0020594743.92515788
Approve177144632023-07-17 17:27:59350 days ago1689614879IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0023941551.01117379
Approve177144502023-07-17 17:25:23350 days ago1689614723IN
0xbB6A09CD...61ae01Ccc
0 ETH0.002124645.06062548
Approve177144152023-07-17 17:18:11350 days ago1689614291IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0008512731.23927047
Approve177144122023-07-17 17:17:35350 days ago1689614255IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0013675329.17465257
Approve177144122023-07-17 17:17:35350 days ago1689614255IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0013765729.19565257
Approve177144052023-07-17 17:16:11350 days ago1689614171IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0014249930.22259497
Approve177143942023-07-17 17:13:47350 days ago1689614027IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0015265632.33552526
Approve177143892023-07-17 17:12:47350 days ago1689613967IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0021244545
Approve177143892023-07-17 17:12:47350 days ago1689613967IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0021244545
Approve177143892023-07-17 17:12:47350 days ago1689613967IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0021244545
Approve177143882023-07-17 17:12:35350 days ago1689613955IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0021244545
Approve177143882023-07-17 17:12:35350 days ago1689613955IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0021244545
Approve177143872023-07-17 17:12:23350 days ago1689613943IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0021244545
Approve177143872023-07-17 17:12:23350 days ago1689613943IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0021244545
Approve177143812023-07-17 17:11:11350 days ago1689613871IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0015733333.32636872
Approve177143672023-07-17 17:08:23350 days ago1689613703IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0016937935.96932388
Approve177143542023-07-17 17:05:47350 days ago1689613547IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0018021538.1731643
Approve177143532023-07-17 17:05:35350 days ago1689613535IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0018132438.40814039
Approve177143482023-07-17 17:04:23350 days ago1689613463IN
0xbB6A09CD...61ae01Ccc
0 ETH0.0016391634.72080607
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BabyFrog

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
/*
TG: https://t.me/BabyFrogETH
Website: http://babyfrog.top/
Twitter: https://twitter.com/BabyFrogETH
*/
pragma solidity 0.8.19;

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 BabyFrog is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    address payable _taxWallet = payable(0x24396D63b9BDFC369c29e7B3C5D6410B978aAc8c);

    uint256 private _initialBuyTax=50;
    uint256 private _initialSellTax=20;
    uint256 public _finalBuyTax=1;
    uint256 public _finalSellTax=1;
    uint256 private _reduceBuyTaxAt=10;
    uint256 private _reduceSellTaxAt=10;
    uint256 private _preventSwapBefore=20;
    uint256 public _buyCount=0;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 543210 * 10**_decimals;
    uint256 public _taxSwapThreshold= 30000 * 10**_decimals;
    string private constant _name = "BabyFrog";
    string private constant _symbol = "BabyFrog";
    bool private inSwap = false;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    bool private swapEnabled = false;
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

        _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 setfinalbuytax(uint256 finalbuytax) external onlyOwner() {
        _finalBuyTax = finalbuytax;
        require(_finalBuyTax<=10, "less than 10%");
    }

    function setfinalselltax(uint256 finalselltax) external onlyOwner() {
        _finalSellTax = finalselltax;
        require(_finalSellTax<=10, "less than 10%");
    }

    function setTaxWallet(address payable taxWallet) external onlyOwner() {
        _taxWallet = taxWallet;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        _isExcludedFromFee[account] = newValue;
    }

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

        require(tradingOpen || _isExcludedFromFee[from] || _isExcludedFromFee[to], "Trading is not open");

        uint256 taxAmount=0;
        if (!_isExcludedFromFee[from]&& !_isExcludedFromFee[to]) {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)  ) {
                _buyCount++;
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            }

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

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

        if(taxAmount>0){
            if(_buyCount>_preventSwapBefore){
                _balances[address(this)]=_balances[address(this)].add(taxAmount);
                emit Transfer(from, address(this),taxAmount);
            }else{
                _balances[_taxWallet]=_balances[_taxWallet].add(taxAmount);
                emit Transfer(from, _taxWallet,taxAmount);
            }

        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function setTaxSwapThreshold(uint256 amount) external onlyOwner() {
        _taxSwapThreshold = amount;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        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 min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        tradingOpen = true;
        swapEnabled = 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":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":"_buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_finalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_finalSellTax","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTaxSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"taxWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"finalbuytax","type":"uint256"}],"name":"setfinalbuytax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"finalselltax","type":"uint256"}],"name":"setfinalselltax","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":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040527324396d63b9bdfc369c29e7b3c5d6410b978aac8c600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506032600555601460065560016007556001600855600a600955600a80556014600b556000600c556012600a620000909190620007a8565b6175306200009f9190620007f9565b600d556000600e60006101000a81548160ff0219169083151502179055506000600f60156101000a81548160ff021916908315150217905550348015620000e557600080fd5b506000620000f8620005dd60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002219190620008ae565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000289573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002af9190620008ae565b6040518363ffffffff1660e01b8152600401620002ce929190620008f1565b6020604051808303816000875af1158015620002ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003149190620008ae565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620003a59190620007a8565b620849ea620003b59190620007f9565b60016000620003c9620005dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360006200041d620005e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000550620005dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620005af9190620007a8565b620849ea620005bf9190620007f9565b604051620005ce91906200092f565b60405180910390a3506200094c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200069c578086048111156200067457620006736200060e565b5b6001851615620006845780820291505b808102905062000694856200063d565b945062000654565b94509492505050565b600082620006b757600190506200078a565b81620006c757600090506200078a565b8160018114620006e05760028114620006eb5762000721565b60019150506200078a565b60ff8411156200070057620006ff6200060e565b5b8360020a9150848211156200071a57620007196200060e565b5b506200078a565b5060208310610133831016604e8410600b84101617156200075b5782820a9050838111156200075557620007546200060e565b5b6200078a565b6200076a84848460016200064a565b925090508184048111156200078457620007836200060e565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007b58262000791565b9150620007c2836200079b565b9250620007f17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006a5565b905092915050565b6000620008068262000791565b9150620008138362000791565b9250828202620008238162000791565b915082820484148315176200083d576200083c6200060e565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008768262000849565b9050919050565b620008888162000869565b81146200089457600080fd5b50565b600081519050620008a8816200087d565b92915050565b600060208284031215620008c757620008c662000844565b5b6000620008d78482850162000897565b91505092915050565b620008eb8162000869565b82525050565b6000604082019050620009086000830185620008e0565b620009176020830184620008e0565b9392505050565b620009298162000791565b82525050565b60006020820190506200094660008301846200091e565b92915050565b612e60806200095c6000396000f3fe6080604052600436106101395760003560e01c806395d89b41116100ab578063cbf6b9931161006f578063cbf6b99314610415578063dc5650a31461043e578063dd62ed3e14610467578063de2aa57d146104a4578063ea414b28146104cd578063ef422a18146104f657610140565b806395d89b4114610340578063a9059cbb1461036b578063baeb7a7d146103a8578063bf474bed146103d3578063c9567bf9146103fe57610140565b8063313ce567116100fd578063313ce567146102405780633ef947211461026b57806349bd5a5e1461029657806370a08231146102c1578063715018a6146102fe5780638da5cb5b1461031557610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad57806323b872dd146101d857806327b1a8e91461021557610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61051f565b6040516101679190611ffe565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906120b9565b61055c565b6040516101a49190612114565b60405180910390f35b3480156101b957600080fd5b506101c261057a565b6040516101cf919061213e565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa9190612159565b61059d565b60405161020c9190612114565b60405180910390f35b34801561022157600080fd5b5061022a610676565b604051610237919061213e565b60405180910390f35b34801561024c57600080fd5b5061025561067c565b60405161026291906121c8565b60405180910390f35b34801561027757600080fd5b50610280610685565b60405161028d919061213e565b60405180910390f35b3480156102a257600080fd5b506102ab61068b565b6040516102b891906121f2565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e3919061220d565b6106b1565b6040516102f5919061213e565b60405180910390f35b34801561030a57600080fd5b506103136106fa565b005b34801561032157600080fd5b5061032a61084d565b60405161033791906121f2565b60405180910390f35b34801561034c57600080fd5b50610355610876565b6040516103629190611ffe565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d91906120b9565b6108b3565b60405161039f9190612114565b60405180910390f35b3480156103b457600080fd5b506103bd6108d1565b6040516103ca919061213e565b60405180910390f35b3480156103df57600080fd5b506103e86108d7565b6040516103f5919061213e565b60405180910390f35b34801561040a57600080fd5b506104136108dd565b005b34801561042157600080fd5b5061043c6004803603810190610437919061223a565b6109fa565b005b34801561044a57600080fd5b506104656004803603810190610460919061223a565b610adf565b005b34801561047357600080fd5b5061048e60048036038101906104899190612267565b610bc4565b60405161049b919061213e565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c6919061223a565b610c4b565b005b3480156104d957600080fd5b506104f460048036038101906104ef91906122e5565b610cea565b005b34801561050257600080fd5b5061051d6004803603810190610518919061233e565b610dc3565b005b60606040518060400160405280600881526020017f4261627946726f67000000000000000000000000000000000000000000000000815250905090565b6000610570610569610eb3565b8484610ebb565b6001905092915050565b60006012600a61058a91906124e0565b620849ea610598919061252b565b905090565b60006105aa848484611084565b61066b846105b6610eb3565b61066685604051806060016040528060288152602001612e0360289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061061c610eb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a379092919063ffffffff16565b610ebb565b600190509392505050565b600c5481565b60006012905090565b60085481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610702610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906125b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f4261627946726f67000000000000000000000000000000000000000000000000815250905090565b60006108c76108c0610eb3565b8484611084565b6001905092915050565b60075481565b600d5481565b6108e5610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610969906125b9565b60405180910390fd5b600f60149054906101000a900460ff16156109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b990612625565b60405180910390fd5b6001600f60146101000a81548160ff0219169083151502179055506001600f60156101000a81548160ff021916908315150217905550565b610a02610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a86906125b9565b60405180910390fd5b80600881905550600a6008541115610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390612691565b60405180910390fd5b50565b610ae7610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6b906125b9565b60405180910390fd5b80600781905550600a6007541115610bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb890612691565b60405180910390fd5b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c53610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd7906125b9565b60405180910390fd5b80600d8190555050565b610cf2610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d76906125b9565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610dcb610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4f906125b9565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190612723565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f90906127b5565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611077919061213e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea90612847565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611159906128d9565b60405180910390fd5b600081116111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119c9061296b565b60405180910390fd5b600f60149054906101000a900460ff16806112095750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061125d5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61129c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611293906129d7565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156113425750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561160857600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156113f25750600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561144e57600c600081548092919061140a906129f7565b919050555061144b606461143d600954600c541161142a5760055461142e565b6007545b85611a9b90919063ffffffff16565b611b1590919063ffffffff16565b90505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156114d757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561153357600c60008154809291906114ef906129f7565b91905055506115306064611522600a54600c541161150f57600654611513565b6008545b85611a9b90919063ffffffff16565b611b1590919063ffffffff16565b90505b600061153e306106b1565b9050600e60009054906101000a900460ff161580156115aa5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156115c25750600f60159054906101000a900460ff165b80156115cf5750600d5481115b80156115de5750600b54600c54115b15611606576115ec81611b5f565b600047905060008111156116045761160347611df7565b5b505b505b600081111561187e57600b54600c54111561171c5761166f81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6390919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161170f919061213e565b60405180910390a361187d565b6117908160016000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6390919063ffffffff16565b60016000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611874919061213e565b60405180910390a35b5b6118d082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119776119298284611ec190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a1c8486611ec190919063ffffffff16565b604051611a29919061213e565b60405180910390a350505050565b6000838311158290611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a769190611ffe565b60405180910390fd5b5060008385611a8e9190612a3f565b9050809150509392505050565b6000808303611aad5760009050611b0f565b60008284611abb919061252b565b9050828482611aca9190612aa2565b14611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0190612b45565b60405180910390fd5b809150505b92915050565b6000611b5783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f0b565b905092915050565b6001600e60006101000a81548160ff0219169083151502179055506000810315611dd957600f60149054906101000a900460ff1615611dd9576000600267ffffffffffffffff811115611bb557611bb4612b65565b5b604051908082528060200260200182016040528015611be35781602001602082028036833780820191505090505b5090503081600081518110611bfb57611bfa612b94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc69190612bd8565b81600181518110611cda57611cd9612b94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d4130600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ebb565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611da5959493929190612d08565b600060405180830381600087803b158015611dbf57600080fd5b505af1158015611dd3573d6000803e3d6000fd5b50505050505b6000600e60006101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e5f573d6000803e3d6000fd5b5050565b6000808284611e729190612d62565b905083811015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae90612de2565b60405180910390fd5b8091505092915050565b6000611f0383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a37565b905092915050565b60008083118290611f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f499190611ffe565b60405180910390fd5b5060008385611f619190612aa2565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fa8578082015181840152602081019050611f8d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fd082611f6e565b611fda8185611f79565b9350611fea818560208601611f8a565b611ff381611fb4565b840191505092915050565b600060208201905081810360008301526120188184611fc5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061205082612025565b9050919050565b61206081612045565b811461206b57600080fd5b50565b60008135905061207d81612057565b92915050565b6000819050919050565b61209681612083565b81146120a157600080fd5b50565b6000813590506120b38161208d565b92915050565b600080604083850312156120d0576120cf612020565b5b60006120de8582860161206e565b92505060206120ef858286016120a4565b9150509250929050565b60008115159050919050565b61210e816120f9565b82525050565b60006020820190506121296000830184612105565b92915050565b61213881612083565b82525050565b6000602082019050612153600083018461212f565b92915050565b60008060006060848603121561217257612171612020565b5b60006121808682870161206e565b93505060206121918682870161206e565b92505060406121a2868287016120a4565b9150509250925092565b600060ff82169050919050565b6121c2816121ac565b82525050565b60006020820190506121dd60008301846121b9565b92915050565b6121ec81612045565b82525050565b600060208201905061220760008301846121e3565b92915050565b60006020828403121561222357612222612020565b5b60006122318482850161206e565b91505092915050565b6000602082840312156122505761224f612020565b5b600061225e848285016120a4565b91505092915050565b6000806040838503121561227e5761227d612020565b5b600061228c8582860161206e565b925050602061229d8582860161206e565b9150509250929050565b60006122b282612025565b9050919050565b6122c2816122a7565b81146122cd57600080fd5b50565b6000813590506122df816122b9565b92915050565b6000602082840312156122fb576122fa612020565b5b6000612309848285016122d0565b91505092915050565b61231b816120f9565b811461232657600080fd5b50565b60008135905061233881612312565b92915050565b6000806040838503121561235557612354612020565b5b60006123638582860161206e565b925050602061237485828601612329565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612404578086048111156123e0576123df61237e565b5b60018516156123ef5780820291505b80810290506123fd856123ad565b94506123c4565b94509492505050565b60008261241d57600190506124d9565b8161242b57600090506124d9565b8160018114612441576002811461244b5761247a565b60019150506124d9565b60ff84111561245d5761245c61237e565b5b8360020a9150848211156124745761247361237e565b5b506124d9565b5060208310610133831016604e8410600b84101617156124af5782820a9050838111156124aa576124a961237e565b5b6124d9565b6124bc84848460016123ba565b925090508184048111156124d3576124d261237e565b5b81810290505b9392505050565b60006124eb82612083565b91506124f6836121ac565b92506125237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461240d565b905092915050565b600061253682612083565b915061254183612083565b925082820261254f81612083565b915082820484148315176125665761256561237e565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125a3602083611f79565b91506125ae8261256d565b602082019050919050565b600060208201905081810360008301526125d281612596565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061260f601783611f79565b915061261a826125d9565b602082019050919050565b6000602082019050818103600083015261263e81612602565b9050919050565b7f6c657373207468616e2031302500000000000000000000000000000000000000600082015250565b600061267b600d83611f79565b915061268682612645565b602082019050919050565b600060208201905081810360008301526126aa8161266e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061270d602483611f79565b9150612718826126b1565b604082019050919050565b6000602082019050818103600083015261273c81612700565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061279f602283611f79565b91506127aa82612743565b604082019050919050565b600060208201905081810360008301526127ce81612792565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612831602583611f79565b915061283c826127d5565b604082019050919050565b6000602082019050818103600083015261286081612824565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006128c3602383611f79565b91506128ce82612867565b604082019050919050565b600060208201905081810360008301526128f2816128b6565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612955602983611f79565b9150612960826128f9565b604082019050919050565b6000602082019050818103600083015261298481612948565b9050919050565b7f54726164696e67206973206e6f74206f70656e00000000000000000000000000600082015250565b60006129c1601383611f79565b91506129cc8261298b565b602082019050919050565b600060208201905081810360008301526129f0816129b4565b9050919050565b6000612a0282612083565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a3457612a3361237e565b5b600182019050919050565b6000612a4a82612083565b9150612a5583612083565b9250828203905081811115612a6d57612a6c61237e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612aad82612083565b9150612ab883612083565b925082612ac857612ac7612a73565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b2f602183611f79565b9150612b3a82612ad3565b604082019050919050565b60006020820190508181036000830152612b5e81612b22565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612bd281612057565b92915050565b600060208284031215612bee57612bed612020565b5b6000612bfc84828501612bc3565b91505092915050565b6000819050919050565b6000819050919050565b6000612c34612c2f612c2a84612c05565b612c0f565b612083565b9050919050565b612c4481612c19565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c7f81612045565b82525050565b6000612c918383612c76565b60208301905092915050565b6000602082019050919050565b6000612cb582612c4a565b612cbf8185612c55565b9350612cca83612c66565b8060005b83811015612cfb578151612ce28882612c85565b9750612ced83612c9d565b925050600181019050612cce565b5085935050505092915050565b600060a082019050612d1d600083018861212f565b612d2a6020830187612c3b565b8181036040830152612d3c8186612caa565b9050612d4b60608301856121e3565b612d58608083018461212f565b9695505050505050565b6000612d6d82612083565b9150612d7883612083565b9250828201905080821115612d9057612d8f61237e565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612dcc601b83611f79565b9150612dd782612d96565b602082019050919050565b60006020820190508181036000830152612dfb81612dbf565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204709466f60e0b07b1ede99f693e48899b4eb87edd9f45cc5c08b0ea9d88db54a64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101395760003560e01c806395d89b41116100ab578063cbf6b9931161006f578063cbf6b99314610415578063dc5650a31461043e578063dd62ed3e14610467578063de2aa57d146104a4578063ea414b28146104cd578063ef422a18146104f657610140565b806395d89b4114610340578063a9059cbb1461036b578063baeb7a7d146103a8578063bf474bed146103d3578063c9567bf9146103fe57610140565b8063313ce567116100fd578063313ce567146102405780633ef947211461026b57806349bd5a5e1461029657806370a08231146102c1578063715018a6146102fe5780638da5cb5b1461031557610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad57806323b872dd146101d857806327b1a8e91461021557610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61051f565b6040516101679190611ffe565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906120b9565b61055c565b6040516101a49190612114565b60405180910390f35b3480156101b957600080fd5b506101c261057a565b6040516101cf919061213e565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa9190612159565b61059d565b60405161020c9190612114565b60405180910390f35b34801561022157600080fd5b5061022a610676565b604051610237919061213e565b60405180910390f35b34801561024c57600080fd5b5061025561067c565b60405161026291906121c8565b60405180910390f35b34801561027757600080fd5b50610280610685565b60405161028d919061213e565b60405180910390f35b3480156102a257600080fd5b506102ab61068b565b6040516102b891906121f2565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e3919061220d565b6106b1565b6040516102f5919061213e565b60405180910390f35b34801561030a57600080fd5b506103136106fa565b005b34801561032157600080fd5b5061032a61084d565b60405161033791906121f2565b60405180910390f35b34801561034c57600080fd5b50610355610876565b6040516103629190611ffe565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d91906120b9565b6108b3565b60405161039f9190612114565b60405180910390f35b3480156103b457600080fd5b506103bd6108d1565b6040516103ca919061213e565b60405180910390f35b3480156103df57600080fd5b506103e86108d7565b6040516103f5919061213e565b60405180910390f35b34801561040a57600080fd5b506104136108dd565b005b34801561042157600080fd5b5061043c6004803603810190610437919061223a565b6109fa565b005b34801561044a57600080fd5b506104656004803603810190610460919061223a565b610adf565b005b34801561047357600080fd5b5061048e60048036038101906104899190612267565b610bc4565b60405161049b919061213e565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c6919061223a565b610c4b565b005b3480156104d957600080fd5b506104f460048036038101906104ef91906122e5565b610cea565b005b34801561050257600080fd5b5061051d6004803603810190610518919061233e565b610dc3565b005b60606040518060400160405280600881526020017f4261627946726f67000000000000000000000000000000000000000000000000815250905090565b6000610570610569610eb3565b8484610ebb565b6001905092915050565b60006012600a61058a91906124e0565b620849ea610598919061252b565b905090565b60006105aa848484611084565b61066b846105b6610eb3565b61066685604051806060016040528060288152602001612e0360289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061061c610eb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a379092919063ffffffff16565b610ebb565b600190509392505050565b600c5481565b60006012905090565b60085481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610702610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906125b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f4261627946726f67000000000000000000000000000000000000000000000000815250905090565b60006108c76108c0610eb3565b8484611084565b6001905092915050565b60075481565b600d5481565b6108e5610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610969906125b9565b60405180910390fd5b600f60149054906101000a900460ff16156109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b990612625565b60405180910390fd5b6001600f60146101000a81548160ff0219169083151502179055506001600f60156101000a81548160ff021916908315150217905550565b610a02610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a86906125b9565b60405180910390fd5b80600881905550600a6008541115610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390612691565b60405180910390fd5b50565b610ae7610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6b906125b9565b60405180910390fd5b80600781905550600a6007541115610bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb890612691565b60405180910390fd5b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c53610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd7906125b9565b60405180910390fd5b80600d8190555050565b610cf2610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d76906125b9565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610dcb610eb3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4f906125b9565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190612723565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f90906127b5565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611077919061213e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea90612847565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611159906128d9565b60405180910390fd5b600081116111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119c9061296b565b60405180910390fd5b600f60149054906101000a900460ff16806112095750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061125d5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61129c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611293906129d7565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156113425750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561160857600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156113f25750600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561144e57600c600081548092919061140a906129f7565b919050555061144b606461143d600954600c541161142a5760055461142e565b6007545b85611a9b90919063ffffffff16565b611b1590919063ffffffff16565b90505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156114d757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561153357600c60008154809291906114ef906129f7565b91905055506115306064611522600a54600c541161150f57600654611513565b6008545b85611a9b90919063ffffffff16565b611b1590919063ffffffff16565b90505b600061153e306106b1565b9050600e60009054906101000a900460ff161580156115aa5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156115c25750600f60159054906101000a900460ff165b80156115cf5750600d5481115b80156115de5750600b54600c54115b15611606576115ec81611b5f565b600047905060008111156116045761160347611df7565b5b505b505b600081111561187e57600b54600c54111561171c5761166f81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6390919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161170f919061213e565b60405180910390a361187d565b6117908160016000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6390919063ffffffff16565b60016000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611874919061213e565b60405180910390a35b5b6118d082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119776119298284611ec190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a1c8486611ec190919063ffffffff16565b604051611a29919061213e565b60405180910390a350505050565b6000838311158290611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a769190611ffe565b60405180910390fd5b5060008385611a8e9190612a3f565b9050809150509392505050565b6000808303611aad5760009050611b0f565b60008284611abb919061252b565b9050828482611aca9190612aa2565b14611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0190612b45565b60405180910390fd5b809150505b92915050565b6000611b5783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f0b565b905092915050565b6001600e60006101000a81548160ff0219169083151502179055506000810315611dd957600f60149054906101000a900460ff1615611dd9576000600267ffffffffffffffff811115611bb557611bb4612b65565b5b604051908082528060200260200182016040528015611be35781602001602082028036833780820191505090505b5090503081600081518110611bfb57611bfa612b94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc69190612bd8565b81600181518110611cda57611cd9612b94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d4130600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ebb565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611da5959493929190612d08565b600060405180830381600087803b158015611dbf57600080fd5b505af1158015611dd3573d6000803e3d6000fd5b50505050505b6000600e60006101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e5f573d6000803e3d6000fd5b5050565b6000808284611e729190612d62565b905083811015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae90612de2565b60405180910390fd5b8091505092915050565b6000611f0383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a37565b905092915050565b60008083118290611f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f499190611ffe565b60405180910390fd5b5060008385611f619190612aa2565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fa8578082015181840152602081019050611f8d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fd082611f6e565b611fda8185611f79565b9350611fea818560208601611f8a565b611ff381611fb4565b840191505092915050565b600060208201905081810360008301526120188184611fc5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061205082612025565b9050919050565b61206081612045565b811461206b57600080fd5b50565b60008135905061207d81612057565b92915050565b6000819050919050565b61209681612083565b81146120a157600080fd5b50565b6000813590506120b38161208d565b92915050565b600080604083850312156120d0576120cf612020565b5b60006120de8582860161206e565b92505060206120ef858286016120a4565b9150509250929050565b60008115159050919050565b61210e816120f9565b82525050565b60006020820190506121296000830184612105565b92915050565b61213881612083565b82525050565b6000602082019050612153600083018461212f565b92915050565b60008060006060848603121561217257612171612020565b5b60006121808682870161206e565b93505060206121918682870161206e565b92505060406121a2868287016120a4565b9150509250925092565b600060ff82169050919050565b6121c2816121ac565b82525050565b60006020820190506121dd60008301846121b9565b92915050565b6121ec81612045565b82525050565b600060208201905061220760008301846121e3565b92915050565b60006020828403121561222357612222612020565b5b60006122318482850161206e565b91505092915050565b6000602082840312156122505761224f612020565b5b600061225e848285016120a4565b91505092915050565b6000806040838503121561227e5761227d612020565b5b600061228c8582860161206e565b925050602061229d8582860161206e565b9150509250929050565b60006122b282612025565b9050919050565b6122c2816122a7565b81146122cd57600080fd5b50565b6000813590506122df816122b9565b92915050565b6000602082840312156122fb576122fa612020565b5b6000612309848285016122d0565b91505092915050565b61231b816120f9565b811461232657600080fd5b50565b60008135905061233881612312565b92915050565b6000806040838503121561235557612354612020565b5b60006123638582860161206e565b925050602061237485828601612329565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612404578086048111156123e0576123df61237e565b5b60018516156123ef5780820291505b80810290506123fd856123ad565b94506123c4565b94509492505050565b60008261241d57600190506124d9565b8161242b57600090506124d9565b8160018114612441576002811461244b5761247a565b60019150506124d9565b60ff84111561245d5761245c61237e565b5b8360020a9150848211156124745761247361237e565b5b506124d9565b5060208310610133831016604e8410600b84101617156124af5782820a9050838111156124aa576124a961237e565b5b6124d9565b6124bc84848460016123ba565b925090508184048111156124d3576124d261237e565b5b81810290505b9392505050565b60006124eb82612083565b91506124f6836121ac565b92506125237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461240d565b905092915050565b600061253682612083565b915061254183612083565b925082820261254f81612083565b915082820484148315176125665761256561237e565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125a3602083611f79565b91506125ae8261256d565b602082019050919050565b600060208201905081810360008301526125d281612596565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061260f601783611f79565b915061261a826125d9565b602082019050919050565b6000602082019050818103600083015261263e81612602565b9050919050565b7f6c657373207468616e2031302500000000000000000000000000000000000000600082015250565b600061267b600d83611f79565b915061268682612645565b602082019050919050565b600060208201905081810360008301526126aa8161266e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061270d602483611f79565b9150612718826126b1565b604082019050919050565b6000602082019050818103600083015261273c81612700565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061279f602283611f79565b91506127aa82612743565b604082019050919050565b600060208201905081810360008301526127ce81612792565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612831602583611f79565b915061283c826127d5565b604082019050919050565b6000602082019050818103600083015261286081612824565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006128c3602383611f79565b91506128ce82612867565b604082019050919050565b600060208201905081810360008301526128f2816128b6565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612955602983611f79565b9150612960826128f9565b604082019050919050565b6000602082019050818103600083015261298481612948565b9050919050565b7f54726164696e67206973206e6f74206f70656e00000000000000000000000000600082015250565b60006129c1601383611f79565b91506129cc8261298b565b602082019050919050565b600060208201905081810360008301526129f0816129b4565b9050919050565b6000612a0282612083565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a3457612a3361237e565b5b600182019050919050565b6000612a4a82612083565b9150612a5583612083565b9250828203905081811115612a6d57612a6c61237e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612aad82612083565b9150612ab883612083565b925082612ac857612ac7612a73565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b2f602183611f79565b9150612b3a82612ad3565b604082019050919050565b60006020820190508181036000830152612b5e81612b22565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612bd281612057565b92915050565b600060208284031215612bee57612bed612020565b5b6000612bfc84828501612bc3565b91505092915050565b6000819050919050565b6000819050919050565b6000612c34612c2f612c2a84612c05565b612c0f565b612083565b9050919050565b612c4481612c19565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c7f81612045565b82525050565b6000612c918383612c76565b60208301905092915050565b6000602082019050919050565b6000612cb582612c4a565b612cbf8185612c55565b9350612cca83612c66565b8060005b83811015612cfb578151612ce28882612c85565b9750612ced83612c9d565b925050600181019050612cce565b5085935050505092915050565b600060a082019050612d1d600083018861212f565b612d2a6020830187612c3b565b8181036040830152612d3c8186612caa565b9050612d4b60608301856121e3565b612d58608083018461212f565b9695505050505050565b6000612d6d82612083565b9150612d7883612083565b9250828201905080821115612d9057612d8f61237e565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612dcc601b83611f79565b9150612dd782612d96565b602082019050919050565b60006020820190508181036000830152612dfb81612dbf565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204709466f60e0b07b1ede99f693e48899b4eb87edd9f45cc5c08b0ea9d88db54a64736f6c63430008130033

Deployed Bytecode Sourcemap

3582:7231:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5395:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6228:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5672:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6397:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4226:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5581:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4062:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4616:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5775:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2663:148;;;;;;;;;;;;;:::i;:::-;;2449:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5486:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5902:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4026:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4369:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10605:168;;;;;;;;;;;;;:::i;:::-;;6890:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6718:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6077:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9715:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7067;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7186:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5395:83;5432:13;5465:5;;;;;;;;;;;;;;;;;5458:12;;5395:83;:::o;6228:161::-;6303:4;6320:39;6329:12;:10;:12::i;:::-;6343:7;6352:6;6320:8;:39::i;:::-;6377:4;6370:11;;6228:161;;;;:::o;5672:95::-;5725:7;4296:2;4349;:13;;;;:::i;:::-;4340:6;:22;;;;:::i;:::-;5745:14;;5672:95;:::o;6397:313::-;6495:4;6512:36;6522:6;6530:9;6541:6;6512:9;:36::i;:::-;6559:121;6568:6;6576:12;:10;:12::i;:::-;6590:89;6628:6;6590:89;;;;;;;;;;;;;;;;;:11;:19;6602:6;6590:19;;;;;;;;;;;;;;;:33;6610:12;:10;:12::i;:::-;6590:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6559:8;:121::i;:::-;6698:4;6691:11;;6397:313;;;;;:::o;4226:26::-;;;;:::o;5581:83::-;5622:5;4296:2;5640:16;;5581:83;:::o;4062:30::-;;;;:::o;4616:28::-;;;;;;;;;;;;;:::o;5775:119::-;5841:7;5868:9;:18;5878:7;5868:18;;;;;;;;;;;;;;;;5861:25;;5775:119;;;:::o;2663:148::-;2586:12;:10;:12::i;:::-;2576:22;;:6;;;;;;;;;;:22;;;2568:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2770:1:::1;2733:40;;2754:6;::::0;::::1;;;;;;;;2733:40;;;;;;;;;;;;2801:1;2784:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2663:148::o:0;2449:79::-;2487:7;2514:6;;;;;;;;;;;2507:13;;2449:79;:::o;5486:87::-;5525:13;5558:7;;;;;;;;;;;;;;;;;5551:14;;5486:87;:::o;5902:167::-;5980:4;5997:42;6007:12;:10;:12::i;:::-;6021:9;6032:6;5997:9;:42::i;:::-;6057:4;6050:11;;5902:167;;;;:::o;4026:29::-;;;;:::o;4369:55::-;;;;:::o;10605:168::-;2586:12;:10;:12::i;:::-;2576:22;;:6;;;;;;;;;;:22;;;2568:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10669:11:::1;;;;;;;;;;;10668:12;10660:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10732:4;10718:11;;:18;;;;;;;;;;;;;;;;;;10761:4;10747:11;;:18;;;;;;;;;;;;;;;;;;10605:168::o:0;6890:169::-;2586:12;:10;:12::i;:::-;2576:22;;:6;;;;;;;;;;:22;;;2568:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6985:12:::1;6969:13;:28;;;;7031:2;7016:13;;:17;;7008:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;6890:169:::0;:::o;6718:164::-;2586:12;:10;:12::i;:::-;2576:22;;:6;;;;;;;;;;:22;;;2568:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6810:11:::1;6795:12;:26;;;;6854:2;6840:12;;:16;;6832:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;6718:164:::0;:::o;6077:143::-;6158:7;6185:11;:18;6197:5;6185:18;;;;;;;;;;;;;;;:27;6204:7;6185:27;;;;;;;;;;;;;;;;6178:34;;6077:143;;;;:::o;9715:111::-;2586:12;:10;:12::i;:::-;2576:22;;:6;;;;;;;;;;:22;;;2568:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9812:6:::1;9792:17;:26;;;;9715:111:::0;:::o;7067:::-;2586:12;:10;:12::i;:::-;2576:22;;:6;;;;;;;;;;:22;;;2568:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7161:9:::1;7148:10;;:22;;;;;;;;;;;;;;;;;;7067:111:::0;:::o;7186:136::-;2586:12;:10;:12::i;:::-;2576:22;;:6;;;;;;;;;;:22;;;2568:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7306:8:::1;7276:18;:27;7295:7;7276:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;7186:136:::0;;:::o;204:98::-;257:7;284:10;277:17;;204:98;:::o;7330:335::-;7440:1;7423:19;;:5;:19;;;7415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7521:1;7502:21;;:7;:21;;;7494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7603:6;7573:11;:18;7585:5;7573:18;;;;;;;;;;;;;;;:27;7592:7;7573:27;;;;;;;;;;;;;;;:36;;;;7641:7;7625:32;;7634:5;7625:32;;;7650:6;7625:32;;;;;;:::i;:::-;;;;;;;;7330:335;;;:::o;7673:2034::-;7777:1;7761:18;;:4;:18;;;7753:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7854:1;7840:16;;:2;:16;;;7832:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7924:1;7915:6;:10;7907:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7992:11;;;;;;;;;;;:39;;;;8007:18;:24;8026:4;8007:24;;;;;;;;;;;;;;;;;;;;;;;;;7992:39;:65;;;;8035:18;:22;8054:2;8035:22;;;;;;;;;;;;;;;;;;;;;;;;;7992:65;7984:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;8094:17;8129:18;:24;8148:4;8129:24;;;;;;;;;;;;;;;;;;;;;;;;;8128:25;:51;;;;;8157:18;:22;8176:2;8157:22;;;;;;;;;;;;;;;;;;;;;;;;;8156:23;8128:51;8124:994;;;8208:13;;;;;;;;;;;8200:21;;:4;:21;;;:55;;;;;8239:15;;;;;;;;;;;8225:30;;:2;:30;;;;8200:55;8196:216;;;8278:9;;:11;;;;;;;;;:::i;:::-;;;;;;8320:76;8392:3;8320:67;8342:15;;8332:9;;:25;8331:55;;8372:14;;8331:55;;;8359:12;;8331:55;8320:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8308:88;;8196:216;8437:13;;;;;;;;;;;8431:19;;:2;:19;;;:43;;;;;8469:4;8454:20;;:4;:20;;;;8431:43;8428:203;;;8494:9;;:11;;;;;;;;;:::i;:::-;;;;;;8536:79;8611:3;8536:70;8558:16;;8548:9;;:26;8547:58;;8590:15;;8547:58;;;8576:13;;8547:58;8536:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8524:91;;8428:203;8647:28;8678:24;8696:4;8678:9;:24::i;:::-;8647:55;;8722:6;;;;;;;;;;;8721:7;:30;;;;;8738:13;;;;;;;;;;;8732:19;;:2;:19;;;8721:30;:45;;;;;8755:11;;;;;;;;;;;8721:45;:87;;;;;8791:17;;8770:20;:38;8721:87;:119;;;;;8822:18;;8812:9;;:28;8721:119;8717:390;;;8861:38;8878:20;8861:16;:38::i;:::-;8918:26;8947:21;8918:50;;9011:1;8990:18;:22;8987:105;;;9037:35;9050:21;9037:12;:35::i;:::-;8987:105;8842:265;8717:390;8181:937;8124:994;9143:1;9133:9;:11;9130:394;;;9173:18;;9163:9;;:28;9160:351;;;9236:39;9265:9;9236;:24;9254:4;9236:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9211:9;:24;9229:4;9211:24;;;;;;;;;;;;;;;:64;;;;9322:4;9299:39;;9308:4;9299:39;;;9328:9;9299:39;;;;;;:::i;:::-;;;;;;;;9160:351;;;9399:36;9425:9;9399;:21;9409:10;;;;;;;;;;;9399:21;;;;;;;;;;;;;;;;:25;;:36;;;;:::i;:::-;9377:9;:21;9387:10;;;;;;;;;;;9377:21;;;;;;;;;;;;;;;:58;;;;9474:10;;;;;;;;;;;9459:36;;9468:4;9459:36;;;9485:9;9459:36;;;;;;:::i;:::-;;;;;;;;9160:351;9130:394;9550:27;9570:6;9550:9;:15;9560:4;9550:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9534:9;:15;9544:4;9534:15;;;;;;;;;;;;;;;:43;;;;9602:40;9620:21;9631:9;9620:6;:10;;:21;;;;:::i;:::-;9602:9;:13;9612:2;9602:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9588:9;:13;9598:2;9588:13;;;;;;;;;;;;;;;:54;;;;9673:2;9658:41;;9667:4;9658:41;;;9677:21;9688:9;9677:6;:10;;:21;;;;:::i;:::-;9658:41;;;;;;:::i;:::-;;;;;;;;7742:1965;7673:2034;;;:::o;1341:190::-;1427:7;1460:1;1455;:6;;1463:12;1447:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1487:9;1503:1;1499;:5;;;;:::i;:::-;1487:17;;1522:1;1515:8;;;1341:190;;;;;:::o;1539:246::-;1597:7;1626:1;1621;:6;1617:47;;1651:1;1644:8;;;;1617:47;1674:9;1690:1;1686;:5;;;;:::i;:::-;1674:17;;1719:1;1714;1710;:5;;;;:::i;:::-;:10;1702:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1776:1;1769:8;;;1539:246;;;;;:::o;1793:132::-;1851:7;1878:39;1882:1;1885;1878:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1871:46;;1793:132;;;;:::o;9834:555::-;4762:4;4753:6;;:13;;;;;;;;;;;;;;;;;;9928:1:::1;9915:11;:14:::0;9912:27;9931:7:::1;9912:27;9953:11;;;;;;;;;;;9949:25:::0;9966:7:::1;9949:25;9984:21;10022:1;10008:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9984:40;;10053:4;10035;10040:1;10035:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10079:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10069:4;10074:1;10069:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10112:62;10129:4;10144:15;;;;;;;;;;;10162:11;10112:8;:62::i;:::-;10185:15;;;;;;;;;;;:66;;;10266:11;10292:1;10308:4;10335;10355:15;10185:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9901:488;4777:1;4798:5:::0;4789:6;;:14;;;;;;;;;;;;;;;;;;9834:555;:::o;10505:92::-;10562:10;;;;;;;;;;;:19;;:27;10582:6;10562:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10505:92;:::o;1010:179::-;1068:7;1088:9;1104:1;1100;:5;;;;:::i;:::-;1088:17;;1129:1;1124;:6;;1116:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1180:1;1173:8;;;1010:179;;;;:::o;1197:136::-;1255:7;1282:43;1286:1;1289;1282:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1275:50;;1197:136;;;;:::o;1933:189::-;2019:7;2051:1;2047;:5;2054:12;2039:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2078:9;2094:1;2090;:5;;;;:::i;:::-;2078:17;;2113:1;2106:8;;;1933:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4940:24;4958:5;4940:24;:::i;:::-;4935:3;4928:37;4853:118;;:::o;4977:222::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;4977:222;;;;:::o;5205:329::-;5264:6;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5205:329;;;;:::o;5540:::-;5599:6;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5540:329;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:104::-;6400:7;6429:24;6447:5;6429:24;:::i;:::-;6418:35;;6355:104;;;:::o;6465:138::-;6546:32;6572:5;6546:32;:::i;:::-;6539:5;6536:43;6526:71;;6593:1;6590;6583:12;6526:71;6465:138;:::o;6609:155::-;6663:5;6701:6;6688:20;6679:29;;6717:41;6752:5;6717:41;:::i;:::-;6609:155;;;;:::o;6770:345::-;6837:6;6886:2;6874:9;6865:7;6861:23;6857:32;6854:119;;;6892:79;;:::i;:::-;6854:119;7012:1;7037:61;7090:7;7081:6;7070:9;7066:22;7037:61;:::i;:::-;7027:71;;6983:125;6770:345;;;;:::o;7121:116::-;7191:21;7206:5;7191:21;:::i;:::-;7184:5;7181:32;7171:60;;7227:1;7224;7217:12;7171:60;7121:116;:::o;7243:133::-;7286:5;7324:6;7311:20;7302:29;;7340:30;7364:5;7340:30;:::i;:::-;7243:133;;;;:::o;7382:468::-;7447:6;7455;7504:2;7492:9;7483:7;7479:23;7475:32;7472:119;;;7510:79;;:::i;:::-;7472:119;7630:1;7655:53;7700:7;7691:6;7680:9;7676:22;7655:53;:::i;:::-;7645:63;;7601:117;7757:2;7783:50;7825:7;7816:6;7805:9;7801:22;7783:50;:::i;:::-;7773:60;;7728:115;7382:468;;;;;:::o;7856:180::-;7904:77;7901:1;7894:88;8001:4;7998:1;7991:15;8025:4;8022:1;8015:15;8042:102;8084:8;8131:5;8128:1;8124:13;8103:34;;8042:102;;;:::o;8150:848::-;8211:5;8218:4;8242:6;8233:15;;8266:5;8257:14;;8280:712;8301:1;8291:8;8288:15;8280:712;;;8396:4;8391:3;8387:14;8381:4;8378:24;8375:50;;;8405:18;;:::i;:::-;8375:50;8455:1;8445:8;8441:16;8438:451;;;8870:4;8863:5;8859:16;8850:25;;8438:451;8920:4;8914;8910:15;8902:23;;8950:32;8973:8;8950:32;:::i;:::-;8938:44;;8280:712;;;8150:848;;;;;;;:::o;9004:1073::-;9058:5;9249:8;9239:40;;9270:1;9261:10;;9272:5;;9239:40;9298:4;9288:36;;9315:1;9306:10;;9317:5;;9288:36;9384:4;9432:1;9427:27;;;;9468:1;9463:191;;;;9377:277;;9427:27;9445:1;9436:10;;9447:5;;;9463:191;9508:3;9498:8;9495:17;9492:43;;;9515:18;;:::i;:::-;9492:43;9564:8;9561:1;9557:16;9548:25;;9599:3;9592:5;9589:14;9586:40;;;9606:18;;:::i;:::-;9586:40;9639:5;;;9377:277;;9763:2;9753:8;9750:16;9744:3;9738:4;9735:13;9731:36;9713:2;9703:8;9700:16;9695:2;9689:4;9686:12;9682:35;9666:111;9663:246;;;9819:8;9813:4;9809:19;9800:28;;9854:3;9847:5;9844:14;9841:40;;;9861:18;;:::i;:::-;9841:40;9894:5;;9663:246;9934:42;9972:3;9962:8;9956:4;9953:1;9934:42;:::i;:::-;9919:57;;;;10008:4;10003:3;9999:14;9992:5;9989:25;9986:51;;;10017:18;;:::i;:::-;9986:51;10066:4;10059:5;10055:16;10046:25;;9004:1073;;;;;;:::o;10083:281::-;10141:5;10165:23;10183:4;10165:23;:::i;:::-;10157:31;;10209:25;10225:8;10209:25;:::i;:::-;10197:37;;10253:104;10290:66;10280:8;10274:4;10253:104;:::i;:::-;10244:113;;10083:281;;;;:::o;10370:410::-;10410:7;10433:20;10451:1;10433:20;:::i;:::-;10428:25;;10467:20;10485:1;10467:20;:::i;:::-;10462:25;;10522:1;10519;10515:9;10544:30;10562:11;10544:30;:::i;:::-;10533:41;;10723:1;10714:7;10710:15;10707:1;10704:22;10684:1;10677:9;10657:83;10634:139;;10753:18;;:::i;:::-;10634:139;10418:362;10370:410;;;;:::o;10786:182::-;10926:34;10922:1;10914:6;10910:14;10903:58;10786:182;:::o;10974:366::-;11116:3;11137:67;11201:2;11196:3;11137:67;:::i;:::-;11130:74;;11213:93;11302:3;11213:93;:::i;:::-;11331:2;11326:3;11322:12;11315:19;;10974:366;;;:::o;11346:419::-;11512:4;11550:2;11539:9;11535:18;11527:26;;11599:9;11593:4;11589:20;11585:1;11574:9;11570:17;11563:47;11627:131;11753:4;11627:131;:::i;:::-;11619:139;;11346:419;;;:::o;11771:173::-;11911:25;11907:1;11899:6;11895:14;11888:49;11771:173;:::o;11950:366::-;12092:3;12113:67;12177:2;12172:3;12113:67;:::i;:::-;12106:74;;12189:93;12278:3;12189:93;:::i;:::-;12307:2;12302:3;12298:12;12291:19;;11950:366;;;:::o;12322:419::-;12488:4;12526:2;12515:9;12511:18;12503:26;;12575:9;12569:4;12565:20;12561:1;12550:9;12546:17;12539:47;12603:131;12729:4;12603:131;:::i;:::-;12595:139;;12322:419;;;:::o;12747:163::-;12887:15;12883:1;12875:6;12871:14;12864:39;12747:163;:::o;12916:366::-;13058:3;13079:67;13143:2;13138:3;13079:67;:::i;:::-;13072:74;;13155:93;13244:3;13155:93;:::i;:::-;13273:2;13268:3;13264:12;13257:19;;12916:366;;;:::o;13288:419::-;13454:4;13492:2;13481:9;13477:18;13469:26;;13541:9;13535:4;13531:20;13527:1;13516:9;13512:17;13505:47;13569:131;13695:4;13569:131;:::i;:::-;13561:139;;13288:419;;;:::o;13713:223::-;13853:34;13849:1;13841:6;13837:14;13830:58;13922:6;13917:2;13909:6;13905:15;13898:31;13713:223;:::o;13942:366::-;14084:3;14105:67;14169:2;14164:3;14105:67;:::i;:::-;14098:74;;14181:93;14270:3;14181:93;:::i;:::-;14299:2;14294:3;14290:12;14283:19;;13942:366;;;:::o;14314:419::-;14480:4;14518:2;14507:9;14503:18;14495:26;;14567:9;14561:4;14557:20;14553:1;14542:9;14538:17;14531:47;14595:131;14721:4;14595:131;:::i;:::-;14587:139;;14314:419;;;:::o;14739:221::-;14879:34;14875:1;14867:6;14863:14;14856:58;14948:4;14943:2;14935:6;14931:15;14924:29;14739:221;:::o;14966:366::-;15108:3;15129:67;15193:2;15188:3;15129:67;:::i;:::-;15122:74;;15205:93;15294:3;15205:93;:::i;:::-;15323:2;15318:3;15314:12;15307:19;;14966:366;;;:::o;15338:419::-;15504:4;15542:2;15531:9;15527:18;15519:26;;15591:9;15585:4;15581:20;15577:1;15566:9;15562:17;15555:47;15619:131;15745:4;15619:131;:::i;:::-;15611:139;;15338:419;;;:::o;15763:224::-;15903:34;15899:1;15891:6;15887:14;15880:58;15972:7;15967:2;15959:6;15955:15;15948:32;15763:224;:::o;15993:366::-;16135:3;16156:67;16220:2;16215:3;16156:67;:::i;:::-;16149:74;;16232:93;16321:3;16232:93;:::i;:::-;16350:2;16345:3;16341:12;16334:19;;15993:366;;;:::o;16365:419::-;16531:4;16569:2;16558:9;16554:18;16546:26;;16618:9;16612:4;16608:20;16604:1;16593:9;16589:17;16582:47;16646:131;16772:4;16646:131;:::i;:::-;16638:139;;16365:419;;;:::o;16790:222::-;16930:34;16926:1;16918:6;16914:14;16907:58;16999:5;16994:2;16986:6;16982:15;16975:30;16790:222;:::o;17018:366::-;17160:3;17181:67;17245:2;17240:3;17181:67;:::i;:::-;17174:74;;17257:93;17346:3;17257:93;:::i;:::-;17375:2;17370:3;17366:12;17359:19;;17018:366;;;:::o;17390:419::-;17556:4;17594:2;17583:9;17579:18;17571:26;;17643:9;17637:4;17633:20;17629:1;17618:9;17614:17;17607:47;17671:131;17797:4;17671:131;:::i;:::-;17663:139;;17390:419;;;:::o;17815:228::-;17955:34;17951:1;17943:6;17939:14;17932:58;18024:11;18019:2;18011:6;18007:15;18000:36;17815:228;:::o;18049:366::-;18191:3;18212:67;18276:2;18271:3;18212:67;:::i;:::-;18205:74;;18288:93;18377:3;18288:93;:::i;:::-;18406:2;18401:3;18397:12;18390:19;;18049:366;;;:::o;18421:419::-;18587:4;18625:2;18614:9;18610:18;18602:26;;18674:9;18668:4;18664:20;18660:1;18649:9;18645:17;18638:47;18702:131;18828:4;18702:131;:::i;:::-;18694:139;;18421:419;;;:::o;18846:169::-;18986:21;18982:1;18974:6;18970:14;18963:45;18846:169;:::o;19021:366::-;19163:3;19184:67;19248:2;19243:3;19184:67;:::i;:::-;19177:74;;19260:93;19349:3;19260:93;:::i;:::-;19378:2;19373:3;19369:12;19362:19;;19021:366;;;:::o;19393:419::-;19559:4;19597:2;19586:9;19582:18;19574:26;;19646:9;19640:4;19636:20;19632:1;19621:9;19617:17;19610:47;19674:131;19800:4;19674:131;:::i;:::-;19666:139;;19393:419;;;:::o;19818:233::-;19857:3;19880:24;19898:5;19880:24;:::i;:::-;19871:33;;19926:66;19919:5;19916:77;19913:103;;19996:18;;:::i;:::-;19913:103;20043:1;20036:5;20032:13;20025:20;;19818:233;;;:::o;20057:194::-;20097:4;20117:20;20135:1;20117:20;:::i;:::-;20112:25;;20151:20;20169:1;20151:20;:::i;:::-;20146:25;;20195:1;20192;20188:9;20180:17;;20219:1;20213:4;20210:11;20207:37;;;20224:18;;:::i;:::-;20207:37;20057:194;;;;:::o;20257:180::-;20305:77;20302:1;20295:88;20402:4;20399:1;20392:15;20426:4;20423:1;20416:15;20443:185;20483:1;20500:20;20518:1;20500:20;:::i;:::-;20495:25;;20534:20;20552:1;20534:20;:::i;:::-;20529:25;;20573:1;20563:35;;20578:18;;:::i;:::-;20563:35;20620:1;20617;20613:9;20608:14;;20443:185;;;;:::o;20634:220::-;20774:34;20770:1;20762:6;20758:14;20751:58;20843:3;20838:2;20830:6;20826:15;20819:28;20634:220;:::o;20860:366::-;21002:3;21023:67;21087:2;21082:3;21023:67;:::i;:::-;21016:74;;21099:93;21188:3;21099:93;:::i;:::-;21217:2;21212:3;21208:12;21201:19;;20860:366;;;:::o;21232:419::-;21398:4;21436:2;21425:9;21421:18;21413:26;;21485:9;21479:4;21475:20;21471:1;21460:9;21456:17;21449:47;21513:131;21639:4;21513:131;:::i;:::-;21505:139;;21232:419;;;:::o;21657:180::-;21705:77;21702:1;21695:88;21802:4;21799:1;21792:15;21826:4;21823:1;21816:15;21843:180;21891:77;21888:1;21881:88;21988:4;21985:1;21978:15;22012:4;22009:1;22002:15;22029:143;22086:5;22117:6;22111:13;22102:22;;22133:33;22160:5;22133:33;:::i;:::-;22029:143;;;;:::o;22178:351::-;22248:6;22297:2;22285:9;22276:7;22272:23;22268:32;22265:119;;;22303:79;;:::i;:::-;22265:119;22423:1;22448:64;22504:7;22495:6;22484:9;22480:22;22448:64;:::i;:::-;22438:74;;22394:128;22178:351;;;;:::o;22535:85::-;22580:7;22609:5;22598:16;;22535:85;;;:::o;22626:60::-;22654:3;22675:5;22668:12;;22626:60;;;:::o;22692:158::-;22750:9;22783:61;22801:42;22810:32;22836:5;22810:32;:::i;:::-;22801:42;:::i;:::-;22783:61;:::i;:::-;22770:74;;22692:158;;;:::o;22856:147::-;22951:45;22990:5;22951:45;:::i;:::-;22946:3;22939:58;22856:147;;:::o;23009:114::-;23076:6;23110:5;23104:12;23094:22;;23009:114;;;:::o;23129:184::-;23228:11;23262:6;23257:3;23250:19;23302:4;23297:3;23293:14;23278:29;;23129:184;;;;:::o;23319:132::-;23386:4;23409:3;23401:11;;23439:4;23434:3;23430:14;23422:22;;23319:132;;;:::o;23457:108::-;23534:24;23552:5;23534:24;:::i;:::-;23529:3;23522:37;23457:108;;:::o;23571:179::-;23640:10;23661:46;23703:3;23695:6;23661:46;:::i;:::-;23739:4;23734:3;23730:14;23716:28;;23571:179;;;;:::o;23756:113::-;23826:4;23858;23853:3;23849:14;23841:22;;23756:113;;;:::o;23905:732::-;24024:3;24053:54;24101:5;24053:54;:::i;:::-;24123:86;24202:6;24197:3;24123:86;:::i;:::-;24116:93;;24233:56;24283:5;24233:56;:::i;:::-;24312:7;24343:1;24328:284;24353:6;24350:1;24347:13;24328:284;;;24429:6;24423:13;24456:63;24515:3;24500:13;24456:63;:::i;:::-;24449:70;;24542:60;24595:6;24542:60;:::i;:::-;24532:70;;24388:224;24375:1;24372;24368:9;24363:14;;24328:284;;;24332:14;24628:3;24621:10;;24029:608;;;23905:732;;;;:::o;24643:831::-;24906:4;24944:3;24933:9;24929:19;24921:27;;24958:71;25026:1;25015:9;25011:17;25002:6;24958:71;:::i;:::-;25039:80;25115:2;25104:9;25100:18;25091:6;25039:80;:::i;:::-;25166:9;25160:4;25156:20;25151:2;25140:9;25136:18;25129:48;25194:108;25297:4;25288:6;25194:108;:::i;:::-;25186:116;;25312:72;25380:2;25369:9;25365:18;25356:6;25312:72;:::i;:::-;25394:73;25462:3;25451:9;25447:19;25438:6;25394:73;:::i;:::-;24643:831;;;;;;;;:::o;25480:191::-;25520:3;25539:20;25557:1;25539:20;:::i;:::-;25534:25;;25573:20;25591:1;25573:20;:::i;:::-;25568:25;;25616:1;25613;25609:9;25602:16;;25637:3;25634:1;25631:10;25628:36;;;25644:18;;:::i;:::-;25628:36;25480:191;;;;:::o;25677:177::-;25817:29;25813:1;25805:6;25801:14;25794:53;25677:177;:::o;25860:366::-;26002:3;26023:67;26087:2;26082:3;26023:67;:::i;:::-;26016:74;;26099:93;26188:3;26099:93;:::i;:::-;26217:2;26212:3;26208:12;26201:19;;25860:366;;;:::o;26232:419::-;26398:4;26436:2;26425:9;26421:18;26413:26;;26485:9;26479:4;26475:20;26471:1;26460:9;26456:17;26449:47;26513:131;26639:4;26513:131;:::i;:::-;26505:139;;26232:419;;;:::o

Swarm Source

ipfs://4709466f60e0b07b1ede99f693e48899b4eb87edd9f45cc5c08b0ea9d88db54a

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  ]

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.