ETH Price: $2,294.66 (-0.06%)
Gas: 1.05 Gwei

Contract

0x80FC20C74A41d80998dA2363e0D214998909CFFc
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve181506002023-09-16 18:54:23357 days ago1694890463IN
0x80FC20C7...98909CFFc
0 ETH0.000410315.13774068
Approve181506002023-09-16 18:54:23357 days ago1694890463IN
0x80FC20C7...98909CFFc
0 ETH0.0004729517.44900106
Approve181506002023-09-16 18:54:23357 days ago1694890463IN
0x80FC20C7...98909CFFc
0 ETH0.0006729214.31608581
Approve181505452023-09-16 18:42:59357 days ago1694889779IN
0x80FC20C7...98909CFFc
0 ETH0.0021565645.82097424
Approve181505432023-09-16 18:42:35357 days ago1694889755IN
0x80FC20C7...98909CFFc
0 ETH0.0019205940.80726558
Set Limits181505302023-09-16 18:39:47357 days ago1694889587IN
0x80FC20C7...98909CFFc
0 ETH0.000349749.46164675
Approve181505272023-09-16 18:39:11357 days ago1694889551IN
0x80FC20C7...98909CFFc
0 ETH0.0006968514.80993216
Approve181505272023-09-16 18:39:11357 days ago1694889551IN
0x80FC20C7...98909CFFc
0 ETH0.0006968514.80993216
Approve181505222023-09-16 18:38:11357 days ago1694889491IN
0x80FC20C7...98909CFFc
0 ETH0.0006517813.84850747
Approve181505212023-09-16 18:37:59357 days ago1694889479IN
0x80FC20C7...98909CFFc
0 ETH0.0005027410.76708279
Approve181504992023-09-16 18:33:35357 days ago1694889215IN
0x80FC20C7...98909CFFc
0 ETH0.0008837618.78232276
Approve181504972023-09-16 18:33:11357 days ago1694889191IN
0x80FC20C7...98909CFFc
0 ETH0.0008279917.59251617
Approve181504932023-09-16 18:32:23357 days ago1694889143IN
0x80FC20C7...98909CFFc
0 ETH0.0008819918.73987066
Approve181504912023-09-16 18:31:59357 days ago1694889119IN
0x80FC20C7...98909CFFc
0 ETH0.0014501530.81957433
Add Liquidity181504902023-09-16 18:31:47357 days ago1694889107IN
0x80FC20C7...98909CFFc
1 ETH0.0446558815.50232496
0x60806040181504802023-09-16 18:29:47357 days ago1694888987IN
 Create: dora
0 ETH0.0528454615.50325902

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
181514972023-09-16 21:57:35357 days ago1694901455
0x80FC20C7...98909CFFc
0.01030921 ETH
181514972023-09-16 21:57:35357 days ago1694901455
0x80FC20C7...98909CFFc
0.01030921 ETH
181511662023-09-16 20:49:11357 days ago1694897351
0x80FC20C7...98909CFFc
0.01113574 ETH
181511662023-09-16 20:49:11357 days ago1694897351
0x80FC20C7...98909CFFc
0.01113574 ETH
181511652023-09-16 20:48:59357 days ago1694897339
0x80FC20C7...98909CFFc
0.01212114 ETH
181511652023-09-16 20:48:59357 days ago1694897339
0x80FC20C7...98909CFFc
0.01212114 ETH
181506452023-09-16 19:03:23357 days ago1694891003
0x80FC20C7...98909CFFc
0.01265328 ETH
181506452023-09-16 19:03:23357 days ago1694891003
0x80FC20C7...98909CFFc
0.01265328 ETH
181506302023-09-16 19:00:23357 days ago1694890823
0x80FC20C7...98909CFFc
0.01336508 ETH
181506302023-09-16 19:00:23357 days ago1694890823
0x80FC20C7...98909CFFc
0.01336508 ETH
181506272023-09-16 18:59:47357 days ago1694890787
0x80FC20C7...98909CFFc
0.01401036 ETH
181506272023-09-16 18:59:47357 days ago1694890787
0x80FC20C7...98909CFFc
0.01401036 ETH
181505922023-09-16 18:52:47357 days ago1694890367
0x80FC20C7...98909CFFc
0.01542798 ETH
181505922023-09-16 18:52:47357 days ago1694890367
0x80FC20C7...98909CFFc
0.01542798 ETH
181505922023-09-16 18:52:47357 days ago1694890367
0x80FC20C7...98909CFFc
0.01707231 ETH
181505922023-09-16 18:52:47357 days ago1694890367
0x80FC20C7...98909CFFc
0.01707231 ETH
181505892023-09-16 18:52:11357 days ago1694890331
0x80FC20C7...98909CFFc
0.01765611 ETH
181505892023-09-16 18:52:11357 days ago1694890331
0x80FC20C7...98909CFFc
0.01765611 ETH
181505752023-09-16 18:49:23357 days ago1694890163
0x80FC20C7...98909CFFc
0.01826832 ETH
181505752023-09-16 18:49:23357 days ago1694890163
0x80FC20C7...98909CFFc
0.01826832 ETH
181505722023-09-16 18:48:47357 days ago1694890127
0x80FC20C7...98909CFFc
0.01891514 ETH
181505722023-09-16 18:48:47357 days ago1694890127
0x80FC20C7...98909CFFc
0.01891514 ETH
181505712023-09-16 18:48:35357 days ago1694890115
0x80FC20C7...98909CFFc
0.01959952 ETH
181505712023-09-16 18:48:35357 days ago1694890115
0x80FC20C7...98909CFFc
0.01959952 ETH
181505702023-09-16 18:48:23357 days ago1694890103
0x80FC20C7...98909CFFc
0.02032854 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
dora

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT

/*

██████╗░░█████╗░██████╗░░█████╗░
██╔══██╗██╔══██╗██╔══██╗██╔══██╗
██║░░██║██║░░██║██████╔╝███████║
██║░░██║██║░░██║██╔══██╗██╔══██║
██████╔╝╚█████╔╝██║░░██║██║░░██║
╚═════╝░░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝

https://t.me/DoraEthereum69
https://doraethereum.gg

*/

pragma solidity 0.8.19;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address __owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed _owner, address indexed spender, uint256 value);
}

interface 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 WETH() external pure returns (address);
    function factory() 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);
}

abstract contract Auth {
    address internal _owner;
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this");   _; 
    }
    function owner() public view returns (address) { return _owner;   }
    function transferOwnership(address payable newOwner) external onlyOwner { 
        _owner = newOwner; emit OwnershipTransferred(newOwner); 
    }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0); emit OwnershipTransferred(address(0)); 
    }
    event OwnershipTransferred(address _owner);
}

