ETH Price: $2,487.69 (+1.98%)

Token

X Bot (XBOT)
 

Overview

Max Total Supply

5,000,000,000 XBOT

Holders

177

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,136,074.574589873 XBOT

Value
$0.00
0xe6c4f7b40878954e7a4f6c1934957b61808a8651
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Xbot

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-31
*/

//SPDX-License-Identifier: MIT

/*
 https://t.me/Xbot_Trading
 https://twitter.com/XbotTrading
 https://xbot.trading/
*/

pragma solidity 0.8.21;


abstract contract Auth {
    address internal _owner;
    constructor(address creator_Owner) { 
        _owner = creator_Owner; 
    }
    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);
}

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

contract Xbot is IERC20, Auth {
    uint8 private constant _decim    = 9;
    uint256 private constant _totSup = 5000000000 * (10**_decim);
    string private constant _name    = "X Bot";
    string private constant _symbol  = "XBOT";

    uint8 private _buyTaxRate  = 2;
    uint8 private _sellTaxRate = 12;
    address payable private _walletMarketing = payable(0xF696600BaF2abe5356406A41ba7c9121fd9fCC5A); 

    uint256 private _maxTxAmount     = _totSup; 
    uint256 private _maxWalletAmount = _totSup;
    uint256 private _taxSwpMin = _totSup * 10 / 100000;
    uint256 private _taxSwpMax = _totSup * 70 / 100000;
    uint256 private _swapLimit = _taxSwpMin * 71 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFee;
    mapping (address => bool) private _noLimit;

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

    bool private _tradingOpen;

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

    constructor() Auth(msg.sender) {
        _balances[address(_owner)] = _totSup;
        emit Transfer(address(0), address(_owner), _balances[address(_owner)]);

        _noFee[_owner] = true;
        _noFee[address(this)] = true;
        _noFee[_swapRouterAddr] = true;
        _noFee[_walletMarketing] = true;
        _noLimit[_owner] = true;
        _noLimit[address(this)] = true;
        _noLimit[_swapRouterAddr] = true;
        _noLimit[_walletMarketing] = true;
    }

    receive() external payable {}
    
    function totalSupply() external pure override returns (uint256) { return _totSup; }
    function decimals() external pure override returns (uint8) { return _decim; }
    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 spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

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

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddr] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddr] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddr, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP exists");
        require(!_tradingOpen, "trading already open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message");
        require(_balances[address(this)]>0, "No tokens in contract");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance, false);
        _balances[_primaryLP] -= _swapLimit;
        (bool lpAddSucc,) = _primaryLP.call(abi.encodeWithSignature("sync()"));
        require(lpAddSucc, "Failed adding liquidity");
        _isLP[_primaryLP] = lpAddSucc;
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
        address lpTokenRecipient = _owner;
        if ( autoburn ) { lpTokenRecipient = address(0); }
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
    }

    function enableTrading() external onlyOwner {
        _openTrading();
    }

    function _openTrading() internal {
        require(!_tradingOpen, "trading already open");
        _maxTxAmount     = _totSup * 3 / 100; 
        _maxWalletAmount = _totSup * 3 / 100;
        _tradingOpen = true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingOpen) { require(_noFee[sender] && _noLimit[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] && !_noFee[sender]) { _swapTaxAndLiquify(); }
        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;
        _swapLimit += _taxAmount;
        _balances[recipient] = _balances[recipient] + _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_noLimit[sender] && !_noLimit[recipient] ) {
            if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; }
            else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address sender) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_noFee[sender] && _noLimit[sender]) { checkResult = true; } 
        return checkResult;
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        if ( !_tradingOpen || _noFee[sender] || _noFee[recipient] ) { taxAmount = 0; } 
        else if ( _isLP[sender] ) { taxAmount = amount * _buyTaxRate / 100; } 
        else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; }
        return taxAmount;
    }

    function exempt(address wallet) external view returns (bool fees, bool limits) {
        return (_noFee[wallet],_noLimit[wallet]);
    }
    function setExempt(address wallet, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); }
        _noFee[ wallet ] = noFees;
        _noLimit[ wallet ] = noLimits;
    }

    function buyFee() external view returns(uint8) {
        return _buyTaxRate;
    }
    function sellFee() external view returns(uint8) {
        return _sellTaxRate;
    }

    function setFees(uint8 buy, uint8 sell) external onlyOwner {
        require(buy + sell <= 4, "Roundtrip too high");
        _buyTaxRate = buy;
        _sellTaxRate = sell;
    }  

    function marketingWallet() external view returns (address) {
        return _walletMarketing;
    }

    function updateWallets(address marketing) external onlyOwner {
        require(!_isLP[marketing], "LP cannot be tax wallet");
        _walletMarketing = payable(marketing);
        _noFee[marketing] = true;
        _noLimit[marketing] = true;
    }

    function maxWallet() external view returns (uint256) {
        return _maxWalletAmount;
    }
    function maxTransaction() external view returns (uint256) {
        return _maxTxAmount;
    }

    function setLimits(uint16 maxTransactionPermille, uint16 maxWalletPermille) external onlyOwner {
        uint256 newTxAmt = _totSup * maxTransactionPermille / 1000 + 1;
        require(newTxAmt >= _maxTxAmount, "tx too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totSup * maxWalletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmount, "wallet too low");
        _maxWalletAmount = newWalletAmt;
    }

    function setTaxSwap(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
        _taxSwpMin = _totSup * minValue / minDivider;
        _taxSwpMax = _totSup * maxValue / maxDivider;
        require(_taxSwpMax>=_taxSwpMin, "Min/Max error");
        require(_taxSwpMax>_totSup / 100000, "Max too low");
        require(_taxSwpMax<_totSup / 100, "Max too high");
    }


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = _swapLimit;
        if ( _taxTokensAvailable >= _taxSwpMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwpMax ) { _taxTokensAvailable = _taxSwpMax; }
            uint256 _tokensToSwap = _taxTokensAvailable;
            if( _tokensToSwap > 10**_decim ) {
                _balances[address(this)] += _taxTokensAvailable;
                _swapTaxTokensForEth(_tokensToSwap);
                _swapLimit -= _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);
    }

    function manualSwap() external onlyOwner lockTaxSwap {
        _swapTaxTokensForEth(_balances[address(this)]);
        _distributeTaxEth(address(this).balance); 
    }

}

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

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":"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":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exempt","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260025f60146101000a81548160ff021916908360ff160217905550600c5f60156101000a81548160ff021916908360ff16021790555073f696600baf2abe5356406a41ba7c9121fd9fcc5a60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200009e91906200088c565b64012a05f200620000b09190620008dc565b6002556009600a620000c391906200088c565b64012a05f200620000d59190620008dc565b600355620186a0600a6009600a620000ee91906200088c565b64012a05f200620001009190620008dc565b6200010c9190620008dc565b62000118919062000953565b600455620186a060466009600a6200013191906200088c565b64012a05f200620001439190620008dc565b6200014f9190620008dc565b6200015b919062000953565b60055560646047600454620001719190620008dc565b6200017d9190620008dc565b600655737a250d5630b4cf539739df2c5dacb4c659f2488d600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600e60016101000a81548160ff021916908315150217905550348015620001fa575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506009600a6200024c91906200088c565b64012a05f2006200025e9190620008dc565b60075f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516200039a91906200099b565b60405180910390a3600160095f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620009b6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000784578086048111156200075c576200075b620006fa565b5b60018516156200076c5780820291505b80810290506200077c8562000727565b94506200073c565b94509492505050565b5f826200079e576001905062000870565b81620007ad575f905062000870565b8160018114620007c65760028114620007d15762000807565b600191505062000870565b60ff841115620007e657620007e5620006fa565b5b8360020a9150848211156200080057620007ff620006fa565b5b5062000870565b5060208310610133831016604e8410600b8410161715620008415782820a9050838111156200083b576200083a620006fa565b5b62000870565b62000850848484600162000733565b925090508184048111156200086a5762000869620006fa565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620008988262000877565b9150620008a58362000880565b9250620008d47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200078d565b905092915050565b5f620008e88262000877565b9150620008f58362000877565b9250828202620009058162000877565b915082820484148315176200091f576200091e620006fa565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200095f8262000877565b91506200096c8362000877565b9250826200097f576200097e62000926565b5b828204905092915050565b620009958162000877565b82525050565b5f602082019050620009b05f8301846200098a565b92915050565b61414f80620009c45f395ff3fe608060405260043610610184575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063e8078d9411610063578063e8078d941461053f578063f1320af214610549578063f2fde38b14610586578063f8b45b05146105ae5761018b565b8063a9059cbb1461049d578063c3f70b52146104d9578063dd62ed3e146105035761018b565b8063715018a6146103cb57806375f0a874146103e15780638a8c523c1461040b5780638da5cb5b1461042157806395d89b411461044b578063a6097b0a146104755761018b565b8063313ce5671161013d5780634fcd2446116101175780634fcd24461461032957806351bc3c851461035157806357ff135a1461036757806370a082311461038f5761018b565b8063313ce567146102ad578063368f4800146102d757806347062402146102ff5761018b565b806306fdde031461018f578063095ea7b3146101b957806318160ddd146101f557806323b872dd1461021f5780632851a5cf1461025b5780632b14ca56146102835761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105d8565b6040516101b09190612eda565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612f8b565b610615565b6040516101ec9190612fe3565b60405180910390f35b348015610200575f80fd5b50610209610702565b604051610216919061300b565b60405180910390f35b34801561022a575f80fd5b5061024560048036038101906102409190613024565b610726565b6040516102529190612fe3565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c9190613074565b610811565b005b34801561028e575f80fd5b50610297610a15565b6040516102a491906130ba565b60405180910390f35b3480156102b8575f80fd5b506102c1610a2a565b6040516102ce91906130ba565b60405180910390f35b3480156102e2575f80fd5b506102fd60048036038101906102f8919061310a565b610a32565b005b34801561030a575f80fd5b50610313610bef565b60405161032091906130ba565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190613172565b610c04565b005b34801561035c575f80fd5b50610365610d1b565b005b348015610372575f80fd5b5061038d600480360381019061038891906131da565b610e2e565b005b34801561039a575f80fd5b506103b560048036038101906103b09190613074565b611001565b6040516103c2919061300b565b60405180910390f35b3480156103d6575f80fd5b506103df611047565b005b3480156103ec575f80fd5b506103f561114c565b6040516104029190613239565b60405180910390f35b348015610416575f80fd5b5061041f611174565b005b34801561042c575f80fd5b5061043561120b565b6040516104429190613239565b60405180910390f35b348015610456575f80fd5b5061045f611232565b60405161046c9190612eda565b60405180910390f35b348015610480575f80fd5b5061049b6004803603810190610496919061328b565b61126f565b005b3480156104a8575f80fd5b506104c360048036038101906104be9190612f8b565b6114b1565b6040516104d09190612fe3565b60405180910390f35b3480156104e4575f80fd5b506104ed61150d565b6040516104fa919061300b565b60405180910390f35b34801561050e575f80fd5b50610529600480360381019061052491906132ef565b611516565b604051610536919061300b565b60405180910390f35b610547611598565b005b348015610554575f80fd5b5061056f600480360381019061056a9190613074565b611c58565b60405161057d92919061332d565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061338f565b611cf7565b005b3480156105b9575f80fd5b506105c2611dfd565b6040516105cf919061300b565b60405180910390f35b60606040518060400160405280600581526020017f5820426f74000000000000000000000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106f0919061300b565b60405180910390a36001905092915050565b5f6009600a6107119190613516565b64012a05f2006107219190613560565b905090565b5f61073084611e06565b61076f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610766906135eb565b60405180910390fd5b8160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107f69190613609565b92505081905550610808848484611ed8565b90509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461089e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089590613686565b60405180910390fd5b600d5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091f906136ee565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f8060159054906101000a900460ff16905090565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab690613686565b60405180910390fd5b5f60016103e88461ffff166009600a610ad89190613516565b64012a05f200610ae89190613560565b610af29190613560565b610afc9190613739565b610b069190613769565b9050600254811015610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b44906137e6565b60405180910390fd5b806002819055505f60016103e88461ffff166009600a610b6d9190613516565b64012a05f200610b7d9190613560565b610b879190613560565b610b919190613739565b610b9b9190613769565b9050600354811015610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd99061384e565b60405180910390fd5b8060038190555050505050565b5f8060149054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890613686565b60405180910390fd5b60048183610c9f919061386c565b60ff161115610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda906138ea565b60405180910390fd5b815f60146101000a81548160ff021916908360ff160217905550805f60156101000a81548160ff021916908360ff1602179055505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90613686565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550610e0960075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123c4565b610e12476125d7565b5f600e60016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290613686565b60405180910390fd5b8080610ec45750815b15610f5457600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90613952565b60405180910390fd5b5b8160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cb90613686565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f6040516111429190613239565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f890613686565b60405180910390fd5b61120961263f565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f58424f5400000000000000000000000000000000000000000000000000000000815250905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f390613686565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6113189190613516565b64012a05f2006113289190613560565b6113329190613560565b61133c9190613739565b6004819055508063ffffffff168263ffffffff166009600a61135e9190613516565b64012a05f20061136e9190613560565b6113789190613560565b6113829190613739565b60058190555060045460055410156113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c6906139ba565b60405180910390fd5b620186a06009600a6113e19190613516565b64012a05f2006113f19190613560565b6113fb9190613739565b6005541161143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590613a22565b60405180910390fd5b60646009600a61144e9190613516565b64012a05f20061145e9190613560565b6114689190613739565b600554106114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290613a8a565b60405180910390fd5b50505050565b5f6114bb33611e06565b6114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f1906135eb565b60405180910390fd5b611505338484611ed8565b905092915050565b5f600254905090565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90613686565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690613af2565b60405180910390fd5b600e5f9054906101000a900460ff161561171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590613b5a565b60405180910390fd5b5f34118061172b57505f47115b61176a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176190613bc2565b60405180910390fd5b5f60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054116117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e090613c2a565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118779190613c5c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119219190613c5c565b6040518363ffffffff1660e01b815260040161193e929190613c87565b6020604051808303815f875af115801561195a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197e9190613c5c565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a0560075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054475f612722565b60065460075f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a749190613609565b925050819055505f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611b449190613cf2565b5f604051808303815f865af19150503d805f8114611b7d576040519150601f19603f3d011682016040523d82523d5f602084013e611b82565b606091505b5050905080611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd90613d52565b60405180910390fd5b80600d5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505f600e60016101000a81548160ff021916908315150217905550565b5f8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b90613686565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611df29190613dcb565b60405180910390a150565b5f600354905090565b5f805f9050600e5f9054906101000a900460ff1615611e285760019050611ecf565b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ec45750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611ece57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90613e2e565b60405180910390fd5b600e5f9054906101000a900460ff166120365760095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ff65750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c906135eb565b60405180910390fd5b5b600e60019054906101000a900460ff161580156120995750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120ec575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120fa576120f9612808565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561216257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121b957505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612209576121c984848461291e565b612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90613e96565b60405180910390fd5b5b5f612215858585612aa6565b90505f81846122249190613609565b90508360075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461226f9190613609565b60075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160065f8282546122c19190613769565b925050819055508060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123119190613769565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516123af919061300b565b60405180910390a36001925050509392505050565b6123cd81612c6e565b5f600267ffffffffffffffff8111156123e9576123e8613eb4565b5b6040519080825280602002602001820160405280156124175781602001602082028036833780820191505090505b50905030815f8151811061242e5761242d613ee1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f69190613c5c565b8160018151811061250a57612509613ee1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125a6959493929190613ffe565b5f604051808303815f87803b1580156125bd575f80fd5b505af11580156125cf573d5f803e3d5ffd5b505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561263b573d5f803e3d5ffd5b5050565b600e5f9054906101000a900460ff161561268e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268590613b5a565b60405180910390fd5b606460036009600a6126a09190613516565b64012a05f2006126b09190613560565b6126ba9190613560565b6126c49190613739565b600281905550606460036009600a6126dc9190613516565b64012a05f2006126ec9190613560565b6126f69190613560565b6127009190613739565b6003819055506001600e5f6101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612750575f90505b61275984612c6e565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198430875f8087426040518863ffffffff1660e01b81526004016127be96959493929190614056565b60606040518083038185885af11580156127da573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127ff91906140c9565b50505050505050565b6001600e60016101000a81548160ff0219169083151502179055505f600654905060045481101580156128465750600e5f9054906101000a900460ff165b1561290157600554811061285a5760055490505b5f8190506009600a61286c9190613516565b8111156128e8578160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546128bf9190613769565b925050819055506128cf816123c4565b8160065f8282546128e09190613609565b925050819055505b5f4790505f8111156128fe576128fd816125d7565b5b50505b505f600e60016101000a81548160ff021916908315150217905550565b5f8060019050600e5f9054906101000a900460ff1680156129865750600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129d95750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a9b576002548311156129f0575f9050612a9a565b600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612a9057506003548360075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a8e9190613769565b115b15612a99575f90505b5b5b809150509392505050565b5f80600e5f9054906101000a900460ff161580612b09575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612b5a575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b67575f9050612c63565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612be65760645f60149054906101000a900460ff1660ff1684612bd59190613560565b612bdf9190613739565b9050612c62565b600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612c615760645f60159054906101000a900460ff1660ff1684612c549190613560565b612c5e9190613739565b90505b5b5b809150509392505050565b8060085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612e4d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612e44919061300b565b60405180910390a35b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e87578082015181840152602081019050612e6c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612eac82612e50565b612eb68185612e5a565b9350612ec6818560208601612e6a565b612ecf81612e92565b840191505092915050565b5f6020820190508181035f830152612ef28184612ea2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f2782612efe565b9050919050565b612f3781612f1d565b8114612f41575f80fd5b50565b5f81359050612f5281612f2e565b92915050565b5f819050919050565b612f6a81612f58565b8114612f74575f80fd5b50565b5f81359050612f8581612f61565b92915050565b5f8060408385031215612fa157612fa0612efa565b5b5f612fae85828601612f44565b9250506020612fbf85828601612f77565b9150509250929050565b5f8115159050919050565b612fdd81612fc9565b82525050565b5f602082019050612ff65f830184612fd4565b92915050565b61300581612f58565b82525050565b5f60208201905061301e5f830184612ffc565b92915050565b5f805f6060848603121561303b5761303a612efa565b5b5f61304886828701612f44565b935050602061305986828701612f44565b925050604061306a86828701612f77565b9150509250925092565b5f6020828403121561308957613088612efa565b5b5f61309684828501612f44565b91505092915050565b5f60ff82169050919050565b6130b48161309f565b82525050565b5f6020820190506130cd5f8301846130ab565b92915050565b5f61ffff82169050919050565b6130e9816130d3565b81146130f3575f80fd5b50565b5f81359050613104816130e0565b92915050565b5f80604083850312156131205761311f612efa565b5b5f61312d858286016130f6565b925050602061313e858286016130f6565b9150509250929050565b6131518161309f565b811461315b575f80fd5b50565b5f8135905061316c81613148565b92915050565b5f806040838503121561318857613187612efa565b5b5f6131958582860161315e565b92505060206131a68582860161315e565b9150509250929050565b6131b981612fc9565b81146131c3575f80fd5b50565b5f813590506131d4816131b0565b92915050565b5f805f606084860312156131f1576131f0612efa565b5b5f6131fe86828701612f44565b935050602061320f868287016131c6565b9250506040613220868287016131c6565b9150509250925092565b61323381612f1d565b82525050565b5f60208201905061324c5f83018461322a565b92915050565b5f63ffffffff82169050919050565b61326a81613252565b8114613274575f80fd5b50565b5f8135905061328581613261565b92915050565b5f805f80608085870312156132a3576132a2612efa565b5b5f6132b087828801613277565b94505060206132c187828801613277565b93505060406132d287828801613277565b92505060606132e387828801613277565b91505092959194509250565b5f806040838503121561330557613304612efa565b5b5f61331285828601612f44565b925050602061332385828601612f44565b9150509250929050565b5f6040820190506133405f830185612fd4565b61334d6020830184612fd4565b9392505050565b5f61335e82612efe565b9050919050565b61336e81613354565b8114613378575f80fd5b50565b5f8135905061338981613365565b92915050565b5f602082840312156133a4576133a3612efa565b5b5f6133b18482850161337b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561343c57808604811115613418576134176133ba565b5b60018516156134275780820291505b8081029050613435856133e7565b94506133fc565b94509492505050565b5f82613454576001905061350f565b81613461575f905061350f565b81600181146134775760028114613481576134b0565b600191505061350f565b60ff841115613493576134926133ba565b5b8360020a9150848211156134aa576134a96133ba565b5b5061350f565b5060208310610133831016604e8410600b84101617156134e55782820a9050838111156134e0576134df6133ba565b5b61350f565b6134f284848460016133f3565b92509050818404811115613509576135086133ba565b5b81810290505b9392505050565b5f61352082612f58565b915061352b8361309f565b92506135587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613445565b905092915050565b5f61356a82612f58565b915061357583612f58565b925082820261358381612f58565b9150828204841483151761359a576135996133ba565b5b5092915050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f6135d5601083612e5a565b91506135e0826135a1565b602082019050919050565b5f6020820190508181035f830152613602816135c9565b9050919050565b5f61361382612f58565b915061361e83612f58565b9250828203905081811115613636576136356133ba565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732e000000000000005f82015250565b5f613670601983612e5a565b915061367b8261363c565b602082019050919050565b5f6020820190508181035f83015261369d81613664565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f6136d8601783612e5a565b91506136e3826136a4565b602082019050919050565b5f6020820190508181035f830152613705816136cc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61374382612f58565b915061374e83612f58565b92508261375e5761375d61370c565b5b828204905092915050565b5f61377382612f58565b915061377e83612f58565b9250828201905080821115613796576137956133ba565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f6137d0600a83612e5a565b91506137db8261379c565b602082019050919050565b5f6020820190508181035f8301526137fd816137c4565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613838600e83612e5a565b915061384382613804565b602082019050919050565b5f6020820190508181035f8301526138658161382c565b9050919050565b5f6138768261309f565b91506138818361309f565b9250828201905060ff81111561389a576138996133ba565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f6138d4601283612e5a565b91506138df826138a0565b602082019050919050565b5f6020820190508181035f830152613901816138c8565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f61393c601083612e5a565b915061394782613908565b602082019050919050565b5f6020820190508181035f83015261396981613930565b9050919050565b7f4d696e2f4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f6139a4600d83612e5a565b91506139af82613970565b602082019050919050565b5f6020820190508181035f8301526139d181613998565b9050919050565b7f4d617820746f6f206c6f770000000000000000000000000000000000000000005f82015250565b5f613a0c600b83612e5a565b9150613a17826139d8565b602082019050919050565b5f6020820190508181035f830152613a3981613a00565b9050919050565b7f4d617820746f6f206869676800000000000000000000000000000000000000005f82015250565b5f613a74600c83612e5a565b9150613a7f82613a40565b602082019050919050565b5f6020820190508181035f830152613aa181613a68565b9050919050565b7f4c502065786973747300000000000000000000000000000000000000000000005f82015250565b5f613adc600983612e5a565b9150613ae782613aa8565b602082019050919050565b5f6020820190508181035f830152613b0981613ad0565b9050919050565b7f74726164696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f613b44601483612e5a565b9150613b4f82613b10565b602082019050919050565b5f6020820190508181035f830152613b7181613b38565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000005f82015250565b5f613bac601d83612e5a565b9150613bb782613b78565b602082019050919050565b5f6020820190508181035f830152613bd981613ba0565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e747261637400000000000000000000005f82015250565b5f613c14601583612e5a565b9150613c1f82613be0565b602082019050919050565b5f6020820190508181035f830152613c4181613c08565b9050919050565b5f81519050613c5681612f2e565b92915050565b5f60208284031215613c7157613c70612efa565b5b5f613c7e84828501613c48565b91505092915050565b5f604082019050613c9a5f83018561322a565b613ca7602083018461322a565b9392505050565b5f81519050919050565b5f81905092915050565b5f613ccc82613cae565b613cd68185613cb8565b9350613ce6818560208601612e6a565b80840191505092915050565b5f613cfd8284613cc2565b915081905092915050565b7f4661696c656420616464696e67206c69717569646974790000000000000000005f82015250565b5f613d3c601783612e5a565b9150613d4782613d08565b602082019050919050565b5f6020820190508181035f830152613d6981613d30565b9050919050565b5f819050919050565b5f613d93613d8e613d8984612efe565b613d70565b612efe565b9050919050565b5f613da482613d79565b9050919050565b5f613db582613d9a565b9050919050565b613dc581613dab565b82525050565b5f602082019050613dde5f830184613dbc565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000005f82015250565b5f613e18601d83612e5a565b9150613e2382613de4565b602082019050919050565b5f6020820190508181035f830152613e4581613e0c565b9050919050565b7f54582065786365656473206c696d6974730000000000000000000000000000005f82015250565b5f613e80601183612e5a565b9150613e8b82613e4c565b602082019050919050565b5f6020820190508181035f830152613ead81613e74565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613f31613f2c613f2784613f0e565b613d70565b612f58565b9050919050565b613f4181613f17565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f7981612f1d565b82525050565b5f613f8a8383613f70565b60208301905092915050565b5f602082019050919050565b5f613fac82613f47565b613fb68185613f51565b9350613fc183613f61565b805f5b83811015613ff1578151613fd88882613f7f565b9750613fe383613f96565b925050600181019050613fc4565b5085935050505092915050565b5f60a0820190506140115f830188612ffc565b61401e6020830187613f38565b81810360408301526140308186613fa2565b905061403f606083018561322a565b61404c6080830184612ffc565b9695505050505050565b5f60c0820190506140695f83018961322a565b6140766020830188612ffc565b6140836040830187613f38565b6140906060830186613f38565b61409d608083018561322a565b6140aa60a0830184612ffc565b979650505050505050565b5f815190506140c381612f61565b92915050565b5f805f606084860312156140e0576140df612efa565b5b5f6140ed868287016140b5565b93505060206140fe868287016140b5565b925050604061410f868287016140b5565b915050925092509256fea2646970667358221220a7f657b5405072147a1112c945173233484a9dc691183e7529d34d90a743d07064736f6c63430008150033

