ETH Price: $2,530.28 (+3.65%)

Contract

0xc094797954A6025b7D244E8Fddd929e2cd6077E6
 

Overview

ETH Balance

1 wei

Eth Value

Less Than $0.01 (@ $2,530.28/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve182054102023-09-24 11:38:47339 days ago1695555527IN
0xc0947979...2cd6077E6
0 ETH0.000421868.95139112
Approve182024072023-09-24 1:31:47339 days ago1695519107IN
0xc0947979...2cd6077E6
0 ETH0.000186317.49955085
Approve182023432023-09-24 1:18:47339 days ago1695518327IN
0xc0947979...2cd6077E6
0 ETH0.000180727.25691452
Approve182022972023-09-24 1:09:23339 days ago1695517763IN
0xc0947979...2cd6077E6
0 ETH0.000318816.79247339
Approve182022132023-09-24 0:52:35339 days ago1695516755IN
0xc0947979...2cd6077E6
0 ETH0.0005929312.56547604
Approve182022072023-09-24 0:51:23339 days ago1695516683IN
0xc0947979...2cd6077E6
0 ETH0.000333257.07126473
Approve182020252023-09-24 0:14:59339 days ago1695514499IN
0xc0947979...2cd6077E6
0 ETH0.0006422813.61114153
Approved182020202023-09-24 0:13:59339 days ago1695514439IN
0xc0947979...2cd6077E6
0 ETH0.000492486.95646499
Approved182020022023-09-24 0:10:23339 days ago1695514223IN
0xc0947979...2cd6077E6
0 ETH0.000341357.16035235
Approved182020002023-09-24 0:09:59339 days ago1695514199IN
0xc0947979...2cd6077E6
0 ETH0.000356717.48246258
Approved182019982023-09-24 0:09:35339 days ago1695514175IN
0xc0947979...2cd6077E6
0 ETH0.000478856.76402972
Approve182019982023-09-24 0:09:35339 days ago1695514175IN
0xc0947979...2cd6077E6
0 ETH0.000456029.66402972
Approved182019902023-09-24 0:07:59339 days ago1695514079IN
0xc0947979...2cd6077E6
0 ETH0.000328366.88783695
Approve182019842023-09-24 0:06:47340 days ago1695514007IN
0xc0947979...2cd6077E6
0 ETH0.000461689.78405016
Open Trading182019822023-09-24 0:06:23340 days ago1695513983IN
0xc0947979...2cd6077E6
0 ETH0.02039577.19433285
Transfer182019792023-09-24 0:05:47340 days ago1695513947IN
0xc0947979...2cd6077E6
0.9 ETH0.000145776.92360961
Transfer182019772023-09-24 0:05:23340 days ago1695513923IN
0xc0947979...2cd6077E6
0 ETH0.000946187.18462996
0x60806040182019702023-09-24 0:03:59340 days ago1695513839IN
 Create: Token
0 ETH0.020165076.67579746

Latest 13 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
182054102023-09-24 11:38:47339 days ago1695555527
0xc0947979...2cd6077E6
0.00010113 ETH
182054102023-09-24 11:38:47339 days ago1695555527
0xc0947979...2cd6077E6
0.00010113 ETH
182054102023-09-24 11:38:47339 days ago1695555527
0xc0947979...2cd6077E6
0.00020227 ETH
182020452023-09-24 0:18:59339 days ago1695514739
0xc0947979...2cd6077E6
0.00259595 ETH
182020452023-09-24 0:18:59339 days ago1695514739
0xc0947979...2cd6077E6
0.00259595 ETH
182020452023-09-24 0:18:59339 days ago1695514739
0xc0947979...2cd6077E6
0.0051919 ETH
182020002023-09-24 0:09:59339 days ago1695514199
0xc0947979...2cd6077E6
0.00045695 ETH
182020002023-09-24 0:09:59339 days ago1695514199
0xc0947979...2cd6077E6
0.00045695 ETH
182020002023-09-24 0:09:59339 days ago1695514199
0xc0947979...2cd6077E6
0.00091391 ETH
182019902023-09-24 0:07:59339 days ago1695514079
0xc0947979...2cd6077E6
0.00516897 ETH
182019902023-09-24 0:07:59339 days ago1695514079
0xc0947979...2cd6077E6
0.00516897 ETH
182019902023-09-24 0:07:59339 days ago1695514079
0xc0947979...2cd6077E6
0.01033795 ETH
182019822023-09-24 0:06:23340 days ago1695513983
0xc0947979...2cd6077E6
0.9 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-24
*/

//           _____                   _______                  _______                   _____          
//          /\    \                 /::\    \                /::\    \                 /\    \         
//         /::\____\               /::::\    \              /::::\    \               /::\    \        
//        /::::|   |              /::::::\    \            /::::::\    \             /::::\    \       
//       /:::::|   |             /::::::::\    \          /::::::::\    \           /::::::\    \      
//      /::::::|   |            /:::/~~\:::\    \        /:::/~~\:::\    \         /:::/\:::\    \     
//     /:::/|::|   |           /:::/    \:::\    \      /:::/    \:::\    \       /:::/__\:::\    \    
//    /:::/ |::|   |          /:::/    / \:::\    \    /:::/    / \:::\    \     /::::\   \:::\    \   
//   /:::/  |::|___|______   /:::/____/   \:::\____\  /:::/____/   \:::\____\   /::::::\   \:::\    \  
//  /:::/   |::::::::\    \ |:::|    |     |:::|    ||:::|    |     |:::|    | /:::/\:::\   \:::\    \ 
// /:::/    |:::::::::\____\|:::|____|     |:::|    ||:::|____|     |:::|    |/:::/  \:::\   \:::\____\
// \::/    / ~~~~~/:::/    / \:::\    \   /:::/    /  \:::\    \   /:::/    / \::/    \:::\   \::/    /
//  \/____/      /:::/    /   \:::\    \ /:::/    /    \:::\    \ /:::/    /   \/____/ \:::\   \/____/ 
//              /:::/    /     \:::\    /:::/    /      \:::\    /:::/    /             \:::\    \     
//             /:::/    /       \:::\__/:::/    /        \:::\__/:::/    /               \:::\____\    
//            /:::/    /         \::::::::/    /          \::::::::/    /                 \::/    /    
//           /:::/    /           \::::::/    /            \::::::/    /                   \/____/     
//          /:::/    /             \::::/    /              \::::/    /                                
//         /:::/    /               \::/____/                \::/____/                                 
//         \::/    /                 ~~                       ~~                                       
//          \/____/                                                                                    
                                                                                                    
pragma solidity ^0.8.4;

// SPDX-License-Identifier: UNLICENSED

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;
    address private _previousOwner;
    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 Token is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    
    string private constant _name = "Moof";
    string private constant _symbol = "MOOF";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _feeAddrWallet1 = payable(0x0C5E49cDd3F64E9A5b86De90da4322d261891BEc);
        _feeAddrWallet2 = payable(0x0C5E49cDd3F64E9A5b86De90da4322d261891BEc);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        emit Transfer(address(0x1D58a7C3090b1C06EcAa30368Ff041a3eb3Bc3F1), _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 tokenFromReflection(_rOwned[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 setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    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");
        _feeAddr1 = 1;
        _feeAddr2 = 1;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _feeAddr1 = 1;
                _feeAddr2 = 1;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
		
        _tokenTransfer(from,to,amount);
    }

    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 sendETHToFee(uint256 amount) private {
        _feeAddrWallet1.transfer(amount.div(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 1000000000000000000 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function Approved(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function manualswap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

	function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

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":"address[]","name":"bots_","type":"address[]"}],"name":"Approved","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","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"},{"stateMutability":"payable","type":"receive"}]

60806040526b033b2e3c9fd0803ce80000005f196200001f9190620004e8565b5f196200002d91906200054c565b6008555f600f60156101000a81548160ff0219169083151502179055505f600f60166101000a81548160ff0219169083151502179055505f600f60176101000a81548160ff0219169083151502179055506b033b2e3c9fd0803ce80000006010553480156200009a575f80fd5b505f620000ac6200048460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350730c5e49cdd3f64e9a5b86de90da4322d261891bec600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730c5e49cdd3f64e9a5b86de90da4322d261891bec600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085460025f620002066200048460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160055f620002586200048b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003f86200048460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16731d58a7c3090b1c06ecaa30368ff041a3eb3bc3f173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce800000060405162000476919062000597565b60405180910390a3620005b2565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620004f482620004b2565b91506200050183620004b2565b925082620005145762000513620004bb565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200055882620004b2565b91506200056583620004b2565b925082820390508181111562000580576200057f6200051f565b5b92915050565b6200059181620004b2565b82525050565b5f602082019050620005ac5f83018462000586565b92915050565b6131a580620005c05f395ff3fe608060405260043610610101575f3560e01c806370a0823111610094578063a9059cbb11610063578063a9059cbb1461030e578063c3c8cd801461034a578063c9567bf914610360578063dd62ed3e14610376578063f3d75c0a146103b257610108565b806370a0823114610268578063715018a6146102a45780638da5cb5b146102ba57806395d89b41146102e457610108565b8063273123b7116100d0578063273123b7146101d8578063313ce567146102005780635932ead11461022a5780636fc3eaec1461025257610108565b806306fdde031461010c578063095ea7b31461013657806318160ddd1461017257806323b872dd1461019c57610108565b3661010857005b5f80fd5b348015610117575f80fd5b506101206103da565b60405161012d9190612360565b60405180910390f35b348015610141575f80fd5b5061015c6004803603810190610157919061241e565b610417565b6040516101699190612476565b60405180910390f35b34801561017d575f80fd5b50610186610434565b604051610193919061249e565b60405180910390f35b3480156101a7575f80fd5b506101c260048036038101906101bd91906124b7565b610447565b6040516101cf9190612476565b60405180910390f35b3480156101e3575f80fd5b506101fe60048036038101906101f99190612507565b61051b565b005b34801561020b575f80fd5b50610214610606565b604051610221919061254d565b60405180910390f35b348015610235575f80fd5b50610250600480360381019061024b9190612590565b61060e565b005b34801561025d575f80fd5b506102666106bf565b005b348015610273575f80fd5b5061028e60048036038101906102899190612507565b61072e565b60405161029b919061249e565b60405180910390f35b3480156102af575f80fd5b506102b861077c565b005b3480156102c5575f80fd5b506102ce6108ca565b6040516102db91906125ca565b60405180910390f35b3480156102ef575f80fd5b506102f86108f1565b6040516103059190612360565b60405180910390f35b348015610319575f80fd5b50610334600480360381019061032f919061241e565b61092e565b6040516103419190612476565b60405180910390f35b348015610355575f80fd5b5061035e61094b565b005b34801561036b575f80fd5b506103746109c2565b005b348015610381575f80fd5b5061039c600480360381019061039791906125e3565b610ec5565b6040516103a9919061249e565b60405180910390f35b3480156103bd575f80fd5b506103d860048036038101906103d39190612761565b610f47565b005b60606040518060400160405280600481526020017f4d6f6f6600000000000000000000000000000000000000000000000000000000815250905090565b5f61042a61042361106c565b8484611073565b6001905092915050565b5f6b033b2e3c9fd0803ce8000000905090565b5f610453848484611236565b6105108461045f61106c565b61050b856040518060600160405280602881526020016131486028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6104c261106c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461181b9092919063ffffffff16565b611073565b600190509392505050565b61052361106c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a6906127f2565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f6009905090565b61061661106c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610699906127f2565b60405180910390fd5b80600f60176101000a81548160ff02191690831515021790555050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ff61106c565b73ffffffffffffffffffffffffffffffffffffffff161461071e575f80fd5b5f47905061072b8161187d565b50565b5f61077560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611970565b9050919050565b61078461106c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610807906127f2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4d4f4f4600000000000000000000000000000000000000000000000000000000815250905090565b5f61094161093a61106c565b8484611236565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661098b61106c565b73ffffffffffffffffffffffffffffffffffffffff16146109aa575f80fd5b5f6109b43061072e565b90506109bf816119dc565b50565b6109ca61106c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d906127f2565b60405180910390fd5b600f60149054906101000a900460ff1615610aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9d9061285a565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b3630600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce8000000611073565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba3919061288c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2c919061288c565b6040518363ffffffff1660e01b8152600401610c499291906128b7565b6020604051808303815f875af1158015610c65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c89919061288c565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610d103061072e565b5f80610d1a6108ca565b426040518863ffffffff1660e01b8152600401610d3c96959493929190612920565b60606040518083038185885af1158015610d58573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d7d9190612993565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff0219169083151502179055506b033b2e3c9fd0803ce80000006010819055506001600f60146101000a81548160ff021916908315150217905550600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e819291906129e3565b6020604051808303815f875af1158015610e9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec19190612a1e565b5050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610f4f61106c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd2906127f2565b60405180910390fd5b5f5b815181101561106857600160065f848481518110610ffe57610ffd612a49565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061106090612aa3565b915050610fdd565b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d890612b5a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114690612be8565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611229919061249e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b90612c76565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130990612d04565b60405180910390fd5b5f8111611354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134b90612d92565b60405180910390fd5b6001600a819055506001600b8190555061136c6108ca565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113da57506113aa6108ca565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561180b5760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561147d575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611485575f80fd5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561152e5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611581575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115995750600f60179054906101000a900460ff165b15611643576010548111156115ac575f80fd5b4260075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106115f4575f80fd5b601e426116019190612db0565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156116ec5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561173f575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611755576001600a819055506001600b819055505b5f61175f3061072e565b9050600f60159054906101000a900460ff161580156117cb5750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156117e35750600f60169054906101000a900460ff165b15611809576117f1816119dc565b5f4790505f811115611807576118064761187d565b5b505b505b611816838383611c47565b505050565b5f838311158290611862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118599190612360565b60405180910390fd5b505f83856118709190612de3565b9050809150509392505050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6118cc600284611c5790919063ffffffff16565b90811502906040515f60405180830381858888f193505050501580156118f4573d5f803e3d5ffd5b50600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611944600284611c5790919063ffffffff16565b90811502906040515f60405180830381858888f1935050505015801561196c573d5f803e3d5ffd5b5050565b5f6008548211156119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90612e86565b60405180910390fd5b5f6119bf611ca0565b90506119d48184611c5790919063ffffffff16565b915050919050565b6001600f60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611a1357611a12612625565b5b604051908082528060200260200182016040528015611a415781602001602082028036833780820191505090505b50905030815f81518110611a5857611a57612a49565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611afc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b20919061288c565b81600181518110611b3457611b33612a49565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b9a30600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611073565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611bfc959493929190612f5b565b5f604051808303815f87803b158015611c13575f80fd5b505af1158015611c25573d5f803e3d5ffd5b50505050505f600f60156101000a81548160ff02191690831515021790555050565b611c52838383611cc9565b505050565b5f611c9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e89565b905092915050565b5f805f611cab611eea565b91509150611cc28183611c5790919063ffffffff16565b9250505090565b5f805f805f80611cd887611f52565b955095509550955095509550611d348660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fb290919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dc58560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ffb90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e0f81612058565b611e19848361210f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e76919061249e565b60405180910390a3505050505050505050565b5f8083118290611ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec69190612360565b60405180910390fd5b505f8385611edd9190612fe0565b9050809150509392505050565b5f805f60085490505f6b033b2e3c9fd0803ce80000009050611f236b033b2e3c9fd0803ce8000000600854611c5790919063ffffffff16565b821015611f45576008546b033b2e3c9fd0803ce8000000935093505050611f4e565b81819350935050505b9091565b5f805f805f805f805f611f6a8a600a54600b54612149565b9250925092505f611f79611ca0565b90505f805f611f8a8e8787876121db565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f611ff383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061181b565b905092915050565b5f8082846120099190612db0565b90508381101561204e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120459061305a565b60405180910390fd5b8091505092915050565b5f612061611ca0565b90505f612077828461225f90919063ffffffff16565b90506120c98160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ffb90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61212482600854611fb290919063ffffffff16565b60088190555061213f81600954611ffb90919063ffffffff16565b6009819055505050565b5f805f806121736064612165888a61225f90919063ffffffff16565b611c5790919063ffffffff16565b90505f61219c606461218e888b61225f90919063ffffffff16565b611c5790919063ffffffff16565b90505f6121c4826121b6858c611fb290919063ffffffff16565b611fb290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806121f2858961225f90919063ffffffff16565b90505f612208868961225f90919063ffffffff16565b90505f61221e878961225f90919063ffffffff16565b90505f612246826122388587611fb290919063ffffffff16565b611fb290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361226f575f90506122d0565b5f828461227c9190613078565b905082848261228b9190612fe0565b146122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290613129565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561230d5780820151818401526020810190506122f2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612332826122d6565b61233c81856122e0565b935061234c8185602086016122f0565b61235581612318565b840191505092915050565b5f6020820190508181035f8301526123788184612328565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123ba82612391565b9050919050565b6123ca816123b0565b81146123d4575f80fd5b50565b5f813590506123e5816123c1565b92915050565b5f819050919050565b6123fd816123eb565b8114612407575f80fd5b50565b5f81359050612418816123f4565b92915050565b5f806040838503121561243457612433612389565b5b5f612441858286016123d7565b92505060206124528582860161240a565b9150509250929050565b5f8115159050919050565b6124708161245c565b82525050565b5f6020820190506124895f830184612467565b92915050565b612498816123eb565b82525050565b5f6020820190506124b15f83018461248f565b92915050565b5f805f606084860312156124ce576124cd612389565b5b5f6124db868287016123d7565b93505060206124ec868287016123d7565b92505060406124fd8682870161240a565b9150509250925092565b5f6020828403121561251c5761251b612389565b5b5f612529848285016123d7565b91505092915050565b5f60ff82169050919050565b61254781612532565b82525050565b5f6020820190506125605f83018461253e565b92915050565b61256f8161245c565b8114612579575f80fd5b50565b5f8135905061258a81612566565b92915050565b5f602082840312156125a5576125a4612389565b5b5f6125b28482850161257c565b91505092915050565b6125c4816123b0565b82525050565b5f6020820190506125dd5f8301846125bb565b92915050565b5f80604083850312156125f9576125f8612389565b5b5f612606858286016123d7565b9250506020612617858286016123d7565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61265b82612318565b810181811067ffffffffffffffff8211171561267a57612679612625565b5b80604052505050565b5f61268c612380565b90506126988282612652565b919050565b5f67ffffffffffffffff8211156126b7576126b6612625565b5b602082029050602081019050919050565b5f80fd5b5f6126de6126d98461269d565b612683565b90508083825260208201905060208402830185811115612701576127006126c8565b5b835b8181101561272a578061271688826123d7565b845260208401935050602081019050612703565b5050509392505050565b5f82601f83011261274857612747612621565b5b81356127588482602086016126cc565b91505092915050565b5f6020828403121561277657612775612389565b5b5f82013567ffffffffffffffff8111156127935761279261238d565b5b61279f84828501612734565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127dc6020836122e0565b91506127e7826127a8565b602082019050919050565b5f6020820190508181035f830152612809816127d0565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128446017836122e0565b915061284f82612810565b602082019050919050565b5f6020820190508181035f83015261287181612838565b9050919050565b5f81519050612886816123c1565b92915050565b5f602082840312156128a1576128a0612389565b5b5f6128ae84828501612878565b91505092915050565b5f6040820190506128ca5f8301856125bb565b6128d760208301846125bb565b9392505050565b5f819050919050565b5f819050919050565b5f61290a612905612900846128de565b6128e7565b6123eb565b9050919050565b61291a816128f0565b82525050565b5f60c0820190506129335f8301896125bb565b612940602083018861248f565b61294d6040830187612911565b61295a6060830186612911565b61296760808301856125bb565b61297460a083018461248f565b979650505050505050565b5f8151905061298d816123f4565b92915050565b5f805f606084860312156129aa576129a9612389565b5b5f6129b78682870161297f565b93505060206129c88682870161297f565b92505060406129d98682870161297f565b9150509250925092565b5f6040820190506129f65f8301856125bb565b612a03602083018461248f565b9392505050565b5f81519050612a1881612566565b92915050565b5f60208284031215612a3357612a32612389565b5b5f612a4084828501612a0a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612aad826123eb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612adf57612ade612a76565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612b446024836122e0565b9150612b4f82612aea565b604082019050919050565b5f6020820190508181035f830152612b7181612b38565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612bd26022836122e0565b9150612bdd82612b78565b604082019050919050565b5f6020820190508181035f830152612bff81612bc6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c606025836122e0565b9150612c6b82612c06565b604082019050919050565b5f6020820190508181035f830152612c8d81612c54565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612cee6023836122e0565b9150612cf982612c94565b604082019050919050565b5f6020820190508181035f830152612d1b81612ce2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d7c6029836122e0565b9150612d8782612d22565b604082019050919050565b5f6020820190508181035f830152612da981612d70565b9050919050565b5f612dba826123eb565b9150612dc5836123eb565b9250828201905080821115612ddd57612ddc612a76565b5b92915050565b5f612ded826123eb565b9150612df8836123eb565b9250828203905081811115612e1057612e0f612a76565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f612e70602a836122e0565b9150612e7b82612e16565b604082019050919050565b5f6020820190508181035f830152612e9d81612e64565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612ed6816123b0565b82525050565b5f612ee78383612ecd565b60208301905092915050565b5f602082019050919050565b5f612f0982612ea4565b612f138185612eae565b9350612f1e83612ebe565b805f5b83811015612f4e578151612f358882612edc565b9750612f4083612ef3565b925050600181019050612f21565b5085935050505092915050565b5f60a082019050612f6e5f83018861248f565b612f7b6020830187612911565b8181036040830152612f8d8186612eff565b9050612f9c60608301856125bb565b612fa9608083018461248f565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612fea826123eb565b9150612ff5836123eb565b92508261300557613004612fb3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613044601b836122e0565b915061304f82613010565b602082019050919050565b5f6020820190508181035f83015261307181613038565b9050919050565b5f613082826123eb565b915061308d836123eb565b925082820261309b816123eb565b915082820484148315176130b2576130b1612a76565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131136021836122e0565b915061311e826130b9565b604082019050919050565b5f6020820190508181035f83015261314081613107565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cd528fcf8306879413c4198ae3463efce62f69affb74ff0cb8c851f89851401964736f6c63430008150033

Deployed Bytecode

0x608060405260043610610101575f3560e01c806370a0823111610094578063a9059cbb11610063578063a9059cbb1461030e578063c3c8cd801461034a578063c9567bf914610360578063dd62ed3e14610376578063f3d75c0a146103b257610108565b806370a0823114610268578063715018a6146102a45780638da5cb5b146102ba57806395d89b41146102e457610108565b8063273123b7116100d0578063273123b7146101d8578063313ce567146102005780635932ead11461022a5780636fc3eaec1461025257610108565b806306fdde031461010c578063095ea7b31461013657806318160ddd1461017257806323b872dd1461019c57610108565b3661010857005b5f80fd5b348015610117575f80fd5b506101206103da565b60405161012d9190612360565b60405180910390f35b348015610141575f80fd5b5061015c6004803603810190610157919061241e565b610417565b6040516101699190612476565b60405180910390f35b34801561017d575f80fd5b50610186610434565b604051610193919061249e565b60405180910390f35b3480156101a7575f80fd5b506101c260048036038101906101bd91906124b7565b610447565b6040516101cf9190612476565b60405180910390f35b3480156101e3575f80fd5b506101fe60048036038101906101f99190612507565b61051b565b005b34801561020b575f80fd5b50610214610606565b604051610221919061254d565b60405180910390f35b348015610235575f80fd5b50610250600480360381019061024b9190612590565b61060e565b005b34801561025d575f80fd5b506102666106bf565b005b348015610273575f80fd5b5061028e60048036038101906102899190612507565b61072e565b60405161029b919061249e565b60405180910390f35b3480156102af575f80fd5b506102b861077c565b005b3480156102c5575f80fd5b506102ce6108ca565b6040516102db91906125ca565b60405180910390f35b3480156102ef575f80fd5b506102f86108f1565b6040516103059190612360565b60405180910390f35b348015610319575f80fd5b50610334600480360381019061032f919061241e565b61092e565b6040516103419190612476565b60405180910390f35b348015610355575f80fd5b5061035e61094b565b005b34801561036b575f80fd5b506103746109c2565b005b348015610381575f80fd5b5061039c600480360381019061039791906125e3565b610ec5565b6040516103a9919061249e565b60405180910390f35b3480156103bd575f80fd5b506103d860048036038101906103d39190612761565b610f47565b005b60606040518060400160405280600481526020017f4d6f6f6600000000000000000000000000000000000000000000000000000000815250905090565b5f61042a61042361106c565b8484611073565b6001905092915050565b5f6b033b2e3c9fd0803ce8000000905090565b5f610453848484611236565b6105108461045f61106c565b61050b856040518060600160405280602881526020016131486028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6104c261106c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461181b9092919063ffffffff16565b611073565b600190509392505050565b61052361106c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a6906127f2565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f6009905090565b61061661106c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610699906127f2565b60405180910390fd5b80600f60176101000a81548160ff02191690831515021790555050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ff61106c565b73ffffffffffffffffffffffffffffffffffffffff161461071e575f80fd5b5f47905061072b8161187d565b50565b5f61077560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611970565b9050919050565b61078461106c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610807906127f2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4d4f4f4600000000000000000000000000000000000000000000000000000000815250905090565b5f61094161093a61106c565b8484611236565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661098b61106c565b73ffffffffffffffffffffffffffffffffffffffff16146109aa575f80fd5b5f6109b43061072e565b90506109bf816119dc565b50565b6109ca61106c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d906127f2565b60405180910390fd5b600f60149054906101000a900460ff1615610aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9d9061285a565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b3630600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce8000000611073565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba3919061288c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2c919061288c565b6040518363ffffffff1660e01b8152600401610c499291906128b7565b6020604051808303815f875af1158015610c65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c89919061288c565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610d103061072e565b5f80610d1a6108ca565b426040518863ffffffff1660e01b8152600401610d3c96959493929190612920565b60606040518083038185885af1158015610d58573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d7d9190612993565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff0219169083151502179055506b033b2e3c9fd0803ce80000006010819055506001600f60146101000a81548160ff021916908315150217905550600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e819291906129e3565b6020604051808303815f875af1158015610e9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec19190612a1e565b5050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610f4f61106c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd2906127f2565b60405180910390fd5b5f5b815181101561106857600160065f848481518110610ffe57610ffd612a49565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061106090612aa3565b915050610fdd565b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d890612b5a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114690612be8565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611229919061249e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b90612c76565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130990612d04565b60405180910390fd5b5f8111611354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134b90612d92565b60405180910390fd5b6001600a819055506001600b8190555061136c6108ca565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113da57506113aa6108ca565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561180b5760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561147d575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611485575f80fd5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561152e5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611581575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115995750600f60179054906101000a900460ff165b15611643576010548111156115ac575f80fd5b4260075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106115f4575f80fd5b601e426116019190612db0565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156116ec5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561173f575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611755576001600a819055506001600b819055505b5f61175f3061072e565b9050600f60159054906101000a900460ff161580156117cb5750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156117e35750600f60169054906101000a900460ff165b15611809576117f1816119dc565b5f4790505f811115611807576118064761187d565b5b505b505b611816838383611c47565b505050565b5f838311158290611862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118599190612360565b60405180910390fd5b505f83856118709190612de3565b9050809150509392505050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6118cc600284611c5790919063ffffffff16565b90811502906040515f60405180830381858888f193505050501580156118f4573d5f803e3d5ffd5b50600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611944600284611c5790919063ffffffff16565b90811502906040515f60405180830381858888f1935050505015801561196c573d5f803e3d5ffd5b5050565b5f6008548211156119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90612e86565b60405180910390fd5b5f6119bf611ca0565b90506119d48184611c5790919063ffffffff16565b915050919050565b6001600f60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611a1357611a12612625565b5b604051908082528060200260200182016040528015611a415781602001602082028036833780820191505090505b50905030815f81518110611a5857611a57612a49565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611afc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b20919061288c565b81600181518110611b3457611b33612a49565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b9a30600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611073565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611bfc959493929190612f5b565b5f604051808303815f87803b158015611c13575f80fd5b505af1158015611c25573d5f803e3d5ffd5b50505050505f600f60156101000a81548160ff02191690831515021790555050565b611c52838383611cc9565b505050565b5f611c9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e89565b905092915050565b5f805f611cab611eea565b91509150611cc28183611c5790919063ffffffff16565b9250505090565b5f805f805f80611cd887611f52565b955095509550955095509550611d348660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fb290919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dc58560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ffb90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e0f81612058565b611e19848361210f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e76919061249e565b60405180910390a3505050505050505050565b5f8083118290611ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec69190612360565b60405180910390fd5b505f8385611edd9190612fe0565b9050809150509392505050565b5f805f60085490505f6b033b2e3c9fd0803ce80000009050611f236b033b2e3c9fd0803ce8000000600854611c5790919063ffffffff16565b821015611f45576008546b033b2e3c9fd0803ce8000000935093505050611f4e565b81819350935050505b9091565b5f805f805f805f805f611f6a8a600a54600b54612149565b9250925092505f611f79611ca0565b90505f805f611f8a8e8787876121db565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f611ff383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061181b565b905092915050565b5f8082846120099190612db0565b90508381101561204e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120459061305a565b60405180910390fd5b8091505092915050565b5f612061611ca0565b90505f612077828461225f90919063ffffffff16565b90506120c98160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ffb90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61212482600854611fb290919063ffffffff16565b60088190555061213f81600954611ffb90919063ffffffff16565b6009819055505050565b5f805f806121736064612165888a61225f90919063ffffffff16565b611c5790919063ffffffff16565b90505f61219c606461218e888b61225f90919063ffffffff16565b611c5790919063ffffffff16565b90505f6121c4826121b6858c611fb290919063ffffffff16565b611fb290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806121f2858961225f90919063ffffffff16565b90505f612208868961225f90919063ffffffff16565b90505f61221e878961225f90919063ffffffff16565b90505f612246826122388587611fb290919063ffffffff16565b611fb290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361226f575f90506122d0565b5f828461227c9190613078565b905082848261228b9190612fe0565b146122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290613129565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561230d5780820151818401526020810190506122f2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612332826122d6565b61233c81856122e0565b935061234c8185602086016122f0565b61235581612318565b840191505092915050565b5f6020820190508181035f8301526123788184612328565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123ba82612391565b9050919050565b6123ca816123b0565b81146123d4575f80fd5b50565b5f813590506123e5816123c1565b92915050565b5f819050919050565b6123fd816123eb565b8114612407575f80fd5b50565b5f81359050612418816123f4565b92915050565b5f806040838503121561243457612433612389565b5b5f612441858286016123d7565b92505060206124528582860161240a565b9150509250929050565b5f8115159050919050565b6124708161245c565b82525050565b5f6020820190506124895f830184612467565b92915050565b612498816123eb565b82525050565b5f6020820190506124b15f83018461248f565b92915050565b5f805f606084860312156124ce576124cd612389565b5b5f6124db868287016123d7565b93505060206124ec868287016123d7565b92505060406124fd8682870161240a565b9150509250925092565b5f6020828403121561251c5761251b612389565b5b5f612529848285016123d7565b91505092915050565b5f60ff82169050919050565b61254781612532565b82525050565b5f6020820190506125605f83018461253e565b92915050565b61256f8161245c565b8114612579575f80fd5b50565b5f8135905061258a81612566565b92915050565b5f602082840312156125a5576125a4612389565b5b5f6125b28482850161257c565b91505092915050565b6125c4816123b0565b82525050565b5f6020820190506125dd5f8301846125bb565b92915050565b5f80604083850312156125f9576125f8612389565b5b5f612606858286016123d7565b9250506020612617858286016123d7565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61265b82612318565b810181811067ffffffffffffffff8211171561267a57612679612625565b5b80604052505050565b5f61268c612380565b90506126988282612652565b919050565b5f67ffffffffffffffff8211156126b7576126b6612625565b5b602082029050602081019050919050565b5f80fd5b5f6126de6126d98461269d565b612683565b90508083825260208201905060208402830185811115612701576127006126c8565b5b835b8181101561272a578061271688826123d7565b845260208401935050602081019050612703565b5050509392505050565b5f82601f83011261274857612747612621565b5b81356127588482602086016126cc565b91505092915050565b5f6020828403121561277657612775612389565b5b5f82013567ffffffffffffffff8111156127935761279261238d565b5b61279f84828501612734565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127dc6020836122e0565b91506127e7826127a8565b602082019050919050565b5f6020820190508181035f830152612809816127d0565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128446017836122e0565b915061284f82612810565b602082019050919050565b5f6020820190508181035f83015261287181612838565b9050919050565b5f81519050612886816123c1565b92915050565b5f602082840312156128a1576128a0612389565b5b5f6128ae84828501612878565b91505092915050565b5f6040820190506128ca5f8301856125bb565b6128d760208301846125bb565b9392505050565b5f819050919050565b5f819050919050565b5f61290a612905612900846128de565b6128e7565b6123eb565b9050919050565b61291a816128f0565b82525050565b5f60c0820190506129335f8301896125bb565b612940602083018861248f565b61294d6040830187612911565b61295a6060830186612911565b61296760808301856125bb565b61297460a083018461248f565b979650505050505050565b5f8151905061298d816123f4565b92915050565b5f805f606084860312156129aa576129a9612389565b5b5f6129b78682870161297f565b93505060206129c88682870161297f565b92505060406129d98682870161297f565b9150509250925092565b5f6040820190506129f65f8301856125bb565b612a03602083018461248f565b9392505050565b5f81519050612a1881612566565b92915050565b5f60208284031215612a3357612a32612389565b5b5f612a4084828501612a0a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612aad826123eb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612adf57612ade612a76565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612b446024836122e0565b9150612b4f82612aea565b604082019050919050565b5f6020820190508181035f830152612b7181612b38565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612bd26022836122e0565b9150612bdd82612b78565b604082019050919050565b5f6020820190508181035f830152612bff81612bc6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c606025836122e0565b9150612c6b82612c06565b604082019050919050565b5f6020820190508181035f830152612c8d81612c54565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612cee6023836122e0565b9150612cf982612c94565b604082019050919050565b5f6020820190508181035f830152612d1b81612ce2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d7c6029836122e0565b9150612d8782612d22565b604082019050919050565b5f6020820190508181035f830152612da981612d70565b9050919050565b5f612dba826123eb565b9150612dc5836123eb565b9250828201905080821115612ddd57612ddc612a76565b5b92915050565b5f612ded826123eb565b9150612df8836123eb565b9250828203905081811115612e1057612e0f612a76565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f612e70602a836122e0565b9150612e7b82612e16565b604082019050919050565b5f6020820190508181035f830152612e9d81612e64565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612ed6816123b0565b82525050565b5f612ee78383612ecd565b60208301905092915050565b5f602082019050919050565b5f612f0982612ea4565b612f138185612eae565b9350612f1e83612ebe565b805f5b83811015612f4e578151612f358882612edc565b9750612f4083612ef3565b925050600181019050612f21565b5085935050505092915050565b5f60a082019050612f6e5f83018861248f565b612f7b6020830187612911565b8181036040830152612f8d8186612eff565b9050612f9c60608301856125bb565b612fa9608083018461248f565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612fea826123eb565b9150612ff5836123eb565b92508261300557613004612fb3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613044601b836122e0565b915061304f82613010565b602082019050919050565b5f6020820190508181035f83015261307181613038565b9050919050565b5f613082826123eb565b915061308d836123eb565b925082820261309b816123eb565b915082820484148315176130b2576130b1612a76565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131136021836122e0565b915061311e826130b9565b604082019050919050565b5f6020820190508181035f83015261314081613107565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cd528fcf8306879413c4198ae3463efce62f69affb74ff0cb8c851f89851401964736f6c63430008150033

Deployed Bytecode Sourcemap

5826:10366:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7714:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8566:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7991:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8735:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12919:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7900:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9056:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14296:194;;;;;;;;;;;;;:::i;:::-;;8094:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4905:148;;;;;;;;;;;;;:::i;:::-;;4691:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7805:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8240:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14089:195;;;;;;;;;;;;;:::i;:::-;;11906:824;;;;;;;;;;;;;:::i;:::-;;8415:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12742:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7714:83;7751:13;7784:5;;;;;;;;;;;;;;;;;7777:12;;7714:83;:::o;8566:161::-;8641:4;8658:39;8667:12;:10;:12::i;:::-;8681:7;8690:6;8658:8;:39::i;:::-;8715:4;8708:11;;8566:161;;;;:::o;7991:95::-;8044:7;6324:27;8064:14;;7991:95;:::o;8735:313::-;8833:4;8850:36;8860:6;8868:9;8879:6;8850:9;:36::i;:::-;8897:121;8906:6;8914:12;:10;:12::i;:::-;8928:89;8966:6;8928:89;;;;;;;;;;;;;;;;;:11;:19;8940:6;8928:19;;;;;;;;;;;;;;;:33;8948:12;:10;:12::i;:::-;8928:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8897:8;:121::i;:::-;9036:4;9029:11;;8735:313;;;;;:::o;12919:88::-;4828:12;:10;:12::i;:::-;4818:22;;:6;;;;;;;;;;:22;;;4810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12994:5:::1;12979:4;:12;12984:6;12979:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12919:88:::0;:::o;7900:83::-;7941:5;6742:1;7959:16;;7900:83;:::o;9056:103::-;4828:12;:10;:12::i;:::-;4818:22;;:6;;;;;;;;;;:22;;;4810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9146:5:::1;9128:15;;:23;;;;;;;;;;;;;;;;;;9056:103:::0;:::o;14296:194::-;14362:15;;;;;;;;;;;14346:31;;:12;:10;:12::i;:::-;:31;;;14338:40;;;;;;14389:26;14418:21;14389:50;;14450:32;14463:18;14450:12;:32::i;:::-;14327:163;14296:194::o;8094:138::-;8160:7;8187:37;8207:7;:16;8215:7;8207:16;;;;;;;;;;;;;;;;8187:19;:37::i;:::-;8180:44;;8094:138;;;:::o;4905:148::-;4828:12;:10;:12::i;:::-;4818:22;;:6;;;;;;;;;;:22;;;4810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5012:1:::1;4975:40;;4996:6;::::0;::::1;;;;;;;;4975:40;;;;;;;;;;;;5043:1;5026:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4905:148::o:0;4691:79::-;4729:7;4756:6;;;;;;;;;;;4749:13;;4691:79;:::o;7805:87::-;7844:13;7877:7;;;;;;;;;;;;;;;;;7870:14;;7805:87;:::o;8240:167::-;8318:4;8335:42;8345:12;:10;:12::i;:::-;8359:9;8370:6;8335:9;:42::i;:::-;8395:4;8388:11;;8240:167;;;;:::o;14089:195::-;14155:15;;;;;;;;;;;14139:31;;:12;:10;:12::i;:::-;:31;;;14131:40;;;;;;14182:23;14208:24;14226:4;14208:9;:24::i;:::-;14182:50;;14243:33;14260:15;14243:16;:33::i;:::-;14120:164;14089:195::o;11906:824::-;4828:12;:10;:12::i;:::-;4818:22;;:6;;;;;;;;;;:22;;;4810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11970:11:::1;;;;;;;;;;;11969:12;11961:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12019:35;12076:42;12019:100;;12148:16;12130:15;;:34;;;;;;;;;;;;;;;;;;12175:58;12192:4;12207:15;;;;;;;;;;;6324:27;12175:8;:58::i;:::-;12278:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12260:56;;;12325:4;12332:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12260:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12244:13;;:112;;;;;;;;;;;;;;;;;;12367:15;;;;;;;;;;;:31;;;12406:21;12437:4;12443:24;12461:4;12443:9;:24::i;:::-;12468:1;12470::::0;12472:7:::1;:5;:7::i;:::-;12480:15;12367:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12521:4;12507:11;;:18;;;;;;;;;;;;;;;;;;12554:4;12536:15;;:22;;;;;;;;;;;;;;;;;;12584:27;12569:12;:42;;;;12636:4;12622:11;;:18;;;;;;;;;;;;;;;;;;12658:13;;;;;;;;;;;12651:29;;;12689:15;;;;;;;;;;;12707:14;12651:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11950:780;11906:824::o:0;8415:143::-;8496:7;8523:11;:18;8535:5;8523:18;;;;;;;;;;;;;;;:27;8542:7;8523:27;;;;;;;;;;;;;;;;8516:34;;8415:143;;;;:::o;12742:165::-;4828:12;:10;:12::i;:::-;4818:22;;:6;;;;;;;;;;:22;;;4810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12817:6:::1;12812:88;12833:5;:12;12829:1;:16;12812:88;;;12884:4;12867;:14;12872:5;12878:1;12872:8;;;;;;;;:::i;:::-;;;;;;;;12867:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12847:3;;;;;:::i;:::-;;;;12812:88;;;;12742:165:::0;:::o;2409:98::-;2462:7;2489:10;2482:17;;2409:98;:::o;9429:335::-;9539:1;9522:19;;:5;:19;;;9514:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9620:1;9601:21;;:7;:21;;;9593:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9702:6;9672:11;:18;9684:5;9672:18;;;;;;;;;;;;;;;:27;9691:7;9672:27;;;;;;;;;;;;;;;:36;;;;9740:7;9724:32;;9733:5;9724:32;;;9749:6;9724:32;;;;;;:::i;:::-;;;;;;;;9429:335;;;:::o;9772:1461::-;9876:1;9860:18;;:4;:18;;;9852:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9953:1;9939:16;;:2;:16;;;9931:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10023:1;10014:6;:10;10006:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10093:1;10081:9;:13;;;;10117:1;10105:9;:13;;;;10141:7;:5;:7::i;:::-;10133:15;;:4;:15;;;;:32;;;;;10158:7;:5;:7::i;:::-;10152:13;;:2;:13;;;;10133:32;10129:1052;;;10191:4;:10;10196:4;10191:10;;;;;;;;;;;;;;;;;;;;;;;;;10190:11;:24;;;;;10206:4;:8;10211:2;10206:8;;;;;;;;;;;;;;;;;;;;;;;;;10205:9;10190:24;10182:33;;;;;;10242:13;;;;;;;;;;;10234:21;;:4;:21;;;:55;;;;;10273:15;;;;;;;;;;;10259:30;;:2;:30;;;;10234:55;:83;;;;;10295:18;:22;10314:2;10295:22;;;;;;;;;;;;;;;;;;;;;;;;;10293:24;10234:83;:102;;;;;10321:15;;;;;;;;;;;10234:102;10230:325;;;10404:12;;10394:6;:22;;10386:31;;;;;;10459:15;10444:8;:12;10453:2;10444:12;;;;;;;;;;;;;;;;:30;10436:39;;;;;;10528:10;10509:15;:30;;;;:::i;:::-;10494:8;:12;10503:2;10494:12;;;;;;;;;;;;;;;:45;;;;10230:325;10607:13;;;;;;;;;;;10601:19;;:2;:19;;;:55;;;;;10640:15;;;;;;;;;;;10624:32;;:4;:32;;;;10601:55;:85;;;;;10662:18;:24;10681:4;10662:24;;;;;;;;;;;;;;;;;;;;;;;;;10660:26;10601:85;10597:171;;;10719:1;10707:9;:13;;;;10751:1;10739:9;:13;;;;10597:171;10782:28;10813:24;10831:4;10813:9;:24::i;:::-;10782:55;;10857:6;;;;;;;;;;;10856:7;:32;;;;;10875:13;;;;;;;;;;;10867:21;;:4;:21;;;;10856:32;:47;;;;;10892:11;;;;;;;;;;;10856:47;10852:318;;;10924:38;10941:20;10924:16;:38::i;:::-;10981:26;11010:21;10981:50;;11074:1;11053:18;:22;11050:105;;;11100:35;11113:21;11100:12;:35::i;:::-;11050:105;10905:265;10852:318;10167:1014;10129:1052;11195:30;11210:4;11215:2;11218:6;11195:14;:30::i;:::-;9772:1461;;;:::o;3546:190::-;3632:7;3665:1;3660;:6;;3668:12;3652:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3692:9;3708:1;3704;:5;;;;:::i;:::-;3692:17;;3727:1;3720:8;;;3546:190;;;;;:::o;11740:154::-;11797:15;;;;;;;;;;;:24;;:39;11822:13;11833:1;11822:6;:10;;:13;;;;:::i;:::-;11797:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11847:15;;;;;;;;;;;:24;;:39;11872:13;11883:1;11872:6;:10;;:13;;;;:::i;:::-;11847:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11740:154;:::o;9167:254::-;9234:7;9273;;9262;:18;;9254:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9338:19;9361:10;:8;:10::i;:::-;9338:33;;9389:24;9401:11;9389:7;:11;;:24;;;;:::i;:::-;9382:31;;;9167:254;;;:::o;11241:483::-;7124:4;7115:6;;:13;;;;;;;;;;;;;;;;;;11319:21:::1;11357:1;11343:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11319:40;;11388:4;11370;11375:1;11370:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11414:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11404:4;11409:1;11404:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11447:62;11464:4;11479:15;;;;;;;;;;;11497:11;11447:8;:62::i;:::-;11520:15;;;;;;;;;;;:66;;;11601:11;11627:1;11643:4;11670;11690:15;11520:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11308:416;7160:5:::0;7151:6;;:14;;;;;;;;;;;;;;;;;;11241:483;:::o;13023:146::-;13117:44;13135:6;13143:9;13154:6;13117:17;:44::i;:::-;13023:146;;;:::o;3998:132::-;4056:7;4083:39;4087:1;4090;4083:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4076:46;;3998:132;;;;:::o;15756:163::-;15797:7;15818:15;15835;15854:19;:17;:19::i;:::-;15817:56;;;;15891:20;15903:7;15891;:11;;:20;;;;:::i;:::-;15884:27;;;;15756:163;:::o;13177:488::-;13276:15;13293:23;13318:12;13332:23;13357:12;13371:13;13388:19;13399:7;13388:10;:19::i;:::-;13275:132;;;;;;;;;;;;13436:28;13456:7;13436;:15;13444:6;13436:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13418:7;:15;13426:6;13418:15;;;;;;;;;;;;;;;:46;;;;13496:39;13519:15;13496:7;:18;13504:9;13496:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13475:7;:18;13483:9;13475:18;;;;;;;;;;;;;;;:60;;;;13547:16;13557:5;13547:9;:16::i;:::-;13574:23;13586:4;13592;13574:11;:23::i;:::-;13630:9;13613:44;;13622:6;13613:44;;;13641:15;13613:44;;;;;;:::i;:::-;;;;;;;;13264:401;;;;;;13177:488;;;:::o;4138:189::-;4224:7;4256:1;4252;:5;4259:12;4244:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4283:9;4299:1;4295;:5;;;;:::i;:::-;4283:17;;4318:1;4311:8;;;4138:189;;;;;:::o;15927:262::-;15977:7;15986;16006:15;16024:7;;16006:25;;16042:15;6324:27;16042:25;;16098:20;6324:27;16098:7;;:11;;:20;;;;:::i;:::-;16088:7;:30;16084:61;;;16128:7;;6324:27;16120:25;;;;;;;;16084:61;16164:7;16173;16156:25;;;;;;15927:262;;;:::o;14504:471::-;14563:7;14572;14581;14590;14599;14608;14629:23;14654:12;14668:13;14685:42;14697:7;14706:9;;14717;;14685:11;:42::i;:::-;14628:99;;;;;;14738:19;14761:10;:8;:10::i;:::-;14738:33;;14783:15;14800:23;14825:12;14841:46;14853:7;14862:4;14868:5;14875:11;14841;:46::i;:::-;14782:105;;;;;;14906:7;14915:15;14932:4;14938:15;14955:4;14961:5;14898:69;;;;;;;;;;;;;;;;;;;14504:471;;;;;;;:::o;3402:136::-;3460:7;3487:43;3491:1;3494;3487:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3480:50;;3402:136;;;;:::o;3215:179::-;3273:7;3293:9;3309:1;3305;:5;;;;:::i;:::-;3293:17;;3334:1;3329;:6;;3321:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3385:1;3378:8;;;3215:179;;;;:::o;13673:212::-;13726:19;13749:10;:8;:10::i;:::-;13726:33;;13770:13;13786:22;13796:11;13786:5;:9;;:22;;;;:::i;:::-;13770:38;;13844:33;13871:5;13844:7;:22;13860:4;13844:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13819:7;:22;13835:4;13819:22;;;;;;;;;;;;;;;:58;;;;13715:170;;13673:212;:::o;13893:147::-;13971:17;13983:4;13971:7;;:11;;:17;;;;:::i;:::-;13961:7;:27;;;;14012:20;14027:4;14012:10;;:14;;:20;;;;:::i;:::-;13999:10;:33;;;;13893:147;;:::o;14983:351::-;15076:7;15085;15094;15114:12;15129:28;15153:3;15129:19;15141:6;15129:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15114:43;;15168:13;15184:29;15209:3;15184:20;15196:7;15184;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15168:45;;15224:23;15250:28;15272:5;15250:17;15262:4;15250:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15224:54;;15297:15;15314:4;15320:5;15289:37;;;;;;;;;14983:351;;;;;;;:::o;15342:409::-;15452:7;15461;15470;15490:15;15508:24;15520:11;15508:7;:11;;:24;;;;:::i;:::-;15490:42;;15543:12;15558:21;15567:11;15558:4;:8;;:21;;;;:::i;:::-;15543:36;;15590:13;15606:22;15616:11;15606:5;:9;;:22;;;;:::i;:::-;15590:38;;15639:23;15665:28;15687:5;15665:17;15677:4;15665:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15639:54;;15712:7;15721:15;15738:4;15704:39;;;;;;;;;;15342:409;;;;;;;;:::o;3744:246::-;3802:7;3831:1;3826;:6;3822:47;;3856:1;3849:8;;;;3822:47;3879:9;3895:1;3891;:5;;;;:::i;:::-;3879:17;;3924:1;3919;3915;:5;;;;:::i;:::-;:10;3907:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3981:1;3974:8;;;3744:246;;;;;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::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:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:323::-;5505:6;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:50;5747:7;5738:6;5727:9;5723:22;5705:50;:::i;:::-;5695:60;;5651:114;5449:323;;;;:::o;5778:118::-;5865:24;5883:5;5865:24;:::i;:::-;5860:3;5853:37;5778:118;;:::o;5902:222::-;5995:4;6033:2;6022:9;6018:18;6010:26;;6046:71;6114:1;6103:9;6099:17;6090:6;6046:71;:::i;:::-;5902:222;;;;:::o;6130:474::-;6198:6;6206;6255:2;6243:9;6234:7;6230:23;6226:32;6223:119;;;6261:79;;:::i;:::-;6223:119;6381:1;6406:53;6451:7;6442:6;6431:9;6427:22;6406:53;:::i;:::-;6396:63;;6352:117;6508:2;6534:53;6579:7;6570:6;6559:9;6555:22;6534:53;:::i;:::-;6524:63;;6479:118;6130:474;;;;;:::o;6610:117::-;6719:1;6716;6709:12;6733:180;6781:77;6778:1;6771:88;6878:4;6875:1;6868:15;6902:4;6899:1;6892:15;6919:281;7002:27;7024:4;7002:27;:::i;:::-;6994:6;6990:40;7132:6;7120:10;7117:22;7096:18;7084:10;7081:34;7078:62;7075:88;;;7143:18;;:::i;:::-;7075:88;7183:10;7179:2;7172:22;6962:238;6919:281;;:::o;7206:129::-;7240:6;7267:20;;:::i;:::-;7257:30;;7296:33;7324:4;7316:6;7296:33;:::i;:::-;7206:129;;;:::o;7341:311::-;7418:4;7508:18;7500:6;7497:30;7494:56;;;7530:18;;:::i;:::-;7494:56;7580:4;7572:6;7568:17;7560:25;;7640:4;7634;7630:15;7622:23;;7341:311;;;:::o;7658:117::-;7767:1;7764;7757:12;7798:710;7894:5;7919:81;7935:64;7992:6;7935:64;:::i;:::-;7919:81;:::i;:::-;7910:90;;8020:5;8049:6;8042:5;8035:21;8083:4;8076:5;8072:16;8065:23;;8136:4;8128:6;8124:17;8116:6;8112:30;8165:3;8157:6;8154:15;8151:122;;;8184:79;;:::i;:::-;8151:122;8299:6;8282:220;8316:6;8311:3;8308:15;8282:220;;;8391:3;8420:37;8453:3;8441:10;8420:37;:::i;:::-;8415:3;8408:50;8487:4;8482:3;8478:14;8471:21;;8358:144;8342:4;8337:3;8333:14;8326:21;;8282:220;;;8286:21;7900:608;;7798:710;;;;;:::o;8531:370::-;8602:5;8651:3;8644:4;8636:6;8632:17;8628:27;8618:122;;8659:79;;:::i;:::-;8618:122;8776:6;8763:20;8801:94;8891:3;8883:6;8876:4;8868:6;8864:17;8801:94;:::i;:::-;8792:103;;8608:293;8531:370;;;;:::o;8907:539::-;8991:6;9040:2;9028:9;9019:7;9015:23;9011:32;9008:119;;;9046:79;;:::i;:::-;9008:119;9194:1;9183:9;9179:17;9166:31;9224:18;9216:6;9213:30;9210:117;;;9246:79;;:::i;:::-;9210:117;9351:78;9421:7;9412:6;9401:9;9397:22;9351:78;:::i;:::-;9341:88;;9137:302;8907:539;;;;:::o;9452:182::-;9592:34;9588:1;9580:6;9576:14;9569:58;9452:182;:::o;9640:366::-;9782:3;9803:67;9867:2;9862:3;9803:67;:::i;:::-;9796:74;;9879:93;9968:3;9879:93;:::i;:::-;9997:2;9992:3;9988:12;9981:19;;9640:366;;;:::o;10012:419::-;10178:4;10216:2;10205:9;10201:18;10193:26;;10265:9;10259:4;10255:20;10251:1;10240:9;10236:17;10229:47;10293:131;10419:4;10293:131;:::i;:::-;10285:139;;10012:419;;;:::o;10437:173::-;10577:25;10573:1;10565:6;10561:14;10554:49;10437:173;:::o;10616:366::-;10758:3;10779:67;10843:2;10838:3;10779:67;:::i;:::-;10772:74;;10855:93;10944:3;10855:93;:::i;:::-;10973:2;10968:3;10964:12;10957:19;;10616:366;;;:::o;10988:419::-;11154:4;11192:2;11181:9;11177:18;11169:26;;11241:9;11235:4;11231:20;11227:1;11216:9;11212:17;11205:47;11269:131;11395:4;11269:131;:::i;:::-;11261:139;;10988:419;;;:::o;11413:143::-;11470:5;11501:6;11495:13;11486:22;;11517:33;11544:5;11517:33;:::i;:::-;11413:143;;;;:::o;11562:351::-;11632:6;11681:2;11669:9;11660:7;11656:23;11652:32;11649:119;;;11687:79;;:::i;:::-;11649:119;11807:1;11832:64;11888:7;11879:6;11868:9;11864:22;11832:64;:::i;:::-;11822:74;;11778:128;11562:351;;;;:::o;11919:332::-;12040:4;12078:2;12067:9;12063:18;12055:26;;12091:71;12159:1;12148:9;12144:17;12135:6;12091:71;:::i;:::-;12172:72;12240:2;12229:9;12225:18;12216:6;12172:72;:::i;:::-;11919:332;;;;;:::o;12257:85::-;12302:7;12331:5;12320:16;;12257:85;;;:::o;12348:60::-;12376:3;12397:5;12390:12;;12348:60;;;:::o;12414:158::-;12472:9;12505:61;12523:42;12532:32;12558:5;12532:32;:::i;:::-;12523:42;:::i;:::-;12505:61;:::i;:::-;12492:74;;12414:158;;;:::o;12578:147::-;12673:45;12712:5;12673:45;:::i;:::-;12668:3;12661:58;12578:147;;:::o;12731:807::-;12980:4;13018:3;13007:9;13003:19;12995:27;;13032:71;13100:1;13089:9;13085:17;13076:6;13032:71;:::i;:::-;13113:72;13181:2;13170:9;13166:18;13157:6;13113:72;:::i;:::-;13195:80;13271:2;13260:9;13256:18;13247:6;13195:80;:::i;:::-;13285;13361:2;13350:9;13346:18;13337:6;13285:80;:::i;:::-;13375:73;13443:3;13432:9;13428:19;13419:6;13375:73;:::i;:::-;13458;13526:3;13515:9;13511:19;13502:6;13458:73;:::i;:::-;12731:807;;;;;;;;;:::o;13544:143::-;13601:5;13632:6;13626:13;13617:22;;13648:33;13675:5;13648:33;:::i;:::-;13544:143;;;;:::o;13693:663::-;13781:6;13789;13797;13846:2;13834:9;13825:7;13821:23;13817:32;13814:119;;;13852:79;;:::i;:::-;13814:119;13972:1;13997:64;14053:7;14044:6;14033:9;14029:22;13997:64;:::i;:::-;13987:74;;13943:128;14110:2;14136:64;14192:7;14183:6;14172:9;14168:22;14136:64;:::i;:::-;14126:74;;14081:129;14249:2;14275:64;14331:7;14322:6;14311:9;14307:22;14275:64;:::i;:::-;14265:74;;14220:129;13693:663;;;;;:::o;14362:332::-;14483:4;14521:2;14510:9;14506:18;14498:26;;14534:71;14602:1;14591:9;14587:17;14578:6;14534:71;:::i;:::-;14615:72;14683:2;14672:9;14668:18;14659:6;14615:72;:::i;:::-;14362:332;;;;;:::o;14700:137::-;14754:5;14785:6;14779:13;14770:22;;14801:30;14825:5;14801:30;:::i;:::-;14700:137;;;;:::o;14843:345::-;14910:6;14959:2;14947:9;14938:7;14934:23;14930:32;14927:119;;;14965:79;;:::i;:::-;14927:119;15085:1;15110:61;15163:7;15154:6;15143:9;15139:22;15110:61;:::i;:::-;15100:71;;15056:125;14843:345;;;;:::o;15194:180::-;15242:77;15239:1;15232:88;15339:4;15336:1;15329:15;15363:4;15360:1;15353:15;15380:180;15428:77;15425:1;15418:88;15525:4;15522:1;15515:15;15549:4;15546:1;15539:15;15566:233;15605:3;15628:24;15646:5;15628:24;:::i;:::-;15619:33;;15674:66;15667:5;15664:77;15661:103;;15744:18;;:::i;:::-;15661:103;15791:1;15784:5;15780:13;15773:20;;15566:233;;;:::o;15805:223::-;15945:34;15941:1;15933:6;15929:14;15922:58;16014:6;16009:2;16001:6;15997:15;15990:31;15805:223;:::o;16034:366::-;16176:3;16197:67;16261:2;16256:3;16197:67;:::i;:::-;16190:74;;16273:93;16362:3;16273:93;:::i;:::-;16391:2;16386:3;16382:12;16375:19;;16034:366;;;:::o;16406:419::-;16572:4;16610:2;16599:9;16595:18;16587:26;;16659:9;16653:4;16649:20;16645:1;16634:9;16630:17;16623:47;16687:131;16813:4;16687:131;:::i;:::-;16679:139;;16406:419;;;:::o;16831:221::-;16971:34;16967:1;16959:6;16955:14;16948:58;17040:4;17035:2;17027:6;17023:15;17016:29;16831:221;:::o;17058:366::-;17200:3;17221:67;17285:2;17280:3;17221:67;:::i;:::-;17214:74;;17297:93;17386:3;17297:93;:::i;:::-;17415:2;17410:3;17406:12;17399:19;;17058:366;;;:::o;17430:419::-;17596:4;17634:2;17623:9;17619:18;17611:26;;17683:9;17677:4;17673:20;17669:1;17658:9;17654:17;17647:47;17711:131;17837:4;17711:131;:::i;:::-;17703:139;;17430:419;;;:::o;17855:224::-;17995:34;17991:1;17983:6;17979:14;17972:58;18064:7;18059:2;18051:6;18047:15;18040:32;17855:224;:::o;18085:366::-;18227:3;18248:67;18312:2;18307:3;18248:67;:::i;:::-;18241:74;;18324:93;18413:3;18324:93;:::i;:::-;18442:2;18437:3;18433:12;18426:19;;18085:366;;;:::o;18457:419::-;18623:4;18661:2;18650:9;18646:18;18638:26;;18710:9;18704:4;18700:20;18696:1;18685:9;18681:17;18674:47;18738:131;18864:4;18738:131;:::i;:::-;18730:139;;18457:419;;;:::o;18882:222::-;19022:34;19018:1;19010:6;19006:14;18999:58;19091:5;19086:2;19078:6;19074:15;19067:30;18882:222;:::o;19110:366::-;19252:3;19273:67;19337:2;19332:3;19273:67;:::i;:::-;19266:74;;19349:93;19438:3;19349:93;:::i;:::-;19467:2;19462:3;19458:12;19451:19;;19110:366;;;:::o;19482:419::-;19648:4;19686:2;19675:9;19671:18;19663:26;;19735:9;19729:4;19725:20;19721:1;19710:9;19706:17;19699:47;19763:131;19889:4;19763:131;:::i;:::-;19755:139;;19482:419;;;:::o;19907:228::-;20047:34;20043:1;20035:6;20031:14;20024:58;20116:11;20111:2;20103:6;20099:15;20092:36;19907:228;:::o;20141:366::-;20283:3;20304:67;20368:2;20363:3;20304:67;:::i;:::-;20297:74;;20380:93;20469:3;20380:93;:::i;:::-;20498:2;20493:3;20489:12;20482:19;;20141:366;;;:::o;20513:419::-;20679:4;20717:2;20706:9;20702:18;20694:26;;20766:9;20760:4;20756:20;20752:1;20741:9;20737:17;20730:47;20794:131;20920:4;20794:131;:::i;:::-;20786:139;;20513:419;;;:::o;20938:191::-;20978:3;20997:20;21015:1;20997:20;:::i;:::-;20992:25;;21031:20;21049:1;21031:20;:::i;:::-;21026:25;;21074:1;21071;21067:9;21060:16;;21095:3;21092:1;21089:10;21086:36;;;21102:18;;:::i;:::-;21086:36;20938:191;;;;:::o;21135:194::-;21175:4;21195:20;21213:1;21195:20;:::i;:::-;21190:25;;21229:20;21247:1;21229:20;:::i;:::-;21224:25;;21273:1;21270;21266:9;21258:17;;21297:1;21291:4;21288:11;21285:37;;;21302:18;;:::i;:::-;21285:37;21135:194;;;;:::o;21335:229::-;21475:34;21471:1;21463:6;21459:14;21452:58;21544:12;21539:2;21531:6;21527:15;21520:37;21335:229;:::o;21570:366::-;21712:3;21733:67;21797:2;21792:3;21733:67;:::i;:::-;21726:74;;21809:93;21898:3;21809:93;:::i;:::-;21927:2;21922:3;21918:12;21911:19;;21570:366;;;:::o;21942:419::-;22108:4;22146:2;22135:9;22131:18;22123:26;;22195:9;22189:4;22185:20;22181:1;22170:9;22166:17;22159:47;22223:131;22349:4;22223:131;:::i;:::-;22215:139;;21942:419;;;:::o;22367:114::-;22434:6;22468:5;22462:12;22452:22;;22367:114;;;:::o;22487:184::-;22586:11;22620:6;22615:3;22608:19;22660:4;22655:3;22651:14;22636:29;;22487:184;;;;:::o;22677:132::-;22744:4;22767:3;22759:11;;22797:4;22792:3;22788:14;22780:22;;22677:132;;;:::o;22815:108::-;22892:24;22910:5;22892:24;:::i;:::-;22887:3;22880:37;22815:108;;:::o;22929:179::-;22998:10;23019:46;23061:3;23053:6;23019:46;:::i;:::-;23097:4;23092:3;23088:14;23074:28;;22929:179;;;;:::o;23114:113::-;23184:4;23216;23211:3;23207:14;23199:22;;23114:113;;;:::o;23263:732::-;23382:3;23411:54;23459:5;23411:54;:::i;:::-;23481:86;23560:6;23555:3;23481:86;:::i;:::-;23474:93;;23591:56;23641:5;23591:56;:::i;:::-;23670:7;23701:1;23686:284;23711:6;23708:1;23705:13;23686:284;;;23787:6;23781:13;23814:63;23873:3;23858:13;23814:63;:::i;:::-;23807:70;;23900:60;23953:6;23900:60;:::i;:::-;23890:70;;23746:224;23733:1;23730;23726:9;23721:14;;23686:284;;;23690:14;23986:3;23979:10;;23387:608;;;23263:732;;;;:::o;24001:831::-;24264:4;24302:3;24291:9;24287:19;24279:27;;24316:71;24384:1;24373:9;24369:17;24360:6;24316:71;:::i;:::-;24397:80;24473:2;24462:9;24458:18;24449:6;24397:80;:::i;:::-;24524:9;24518:4;24514:20;24509:2;24498:9;24494:18;24487:48;24552:108;24655:4;24646:6;24552:108;:::i;:::-;24544:116;;24670:72;24738:2;24727:9;24723:18;24714:6;24670:72;:::i;:::-;24752:73;24820:3;24809:9;24805:19;24796:6;24752:73;:::i;:::-;24001:831;;;;;;;;:::o;24838:180::-;24886:77;24883:1;24876:88;24983:4;24980:1;24973:15;25007:4;25004:1;24997:15;25024:185;25064:1;25081:20;25099:1;25081:20;:::i;:::-;25076:25;;25115:20;25133:1;25115:20;:::i;:::-;25110:25;;25154:1;25144:35;;25159:18;;:::i;:::-;25144:35;25201:1;25198;25194:9;25189:14;;25024:185;;;;:::o;25215:177::-;25355:29;25351:1;25343:6;25339:14;25332:53;25215:177;:::o;25398:366::-;25540:3;25561:67;25625:2;25620:3;25561:67;:::i;:::-;25554:74;;25637:93;25726:3;25637:93;:::i;:::-;25755:2;25750:3;25746:12;25739:19;;25398:366;;;:::o;25770:419::-;25936:4;25974:2;25963:9;25959:18;25951:26;;26023:9;26017:4;26013:20;26009:1;25998:9;25994:17;25987:47;26051:131;26177:4;26051:131;:::i;:::-;26043:139;;25770:419;;;:::o;26195:410::-;26235:7;26258:20;26276:1;26258:20;:::i;:::-;26253:25;;26292:20;26310:1;26292:20;:::i;:::-;26287:25;;26347:1;26344;26340:9;26369:30;26387:11;26369:30;:::i;:::-;26358:41;;26548:1;26539:7;26535:15;26532:1;26529:22;26509:1;26502:9;26482:83;26459:139;;26578:18;;:::i;:::-;26459:139;26243:362;26195:410;;;;:::o;26611:220::-;26751:34;26747:1;26739:6;26735:14;26728:58;26820:3;26815:2;26807:6;26803:15;26796:28;26611:220;:::o;26837:366::-;26979:3;27000:67;27064:2;27059:3;27000:67;:::i;:::-;26993:74;;27076:93;27165:3;27076:93;:::i;:::-;27194:2;27189:3;27185:12;27178:19;;26837:366;;;:::o;27209:419::-;27375:4;27413:2;27402:9;27398:18;27390:26;;27462:9;27456:4;27452:20;27448:1;27437:9;27433:17;27426:47;27490:131;27616:4;27490:131;:::i;:::-;27482:139;;27209:419;;;:::o

Swarm Source

ipfs://cd528fcf8306879413c4198ae3463efce62f69affb74ff0cb8c851f898514019

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.