contract dora is IERC20, Auth {
    
    uint8 private constant _decimals       = 9;
    uint256 private constant _totalSupply  = 1_000_000 * (10**_decimals);
    string private constant _name          = unicode"DORA";
    string private  constant _symbol       = unicode"даша";

    uint8 private _BuyTaxes  = 0;
    uint8 private _SellTaxes = 0;

    address payable private _walletMarketing = payable(0x074A7eAA34462164D18332DE0717A877D503b3e9); 
    uint256 private _maxTxAmount = _totalSupply; 
    uint256 private _maxWalletAmount = _totalSupply;
    uint256 private _taxSwapMin = _totalSupply * 1 / 10000;
    uint256 private _taxSwapMax = _totalSupply * 9 / 1000;
    uint256 private _taxSwapThreshold = _taxSwapMin * 4000;

    uint256 private _buyCount;
    uint8 private startTradingBlock1 = 0;
    uint8 private startTradingBlock2 = 0;
    uint8 private launchBlock1 = 0;
    uint8 private launchBlock2 = 0;
    uint256 private _mevProtectionBlocks = 0;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFees;
    mapping (address => bool) private _noLimits;

    address private lpowner;
    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inTaxSwap = false;
    modifier lockTaxSwap { 
        _inTaxSwap = true; 
        _; 
        _inTaxSwap = false; 
    }

    event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);

    constructor() Auth(msg.sender) {
        lpowner = msg.sender;

        uint256 tokenReserve   = _totalSupply * 1 / 100;
        
        _balances[address(this)] = _totalSupply - tokenReserve;
        emit Transfer(address(0), address(this), _balances[address(this)]);

        _balances[_owner] = tokenReserve;
        emit Transfer(address(0), _owner, _balances[_owner]);

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;
        _noLimits[_owner] = true;
        _noLimits[address(this)] = true;
        _noLimits[_swapRouterAddress] = true;
        _noLimits[_walletMarketing] = true;
    }

    receive() external payable {}
    
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spendr, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spendr] = amount;
        emit Approval(msg.sender, spendr, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sndr, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sndr), "Trading not open");
        if(_allowances[sndr][msg.sender] != type(uint256).max){
            _allowances[sndr][msg.sender] = _allowances[sndr][msg.sender] - amount;
        }
        return _transferFrom(sndr, recipient, amount);
    }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }
    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in ca/msg");
        require(_balances[address(this)]>0, "No tokens in ca");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance, false);
        _balances[_primaryLP] -= _taxSwapThreshold;
        (bool lpAdded,) = _primaryLP.call(abi.encodeWithSignature("sync()") );
        require(lpAdded, "Failed adding lp");
        _isLP[_primaryLP] = lpAdded;
        _openTrading();
    }
    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
        address lprecipient = lpowner;
        if ( autoburn ) { lprecipient = address(0); }
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lprecipient, block.timestamp );
    }
    function _openTrading() internal {
        _maxTxAmount     = _totalSupply * 2 / 100; 
        _maxWalletAmount = _totalSupply * 2 / 100;
        _tradingOpen = true;
        _buyCount = block.number;
        _mevProtectionBlocks = _mevProtectionBlocks + _buyCount + startTradingBlock1 + startTradingBlock2;
    }
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }
        if ( block.number < _mevProtectionBlocks && block.number >= _buyCount && _isLP[sender] ) {
            require(recipient == tx.origin, "MEV blocked");
        }
        if ( sender != address(this) && recipient != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); 
        }
        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] = _balances[sender] - amount;
        _taxSwapThreshold += _taxAmount;
        _balances[recipient] = _balances[recipient] + _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    function _checkLimits(address sndr, address recipient, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_noLimits[sndr] && !_noLimits[recipient] ) {
            if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; }
            else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }
    function _checkTradingOpen(address sndr) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_noFees[sndr] && _noLimits[sndr]) { checkResult = true; } 

        return checkResult;
    }
    function _calculateTax(address sndr, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _noFees[sndr] || _noFees[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[sndr] ) { 
            if ( block.number >= _buyCount + startTradingBlock1 + startTradingBlock2 ) {
                taxAmount = amount * _BuyTaxes / 100; 
            } else if ( block.number >= _buyCount + startTradingBlock1 ) {
                taxAmount = amount * launchBlock2 / 100;
            } else if ( block.number >= _buyCount) {
                taxAmount = amount * launchBlock1 / 100;
            }
        } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _SellTaxes / 100; 
        }

        return taxAmount;
    }
    function setLimits(uint16 maxTrxPermille, uint16 maxWltPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTrxPermille / 1000 + 1;
        require(newTxAmt >= _maxTxAmount, "tx too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWltPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmount, "wallet too low");
        _maxWalletAmount = newWalletAmt;
    }
   
    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = _taxSwapThreshold;
        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }
            
            uint256 _tokensToSwap = _taxTokensAvailable; 
            if( _tokensToSwap > 10**_decimals ) {
                _balances[address(this)] += _taxTokensAvailable;
                _swapTaxTokensForEth(_tokensToSwap);
                _taxSwapThreshold -= _taxTokensAvailable;
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }
    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address( this );
        path[1] = _primarySwapRouter.WETH() ;
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }
    function _distributeTaxEth(uint256 amount) private {
        _walletMarketing.transfer(amount);
    }
   
}

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":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spendr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTrxPermille","type":"uint16"},{"internalType":"uint16","name":"maxWltPermille","type":"uint16"}],"name":"setLimits","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":"sndr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260008060146101000a81548160ff021916908360ff16021790555060008060156101000a81548160ff021916908360ff16021790555073074a7eaa34462164d18332de0717a877d503b3e9600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200009f919062000a92565b620f4240620000af919062000ae3565b6002556009600a620000c2919062000a92565b620f4240620000d2919062000ae3565b60035561271060016009600a620000ea919062000a92565b620f4240620000fa919062000ae3565b62000106919062000ae3565b62000112919062000b5d565b6004556103e8600980600a62000129919062000a92565b620f424062000139919062000ae3565b62000145919062000ae3565b62000151919062000b5d565b600555610fa060045462000166919062000ae3565b6006556000600860006101000a81548160ff021916908360ff1602179055506000600860016101000a81548160ff021916908360ff1602179055506000600860026101000a81548160ff021916908360ff1602179055506000600860036101000a81548160ff021916908360ff1602179055506000600955737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260016101000a81548160ff0219169083151502179055503480156200025b57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606460016009600a620002f5919062000a92565b620f424062000305919062000ae3565b62000311919062000ae3565b6200031d919062000b5d565b9050806009600a62000330919062000a92565b620f424062000340919062000ae3565b6200034c919062000b95565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200042e919062000be1565b60405180910390a380600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200057b919062000be1565b60405180910390a36001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000bfe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000986578086048111156200095e576200095d620008f8565b5b60018516156200096e5780820291505b80810290506200097e8562000927565b94506200093e565b94509492505050565b600082620009a1576001905062000a74565b81620009b1576000905062000a74565b8160018114620009ca5760028114620009d55762000a0b565b600191505062000a74565b60ff841115620009ea57620009e9620008f8565b5b8360020a91508482111562000a045762000a03620008f8565b5b5062000a74565b5060208310610133831016604e8410600b841016171562000a455782820a90508381111562000a3f5762000a3e620008f8565b5b62000a74565b62000a54848484600162000934565b9250905081840481111562000a6e5762000a6d620008f8565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a9f8262000a7b565b915062000aac8362000a85565b925062000adb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200098f565b905092915050565b600062000af08262000a7b565b915062000afd8362000a7b565b925082820262000b0d8162000a7b565b9150828204841483151762000b275762000b26620008f8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b6a8262000a7b565b915062000b778362000a7b565b92508262000b8a5762000b8962000b2e565b5b828204905092915050565b600062000ba28262000a7b565b915062000baf8362000a7b565b925082820390508181111562000bca5762000bc9620008f8565b5b92915050565b62000bdb8162000a7b565b82525050565b600060208201905062000bf8600083018462000bd0565b92915050565b6134de8062000c0e6000396000f3fe6080604052600436106100e15760003560e01c8063715018a61161007f578063a9059cbb11610059578063a9059cbb146102bb578063dd62ed3e146102f8578063e8078d9414610335578063f2fde38b1461033f576100e8565b8063715018a61461024e5780638da5cb5b1461026557806395d89b4114610290576100e8565b806323b872dd116100bb57806323b872dd14610180578063313ce567146101bd578063368f4800146101e857806370a0823114610211576100e8565b806306fdde03146100ed578063095ea7b31461011857806318160ddd14610155576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b50610102610368565b60405161010f91906125c3565b60405180910390f35b34801561012457600080fd5b5061013f600480360381019061013a919061267e565b6103a5565b60405161014c91906126d9565b60405180910390f35b34801561016157600080fd5b5061016a610497565b6040516101779190612703565b60405180910390f35b34801561018c57600080fd5b506101a760048036038101906101a2919061271e565b6104ba565b6040516101b491906126d9565b60405180910390f35b3480156101c957600080fd5b506101d26106c4565b6040516101df919061278d565b60405180910390f35b3480156101f457600080fd5b5061020f600480360381019061020a91906127e2565b6106cd565b005b34801561021d57600080fd5b5061023860048036038101906102339190612822565b610889565b6040516102459190612703565b60405180910390f35b34801561025a57600080fd5b506102636108d2565b005b34801561027157600080fd5b5061027a6109db565b604051610287919061285e565b60405180910390f35b34801561029c57600080fd5b506102a5610a04565b6040516102b291906125c3565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd919061267e565b610a41565b6040516102ef91906126d9565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a9190612879565b610a9e565b60405161032c9190612703565b60405180910390f35b61033d610b25565b005b34801561034b57600080fd5b50610366600480360381019061036191906128f7565b611212565b005b60606040518060400160405280600481526020017f444f524100000000000000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104859190612703565b60405180910390a36001905092915050565b60006009600a6104a79190612a86565b620f42406104b59190612ad1565b905090565b60006104c58461131a565b610504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fb90612b5f565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106b05781600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461062f9190612b7f565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6106bb8484846113f5565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075290612bff565b60405180910390fd5b600060016103e88461ffff166009600a6107759190612a86565b620f42406107839190612ad1565b61078d9190612ad1565b6107979190612c4e565b6107a19190612c7f565b90506002548110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612cff565b60405180910390fd5b80600281905550600060016103e88461ffff166009600a6108099190612a86565b620f42406108179190612ad1565b6108219190612ad1565b61082b9190612c4e565b6108359190612c7f565b905060035481101561087c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087390612d6b565b60405180910390fd5b8060038190555050505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095790612bff565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516109d1919061285e565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017fd0b4d0b0d188d0b0000000000000000000000000000000000000000000000000815250905090565b6000610a4c3361131a565b610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290612b5f565b60405180910390fd5b610a963384846113f5565b905092915050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612bff565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690612dd7565b60405180910390fd5b601260009054906101000a900460ff1615610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca690612e43565b60405180910390fd5b6000341180610cbe5750600047115b610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490612eaf565b60405180910390fd5b6000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612f1b565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612f50565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd9190612f50565b6040518363ffffffff1660e01b8152600401610eda929190612f7d565b6020604051808303816000875af1158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190612f50565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fa8600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000611981565b600654600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461101b9190612b7f565b925050819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110ed9190612fed565b6000604051808303816000865af19150503d806000811461112a576040519150601f19603f3d011682016040523d82523d6000602084013e61112f565b606091505b5050905080611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90613050565b60405180910390fd5b8060116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111f4611a6f565b506000601260016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129790612bff565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161130f91906130cf565b60405180910390a150565b60008060009050601260009054906101000a900460ff161561133f57600190506113ec565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156113e15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156113eb57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90613136565b60405180910390fd5b601260009054906101000a900460ff1661155b57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561151b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190612b5f565b60405180910390fd5b5b601260019054906101000a900460ff161580156115c15750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115cf576115ce611b57565b5b600954431080156115e257506007544310155b80156116375750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116ab573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a1906131a2565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561171357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561176b575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117bb5761177b848484611c77565b6117ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b19061320e565b60405180910390fd5b5b60006117c8858585611e0e565b9050600081846117d89190612b7f565b905083600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118259190612b7f565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816006600082825461187a9190612c7f565b9250508190555080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118cc9190612c7f565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161196c9190612703565b60405180910390a36001925050509392505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156119b357600090505b6119bc846120be565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401611a2396959493929190613269565b60606040518083038185885af1158015611a41573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a6691906132df565b50505050505050565b606460026009600a611a819190612a86565b620f4240611a8f9190612ad1565b611a999190612ad1565b611aa39190612c4e565b600281905550606460026009600a611abb9190612a86565b620f4240611ac99190612ad1565b611ad39190612ad1565b611add9190612c4e565b6003819055506001601260006101000a81548160ff02191690831515021790555043600781905550600860019054906101000a900460ff1660ff16600860009054906101000a900460ff1660ff16600754600954611b3b9190612c7f565b611b459190612c7f565b611b4f9190612c7f565b600981905550565b6001601260016101000a81548160ff021916908315150217905550600060065490506004548110158015611b975750601260009054906101000a900460ff165b15611c59576005548110611bab5760055490505b60008190506009600a611bbe9190612a86565b811115611c3e5781600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c149190612c7f565b92505081905550611c24816122a8565b8160066000828254611c369190612b7f565b925050819055505b60004790506000811115611c5657611c55816124c7565b5b50505b506000601260016101000a81548160ff021916908315150217905550565b60008060019050601260009054906101000a900460ff168015611ce45750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d3a5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e0357600254831115611d525760009050611e02565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611df7575060035483600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df59190612c7f565b115b15611e0157600090505b5b5b809150509392505050565b600080601260009054906101000a900460ff161580611e765750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611eca5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ed857600090506120b3565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561203257600860019054906101000a900460ff1660ff16600860009054906101000a900460ff1660ff16600754611f5d9190612c7f565b611f679190612c7f565b4310611f9e576064600060149054906101000a900460ff1660ff1684611f8d9190612ad1565b611f979190612c4e565b905061202d565b600860009054906101000a900460ff1660ff16600754611fbe9190612c7f565b4310611ff5576064600860039054906101000a900460ff1660ff1684611fe49190612ad1565b611fee9190612c4e565b905061202c565b600754431061202b576064600860029054906101000a900460ff1660ff168461201e9190612ad1565b6120289190612c4e565b90505b5b5b6120b2565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120b1576064600060159054906101000a900460ff1660ff16846120a49190612ad1565b6120ae9190612c4e565b90505b5b5b809150509392505050565b80600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156122a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161229c9190612703565b60405180910390a35b50565b6122b1816120be565b6000600267ffffffffffffffff8111156122ce576122cd613332565b5b6040519080825280602002602001820160405280156122fc5781602001602082028036833780820191505090505b509050308160008151811061231457612313613361565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123df9190612f50565b816001815181106123f3576123f2613361565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161249195949392919061344e565b600060405180830381600087803b1580156124ab57600080fd5b505af11580156124bf573d6000803e3d6000fd5b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561252f573d6000803e3d6000fd5b5050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561256d578082015181840152602081019050612552565b60008484015250505050565b6000601f19601f8301169050919050565b600061259582612533565b61259f818561253e565b93506125af81856020860161254f565b6125b881612579565b840191505092915050565b600060208201905081810360008301526125dd818461258a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612615826125ea565b9050919050565b6126258161260a565b811461263057600080fd5b50565b6000813590506126428161261c565b92915050565b6000819050919050565b61265b81612648565b811461266657600080fd5b50565b60008135905061267881612652565b92915050565b60008060408385031215612695576126946125e5565b5b60006126a385828601612633565b92505060206126b485828601612669565b9150509250929050565b60008115159050919050565b6126d3816126be565b82525050565b60006020820190506126ee60008301846126ca565b92915050565b6126fd81612648565b82525050565b600060208201905061271860008301846126f4565b92915050565b600080600060608486031215612737576127366125e5565b5b600061274586828701612633565b935050602061275686828701612633565b925050604061276786828701612669565b9150509250925092565b600060ff82169050919050565b61278781612771565b82525050565b60006020820190506127a2600083018461277e565b92915050565b600061ffff82169050919050565b6127bf816127a8565b81146127ca57600080fd5b50565b6000813590506127dc816127b6565b92915050565b600080604083850312156127f9576127f86125e5565b5b6000612807858286016127cd565b9250506020612818858286016127cd565b9150509250929050565b600060208284031215612838576128376125e5565b5b600061284684828501612633565b91505092915050565b6128588161260a565b82525050565b6000602082019050612873600083018461284f565b92915050565b600080604083850312156128905761288f6125e5565b5b600061289e85828601612633565b92505060206128af85828601612633565b9150509250929050565b60006128c4826125ea565b9050919050565b6128d4816128b9565b81146128df57600080fd5b50565b6000813590506128f1816128cb565b92915050565b60006020828403121561290d5761290c6125e5565b5b600061291b848285016128e2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156129aa5780860481111561298657612985612924565b5b60018516156129955780820291505b80810290506129a385612953565b945061296a565b94509492505050565b6000826129c35760019050612a7f565b816129d15760009050612a7f565b81600181146129e757600281146129f157612a20565b6001915050612a7f565b60ff841115612a0357612a02612924565b5b8360020a915084821115612a1a57612a19612924565b5b50612a7f565b5060208310610133831016604e8410600b8410161715612a555782820a905083811115612a5057612a4f612924565b5b612a7f565b612a628484846001612960565b92509050818404811115612a7957612a78612924565b5b81810290505b9392505050565b6000612a9182612648565b9150612a9c83612771565b9250612ac97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129b3565b905092915050565b6000612adc82612648565b9150612ae783612648565b9250828202612af581612648565b91508282048414831517612b0c57612b0b612924565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612b4960108361253e565b9150612b5482612b13565b602082019050919050565b60006020820190508181036000830152612b7881612b3c565b9050919050565b6000612b8a82612648565b9150612b9583612648565b9250828203905081811115612bad57612bac612924565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000612be960188361253e565b9150612bf482612bb3565b602082019050919050565b60006020820190508181036000830152612c1881612bdc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c5982612648565b9150612c6483612648565b925082612c7457612c73612c1f565b5b828204905092915050565b6000612c8a82612648565b9150612c9583612648565b9250828201905080821115612cad57612cac612924565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b6000612ce9600a8361253e565b9150612cf482612cb3565b602082019050919050565b60006020820190508181036000830152612d1881612cdc565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000612d55600e8361253e565b9150612d6082612d1f565b602082019050919050565b60006020820190508181036000830152612d8481612d48565b9050919050565b7f4c50206372656174656400000000000000000000000000000000000000000000600082015250565b6000612dc1600a8361253e565b9150612dcc82612d8b565b602082019050919050565b60006020820190508181036000830152612df081612db4565b9050919050565b7f74726164696e67206f70656e0000000000000000000000000000000000000000600082015250565b6000612e2d600c8361253e565b9150612e3882612df7565b602082019050919050565b60006020820190508181036000830152612e5c81612e20565b9050919050565b7f4e6f2045544820696e2063612f6d736700000000000000000000000000000000600082015250565b6000612e9960108361253e565b9150612ea482612e63565b602082019050919050565b60006020820190508181036000830152612ec881612e8c565b9050919050565b7f4e6f20746f6b656e7320696e2063610000000000000000000000000000000000600082015250565b6000612f05600f8361253e565b9150612f1082612ecf565b602082019050919050565b60006020820190508181036000830152612f3481612ef8565b9050919050565b600081519050612f4a8161261c565b92915050565b600060208284031215612f6657612f656125e5565b5b6000612f7484828501612f3b565b91505092915050565b6000604082019050612f92600083018561284f565b612f9f602083018461284f565b9392505050565b600081519050919050565b600081905092915050565b6000612fc782612fa6565b612fd18185612fb1565b9350612fe181856020860161254f565b80840191505092915050565b6000612ff98284612fbc565b915081905092915050565b7f4661696c656420616464696e67206c7000000000000000000000000000000000600082015250565b600061303a60108361253e565b915061304582613004565b602082019050919050565b600060208201905081810360008301526130698161302d565b9050919050565b6000819050919050565b600061309561309061308b846125ea565b613070565b6125ea565b9050919050565b60006130a78261307a565b9050919050565b60006130b98261309c565b9050919050565b6130c9816130ae565b82525050565b60006020820190506130e460008301846130c0565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000613120601d8361253e565b915061312b826130ea565b602082019050919050565b6000602082019050818103600083015261314f81613113565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b600061318c600b8361253e565b915061319782613156565b602082019050919050565b600060208201905081810360008301526131bb8161317f565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b60006131f860118361253e565b9150613203826131c2565b602082019050919050565b60006020820190508181036000830152613227816131eb565b9050919050565b6000819050919050565b600061325361324e6132498461322e565b613070565b612648565b9050919050565b61326381613238565b82525050565b600060c08201905061327e600083018961284f565b61328b60208301886126f4565b613298604083018761325a565b6132a5606083018661325a565b6132b2608083018561284f565b6132bf60a08301846126f4565b979650505050505050565b6000815190506132d981612652565b92915050565b6000806000606084860312156132f8576132f76125e5565b5b6000613306868287016132ca565b9350506020613317868287016132ca565b9250506040613328868287016132ca565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133c58161260a565b82525050565b60006133d783836133bc565b60208301905092915050565b6000602082019050919050565b60006133fb82613390565b613405818561339b565b9350613410836133ac565b8060005b8381101561344157815161342888826133cb565b9750613433836133e3565b925050600181019050613414565b5085935050505092915050565b600060a08201905061346360008301886126f4565b613470602083018761325a565b818103604083015261348281866133f0565b9050613491606083018561284f565b61349e60808301846126f4565b969550505050505056fea2646970667358221220ac777536b343e08b65862b59cb1f1ca9bfba41a579413b416711f317c245d79464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106100e15760003560e01c8063715018a61161007f578063a9059cbb11610059578063a9059cbb146102bb578063dd62ed3e146102f8578063e8078d9414610335578063f2fde38b1461033f576100e8565b8063715018a61461024e5780638da5cb5b1461026557806395d89b4114610290576100e8565b806323b872dd116100bb57806323b872dd14610180578063313ce567146101bd578063368f4800146101e857806370a0823114610211576100e8565b806306fdde03146100ed578063095ea7b31461011857806318160ddd14610155576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b50610102610368565b60405161010f91906125c3565b60405180910390f35b34801561012457600080fd5b5061013f600480360381019061013a919061267e565b6103a5565b60405161014c91906126d9565b60405180910390f35b34801561016157600080fd5b5061016a610497565b6040516101779190612703565b60405180910390f35b34801561018c57600080fd5b506101a760048036038101906101a2919061271e565b6104ba565b6040516101b491906126d9565b60405180910390f35b3480156101c957600080fd5b506101d26106c4565b6040516101df919061278d565b60405180910390f35b3480156101f457600080fd5b5061020f600480360381019061020a91906127e2565b6106cd565b005b34801561021d57600080fd5b5061023860048036038101906102339190612822565b610889565b6040516102459190612703565b60405180910390f35b34801561025a57600080fd5b506102636108d2565b005b34801561027157600080fd5b5061027a6109db565b604051610287919061285e565b60405180910390f35b34801561029c57600080fd5b506102a5610a04565b6040516102b291906125c3565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd919061267e565b610a41565b6040516102ef91906126d9565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a9190612879565b610a9e565b60405161032c9190612703565b60405180910390f35b61033d610b25565b005b34801561034b57600080fd5b50610366600480360381019061036191906128f7565b611212565b005b60606040518060400160405280600481526020017f444f524100000000000000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104859190612703565b60405180910390a36001905092915050565b60006009600a6104a79190612a86565b620f42406104b59190612ad1565b905090565b60006104c58461131a565b610504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fb90612b5f565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106b05781600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461062f9190612b7f565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6106bb8484846113f5565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075290612bff565b60405180910390fd5b600060016103e88461ffff166009600a6107759190612a86565b620f42406107839190612ad1565b61078d9190612ad1565b6107979190612c4e565b6107a19190612c7f565b90506002548110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612cff565b60405180910390fd5b80600281905550600060016103e88461ffff166009600a6108099190612a86565b620f42406108179190612ad1565b6108219190612ad1565b61082b9190612c4e565b6108359190612c7f565b905060035481101561087c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087390612d6b565b60405180910390fd5b8060038190555050505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095790612bff565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516109d1919061285e565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017fd0b4d0b0d188d0b0000000000000000000000000000000000000000000000000815250905090565b6000610a4c3361131a565b610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290612b5f565b60405180910390fd5b610a963384846113f5565b905092915050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612bff565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690612dd7565b60405180910390fd5b601260009054906101000a900460ff1615610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca690612e43565b60405180910390fd5b6000341180610cbe5750600047115b610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490612eaf565b60405180910390fd5b6000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612f1b565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612f50565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd9190612f50565b6040518363ffffffff1660e01b8152600401610eda929190612f7d565b6020604051808303816000875af1158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190612f50565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fa8600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000611981565b600654600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461101b9190612b7f565b925050819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110ed9190612fed565b6000604051808303816000865af19150503d806000811461112a576040519150601f19603f3d011682016040523d82523d6000602084013e61112f565b606091505b5050905080611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90613050565b60405180910390fd5b8060116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111f4611a6f565b506000601260016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129790612bff565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161130f91906130cf565b60405180910390a150565b60008060009050601260009054906101000a900460ff161561133f57600190506113ec565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156113e15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156113eb57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90613136565b60405180910390fd5b601260009054906101000a900460ff1661155b57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561151b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190612b5f565b60405180910390fd5b5b601260019054906101000a900460ff161580156115c15750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115cf576115ce611b57565b5b600954431080156115e257506007544310155b80156116375750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116ab573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a1906131a2565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561171357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561176b575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117bb5761177b848484611c77565b6117ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b19061320e565b60405180910390fd5b5b60006117c8858585611e0e565b9050600081846117d89190612b7f565b905083600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118259190612b7f565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816006600082825461187a9190612c7f565b9250508190555080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118cc9190612c7f565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161196c9190612703565b60405180910390a36001925050509392505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156119b357600090505b6119bc846120be565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401611a2396959493929190613269565b60606040518083038185885af1158015611a41573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a6691906132df565b50505050505050565b606460026009600a611a819190612a86565b620f4240611a8f9190612ad1565b611a999190612ad1565b611aa39190612c4e565b600281905550606460026009600a611abb9190612a86565b620f4240611ac99190612ad1565b611ad39190612ad1565b611add9190612c4e565b6003819055506001601260006101000a81548160ff02191690831515021790555043600781905550600860019054906101000a900460ff1660ff16600860009054906101000a900460ff1660ff16600754600954611b3b9190612c7f565b611b459190612c7f565b611b4f9190612c7f565b600981905550565b6001601260016101000a81548160ff021916908315150217905550600060065490506004548110158015611b975750601260009054906101000a900460ff165b15611c59576005548110611bab5760055490505b60008190506009600a611bbe9190612a86565b811115611c3e5781600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c149190612c7f565b92505081905550611c24816122a8565b8160066000828254611c369190612b7f565b925050819055505b60004790506000811115611c5657611c55816124c7565b5b50505b506000601260016101000a81548160ff021916908315150217905550565b60008060019050601260009054906101000a900460ff168015611ce45750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d3a5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e0357600254831115611d525760009050611e02565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611df7575060035483600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df59190612c7f565b115b15611e0157600090505b5b5b809150509392505050565b600080601260009054906101000a900460ff161580611e765750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611eca5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ed857600090506120b3565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561203257600860019054906101000a900460ff1660ff16600860009054906101000a900460ff1660ff16600754611f5d9190612c7f565b611f679190612c7f565b4310611f9e576064600060149054906101000a900460ff1660ff1684611f8d9190612ad1565b611f979190612c4e565b905061202d565b600860009054906101000a900460ff1660ff16600754611fbe9190612c7f565b4310611ff5576064600860039054906101000a900460ff1660ff1684611fe49190612ad1565b611fee9190612c4e565b905061202c565b600754431061202b576064600860029054906101000a900460ff1660ff168461201e9190612ad1565b6120289190612c4e565b90505b5b5b6120b2565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120b1576064600060159054906101000a900460ff1660ff16846120a49190612ad1565b6120ae9190612c4e565b90505b5b5b809150509392505050565b80600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156122a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161229c9190612703565b60405180910390a35b50565b6122b1816120be565b6000600267ffffffffffffffff8111156122ce576122cd613332565b5b6040519080825280602002602001820160405280156122fc5781602001602082028036833780820191505090505b509050308160008151811061231457612313613361565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123df9190612f50565b816001815181106123f3576123f2613361565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161249195949392919061344e565b600060405180830381600087803b1580156124ab57600080fd5b505af11580156124bf573d6000803e3d6000fd5b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561252f573d6000803e3d6000fd5b5050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561256d578082015181840152602081019050612552565b60008484015250505050565b6000601f19601f8301169050919050565b600061259582612533565b61259f818561253e565b93506125af81856020860161254f565b6125b881612579565b840191505092915050565b600060208201905081810360008301526125dd818461258a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612615826125ea565b9050919050565b6126258161260a565b811461263057600080fd5b50565b6000813590506126428161261c565b92915050565b6000819050919050565b61265b81612648565b811461266657600080fd5b50565b60008135905061267881612652565b92915050565b60008060408385031215612695576126946125e5565b5b60006126a385828601612633565b92505060206126b485828601612669565b9150509250929050565b60008115159050919050565b6126d3816126be565b82525050565b60006020820190506126ee60008301846126ca565b92915050565b6126fd81612648565b82525050565b600060208201905061271860008301846126f4565b92915050565b600080600060608486031215612737576127366125e5565b5b600061274586828701612633565b935050602061275686828701612633565b925050604061276786828701612669565b9150509250925092565b600060ff82169050919050565b61278781612771565b82525050565b60006020820190506127a2600083018461277e565b92915050565b600061ffff82169050919050565b6127bf816127a8565b81146127ca57600080fd5b50565b6000813590506127dc816127b6565b92915050565b600080604083850312156127f9576127f86125e5565b5b6000612807858286016127cd565b9250506020612818858286016127cd565b9150509250929050565b600060208284031215612838576128376125e5565b5b600061284684828501612633565b91505092915050565b6128588161260a565b82525050565b6000602082019050612873600083018461284f565b92915050565b600080604083850312156128905761288f6125e5565b5b600061289e85828601612633565b92505060206128af85828601612633565b9150509250929050565b60006128c4826125ea565b9050919050565b6128d4816128b9565b81146128df57600080fd5b50565b6000813590506128f1816128cb565b92915050565b60006020828403121561290d5761290c6125e5565b5b600061291b848285016128e2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156129aa5780860481111561298657612985612924565b5b60018516156129955780820291505b80810290506129a385612953565b945061296a565b94509492505050565b6000826129c35760019050612a7f565b816129d15760009050612a7f565b81600181146129e757600281146129f157612a20565b6001915050612a7f565b60ff841115612a0357612a02612924565b5b8360020a915084821115612a1a57612a19612924565b5b50612a7f565b5060208310610133831016604e8410600b8410161715612a555782820a905083811115612a5057612a4f612924565b5b612a7f565b612a628484846001612960565b92509050818404811115612a7957612a78612924565b5b81810290505b9392505050565b6000612a9182612648565b9150612a9c83612771565b9250612ac97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129b3565b905092915050565b6000612adc82612648565b9150612ae783612648565b9250828202612af581612648565b91508282048414831517612b0c57612b0b612924565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612b4960108361253e565b9150612b5482612b13565b602082019050919050565b60006020820190508181036000830152612b7881612b3c565b9050919050565b6000612b8a82612648565b9150612b9583612648565b9250828203905081811115612bad57612bac612924565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000612be960188361253e565b9150612bf482612bb3565b602082019050919050565b60006020820190508181036000830152612c1881612bdc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c5982612648565b9150612c6483612648565b925082612c7457612c73612c1f565b5b828204905092915050565b6000612c8a82612648565b9150612c9583612648565b9250828201905080821115612cad57612cac612924565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b6000612ce9600a8361253e565b9150612cf482612cb3565b602082019050919050565b60006020820190508181036000830152612d1881612cdc565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000612d55600e8361253e565b9150612d6082612d1f565b602082019050919050565b60006020820190508181036000830152612d8481612d48565b9050919050565b7f4c50206372656174656400000000000000000000000000000000000000000000600082015250565b6000612dc1600a8361253e565b9150612dcc82612d8b565b602082019050919050565b60006020820190508181036000830152612df081612db4565b9050919050565b7f74726164696e67206f70656e0000000000000000000000000000000000000000600082015250565b6000612e2d600c8361253e565b9150612e3882612df7565b602082019050919050565b60006020820190508181036000830152612e5c81612e20565b9050919050565b7f4e6f2045544820696e2063612f6d736700000000000000000000000000000000600082015250565b6000612e9960108361253e565b9150612ea482612e63565b602082019050919050565b60006020820190508181036000830152612ec881612e8c565b9050919050565b7f4e6f20746f6b656e7320696e2063610000000000000000000000000000000000600082015250565b6000612f05600f8361253e565b9150612f1082612ecf565b602082019050919050565b60006020820190508181036000830152612f3481612ef8565b9050919050565b600081519050612f4a8161261c565b92915050565b600060208284031215612f6657612f656125e5565b5b6000612f7484828501612f3b565b91505092915050565b6000604082019050612f92600083018561284f565b612f9f602083018461284f565b9392505050565b600081519050919050565b600081905092915050565b6000612fc782612fa6565b612fd18185612fb1565b9350612fe181856020860161254f565b80840191505092915050565b6000612ff98284612fbc565b915081905092915050565b7f4661696c656420616464696e67206c7000000000000000000000000000000000600082015250565b600061303a60108361253e565b915061304582613004565b602082019050919050565b600060208201905081810360008301526130698161302d565b9050919050565b6000819050919050565b600061309561309061308b846125ea565b613070565b6125ea565b9050919050565b60006130a78261307a565b9050919050565b60006130b98261309c565b9050919050565b6130c9816130ae565b82525050565b60006020820190506130e460008301846130c0565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000613120601d8361253e565b915061312b826130ea565b602082019050919050565b6000602082019050818103600083015261314f81613113565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b600061318c600b8361253e565b915061319782613156565b602082019050919050565b600060208201905081810360008301526131bb8161317f565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b60006131f860118361253e565b9150613203826131c2565b602082019050919050565b60006020820190508181036000830152613227816131eb565b9050919050565b6000819050919050565b600061325361324e6132498461322e565b613070565b612648565b9050919050565b61326381613238565b82525050565b600060c08201905061327e600083018961284f565b61328b60208301886126f4565b613298604083018761325a565b6132a5606083018661325a565b6132b2608083018561284f565b6132bf60a08301846126f4565b979650505050505050565b6000815190506132d981612652565b92915050565b6000806000606084860312156132f8576132f76125e5565b5b6000613306868287016132ca565b9350506020613317868287016132ca565b9250506040613328868287016132ca565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133c58161260a565b82525050565b60006133d783836133bc565b60208301905092915050565b6000602082019050919050565b60006133fb82613390565b613405818561339b565b9350613410836133ac565b8060005b8381101561344157815161342888826133cb565b9750613433836133e3565b925050600181019050613414565b5085935050505092915050565b600060a08201905061346360008301886126f4565b613470602083018761325a565b818103604083015261348281866133f0565b9050613491606083018561284f565b61349e60808301846126f4565b969550505050505056fea2646970667358221220ac777536b343e08b65862b59cb1f1ca9bfba41a579413b416711f317c245d79464736f6c63430008130033