Deployed Bytecode

0x608060405260043610610184575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063e8078d9411610063578063e8078d941461053f578063f1320af214610549578063f2fde38b14610586578063f8b45b05146105ae5761018b565b8063a9059cbb1461049d578063c3f70b52146104d9578063dd62ed3e146105035761018b565b8063715018a6146103cb57806375f0a874146103e15780638a8c523c1461040b5780638da5cb5b1461042157806395d89b411461044b578063a6097b0a146104755761018b565b8063313ce5671161013d5780634fcd2446116101175780634fcd24461461032957806351bc3c851461035157806357ff135a1461036757806370a082311461038f5761018b565b8063313ce567146102ad578063368f4800146102d757806347062402146102ff5761018b565b806306fdde031461018f578063095ea7b3146101b957806318160ddd146101f557806323b872dd1461021f5780632851a5cf1461025b5780632b14ca56146102835761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105d8565b6040516101b09190612eda565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612f8b565b610615565b6040516101ec9190612fe3565b60405180910390f35b348015610200575f80fd5b50610209610702565b604051610216919061300b565b60405180910390f35b34801561022a575f80fd5b5061024560048036038101906102409190613024565b610726565b6040516102529190612fe3565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c9190613074565b610811565b005b34801561028e575f80fd5b50610297610a15565b6040516102a491906130ba565b60405180910390f35b3480156102b8575f80fd5b506102c1610a2a565b6040516102ce91906130ba565b60405180910390f35b3480156102e2575f80fd5b506102fd60048036038101906102f8919061310a565b610a32565b005b34801561030a575f80fd5b50610313610bef565b60405161032091906130ba565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190613172565b610c04565b005b34801561035c575f80fd5b50610365610d1b565b005b348015610372575f80fd5b5061038d600480360381019061038891906131da565b610e2e565b005b34801561039a575f80fd5b506103b560048036038101906103b09190613074565b611001565b6040516103c2919061300b565b60405180910390f35b3480156103d6575f80fd5b506103df611047565b005b3480156103ec575f80fd5b506103f561114c565b6040516104029190613239565b60405180910390f35b348015610416575f80fd5b5061041f611174565b005b34801561042c575f80fd5b5061043561120b565b6040516104429190613239565b60405180910390f35b348015610456575f80fd5b5061045f611232565b60405161046c9190612eda565b60405180910390f35b348015610480575f80fd5b5061049b6004803603810190610496919061328b565b61126f565b005b3480156104a8575f80fd5b506104c360048036038101906104be9190612f8b565b6114b1565b6040516104d09190612fe3565b60405180910390f35b3480156104e4575f80fd5b506104ed61150d565b6040516104fa919061300b565b60405180910390f35b34801561050e575f80fd5b50610529600480360381019061052491906132ef565b611516565b604051610536919061300b565b60405180910390f35b610547611598565b005b348015610554575f80fd5b5061056f600480360381019061056a9190613074565b611c58565b60405161057d92919061332d565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061338f565b611cf7565b005b3480156105b9575f80fd5b506105c2611dfd565b6040516105cf919061300b565b60405180910390f35b60606040518060400160405280600581526020017f5820426f74000000000000000000000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106f0919061300b565b60405180910390a36001905092915050565b5f6009600a6107119190613516565b64012a05f2006107219190613560565b905090565b5f61073084611e06565b61076f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610766906135eb565b60405180910390fd5b8160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107f69190613609565b92505081905550610808848484611ed8565b90509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461089e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089590613686565b60405180910390fd5b600d5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091f906136ee565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f8060159054906101000a900460ff16905090565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab690613686565b60405180910390fd5b5f60016103e88461ffff166009600a610ad89190613516565b64012a05f200610ae89190613560565b610af29190613560565b610afc9190613739565b610b069190613769565b9050600254811015610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b44906137e6565b60405180910390fd5b806002819055505f60016103e88461ffff166009600a610b6d9190613516565b64012a05f200610b7d9190613560565b610b879190613560565b610b919190613739565b610b9b9190613769565b9050600354811015610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd99061384e565b60405180910390fd5b8060038190555050505050565b5f8060149054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890613686565b60405180910390fd5b60048183610c9f919061386c565b60ff161115610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda906138ea565b60405180910390fd5b815f60146101000a81548160ff021916908360ff160217905550805f60156101000a81548160ff021916908360ff1602179055505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90613686565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550610e0960075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123c4565b610e12476125d7565b5f600e60016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290613686565b60405180910390fd5b8080610ec45750815b15610f5457600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90613952565b60405180910390fd5b5b8160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cb90613686565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f6040516111429190613239565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f890613686565b60405180910390fd5b61120961263f565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f58424f5400000000000000000000000000000000000000000000000000000000815250905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f390613686565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6113189190613516565b64012a05f2006113289190613560565b6113329190613560565b61133c9190613739565b6004819055508063ffffffff168263ffffffff166009600a61135e9190613516565b64012a05f20061136e9190613560565b6113789190613560565b6113829190613739565b60058190555060045460055410156113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c6906139ba565b60405180910390fd5b620186a06009600a6113e19190613516565b64012a05f2006113f19190613560565b6113fb9190613739565b6005541161143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590613a22565b60405180910390fd5b60646009600a61144e9190613516565b64012a05f20061145e9190613560565b6114689190613739565b600554106114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290613a8a565b60405180910390fd5b50505050565b5f6114bb33611e06565b6114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f1906135eb565b60405180910390fd5b611505338484611ed8565b905092915050565b5f600254905090565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90613686565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690613af2565b60405180910390fd5b600e5f9054906101000a900460ff161561171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590613b5a565b60405180910390fd5b5f34118061172b57505f47115b61176a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176190613bc2565b60405180910390fd5b5f60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054116117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e090613c2a565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118779190613c5c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119219190613c5c565b6040518363ffffffff1660e01b815260040161193e929190613c87565b6020604051808303815f875af115801561195a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197e9190613c5c565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a0560075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054475f612722565b60065460075f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a749190613609565b925050819055505f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611b449190613cf2565b5f604051808303815f865af19150503d805f8114611b7d576040519150601f19603f3d011682016040523d82523d5f602084013e611b82565b606091505b5050905080611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd90613d52565b60405180910390fd5b80600d5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505f600e60016101000a81548160ff021916908315150217905550565b5f8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b90613686565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611df29190613dcb565b60405180910390a150565b5f600354905090565b5f805f9050600e5f9054906101000a900460ff1615611e285760019050611ecf565b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ec45750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611ece57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90613e2e565b60405180910390fd5b600e5f9054906101000a900460ff166120365760095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ff65750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c906135eb565b60405180910390fd5b5b600e60019054906101000a900460ff161580156120995750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120ec575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120fa576120f9612808565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561216257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121b957505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612209576121c984848461291e565b612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90613e96565b60405180910390fd5b5b5f612215858585612aa6565b90505f81846122249190613609565b90508360075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461226f9190613609565b60075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160065f8282546122c19190613769565b925050819055508060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123119190613769565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516123af919061300b565b60405180910390a36001925050509392505050565b6123cd81612c6e565b5f600267ffffffffffffffff8111156123e9576123e8613eb4565b5b6040519080825280602002602001820160405280156124175781602001602082028036833780820191505090505b50905030815f8151811061242e5761242d613ee1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f69190613c5c565b8160018151811061250a57612509613ee1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125a6959493929190613ffe565b5f604051808303815f87803b1580156125bd575f80fd5b505af11580156125cf573d5f803e3d5ffd5b505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561263b573d5f803e3d5ffd5b5050565b600e5f9054906101000a900460ff161561268e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268590613b5a565b60405180910390fd5b606460036009600a6126a09190613516565b64012a05f2006126b09190613560565b6126ba9190613560565b6126c49190613739565b600281905550606460036009600a6126dc9190613516565b64012a05f2006126ec9190613560565b6126f69190613560565b6127009190613739565b6003819055506001600e5f6101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612750575f90505b61275984612c6e565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198430875f8087426040518863ffffffff1660e01b81526004016127be96959493929190614056565b60606040518083038185885af11580156127da573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127ff91906140c9565b50505050505050565b6001600e60016101000a81548160ff0219169083151502179055505f600654905060045481101580156128465750600e5f9054906101000a900460ff165b1561290157600554811061285a5760055490505b5f8190506009600a61286c9190613516565b8111156128e8578160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546128bf9190613769565b925050819055506128cf816123c4565b8160065f8282546128e09190613609565b925050819055505b5f4790505f8111156128fe576128fd816125d7565b5b50505b505f600e60016101000a81548160ff021916908315150217905550565b5f8060019050600e5f9054906101000a900460ff1680156129865750600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129d95750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a9b576002548311156129f0575f9050612a9a565b600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612a9057506003548360075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a8e9190613769565b115b15612a99575f90505b5b5b809150509392505050565b5f80600e5f9054906101000a900460ff161580612b09575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612b5a575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b67575f9050612c63565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612be65760645f60149054906101000a900460ff1660ff1684612bd59190613560565b612bdf9190613739565b9050612c62565b600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612c615760645f60159054906101000a900460ff1660ff1684612c549190613560565b612c5e9190613739565b90505b5b5b809150509392505050565b8060085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612e4d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612e44919061300b565b60405180910390a35b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e87578082015181840152602081019050612e6c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612eac82612e50565b612eb68185612e5a565b9350612ec6818560208601612e6a565b612ecf81612e92565b840191505092915050565b5f6020820190508181035f830152612ef28184612ea2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f2782612efe565b9050919050565b612f3781612f1d565b8114612f41575f80fd5b50565b5f81359050612f5281612f2e565b92915050565b5f819050919050565b612f6a81612f58565b8114612f74575f80fd5b50565b5f81359050612f8581612f61565b92915050565b5f8060408385031215612fa157612fa0612efa565b5b5f612fae85828601612f44565b9250506020612fbf85828601612f77565b9150509250929050565b5f8115159050919050565b612fdd81612fc9565b82525050565b5f602082019050612ff65f830184612fd4565b92915050565b61300581612f58565b82525050565b5f60208201905061301e5f830184612ffc565b92915050565b5f805f6060848603121561303b5761303a612efa565b5b5f61304886828701612f44565b935050602061305986828701612f44565b925050604061306a86828701612f77565b9150509250925092565b5f6020828403121561308957613088612efa565b5b5f61309684828501612f44565b91505092915050565b5f60ff82169050919050565b6130b48161309f565b82525050565b5f6020820190506130cd5f8301846130ab565b92915050565b5f61ffff82169050919050565b6130e9816130d3565b81146130f3575f80fd5b50565b5f81359050613104816130e0565b92915050565b5f80604083850312156131205761311f612efa565b5b5f61312d858286016130f6565b925050602061313e858286016130f6565b9150509250929050565b6131518161309f565b811461315b575f80fd5b50565b5f8135905061316c81613148565b92915050565b5f806040838503121561318857613187612efa565b5b5f6131958582860161315e565b92505060206131a68582860161315e565b9150509250929050565b6131b981612fc9565b81146131c3575f80fd5b50565b5f813590506131d4816131b0565b92915050565b5f805f606084860312156131f1576131f0612efa565b5b5f6131fe86828701612f44565b935050602061320f868287016131c6565b9250506040613220868287016131c6565b9150509250925092565b61323381612f1d565b82525050565b5f60208201905061324c5f83018461322a565b92915050565b5f63ffffffff82169050919050565b61326a81613252565b8114613274575f80fd5b50565b5f8135905061328581613261565b92915050565b5f805f80608085870312156132a3576132a2612efa565b5b5f6132b087828801613277565b94505060206132c187828801613277565b93505060406132d287828801613277565b92505060606132e387828801613277565b91505092959194509250565b5f806040838503121561330557613304612efa565b5b5f61331285828601612f44565b925050602061332385828601612f44565b9150509250929050565b5f6040820190506133405f830185612fd4565b61334d6020830184612fd4565b9392505050565b5f61335e82612efe565b9050919050565b61336e81613354565b8114613378575f80fd5b50565b5f8135905061338981613365565b92915050565b5f602082840312156133a4576133a3612efa565b5b5f6133b18482850161337b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561343c57808604811115613418576134176133ba565b5b60018516156134275780820291505b8081029050613435856133e7565b94506133fc565b94509492505050565b5f82613454576001905061350f565b81613461575f905061350f565b81600181146134775760028114613481576134b0565b600191505061350f565b60ff841115613493576134926133ba565b5b8360020a9150848211156134aa576134a96133ba565b5b5061350f565b5060208310610133831016604e8410600b84101617156134e55782820a9050838111156134e0576134df6133ba565b5b61350f565b6134f284848460016133f3565b92509050818404811115613509576135086133ba565b5b81810290505b9392505050565b5f61352082612f58565b915061352b8361309f565b92506135587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613445565b905092915050565b5f61356a82612f58565b915061357583612f58565b925082820261358381612f58565b9150828204841483151761359a576135996133ba565b5b5092915050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f6135d5601083612e5a565b91506135e0826135a1565b602082019050919050565b5f6020820190508181035f830152613602816135c9565b9050919050565b5f61361382612f58565b915061361e83612f58565b9250828203905081811115613636576136356133ba565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732e000000000000005f82015250565b5f613670601983612e5a565b915061367b8261363c565b602082019050919050565b5f6020820190508181035f83015261369d81613664565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f6136d8601783612e5a565b91506136e3826136a4565b602082019050919050565b5f6020820190508181035f830152613705816136cc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61374382612f58565b915061374e83612f58565b92508261375e5761375d61370c565b5b828204905092915050565b5f61377382612f58565b915061377e83612f58565b9250828201905080821115613796576137956133ba565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f6137d0600a83612e5a565b91506137db8261379c565b602082019050919050565b5f6020820190508181035f8301526137fd816137c4565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613838600e83612e5a565b915061384382613804565b602082019050919050565b5f6020820190508181035f8301526138658161382c565b9050919050565b5f6138768261309f565b91506138818361309f565b9250828201905060ff81111561389a576138996133ba565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f6138d4601283612e5a565b91506138df826138a0565b602082019050919050565b5f6020820190508181035f830152613901816138c8565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f61393c601083612e5a565b915061394782613908565b602082019050919050565b5f6020820190508181035f83015261396981613930565b9050919050565b7f4d696e2f4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f6139a4600d83612e5a565b91506139af82613970565b602082019050919050565b5f6020820190508181035f8301526139d181613998565b9050919050565b7f4d617820746f6f206c6f770000000000000000000000000000000000000000005f82015250565b5f613a0c600b83612e5a565b9150613a17826139d8565b602082019050919050565b5f6020820190508181035f830152613a3981613a00565b9050919050565b7f4d617820746f6f206869676800000000000000000000000000000000000000005f82015250565b5f613a74600c83612e5a565b9150613a7f82613a40565b602082019050919050565b5f6020820190508181035f830152613aa181613a68565b9050919050565b7f4c502065786973747300000000000000000000000000000000000000000000005f82015250565b5f613adc600983612e5a565b9150613ae782613aa8565b602082019050919050565b5f6020820190508181035f830152613b0981613ad0565b9050919050565b7f74726164696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f613b44601483612e5a565b9150613b4f82613b10565b602082019050919050565b5f6020820190508181035f830152613b7181613b38565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000005f82015250565b5f613bac601d83612e5a565b9150613bb782613b78565b602082019050919050565b5f6020820190508181035f830152613bd981613ba0565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e747261637400000000000000000000005f82015250565b5f613c14601583612e5a565b9150613c1f82613be0565b602082019050919050565b5f6020820190508181035f830152613c4181613c08565b9050919050565b5f81519050613c5681612f2e565b92915050565b5f60208284031215613c7157613c70612efa565b5b5f613c7e84828501613c48565b91505092915050565b5f604082019050613c9a5f83018561322a565b613ca7602083018461322a565b9392505050565b5f81519050919050565b5f81905092915050565b5f613ccc82613cae565b613cd68185613cb8565b9350613ce6818560208601612e6a565b80840191505092915050565b5f613cfd8284613cc2565b915081905092915050565b7f4661696c656420616464696e67206c69717569646974790000000000000000005f82015250565b5f613d3c601783612e5a565b9150613d4782613d08565b602082019050919050565b5f6020820190508181035f830152613d6981613d30565b9050919050565b5f819050919050565b5f613d93613d8e613d8984612efe565b613d70565b612efe565b9050919050565b5f613da482613d79565b9050919050565b5f613db582613d9a565b9050919050565b613dc581613dab565b82525050565b5f602082019050613dde5f830184613dbc565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000005f82015250565b5f613e18601d83612e5a565b9150613e2382613de4565b602082019050919050565b5f6020820190508181035f830152613e4581613e0c565b9050919050565b7f54582065786365656473206c696d6974730000000000000000000000000000005f82015250565b5f613e80601183612e5a565b9150613e8b82613e4c565b602082019050919050565b5f6020820190508181035f830152613ead81613e74565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613f31613f2c613f2784613f0e565b613d70565b612f58565b9050919050565b613f4181613f17565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f7981612f1d565b82525050565b5f613f8a8383613f70565b60208301905092915050565b5f602082019050919050565b5f613fac82613f47565b613fb68185613f51565b9350613fc183613f61565b805f5b83811015613ff1578151613fd88882613f7f565b9750613fe383613f96565b925050600181019050613fc4565b5085935050505092915050565b5f60a0820190506140115f830188612ffc565b61401e6020830187613f38565b81810360408301526140308186613fa2565b905061403f606083018561322a565b61404c6080830184612ffc565b9695505050505050565b5f60c0820190506140695f83018961322a565b6140766020830188612ffc565b6140836040830187613f38565b6140906060830186613f38565b61409d608083018561322a565b6140aa60a0830184612ffc565b979650505050505050565b5f815190506140c381612f61565b92915050565b5f805f606084860312156140e0576140df612efa565b5b5f6140ed868287016140b5565b93505060206140fe868287016140b5565b925050604061410f868287016140b5565b915050925092509256fea2646970667358221220a7f657b5405072147a1112c945173233484a9dc691183e7529d34d90a743d07064736f6c63430008150033

