Contract

0x49Ef56B42af5aF1f35bE42c18bF31dc620B5F97C

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve11500662024-12-22 7:30:286 days ago1734852628IN
0x49Ef56B4...620B5F97C
0 S0.000057641.221
Approve11500252024-12-22 7:30:016 days ago1734852601IN
0x49Ef56B4...620B5F97C
0 S0.000052961.1
Transfer11494692024-12-22 7:23:516 days ago1734852231IN
0x49Ef56B4...620B5F97C
0 S0.000059241.1

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BOOKOFSONIC

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2024-12-22
*/

// SPDX-License-Identifier: MIT

// https://x.com/kirtftm/status/1870692484290117773?t=G2JpwFYabW64jvN-jbugkg&s=19
// https://t.me/sonicofbook

pragma solidity 0.8.17;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

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

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

contract BOOKOFSONIC is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    address payable private _taxWallet = payable(0x2ee9190FD67f1f17Cb83e266A87FaCC2a71BD790);

    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"Book of Sonic";
    string private constant _symbol = unicode"BOS";

    uint256 public _maxTxAmount =   80000000 * 10**_decimals;
    uint256 public _maxWalletSize = 80000000 * 10**_decimals;
    uint256 public _taxSwapThreshold=5000000 * 10**_decimals;
    uint256 public _maxTaxSwap=40000000 * 10**_decimals;

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

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

    constructor () {
        uniswapV2Router = IUniswapV2Router02(0x95a7e403d7cF20F675fF9273D66e94d35ba49fA3);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[_taxWallet] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(tradingOpen, "Trading not open");
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul(_finalBuyTax).div(100);

            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul(_finalSellTax).div(100);
            }

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

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

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

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

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

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

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        swapEnabled = true;
        tradingOpen = true;
    }
       
    function SetFees(uint256 _newBuyTax, uint256 _newSellTax) external onlyOwner() {
      _finalBuyTax=_newBuyTax;
      _finalSellTax=_newSellTax;
    }
    
    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_newBuyTax","type":"uint256"},{"internalType":"uint256","name":"_newSellTax","type":"uint256"}],"name":"SetFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052732ee9190fd67f1f17cb83e266a87facc2a71bd790600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060065560006007556009600a620000739190620008ba565b6304c4b4006200008491906200090b565b6008556009600a620000979190620008ba565b6304c4b400620000a891906200090b565b6009556009600a620000bb9190620008ba565b624c4b40620000cb91906200090b565b600a556009600a620000de9190620008ba565b6302625a00620000ef91906200090b565b600b556000600d60146101000a81548160ff0219169083151502179055506000600d60156101000a81548160ff0219169083151502179055506000600d60166101000a81548160ff0219169083151502179055503480156200015057600080fd5b50600062000163620006ef60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507395a7e403d7cf20f675ff9273d66e94d35ba49fa3600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ea9190620009c0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039a9190620009c0565b6040518363ffffffff1660e01b8152600401620003b992919062000a03565b6020604051808303816000875af1158015620003d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ff9190620009c0565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200044f9190620008ba565b633b9aca006200046091906200090b565b6001600062000474620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620004c8620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600062000587620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000662620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620006c19190620008ba565b633b9aca00620006d291906200090b565b604051620006e1919062000a41565b60405180910390a362000a5e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007ae5780860481111562000786576200078562000720565b5b6001851615620007965780820291505b8081029050620007a6856200074f565b945062000766565b94509492505050565b600082620007c957600190506200089c565b81620007d957600090506200089c565b8160018114620007f25760028114620007fd5762000833565b60019150506200089c565b60ff84111562000812576200081162000720565b5b8360020a9150848211156200082c576200082b62000720565b5b506200089c565b5060208310610133831016604e8410600b84101617156200086d5782820a90508381111562000867576200086662000720565b5b6200089c565b6200087c84848460016200075c565b9250905081840481111562000896576200089562000720565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008c782620008a3565b9150620008d483620008ad565b9250620009037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007b7565b905092915050565b60006200091882620008a3565b91506200092583620008a3565b92508282026200093581620008a3565b915082820484148315176200094f576200094e62000720565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000988826200095b565b9050919050565b6200099a816200097b565b8114620009a657600080fd5b50565b600081519050620009ba816200098f565b92915050565b600060208284031215620009d957620009d862000956565b5b6000620009e984828501620009a9565b91505092915050565b620009fd816200097b565b82525050565b600060408201905062000a1a6000830185620009f2565b62000a296020830184620009f2565b9392505050565b62000a3b81620008a3565b82525050565b600060208201905062000a58600083018462000a30565b92915050565b6129c98062000a6e6000396000f3fe6080604052600436106101235760003560e01c8063715018a6116100a057806395d89b411161006457806395d89b41146103ac578063a9059cbb146103d7578063bf474bed14610414578063c9567bf91461043f578063dd62ed3e146104565761012a565b8063715018a6146102fd578063751039fc146103145780637d1db4a51461032b5780638da5cb5b146103565780638f9a55c0146103815761012a565b8063313ce567116100e7578063313ce5671461022a5780633be6e6371461025557806349bd5a5e1461027e57806351bc3c85146102a957806370a08231146102c05761012a565b806306fdde031461012f578063095ea7b31461015a5780630faee56f1461019757806318160ddd146101c257806323b872dd146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b50610144610493565b6040516101519190611c07565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611cc2565b6104d0565b60405161018e9190611d1d565b60405180910390f35b3480156101a357600080fd5b506101ac6104ee565b6040516101b99190611d47565b60405180910390f35b3480156101ce57600080fd5b506101d76104f4565b6040516101e49190611d47565b60405180910390f35b3480156101f957600080fd5b50610214600480360381019061020f9190611d62565b610518565b6040516102219190611d1d565b60405180910390f35b34801561023657600080fd5b5061023f6105f1565b60405161024c9190611dd1565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190611dec565b6105fa565b005b34801561028a57600080fd5b506102936106a1565b6040516102a09190611e3b565b60405180910390f35b3480156102b557600080fd5b506102be6106c7565b005b3480156102cc57600080fd5b506102e760048036038101906102e29190611e56565b610764565b6040516102f49190611d47565b60405180910390f35b34801561030957600080fd5b506103126107ad565b005b34801561032057600080fd5b50610329610900565b005b34801561033757600080fd5b50610340610a30565b60405161034d9190611d47565b60405180910390f35b34801561036257600080fd5b5061036b610a36565b6040516103789190611e3b565b60405180910390f35b34801561038d57600080fd5b50610396610a5f565b6040516103a39190611d47565b60405180910390f35b3480156103b857600080fd5b506103c1610a65565b6040516103ce9190611c07565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f99190611cc2565b610aa2565b60405161040b9190611d1d565b60405180910390f35b34801561042057600080fd5b50610429610ac0565b6040516104369190611d47565b60405180910390f35b34801561044b57600080fd5b50610454610ac6565b005b34801561046257600080fd5b5061047d60048036038101906104789190611e83565b610be3565b60405161048a9190611d47565b60405180910390f35b60606040518060400160405280600d81526020017f426f6f6b206f6620536f6e696300000000000000000000000000000000000000815250905090565b60006104e46104dd610c6a565b8484610c72565b6001905092915050565b600b5481565b60006009600a6105049190612025565b633b9aca006105139190612070565b905090565b6000610525848484610e3b565b6105e684610531610c6a565b6105e18560405180606001604052806028815260200161296c60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610597610c6a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116469092919063ffffffff16565b610c72565b600190509392505050565b60006009905090565b610602610c6a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461068f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610686906120fe565b60405180910390fd5b81600681905550806007819055505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610708610c6a565b73ffffffffffffffffffffffffffffffffffffffff161461072857600080fd5b600061073330610764565b9050600081111561074857610747816116aa565b5b600047905060008111156107605761075f81611923565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107b5610c6a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610842576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906120fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610908610c6a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098c906120fe565b60405180910390fd5b6009600a6109a39190612025565b633b9aca006109b29190612070565b6008819055506009600a6109c69190612025565b633b9aca006109d59190612070565b6009819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a0a9190612025565b633b9aca00610a199190612070565b604051610a269190611d47565b60405180910390a1565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b60606040518060400160405280600381526020017f424f530000000000000000000000000000000000000000000000000000000000815250905090565b6000610ab6610aaf610c6a565b8484610e3b565b6001905092915050565b600a5481565b610ace610c6a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b52906120fe565b60405180910390fd5b600d60149054906101000a900460ff1615610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba29061216a565b60405180910390fd5b6001600d60166101000a81548160ff0219169083151502179055506001600d60146101000a81548160ff021916908315150217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd8906121fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d479061228e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e2e9190611d47565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190612320565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f10906123b2565b60405180910390fd5b60008111610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5390612444565b60405180910390fd5b6000610f66610a36565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610fd45750610fa4610a36565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561138957600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156110845750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156110da5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156111f657600d60149054906101000a900460ff1661112e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611125906124b0565b60405180910390fd5b600854821115611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a9061251c565b60405180910390fd5b6009548261118085610764565b61118a919061253c565b11156111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c2906125bc565b60405180910390fd5b6111f360646111e56006548561198f90919063ffffffff16565b611a0990919063ffffffff16565b90505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561127f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156112af576112ac606461129e6007548561198f90919063ffffffff16565b611a0990919063ffffffff16565b90505b60006112ba30610764565b9050600d60159054906101000a900460ff161580156113265750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561133e5750600d60169054906101000a900460ff165b801561134b5750600a5481115b156113875761136d6113688461136384600b54611a53565b611a53565b6116aa565b600047905060008111156113855761138447611923565b5b505b505b600081111561148d576113e481600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a6c90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114849190611d47565b60405180910390a35b6114df82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aca90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115866115388284611aca90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a6c90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61162b8486611aca90919063ffffffff16565b6040516116389190611d47565b60405180910390a350505050565b600083831115829061168e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116859190611c07565b60405180910390fd5b506000838561169d91906125dc565b9050809150509392505050565b6001600d60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156116e2576116e1612610565b5b6040519080825280602002602001820160405280156117105781602001602082028036833780820191505090505b50905030816000815181106117285761172761263f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f39190612683565b816001815181106118075761180661263f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061186e30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610c72565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016118d29594939291906127b3565b600060405180830381600087803b1580156118ec57600080fd5b505af1158015611900573d6000803e3d6000fd5b50505050506000600d60156101000a81548160ff02191690831515021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561198b573d6000803e3d6000fd5b5050565b60008083036119a15760009050611a03565b600082846119af9190612070565b90508284826119be919061283c565b146119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f5906128df565b60405180910390fd5b809150505b92915050565b6000611a4b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b14565b905092915050565b6000818311611a625782611a64565b815b905092915050565b6000808284611a7b919061253c565b905083811015611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab79061294b565b60405180910390fd5b8091505092915050565b6000611b0c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611646565b905092915050565b60008083118290611b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b529190611c07565b60405180910390fd5b5060008385611b6a919061283c565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611bb1578082015181840152602081019050611b96565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bd982611b77565b611be38185611b82565b9350611bf3818560208601611b93565b611bfc81611bbd565b840191505092915050565b60006020820190508181036000830152611c218184611bce565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c5982611c2e565b9050919050565b611c6981611c4e565b8114611c7457600080fd5b50565b600081359050611c8681611c60565b92915050565b6000819050919050565b611c9f81611c8c565b8114611caa57600080fd5b50565b600081359050611cbc81611c96565b92915050565b60008060408385031215611cd957611cd8611c29565b5b6000611ce785828601611c77565b9250506020611cf885828601611cad565b9150509250929050565b60008115159050919050565b611d1781611d02565b82525050565b6000602082019050611d326000830184611d0e565b92915050565b611d4181611c8c565b82525050565b6000602082019050611d5c6000830184611d38565b92915050565b600080600060608486031215611d7b57611d7a611c29565b5b6000611d8986828701611c77565b9350506020611d9a86828701611c77565b9250506040611dab86828701611cad565b9150509250925092565b600060ff82169050919050565b611dcb81611db5565b82525050565b6000602082019050611de66000830184611dc2565b92915050565b60008060408385031215611e0357611e02611c29565b5b6000611e1185828601611cad565b9250506020611e2285828601611cad565b9150509250929050565b611e3581611c4e565b82525050565b6000602082019050611e506000830184611e2c565b92915050565b600060208284031215611e6c57611e6b611c29565b5b6000611e7a84828501611c77565b91505092915050565b60008060408385031215611e9a57611e99611c29565b5b6000611ea885828601611c77565b9250506020611eb985828601611c77565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115611f4957808604811115611f2557611f24611ec3565b5b6001851615611f345780820291505b8081029050611f4285611ef2565b9450611f09565b94509492505050565b600082611f62576001905061201e565b81611f70576000905061201e565b8160018114611f865760028114611f9057611fbf565b600191505061201e565b60ff841115611fa257611fa1611ec3565b5b8360020a915084821115611fb957611fb8611ec3565b5b5061201e565b5060208310610133831016604e8410600b8410161715611ff45782820a905083811115611fef57611fee611ec3565b5b61201e565b6120018484846001611eff565b9250905081840481111561201857612017611ec3565b5b81810290505b9392505050565b600061203082611c8c565b915061203b83611db5565b92506120687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611f52565b905092915050565b600061207b82611c8c565b915061208683611c8c565b925082820261209481611c8c565b915082820484148315176120ab576120aa611ec3565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006120e8602083611b82565b91506120f3826120b2565b602082019050919050565b60006020820190508181036000830152612117816120db565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612154601783611b82565b915061215f8261211e565b602082019050919050565b6000602082019050818103600083015261218381612147565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006121e6602483611b82565b91506121f18261218a565b604082019050919050565b60006020820190508181036000830152612215816121d9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612278602283611b82565b91506122838261221c565b604082019050919050565b600060208201905081810360008301526122a78161226b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061230a602583611b82565b9150612315826122ae565b604082019050919050565b60006020820190508181036000830152612339816122fd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061239c602383611b82565b91506123a782612340565b604082019050919050565b600060208201905081810360008301526123cb8161238f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061242e602983611b82565b9150612439826123d2565b604082019050919050565b6000602082019050818103600083015261245d81612421565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061249a601083611b82565b91506124a582612464565b602082019050919050565b600060208201905081810360008301526124c98161248d565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612506601983611b82565b9150612511826124d0565b602082019050919050565b60006020820190508181036000830152612535816124f9565b9050919050565b600061254782611c8c565b915061255283611c8c565b925082820190508082111561256a57612569611ec3565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006125a6601a83611b82565b91506125b182612570565b602082019050919050565b600060208201905081810360008301526125d581612599565b9050919050565b60006125e782611c8c565b91506125f283611c8c565b925082820390508181111561260a57612609611ec3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061267d81611c60565b92915050565b60006020828403121561269957612698611c29565b5b60006126a78482850161266e565b91505092915050565b6000819050919050565b6000819050919050565b60006126df6126da6126d5846126b0565b6126ba565b611c8c565b9050919050565b6126ef816126c4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61272a81611c4e565b82525050565b600061273c8383612721565b60208301905092915050565b6000602082019050919050565b6000612760826126f5565b61276a8185612700565b935061277583612711565b8060005b838110156127a657815161278d8882612730565b975061279883612748565b925050600181019050612779565b5085935050505092915050565b600060a0820190506127c86000830188611d38565b6127d560208301876126e6565b81810360408301526127e78186612755565b90506127f66060830185611e2c565b6128036080830184611d38565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061284782611c8c565b915061285283611c8c565b9250826128625761286161280d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006128c9602183611b82565b91506128d48261286d565b604082019050919050565b600060208201905081810360008301526128f8816128bc565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612935601b83611b82565b9150612940826128ff565b602082019050919050565b6000602082019050818103600083015261296481612928565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203829d97dec87102af6e152982b72dc8a6dfacc7d50f3719ec3676a001525992264736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101235760003560e01c8063715018a6116100a057806395d89b411161006457806395d89b41146103ac578063a9059cbb146103d7578063bf474bed14610414578063c9567bf91461043f578063dd62ed3e146104565761012a565b8063715018a6146102fd578063751039fc146103145780637d1db4a51461032b5780638da5cb5b146103565780638f9a55c0146103815761012a565b8063313ce567116100e7578063313ce5671461022a5780633be6e6371461025557806349bd5a5e1461027e57806351bc3c85146102a957806370a08231146102c05761012a565b806306fdde031461012f578063095ea7b31461015a5780630faee56f1461019757806318160ddd146101c257806323b872dd146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b50610144610493565b6040516101519190611c07565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611cc2565b6104d0565b60405161018e9190611d1d565b60405180910390f35b3480156101a357600080fd5b506101ac6104ee565b6040516101b99190611d47565b60405180910390f35b3480156101ce57600080fd5b506101d76104f4565b6040516101e49190611d47565b60405180910390f35b3480156101f957600080fd5b50610214600480360381019061020f9190611d62565b610518565b6040516102219190611d1d565b60405180910390f35b34801561023657600080fd5b5061023f6105f1565b60405161024c9190611dd1565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190611dec565b6105fa565b005b34801561028a57600080fd5b506102936106a1565b6040516102a09190611e3b565b60405180910390f35b3480156102b557600080fd5b506102be6106c7565b005b3480156102cc57600080fd5b506102e760048036038101906102e29190611e56565b610764565b6040516102f49190611d47565b60405180910390f35b34801561030957600080fd5b506103126107ad565b005b34801561032057600080fd5b50610329610900565b005b34801561033757600080fd5b50610340610a30565b60405161034d9190611d47565b60405180910390f35b34801561036257600080fd5b5061036b610a36565b6040516103789190611e3b565b60405180910390f35b34801561038d57600080fd5b50610396610a5f565b6040516103a39190611d47565b60405180910390f35b3480156103b857600080fd5b506103c1610a65565b6040516103ce9190611c07565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f99190611cc2565b610aa2565b60405161040b9190611d1d565b60405180910390f35b34801561042057600080fd5b50610429610ac0565b6040516104369190611d47565b60405180910390f35b34801561044b57600080fd5b50610454610ac6565b005b34801561046257600080fd5b5061047d60048036038101906104789190611e83565b610be3565b60405161048a9190611d47565b60405180910390f35b60606040518060400160405280600d81526020017f426f6f6b206f6620536f6e696300000000000000000000000000000000000000815250905090565b60006104e46104dd610c6a565b8484610c72565b6001905092915050565b600b5481565b60006009600a6105049190612025565b633b9aca006105139190612070565b905090565b6000610525848484610e3b565b6105e684610531610c6a565b6105e18560405180606001604052806028815260200161296c60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610597610c6a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116469092919063ffffffff16565b610c72565b600190509392505050565b60006009905090565b610602610c6a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461068f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610686906120fe565b60405180910390fd5b81600681905550806007819055505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610708610c6a565b73ffffffffffffffffffffffffffffffffffffffff161461072857600080fd5b600061073330610764565b9050600081111561074857610747816116aa565b5b600047905060008111156107605761075f81611923565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107b5610c6a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610842576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906120fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610908610c6a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098c906120fe565b60405180910390fd5b6009600a6109a39190612025565b633b9aca006109b29190612070565b6008819055506009600a6109c69190612025565b633b9aca006109d59190612070565b6009819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a0a9190612025565b633b9aca00610a199190612070565b604051610a269190611d47565b60405180910390a1565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b60606040518060400160405280600381526020017f424f530000000000000000000000000000000000000000000000000000000000815250905090565b6000610ab6610aaf610c6a565b8484610e3b565b6001905092915050565b600a5481565b610ace610c6a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b52906120fe565b60405180910390fd5b600d60149054906101000a900460ff1615610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba29061216a565b60405180910390fd5b6001600d60166101000a81548160ff0219169083151502179055506001600d60146101000a81548160ff021916908315150217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd8906121fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d479061228e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e2e9190611d47565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190612320565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f10906123b2565b60405180910390fd5b60008111610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5390612444565b60405180910390fd5b6000610f66610a36565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610fd45750610fa4610a36565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561138957600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156110845750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156110da5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156111f657600d60149054906101000a900460ff1661112e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611125906124b0565b60405180910390fd5b600854821115611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a9061251c565b60405180910390fd5b6009548261118085610764565b61118a919061253c565b11156111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c2906125bc565b60405180910390fd5b6111f360646111e56006548561198f90919063ffffffff16565b611a0990919063ffffffff16565b90505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561127f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156112af576112ac606461129e6007548561198f90919063ffffffff16565b611a0990919063ffffffff16565b90505b60006112ba30610764565b9050600d60159054906101000a900460ff161580156113265750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561133e5750600d60169054906101000a900460ff165b801561134b5750600a5481115b156113875761136d6113688461136384600b54611a53565b611a53565b6116aa565b600047905060008111156113855761138447611923565b5b505b505b600081111561148d576113e481600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a6c90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114849190611d47565b60405180910390a35b6114df82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aca90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115866115388284611aca90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a6c90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61162b8486611aca90919063ffffffff16565b6040516116389190611d47565b60405180910390a350505050565b600083831115829061168e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116859190611c07565b60405180910390fd5b506000838561169d91906125dc565b9050809150509392505050565b6001600d60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156116e2576116e1612610565b5b6040519080825280602002602001820160405280156117105781602001602082028036833780820191505090505b50905030816000815181106117285761172761263f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f39190612683565b816001815181106118075761180661263f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061186e30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610c72565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016118d29594939291906127b3565b600060405180830381600087803b1580156118ec57600080fd5b505af1158015611900573d6000803e3d6000fd5b50505050506000600d60156101000a81548160ff02191690831515021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561198b573d6000803e3d6000fd5b5050565b60008083036119a15760009050611a03565b600082846119af9190612070565b90508284826119be919061283c565b146119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f5906128df565b60405180910390fd5b809150505b92915050565b6000611a4b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b14565b905092915050565b6000818311611a625782611a64565b815b905092915050565b6000808284611a7b919061253c565b905083811015611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab79061294b565b60405180910390fd5b8091505092915050565b6000611b0c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611646565b905092915050565b60008083118290611b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b529190611c07565b60405180910390fd5b5060008385611b6a919061283c565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611bb1578082015181840152602081019050611b96565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bd982611b77565b611be38185611b82565b9350611bf3818560208601611b93565b611bfc81611bbd565b840191505092915050565b60006020820190508181036000830152611c218184611bce565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c5982611c2e565b9050919050565b611c6981611c4e565b8114611c7457600080fd5b50565b600081359050611c8681611c60565b92915050565b6000819050919050565b611c9f81611c8c565b8114611caa57600080fd5b50565b600081359050611cbc81611c96565b92915050565b60008060408385031215611cd957611cd8611c29565b5b6000611ce785828601611c77565b9250506020611cf885828601611cad565b9150509250929050565b60008115159050919050565b611d1781611d02565b82525050565b6000602082019050611d326000830184611d0e565b92915050565b611d4181611c8c565b82525050565b6000602082019050611d5c6000830184611d38565b92915050565b600080600060608486031215611d7b57611d7a611c29565b5b6000611d8986828701611c77565b9350506020611d9a86828701611c77565b9250506040611dab86828701611cad565b9150509250925092565b600060ff82169050919050565b611dcb81611db5565b82525050565b6000602082019050611de66000830184611dc2565b92915050565b60008060408385031215611e0357611e02611c29565b5b6000611e1185828601611cad565b9250506020611e2285828601611cad565b9150509250929050565b611e3581611c4e565b82525050565b6000602082019050611e506000830184611e2c565b92915050565b600060208284031215611e6c57611e6b611c29565b5b6000611e7a84828501611c77565b91505092915050565b60008060408385031215611e9a57611e99611c29565b5b6000611ea885828601611c77565b9250506020611eb985828601611c77565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115611f4957808604811115611f2557611f24611ec3565b5b6001851615611f345780820291505b8081029050611f4285611ef2565b9450611f09565b94509492505050565b600082611f62576001905061201e565b81611f70576000905061201e565b8160018114611f865760028114611f9057611fbf565b600191505061201e565b60ff841115611fa257611fa1611ec3565b5b8360020a915084821115611fb957611fb8611ec3565b5b5061201e565b5060208310610133831016604e8410600b8410161715611ff45782820a905083811115611fef57611fee611ec3565b5b61201e565b6120018484846001611eff565b9250905081840481111561201857612017611ec3565b5b81810290505b9392505050565b600061203082611c8c565b915061203b83611db5565b92506120687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611f52565b905092915050565b600061207b82611c8c565b915061208683611c8c565b925082820261209481611c8c565b915082820484148315176120ab576120aa611ec3565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006120e8602083611b82565b91506120f3826120b2565b602082019050919050565b60006020820190508181036000830152612117816120db565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612154601783611b82565b915061215f8261211e565b602082019050919050565b6000602082019050818103600083015261218381612147565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006121e6602483611b82565b91506121f18261218a565b604082019050919050565b60006020820190508181036000830152612215816121d9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612278602283611b82565b91506122838261221c565b604082019050919050565b600060208201905081810360008301526122a78161226b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061230a602583611b82565b9150612315826122ae565b604082019050919050565b60006020820190508181036000830152612339816122fd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061239c602383611b82565b91506123a782612340565b604082019050919050565b600060208201905081810360008301526123cb8161238f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061242e602983611b82565b9150612439826123d2565b604082019050919050565b6000602082019050818103600083015261245d81612421565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061249a601083611b82565b91506124a582612464565b602082019050919050565b600060208201905081810360008301526124c98161248d565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612506601983611b82565b9150612511826124d0565b602082019050919050565b60006020820190508181036000830152612535816124f9565b9050919050565b600061254782611c8c565b915061255283611c8c565b925082820190508082111561256a57612569611ec3565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006125a6601a83611b82565b91506125b182612570565b602082019050919050565b600060208201905081810360008301526125d581612599565b9050919050565b60006125e782611c8c565b91506125f283611c8c565b925082820390508181111561260a57612609611ec3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061267d81611c60565b92915050565b60006020828403121561269957612698611c29565b5b60006126a78482850161266e565b91505092915050565b6000819050919050565b6000819050919050565b60006126df6126da6126d5846126b0565b6126ba565b611c8c565b9050919050565b6126ef816126c4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61272a81611c4e565b82525050565b600061273c8383612721565b60208301905092915050565b6000602082019050919050565b6000612760826126f5565b61276a8185612700565b935061277583612711565b8060005b838110156127a657815161278d8882612730565b975061279883612748565b925050600181019050612779565b5085935050505092915050565b600060a0820190506127c86000830188611d38565b6127d560208301876126e6565b81810360408301526127e78186612755565b90506127f66060830185611e2c565b6128036080830184611d38565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061284782611c8c565b915061285283611c8c565b9250826128625761286161280d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006128c9602183611b82565b91506128d48261286d565b604082019050919050565b600060208201905081810360008301526128f8816128bc565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612935601b83611b82565b9150612940826128ff565b602082019050919050565b6000602082019050818103600083015261296481612928565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203829d97dec87102af6e152982b72dc8a6dfacc7d50f3719ec3676a001525992264736f6c63430008110033