Deployed Bytecode Sourcemap

2890:10235:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5727:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6065:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5457:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6519:392;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5551:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11423:440;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5813:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2707:127;;;;;;;;;;;;;:::i;:::-;;2481:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5637:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6286:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5924:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7242:770;;;:::i;:::-;;2554:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5727:80;5775:13;5799:5;;;;;;;;;;;;;;;;;5792:12;;5727:80;:::o;6065:213::-;6139:4;6190:6;6156:11;:23;6168:10;6156:23;;;;;;;;;;;;;;;:31;6180:6;6156:31;;;;;;;;;;;;;;;:40;;;;6233:6;6212:36;;6221:10;6212:36;;;6241:6;6212:36;;;;;;:::i;:::-;;;;;;;;6266:4;6259:11;;6065:213;;;;:::o;5457:88::-;5512:7;2974:1;3036:2;:13;;;;:::i;:::-;3023:9;:27;;;;:::i;:::-;5523:19;;5457:88;:::o;6519:392::-;6617:4;6642:23;6660:4;6642:17;:23::i;:::-;6634:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6733:17;6700:11;:17;6712:4;6700:17;;;;;;;;;;;;;;;:29;6718:10;6700:29;;;;;;;;;;;;;;;;:50;6697:151;;6830:6;6798:11;:17;6810:4;6798:17;;;;;;;;;;;;;;;:29;6816:10;6798:29;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;6766:11;:17;6778:4;6766:17;;;;;;;;;;;;;;;:29;6784:10;6766:29;;;;;;;;;;;;;;;:70;;;;6697:151;6865:38;6879:4;6885:9;6896:6;6865:13;:38::i;:::-;6858:45;;6519:392;;;;;:::o;5551:80::-;5603:5;2974:1;5612:16;;5551:80;:::o;11423:440::-;2426:6;;;;;;;;;;2412:20;;:10;:20;;;2404:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11518:16:::1;11576:1;11569:4;11552:14;11537:29;;2974:1;3036:2;:13;;;;:::i;:::-;3023:9;:27;;;;:::i;:::-;11537:29;;;;:::i;:::-;:36;;;;:::i;:::-;:40;;;;:::i;:::-;11518:59;;11608:12;;11596:8;:24;;11588:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11661:8;11646:12;:23;;;;11680:20;11742:1;11735:4;11718:14;11703:29;;2974:1;3036:2;:13;;;;:::i;:::-;3023:9;:27;;;;:::i;:::-;11703:29;;;;:::i;:::-;:36;;;;:::i;:::-;:40;;;;:::i;:::-;11680:63;;11778:16;;11762:12;:32;;11754:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11843:12;11824:16;:31;;;;11507:356;;11423:440:::0;;:::o;5813:105::-;5879:7;5897:9;:18;5907:7;5897:18;;;;;;;;;;;;;;;;5890:25;;5813:105;;;:::o;2707:127::-;2426:6;;;;;;;;;;2412:20;;:10;:20;;;2404:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2784:1:::1;2767:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2793:32;2822:1;2793:32;;;;;;:::i;:::-;;;;;;;;2707:127::o:0;2481:67::-;2519:7;2537:6;;;;;;;;;;;2530:13;;2481:67;:::o;5637:84::-;5687:13;5711:7;;;;;;;;;;;;;;;;;5704:14;;5637:84;:::o;6286:225::-;6366:4;6391:29;6409:10;6391:17;:29::i;:::-;6383:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6459:44;6473:10;6485:9;6496:6;6459:13;:44::i;:::-;6452:51;;6286:225;;;;:::o;5924:133::-;6008:7;6026:11;:19;6038:6;6026:19;;;;;;;;;;;;;;;:28;6046:7;6026:28;;;;;;;;;;;;;;;;6019:35;;5924:133;;;;:::o;7242:770::-;2426:6;;;;;;;;;;2412:20;;:10;:20;;;2404:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4542:4:::1;4529:10;;:17;;;;;;;;;;;;;;;;;;7346:1:::2;7324:24;;:10;;;;;;;;;;;:24;;;7316:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;7383:12;;;;;;;;;;;7382:13;7374:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7443:1;7431:9;:13;:40;;;;7470:1;7448:21;:23;7431:40;7423:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7536:1;7511:9;:24;7529:4;7511:24;;;;;;;;;;;;;;;;:26;7503:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7599:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7581:58;;;7648:4;7655:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7581:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7568:10;;:113;;;;;;;;;;;;;;;;;;7692:69;7706:9;:24;7724:4;7706:24;;;;;;;;;;;;;;;;7732:21;7755:5;7692:13;:69::i;:::-;7797:17;;7772:9;:21;7782:10;;;;;;;;;;;7772:21;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;7826:12;7843:10;;;;;;;;;;;:15;;7859:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7843:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7825:69;;;7913:7;7905:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;7972:7;7952:5;:17;7958:10;;;;;;;;;;;7952:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;7990:14;:12;:14::i;:::-;7305:707;4584:5:::1;4571:10;;:18;;;;;;;;;;;;;;;;;;7242:770::o:0;2554:147::-;2426:6;;;;;;;;;;2412:20;;:10;:20;;;2404:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2647:8:::1;2638:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2662:30;2683:8;2662:30;;;;;;:::i;:::-;;;;;;;;2554:147:::0;:::o;10306:273::-;10369:4;10385:16;10404:5;10385:24;;10425:12;;;;;;;;;;;10420:120;;;10456:4;10442:18;;10420:120;;;10483:7;:13;10491:4;10483:13;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;10500:9;:15;10510:4;10500:15;;;;;;;;;;;;;;;;;;;;;;;;;10483:32;10479:61;;;10533:4;10519:18;;10479:61;10420:120;10560:11;10553:18;;;10306:273;;;:::o;8718:1085::-;8810:4;8853:1;8835:20;;:6;:20;;;8827:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8905:12;;;;;;;;;;;8900:89;;8929:7;:15;8937:6;8929:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;8948:9;:17;8958:6;8948:17;;;;;;;;;;;;;;;;;;;;;;;;;8929:36;8921:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8900:89;9005:10;;;;;;;;;;;9004:11;:31;;;;;9019:5;:16;9025:9;9019:16;;;;;;;;;;;;;;;;;;;;;;;;;9004:31;8999:64;;;9040:20;:18;:20::i;:::-;8999:64;9093:20;;9078:12;:35;:64;;;;;9133:9;;9117:12;:25;;9078:64;:81;;;;;9146:5;:13;9152:6;9146:13;;;;;;;;;;;;;;;;;;;;;;;;;9078:81;9073:162;;;9198:9;9185:22;;:9;:22;;;9177:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9073:162;9268:4;9250:23;;:6;:23;;;;:53;;;;;9298:4;9277:26;;:9;:26;;;;9250:53;:73;;;;;9317:6;;;;;;;;;;9307:16;;:6;:16;;;;9250:73;9245:179;;;9350:39;9363:6;9371:9;9382:6;9350:12;:39::i;:::-;9342:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9245:179;9434:18;9455:40;9469:6;9477:9;9488:6;9455:13;:40::i;:::-;9434:61;;9506:23;9541:10;9532:6;:19;;;;:::i;:::-;9506:45;;9602:6;9582:9;:17;9592:6;9582:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9562:9;:17;9572:6;9562:17;;;;;;;;;;;;;;;:46;;;;9640:10;9619:17;;:31;;;;;;;:::i;:::-;;;;;;;;9707:15;9684:9;:20;9694:9;9684:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9661:9;:20;9671:9;9661:20;;;;;;;;;;;;;;;:61;;;;9755:9;9738:35;;9747:6;9738:35;;;9766:6;9738:35;;;;;;:::i;:::-;;;;;;;;9791:4;9784:11;;;;8718:1085;;;;;:::o;8018:369::-;8121:19;8143:7;;;;;;;;;;;8121:29;;8166:8;8161:45;;;8201:1;8179:24;;8161:45;8216:28;8231:12;8216:14;:28::i;:::-;8255:18;;;;;;;;;;;:34;;;8297:13;8322:4;8329:12;8343:1;8346;8349:11;8362:15;8255:124;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8110:277;8018:369;;;:::o;8393:319::-;8475:3;8471:1;2974;3036:2;:13;;;;:::i;:::-;3023:9;:27;;;;:::i;:::-;8456:16;;;;:::i;:::-;:22;;;;:::i;:::-;8437:12;:41;;;;8528:3;8524:1;2974;3036:2;:13;;;;:::i;:::-;3023:9;:27;;;;:::i;:::-;8509:16;;;;:::i;:::-;:22;;;;:::i;:::-;8490:16;:41;;;;8557:4;8542:12;;:19;;;;;;;;;;;;;;;;;;8584:12;8572:9;:24;;;;8686:18;;;;;;;;;;;8630:74;;8665:18;;;;;;;;;;;8630:53;;8653:9;;8630:20;;:32;;;;:::i;:::-;:53;;;;:::i;:::-;:74;;;;:::i;:::-;8607:20;:97;;;;8393:319::o;11874:759::-;4542:4;4529:10;;:17;;;;;;;;;;;;;;;;;;11935:27:::1;11965:17;;11935:47;;12021:11;;11998:19;:34;;:50;;;;;12036:12;;;;;;;;;;;11998:50;11993:633;;;12094:11;;12071:19;:34;12066:80;;12132:11;;12110:33;;12066:80;12174:21;12198:19;12174:43;;2974:1;12253:2;:13;;;;:::i;:::-;12237;:29;12233:231;;;12316:19;12288:9;:24;12306:4;12288:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;12354:35;12375:13;12354:20;:35::i;:::-;12429:19;12408:17;;:40;;;;;;;:::i;:::-;;;;;;;;12233:231;12478:27;12508:21;12478:51;;12569:1;12547:19;:23;12544:71;;;12574:38;12592:19;12574:17;:38::i;:::-;12544:71;12051:575;;11993:633;11924:709;4584:5:::0;4571:10;;:18;;;;;;;;;;;;;;;;;;11874:759::o;9809:491::-;9911:4;9928:21;9952:4;9928:28;;9972:12;;;;;;;;;;;:32;;;;;9989:9;:15;9999:4;9989:15;;;;;;;;;;;;;;;;;;;;;;;;;9988:16;9972:32;:57;;;;;10009:9;:20;10019:9;10009:20;;;;;;;;;;;;;;;;;;;;;;;;;10008:21;9972:57;9967:292;;;10069:12;;10052:14;:29;10047:201;;;10105:5;10086:24;;10047:201;;;10138:5;:16;10144:9;10138:16;;;;;;;;;;;;;;;;;;;;;;;;;10137:17;:79;;;;;10199:16;;10182:14;10159:9;:20;10169:9;10159:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;10137:79;10132:116;;;10240:5;10221:24;;10132:116;10047:201;9967:292;10276:16;10269:23;;;9809:491;;;;;:::o;10585:832::-;10680:7;10700:17;10744:12;;;;;;;;;;;10743:13;:30;;;;10760:7;:13;10768:4;10760:13;;;;;;;;;;;;;;;;;;;;;;;;;10743:30;:52;;;;10777:7;:18;10785:9;10777:18;;;;;;;;;;;;;;;;;;;;;;;;;10743:52;10738:643;;;10826:1;10814:13;;10738:643;;;10851:5;:11;10857:4;10851:11;;;;;;;;;;;;;;;;;;;;;;;;;10846:535;;;10935:18;;;;;;;;;;;10902:51;;10914:18;;;;;;;;;;;10902:30;;:9;;:30;;;;:::i;:::-;:51;;;;:::i;:::-;10886:12;:67;10881:393;;11008:3;10996:9;;;;;;;;;;;10987:18;;:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;10975:36;;10881:393;;;11067:18;;;;;;;;;;;11055:30;;:9;;:30;;;;:::i;:::-;11039:12;:46;11034:240;;11143:3;11128:12;;;;;;;;;;;11119:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;11107:39;;11034:240;;;11189:9;;11173:12;:25;11168:106;;11255:3;11240:12;;;;;;;;;;;11231:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;11219:39;;11168:106;11034:240;10881:393;10846:535;;;11296:5;:16;11302:9;11296:16;;;;;;;;;;;;;;;;;;;;;;;;;11291:90;;;11365:3;11352:10;;;;;;;;;;;11343:19;;:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;11331:37;;11291:90;10846:535;10738:643;11400:9;11393:16;;;10585:832;;;;;:::o;6919:317::-;7039:12;6990:11;:26;7010:4;6990:26;;;;;;;;;;;;;;;:46;4200:42;6990:46;;;;;;;;;;;;;;;;:61;6985:244;;;7118:17;7069:11;:26;7089:4;7069:26;;;;;;;;;;;;;;;:46;4200:42;7069:46;;;;;;;;;;;;;;;:66;;;;4200:42;7155:62;;7172:4;7155:62;;;7199:17;7155:62;;;;;;:::i;:::-;;;;;;;;6985:244;6919:317;:::o;12639:369::-;12709:27;12724:11;12709:14;:27::i;:::-;12747:21;12785:1;12771:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12747:40;;12817:4;12798;12803:1;12798:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;12844:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12834:4;12839:1;12834:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;12881:18;;;;;;;;;;;:69;;;12951:11;12963:1;12965:4;12978;12984:15;12881:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12698:310;12639:369;:::o;13014:103::-;13076:16;;;;;;;;;;;:25;;:33;13102:6;13076:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13014:103;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:89::-;4889:7;4929:6;4922:5;4918:18;4907:29;;4853:89;;;:::o;4948:120::-;5020:23;5037:5;5020:23;:::i;:::-;5013:5;5010:34;5000:62;;5058:1;5055;5048:12;5000:62;4948:120;:::o;5074:137::-;5119:5;5157:6;5144:20;5135:29;;5173:32;5199:5;5173:32;:::i;:::-;5074:137;;;;:::o;5217:470::-;5283:6;5291;5340:2;5328:9;5319:7;5315:23;5311:32;5308:119;;;5346:79;;:::i;:::-;5308:119;5466:1;5491:52;5535:7;5526:6;5515:9;5511:22;5491:52;:::i;:::-;5481:62;;5437:116;5592:2;5618:52;5662:7;5653:6;5642:9;5638:22;5618:52;:::i;:::-;5608:62;;5563:117;5217:470;;;;;:::o;5693:329::-;5752:6;5801:2;5789:9;5780:7;5776:23;5772:32;5769:119;;;5807:79;;:::i;:::-;5769:119;5927:1;5952:53;5997:7;5988:6;5977:9;5973:22;5952:53;:::i;:::-;5942:63;;5898:117;5693:329;;;;:::o;6028:118::-;6115:24;6133:5;6115:24;:::i;:::-;6110:3;6103:37;6028:118;;:::o;6152:222::-;6245:4;6283:2;6272:9;6268:18;6260:26;;6296:71;6364:1;6353:9;6349:17;6340:6;6296:71;:::i;:::-;6152:222;;;;:::o;6380:474::-;6448:6;6456;6505:2;6493:9;6484:7;6480:23;6476:32;6473:119;;;6511:79;;:::i;:::-;6473:119;6631:1;6656:53;6701:7;6692:6;6681:9;6677:22;6656:53;:::i;:::-;6646:63;;6602:117;6758:2;6784:53;6829:7;6820:6;6809:9;6805:22;6784:53;:::i;:::-;6774:63;;6729:118;6380:474;;;;;:::o;6860:104::-;6905:7;6934:24;6952:5;6934:24;:::i;:::-;6923:35;;6860:104;;;:::o;6970:138::-;7051:32;7077:5;7051:32;:::i;:::-;7044:5;7041:43;7031:71;;7098:1;7095;7088:12;7031:71;6970:138;:::o;7114:155::-;7168:5;7206:6;7193:20;7184:29;;7222:41;7257:5;7222:41;:::i;:::-;7114:155;;;;:::o;7275:345::-;7342:6;7391:2;7379:9;7370:7;7366:23;7362:32;7359:119;;;7397:79;;:::i;:::-;7359:119;7517:1;7542:61;7595:7;7586:6;7575:9;7571:22;7542:61;:::i;:::-;7532:71;;7488:125;7275:345;;;;:::o;7626:180::-;7674:77;7671:1;7664:88;7771:4;7768:1;7761:15;7795:4;7792:1;7785:15;7812:102;7854:8;7901:5;7898:1;7894:13;7873:34;;7812:102;;;:::o;7920:848::-;7981:5;7988:4;8012:6;8003:15;;8036:5;8027:14;;8050:712;8071:1;8061:8;8058:15;8050:712;;;8166:4;8161:3;8157:14;8151:4;8148:24;8145:50;;;8175:18;;:::i;:::-;8145:50;8225:1;8215:8;8211:16;8208:451;;;8640:4;8633:5;8629:16;8620:25;;8208:451;8690:4;8684;8680:15;8672:23;;8720:32;8743:8;8720:32;:::i;:::-;8708:44;;8050:712;;;7920:848;;;;;;;:::o;8774:1073::-;8828:5;9019:8;9009:40;;9040:1;9031:10;;9042:5;;9009:40;9068:4;9058:36;;9085:1;9076:10;;9087:5;;9058:36;9154:4;9202:1;9197:27;;;;9238:1;9233:191;;;;9147:277;;9197:27;9215:1;9206:10;;9217:5;;;9233:191;9278:3;9268:8;9265:17;9262:43;;;9285:18;;:::i;:::-;9262:43;9334:8;9331:1;9327:16;9318:25;;9369:3;9362:5;9359:14;9356:40;;;9376:18;;:::i;:::-;9356:40;9409:5;;;9147:277;;9533:2;9523:8;9520:16;9514:3;9508:4;9505:13;9501:36;9483:2;9473:8;9470:16;9465:2;9459:4;9456:12;9452:35;9436:111;9433:246;;;9589:8;9583:4;9579:19;9570:28;;9624:3;9617:5;9614:14;9611:40;;;9631:18;;:::i;:::-;9611:40;9664:5;;9433:246;9704:42;9742:3;9732:8;9726:4;9723:1;9704:42;:::i;:::-;9689:57;;;;9778:4;9773:3;9769:14;9762:5;9759:25;9756:51;;;9787:18;;:::i;:::-;9756:51;9836:4;9829:5;9825:16;9816:25;;8774:1073;;;;;;:::o;9853:281::-;9911:5;9935:23;9953:4;9935:23;:::i;:::-;9927:31;;9979:25;9995:8;9979:25;:::i;:::-;9967:37;;10023:104;10060:66;10050:8;10044:4;10023:104;:::i;:::-;10014:113;;9853:281;;;;:::o;10140:410::-;10180:7;10203:20;10221:1;10203:20;:::i;:::-;10198:25;;10237:20;10255:1;10237:20;:::i;:::-;10232:25;;10292:1;10289;10285:9;10314:30;10332:11;10314:30;:::i;:::-;10303:41;;10493:1;10484:7;10480:15;10477:1;10474:22;10454:1;10447:9;10427:83;10404:139;;10523:18;;:::i;:::-;10404:139;10188:362;10140:410;;;;:::o;10556:166::-;10696:18;10692:1;10684:6;10680:14;10673:42;10556:166;:::o;10728:366::-;10870:3;10891:67;10955:2;10950:3;10891:67;:::i;:::-;10884:74;;10967:93;11056:3;10967:93;:::i;:::-;11085:2;11080:3;11076:12;11069:19;;10728:366;;;:::o;11100:419::-;11266:4;11304:2;11293:9;11289:18;11281:26;;11353:9;11347:4;11343:20;11339:1;11328:9;11324:17;11317:47;11381:131;11507:4;11381:131;:::i;:::-;11373:139;;11100:419;;;:::o;11525:194::-;11565:4;11585:20;11603:1;11585:20;:::i;:::-;11580:25;;11619:20;11637:1;11619:20;:::i;:::-;11614:25;;11663:1;11660;11656:9;11648:17;;11687:1;11681:4;11678:11;11675:37;;;11692:18;;:::i;:::-;11675:37;11525:194;;;;:::o;11725:174::-;11865:26;11861:1;11853:6;11849:14;11842:50;11725:174;:::o;11905:366::-;12047:3;12068:67;12132:2;12127:3;12068:67;:::i;:::-;12061:74;;12144:93;12233:3;12144:93;:::i;:::-;12262:2;12257:3;12253:12;12246:19;;11905:366;;;:::o;12277:419::-;12443:4;12481:2;12470:9;12466:18;12458:26;;12530:9;12524:4;12520:20;12516:1;12505:9;12501:17;12494:47;12558:131;12684:4;12558:131;:::i;:::-;12550:139;;12277:419;;;:::o;12702:180::-;12750:77;12747:1;12740:88;12847:4;12844:1;12837:15;12871:4;12868:1;12861:15;12888:185;12928:1;12945:20;12963:1;12945:20;:::i;:::-;12940:25;;12979:20;12997:1;12979:20;:::i;:::-;12974:25;;13018:1;13008:35;;13023:18;;:::i;:::-;13008:35;13065:1;13062;13058:9;13053:14;;12888:185;;;;:::o;13079:191::-;13119:3;13138:20;13156:1;13138:20;:::i;:::-;13133:25;;13172:20;13190:1;13172:20;:::i;:::-;13167:25;;13215:1;13212;13208:9;13201:16;;13236:3;13233:1;13230:10;13227:36;;;13243:18;;:::i;:::-;13227:36;13079:191;;;;:::o;13276:160::-;13416:12;13412:1;13404:6;13400:14;13393:36;13276:160;:::o;13442:366::-;13584:3;13605:67;13669:2;13664:3;13605:67;:::i;:::-;13598:74;;13681:93;13770:3;13681:93;:::i;:::-;13799:2;13794:3;13790:12;13783:19;;13442:366;;;:::o;13814:419::-;13980:4;14018:2;14007:9;14003:18;13995:26;;14067:9;14061:4;14057:20;14053:1;14042:9;14038:17;14031:47;14095:131;14221:4;14095:131;:::i;:::-;14087:139;;13814:419;;;:::o;14239:164::-;14379:16;14375:1;14367:6;14363:14;14356:40;14239:164;:::o;14409:366::-;14551:3;14572:67;14636:2;14631:3;14572:67;:::i;:::-;14565:74;;14648:93;14737:3;14648:93;:::i;:::-;14766:2;14761:3;14757:12;14750:19;;14409:366;;;:::o;14781:419::-;14947:4;14985:2;14974:9;14970:18;14962:26;;15034:9;15028:4;15024:20;15020:1;15009:9;15005:17;14998:47;15062:131;15188:4;15062:131;:::i;:::-;15054:139;;14781:419;;;:::o;15206:160::-;15346:12;15342:1;15334:6;15330:14;15323:36;15206:160;:::o;15372:366::-;15514:3;15535:67;15599:2;15594:3;15535:67;:::i;:::-;15528:74;;15611:93;15700:3;15611:93;:::i;:::-;15729:2;15724:3;15720:12;15713:19;;15372:366;;;:::o;15744:419::-;15910:4;15948:2;15937:9;15933:18;15925:26;;15997:9;15991:4;15987:20;15983:1;15972:9;15968:17;15961:47;16025:131;16151:4;16025:131;:::i;:::-;16017:139;;15744:419;;;:::o;16169:162::-;16309:14;16305:1;16297:6;16293:14;16286:38;16169:162;:::o;16337:366::-;16479:3;16500:67;16564:2;16559:3;16500:67;:::i;:::-;16493:74;;16576:93;16665:3;16576:93;:::i;:::-;16694:2;16689:3;16685:12;16678:19;;16337:366;;;:::o;16709:419::-;16875:4;16913:2;16902:9;16898:18;16890:26;;16962:9;16956:4;16952:20;16948:1;16937:9;16933:17;16926:47;16990:131;17116:4;16990:131;:::i;:::-;16982:139;;16709:419;;;:::o;17134:166::-;17274:18;17270:1;17262:6;17258:14;17251:42;17134:166;:::o;17306:366::-;17448:3;17469:67;17533:2;17528:3;17469:67;:::i;:::-;17462:74;;17545:93;17634:3;17545:93;:::i;:::-;17663:2;17658:3;17654:12;17647:19;;17306:366;;;:::o;17678:419::-;17844:4;17882:2;17871:9;17867:18;17859:26;;17931:9;17925:4;17921:20;17917:1;17906:9;17902:17;17895:47;17959:131;18085:4;17959:131;:::i;:::-;17951:139;;17678:419;;;:::o;18103:165::-;18243:17;18239:1;18231:6;18227:14;18220:41;18103:165;:::o;18274:366::-;18416:3;18437:67;18501:2;18496:3;18437:67;:::i;:::-;18430:74;;18513:93;18602:3;18513:93;:::i;:::-;18631:2;18626:3;18622:12;18615:19;;18274:366;;;:::o;18646:419::-;18812:4;18850:2;18839:9;18835:18;18827:26;;18899:9;18893:4;18889:20;18885:1;18874:9;18870:17;18863:47;18927:131;19053:4;18927:131;:::i;:::-;18919:139;;18646:419;;;:::o;19071:143::-;19128:5;19159:6;19153:13;19144:22;;19175:33;19202:5;19175:33;:::i;:::-;19071:143;;;;:::o;19220:351::-;19290:6;19339:2;19327:9;19318:7;19314:23;19310:32;19307:119;;;19345:79;;:::i;:::-;19307:119;19465:1;19490:64;19546:7;19537:6;19526:9;19522:22;19490:64;:::i;:::-;19480:74;;19436:128;19220:351;;;;:::o;19577:332::-;19698:4;19736:2;19725:9;19721:18;19713:26;;19749:71;19817:1;19806:9;19802:17;19793:6;19749:71;:::i;:::-;19830:72;19898:2;19887:9;19883:18;19874:6;19830:72;:::i;:::-;19577:332;;;;;:::o;19915:98::-;19966:6;20000:5;19994:12;19984:22;;19915:98;;;:::o;20019:147::-;20120:11;20157:3;20142:18;;20019:147;;;;:::o;20172:386::-;20276:3;20304:38;20336:5;20304:38;:::i;:::-;20358:88;20439:6;20434:3;20358:88;:::i;:::-;20351:95;;20455:65;20513:6;20508:3;20501:4;20494:5;20490:16;20455:65;:::i;:::-;20545:6;20540:3;20536:16;20529:23;;20280:278;20172:386;;;;:::o;20564:271::-;20694:3;20716:93;20805:3;20796:6;20716:93;:::i;:::-;20709:100;;20826:3;20819:10;;20564:271;;;;:::o;20841:166::-;20981:18;20977:1;20969:6;20965:14;20958:42;20841:166;:::o;21013:366::-;21155:3;21176:67;21240:2;21235:3;21176:67;:::i;:::-;21169:74;;21252:93;21341:3;21252:93;:::i;:::-;21370:2;21365:3;21361:12;21354:19;;21013:366;;;:::o;21385:419::-;21551:4;21589:2;21578:9;21574:18;21566:26;;21638:9;21632:4;21628:20;21624:1;21613:9;21609:17;21602:47;21666:131;21792:4;21666:131;:::i;:::-;21658:139;;21385:419;;;:::o;21810:60::-;21838:3;21859:5;21852:12;;21810:60;;;:::o;21876:142::-;21926:9;21959:53;21977:34;21986:24;22004:5;21986:24;:::i;:::-;21977:34;:::i;:::-;21959:53;:::i;:::-;21946:66;;21876:142;;;:::o;22024:126::-;22074:9;22107:37;22138:5;22107:37;:::i;:::-;22094:50;;22024:126;;;:::o;22156:134::-;22214:9;22247:37;22278:5;22247:37;:::i;:::-;22234:50;;22156:134;;;:::o;22296:147::-;22391:45;22430:5;22391:45;:::i;:::-;22386:3;22379:58;22296:147;;:::o;22449:238::-;22550:4;22588:2;22577:9;22573:18;22565:26;;22601:79;22677:1;22666:9;22662:17;22653:6;22601:79;:::i;:::-;22449:238;;;;:::o;22693:179::-;22833:31;22829:1;22821:6;22817:14;22810:55;22693:179;:::o;22878:366::-;23020:3;23041:67;23105:2;23100:3;23041:67;:::i;:::-;23034:74;;23117:93;23206:3;23117:93;:::i;:::-;23235:2;23230:3;23226:12;23219:19;;22878:366;;;:::o;23250:419::-;23416:4;23454:2;23443:9;23439:18;23431:26;;23503:9;23497:4;23493:20;23489:1;23478:9;23474:17;23467:47;23531:131;23657:4;23531:131;:::i;:::-;23523:139;;23250:419;;;:::o;23675:161::-;23815:13;23811:1;23803:6;23799:14;23792:37;23675:161;:::o;23842:366::-;23984:3;24005:67;24069:2;24064:3;24005:67;:::i;:::-;23998:74;;24081:93;24170:3;24081:93;:::i;:::-;24199:2;24194:3;24190:12;24183:19;;23842:366;;;:::o;24214:419::-;24380:4;24418:2;24407:9;24403:18;24395:26;;24467:9;24461:4;24457:20;24453:1;24442:9;24438:17;24431:47;24495:131;24621:4;24495:131;:::i;:::-;24487:139;;24214:419;;;:::o;24639:167::-;24779:19;24775:1;24767:6;24763:14;24756:43;24639:167;:::o;24812:366::-;24954:3;24975:67;25039:2;25034:3;24975:67;:::i;:::-;24968:74;;25051:93;25140:3;25051:93;:::i;:::-;25169:2;25164:3;25160:12;25153:19;;24812:366;;;:::o;25184:419::-;25350:4;25388:2;25377:9;25373:18;25365:26;;25437:9;25431:4;25427:20;25423:1;25412:9;25408:17;25401:47;25465:131;25591:4;25465:131;:::i;:::-;25457:139;;25184:419;;;:::o;25609:85::-;25654:7;25683:5;25672:16;;25609:85;;;:::o;25700:158::-;25758:9;25791:61;25809:42;25818:32;25844:5;25818:32;:::i;:::-;25809:42;:::i;:::-;25791:61;:::i;:::-;25778:74;;25700:158;;;:::o;25864:147::-;25959:45;25998:5;25959:45;:::i;:::-;25954:3;25947:58;25864:147;;:::o;26017:807::-;26266:4;26304:3;26293:9;26289:19;26281:27;;26318:71;26386:1;26375:9;26371:17;26362:6;26318:71;:::i;:::-;26399:72;26467:2;26456:9;26452:18;26443:6;26399:72;:::i;:::-;26481:80;26557:2;26546:9;26542:18;26533:6;26481:80;:::i;:::-;26571;26647:2;26636:9;26632:18;26623:6;26571:80;:::i;:::-;26661:73;26729:3;26718:9;26714:19;26705:6;26661:73;:::i;:::-;26744;26812:3;26801:9;26797:19;26788:6;26744:73;:::i;:::-;26017:807;;;;;;;;;:::o;26830:143::-;26887:5;26918:6;26912:13;26903:22;;26934:33;26961:5;26934:33;:::i;:::-;26830:143;;;;:::o;26979:663::-;27067:6;27075;27083;27132:2;27120:9;27111:7;27107:23;27103:32;27100:119;;;27138:79;;:::i;:::-;27100:119;27258:1;27283:64;27339:7;27330:6;27319:9;27315:22;27283:64;:::i;:::-;27273:74;;27229:128;27396:2;27422:64;27478:7;27469:6;27458:9;27454:22;27422:64;:::i;:::-;27412:74;;27367:129;27535:2;27561:64;27617:7;27608:6;27597:9;27593:22;27561:64;:::i;:::-;27551:74;;27506:129;26979:663;;;;;:::o;27648:180::-;27696:77;27693:1;27686:88;27793:4;27790:1;27783:15;27817:4;27814:1;27807:15;27834:180;27882:77;27879:1;27872:88;27979:4;27976:1;27969:15;28003:4;28000:1;27993:15;28020:114;28087:6;28121:5;28115:12;28105:22;;28020:114;;;:::o;28140:184::-;28239:11;28273:6;28268:3;28261:19;28313:4;28308:3;28304:14;28289:29;;28140:184;;;;:::o;28330:132::-;28397:4;28420:3;28412:11;;28450:4;28445:3;28441:14;28433:22;;28330:132;;;:::o;28468:108::-;28545:24;28563:5;28545:24;:::i;:::-;28540:3;28533:37;28468:108;;:::o;28582:179::-;28651:10;28672:46;28714:3;28706:6;28672:46;:::i;:::-;28750:4;28745:3;28741:14;28727:28;;28582:179;;;;:::o;28767:113::-;28837:4;28869;28864:3;28860:14;28852:22;;28767:113;;;:::o;28916:732::-;29035:3;29064:54;29112:5;29064:54;:::i;:::-;29134:86;29213:6;29208:3;29134:86;:::i;:::-;29127:93;;29244:56;29294:5;29244:56;:::i;:::-;29323:7;29354:1;29339:284;29364:6;29361:1;29358:13;29339:284;;;29440:6;29434:13;29467:63;29526:3;29511:13;29467:63;:::i;:::-;29460:70;;29553:60;29606:6;29553:60;:::i;:::-;29543:70;;29399:224;29386:1;29383;29379:9;29374:14;;29339:284;;;29343:14;29639:3;29632:10;;29040:608;;;28916:732;;;;:::o;29654:831::-;29917:4;29955:3;29944:9;29940:19;29932:27;;29969:71;30037:1;30026:9;30022:17;30013:6;29969:71;:::i;:::-;30050:80;30126:2;30115:9;30111:18;30102:6;30050:80;:::i;:::-;30177:9;30171:4;30167:20;30162:2;30151:9;30147:18;30140:48;30205:108;30308:4;30299:6;30205:108;:::i;:::-;30197:116;;30323:72;30391:2;30380:9;30376:18;30367:6;30323:72;:::i;:::-;30405:73;30473:3;30462:9;30458:19;30449:6;30405:73;:::i;:::-;29654:831;;;;;;;;:::o

Swarm Source

ipfs://ac777536b343e08b65862b59cb1f1ca9bfba41a579413b416711f317c245d794

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.