ETH Price: $2,450.87 (-0.86%)

Contract

0x69D07e3685c9f440daA731e64EC843e13D8FA19a
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve172221042023-05-09 9:48:35523 days ago1683625715IN
0x69D07e36...13D8FA19a
0 ETH0.0025824854.89396928
Approve169637882023-04-02 20:32:47559 days ago1680467567IN
0x69D07e36...13D8FA19a
0 ETH0.0011720424.91319759
Approve168828512023-03-22 11:30:47571 days ago1679484647IN
0x69D07e36...13D8FA19a
0 ETH0.0006113712.97893478
Approve168741232023-03-21 6:05:59572 days ago1679378759IN
0x69D07e36...13D8FA19a
0 ETH0.0005838512.39484004
Approve168660522023-03-20 2:56:59573 days ago1679281019IN
0x69D07e36...13D8FA19a
0 ETH0.0009397419.95
Approve168357622023-03-15 20:46:59577 days ago1678913219IN
0x69D07e36...13D8FA19a
0 ETH0.0011564324.55023228
Approve168352702023-03-15 19:07:35578 days ago1678907255IN
0x69D07e36...13D8FA19a
0 ETH0.0012859627.3
Transfer168352642023-03-15 19:06:23578 days ago1678907183IN
0x69D07e36...13D8FA19a
0 ETH0.0010848330
Approve168352512023-03-15 19:03:47578 days ago1678907027IN
0x69D07e36...13D8FA19a
0 ETH0.0011425724.38633466
Approve168321842023-03-15 8:42:35578 days ago1678869755IN
0x69D07e36...13D8FA19a
0 ETH0.0010373422.05
Approve168320232023-03-15 8:09:35578 days ago1678867775IN
0x69D07e36...13D8FA19a
0 ETH0.0009672620.53416884
Renounce Ownersh...168303232023-03-15 2:25:11578 days ago1678847111IN
0x69D07e36...13D8FA19a
0 ETH0.0005142722.03135487
Design Buy168303082023-03-15 2:21:59578 days ago1678846919IN
0x69D07e36...13D8FA19a
0 ETH0.0007164124.88763401
Design Buy168303082023-03-15 2:21:59578 days ago1678846919IN
0x69D07e36...13D8FA19a
0 ETH0.000774124.50790756
Design Sell168302732023-03-15 2:14:59578 days ago1678846499IN
0x69D07e36...13D8FA19a
0 ETH0.0007708924.42261907
Approve168291702023-03-14 22:30:59578 days ago1678833059IN
0x69D07e36...13D8FA19a
0 ETH0.0018370939
Approve168290482023-03-14 22:06:35578 days ago1678831595IN
0x69D07e36...13D8FA19a
0 ETH0.0014363230.53093641
Approve168286472023-03-14 20:44:35578 days ago1678826675IN
0x69D07e36...13D8FA19a
0 ETH0.0013399128.48146805
Approve168286282023-03-14 20:40:35578 days ago1678826435IN
0x69D07e36...13D8FA19a
0 ETH0.0014305830.4088847
Approve168286072023-03-14 20:36:23578 days ago1678826183IN
0x69D07e36...13D8FA19a
0 ETH0.0015445633
Approve168286032023-03-14 20:35:35578 days ago1678826135IN
0x69D07e36...13D8FA19a
0 ETH0.0015394132.68057547
Approve168286022023-03-14 20:35:23578 days ago1678826123IN
0x69D07e36...13D8FA19a
0 ETH0.0014201430.14855508
Approve168286012023-03-14 20:35:11578 days ago1678826111IN
0x69D07e36...13D8FA19a
0 ETH0.0014749331.31167132
Approve168285972023-03-14 20:34:23578 days ago1678826063IN
0x69D07e36...13D8FA19a
0 ETH0.0015042831.93462315
Approve168285872023-03-14 20:32:23578 days ago1678825943IN
0x69D07e36...13D8FA19a
0 ETH0.0015332632.55
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
169637902023-04-02 20:33:11559 days ago1680467591
0x69D07e36...13D8FA19a
0.00003773 ETH
169637902023-04-02 20:33:11559 days ago1680467591
0x69D07e36...13D8FA19a
0.00003773 ETH
168888232023-03-23 7:40:47570 days ago1679557247
0x69D07e36...13D8FA19a
0.0000077 ETH
168888232023-03-23 7:40:47570 days ago1679557247
0x69D07e36...13D8FA19a
0.0000077 ETH
168828612023-03-22 11:32:47571 days ago1679484767
0x69D07e36...13D8FA19a
0.00000762 ETH
168828612023-03-22 11:32:47571 days ago1679484767
0x69D07e36...13D8FA19a
0.00000762 ETH
168741272023-03-21 6:06:47572 days ago1679378807
0x69D07e36...13D8FA19a
0.00000295 ETH
168741272023-03-21 6:06:47572 days ago1679378807
0x69D07e36...13D8FA19a
0.00000295 ETH
168660532023-03-20 2:57:11573 days ago1679281031
0x69D07e36...13D8FA19a
0.0000131 ETH
168660532023-03-20 2:57:11573 days ago1679281031
0x69D07e36...13D8FA19a
0.0000131 ETH
168452472023-03-17 4:45:59576 days ago1679028359
0x69D07e36...13D8FA19a
0.00001909 ETH
168452472023-03-17 4:45:59576 days ago1679028359
0x69D07e36...13D8FA19a
0.00001909 ETH
168400792023-03-16 11:21:47577 days ago1678965707
0x69D07e36...13D8FA19a
0.00002727 ETH
168400792023-03-16 11:21:47577 days ago1678965707
0x69D07e36...13D8FA19a
0.00002727 ETH
168353632023-03-15 19:26:23577 days ago1678908383
0x69D07e36...13D8FA19a
0.00000687 ETH
168353632023-03-15 19:26:23577 days ago1678908383
0x69D07e36...13D8FA19a
0.00000687 ETH
168353612023-03-15 19:25:59577 days ago1678908359
0x69D07e36...13D8FA19a
0.00000486 ETH
168353612023-03-15 19:25:59577 days ago1678908359
0x69D07e36...13D8FA19a
0.00000486 ETH
168353522023-03-15 19:24:11577 days ago1678908251
0x69D07e36...13D8FA19a
0.00001005 ETH
168353522023-03-15 19:24:11577 days ago1678908251
0x69D07e36...13D8FA19a
0.00001005 ETH
168353162023-03-15 19:16:47578 days ago1678907807
0x69D07e36...13D8FA19a
0.00030085 ETH
168353162023-03-15 19:16:47578 days ago1678907807
0x69D07e36...13D8FA19a
0.00030085 ETH
168352532023-03-15 19:04:11578 days ago1678907051
0x69D07e36...13D8FA19a
0.00003587 ETH
168352532023-03-15 19:04:11578 days ago1678907051
0x69D07e36...13D8FA19a
0.00003587 ETH
168352492023-03-15 19:03:23578 days ago1678907003
0x69D07e36...13D8FA19a
0.00001912 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-14
*/

// SPDX-License-Identifier: MIT

/**
 * Website: https://brc20.com/
 * Twitter: https://twitter.com/brc20_btc
 * Telegram: https://t.me/BRC20_BTC20
*/

pragma solidity ^0.8.0;

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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);
}

interface IUniswapRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