Deployed Bytecode Sourcemap

3587:6961:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5471:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6304:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4525:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5748:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6473:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5657:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9995:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4634:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10197:348;;;;;;;;;;;;;:::i;:::-;;5851:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2668:148;;;;;;;;;;;;;:::i;:::-;;9545:159;;;;;;;;;;;;;:::i;:::-;;4336:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2454:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4399:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5562:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5978:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4462:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9812:168;;;;;;;;;;;;;:::i;:::-;;6153:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5471:83;5508:13;5541:5;;;;;;;;;;;;;;;;;5534:12;;5471:83;:::o;6304:161::-;6379:4;6396:39;6405:12;:10;:12::i;:::-;6419:7;6428:6;6396:8;:39::i;:::-;6453:4;6446:11;;6304:161;;;;:::o;4525:51::-;;;;:::o;5748:95::-;5801:7;4144:1;4200:2;:13;;;;:::i;:::-;4187:10;:26;;;;:::i;:::-;5821:14;;5748:95;:::o;6473:313::-;6571:4;6588:36;6598:6;6606:9;6617:6;6588:9;:36::i;:::-;6635:121;6644:6;6652:12;:10;:12::i;:::-;6666:89;6704:6;6666:89;;;;;;;;;;;;;;;;;:11;:19;6678:6;6666:19;;;;;;;;;;;;;;;:33;6686:12;:10;:12::i;:::-;6666:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6635:8;:121::i;:::-;6774:4;6767:11;;6473:313;;;;;:::o;5657:83::-;5698:5;4144:1;5716:16;;5657:83;:::o;9995:153::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10096:10:::1;10083:12;:23;;;;10129:11;10115:13;:25;;;;9995:153:::0;;:::o;4634:28::-;;;;;;;;;;;;;:::o;10197:348::-;10261:10;;;;;;;;;;;10247:24;;:12;:10;:12::i;:::-;:24;;;10239:33;;;;;;10283:20;10304:24;10322:4;10304:9;:24::i;:::-;10283:45;;10355:1;10342:12;:14;10339:73;;;10370:30;10387:12;10370:16;:30::i;:::-;10339:73;10422:18;10441:21;10422:40;;10487:1;10476:10;:12;10473:65;;;10502:24;10515:10;10502:12;:24::i;:::-;10473:65;10228:317;;10197:348::o;5851:119::-;5917:7;5944:9;:18;5954:7;5944:18;;;;;;;;;;;;;;;;5937:25;;5851:119;;;:::o;2668:148::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2775:1:::1;2738:40;;2759:6;::::0;::::1;;;;;;;;2738:40;;;;;;;;;;;;2806:1;2789:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2668:148::o:0;9545:159::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4144:1:::1;4200:2;:13;;;;:::i;:::-;4187:10;:26;;;;:::i;:::-;9598:12;:22;;;;4144:1;4200:2;:13;;;;:::i;:::-;4187:10;:26;;;;:::i;:::-;9631:14;:22;;;;9669:27;4144:1;4200:2;:13;;;;:::i;:::-;4187:10;:26;;;;:::i;:::-;9669:27;;;;;;:::i;:::-;;;;;;;;9545:159::o:0;4336:56::-;;;;:::o;2454:79::-;2492:7;2519:6;;;;;;;;;;;2512:13;;2454:79;:::o;4399:56::-;;;;:::o;5562:87::-;5601:13;5634:7;;;;;;;;;;;;;;;;;5627:14;;5562:87;:::o;5978:167::-;6056:4;6073:42;6083:12;:10;:12::i;:::-;6097:9;6108:6;6073:9;:42::i;:::-;6133:4;6126:11;;5978:167;;;;:::o;4462:56::-;;;;:::o;9812:168::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9876:11:::1;;;;;;;;;;;9875:12;9867:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9939:4;9925:11;;:18;;;;;;;;;;;;;;;;;;9968:4;9954:11;;:18;;;;;;;;;;;;;;;;;;9812:168::o:0;6153:143::-;6234:7;6261:11;:18;6273:5;6261:18;;;;;;;;;;;;;;;:27;6280:7;6261:27;;;;;;;;;;;;;;;;6254:34;;6153:143;;;;:::o;209:98::-;262:7;289:10;282:17;;209:98;:::o;6794:335::-;6904:1;6887:19;;:5;:19;;;6879:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6985:1;6966:21;;:7;:21;;;6958:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7067:6;7037:11;:18;7049:5;7037:18;;;;;;;;;;;;;;;:27;7056:7;7037:27;;;;;;;;;;;;;;;:36;;;;7105:7;7089:32;;7098:5;7089:32;;;7114:6;7089:32;;;;;;:::i;:::-;;;;;;;;6794:335;;;:::o;7137:1803::-;7241:1;7225:18;;:4;:18;;;7217:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7318:1;7304:16;;:2;:16;;;7296:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7388:1;7379:6;:10;7371:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7446:17;7488:7;:5;:7::i;:::-;7480:15;;:4;:15;;;;:32;;;;;7505:7;:5;:7::i;:::-;7499:13;;:2;:13;;;;7480:32;7476:1108;;;7557:13;;;;;;;;;;;7549:21;;:4;:21;;;:55;;;;;7588:15;;;;;;;;;;;7574:30;;:2;:30;;;;7549:55;:83;;;;;7610:18;:22;7629:2;7610:22;;;;;;;;;;;;;;;;;;;;;;;;;7608:24;7549:83;7545:408;;;7662:11;;;;;;;;;;;7654:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;7731:12;;7721:6;:22;;7713:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7826:14;;7816:6;7800:13;7810:2;7800:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;7792:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7902:33;7931:3;7902:24;7913:12;;7902:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;7890:45;;7545:408;7978:13;;;;;;;;;;;7972:19;;:2;:19;;;:43;;;;;8010:4;7995:20;;:4;:20;;;;7972:43;7969:129;;;8048:34;8078:3;8048:25;8059:13;;8048:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;8036:46;;7969:129;8114:28;8145:24;8163:4;8145:9;:24::i;:::-;8114:55;;8189:6;;;;;;;;;;;8188:7;:32;;;;;8207:13;;;;;;;;;;;8199:21;;:2;:21;;;8188:32;:47;;;;;8224:11;;;;;;;;;;;8188:47;:89;;;;;8260:17;;8239:20;:38;8188:89;8184:389;;;8298:67;8315:49;8319:6;8326:37;8330:20;8351:11;;8326:3;:37::i;:::-;8315:3;:49::i;:::-;8298:16;:67::i;:::-;8384:26;8413:21;8384:50;;8477:1;8456:18;:22;8453:105;;;8503:35;8516:21;8503:12;:35::i;:::-;8453:105;8279:294;8184:389;7514:1070;7476:1108;8609:1;8599:9;:11;8596:161;;;8649:39;8678:9;8649;:24;8667:4;8649:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;8624:9;:24;8642:4;8624:24;;;;;;;;;;;;;;;:64;;;;8729:4;8706:39;;8715:4;8706:39;;;8735:9;8706:39;;;;;;:::i;:::-;;;;;;;;8596:161;8783:27;8803:6;8783:9;:15;8793:4;8783:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;8767:9;:15;8777:4;8767:15;;;;;;;;;;;;;;;:43;;;;8835:40;8853:21;8864:9;8853:6;:10;;:21;;;;:::i;:::-;8835:9;:13;8845:2;8835:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;8821:9;:13;8831:2;8821:13;;;;;;;;;;;;;;;:54;;;;8906:2;8891:41;;8900:4;8891:41;;;8910:21;8921:9;8910:6;:10;;:21;;;;:::i;:::-;8891:41;;;;;;:::i;:::-;;;;;;;;7206:1734;7137:1803;;;:::o;1346:190::-;1432:7;1465:1;1460;:6;;1468:12;1452:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1492:9;1508:1;1504;:5;;;;:::i;:::-;1492:17;;1527:1;1520:8;;;1346:190;;;;;:::o;9054:483::-;4874:4;4865:6;;:13;;;;;;;;;;;;;;;;;;9132:21:::1;9170:1;9156:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9132:40;;9201:4;9183;9188:1;9183:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9227:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9217:4;9222:1;9217:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9260:62;9277:4;9292:15;;;;;;;;;;;9310:11;9260:8;:62::i;:::-;9333:15;;;;;;;;;;;:66;;;9414:11;9440:1;9456:4;9483;9503:15;9333:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9121:416;4910:5:::0;4901:6;;:14;;;;;;;;;;;;;;;;;;9054:483;:::o;9712:92::-;9769:10;;;;;;;;;;;:19;;:27;9789:6;9769:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9712:92;:::o;1544:246::-;1602:7;1631:1;1626;:6;1622:47;;1656:1;1649:8;;;;1622:47;1679:9;1695:1;1691;:5;;;;:::i;:::-;1679:17;;1724:1;1719;1715;:5;;;;:::i;:::-;:10;1707:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1781:1;1774:8;;;1544:246;;;;;:::o;1798:132::-;1856:7;1883:39;1887:1;1890;1883:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1876:46;;1798:132;;;;:::o;8948:98::-;9005:7;9032:1;9030;:3;9029:9;;9037:1;9029:9;;;9035:1;9029:9;9022:16;;8948:98;;;;:::o;1015:179::-;1073:7;1093:9;1109:1;1105;:5;;;;:::i;:::-;1093:17;;1134:1;1129;:6;;1121:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1185:1;1178:8;;;1015:179;;;;:::o;1202:136::-;1260:7;1287:43;1291:1;1294;1287:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1280:50;;1202:136;;;;:::o;1938:189::-;2024:7;2056:1;2052;:5;2059:12;2044:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2083:9;2099:1;2095;:5;;;;:::i;:::-;2083:17;;2118:1;2111:8;;;1938:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:474::-;4921:6;4929;4978:2;4966:9;4957:7;4953:23;4949:32;4946:119;;;4984:79;;:::i;:::-;4946:119;5104:1;5129:53;5174:7;5165:6;5154:9;5150:22;5129:53;:::i;:::-;5119:63;;5075:117;5231:2;5257:53;5302:7;5293:6;5282:9;5278:22;5257:53;:::i;:::-;5247:63;;5202:118;4853:474;;;;;:::o;5333:118::-;5420:24;5438:5;5420:24;:::i;:::-;5415:3;5408:37;5333:118;;:::o;5457:222::-;5550:4;5588:2;5577:9;5573:18;5565:26;;5601:71;5669:1;5658:9;5654:17;5645:6;5601:71;:::i;:::-;5457:222;;;;:::o;5685:329::-;5744:6;5793:2;5781:9;5772:7;5768:23;5764:32;5761:119;;;5799:79;;:::i;:::-;5761:119;5919:1;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5890:117;5685:329;;;;:::o;6020:474::-;6088:6;6096;6145:2;6133:9;6124:7;6120:23;6116:32;6113:119;;;6151:79;;:::i;:::-;6113:119;6271:1;6296:53;6341:7;6332:6;6321:9;6317:22;6296:53;:::i;:::-;6286:63;;6242:117;6398:2;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6369:118;6020:474;;;;;:::o;6500:180::-;6548:77;6545:1;6538:88;6645:4;6642:1;6635:15;6669:4;6666:1;6659:15;6686:102;6728:8;6775:5;6772:1;6768:13;6747:34;;6686:102;;;:::o;6794:848::-;6855:5;6862:4;6886:6;6877:15;;6910:5;6901:14;;6924:712;6945:1;6935:8;6932:15;6924:712;;;7040:4;7035:3;7031:14;7025:4;7022:24;7019:50;;;7049:18;;:::i;:::-;7019:50;7099:1;7089:8;7085:16;7082:451;;;7514:4;7507:5;7503:16;7494:25;;7082:451;7564:4;7558;7554:15;7546:23;;7594:32;7617:8;7594:32;:::i;:::-;7582:44;;6924:712;;;6794:848;;;;;;;:::o;7648:1073::-;7702:5;7893:8;7883:40;;7914:1;7905:10;;7916:5;;7883:40;7942:4;7932:36;;7959:1;7950:10;;7961:5;;7932:36;8028:4;8076:1;8071:27;;;;8112:1;8107:191;;;;8021:277;;8071:27;8089:1;8080:10;;8091:5;;;8107:191;8152:3;8142:8;8139:17;8136:43;;;8159:18;;:::i;:::-;8136:43;8208:8;8205:1;8201:16;8192:25;;8243:3;8236:5;8233:14;8230:40;;;8250:18;;:::i;:::-;8230:40;8283:5;;;8021:277;;8407:2;8397:8;8394:16;8388:3;8382:4;8379:13;8375:36;8357:2;8347:8;8344:16;8339:2;8333:4;8330:12;8326:35;8310:111;8307:246;;;8463:8;8457:4;8453:19;8444:28;;8498:3;8491:5;8488:14;8485:40;;;8505:18;;:::i;:::-;8485:40;8538:5;;8307:246;8578:42;8616:3;8606:8;8600:4;8597:1;8578:42;:::i;:::-;8563:57;;;;8652:4;8647:3;8643:14;8636:5;8633:25;8630:51;;;8661:18;;:::i;:::-;8630:51;8710:4;8703:5;8699:16;8690:25;;7648:1073;;;;;;:::o;8727:281::-;8785:5;8809:23;8827:4;8809:23;:::i;:::-;8801:31;;8853:25;8869:8;8853:25;:::i;:::-;8841:37;;8897:104;8934:66;8924:8;8918:4;8897:104;:::i;:::-;8888:113;;8727:281;;;;:::o;9014:410::-;9054:7;9077:20;9095:1;9077:20;:::i;:::-;9072:25;;9111:20;9129:1;9111:20;:::i;:::-;9106:25;;9166:1;9163;9159:9;9188:30;9206:11;9188:30;:::i;:::-;9177:41;;9367:1;9358:7;9354:15;9351:1;9348:22;9328:1;9321:9;9301:83;9278:139;;9397:18;;:::i;:::-;9278:139;9062:362;9014:410;;;;:::o;9430:182::-;9570:34;9566:1;9558:6;9554:14;9547:58;9430:182;:::o;9618:366::-;9760:3;9781:67;9845:2;9840:3;9781:67;:::i;:::-;9774:74;;9857:93;9946:3;9857:93;:::i;:::-;9975:2;9970:3;9966:12;9959:19;;9618:366;;;:::o;9990:419::-;10156:4;10194:2;10183:9;10179:18;10171:26;;10243:9;10237:4;10233:20;10229:1;10218:9;10214:17;10207:47;10271:131;10397:4;10271:131;:::i;:::-;10263:139;;9990:419;;;:::o;10415:173::-;10555:25;10551:1;10543:6;10539:14;10532:49;10415:173;:::o;10594:366::-;10736:3;10757:67;10821:2;10816:3;10757:67;:::i;:::-;10750:74;;10833:93;10922:3;10833:93;:::i;:::-;10951:2;10946:3;10942:12;10935:19;;10594:366;;;:::o;10966:419::-;11132:4;11170:2;11159:9;11155:18;11147:26;;11219:9;11213:4;11209:20;11205:1;11194:9;11190:17;11183:47;11247:131;11373:4;11247:131;:::i;:::-;11239:139;;10966:419;;;:::o;11391:223::-;11531:34;11527:1;11519:6;11515:14;11508:58;11600:6;11595:2;11587:6;11583:15;11576:31;11391:223;:::o;11620:366::-;11762:3;11783:67;11847:2;11842:3;11783:67;:::i;:::-;11776:74;;11859:93;11948:3;11859:93;:::i;:::-;11977:2;11972:3;11968:12;11961:19;;11620:366;;;:::o;11992:419::-;12158:4;12196:2;12185:9;12181:18;12173:26;;12245:9;12239:4;12235:20;12231:1;12220:9;12216:17;12209:47;12273:131;12399:4;12273:131;:::i;:::-;12265:139;;11992:419;;;:::o;12417:221::-;12557:34;12553:1;12545:6;12541:14;12534:58;12626:4;12621:2;12613:6;12609:15;12602:29;12417:221;:::o;12644:366::-;12786:3;12807:67;12871:2;12866:3;12807:67;:::i;:::-;12800:74;;12883:93;12972:3;12883:93;:::i;:::-;13001:2;12996:3;12992:12;12985:19;;12644:366;;;:::o;13016:419::-;13182:4;13220:2;13209:9;13205:18;13197:26;;13269:9;13263:4;13259:20;13255:1;13244:9;13240:17;13233:47;13297:131;13423:4;13297:131;:::i;:::-;13289:139;;13016:419;;;:::o;13441:224::-;13581:34;13577:1;13569:6;13565:14;13558:58;13650:7;13645:2;13637:6;13633:15;13626:32;13441:224;:::o;13671:366::-;13813:3;13834:67;13898:2;13893:3;13834:67;:::i;:::-;13827:74;;13910:93;13999:3;13910:93;:::i;:::-;14028:2;14023:3;14019:12;14012:19;;13671:366;;;:::o;14043:419::-;14209:4;14247:2;14236:9;14232:18;14224:26;;14296:9;14290:4;14286:20;14282:1;14271:9;14267:17;14260:47;14324:131;14450:4;14324:131;:::i;:::-;14316:139;;14043:419;;;:::o;14468:222::-;14608:34;14604:1;14596:6;14592:14;14585:58;14677:5;14672:2;14664:6;14660:15;14653:30;14468:222;:::o;14696:366::-;14838:3;14859:67;14923:2;14918:3;14859:67;:::i;:::-;14852:74;;14935:93;15024:3;14935:93;:::i;:::-;15053:2;15048:3;15044:12;15037:19;;14696:366;;;:::o;15068:419::-;15234:4;15272:2;15261:9;15257:18;15249:26;;15321:9;15315:4;15311:20;15307:1;15296:9;15292:17;15285:47;15349:131;15475:4;15349:131;:::i;:::-;15341:139;;15068:419;;;:::o;15493:228::-;15633:34;15629:1;15621:6;15617:14;15610:58;15702:11;15697:2;15689:6;15685:15;15678:36;15493:228;:::o;15727:366::-;15869:3;15890:67;15954:2;15949:3;15890:67;:::i;:::-;15883:74;;15966:93;16055:3;15966:93;:::i;:::-;16084:2;16079:3;16075:12;16068:19;;15727:366;;;:::o;16099:419::-;16265:4;16303:2;16292:9;16288:18;16280:26;;16352:9;16346:4;16342:20;16338:1;16327:9;16323:17;16316:47;16380:131;16506:4;16380:131;:::i;:::-;16372:139;;16099:419;;;:::o;16524:166::-;16664:18;16660:1;16652:6;16648:14;16641:42;16524:166;:::o;16696:366::-;16838:3;16859:67;16923:2;16918:3;16859:67;:::i;:::-;16852:74;;16935:93;17024:3;16935:93;:::i;:::-;17053:2;17048:3;17044:12;17037:19;;16696:366;;;:::o;17068:419::-;17234:4;17272:2;17261:9;17257:18;17249:26;;17321:9;17315:4;17311:20;17307:1;17296:9;17292:17;17285:47;17349:131;17475:4;17349:131;:::i;:::-;17341:139;;17068:419;;;:::o;17493:175::-;17633:27;17629:1;17621:6;17617:14;17610:51;17493:175;:::o;17674:366::-;17816:3;17837:67;17901:2;17896:3;17837:67;:::i;:::-;17830:74;;17913:93;18002:3;17913:93;:::i;:::-;18031:2;18026:3;18022:12;18015:19;;17674:366;;;:::o;18046:419::-;18212:4;18250:2;18239:9;18235:18;18227:26;;18299:9;18293:4;18289:20;18285:1;18274:9;18270:17;18263:47;18327:131;18453:4;18327:131;:::i;:::-;18319:139;;18046:419;;;:::o;18471:191::-;18511:3;18530:20;18548:1;18530:20;:::i;:::-;18525:25;;18564:20;18582:1;18564:20;:::i;:::-;18559:25;;18607:1;18604;18600:9;18593:16;;18628:3;18625:1;18622:10;18619:36;;;18635:18;;:::i;:::-;18619:36;18471:191;;;;:::o;18668:176::-;18808:28;18804:1;18796:6;18792:14;18785:52;18668:176;:::o;18850:366::-;18992:3;19013:67;19077:2;19072:3;19013:67;:::i;:::-;19006:74;;19089:93;19178:3;19089:93;:::i;:::-;19207:2;19202:3;19198:12;19191:19;;18850:366;;;:::o;19222:419::-;19388:4;19426:2;19415:9;19411:18;19403:26;;19475:9;19469:4;19465:20;19461:1;19450:9;19446:17;19439:47;19503:131;19629:4;19503:131;:::i;:::-;19495:139;;19222:419;;;:::o;19647:194::-;19687:4;19707:20;19725:1;19707:20;:::i;:::-;19702:25;;19741:20;19759:1;19741:20;:::i;:::-;19736:25;;19785:1;19782;19778:9;19770:17;;19809:1;19803:4;19800:11;19797:37;;;19814:18;;:::i;:::-;19797:37;19647:194;;;;:::o;19847:180::-;19895:77;19892:1;19885:88;19992:4;19989:1;19982:15;20016:4;20013:1;20006:15;20033:180;20081:77;20078:1;20071:88;20178:4;20175:1;20168:15;20202:4;20199:1;20192:15;20219:143;20276:5;20307:6;20301:13;20292:22;;20323:33;20350:5;20323:33;:::i;:::-;20219:143;;;;:::o;20368:351::-;20438:6;20487:2;20475:9;20466:7;20462:23;20458:32;20455:119;;;20493:79;;:::i;:::-;20455:119;20613:1;20638:64;20694:7;20685:6;20674:9;20670:22;20638:64;:::i;:::-;20628:74;;20584:128;20368:351;;;;:::o;20725:85::-;20770:7;20799:5;20788:16;;20725:85;;;:::o;20816:60::-;20844:3;20865:5;20858:12;;20816:60;;;:::o;20882:158::-;20940:9;20973:61;20991:42;21000:32;21026:5;21000:32;:::i;:::-;20991:42;:::i;:::-;20973:61;:::i;:::-;20960:74;;20882:158;;;:::o;21046:147::-;21141:45;21180:5;21141:45;:::i;:::-;21136:3;21129:58;21046:147;;:::o;21199:114::-;21266:6;21300:5;21294:12;21284:22;;21199:114;;;:::o;21319:184::-;21418:11;21452:6;21447:3;21440:19;21492:4;21487:3;21483:14;21468:29;;21319:184;;;;:::o;21509:132::-;21576:4;21599:3;21591:11;;21629:4;21624:3;21620:14;21612:22;;21509:132;;;:::o;21647:108::-;21724:24;21742:5;21724:24;:::i;:::-;21719:3;21712:37;21647:108;;:::o;21761:179::-;21830:10;21851:46;21893:3;21885:6;21851:46;:::i;:::-;21929:4;21924:3;21920:14;21906:28;;21761:179;;;;:::o;21946:113::-;22016:4;22048;22043:3;22039:14;22031:22;;21946:113;;;:::o;22095:732::-;22214:3;22243:54;22291:5;22243:54;:::i;:::-;22313:86;22392:6;22387:3;22313:86;:::i;:::-;22306:93;;22423:56;22473:5;22423:56;:::i;:::-;22502:7;22533:1;22518:284;22543:6;22540:1;22537:13;22518:284;;;22619:6;22613:13;22646:63;22705:3;22690:13;22646:63;:::i;:::-;22639:70;;22732:60;22785:6;22732:60;:::i;:::-;22722:70;;22578:224;22565:1;22562;22558:9;22553:14;;22518:284;;;22522:14;22818:3;22811:10;;22219:608;;;22095:732;;;;:::o;22833:831::-;23096:4;23134:3;23123:9;23119:19;23111:27;;23148:71;23216:1;23205:9;23201:17;23192:6;23148:71;:::i;:::-;23229:80;23305:2;23294:9;23290:18;23281:6;23229:80;:::i;:::-;23356:9;23350:4;23346:20;23341:2;23330:9;23326:18;23319:48;23384:108;23487:4;23478:6;23384:108;:::i;:::-;23376:116;;23502:72;23570:2;23559:9;23555:18;23546:6;23502:72;:::i;:::-;23584:73;23652:3;23641:9;23637:19;23628:6;23584:73;:::i;:::-;22833:831;;;;;;;;:::o;23670:180::-;23718:77;23715:1;23708:88;23815:4;23812:1;23805:15;23839:4;23836:1;23829:15;23856:185;23896:1;23913:20;23931:1;23913:20;:::i;:::-;23908:25;;23947:20;23965:1;23947:20;:::i;:::-;23942:25;;23986:1;23976:35;;23991:18;;:::i;:::-;23976:35;24033:1;24030;24026:9;24021:14;;23856:185;;;;:::o;24047:220::-;24187:34;24183:1;24175:6;24171:14;24164:58;24256:3;24251:2;24243:6;24239:15;24232:28;24047:220;:::o;24273:366::-;24415:3;24436:67;24500:2;24495:3;24436:67;:::i;:::-;24429:74;;24512:93;24601:3;24512:93;:::i;:::-;24630:2;24625:3;24621:12;24614:19;;24273:366;;;:::o;24645:419::-;24811:4;24849:2;24838:9;24834:18;24826:26;;24898:9;24892:4;24888:20;24884:1;24873:9;24869:17;24862:47;24926:131;25052:4;24926:131;:::i;:::-;24918:139;;24645:419;;;:::o;25070:177::-;25210:29;25206:1;25198:6;25194:14;25187:53;25070:177;:::o;25253:366::-;25395:3;25416:67;25480:2;25475:3;25416:67;:::i;:::-;25409:74;;25492:93;25581:3;25492:93;:::i;:::-;25610:2;25605:3;25601:12;25594:19;;25253:366;;;:::o;25625:419::-;25791:4;25829:2;25818:9;25814:18;25806:26;;25878:9;25872:4;25868:20;25864:1;25853:9;25849:17;25842:47;25906:131;26032:4;25906:131;:::i;:::-;25898:139;;25625:419;;;:::o

Swarm Source

ipfs://3829d97dec87102af6e152982b72dc8a6dfacc7d50f3719ec3676a0015259922

Block Transaction 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
[ 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.