Deployed Bytecode Sourcemap

1713:10818:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3878:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4216:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3616:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4669:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9793:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9398:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3705:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10259:452;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9308:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9492:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12356:170;;;;;;;;;;;;;:::i;:::-;;9052:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3964:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;662:137;;;;;;;;;;;;;:::i;:::-;;9684:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6453:77;;;;;;;;;;;;;:::i;:::-;;412:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3788:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10719:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4440:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10155:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4075:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5278:776;;;:::i;:::-;;8908:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;499:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10054:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3878:80;3926:13;3950:5;;;;;;;;;;;;;;;;;3943:12;;3878:80;:::o;4216:216::-;4291:4;4343:6;4308:11;:23;4320:10;4308:23;;;;;;;;;;;;;;;:32;4332:7;4308:32;;;;;;;;;;;;;;;:41;;;;4386:7;4365:37;;4374:10;4365:37;;;4395:6;4365:37;;;;;;:::i;:::-;;;;;;;;4420:4;4413:11;;4216:216;;;;:::o;3616:83::-;3671:7;1785:1;1842:2;:10;;;;:::i;:::-;1828;:25;;;;:::i;:::-;3682:14;;3616:83;:::o;4669:285::-;4769:4;4794:25;4812:6;4794:17;:25::i;:::-;4786:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;4886:6;4851:11;:19;4863:6;4851:19;;;;;;;;;;;;;;;:31;4871:10;4851:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;4910:36;4920:6;4928:9;4939:6;4910:9;:36::i;:::-;4903:43;;4669:285;;;;;:::o;9793:253::-;358:6;;;;;;;;;;344:20;;:10;:20;;;336:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9874:5:::1;:16;9880:9;9874:16;;;;;;;;;;;;;;;;;;;;;;;;;9873:17;9865:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9956:9;9929:16;;:37;;;;;;;;;;;;;;;;;;9997:4;9977:6;:17;9984:9;9977:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;10034:4;10012:8;:19;10021:9;10012:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;9793:253:::0;:::o;9398:86::-;9439:5;9464:12;;;;;;;;;;;9457:19;;9398:86;:::o;3705:77::-;3757:5;1785:1;3766:13;;3705:77;:::o;10259:452::-;358:6;;;;;;;;;;344:20;;:10;:20;;;336:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10365:16:::1;10426:1;10419:4;10394:22;10384:32;;1785:1;1842:2;:10;;;;:::i;:::-;1828;:25;;;;:::i;:::-;10384:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;10365:62;;10458:12;;10446:8;:24;;10438:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10511:8;10496:12;:23;;;;10530:20;10590:1;10583:4;10563:17;10553:27;;1785:1;1842:2;:10;;;;:::i;:::-;1828;:25;;;;:::i;:::-;10553:27;;;;:::i;:::-;:34;;;;:::i;:::-;:38;;;;:::i;:::-;10530:61;;10626:16;;10610:12;:32;;10602:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;10691:12;10672:16;:31;;;;10354:357;;10259:452:::0;;:::o;9308:84::-;9348:5;9373:11;;;;;;;;;;;9366:18;;9308:84;:::o;9492:182::-;358:6;;;;;;;;;;344:20;;:10;:20;;;336:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9584:1:::1;9576:4;9570:3;:10;;;;:::i;:::-;:15;;;;9562:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9633:3;9619:11;;:17;;;;;;;;;;;;;;;;;;9662:4;9647:12;;:19;;;;;;;;;;;;;;;;;;9492:182:::0;;:::o;12356:170::-;358:6;;;;;;;;;;344:20;;:10;:20;;;336:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;3027:4:::1;3014:10;;:17;;;;;;;;;;;;;;;;;;12420:46:::2;12441:9;:24;12459:4;12441:24;;;;;;;;;;;;;;;;12420:20;:46::i;:::-;12477:40;12495:21;12477:17;:40::i;:::-;3060:5:::1;3047:10;;:18;;;;;;;;;;;;;;;;;;12356:170::o:0;9052:248::-;358:6;;;;;;;;;;344:20;;:10;:20;;;336:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9149:8:::1;:18;;;;9161:6;9149:18;9145:72;;;9180:5;:13;9186:6;9180:13;;;;;;;;;;;;;;;;;;;;;;;;;9179:14;9171:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9145:72;9246:6;9227;:16;9235:6;9227:16;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;9284:8;9263;:18;9273:6;9263:18;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;9052:248:::0;;;:::o;3964:105::-;4030:7;4048:9;:18;4058:7;4048:18;;;;;;;;;;;;;;;;4041:25;;3964:105;;;:::o;662:137::-;358:6;;;;;;;;;;344:20;;:10;:20;;;336:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;739:1:::1;722:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;758:32;787:1;758:32;;;;;;:::i;:::-;;;;;;;;662:137::o:0;9684:101::-;9734:7;9761:16;;;;;;;;;;;9754:23;;9684:101;:::o;6453:77::-;358:6;;;;;;;;;;344:20;;:10;:20;;;336:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6508:14:::1;:12;:14::i;:::-;6453:77::o:0;412:81::-;450:7;478:6;;;;;;;;;;;471:13;;412:81;:::o;3788:84::-;3838:13;3862:7;;;;;;;;;;;;;;;;;3855:14;;3788:84;:::o;10719:410::-;358:6;;;;;;;;;;344:20;;:10;:20;;;336:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10875:10:::1;10854:31;;10864:8;10854:18;;1785:1;1842:2;:10;;;;:::i;:::-;1828;:25;;;;:::i;:::-;10854:18;;;;:::i;:::-;:31;;;;:::i;:::-;10841:10;:44;;;;10930:10;10909:31;;10919:8;10909:18;;1785:1;1842:2;:10;;;;:::i;:::-;1828;:25;;;;:::i;:::-;10909:18;;;;:::i;:::-;:31;;;;:::i;:::-;10896:10;:44;;;;10971:10;;10959;;:22;;10951:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11039:6;1785:1;1842:2;:10;;;;:::i;:::-;1828;:25;;;;:::i;:::-;11029:16;;;;:::i;:::-;11018:10;;:27;11010:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;11101:3;1785:1;1842:2;:10;;;;:::i;:::-;1828;:25;;;;:::i;:::-;11091:13;;;;:::i;:::-;11080:10;;:24;11072:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10719:410:::0;;;;:::o;4440:221::-;4520:4;4545:29;4563:10;4545:17;:29::i;:::-;4537:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;4613:40;4623:10;4635:9;4646:6;4613:9;:40::i;:::-;4606:47;;4440:221;;;;:::o;10155:96::-;10204:7;10231:12;;10224:19;;10155:96;:::o;4075:133::-;4159:7;4177:11;:19;4189:6;4177:19;;;;;;;;;;;;;;;:28;4197:7;4177:28;;;;;;;;;;;;;;;;4170:35;;4075:133;;;;:::o;5278:776::-;358:6;;;;;;;;;;344:20;;:10;:20;;;336:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;3027:4:::1;3014:10;;:17;;;;;;;;;;;;;;;;;;5382:1:::2;5360:24;;:10;;;;;;;;;;;:24;;;5352:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;5418:12;;;;;;;;;;;5417:13;5409:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;5486:1;5474:9;:13;:40;;;;5513:1;5491:21;:23;5474:40;5466:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;5592:1;5567:9;:24;5585:4;5567:24;;;;;;;;;;;;;;;;:26;5559:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5661:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5643:58;;;5710:4;5717:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5643:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5630:10;;:113;;;;;;;;;;;;;;;;;;5754:69;5768:9;:24;5786:4;5768:24;;;;;;;;;;;;;;;;5794:21;5817:5;5754:13;:69::i;:::-;5859:10;;5834:9;:21;5844:10;;;;;;;;;;;5834:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;5881:14;5900:10;;;;;;;;;;;:15;;5916:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5900:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5880:70;;;5969:9;5961:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;6037:9;6017:5;:17;6023:10;;;;;;;;;;;6017:17;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;5341:713;3060:5:::1;3047:10;;:18;;;;;;;;;;;;;;;;;;5278:776::o:0;8908:138::-;8963:9;8974:11;9006:6;:14;9013:6;9006:14;;;;;;;;;;;;;;;;;;;;;;;;;9021:8;:16;9030:6;9021:16;;;;;;;;;;;;;;;;;;;;;;;;;8998:40;;;;8908:138;;;:::o;499:157::-;358:6;;;;;;;;;;344:20;;:10;:20;;;336:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;592:8:::1;583:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;617:30;638:8;617:30;;;;;;:::i;:::-;;;;;;;;499:157:::0;:::o;10054:95::-;10098:7;10125:16;;10118:23;;10054:95;:::o;8196:275::-;8261:4;8277:16;8296:5;8277:24;;8317:12;;;;;;;;;;;8312:122;;;8348:4;8334:18;;8312:122;;;8375:6;:14;8382:6;8375:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;8393:8;:16;8402:6;8393:16;;;;;;;;;;;;;;;;;;;;;;;;;8375:34;8371:63;;;8427:4;8413:18;;8371:63;8312:122;8452:11;8445:18;;;8196:275;;;:::o;6769:918::-;6857:4;6900:1;6882:20;;:6;:20;;;6874:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;6952:12;;;;;;;;;;;6947:87;;6976:6;:14;6983:6;6976:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;6994:8;:16;7003:6;6994:16;;;;;;;;;;;;;;;;;;;;;;;;;6976:34;6968:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6947:87;7050:10;;;;;;;;;;;7049:11;:31;;;;;7064:5;:16;7070:9;7064:16;;;;;;;;;;;;;;;;;;;;;;;;;7049:31;:50;;;;;7085:6;:14;7092:6;7085:14;;;;;;;;;;;;;;;;;;;;;;;;;7084:15;7049:50;7044:82;;;7103:20;:18;:20::i;:::-;7044:82;7159:4;7141:23;;:6;:23;;;;:53;;;;;7189:4;7168:26;;:9;:26;;;;7141:53;:73;;;;;7208:6;;;;;;;;;;7198:16;;:6;:16;;;;7141:73;7136:179;;;7241:39;7254:6;7262:9;7273:6;7241:12;:39::i;:::-;7233:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7136:179;7325:18;7346:40;7360:6;7368:9;7379:6;7346:13;:40::i;:::-;7325:61;;7397:23;7432:10;7423:6;:19;;;;:::i;:::-;7397:45;;7493:6;7473:9;:17;7483:6;7473:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;7453:9;:17;7463:6;7453:17;;;;;;;;;;;;;;;:46;;;;7524:10;7510;;:24;;;;;;;:::i;:::-;;;;;;;;7591:15;7568:9;:20;7578:9;7568:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;7545:9;:20;7555:9;7545:20;;;;;;;;;;;;;;;:61;;;;7639:9;7622:35;;7631:6;7622:35;;;7650:6;7622:35;;;;;;:::i;:::-;;;;;;;;7675:4;7668:11;;;;6769:918;;;;;:::o;11871:366::-;11941:27;11956:11;11941:14;:27::i;:::-;11979:21;12017:1;12003:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11979:40;;12048:4;12030;12035:1;12030:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12074:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12064:4;12069:1;12064:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;12110:18;;;;;;;;;;;:69;;;12180:11;12192:1;12194:4;12207;12213:15;12110:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11930:307;11871:366;:::o;12245:103::-;12307:16;;;;;;;;;;;:25;;:33;12333:6;12307:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12245:103;:::o;6538:223::-;6591:12;;;;;;;;;;;6590:13;6582:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6672:3;6668:1;1785;1842:2;:10;;;;:::i;:::-;1828;:25;;;;:::i;:::-;6658:11;;;;:::i;:::-;:17;;;;:::i;:::-;6639:12;:36;;;;6720:3;6716:1;1785;1842:2;:10;;;;:::i;:::-;1828;:25;;;;:::i;:::-;6706:11;;;;:::i;:::-;:17;;;;:::i;:::-;6687:16;:36;;;;6749:4;6734:12;;:19;;;;;;;;;;;;;;;;;;6538:223::o;6062:383::-;6165:24;6192:6;;;;;;;;;;;6165:33;;6214:8;6209:50;;;6254:1;6227:29;;6209:50;6269:28;6284:12;6269:14;:28::i;:::-;6308:18;;;;;;;;;;;:34;;;6350:13;6375:4;6382:12;6396:1;6399;6402:16;6420:15;6308:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6154:291;6062:383;;;:::o;11139:724::-;3027:4;3014:10;;:17;;;;;;;;;;;;;;;;;;11200:27:::1;11230:10;;11200:40;;11279:10;;11256:19;:33;;:49;;;;;11293:12;;;;;;;;;;;11256:49;11251:605;;;11351:10;;11328:19;:33;11323:78;;11388:10;;11366:32;;11323:78;11415:21;11439:19;11415:43;;1785:1;11493:2;:10;;;;:::i;:::-;11477:13;:26;11473:221;;;11553:19;11525:9;:24;11543:4;11525:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;11591:35;11612:13;11591:20;:35::i;:::-;11659:19;11645:10;;:33;;;;;;;:::i;:::-;;;;;;;;11473:221;11708:27;11738:21;11708:51;;11799:1;11777:19;:23;11774:71;;;11804:38;11822:19;11804:17;:38::i;:::-;11774:71;11308:548;;11251:605;11189:674;3060:5:::0;3047:10;;:18;;;;;;;;;;;;;;;;;;11139:724::o;7695:493::-;7799:4;7816:21;7840:4;7816:28;;7860:12;;;;;;;;;;;:33;;;;;7877:8;:16;7886:6;7877:16;;;;;;;;;;;;;;;;;;;;;;;;;7876:17;7860:33;:57;;;;;7898:8;:19;7907:9;7898:19;;;;;;;;;;;;;;;;;;;;;;;;;7897:20;7860:57;7855:292;;;7957:12;;7940:14;:29;7935:201;;;7993:5;7974:24;;7935:201;;;8026:5;:16;8032:9;8026:16;;;;;;;;;;;;;;;;;;;;;;;;;8025:17;:79;;;;;8087:16;;8070:14;8047:9;:20;8057:9;8047:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;8025:79;8020:116;;;8128:5;8109:24;;8020:116;7935:201;7855:292;8164:16;8157:23;;;7695:493;;;;;:::o;8479:421::-;8576:7;8596:17;8630:12;;;;;;;;;;;8629:13;:31;;;;8646:6;:14;8653:6;8646:14;;;;;;;;;;;;;;;;;;;;;;;;;8629:31;:52;;;;8664:6;:17;8671:9;8664:17;;;;;;;;;;;;;;;;;;;;;;;;;8629:52;8624:242;;;8698:1;8686:13;;8624:242;;;8723:5;:13;8729:6;8723:13;;;;;;;;;;;;;;;;;;;;;;;;;8718:148;;;8776:3;8762:11;;;;;;;;;;;8753:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;8741:38;;8718:148;;;8803:5;:16;8809:9;8803:16;;;;;;;;;;;;;;;;;;;;;;;;;8798:68;;;8860:3;8845:12;;;;;;;;;;;8836:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;8824:39;;8798:68;8718:148;8624:242;8883:9;8876:16;;;8479:421;;;;;:::o;4962:308::-;5079:12;5033:11;:26;5053:4;5033:26;;;;;;;;;;;;;;;:43;2688:42;5033:43;;;;;;;;;;;;;;;;:58;5028:235;;;5155:17;5109:11;:26;5129:4;5109:26;;;;;;;;;;;;;;;:43;2688:42;5109:43;;;;;;;;;;;;;;;:63;;;;2688:42;5192:59;;5209:4;5192:59;;;5233:17;5192:59;;;;;;:::i;:::-;;;;;;;;5028:235;4962:308;:::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:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:89::-;5224:7;5264:6;5257:5;5253:18;5242:29;;5188:89;;;:::o;5283:120::-;5355:23;5372:5;5355:23;:::i;:::-;5348:5;5345:34;5335:62;;5393:1;5390;5383:12;5335:62;5283:120;:::o;5409:137::-;5454:5;5492:6;5479:20;5470:29;;5508:32;5534:5;5508:32;:::i;:::-;5409:137;;;;:::o;5552:470::-;5618:6;5626;5675:2;5663:9;5654:7;5650:23;5646:32;5643:119;;;5681:79;;:::i;:::-;5643:119;5801:1;5826:52;5870:7;5861:6;5850:9;5846:22;5826:52;:::i;:::-;5816:62;;5772:116;5927:2;5953:52;5997:7;5988:6;5977:9;5973:22;5953:52;:::i;:::-;5943:62;;5898:117;5552:470;;;;;:::o;6028:118::-;6099:22;6115:5;6099:22;:::i;:::-;6092:5;6089:33;6079:61;;6136:1;6133;6126:12;6079:61;6028:118;:::o;6152:135::-;6196:5;6234:6;6221:20;6212:29;;6250:31;6275:5;6250:31;:::i;:::-;6152:135;;;;:::o;6293:466::-;6357:6;6365;6414:2;6402:9;6393:7;6389:23;6385:32;6382:119;;;6420:79;;:::i;:::-;6382:119;6540:1;6565:51;6608:7;6599:6;6588:9;6584:22;6565:51;:::i;:::-;6555:61;;6511:115;6665:2;6691:51;6734:7;6725:6;6714:9;6710:22;6691:51;:::i;:::-;6681:61;;6636:116;6293:466;;;;;:::o;6765:116::-;6835:21;6850:5;6835:21;:::i;:::-;6828:5;6825:32;6815:60;;6871:1;6868;6861:12;6815:60;6765:116;:::o;6887:133::-;6930:5;6968:6;6955:20;6946:29;;6984:30;7008:5;6984:30;:::i;:::-;6887:133;;;;:::o;7026:607::-;7097:6;7105;7113;7162:2;7150:9;7141:7;7137:23;7133:32;7130:119;;;7168:79;;:::i;:::-;7130:119;7288:1;7313:53;7358:7;7349:6;7338:9;7334:22;7313:53;:::i;:::-;7303:63;;7259:117;7415:2;7441:50;7483:7;7474:6;7463:9;7459:22;7441:50;:::i;:::-;7431:60;;7386:115;7540:2;7566:50;7608:7;7599:6;7588:9;7584:22;7566:50;:::i;:::-;7556:60;;7511:115;7026:607;;;;;:::o;7639:118::-;7726:24;7744:5;7726:24;:::i;:::-;7721:3;7714:37;7639:118;;:::o;7763:222::-;7856:4;7894:2;7883:9;7879:18;7871:26;;7907:71;7975:1;7964:9;7960:17;7951:6;7907:71;:::i;:::-;7763:222;;;;:::o;7991:93::-;8027:7;8067:10;8060:5;8056:22;8045:33;;7991:93;;;:::o;8090:120::-;8162:23;8179:5;8162:23;:::i;:::-;8155:5;8152:34;8142:62;;8200:1;8197;8190:12;8142:62;8090:120;:::o;8216:137::-;8261:5;8299:6;8286:20;8277:29;;8315:32;8341:5;8315:32;:::i;:::-;8216:137;;;;:::o;8359:757::-;8441:6;8449;8457;8465;8514:3;8502:9;8493:7;8489:23;8485:33;8482:120;;;8521:79;;:::i;:::-;8482:120;8641:1;8666:52;8710:7;8701:6;8690:9;8686:22;8666:52;:::i;:::-;8656:62;;8612:116;8767:2;8793:52;8837:7;8828:6;8817:9;8813:22;8793:52;:::i;:::-;8783:62;;8738:117;8894:2;8920:52;8964:7;8955:6;8944:9;8940:22;8920:52;:::i;:::-;8910:62;;8865:117;9021:2;9047:52;9091:7;9082:6;9071:9;9067:22;9047:52;:::i;:::-;9037:62;;8992:117;8359:757;;;;;;;:::o;9122:474::-;9190:6;9198;9247:2;9235:9;9226:7;9222:23;9218:32;9215:119;;;9253:79;;:::i;:::-;9215:119;9373:1;9398:53;9443:7;9434:6;9423:9;9419:22;9398:53;:::i;:::-;9388:63;;9344:117;9500:2;9526:53;9571:7;9562:6;9551:9;9547:22;9526:53;:::i;:::-;9516:63;;9471:118;9122:474;;;;;:::o;9602:308::-;9711:4;9749:2;9738:9;9734:18;9726:26;;9762:65;9824:1;9813:9;9809:17;9800:6;9762:65;:::i;:::-;9837:66;9899:2;9888:9;9884:18;9875:6;9837:66;:::i;:::-;9602:308;;;;;:::o;9916:104::-;9961:7;9990:24;10008:5;9990:24;:::i;:::-;9979:35;;9916:104;;;:::o;10026:138::-;10107:32;10133:5;10107:32;:::i;:::-;10100:5;10097:43;10087:71;;10154:1;10151;10144:12;10087:71;10026:138;:::o;10170:155::-;10224:5;10262:6;10249:20;10240:29;;10278:41;10313:5;10278:41;:::i;:::-;10170:155;;;;:::o;10331:345::-;10398:6;10447:2;10435:9;10426:7;10422:23;10418:32;10415:119;;;10453:79;;:::i;:::-;10415:119;10573:1;10598:61;10651:7;10642:6;10631:9;10627:22;10598:61;:::i;:::-;10588:71;;10544:125;10331:345;;;;:::o;10682:180::-;10730:77;10727:1;10720:88;10827:4;10824:1;10817:15;10851:4;10848:1;10841:15;10868:102;10910:8;10957:5;10954:1;10950:13;10929:34;;10868:102;;;:::o;10976:848::-;11037:5;11044:4;11068:6;11059:15;;11092:5;11083:14;;11106:712;11127:1;11117:8;11114:15;11106:712;;;11222:4;11217:3;11213:14;11207:4;11204:24;11201:50;;;11231:18;;:::i;:::-;11201:50;11281:1;11271:8;11267:16;11264:451;;;11696:4;11689:5;11685:16;11676:25;;11264:451;11746:4;11740;11736:15;11728:23;;11776:32;11799:8;11776:32;:::i;:::-;11764:44;;11106:712;;;10976:848;;;;;;;:::o;11830:1073::-;11884:5;12075:8;12065:40;;12096:1;12087:10;;12098:5;;12065:40;12124:4;12114:36;;12141:1;12132:10;;12143:5;;12114:36;12210:4;12258:1;12253:27;;;;12294:1;12289:191;;;;12203:277;;12253:27;12271:1;12262:10;;12273:5;;;12289:191;12334:3;12324:8;12321:17;12318:43;;;12341:18;;:::i;:::-;12318:43;12390:8;12387:1;12383:16;12374:25;;12425:3;12418:5;12415:14;12412:40;;;12432:18;;:::i;:::-;12412:40;12465:5;;;12203:277;;12589:2;12579:8;12576:16;12570:3;12564:4;12561:13;12557:36;12539:2;12529:8;12526:16;12521:2;12515:4;12512:12;12508:35;12492:111;12489:246;;;12645:8;12639:4;12635:19;12626:28;;12680:3;12673:5;12670:14;12667:40;;;12687:18;;:::i;:::-;12667:40;12720:5;;12489:246;12760:42;12798:3;12788:8;12782:4;12779:1;12760:42;:::i;:::-;12745:57;;;;12834:4;12829:3;12825:14;12818:5;12815:25;12812:51;;;12843:18;;:::i;:::-;12812:51;12892:4;12885:5;12881:16;12872:25;;11830:1073;;;;;;:::o;12909:281::-;12967:5;12991:23;13009:4;12991:23;:::i;:::-;12983:31;;13035:25;13051:8;13035:25;:::i;:::-;13023:37;;13079:104;13116:66;13106:8;13100:4;13079:104;:::i;:::-;13070:113;;12909:281;;;;:::o;13196:410::-;13236:7;13259:20;13277:1;13259:20;:::i;:::-;13254:25;;13293:20;13311:1;13293:20;:::i;:::-;13288:25;;13348:1;13345;13341:9;13370:30;13388:11;13370:30;:::i;:::-;13359:41;;13549:1;13540:7;13536:15;13533:1;13530:22;13510:1;13503:9;13483:83;13460:139;;13579:18;;:::i;:::-;13460:139;13244:362;13196:410;;;;:::o;13612:166::-;13752:18;13748:1;13740:6;13736:14;13729:42;13612:166;:::o;13784:366::-;13926:3;13947:67;14011:2;14006:3;13947:67;:::i;:::-;13940:74;;14023:93;14112:3;14023:93;:::i;:::-;14141:2;14136:3;14132:12;14125:19;;13784:366;;;:::o;14156:419::-;14322:4;14360:2;14349:9;14345:18;14337:26;;14409:9;14403:4;14399:20;14395:1;14384:9;14380:17;14373:47;14437:131;14563:4;14437:131;:::i;:::-;14429:139;;14156:419;;;:::o;14581:194::-;14621:4;14641:20;14659:1;14641:20;:::i;:::-;14636:25;;14675:20;14693:1;14675:20;:::i;:::-;14670:25;;14719:1;14716;14712:9;14704:17;;14743:1;14737:4;14734:11;14731:37;;;14748:18;;:::i;:::-;14731:37;14581:194;;;;:::o;14781:175::-;14921:27;14917:1;14909:6;14905:14;14898:51;14781:175;:::o;14962:366::-;15104:3;15125:67;15189:2;15184:3;15125:67;:::i;:::-;15118:74;;15201:93;15290:3;15201:93;:::i;:::-;15319:2;15314:3;15310:12;15303:19;;14962:366;;;:::o;15334:419::-;15500:4;15538:2;15527:9;15523:18;15515:26;;15587:9;15581:4;15577:20;15573:1;15562:9;15558:17;15551:47;15615:131;15741:4;15615:131;:::i;:::-;15607:139;;15334:419;;;:::o;15759:173::-;15899:25;15895:1;15887:6;15883:14;15876:49;15759:173;:::o;15938:366::-;16080:3;16101:67;16165:2;16160:3;16101:67;:::i;:::-;16094:74;;16177:93;16266:3;16177:93;:::i;:::-;16295:2;16290:3;16286:12;16279:19;;15938:366;;;:::o;16310:419::-;16476:4;16514:2;16503:9;16499:18;16491:26;;16563:9;16557:4;16553:20;16549:1;16538:9;16534:17;16527:47;16591:131;16717:4;16591:131;:::i;:::-;16583:139;;16310:419;;;:::o;16735:180::-;16783:77;16780:1;16773:88;16880:4;16877:1;16870:15;16904:4;16901:1;16894:15;16921:185;16961:1;16978:20;16996:1;16978:20;:::i;:::-;16973:25;;17012:20;17030:1;17012:20;:::i;:::-;17007:25;;17051:1;17041:35;;17056:18;;:::i;:::-;17041:35;17098:1;17095;17091:9;17086:14;;16921:185;;;;:::o;17112:191::-;17152:3;17171:20;17189:1;17171:20;:::i;:::-;17166:25;;17205:20;17223:1;17205:20;:::i;:::-;17200:25;;17248:1;17245;17241:9;17234:16;;17269:3;17266:1;17263:10;17260:36;;;17276:18;;:::i;:::-;17260:36;17112:191;;;;:::o;17309:160::-;17449:12;17445:1;17437:6;17433:14;17426:36;17309:160;:::o;17475:366::-;17617:3;17638:67;17702:2;17697:3;17638:67;:::i;:::-;17631:74;;17714:93;17803:3;17714:93;:::i;:::-;17832:2;17827:3;17823:12;17816:19;;17475:366;;;:::o;17847:419::-;18013:4;18051:2;18040:9;18036:18;18028:26;;18100:9;18094:4;18090:20;18086:1;18075:9;18071:17;18064:47;18128:131;18254:4;18128:131;:::i;:::-;18120:139;;17847:419;;;:::o;18272:164::-;18412:16;18408:1;18400:6;18396:14;18389:40;18272:164;:::o;18442:366::-;18584:3;18605:67;18669:2;18664:3;18605:67;:::i;:::-;18598:74;;18681:93;18770:3;18681:93;:::i;:::-;18799:2;18794:3;18790:12;18783:19;;18442:366;;;:::o;18814:419::-;18980:4;19018:2;19007:9;19003:18;18995:26;;19067:9;19061:4;19057:20;19053:1;19042:9;19038:17;19031:47;19095:131;19221:4;19095:131;:::i;:::-;19087:139;;18814:419;;;:::o;19239:188::-;19277:3;19296:18;19312:1;19296:18;:::i;:::-;19291:23;;19328:18;19344:1;19328:18;:::i;:::-;19323:23;;19369:1;19366;19362:9;19355:16;;19392:4;19387:3;19384:13;19381:39;;;19400:18;;:::i;:::-;19381:39;19239:188;;;;:::o;19433:168::-;19573:20;19569:1;19561:6;19557:14;19550:44;19433:168;:::o;19607:366::-;19749:3;19770:67;19834:2;19829:3;19770:67;:::i;:::-;19763:74;;19846:93;19935:3;19846:93;:::i;:::-;19964:2;19959:3;19955:12;19948:19;;19607:366;;;:::o;19979:419::-;20145:4;20183:2;20172:9;20168:18;20160:26;;20232:9;20226:4;20222:20;20218:1;20207:9;20203:17;20196:47;20260:131;20386:4;20260:131;:::i;:::-;20252:139;;19979:419;;;:::o;20404:166::-;20544:18;20540:1;20532:6;20528:14;20521:42;20404:166;:::o;20576:366::-;20718:3;20739:67;20803:2;20798:3;20739:67;:::i;:::-;20732:74;;20815:93;20904:3;20815:93;:::i;:::-;20933:2;20928:3;20924:12;20917:19;;20576:366;;;:::o;20948:419::-;21114:4;21152:2;21141:9;21137:18;21129:26;;21201:9;21195:4;21191:20;21187:1;21176:9;21172:17;21165:47;21229:131;21355:4;21229:131;:::i;:::-;21221:139;;20948:419;;;:::o;21373:163::-;21513:15;21509:1;21501:6;21497:14;21490:39;21373:163;:::o;21542:366::-;21684:3;21705:67;21769:2;21764:3;21705:67;:::i;:::-;21698:74;;21781:93;21870:3;21781:93;:::i;:::-;21899:2;21894:3;21890:12;21883:19;;21542:366;;;:::o;21914:419::-;22080:4;22118:2;22107:9;22103:18;22095:26;;22167:9;22161:4;22157:20;22153:1;22142:9;22138:17;22131:47;22195:131;22321:4;22195:131;:::i;:::-;22187:139;;21914:419;;;:::o;22339:161::-;22479:13;22475:1;22467:6;22463:14;22456:37;22339:161;:::o;22506:366::-;22648:3;22669:67;22733:2;22728:3;22669:67;:::i;:::-;22662:74;;22745:93;22834:3;22745:93;:::i;:::-;22863:2;22858:3;22854:12;22847:19;;22506:366;;;:::o;22878:419::-;23044:4;23082:2;23071:9;23067:18;23059:26;;23131:9;23125:4;23121:20;23117:1;23106:9;23102:17;23095:47;23159:131;23285:4;23159:131;:::i;:::-;23151:139;;22878:419;;;:::o;23303:162::-;23443:14;23439:1;23431:6;23427:14;23420:38;23303:162;:::o;23471:366::-;23613:3;23634:67;23698:2;23693:3;23634:67;:::i;:::-;23627:74;;23710:93;23799:3;23710:93;:::i;:::-;23828:2;23823:3;23819:12;23812:19;;23471:366;;;:::o;23843:419::-;24009:4;24047:2;24036:9;24032:18;24024:26;;24096:9;24090:4;24086:20;24082:1;24071:9;24067:17;24060:47;24124:131;24250:4;24124:131;:::i;:::-;24116:139;;23843:419;;;:::o;24268:159::-;24408:11;24404:1;24396:6;24392:14;24385:35;24268:159;:::o;24433:365::-;24575:3;24596:66;24660:1;24655:3;24596:66;:::i;:::-;24589:73;;24671:93;24760:3;24671:93;:::i;:::-;24789:2;24784:3;24780:12;24773:19;;24433:365;;;:::o;24804:419::-;24970:4;25008:2;24997:9;24993:18;24985:26;;25057:9;25051:4;25047:20;25043:1;25032:9;25028:17;25021:47;25085:131;25211:4;25085:131;:::i;:::-;25077:139;;24804:419;;;:::o;25229:170::-;25369:22;25365:1;25357:6;25353:14;25346:46;25229:170;:::o;25405:366::-;25547:3;25568:67;25632:2;25627:3;25568:67;:::i;:::-;25561:74;;25644:93;25733:3;25644:93;:::i;:::-;25762:2;25757:3;25753:12;25746:19;;25405:366;;;:::o;25777:419::-;25943:4;25981:2;25970:9;25966:18;25958:26;;26030:9;26024:4;26020:20;26016:1;26005:9;26001:17;25994:47;26058:131;26184:4;26058:131;:::i;:::-;26050:139;;25777:419;;;:::o;26202:179::-;26342:31;26338:1;26330:6;26326:14;26319:55;26202:179;:::o;26387:366::-;26529:3;26550:67;26614:2;26609:3;26550:67;:::i;:::-;26543:74;;26626:93;26715:3;26626:93;:::i;:::-;26744:2;26739:3;26735:12;26728:19;;26387:366;;;:::o;26759:419::-;26925:4;26963:2;26952:9;26948:18;26940:26;;27012:9;27006:4;27002:20;26998:1;26987:9;26983:17;26976:47;27040:131;27166:4;27040:131;:::i;:::-;27032:139;;26759:419;;;:::o;27184:171::-;27324:23;27320:1;27312:6;27308:14;27301:47;27184:171;:::o;27361:366::-;27503:3;27524:67;27588:2;27583:3;27524:67;:::i;:::-;27517:74;;27600:93;27689:3;27600:93;:::i;:::-;27718:2;27713:3;27709:12;27702:19;;27361:366;;;:::o;27733:419::-;27899:4;27937:2;27926:9;27922:18;27914:26;;27986:9;27980:4;27976:20;27972:1;27961:9;27957:17;27950:47;28014:131;28140:4;28014:131;:::i;:::-;28006:139;;27733:419;;;:::o;28158:143::-;28215:5;28246:6;28240:13;28231:22;;28262:33;28289:5;28262:33;:::i;:::-;28158:143;;;;:::o;28307:351::-;28377:6;28426:2;28414:9;28405:7;28401:23;28397:32;28394:119;;;28432:79;;:::i;:::-;28394:119;28552:1;28577:64;28633:7;28624:6;28613:9;28609:22;28577:64;:::i;:::-;28567:74;;28523:128;28307:351;;;;:::o;28664:332::-;28785:4;28823:2;28812:9;28808:18;28800:26;;28836:71;28904:1;28893:9;28889:17;28880:6;28836:71;:::i;:::-;28917:72;28985:2;28974:9;28970:18;28961:6;28917:72;:::i;:::-;28664:332;;;;;:::o;29002:98::-;29053:6;29087:5;29081:12;29071:22;;29002:98;;;:::o;29106:147::-;29207:11;29244:3;29229:18;;29106:147;;;;:::o;29259:386::-;29363:3;29391:38;29423:5;29391:38;:::i;:::-;29445:88;29526:6;29521:3;29445:88;:::i;:::-;29438:95;;29542:65;29600:6;29595:3;29588:4;29581:5;29577:16;29542:65;:::i;:::-;29632:6;29627:3;29623:16;29616:23;;29367:278;29259:386;;;;:::o;29651:271::-;29781:3;29803:93;29892:3;29883:6;29803:93;:::i;:::-;29796:100;;29913:3;29906:10;;29651:271;;;;:::o;29928:173::-;30068:25;30064:1;30056:6;30052:14;30045:49;29928:173;:::o;30107:366::-;30249:3;30270:67;30334:2;30329:3;30270:67;:::i;:::-;30263:74;;30346:93;30435:3;30346:93;:::i;:::-;30464:2;30459:3;30455:12;30448:19;;30107:366;;;:::o;30479:419::-;30645:4;30683:2;30672:9;30668:18;30660:26;;30732:9;30726:4;30722:20;30718:1;30707:9;30703:17;30696:47;30760:131;30886:4;30760:131;:::i;:::-;30752:139;;30479:419;;;:::o;30904:60::-;30932:3;30953:5;30946:12;;30904:60;;;:::o;30970:142::-;31020:9;31053:53;31071:34;31080:24;31098:5;31080:24;:::i;:::-;31071:34;:::i;:::-;31053:53;:::i;:::-;31040:66;;30970:142;;;:::o;31118:126::-;31168:9;31201:37;31232:5;31201:37;:::i;:::-;31188:50;;31118:126;;;:::o;31250:134::-;31308:9;31341:37;31372:5;31341:37;:::i;:::-;31328:50;;31250:134;;;:::o;31390:147::-;31485:45;31524:5;31485:45;:::i;:::-;31480:3;31473:58;31390:147;;:::o;31543:238::-;31644:4;31682:2;31671:9;31667:18;31659:26;;31695:79;31771:1;31760:9;31756:17;31747:6;31695:79;:::i;:::-;31543:238;;;;:::o;31787:179::-;31927:31;31923:1;31915:6;31911:14;31904:55;31787:179;:::o;31972:366::-;32114:3;32135:67;32199:2;32194:3;32135:67;:::i;:::-;32128:74;;32211:93;32300:3;32211:93;:::i;:::-;32329:2;32324:3;32320:12;32313:19;;31972:366;;;:::o;32344:419::-;32510:4;32548:2;32537:9;32533:18;32525:26;;32597:9;32591:4;32587:20;32583:1;32572:9;32568:17;32561:47;32625:131;32751:4;32625:131;:::i;:::-;32617:139;;32344:419;;;:::o;32769:167::-;32909:19;32905:1;32897:6;32893:14;32886:43;32769:167;:::o;32942:366::-;33084:3;33105:67;33169:2;33164:3;33105:67;:::i;:::-;33098:74;;33181:93;33270:3;33181:93;:::i;:::-;33299:2;33294:3;33290:12;33283:19;;32942:366;;;:::o;33314:419::-;33480:4;33518:2;33507:9;33503:18;33495:26;;33567:9;33561:4;33557:20;33553:1;33542:9;33538:17;33531:47;33595:131;33721:4;33595:131;:::i;:::-;33587:139;;33314:419;;;:::o;33739:180::-;33787:77;33784:1;33777:88;33884:4;33881:1;33874:15;33908:4;33905:1;33898:15;33925:180;33973:77;33970:1;33963:88;34070:4;34067:1;34060:15;34094:4;34091:1;34084:15;34111:85;34156:7;34185:5;34174:16;;34111:85;;;:::o;34202:158::-;34260:9;34293:61;34311:42;34320:32;34346:5;34320:32;:::i;:::-;34311:42;:::i;:::-;34293:61;:::i;:::-;34280:74;;34202:158;;;:::o;34366:147::-;34461:45;34500:5;34461:45;:::i;:::-;34456:3;34449:58;34366:147;;:::o;34519:114::-;34586:6;34620:5;34614:12;34604:22;;34519:114;;;:::o;34639:184::-;34738:11;34772:6;34767:3;34760:19;34812:4;34807:3;34803:14;34788:29;;34639:184;;;;:::o;34829:132::-;34896:4;34919:3;34911:11;;34949:4;34944:3;34940:14;34932:22;;34829:132;;;:::o;34967:108::-;35044:24;35062:5;35044:24;:::i;:::-;35039:3;35032:37;34967:108;;:::o;35081:179::-;35150:10;35171:46;35213:3;35205:6;35171:46;:::i;:::-;35249:4;35244:3;35240:14;35226:28;;35081:179;;;;:::o;35266:113::-;35336:4;35368;35363:3;35359:14;35351:22;;35266:113;;;:::o;35415:732::-;35534:3;35563:54;35611:5;35563:54;:::i;:::-;35633:86;35712:6;35707:3;35633:86;:::i;:::-;35626:93;;35743:56;35793:5;35743:56;:::i;:::-;35822:7;35853:1;35838:284;35863:6;35860:1;35857:13;35838:284;;;35939:6;35933:13;35966:63;36025:3;36010:13;35966:63;:::i;:::-;35959:70;;36052:60;36105:6;36052:60;:::i;:::-;36042:70;;35898:224;35885:1;35882;35878:9;35873:14;;35838:284;;;35842:14;36138:3;36131:10;;35539:608;;;35415:732;;;;:::o;36153:831::-;36416:4;36454:3;36443:9;36439:19;36431:27;;36468:71;36536:1;36525:9;36521:17;36512:6;36468:71;:::i;:::-;36549:80;36625:2;36614:9;36610:18;36601:6;36549:80;:::i;:::-;36676:9;36670:4;36666:20;36661:2;36650:9;36646:18;36639:48;36704:108;36807:4;36798:6;36704:108;:::i;:::-;36696:116;;36822:72;36890:2;36879:9;36875:18;36866:6;36822:72;:::i;:::-;36904:73;36972:3;36961:9;36957:19;36948:6;36904:73;:::i;:::-;36153:831;;;;;;;;:::o;36990:807::-;37239:4;37277:3;37266:9;37262:19;37254:27;;37291:71;37359:1;37348:9;37344:17;37335:6;37291:71;:::i;:::-;37372:72;37440:2;37429:9;37425:18;37416:6;37372:72;:::i;:::-;37454:80;37530:2;37519:9;37515:18;37506:6;37454:80;:::i;:::-;37544;37620:2;37609:9;37605:18;37596:6;37544:80;:::i;:::-;37634:73;37702:3;37691:9;37687:19;37678:6;37634:73;:::i;:::-;37717;37785:3;37774:9;37770:19;37761:6;37717:73;:::i;:::-;36990:807;;;;;;;;;:::o;37803:143::-;37860:5;37891:6;37885:13;37876:22;;37907:33;37934:5;37907:33;:::i;:::-;37803:143;;;;:::o;37952:663::-;38040:6;38048;38056;38105:2;38093:9;38084:7;38080:23;38076:32;38073:119;;;38111:79;;:::i;:::-;38073:119;38231:1;38256:64;38312:7;38303:6;38292:9;38288:22;38256:64;:::i;:::-;38246:74;;38202:128;38369:2;38395:64;38451:7;38442:6;38431:9;38427:22;38395:64;:::i;:::-;38385:74;;38340:129;38508:2;38534:64;38590:7;38581:6;38570:9;38566:22;38534:64;:::i;:::-;38524:74;;38479:129;37952:663;;;;;:::o

Swarm Source

ipfs://a7f657b5405072147a1112c945173233484a9dc691183e7529d34d90a743d070
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.