abstract contract Ownable {
    address internal _owner;

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

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

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "you are not owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "new is 0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract ERC20 is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address public fundAddress;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    mapping(address => bool) public _isExcludeFromFee;
    
    uint256 private _totalSupply;

    IUniswapRouter public _uniswapRouter;

    mapping(address => bool) public isMarketPair;
    bool private inSwap;

    uint256 private constant MAX = ~uint256(0);

    uint256 public _buyFundFee = 250;
    uint256 public _buyLPFee = 50;
    uint256 public _sellFundFee = 250;
    uint256 public _sellLPFee = 50;

    address public _uniswapPair;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor (){
        _name = "BRC-20";
        _symbol = "BRC-20";
        _decimals = 18;
        uint256 Supply = 100000000;

        IUniswapRouter swapRouter = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _uniswapRouter = swapRouter;
        _allowances[address(this)][address(swapRouter)] = MAX;

        IUniswapFactory swapFactory = IUniswapFactory(swapRouter.factory());
        address swapPair = swapFactory.createPair(address(this), swapRouter.WETH());
        _uniswapPair = swapPair;
        isMarketPair[swapPair] = true;

        _totalSupply = Supply * 10 ** _decimals;

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

        fundAddress = msg.sender;

        _isExcludeFromFee[address(this)] = true;
        _isExcludeFromFee[address(swapRouter)] = true;
        _isExcludeFromFee[msg.sender] = true;
        _isExcludeFromFee[bossWallet] = true;
    }

    function symbol() external view override returns (string memory) {
        return _symbol;
    }

    function name() external view override returns (string memory) {
        return _name;
    }

    function decimals() external view override returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

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

    function DesignBuy(uint256 newFundFee, uint256 newLpFee) public onlyOwner{
        require(newFundFee + newLpFee <= 4000,"too high");
        _buyFundFee = newFundFee;
        _buyLPFee = newLpFee;
    }

    function DesignSell(uint256 newFundFee, uint256 newLpFee) public onlyOwner{
        require(newFundFee + newLpFee <= 4000,"too high");
        _sellFundFee = newFundFee;
        _sellLPFee = newLpFee;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        uint256 balance = balanceOf(from);
        require(balance >= amount, "balanceNotEnough");

        bool takeFee;
        bool sellFlag;

        if (isMarketPair[to] && !inSwap && !_isExcludeFromFee[from] && !_isExcludeFromFee[to]) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if (contractTokenBalance > totalSupply() / 10**8) {
                uint256 taxFee = _buyFundFee + _buyLPFee + _sellFundFee + _sellLPFee;
                uint256 numTokensSellToFund = (amount * taxFee / 5000);
                numTokensSellToFund = numTokensSellToFund > contractTokenBalance ? 
                                                            contractTokenBalance:numTokensSellToFund;
                swapTokenForETH(numTokensSellToFund, taxFee);
            }
        }

        if (!_isExcludeFromFee[from] && !_isExcludeFromFee[to] && !inSwap) {
            takeFee = true;
        }

        if (isMarketPair[to]) { sellFlag = true; }

        _transferToken(from, to, amount, takeFee, sellFlag);
    }

    function _transferToken(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        bool sellFlag
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            uint256 taxFee;

            if (sellFlag) {
                taxFee = _sellFundFee + _sellLPFee;
            } else {
                taxFee = _buyFundFee + _buyLPFee;
            }
            uint256 swapAmount = tAmount * taxFee / 10000;
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _balances[address(this)] = _balances[address(this)] + swapAmount;
                emit Transfer(sender, address(this), swapAmount);
            }
        }

        _balances[recipient] = _balances[recipient] + (tAmount - feeAmount);
        emit Transfer(sender, recipient, tAmount - feeAmount);

    }

    event catchEvent(uint8);

    function swapTokenForETH(uint256 tokenAmount, uint256 taxFee) private lockTheSwap {
        taxFee += taxFee;
        uint256 lpFee = _sellLPFee + _buyLPFee;
        uint256 lpAmount = tokenAmount * lpFee / taxFee;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapRouter.WETH();
        try _uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount - lpAmount,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch { emit catchEvent(0); }

        taxFee -= lpFee;

        uint256 WETHBalance = address(this).balance;
        uint256 fundAmount = WETHBalance * (_buyFundFee + _sellFundFee) * 2 / taxFee;
        if (fundAmount > 0 && fundAddress != address(0)) {
            payable(fundAddress).transfer(fundAmount);
        }

        if (lpAmount > 0) {
            uint256 lpWeth = WETHBalance * lpFee / taxFee;
            if (lpWeth > 0) {
                try _uniswapRouter.addLiquidityETH{value:lpWeth}(
                    address(this), lpAmount,0, 0, fundAddress, block.timestamp
                ) {} catch { emit catchEvent(1); }
            }
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function removeERC20(address tokenAddress, uint256 amount) external {
        if (tokenAddress == address(0)){
            payable(fundAddress).transfer(amount);
        }else if(tokenAddress != address(this)){
            IERC20(tokenAddress).transfer(fundAddress, amount);
        }
    }

    function multiExcludeFromFees(address[] calldata addresses, bool value) public onlyOwner{
        require(addresses.length < 201);
        for (uint256 i; i < addresses.length; ++i) {
            _isExcludeFromFee[addresses[i]] = value;
        }
    }

    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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"","type":"uint8"}],"name":"catchEvent","type":"event"},{"inputs":[{"internalType":"uint256","name":"newFundFee","type":"uint256"},{"internalType":"uint256","name":"newLpFee","type":"uint256"}],"name":"DesignBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFundFee","type":"uint256"},{"internalType":"uint256","name":"newLpFee","type":"uint256"}],"name":"DesignSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludeFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"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":"view","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"multiExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260fa600c556032600d5560fa600e556032600f553480156200002557600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600681526020017f4252432d32300000000000000000000000000000000000000000000000000000815250600490816200010d91906200097d565b506040518060400160405280600681526020017f4252432d32300000000000000000000000000000000000000000000000000000815250600590816200015491906200097d565b506012600660006101000a81548160ff021916908360ff16021790555060006305f5e10090506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cb919062000ace565b905060008173ffffffffffffffffffffffffffffffffffffffff1663c9c65396308573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000338573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035e919062000ace565b6040518363ffffffff1660e01b81526004016200037d92919062000b11565b6020604051808303816000875af11580156200039d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c3919062000ace565b905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600660009054906101000a900460ff16600a6200047c919062000cce565b8462000489919062000d1f565b6008819055506000339050600854600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff1673fa440439c959da402312b8d6d21e606a6b43d6a173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008546040516200054f919062000d7b565b60405180910390a333600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505062000d98565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200078557607f821691505b6020821081036200079b576200079a6200073d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007c6565b620008118683620007c6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200085e62000858620008528462000829565b62000833565b62000829565b9050919050565b6000819050919050565b6200087a836200083d565b62000892620008898262000865565b848454620007d3565b825550505050565b600090565b620008a96200089a565b620008b68184846200086f565b505050565b5b81811015620008de57620008d26000826200089f565b600181019050620008bc565b5050565b601f8211156200092d57620008f781620007a1565b6200090284620007b6565b8101602085101562000912578190505b6200092a6200092185620007b6565b830182620008bb565b50505b505050565b600082821c905092915050565b6000620009526000198460080262000932565b1980831691505092915050565b60006200096d83836200093f565b9150826002028217905092915050565b620009888262000703565b67ffffffffffffffff811115620009a457620009a36200070e565b5b620009b082546200076c565b620009bd828285620008e2565b600060209050601f831160018114620009f55760008415620009e0578287015190505b620009ec85826200095f565b86555062000a5c565b601f19841662000a0586620007a1565b60005b8281101562000a2f5784890151825560018201915060208501945060208101905062000a08565b8683101562000a4f578489015162000a4b601f8916826200093f565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a968262000a69565b9050919050565b62000aa88162000a89565b811462000ab457600080fd5b50565b60008151905062000ac88162000a9d565b92915050565b60006020828403121562000ae75762000ae662000a64565b5b600062000af78482850162000ab7565b91505092915050565b62000b0b8162000a89565b82525050565b600060408201905062000b28600083018562000b00565b62000b37602083018462000b00565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000bcc5780860481111562000ba45762000ba362000b3e565b5b600185161562000bb45780820291505b808102905062000bc48562000b6d565b945062000b84565b94509492505050565b60008262000be7576001905062000cba565b8162000bf7576000905062000cba565b816001811462000c10576002811462000c1b5762000c51565b600191505062000cba565b60ff84111562000c305762000c2f62000b3e565b5b8360020a91508482111562000c4a5762000c4962000b3e565b5b5062000cba565b5060208310610133831016604e8410600b841016171562000c8b5782820a90508381111562000c855762000c8462000b3e565b5b62000cba565b62000c9a848484600162000b7a565b9250905081840481111562000cb45762000cb362000b3e565b5b81810290505b9392505050565b600060ff82169050919050565b600062000cdb8262000829565b915062000ce88362000cc1565b925062000d177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bd5565b905092915050565b600062000d2c8262000829565b915062000d398362000829565b925082820262000d498162000829565b9150828204841483151762000d635762000d6262000b3e565b5b5092915050565b62000d758162000829565b82525050565b600060208201905062000d92600083018462000d6a565b92915050565b612b1b8062000da86000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d1578063b9fbc49d1161008a578063dd62ed3e11610064578063dd62ed3e1461054f578063e5615dd11461058c578063e82bef29146105b5578063f2fde38b146105e057610171565b8063b9fbc49d146104d0578063bceaaf1e146104fb578063ce0192f91461052457610171565b8063715018a6146103d25780638637b069146103e95780638da5cb5b1461041257806395d89b411461043d578063a9059cbb14610468578063adc7955d146104a557610171565b80633bfe62ca116101235780633bfe62ca146102ae5780633db02103146102d95780633ecad271146103025780634bf28fd01461033f57806365b61b771461036a57806370a082311461039557610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd14610209578063313ce5671461024657806336b2e0271461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b610609565b6040516101989190611f5f565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061201f565b61069b565b6040516101d5919061207a565b60405180910390f35b3480156101ea57600080fd5b506101f36106b2565b60405161020091906120a4565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b91906120bf565b6106bc565b60405161023d919061207a565b60405180910390f35b34801561025257600080fd5b5061025b610862565b604051610268919061212e565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612149565b610879565b6040516102a5919061207a565b60405180910390f35b3480156102ba57600080fd5b506102c3610899565b6040516102d091906120a4565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb9190612176565b61089f565b005b34801561030e57600080fd5b5061032960048036038101906103249190612149565b61098f565b604051610336919061207a565b60405180910390f35b34801561034b57600080fd5b506103546109af565b60405161036191906121c5565b60405180910390f35b34801561037657600080fd5b5061037f6109d5565b60405161038c919061223f565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190612149565b6109fb565b6040516103c991906120a4565b60405180910390f35b3480156103de57600080fd5b506103e7610a44565b005b3480156103f557600080fd5b50610410600480360381019061040b919061201f565b610b90565b005b34801561041e57600080fd5b50610427610d0c565b60405161043491906121c5565b60405180910390f35b34801561044957600080fd5b50610452610d35565b60405161045f9190611f5f565b60405180910390f35b34801561047457600080fd5b5061048f600480360381019061048a919061201f565b610dc7565b60405161049c919061207a565b60405180910390f35b3480156104b157600080fd5b506104ba610dde565b6040516104c791906120a4565b60405180910390f35b3480156104dc57600080fd5b506104e5610de4565b6040516104f291906120a4565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d91906122eb565b610dea565b005b34801561053057600080fd5b50610539610f2b565b60405161054691906120a4565b60405180910390f35b34801561055b57600080fd5b506105766004803603810190610571919061234b565b610f31565b60405161058391906120a4565b60405180910390f35b34801561059857600080fd5b506105b360048036038101906105ae9190612176565b610fb8565b005b3480156105c157600080fd5b506105ca6110a8565b6040516105d791906121c5565b60405180910390f35b3480156105ec57600080fd5b5061060760048036038101906106029190612149565b6110ce565b005b606060048054610618906123ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610644906123ba565b80156106915780601f1061066657610100808354040283529160200191610691565b820191906000526020600020905b81548152906001019060200180831161067457829003601f168201915b5050505050905090565b60006106a8338484611288565b6001905092915050565b6000600854905090565b60006106c9848484611373565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108575781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107d6919061241a565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b6000600660009054906101000a900460ff16905090565b60076020528060005260406000206000915054906101000a900460ff1681565b600e5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461092d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109249061249a565b60405180910390fd5b610fa0818361093c91906124ba565b111561097d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109749061253a565b60405180910390fd5b81600e8190555080600f819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac99061249a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c3257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c2c573d6000803e3d6000fd5b50610d08565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610d07578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610cc292919061255a565b6020604051808303816000875af1158015610ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d059190612598565b505b5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610d44906123ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610d70906123ba565b8015610dbd5780601f10610d9257610100808354040283529160200191610dbd565b820191906000526020600020905b815481529060010190602001808311610da057829003601f168201915b5050505050905090565b6000610dd4338484611373565b6001905092915050565b600f5481565b600d5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f9061249a565b60405180910390fd5b60c98383905010610e8857600080fd5b60005b83839050811015610f25578160076000868685818110610eae57610ead6125c5565b5b9050602002016020810190610ec39190612149565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610f1e906125f4565b9050610e8b565b50505050565b600c5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103d9061249a565b60405180910390fd5b610fa0818361105591906124ba565b1115611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d9061253a565b60405180910390fd5b81600c8190555080600d819055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111539061249a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c290612688565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161136691906120a4565b60405180910390a3505050565b600061137e846109fb565b9050818110156113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba906126f4565b60405180910390fd5b600080600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561142c5750600b60009054906101000a900460ff16155b80156114825750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114d85750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156115735760006114e8306109fb565b90506305f5e1006114f76106b2565b6115019190612743565b811115611571576000600f54600e54600d54600c5461152091906124ba565b61152a91906124ba565b61153491906124ba565b9050600061138882886115479190612774565b6115519190612743565b90508281116115605780611562565b825b905061156e81836116a6565b50505b505b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116175750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116305750600b60009054906101000a900460ff16155b1561163a57600191505b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561169157600190505b61169e8686868585611bcb565b505050505050565b6001600b60006101000a81548160ff02191690831515021790555080816116cd91906124ba565b90506000600d54600f546116e191906124ba565b905060008282856116f29190612774565b6116fc9190612743565b90506000600267ffffffffffffffff81111561171b5761171a6127b6565b5b6040519080825280602002602001820160405280156117495781602001602082028036833780820191505090505b5090503081600081518110611761576117606125c5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182c91906127fa565b816001815181106118405761183f6125c5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783876118c4919061241a565b60008430426040518663ffffffff1660e01b81526004016118e9959493929190612920565b600060405180830381600087803b15801561190357600080fd5b505af1925050508015611914575060015b611955577fbdf1a66ac2980d0df84c6c5344b4d62f3f4578219817cf4bcb8d8a983bbe6f16600060405161194891906129ab565b60405180910390a1611956565b5b8284611962919061241a565b935060004790506000856002600e54600c5461197e91906124ba565b846119899190612774565b6119939190612774565b61199d9190612743565b90506000811180156119fe5750600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611a6d57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a6b573d6000803e3d6000fd5b505b6000841115611ba7576000868684611a859190612774565b611a8f9190612743565b90506000811115611ba557600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823088600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611b23969594939291906129c6565b60606040518083038185885af193505050508015611b5f57506040513d601f19601f82011682018060405250810190611b5c9190612a3c565b60015b611ba0577fbdf1a66ac2980d0df84c6c5344b4d62f3f4578219817cf4bcb8d8a983bbe6f166001604051611b939190612aca565b60405180910390a1611ba4565b5050505b5b505b50505050506000600b60006101000a81548160ff0219169083151502179055505050565b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c16919061241a565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008215611dbe5760008215611c8057600f54600e54611c7991906124ba565b9050611c93565b600d54600c54611c9091906124ba565b90505b60006127108287611ca49190612774565b611cae9190612743565b90506000811115611dbb578083611cc591906124ba565b925080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d1291906124ba565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db291906120a4565b60405180910390a35b50505b8084611dca919061241a565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1491906124ba565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8387611eb2919061241a565b604051611ebf91906120a4565b60405180910390a3505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f09578082015181840152602081019050611eee565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f3182611ecf565b611f3b8185611eda565b9350611f4b818560208601611eeb565b611f5481611f15565b840191505092915050565b60006020820190508181036000830152611f798184611f26565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611fb682611f8b565b9050919050565b611fc681611fab565b8114611fd157600080fd5b50565b600081359050611fe381611fbd565b92915050565b6000819050919050565b611ffc81611fe9565b811461200757600080fd5b50565b60008135905061201981611ff3565b92915050565b6000806040838503121561203657612035611f81565b5b600061204485828601611fd4565b92505060206120558582860161200a565b9150509250929050565b60008115159050919050565b6120748161205f565b82525050565b600060208201905061208f600083018461206b565b92915050565b61209e81611fe9565b82525050565b60006020820190506120b96000830184612095565b92915050565b6000806000606084860312156120d8576120d7611f81565b5b60006120e686828701611fd4565b93505060206120f786828701611fd4565b92505060406121088682870161200a565b9150509250925092565b600060ff82169050919050565b61212881612112565b82525050565b6000602082019050612143600083018461211f565b92915050565b60006020828403121561215f5761215e611f81565b5b600061216d84828501611fd4565b91505092915050565b6000806040838503121561218d5761218c611f81565b5b600061219b8582860161200a565b92505060206121ac8582860161200a565b9150509250929050565b6121bf81611fab565b82525050565b60006020820190506121da60008301846121b6565b92915050565b6000819050919050565b60006122056122006121fb84611f8b565b6121e0565b611f8b565b9050919050565b6000612217826121ea565b9050919050565b60006122298261220c565b9050919050565b6122398161221e565b82525050565b60006020820190506122546000830184612230565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261227f5761227e61225a565b5b8235905067ffffffffffffffff81111561229c5761229b61225f565b5b6020830191508360208202830111156122b8576122b7612264565b5b9250929050565b6122c88161205f565b81146122d357600080fd5b50565b6000813590506122e5816122bf565b92915050565b60008060006040848603121561230457612303611f81565b5b600084013567ffffffffffffffff81111561232257612321611f86565b5b61232e86828701612269565b93509350506020612341868287016122d6565b9150509250925092565b6000806040838503121561236257612361611f81565b5b600061237085828601611fd4565b925050602061238185828601611fd4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123d257607f821691505b6020821081036123e5576123e461238b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061242582611fe9565b915061243083611fe9565b9250828203905081811115612448576124476123eb565b5b92915050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b6000612484601183611eda565b915061248f8261244e565b602082019050919050565b600060208201905081810360008301526124b381612477565b9050919050565b60006124c582611fe9565b91506124d083611fe9565b92508282019050808211156124e8576124e76123eb565b5b92915050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b6000612524600883611eda565b915061252f826124ee565b602082019050919050565b6000602082019050818103600083015261255381612517565b9050919050565b600060408201905061256f60008301856121b6565b61257c6020830184612095565b9392505050565b600081519050612592816122bf565b92915050565b6000602082840312156125ae576125ad611f81565b5b60006125bc84828501612583565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006125ff82611fe9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612631576126306123eb565b5b600182019050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000612672600883611eda565b915061267d8261263c565b602082019050919050565b600060208201905081810360008301526126a181612665565b9050919050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b60006126de601083611eda565b91506126e9826126a8565b602082019050919050565b6000602082019050818103600083015261270d816126d1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061274e82611fe9565b915061275983611fe9565b92508261276957612768612714565b5b828204905092915050565b600061277f82611fe9565b915061278a83611fe9565b925082820261279881611fe9565b915082820484148315176127af576127ae6123eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506127f481611fbd565b92915050565b6000602082840312156128105761280f611f81565b5b600061281e848285016127e5565b91505092915050565b6000819050919050565b600061284c61284761284284612827565b6121e0565b611fe9565b9050919050565b61285c81612831565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61289781611fab565b82525050565b60006128a9838361288e565b60208301905092915050565b6000602082019050919050565b60006128cd82612862565b6128d7818561286d565b93506128e28361287e565b8060005b838110156129135781516128fa888261289d565b9750612905836128b5565b9250506001810190506128e6565b5085935050505092915050565b600060a0820190506129356000830188612095565b6129426020830187612853565b818103604083015261295481866128c2565b905061296360608301856121b6565b6129706080830184612095565b9695505050505050565b600061299561299061298b84612827565b6121e0565b612112565b9050919050565b6129a58161297a565b82525050565b60006020820190506129c0600083018461299c565b92915050565b600060c0820190506129db60008301896121b6565b6129e86020830188612095565b6129f56040830187612853565b612a026060830186612853565b612a0f60808301856121b6565b612a1c60a0830184612095565b979650505050505050565b600081519050612a3681611ff3565b92915050565b600080600060608486031215612a5557612a54611f81565b5b6000612a6386828701612a27565b9350506020612a7486828701612a27565b9250506040612a8586828701612a27565b9150509250925092565b6000819050919050565b6000612ab4612aaf612aaa84612a8f565b6121e0565b612112565b9050919050565b612ac481612a99565b82525050565b6000602082019050612adf6000830184612abb565b9291505056fea26469706673582212209310ac5b3d1ae69b4f9f6575b6a7763113add973068c661c0d6c25080c07b77f64736f6c63430008120033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063715018a6116100d1578063b9fbc49d1161008a578063dd62ed3e11610064578063dd62ed3e1461054f578063e5615dd11461058c578063e82bef29146105b5578063f2fde38b146105e057610171565b8063b9fbc49d146104d0578063bceaaf1e146104fb578063ce0192f91461052457610171565b8063715018a6146103d25780638637b069146103e95780638da5cb5b1461041257806395d89b411461043d578063a9059cbb14610468578063adc7955d146104a557610171565b80633bfe62ca116101235780633bfe62ca146102ae5780633db02103146102d95780633ecad271146103025780634bf28fd01461033f57806365b61b771461036a57806370a082311461039557610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd14610209578063313ce5671461024657806336b2e0271461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b610609565b6040516101989190611f5f565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061201f565b61069b565b6040516101d5919061207a565b60405180910390f35b3480156101ea57600080fd5b506101f36106b2565b60405161020091906120a4565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b91906120bf565b6106bc565b60405161023d919061207a565b60405180910390f35b34801561025257600080fd5b5061025b610862565b604051610268919061212e565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612149565b610879565b6040516102a5919061207a565b60405180910390f35b3480156102ba57600080fd5b506102c3610899565b6040516102d091906120a4565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb9190612176565b61089f565b005b34801561030e57600080fd5b5061032960048036038101906103249190612149565b61098f565b604051610336919061207a565b60405180910390f35b34801561034b57600080fd5b506103546109af565b60405161036191906121c5565b60405180910390f35b34801561037657600080fd5b5061037f6109d5565b60405161038c919061223f565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190612149565b6109fb565b6040516103c991906120a4565b60405180910390f35b3480156103de57600080fd5b506103e7610a44565b005b3480156103f557600080fd5b50610410600480360381019061040b919061201f565b610b90565b005b34801561041e57600080fd5b50610427610d0c565b60405161043491906121c5565b60405180910390f35b34801561044957600080fd5b50610452610d35565b60405161045f9190611f5f565b60405180910390f35b34801561047457600080fd5b5061048f600480360381019061048a919061201f565b610dc7565b60405161049c919061207a565b60405180910390f35b3480156104b157600080fd5b506104ba610dde565b6040516104c791906120a4565b60405180910390f35b3480156104dc57600080fd5b506104e5610de4565b6040516104f291906120a4565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d91906122eb565b610dea565b005b34801561053057600080fd5b50610539610f2b565b60405161054691906120a4565b60405180910390f35b34801561055b57600080fd5b506105766004803603810190610571919061234b565b610f31565b60405161058391906120a4565b60405180910390f35b34801561059857600080fd5b506105b360048036038101906105ae9190612176565b610fb8565b005b3480156105c157600080fd5b506105ca6110a8565b6040516105d791906121c5565b60405180910390f35b3480156105ec57600080fd5b5061060760048036038101906106029190612149565b6110ce565b005b606060048054610618906123ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610644906123ba565b80156106915780601f1061066657610100808354040283529160200191610691565b820191906000526020600020905b81548152906001019060200180831161067457829003601f168201915b5050505050905090565b60006106a8338484611288565b6001905092915050565b6000600854905090565b60006106c9848484611373565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108575781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107d6919061241a565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b6000600660009054906101000a900460ff16905090565b60076020528060005260406000206000915054906101000a900460ff1681565b600e5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461092d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109249061249a565b60405180910390fd5b610fa0818361093c91906124ba565b111561097d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109749061253a565b60405180910390fd5b81600e8190555080600f819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac99061249a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c3257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c2c573d6000803e3d6000fd5b50610d08565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610d07578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610cc292919061255a565b6020604051808303816000875af1158015610ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d059190612598565b505b5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610d44906123ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610d70906123ba565b8015610dbd5780601f10610d9257610100808354040283529160200191610dbd565b820191906000526020600020905b815481529060010190602001808311610da057829003601f168201915b5050505050905090565b6000610dd4338484611373565b6001905092915050565b600f5481565b600d5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f9061249a565b60405180910390fd5b60c98383905010610e8857600080fd5b60005b83839050811015610f25578160076000868685818110610eae57610ead6125c5565b5b9050602002016020810190610ec39190612149565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610f1e906125f4565b9050610e8b565b50505050565b600c5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103d9061249a565b60405180910390fd5b610fa0818361105591906124ba565b1115611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d9061253a565b60405180910390fd5b81600c8190555080600d819055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111539061249a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c290612688565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161136691906120a4565b60405180910390a3505050565b600061137e846109fb565b9050818110156113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba906126f4565b60405180910390fd5b600080600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561142c5750600b60009054906101000a900460ff16155b80156114825750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114d85750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156115735760006114e8306109fb565b90506305f5e1006114f76106b2565b6115019190612743565b811115611571576000600f54600e54600d54600c5461152091906124ba565b61152a91906124ba565b61153491906124ba565b9050600061138882886115479190612774565b6115519190612743565b90508281116115605780611562565b825b905061156e81836116a6565b50505b505b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116175750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116305750600b60009054906101000a900460ff16155b1561163a57600191505b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561169157600190505b61169e8686868585611bcb565b505050505050565b6001600b60006101000a81548160ff02191690831515021790555080816116cd91906124ba565b90506000600d54600f546116e191906124ba565b905060008282856116f29190612774565b6116fc9190612743565b90506000600267ffffffffffffffff81111561171b5761171a6127b6565b5b6040519080825280602002602001820160405280156117495781602001602082028036833780820191505090505b5090503081600081518110611761576117606125c5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182c91906127fa565b816001815181106118405761183f6125c5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783876118c4919061241a565b60008430426040518663ffffffff1660e01b81526004016118e9959493929190612920565b600060405180830381600087803b15801561190357600080fd5b505af1925050508015611914575060015b611955577fbdf1a66ac2980d0df84c6c5344b4d62f3f4578219817cf4bcb8d8a983bbe6f16600060405161194891906129ab565b60405180910390a1611956565b5b8284611962919061241a565b935060004790506000856002600e54600c5461197e91906124ba565b846119899190612774565b6119939190612774565b61199d9190612743565b90506000811180156119fe5750600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611a6d57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a6b573d6000803e3d6000fd5b505b6000841115611ba7576000868684611a859190612774565b611a8f9190612743565b90506000811115611ba557600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823088600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611b23969594939291906129c6565b60606040518083038185885af193505050508015611b5f57506040513d601f19601f82011682018060405250810190611b5c9190612a3c565b60015b611ba0577fbdf1a66ac2980d0df84c6c5344b4d62f3f4578219817cf4bcb8d8a983bbe6f166001604051611b939190612aca565b60405180910390a1611ba4565b5050505b5b505b50505050506000600b60006101000a81548160ff0219169083151502179055505050565b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c16919061241a565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008215611dbe5760008215611c8057600f54600e54611c7991906124ba565b9050611c93565b600d54600c54611c9091906124ba565b90505b60006127108287611ca49190612774565b611cae9190612743565b90506000811115611dbb578083611cc591906124ba565b925080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d1291906124ba565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db291906120a4565b60405180910390a35b50505b8084611dca919061241a565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1491906124ba565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8387611eb2919061241a565b604051611ebf91906120a4565b60405180910390a3505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f09578082015181840152602081019050611eee565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f3182611ecf565b611f3b8185611eda565b9350611f4b818560208601611eeb565b611f5481611f15565b840191505092915050565b60006020820190508181036000830152611f798184611f26565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611fb682611f8b565b9050919050565b611fc681611fab565b8114611fd157600080fd5b50565b600081359050611fe381611fbd565b92915050565b6000819050919050565b611ffc81611fe9565b811461200757600080fd5b50565b60008135905061201981611ff3565b92915050565b6000806040838503121561203657612035611f81565b5b600061204485828601611fd4565b92505060206120558582860161200a565b9150509250929050565b60008115159050919050565b6120748161205f565b82525050565b600060208201905061208f600083018461206b565b92915050565b61209e81611fe9565b82525050565b60006020820190506120b96000830184612095565b92915050565b6000806000606084860312156120d8576120d7611f81565b5b60006120e686828701611fd4565b93505060206120f786828701611fd4565b92505060406121088682870161200a565b9150509250925092565b600060ff82169050919050565b61212881612112565b82525050565b6000602082019050612143600083018461211f565b92915050565b60006020828403121561215f5761215e611f81565b5b600061216d84828501611fd4565b91505092915050565b6000806040838503121561218d5761218c611f81565b5b600061219b8582860161200a565b92505060206121ac8582860161200a565b9150509250929050565b6121bf81611fab565b82525050565b60006020820190506121da60008301846121b6565b92915050565b6000819050919050565b60006122056122006121fb84611f8b565b6121e0565b611f8b565b9050919050565b6000612217826121ea565b9050919050565b60006122298261220c565b9050919050565b6122398161221e565b82525050565b60006020820190506122546000830184612230565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261227f5761227e61225a565b5b8235905067ffffffffffffffff81111561229c5761229b61225f565b5b6020830191508360208202830111156122b8576122b7612264565b5b9250929050565b6122c88161205f565b81146122d357600080fd5b50565b6000813590506122e5816122bf565b92915050565b60008060006040848603121561230457612303611f81565b5b600084013567ffffffffffffffff81111561232257612321611f86565b5b61232e86828701612269565b93509350506020612341868287016122d6565b9150509250925092565b6000806040838503121561236257612361611f81565b5b600061237085828601611fd4565b925050602061238185828601611fd4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123d257607f821691505b6020821081036123e5576123e461238b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061242582611fe9565b915061243083611fe9565b9250828203905081811115612448576124476123eb565b5b92915050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b6000612484601183611eda565b915061248f8261244e565b602082019050919050565b600060208201905081810360008301526124b381612477565b9050919050565b60006124c582611fe9565b91506124d083611fe9565b92508282019050808211156124e8576124e76123eb565b5b92915050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b6000612524600883611eda565b915061252f826124ee565b602082019050919050565b6000602082019050818103600083015261255381612517565b9050919050565b600060408201905061256f60008301856121b6565b61257c6020830184612095565b9392505050565b600081519050612592816122bf565b92915050565b6000602082840312156125ae576125ad611f81565b5b60006125bc84828501612583565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006125ff82611fe9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612631576126306123eb565b5b600182019050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000612672600883611eda565b915061267d8261263c565b602082019050919050565b600060208201905081810360008301526126a181612665565b9050919050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b60006126de601083611eda565b91506126e9826126a8565b602082019050919050565b6000602082019050818103600083015261270d816126d1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061274e82611fe9565b915061275983611fe9565b92508261276957612768612714565b5b828204905092915050565b600061277f82611fe9565b915061278a83611fe9565b925082820261279881611fe9565b915082820484148315176127af576127ae6123eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506127f481611fbd565b92915050565b6000602082840312156128105761280f611f81565b5b600061281e848285016127e5565b91505092915050565b6000819050919050565b600061284c61284761284284612827565b6121e0565b611fe9565b9050919050565b61285c81612831565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61289781611fab565b82525050565b60006128a9838361288e565b60208301905092915050565b6000602082019050919050565b60006128cd82612862565b6128d7818561286d565b93506128e28361287e565b8060005b838110156129135781516128fa888261289d565b9750612905836128b5565b9250506001810190506128e6565b5085935050505092915050565b600060a0820190506129356000830188612095565b6129426020830187612853565b818103604083015261295481866128c2565b905061296360608301856121b6565b6129706080830184612095565b9695505050505050565b600061299561299061298b84612827565b6121e0565b612112565b9050919050565b6129a58161297a565b82525050565b60006020820190506129c0600083018461299c565b92915050565b600060c0820190506129db60008301896121b6565b6129e86020830188612095565b6129f56040830187612853565b612a026060830186612853565b612a0f60808301856121b6565b612a1c60a0830184612095565b979650505050505050565b600081519050612a3681611ff3565b92915050565b600080600060608486031215612a5557612a54611f81565b5b6000612a6386828701612a27565b9350506020612a7486828701612a27565b9250506040612a8586828701612a27565b9150509250925092565b6000819050919050565b6000612ab4612aaf612aaa84612a8f565b6121e0565b612112565b9050919050565b612ac481612a99565b82525050565b6000602082019050612adf6000830184612abb565b9291505056fea26469706673582212209310ac5b3d1ae69b4f9f6575b6a7763113add973068c661c0d6c25080c07b77f64736f6c63430008120033

Deployed Bytecode Sourcemap

2695:8219:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4731:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5494:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4935:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5661:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4833:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2987:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3336:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6220:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3131:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3415:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3086:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5043:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2318:148;;;;;;;;;;;;;:::i;:::-;;10313:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2121:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4625:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5170:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3376:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3300:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10617:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3261:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5343:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6005:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2864:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2474:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4731:94;4779:13;4812:5;4805:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4731:94;:::o;5494:159::-;5569:4;5586:37;5595:10;5607:7;5616:6;5586:8;:37::i;:::-;5641:4;5634:11;;5494:159;;;;:::o;4935:100::-;4988:7;5015:12;;5008:19;;4935:100;:::o;5661:336::-;5759:4;5776:36;5786:6;5794:9;5805:6;5776:9;:36::i;:::-;3250:1;3241:11;5827;:19;5839:6;5827:19;;;;;;;;;;;;;;;:31;5847:10;5827:31;;;;;;;;;;;;;;;;:38;5823:145;;5950:6;5916:11;:19;5928:6;5916:19;;;;;;;;;;;;;;;:31;5936:10;5916:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5882:11;:19;5894:6;5882:19;;;;;;;;;;;;;;;:31;5902:10;5882:31;;;;;;;;;;;;;;;:74;;;;5823:145;5985:4;5978:11;;5661:336;;;;;:::o;4833:94::-;4885:5;4910:9;;;;;;;;;;;4903:16;;4833:94;:::o;2987:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;3336:33::-;;;;:::o;6220:210::-;2258:10;2248:20;;:6;;;;;;;;;;:20;;;2240:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;6338:4:::1;6326:8;6313:10;:21;;;;:::i;:::-;:29;;6305:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;6380:10;6365:12;:25;;;;6414:8;6401:10;:21;;;;6220:210:::0;;:::o;3131:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;3415:27::-;;;;;;;;;;;;;:::o;3086:36::-;;;;;;;;;;;;;:::o;5043:119::-;5109:7;5136:9;:18;5146:7;5136:18;;;;;;;;;;;;;;;;5129:25;;5043:119;;;:::o;2318:148::-;2258:10;2248:20;;:6;;;;;;;;;;:20;;;2240:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;2425:1:::1;2388:40;;2409:6;::::0;::::1;;;;;;;;2388:40;;;;;;;;;;;;2456:1;2439:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2318:148::o:0;10313:296::-;10420:1;10396:26;;:12;:26;;;10392:210;;10446:11;;;;;;;;;;;10438:29;;:37;10468:6;10438:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10392:210;;;10519:4;10495:29;;:12;:29;;;10492:110;;10547:12;10540:29;;;10570:11;;;;;;;;;;;10583:6;10540:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10492:110;10392:210;10313:296;;:::o;2121:79::-;2159:7;2186:6;;;;;;;;;;;2179:13;;2121:79;:::o;4625:98::-;4675:13;4708:7;4701:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4625:98;:::o;5170:165::-;5248:4;5265:40;5275:10;5287:9;5298:6;5265:9;:40::i;:::-;5323:4;5316:11;;5170:165;;;;:::o;3376:30::-;;;;:::o;3300:29::-;;;;:::o;10617:257::-;2258:10;2248:20;;:6;;;;;;;;;;:20;;;2240:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;10743:3:::1;10724:9;;:16;;:22;10716:31;;;::::0;::::1;;10763:9;10758:109;10778:9;;:16;;10774:1;:20;10758:109;;;10850:5;10816:17;:31;10834:9;;10844:1;10834:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10816:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;10796:3;;;;:::i;:::-;;;10758:109;;;;10617:257:::0;;;:::o;3261:32::-;;;;:::o;5343:143::-;5424:7;5451:11;:18;5463:5;5451:18;;;;;;;;;;;;;;;:27;5470:7;5451:27;;;;;;;;;;;;;;;;5444:34;;5343:143;;;;:::o;6005:207::-;2258:10;2248:20;;:6;;;;;;;;;;:20;;;2240:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;6122:4:::1;6110:8;6097:10;:21;;;;:::i;:::-;:29;;6089:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;6163:10;6149:11;:24;;;;6196:8;6184:9;:20;;;;6005:207:::0;;:::o;2864:26::-;;;;;;;;;;;;;:::o;2474:214::-;2258:10;2248:20;;:6;;;;;;;;;;:20;;;2240:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;2583:1:::1;2563:22;;:8;:22;;::::0;2555:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2643:8;2614:38;;2635:6;::::0;::::1;;;;;;;;2614:38;;;;;;;;;;;;2672:8;2663:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2474:214:::0;:::o;6438:177::-;6553:6;6523:11;:18;6535:5;6523:18;;;;;;;;;;;;;;;:27;6542:7;6523:27;;;;;;;;;;;;;;;:36;;;;6591:7;6575:32;;6584:5;6575:32;;;6600:6;6575:32;;;;;;:::i;:::-;;;;;;;;6438:177;;;:::o;6623:1171::-;6737:15;6755;6765:4;6755:9;:15::i;:::-;6737:33;;6800:6;6789:7;:17;;6781:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6840:12;6863:13;6893:12;:16;6906:2;6893:16;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;;;6914:6;;;;;;;;;;;6913:7;6893:27;:55;;;;;6925:17;:23;6943:4;6925:23;;;;;;;;;;;;;;;;;;;;;;;;;6924:24;6893:55;:81;;;;;6953:17;:21;6971:2;6953:21;;;;;;;;;;;;;;;;;;;;;;;;;6952:22;6893:81;6889:660;;;6991:28;7022:24;7040:4;7022:9;:24::i;:::-;6991:55;;7104:5;7088:13;:11;:13::i;:::-;:21;;;;:::i;:::-;7065:20;:44;7061:477;;;7130:14;7188:10;;7173:12;;7161:9;;7147:11;;:23;;;;:::i;:::-;:38;;;;:::i;:::-;:51;;;;:::i;:::-;7130:68;;7217:27;7266:4;7257:6;7248;:15;;;;:::i;:::-;:22;;;;:::i;:::-;7217:54;;7334:20;7312:19;:42;:147;;7440:19;7312:147;;;7419:20;7312:147;7290:169;;7478:44;7494:19;7515:6;7478:15;:44::i;:::-;7111:427;;7061:477;6976:573;6889:660;7566:17;:23;7584:4;7566:23;;;;;;;;;;;;;;;;;;;;;;;;;7565:24;:50;;;;;7594:17;:21;7612:2;7594:21;;;;;;;;;;;;;;;;;;;;;;;;;7593:22;7565:50;:61;;;;;7620:6;;;;;;;;;;;7619:7;7565:61;7561:108;;;7653:4;7643:14;;7561:108;7685:12;:16;7698:2;7685:16;;;;;;;;;;;;;;;;;;;;;;;;;7681:42;;;7716:4;7705:15;;7681:42;7735:51;7750:4;7756:2;7760:6;7768:7;7777:8;7735:14;:51::i;:::-;6726:1068;;;6623:1171;;;:::o;8787:1251::-;3492:4;3483:6;;:13;;;;;;;;;;;;;;;;;;8890:6:::1;8880:16;;;;;:::i;:::-;;;8907:13;8936:9;;8923:10;;:22;;;;:::i;:::-;8907:38;;8956:16;8997:6;8989:5;8975:11;:19;;;;:::i;:::-;:28;;;;:::i;:::-;8956:47;;9016:21;9054:1;9040:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9016:40;;9085:4;9067;9072:1;9067:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9111:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9101:4;9106:1;9101:7;;;;;;;;:::i;:::-;;;;;;;:31;;;;;;;;;::::0;::::1;9147:14;;;;;;;;;;;:65;;;9241:8;9227:11;:22;;;;:::i;:::-;9264:1;9280:4;9307;9327:15;9147:206;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;9143:243;;9370:13;9381:1;9370:13;;;;;;:::i;:::-;;;;;;;;9143:243;;;;9408:5;9398:15;;;;;:::i;:::-;;;9426:19;9448:21;9426:43;;9480:18;9550:6;9546:1;9530:12;;9516:11;;:26;;;;:::i;:::-;9501:11;:42;;;;:::i;:::-;:46;;;;:::i;:::-;:55;;;;:::i;:::-;9480:76;;9584:1;9571:10;:14;:43;;;;;9612:1;9589:25;;:11;;;;;;;;;;;:25;;;;9571:43;9567:117;;;9639:11;;;;;;;;;;;9631:29;;:41;9661:10;9631:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9567:117;9711:1;9700:8;:12;9696:335;;;9729:14;9768:6;9760:5;9746:11;:19;;;;:::i;:::-;:28;;;;:::i;:::-;9729:45;;9802:1;9793:6;:10;9789:231;;;9828:14;;;;;;;;;;;:30;;;9865:6;9903:4;9910:8;9919:1;9922::::0;9925:11:::1;;;;;;;;;;;9938:15;9828:144;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;9824:181;;9989:13;10000:1;9989:13;;;;;;:::i;:::-;;;;;;;;9824:181;;;;;;;9789:231;9714:317;9696:335;8869:1169;;;;;3528:5:::0;3519:6;;:14;;;;;;;;;;;;;;;;;;8787:1251;;:::o;7802:945::-;8018:7;7998:9;:17;8008:6;7998:17;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;7978:9;:17;7988:6;7978:17;;;;;;;;;;;;;;;:47;;;;8036:17;8070:7;8066:528;;;8094:14;8129:8;8125:156;;;8182:10;;8167:12;;:25;;;;:::i;:::-;8158:34;;8125:156;;;8256:9;;8242:11;;:23;;;;:::i;:::-;8233:32;;8125:156;8295:18;8335:5;8326:6;8316:7;:16;;;;:::i;:::-;:24;;;;:::i;:::-;8295:45;;8372:1;8359:10;:14;8355:228;;;8407:10;8394:23;;;;;:::i;:::-;;;8490:10;8463:9;:24;8481:4;8463:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;8436:9;:24;8454:4;8436:24;;;;;;;;;;;;;;;:64;;;;8549:4;8524:43;;8533:6;8524:43;;;8556:10;8524:43;;;;;;:::i;:::-;;;;;;;;8355:228;8079:515;;8066:528;8663:9;8653:7;:19;;;;:::i;:::-;8629:9;:20;8639:9;8629:20;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;8606:9;:20;8616:9;8606:20;;;;;;;;;;;;;;;:67;;;;8706:9;8689:48;;8698:6;8689:48;;;8727:9;8717:7;:19;;;;:::i;:::-;8689:48;;;;;;:::i;:::-;;;;;;;;7967:780;7802:945;;;;;:::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;1553:117;1662:1;1659;1652: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:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:474::-;5256:6;5264;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;5566:2;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5537:118;5188:474;;;;;:::o;5668:118::-;5755:24;5773:5;5755:24;:::i;:::-;5750:3;5743:37;5668:118;;:::o;5792:222::-;5885:4;5923:2;5912:9;5908:18;5900:26;;5936:71;6004:1;5993:9;5989:17;5980:6;5936:71;:::i;:::-;5792:222;;;;:::o;6020:60::-;6048:3;6069:5;6062:12;;6020:60;;;:::o;6086:142::-;6136:9;6169:53;6187:34;6196:24;6214:5;6196:24;:::i;:::-;6187:34;:::i;:::-;6169:53;:::i;:::-;6156:66;;6086:142;;;:::o;6234:126::-;6284:9;6317:37;6348:5;6317:37;:::i;:::-;6304:50;;6234:126;;;:::o;6366:148::-;6438:9;6471:37;6502:5;6471:37;:::i;:::-;6458:50;;6366:148;;;:::o;6520:175::-;6629:59;6682:5;6629:59;:::i;:::-;6624:3;6617:72;6520:175;;:::o;6701:266::-;6816:4;6854:2;6843:9;6839:18;6831:26;;6867:93;6957:1;6946:9;6942:17;6933:6;6867:93;:::i;:::-;6701:266;;;;:::o;6973:117::-;7082:1;7079;7072:12;7096:117;7205:1;7202;7195:12;7219:117;7328:1;7325;7318:12;7359:568;7432:8;7442:6;7492:3;7485:4;7477:6;7473:17;7469:27;7459:122;;7500:79;;:::i;:::-;7459:122;7613:6;7600:20;7590:30;;7643:18;7635:6;7632:30;7629:117;;;7665:79;;:::i;:::-;7629:117;7779:4;7771:6;7767:17;7755:29;;7833:3;7825:4;7817:6;7813:17;7803:8;7799:32;7796:41;7793:128;;;7840:79;;:::i;:::-;7793:128;7359:568;;;;;:::o;7933:116::-;8003:21;8018:5;8003:21;:::i;:::-;7996:5;7993:32;7983:60;;8039:1;8036;8029:12;7983:60;7933:116;:::o;8055:133::-;8098:5;8136:6;8123:20;8114:29;;8152:30;8176:5;8152:30;:::i;:::-;8055:133;;;;:::o;8194:698::-;8286:6;8294;8302;8351:2;8339:9;8330:7;8326:23;8322:32;8319:119;;;8357:79;;:::i;:::-;8319:119;8505:1;8494:9;8490:17;8477:31;8535:18;8527:6;8524:30;8521:117;;;8557:79;;:::i;:::-;8521:117;8670:80;8742:7;8733:6;8722:9;8718:22;8670:80;:::i;:::-;8652:98;;;;8448:312;8799:2;8825:50;8867:7;8858:6;8847:9;8843:22;8825:50;:::i;:::-;8815:60;;8770:115;8194:698;;;;;:::o;8898:474::-;8966:6;8974;9023:2;9011:9;9002:7;8998:23;8994:32;8991:119;;;9029:79;;:::i;:::-;8991:119;9149:1;9174:53;9219:7;9210:6;9199:9;9195:22;9174:53;:::i;:::-;9164:63;;9120:117;9276:2;9302:53;9347:7;9338:6;9327:9;9323:22;9302:53;:::i;:::-;9292:63;;9247:118;8898:474;;;;;:::o;9378:180::-;9426:77;9423:1;9416:88;9523:4;9520:1;9513:15;9547:4;9544:1;9537:15;9564:320;9608:6;9645:1;9639:4;9635:12;9625:22;;9692:1;9686:4;9682:12;9713:18;9703:81;;9769:4;9761:6;9757:17;9747:27;;9703:81;9831:2;9823:6;9820:14;9800:18;9797:38;9794:84;;9850:18;;:::i;:::-;9794:84;9615:269;9564:320;;;:::o;9890:180::-;9938:77;9935:1;9928:88;10035:4;10032:1;10025:15;10059:4;10056:1;10049:15;10076:194;10116:4;10136:20;10154:1;10136:20;:::i;:::-;10131:25;;10170:20;10188:1;10170:20;:::i;:::-;10165:25;;10214:1;10211;10207:9;10199:17;;10238:1;10232:4;10229:11;10226:37;;;10243:18;;:::i;:::-;10226:37;10076:194;;;;:::o;10276:167::-;10416:19;10412:1;10404:6;10400:14;10393:43;10276:167;:::o;10449:366::-;10591:3;10612:67;10676:2;10671:3;10612:67;:::i;:::-;10605:74;;10688:93;10777:3;10688:93;:::i;:::-;10806:2;10801:3;10797:12;10790:19;;10449:366;;;:::o;10821:419::-;10987:4;11025:2;11014:9;11010:18;11002:26;;11074:9;11068:4;11064:20;11060:1;11049:9;11045:17;11038:47;11102:131;11228:4;11102:131;:::i;:::-;11094:139;;10821:419;;;:::o;11246:191::-;11286:3;11305:20;11323:1;11305:20;:::i;:::-;11300:25;;11339:20;11357:1;11339:20;:::i;:::-;11334:25;;11382:1;11379;11375:9;11368:16;;11403:3;11400:1;11397:10;11394:36;;;11410:18;;:::i;:::-;11394:36;11246:191;;;;:::o;11443:158::-;11583:10;11579:1;11571:6;11567:14;11560:34;11443:158;:::o;11607:365::-;11749:3;11770:66;11834:1;11829:3;11770:66;:::i;:::-;11763:73;;11845:93;11934:3;11845:93;:::i;:::-;11963:2;11958:3;11954:12;11947:19;;11607:365;;;:::o;11978:419::-;12144:4;12182:2;12171:9;12167:18;12159:26;;12231:9;12225:4;12221:20;12217:1;12206:9;12202:17;12195:47;12259:131;12385:4;12259:131;:::i;:::-;12251:139;;11978:419;;;:::o;12403:332::-;12524:4;12562:2;12551:9;12547:18;12539:26;;12575:71;12643:1;12632:9;12628:17;12619:6;12575:71;:::i;:::-;12656:72;12724:2;12713:9;12709:18;12700:6;12656:72;:::i;:::-;12403:332;;;;;:::o;12741:137::-;12795:5;12826:6;12820:13;12811:22;;12842:30;12866:5;12842:30;:::i;:::-;12741:137;;;;:::o;12884:345::-;12951:6;13000:2;12988:9;12979:7;12975:23;12971:32;12968:119;;;13006:79;;:::i;:::-;12968:119;13126:1;13151:61;13204:7;13195:6;13184:9;13180:22;13151:61;:::i;:::-;13141:71;;13097:125;12884:345;;;;:::o;13235:180::-;13283:77;13280:1;13273:88;13380:4;13377:1;13370:15;13404:4;13401:1;13394:15;13421:233;13460:3;13483:24;13501:5;13483:24;:::i;:::-;13474:33;;13529:66;13522:5;13519:77;13516:103;;13599:18;;:::i;:::-;13516:103;13646:1;13639:5;13635:13;13628:20;;13421:233;;;:::o;13660:158::-;13800:10;13796:1;13788:6;13784:14;13777:34;13660:158;:::o;13824:365::-;13966:3;13987:66;14051:1;14046:3;13987:66;:::i;:::-;13980:73;;14062:93;14151:3;14062:93;:::i;:::-;14180:2;14175:3;14171:12;14164:19;;13824:365;;;:::o;14195:419::-;14361:4;14399:2;14388:9;14384:18;14376:26;;14448:9;14442:4;14438:20;14434:1;14423:9;14419:17;14412:47;14476:131;14602:4;14476:131;:::i;:::-;14468:139;;14195:419;;;:::o;14620:166::-;14760:18;14756:1;14748:6;14744:14;14737:42;14620:166;:::o;14792:366::-;14934:3;14955:67;15019:2;15014:3;14955:67;:::i;:::-;14948:74;;15031:93;15120:3;15031:93;:::i;:::-;15149:2;15144:3;15140:12;15133:19;;14792:366;;;:::o;15164:419::-;15330:4;15368:2;15357:9;15353:18;15345:26;;15417:9;15411:4;15407:20;15403:1;15392:9;15388:17;15381:47;15445:131;15571:4;15445:131;:::i;:::-;15437:139;;15164:419;;;:::o;15589:180::-;15637:77;15634:1;15627:88;15734:4;15731:1;15724:15;15758:4;15755:1;15748:15;15775:185;15815:1;15832:20;15850:1;15832:20;:::i;:::-;15827:25;;15866:20;15884:1;15866:20;:::i;:::-;15861:25;;15905:1;15895:35;;15910:18;;:::i;:::-;15895:35;15952:1;15949;15945:9;15940:14;;15775:185;;;;:::o;15966:410::-;16006:7;16029:20;16047:1;16029:20;:::i;:::-;16024:25;;16063:20;16081:1;16063:20;:::i;:::-;16058:25;;16118:1;16115;16111:9;16140:30;16158:11;16140:30;:::i;:::-;16129:41;;16319:1;16310:7;16306:15;16303:1;16300:22;16280:1;16273:9;16253:83;16230:139;;16349:18;;:::i;:::-;16230:139;16014:362;15966:410;;;;:::o;16382:180::-;16430:77;16427:1;16420:88;16527:4;16524:1;16517:15;16551:4;16548:1;16541:15;16568:143;16625:5;16656:6;16650:13;16641:22;;16672:33;16699:5;16672:33;:::i;:::-;16568:143;;;;:::o;16717:351::-;16787:6;16836:2;16824:9;16815:7;16811:23;16807:32;16804:119;;;16842:79;;:::i;:::-;16804:119;16962:1;16987:64;17043:7;17034:6;17023:9;17019:22;16987:64;:::i;:::-;16977:74;;16933:128;16717:351;;;;:::o;17074:85::-;17119:7;17148:5;17137:16;;17074:85;;;:::o;17165:158::-;17223:9;17256:61;17274:42;17283:32;17309:5;17283:32;:::i;:::-;17274:42;:::i;:::-;17256:61;:::i;:::-;17243:74;;17165:158;;;:::o;17329:147::-;17424:45;17463:5;17424:45;:::i;:::-;17419:3;17412:58;17329:147;;:::o;17482:114::-;17549:6;17583:5;17577:12;17567:22;;17482:114;;;:::o;17602:184::-;17701:11;17735:6;17730:3;17723:19;17775:4;17770:3;17766:14;17751:29;;17602:184;;;;:::o;17792:132::-;17859:4;17882:3;17874:11;;17912:4;17907:3;17903:14;17895:22;;17792:132;;;:::o;17930:108::-;18007:24;18025:5;18007:24;:::i;:::-;18002:3;17995:37;17930:108;;:::o;18044:179::-;18113:10;18134:46;18176:3;18168:6;18134:46;:::i;:::-;18212:4;18207:3;18203:14;18189:28;;18044:179;;;;:::o;18229:113::-;18299:4;18331;18326:3;18322:14;18314:22;;18229:113;;;:::o;18378:732::-;18497:3;18526:54;18574:5;18526:54;:::i;:::-;18596:86;18675:6;18670:3;18596:86;:::i;:::-;18589:93;;18706:56;18756:5;18706:56;:::i;:::-;18785:7;18816:1;18801:284;18826:6;18823:1;18820:13;18801:284;;;18902:6;18896:13;18929:63;18988:3;18973:13;18929:63;:::i;:::-;18922:70;;19015:60;19068:6;19015:60;:::i;:::-;19005:70;;18861:224;18848:1;18845;18841:9;18836:14;;18801:284;;;18805:14;19101:3;19094:10;;18502:608;;;18378:732;;;;:::o;19116:831::-;19379:4;19417:3;19406:9;19402:19;19394:27;;19431:71;19499:1;19488:9;19484:17;19475:6;19431:71;:::i;:::-;19512:80;19588:2;19577:9;19573:18;19564:6;19512:80;:::i;:::-;19639:9;19633:4;19629:20;19624:2;19613:9;19609:18;19602:48;19667:108;19770:4;19761:6;19667:108;:::i;:::-;19659:116;;19785:72;19853:2;19842:9;19838:18;19829:6;19785:72;:::i;:::-;19867:73;19935:3;19924:9;19920:19;19911:6;19867:73;:::i;:::-;19116:831;;;;;;;;:::o;19953:154::-;20009:9;20042:59;20058:42;20067:32;20093:5;20067:32;:::i;:::-;20058:42;:::i;:::-;20042:59;:::i;:::-;20029:72;;19953:154;;;:::o;20113:143::-;20206:43;20243:5;20206:43;:::i;:::-;20201:3;20194:56;20113:143;;:::o;20262:234::-;20361:4;20399:2;20388:9;20384:18;20376:26;;20412:77;20486:1;20475:9;20471:17;20462:6;20412:77;:::i;:::-;20262:234;;;;:::o;20502:807::-;20751:4;20789:3;20778:9;20774:19;20766:27;;20803:71;20871:1;20860:9;20856:17;20847:6;20803:71;:::i;:::-;20884:72;20952:2;20941:9;20937:18;20928:6;20884:72;:::i;:::-;20966:80;21042:2;21031:9;21027:18;21018:6;20966:80;:::i;:::-;21056;21132:2;21121:9;21117:18;21108:6;21056:80;:::i;:::-;21146:73;21214:3;21203:9;21199:19;21190:6;21146:73;:::i;:::-;21229;21297:3;21286:9;21282:19;21273:6;21229:73;:::i;:::-;20502:807;;;;;;;;;:::o;21315:143::-;21372:5;21403:6;21397:13;21388:22;;21419:33;21446:5;21419:33;:::i;:::-;21315:143;;;;:::o;21464:663::-;21552:6;21560;21568;21617:2;21605:9;21596:7;21592:23;21588:32;21585:119;;;21623:79;;:::i;:::-;21585:119;21743:1;21768:64;21824:7;21815:6;21804:9;21800:22;21768:64;:::i;:::-;21758:74;;21714:128;21881:2;21907:64;21963:7;21954:6;21943:9;21939:22;21907:64;:::i;:::-;21897:74;;21852:129;22020:2;22046:64;22102:7;22093:6;22082:9;22078:22;22046:64;:::i;:::-;22036:74;;21991:129;21464:663;;;;;:::o;22133:85::-;22178:7;22207:5;22196:16;;22133:85;;;:::o;22224:154::-;22280:9;22313:59;22329:42;22338:32;22364:5;22338:32;:::i;:::-;22329:42;:::i;:::-;22313:59;:::i;:::-;22300:72;;22224:154;;;:::o;22384:143::-;22477:43;22514:5;22477:43;:::i;:::-;22472:3;22465:56;22384:143;;:::o;22533:234::-;22632:4;22670:2;22659:9;22655:18;22647:26;;22683:77;22757:1;22746:9;22742:17;22733:6;22683:77;:::i;:::-;22533:234;;;;:::o

Swarm Source

ipfs://9310ac5b3d1ae69b4f9f6575b6a7763113add973068c661c0d6c25080c07b77f

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.