ETH Price: $2,961.46 (-5.10%)
Gas: 8 Gwei

Token

Miku (MIKU)
 

Overview

Max Total Supply

1,000,000 MIKU

Holders

229

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
142.858537268 MIKU

Value
$0.00
0x922a5ae990d6192c0532cb750a2e07cd8f6af28a
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
miku

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT

/*
█▀▄▀█ █ █▄▀ █░█
█░▀░█ █ █░█ █▄█ 初音ミク

- Website: https://mikueth.com
- Telegram: https://t.me/mikueth
- Twitter: https://twitter.com/mikuerc20
*/

pragma solidity 0.8.19;

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

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

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

contract miku is IERC20, Auth {
    
    uint8 private constant _decimals       = 9;
    uint256 private constant _totalSupply  = 1_000_000 * (10**_decimals);
    string private constant _name          = "Miku";
    string private  constant _symbol       = "MIKU";

    uint8 private _BuyTaxes  = 1;
    uint8 private _SellTaxes = 1;

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

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

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

    bool private _tradingOpen;

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

    event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);

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

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

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

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

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

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

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

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

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

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

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

Contract Security Audit

Contract ABI

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

60806040526001600060146101000a81548160ff021916908360ff1602179055506001600060156101000a81548160ff021916908360ff1602179055507339052977ab08e4f1aa860ee9566983227551c1dc600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000a1919062000a94565b620f4240620000b1919062000ae5565b6002556009600a620000c4919062000a94565b620f4240620000d4919062000ae5565b60035561271060016009600a620000ec919062000a94565b620f4240620000fc919062000ae5565b62000108919062000ae5565b62000114919062000b5f565b6004556103e8600980600a6200012b919062000a94565b620f42406200013b919062000ae5565b62000147919062000ae5565b62000153919062000b5f565b60055561177060045462000168919062000ae5565b6006556001600860006101000a81548160ff021916908360ff1602179055506001600860016101000a81548160ff021916908360ff1602179055506003600860026101000a81548160ff021916908360ff1602179055506003600860036101000a81548160ff021916908360ff1602179055506002600955737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260016101000a81548160ff0219169083151502179055503480156200025d57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606460026009600a620002f7919062000a94565b620f424062000307919062000ae5565b62000313919062000ae5565b6200031f919062000b5f565b9050806009600a62000332919062000a94565b620f424062000342919062000ae5565b6200034e919062000b97565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000430919062000be3565b60405180910390a380600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200057d919062000be3565b60405180910390a36001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000c00565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009885780860481111562000960576200095f620008fa565b5b6001851615620009705780820291505b8081029050620009808562000929565b945062000940565b94509492505050565b600082620009a3576001905062000a76565b81620009b3576000905062000a76565b8160018114620009cc5760028114620009d75762000a0d565b600191505062000a76565b60ff841115620009ec57620009eb620008fa565b5b8360020a91508482111562000a065762000a05620008fa565b5b5062000a76565b5060208310610133831016604e8410600b841016171562000a475782820a90508381111562000a415762000a40620008fa565b5b62000a76565b62000a56848484600162000936565b9250905081840481111562000a705762000a6f620008fa565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000aa18262000a7d565b915062000aae8362000a87565b925062000add7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000991565b905092915050565b600062000af28262000a7d565b915062000aff8362000a7d565b925082820262000b0f8162000a7d565b9150828204841483151762000b295762000b28620008fa565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b6c8262000a7d565b915062000b798362000a7d565b92508262000b8c5762000b8b62000b30565b5b828204905092915050565b600062000ba48262000a7d565b915062000bb18362000a7d565b925082820390508181111562000bcc5762000bcb620008fa565b5b92915050565b62000bdd8162000a7d565b82525050565b600060208201905062000bfa600083018462000bd2565b92915050565b6134de8062000c106000396000f3fe6080604052600436106100e15760003560e01c8063715018a61161007f578063a9059cbb11610059578063a9059cbb146102bb578063dd62ed3e146102f8578063e8078d9414610335578063f2fde38b1461033f576100e8565b8063715018a61461024e5780638da5cb5b1461026557806395d89b4114610290576100e8565b806323b872dd116100bb57806323b872dd14610180578063313ce567146101bd578063368f4800146101e857806370a0823114610211576100e8565b806306fdde03146100ed578063095ea7b31461011857806318160ddd14610155576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b50610102610368565b60405161010f91906125c3565b60405180910390f35b34801561012457600080fd5b5061013f600480360381019061013a919061267e565b6103a5565b60405161014c91906126d9565b60405180910390f35b34801561016157600080fd5b5061016a610497565b6040516101779190612703565b60405180910390f35b34801561018c57600080fd5b506101a760048036038101906101a2919061271e565b6104ba565b6040516101b491906126d9565b60405180910390f35b3480156101c957600080fd5b506101d26106c4565b6040516101df919061278d565b60405180910390f35b3480156101f457600080fd5b5061020f600480360381019061020a91906127e2565b6106cd565b005b34801561021d57600080fd5b5061023860048036038101906102339190612822565b610889565b6040516102459190612703565b60405180910390f35b34801561025a57600080fd5b506102636108d2565b005b34801561027157600080fd5b5061027a6109db565b604051610287919061285e565b60405180910390f35b34801561029c57600080fd5b506102a5610a04565b6040516102b291906125c3565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd919061267e565b610a41565b6040516102ef91906126d9565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a9190612879565b610a9e565b60405161032c9190612703565b60405180910390f35b61033d610b25565b005b34801561034b57600080fd5b50610366600480360381019061036191906128f7565b611212565b005b60606040518060400160405280600481526020017f4d696b7500000000000000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104859190612703565b60405180910390a36001905092915050565b60006009600a6104a79190612a86565b620f42406104b59190612ad1565b905090565b60006104c58461131a565b610504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fb90612b5f565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106b05781600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461062f9190612b7f565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6106bb8484846113f5565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075290612bff565b60405180910390fd5b600060016103e88461ffff166009600a6107759190612a86565b620f42406107839190612ad1565b61078d9190612ad1565b6107979190612c4e565b6107a19190612c7f565b90506002548110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612cff565b60405180910390fd5b80600281905550600060016103e88461ffff166009600a6108099190612a86565b620f42406108179190612ad1565b6108219190612ad1565b61082b9190612c4e565b6108359190612c7f565b905060035481101561087c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087390612d6b565b60405180910390fd5b8060038190555050505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095790612bff565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516109d1919061285e565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4d494b5500000000000000000000000000000000000000000000000000000000815250905090565b6000610a4c3361131a565b610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290612b5f565b60405180910390fd5b610a963384846113f5565b905092915050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612bff565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690612dd7565b60405180910390fd5b601260009054906101000a900460ff1615610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca690612e43565b60405180910390fd5b6000341180610cbe5750600047115b610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490612eaf565b60405180910390fd5b6000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612f1b565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612f50565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd9190612f50565b6040518363ffffffff1660e01b8152600401610eda929190612f7d565b6020604051808303816000875af1158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190612f50565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fa8600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000611981565b600654600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461101b9190612b7f565b925050819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110ed9190612fed565b6000604051808303816000865af19150503d806000811461112a576040519150601f19603f3d011682016040523d82523d6000602084013e61112f565b606091505b5050905080611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90613050565b60405180910390fd5b8060116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111f4611a6f565b506000601260016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129790612bff565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161130f91906130cf565b60405180910390a150565b60008060009050601260009054906101000a900460ff161561133f57600190506113ec565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156113e15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156113eb57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90613136565b60405180910390fd5b601260009054906101000a900460ff1661155b57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561151b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190612b5f565b60405180910390fd5b5b601260019054906101000a900460ff161580156115c15750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115cf576115ce611b57565b5b600954431080156115e257506007544310155b80156116375750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116ab573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a1906131a2565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561171357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561176b575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117bb5761177b848484611c77565b6117ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b19061320e565b60405180910390fd5b5b60006117c8858585611e0e565b9050600081846117d89190612b7f565b905083600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118259190612b7f565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816006600082825461187a9190612c7f565b9250508190555080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118cc9190612c7f565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161196c9190612703565b60405180910390a36001925050509392505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156119b357600090505b6119bc846120be565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401611a2396959493929190613269565b60606040518083038185885af1158015611a41573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a6691906132df565b50505050505050565b606460026009600a611a819190612a86565b620f4240611a8f9190612ad1565b611a999190612ad1565b611aa39190612c4e565b600281905550606460026009600a611abb9190612a86565b620f4240611ac99190612ad1565b611ad39190612ad1565b611add9190612c4e565b6003819055506001601260006101000a81548160ff02191690831515021790555043600781905550600860019054906101000a900460ff1660ff16600860009054906101000a900460ff1660ff16600754600954611b3b9190612c7f565b611b459190612c7f565b611b4f9190612c7f565b600981905550565b6001601260016101000a81548160ff021916908315150217905550600060065490506004548110158015611b975750601260009054906101000a900460ff165b15611c59576005548110611bab5760055490505b60008190506009600a611bbe9190612a86565b811115611c3e5781600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c149190612c7f565b92505081905550611c24816122a8565b8160066000828254611c369190612b7f565b925050819055505b60004790506000811115611c5657611c55816124c7565b5b50505b506000601260016101000a81548160ff021916908315150217905550565b60008060019050601260009054906101000a900460ff168015611ce45750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d3a5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e0357600254831115611d525760009050611e02565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611df7575060035483600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df59190612c7f565b115b15611e0157600090505b5b5b809150509392505050565b600080601260009054906101000a900460ff161580611e765750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611eca5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ed857600090506120b3565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561203257600860019054906101000a900460ff1660ff16600860009054906101000a900460ff1660ff16600754611f5d9190612c7f565b611f679190612c7f565b4310611f9e576064600060149054906101000a900460ff1660ff1684611f8d9190612ad1565b611f979190612c4e565b905061202d565b600860009054906101000a900460ff1660ff16600754611fbe9190612c7f565b4310611ff5576064600860039054906101000a900460ff1660ff1684611fe49190612ad1565b611fee9190612c4e565b905061202c565b600754431061202b576064600860029054906101000a900460ff1660ff168461201e9190612ad1565b6120289190612c4e565b90505b5b5b6120b2565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120b1576064600060159054906101000a900460ff1660ff16846120a49190612ad1565b6120ae9190612c4e565b90505b5b5b809150509392505050565b80600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156122a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161229c9190612703565b60405180910390a35b50565b6122b1816120be565b6000600267ffffffffffffffff8111156122ce576122cd613332565b5b6040519080825280602002602001820160405280156122fc5781602001602082028036833780820191505090505b509050308160008151811061231457612313613361565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123df9190612f50565b816001815181106123f3576123f2613361565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161249195949392919061344e565b600060405180830381600087803b1580156124ab57600080fd5b505af11580156124bf573d6000803e3d6000fd5b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561252f573d6000803e3d6000fd5b5050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561256d578082015181840152602081019050612552565b60008484015250505050565b6000601f19601f8301169050919050565b600061259582612533565b61259f818561253e565b93506125af81856020860161254f565b6125b881612579565b840191505092915050565b600060208201905081810360008301526125dd818461258a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612615826125ea565b9050919050565b6126258161260a565b811461263057600080fd5b50565b6000813590506126428161261c565b92915050565b6000819050919050565b61265b81612648565b811461266657600080fd5b50565b60008135905061267881612652565b92915050565b60008060408385031215612695576126946125e5565b5b60006126a385828601612633565b92505060206126b485828601612669565b9150509250929050565b60008115159050919050565b6126d3816126be565b82525050565b60006020820190506126ee60008301846126ca565b92915050565b6126fd81612648565b82525050565b600060208201905061271860008301846126f4565b92915050565b600080600060608486031215612737576127366125e5565b5b600061274586828701612633565b935050602061275686828701612633565b925050604061276786828701612669565b9150509250925092565b600060ff82169050919050565b61278781612771565b82525050565b60006020820190506127a2600083018461277e565b92915050565b600061ffff82169050919050565b6127bf816127a8565b81146127ca57600080fd5b50565b6000813590506127dc816127b6565b92915050565b600080604083850312156127f9576127f86125e5565b5b6000612807858286016127cd565b9250506020612818858286016127cd565b9150509250929050565b600060208284031215612838576128376125e5565b5b600061284684828501612633565b91505092915050565b6128588161260a565b82525050565b6000602082019050612873600083018461284f565b92915050565b600080604083850312156128905761288f6125e5565b5b600061289e85828601612633565b92505060206128af85828601612633565b9150509250929050565b60006128c4826125ea565b9050919050565b6128d4816128b9565b81146128df57600080fd5b50565b6000813590506128f1816128cb565b92915050565b60006020828403121561290d5761290c6125e5565b5b600061291b848285016128e2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156129aa5780860481111561298657612985612924565b5b60018516156129955780820291505b80810290506129a385612953565b945061296a565b94509492505050565b6000826129c35760019050612a7f565b816129d15760009050612a7f565b81600181146129e757600281146129f157612a20565b6001915050612a7f565b60ff841115612a0357612a02612924565b5b8360020a915084821115612a1a57612a19612924565b5b50612a7f565b5060208310610133831016604e8410600b8410161715612a555782820a905083811115612a5057612a4f612924565b5b612a7f565b612a628484846001612960565b92509050818404811115612a7957612a78612924565b5b81810290505b9392505050565b6000612a9182612648565b9150612a9c83612771565b9250612ac97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129b3565b905092915050565b6000612adc82612648565b9150612ae783612648565b9250828202612af581612648565b91508282048414831517612b0c57612b0b612924565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612b4960108361253e565b9150612b5482612b13565b602082019050919050565b60006020820190508181036000830152612b7881612b3c565b9050919050565b6000612b8a82612648565b9150612b9583612648565b9250828203905081811115612bad57612bac612924565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000612be960188361253e565b9150612bf482612bb3565b602082019050919050565b60006020820190508181036000830152612c1881612bdc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c5982612648565b9150612c6483612648565b925082612c7457612c73612c1f565b5b828204905092915050565b6000612c8a82612648565b9150612c9583612648565b9250828201905080821115612cad57612cac612924565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b6000612ce9600a8361253e565b9150612cf482612cb3565b602082019050919050565b60006020820190508181036000830152612d1881612cdc565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000612d55600e8361253e565b9150612d6082612d1f565b602082019050919050565b60006020820190508181036000830152612d8481612d48565b9050919050565b7f4c50206372656174656400000000000000000000000000000000000000000000600082015250565b6000612dc1600a8361253e565b9150612dcc82612d8b565b602082019050919050565b60006020820190508181036000830152612df081612db4565b9050919050565b7f74726164696e67206f70656e0000000000000000000000000000000000000000600082015250565b6000612e2d600c8361253e565b9150612e3882612df7565b602082019050919050565b60006020820190508181036000830152612e5c81612e20565b9050919050565b7f4e6f2045544820696e2063612f6d736700000000000000000000000000000000600082015250565b6000612e9960108361253e565b9150612ea482612e63565b602082019050919050565b60006020820190508181036000830152612ec881612e8c565b9050919050565b7f4e6f20746f6b656e7320696e2063610000000000000000000000000000000000600082015250565b6000612f05600f8361253e565b9150612f1082612ecf565b602082019050919050565b60006020820190508181036000830152612f3481612ef8565b9050919050565b600081519050612f4a8161261c565b92915050565b600060208284031215612f6657612f656125e5565b5b6000612f7484828501612f3b565b91505092915050565b6000604082019050612f92600083018561284f565b612f9f602083018461284f565b9392505050565b600081519050919050565b600081905092915050565b6000612fc782612fa6565b612fd18185612fb1565b9350612fe181856020860161254f565b80840191505092915050565b6000612ff98284612fbc565b915081905092915050565b7f4661696c656420616464696e67206c7000000000000000000000000000000000600082015250565b600061303a60108361253e565b915061304582613004565b602082019050919050565b600060208201905081810360008301526130698161302d565b9050919050565b6000819050919050565b600061309561309061308b846125ea565b613070565b6125ea565b9050919050565b60006130a78261307a565b9050919050565b60006130b98261309c565b9050919050565b6130c9816130ae565b82525050565b60006020820190506130e460008301846130c0565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000613120601d8361253e565b915061312b826130ea565b602082019050919050565b6000602082019050818103600083015261314f81613113565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b600061318c600b8361253e565b915061319782613156565b602082019050919050565b600060208201905081810360008301526131bb8161317f565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b60006131f860118361253e565b9150613203826131c2565b602082019050919050565b60006020820190508181036000830152613227816131eb565b9050919050565b6000819050919050565b600061325361324e6132498461322e565b613070565b612648565b9050919050565b61326381613238565b82525050565b600060c08201905061327e600083018961284f565b61328b60208301886126f4565b613298604083018761325a565b6132a5606083018661325a565b6132b2608083018561284f565b6132bf60a08301846126f4565b979650505050505050565b6000815190506132d981612652565b92915050565b6000806000606084860312156132f8576132f76125e5565b5b6000613306868287016132ca565b9350506020613317868287016132ca565b9250506040613328868287016132ca565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133c58161260a565b82525050565b60006133d783836133bc565b60208301905092915050565b6000602082019050919050565b60006133fb82613390565b613405818561339b565b9350613410836133ac565b8060005b8381101561344157815161342888826133cb565b9750613433836133e3565b925050600181019050613414565b5085935050505092915050565b600060a08201905061346360008301886126f4565b613470602083018761325a565b818103604083015261348281866133f0565b9050613491606083018561284f565b61349e60808301846126f4565b969550505050505056fea2646970667358221220c7223150a1ac27587c0e2ca1d425370058609f64a20aa887062927f78354812a64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106100e15760003560e01c8063715018a61161007f578063a9059cbb11610059578063a9059cbb146102bb578063dd62ed3e146102f8578063e8078d9414610335578063f2fde38b1461033f576100e8565b8063715018a61461024e5780638da5cb5b1461026557806395d89b4114610290576100e8565b806323b872dd116100bb57806323b872dd14610180578063313ce567146101bd578063368f4800146101e857806370a0823114610211576100e8565b806306fdde03146100ed578063095ea7b31461011857806318160ddd14610155576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b50610102610368565b60405161010f91906125c3565b60405180910390f35b34801561012457600080fd5b5061013f600480360381019061013a919061267e565b6103a5565b60405161014c91906126d9565b60405180910390f35b34801561016157600080fd5b5061016a610497565b6040516101779190612703565b60405180910390f35b34801561018c57600080fd5b506101a760048036038101906101a2919061271e565b6104ba565b6040516101b491906126d9565b60405180910390f35b3480156101c957600080fd5b506101d26106c4565b6040516101df919061278d565b60405180910390f35b3480156101f457600080fd5b5061020f600480360381019061020a91906127e2565b6106cd565b005b34801561021d57600080fd5b5061023860048036038101906102339190612822565b610889565b6040516102459190612703565b60405180910390f35b34801561025a57600080fd5b506102636108d2565b005b34801561027157600080fd5b5061027a6109db565b604051610287919061285e565b60405180910390f35b34801561029c57600080fd5b506102a5610a04565b6040516102b291906125c3565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd919061267e565b610a41565b6040516102ef91906126d9565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a9190612879565b610a9e565b60405161032c9190612703565b60405180910390f35b61033d610b25565b005b34801561034b57600080fd5b50610366600480360381019061036191906128f7565b611212565b005b60606040518060400160405280600481526020017f4d696b7500000000000000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104859190612703565b60405180910390a36001905092915050565b60006009600a6104a79190612a86565b620f42406104b59190612ad1565b905090565b60006104c58461131a565b610504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fb90612b5f565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106b05781600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461062f9190612b7f565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6106bb8484846113f5565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075290612bff565b60405180910390fd5b600060016103e88461ffff166009600a6107759190612a86565b620f42406107839190612ad1565b61078d9190612ad1565b6107979190612c4e565b6107a19190612c7f565b90506002548110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612cff565b60405180910390fd5b80600281905550600060016103e88461ffff166009600a6108099190612a86565b620f42406108179190612ad1565b6108219190612ad1565b61082b9190612c4e565b6108359190612c7f565b905060035481101561087c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087390612d6b565b60405180910390fd5b8060038190555050505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095790612bff565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516109d1919061285e565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4d494b5500000000000000000000000000000000000000000000000000000000815250905090565b6000610a4c3361131a565b610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290612b5f565b60405180910390fd5b610a963384846113f5565b905092915050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612bff565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690612dd7565b60405180910390fd5b601260009054906101000a900460ff1615610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca690612e43565b60405180910390fd5b6000341180610cbe5750600047115b610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490612eaf565b60405180910390fd5b6000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612f1b565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612f50565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd9190612f50565b6040518363ffffffff1660e01b8152600401610eda929190612f7d565b6020604051808303816000875af1158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190612f50565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fa8600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000611981565b600654600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461101b9190612b7f565b925050819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110ed9190612fed565b6000604051808303816000865af19150503d806000811461112a576040519150601f19603f3d011682016040523d82523d6000602084013e61112f565b606091505b5050905080611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90613050565b60405180910390fd5b8060116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111f4611a6f565b506000601260016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129790612bff565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161130f91906130cf565b60405180910390a150565b60008060009050601260009054906101000a900460ff161561133f57600190506113ec565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156113e15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156113eb57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90613136565b60405180910390fd5b601260009054906101000a900460ff1661155b57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561151b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190612b5f565b60405180910390fd5b5b601260019054906101000a900460ff161580156115c15750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115cf576115ce611b57565b5b600954431080156115e257506007544310155b80156116375750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116ab573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a1906131a2565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561171357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561176b575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117bb5761177b848484611c77565b6117ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b19061320e565b60405180910390fd5b5b60006117c8858585611e0e565b9050600081846117d89190612b7f565b905083600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118259190612b7f565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816006600082825461187a9190612c7f565b9250508190555080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118cc9190612c7f565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161196c9190612703565b60405180910390a36001925050509392505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156119b357600090505b6119bc846120be565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401611a2396959493929190613269565b60606040518083038185885af1158015611a41573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a6691906132df565b50505050505050565b606460026009600a611a819190612a86565b620f4240611a8f9190612ad1565b611a999190612ad1565b611aa39190612c4e565b600281905550606460026009600a611abb9190612a86565b620f4240611ac99190612ad1565b611ad39190612ad1565b611add9190612c4e565b6003819055506001601260006101000a81548160ff02191690831515021790555043600781905550600860019054906101000a900460ff1660ff16600860009054906101000a900460ff1660ff16600754600954611b3b9190612c7f565b611b459190612c7f565b611b4f9190612c7f565b600981905550565b6001601260016101000a81548160ff021916908315150217905550600060065490506004548110158015611b975750601260009054906101000a900460ff165b15611c59576005548110611bab5760055490505b60008190506009600a611bbe9190612a86565b811115611c3e5781600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c149190612c7f565b92505081905550611c24816122a8565b8160066000828254611c369190612b7f565b925050819055505b60004790506000811115611c5657611c55816124c7565b5b50505b506000601260016101000a81548160ff021916908315150217905550565b60008060019050601260009054906101000a900460ff168015611ce45750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d3a5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e0357600254831115611d525760009050611e02565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611df7575060035483600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df59190612c7f565b115b15611e0157600090505b5b5b809150509392505050565b600080601260009054906101000a900460ff161580611e765750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611eca5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ed857600090506120b3565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561203257600860019054906101000a900460ff1660ff16600860009054906101000a900460ff1660ff16600754611f5d9190612c7f565b611f679190612c7f565b4310611f9e576064600060149054906101000a900460ff1660ff1684611f8d9190612ad1565b611f979190612c4e565b905061202d565b600860009054906101000a900460ff1660ff16600754611fbe9190612c7f565b4310611ff5576064600860039054906101000a900460ff1660ff1684611fe49190612ad1565b611fee9190612c4e565b905061202c565b600754431061202b576064600860029054906101000a900460ff1660ff168461201e9190612ad1565b6120289190612c4e565b90505b5b5b6120b2565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120b1576064600060159054906101000a900460ff1660ff16846120a49190612ad1565b6120ae9190612c4e565b90505b5b5b809150509392505050565b80600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156122a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161229c9190612703565b60405180910390a35b50565b6122b1816120be565b6000600267ffffffffffffffff8111156122ce576122cd613332565b5b6040519080825280602002602001820160405280156122fc5781602001602082028036833780820191505090505b509050308160008151811061231457612313613361565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123df9190612f50565b816001815181106123f3576123f2613361565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161249195949392919061344e565b600060405180830381600087803b1580156124ab57600080fd5b505af11580156124bf573d6000803e3d6000fd5b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561252f573d6000803e3d6000fd5b5050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561256d578082015181840152602081019050612552565b60008484015250505050565b6000601f19601f8301169050919050565b600061259582612533565b61259f818561253e565b93506125af81856020860161254f565b6125b881612579565b840191505092915050565b600060208201905081810360008301526125dd818461258a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612615826125ea565b9050919050565b6126258161260a565b811461263057600080fd5b50565b6000813590506126428161261c565b92915050565b6000819050919050565b61265b81612648565b811461266657600080fd5b50565b60008135905061267881612652565b92915050565b60008060408385031215612695576126946125e5565b5b60006126a385828601612633565b92505060206126b485828601612669565b9150509250929050565b60008115159050919050565b6126d3816126be565b82525050565b60006020820190506126ee60008301846126ca565b92915050565b6126fd81612648565b82525050565b600060208201905061271860008301846126f4565b92915050565b600080600060608486031215612737576127366125e5565b5b600061274586828701612633565b935050602061275686828701612633565b925050604061276786828701612669565b9150509250925092565b600060ff82169050919050565b61278781612771565b82525050565b60006020820190506127a2600083018461277e565b92915050565b600061ffff82169050919050565b6127bf816127a8565b81146127ca57600080fd5b50565b6000813590506127dc816127b6565b92915050565b600080604083850312156127f9576127f86125e5565b5b6000612807858286016127cd565b9250506020612818858286016127cd565b9150509250929050565b600060208284031215612838576128376125e5565b5b600061284684828501612633565b91505092915050565b6128588161260a565b82525050565b6000602082019050612873600083018461284f565b92915050565b600080604083850312156128905761288f6125e5565b5b600061289e85828601612633565b92505060206128af85828601612633565b9150509250929050565b60006128c4826125ea565b9050919050565b6128d4816128b9565b81146128df57600080fd5b50565b6000813590506128f1816128cb565b92915050565b60006020828403121561290d5761290c6125e5565b5b600061291b848285016128e2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156129aa5780860481111561298657612985612924565b5b60018516156129955780820291505b80810290506129a385612953565b945061296a565b94509492505050565b6000826129c35760019050612a7f565b816129d15760009050612a7f565b81600181146129e757600281146129f157612a20565b6001915050612a7f565b60ff841115612a0357612a02612924565b5b8360020a915084821115612a1a57612a19612924565b5b50612a7f565b5060208310610133831016604e8410600b8410161715612a555782820a905083811115612a5057612a4f612924565b5b612a7f565b612a628484846001612960565b92509050818404811115612a7957612a78612924565b5b81810290505b9392505050565b6000612a9182612648565b9150612a9c83612771565b9250612ac97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129b3565b905092915050565b6000612adc82612648565b9150612ae783612648565b9250828202612af581612648565b91508282048414831517612b0c57612b0b612924565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612b4960108361253e565b9150612b5482612b13565b602082019050919050565b60006020820190508181036000830152612b7881612b3c565b9050919050565b6000612b8a82612648565b9150612b9583612648565b9250828203905081811115612bad57612bac612924565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000612be960188361253e565b9150612bf482612bb3565b602082019050919050565b60006020820190508181036000830152612c1881612bdc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c5982612648565b9150612c6483612648565b925082612c7457612c73612c1f565b5b828204905092915050565b6000612c8a82612648565b9150612c9583612648565b9250828201905080821115612cad57612cac612924565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b6000612ce9600a8361253e565b9150612cf482612cb3565b602082019050919050565b60006020820190508181036000830152612d1881612cdc565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000612d55600e8361253e565b9150612d6082612d1f565b602082019050919050565b60006020820190508181036000830152612d8481612d48565b9050919050565b7f4c50206372656174656400000000000000000000000000000000000000000000600082015250565b6000612dc1600a8361253e565b9150612dcc82612d8b565b602082019050919050565b60006020820190508181036000830152612df081612db4565b9050919050565b7f74726164696e67206f70656e0000000000000000000000000000000000000000600082015250565b6000612e2d600c8361253e565b9150612e3882612df7565b602082019050919050565b60006020820190508181036000830152612e5c81612e20565b9050919050565b7f4e6f2045544820696e2063612f6d736700000000000000000000000000000000600082015250565b6000612e9960108361253e565b9150612ea482612e63565b602082019050919050565b60006020820190508181036000830152612ec881612e8c565b9050919050565b7f4e6f20746f6b656e7320696e2063610000000000000000000000000000000000600082015250565b6000612f05600f8361253e565b9150612f1082612ecf565b602082019050919050565b60006020820190508181036000830152612f3481612ef8565b9050919050565b600081519050612f4a8161261c565b92915050565b600060208284031215612f6657612f656125e5565b5b6000612f7484828501612f3b565b91505092915050565b6000604082019050612f92600083018561284f565b612f9f602083018461284f565b9392505050565b600081519050919050565b600081905092915050565b6000612fc782612fa6565b612fd18185612fb1565b9350612fe181856020860161254f565b80840191505092915050565b6000612ff98284612fbc565b915081905092915050565b7f4661696c656420616464696e67206c7000000000000000000000000000000000600082015250565b600061303a60108361253e565b915061304582613004565b602082019050919050565b600060208201905081810360008301526130698161302d565b9050919050565b6000819050919050565b600061309561309061308b846125ea565b613070565b6125ea565b9050919050565b60006130a78261307a565b9050919050565b60006130b98261309c565b9050919050565b6130c9816130ae565b82525050565b60006020820190506130e460008301846130c0565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000613120601d8361253e565b915061312b826130ea565b602082019050919050565b6000602082019050818103600083015261314f81613113565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b600061318c600b8361253e565b915061319782613156565b602082019050919050565b600060208201905081810360008301526131bb8161317f565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b60006131f860118361253e565b9150613203826131c2565b602082019050919050565b60006020820190508181036000830152613227816131eb565b9050919050565b6000819050919050565b600061325361324e6132498461322e565b613070565b612648565b9050919050565b61326381613238565b82525050565b600060c08201905061327e600083018961284f565b61328b60208301886126f4565b613298604083018761325a565b6132a5606083018661325a565b6132b2608083018561284f565b6132bf60a08301846126f4565b979650505050505050565b6000815190506132d981612652565b92915050565b6000806000606084860312156132f8576132f76125e5565b5b6000613306868287016132ca565b9350506020613317868287016132ca565b9250506040613328868287016132ca565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133c58161260a565b82525050565b60006133d783836133bc565b60208301905092915050565b6000602082019050919050565b60006133fb82613390565b613405818561339b565b9350613410836133ac565b8060005b8381101561344157815161342888826133cb565b9750613433836133e3565b925050600181019050613414565b5085935050505092915050565b600060a08201905061346360008301886126f4565b613470602083018761325a565b818103604083015261348281866133f0565b9050613491606083018561284f565b61349e60808301846126f4565b969550505050505056fea2646970667358221220c7223150a1ac27587c0e2ca1d425370058609f64a20aa887062927f78354812a64736f6c63430008130033

Deployed Bytecode Sourcemap

2459:10217:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5278:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5616:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5008:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6070:392;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5102:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10974:440;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5364:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2276:127;;;;;;;;;;;;;:::i;:::-;;2050:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5188:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5837:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5475:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6793:770;;;:::i;:::-;;2123:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5278:80;5326:13;5350:5;;;;;;;;;;;;;;;;;5343:12;;5278:80;:::o;5616:213::-;5690:4;5741:6;5707:11;:23;5719:10;5707:23;;;;;;;;;;;;;;;:31;5731:6;5707:31;;;;;;;;;;;;;;;:40;;;;5784:6;5763:36;;5772:10;5763:36;;;5792:6;5763:36;;;;;;:::i;:::-;;;;;;;;5817:4;5810:11;;5616:213;;;;:::o;5008:88::-;5063:7;2543:1;2605:2;:13;;;;:::i;:::-;2592:9;:27;;;;:::i;:::-;5074:19;;5008:88;:::o;6070:392::-;6168:4;6193:23;6211:4;6193:17;:23::i;:::-;6185:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6284:17;6251:11;:17;6263:4;6251:17;;;;;;;;;;;;;;;:29;6269:10;6251:29;;;;;;;;;;;;;;;;:50;6248:151;;6381:6;6349:11;:17;6361:4;6349:17;;;;;;;;;;;;;;;:29;6367:10;6349:29;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;6317:11;:17;6329:4;6317:17;;;;;;;;;;;;;;;:29;6335:10;6317:29;;;;;;;;;;;;;;;:70;;;;6248:151;6416:38;6430:4;6436:9;6447:6;6416:13;:38::i;:::-;6409:45;;6070:392;;;;;:::o;5102:80::-;5154:5;2543:1;5163:16;;5102:80;:::o;10974:440::-;1995:6;;;;;;;;;;1981:20;;:10;:20;;;1973:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11069:16:::1;11127:1;11120:4;11103:14;11088:29;;2543:1;2605:2;:13;;;;:::i;:::-;2592:9;:27;;;;:::i;:::-;11088:29;;;;:::i;:::-;:36;;;;:::i;:::-;:40;;;;:::i;:::-;11069:59;;11159:12;;11147:8;:24;;11139:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11212:8;11197:12;:23;;;;11231:20;11293:1;11286:4;11269:14;11254:29;;2543:1;2605:2;:13;;;;:::i;:::-;2592:9;:27;;;;:::i;:::-;11254:29;;;;:::i;:::-;:36;;;;:::i;:::-;:40;;;;:::i;:::-;11231:63;;11329:16;;11313:12;:32;;11305:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11394:12;11375:16;:31;;;;11058:356;;10974:440:::0;;:::o;5364:105::-;5430:7;5448:9;:18;5458:7;5448:18;;;;;;;;;;;;;;;;5441:25;;5364:105;;;:::o;2276:127::-;1995:6;;;;;;;;;;1981:20;;:10;:20;;;1973:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2353:1:::1;2336:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2362:32;2391:1;2362:32;;;;;;:::i;:::-;;;;;;;;2276:127::o:0;2050:67::-;2088:7;2106:6;;;;;;;;;;;2099:13;;2050:67;:::o;5188:84::-;5238:13;5262:7;;;;;;;;;;;;;;;;;5255:14;;5188:84;:::o;5837:225::-;5917:4;5942:29;5960:10;5942:17;:29::i;:::-;5934:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6010:44;6024:10;6036:9;6047:6;6010:13;:44::i;:::-;6003:51;;5837:225;;;;:::o;5475:133::-;5559:7;5577:11;:19;5589:6;5577:19;;;;;;;;;;;;;;;:28;5597:7;5577:28;;;;;;;;;;;;;;;;5570:35;;5475:133;;;;:::o;6793:770::-;1995:6;;;;;;;;;;1981:20;;:10;:20;;;1973:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4093:4:::1;4080:10;;:17;;;;;;;;;;;;;;;;;;6897:1:::2;6875:24;;:10;;;;;;;;;;;:24;;;6867:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;6934:12;;;;;;;;;;;6933:13;6925:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6994:1;6982:9;:13;:40;;;;7021:1;6999:21;:23;6982:40;6974:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7087:1;7062:9;:24;7080:4;7062:24;;;;;;;;;;;;;;;;:26;7054:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7150:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7132:58;;;7199:4;7206:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7132:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7119:10;;:113;;;;;;;;;;;;;;;;;;7243:69;7257:9;:24;7275:4;7257:24;;;;;;;;;;;;;;;;7283:21;7306:5;7243:13;:69::i;:::-;7348:17;;7323:9;:21;7333:10;;;;;;;;;;;7323:21;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;7377:12;7394:10;;;;;;;;;;;:15;;7410:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7394:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7376:69;;;7464:7;7456:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;7523:7;7503:5;:17;7509:10;;;;;;;;;;;7503:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;7541:14;:12;:14::i;:::-;6856:707;4135:5:::1;4122:10;;:18;;;;;;;;;;;;;;;;;;6793:770::o:0;2123:147::-;1995:6;;;;;;;;;;1981:20;;:10;:20;;;1973:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2216:8:::1;2207:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2231:30;2252:8;2231:30;;;;;;:::i;:::-;;;;;;;;2123:147:::0;:::o;9857:273::-;9920:4;9936:16;9955:5;9936:24;;9976:12;;;;;;;;;;;9971:120;;;10007:4;9993:18;;9971:120;;;10034:7;:13;10042:4;10034:13;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;10051:9;:15;10061:4;10051:15;;;;;;;;;;;;;;;;;;;;;;;;;10034:32;10030:61;;;10084:4;10070:18;;10030:61;9971:120;10111:11;10104:18;;;9857:273;;;:::o;8269:1085::-;8361:4;8404:1;8386:20;;:6;:20;;;8378:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8456:12;;;;;;;;;;;8451:89;;8480:7;:15;8488:6;8480:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;8499:9;:17;8509:6;8499:17;;;;;;;;;;;;;;;;;;;;;;;;;8480:36;8472:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8451:89;8556:10;;;;;;;;;;;8555:11;:31;;;;;8570:5;:16;8576:9;8570:16;;;;;;;;;;;;;;;;;;;;;;;;;8555:31;8550:64;;;8591:20;:18;:20::i;:::-;8550:64;8644:20;;8629:12;:35;:64;;;;;8684:9;;8668:12;:25;;8629:64;:81;;;;;8697:5;:13;8703:6;8697:13;;;;;;;;;;;;;;;;;;;;;;;;;8629:81;8624:162;;;8749:9;8736:22;;:9;:22;;;8728:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8624:162;8819:4;8801:23;;:6;:23;;;;:53;;;;;8849:4;8828:26;;:9;:26;;;;8801:53;:73;;;;;8868:6;;;;;;;;;;8858:16;;:6;:16;;;;8801:73;8796:179;;;8901:39;8914:6;8922:9;8933:6;8901:12;:39::i;:::-;8893:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;8796:179;8985:18;9006:40;9020:6;9028:9;9039:6;9006:13;:40::i;:::-;8985:61;;9057:23;9092:10;9083:6;:19;;;;:::i;:::-;9057:45;;9153:6;9133:9;:17;9143:6;9133:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9113:9;:17;9123:6;9113:17;;;;;;;;;;;;;;;:46;;;;9191:10;9170:17;;:31;;;;;;;:::i;:::-;;;;;;;;9258:15;9235:9;:20;9245:9;9235:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9212:9;:20;9222:9;9212:20;;;;;;;;;;;;;;;:61;;;;9306:9;9289:35;;9298:6;9289:35;;;9317:6;9289:35;;;;;;:::i;:::-;;;;;;;;9342:4;9335:11;;;;8269:1085;;;;;:::o;7569:369::-;7672:19;7694:7;;;;;;;;;;;7672:29;;7717:8;7712:45;;;7752:1;7730:24;;7712:45;7767:28;7782:12;7767:14;:28::i;:::-;7806:18;;;;;;;;;;;:34;;;7848:13;7873:4;7880:12;7894:1;7897;7900:11;7913:15;7806:124;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7661:277;7569:369;;;:::o;7944:319::-;8026:3;8022:1;2543;2605:2;:13;;;;:::i;:::-;2592:9;:27;;;;:::i;:::-;8007:16;;;;:::i;:::-;:22;;;;:::i;:::-;7988:12;:41;;;;8079:3;8075:1;2543;2605:2;:13;;;;:::i;:::-;2592:9;:27;;;;:::i;:::-;8060:16;;;;:::i;:::-;:22;;;;:::i;:::-;8041:16;:41;;;;8108:4;8093:12;;:19;;;;;;;;;;;;;;;;;;8135:12;8123:9;:24;;;;8237:18;;;;;;;;;;;8181:74;;8216:18;;;;;;;;;;;8181:53;;8204:9;;8181:20;;:32;;;;:::i;:::-;:53;;;;:::i;:::-;:74;;;;:::i;:::-;8158:20;:97;;;;7944:319::o;11425:759::-;4093:4;4080:10;;:17;;;;;;;;;;;;;;;;;;11486:27:::1;11516:17;;11486:47;;11572:11;;11549:19;:34;;:50;;;;;11587:12;;;;;;;;;;;11549:50;11544:633;;;11645:11;;11622:19;:34;11617:80;;11683:11;;11661:33;;11617:80;11725:21;11749:19;11725:43;;2543:1;11804:2;:13;;;;:::i;:::-;11788;:29;11784:231;;;11867:19;11839:9;:24;11857:4;11839:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;11905:35;11926:13;11905:20;:35::i;:::-;11980:19;11959:17;;:40;;;;;;;:::i;:::-;;;;;;;;11784:231;12029:27;12059:21;12029:51;;12120:1;12098:19;:23;12095:71;;;12125:38;12143:19;12125:17;:38::i;:::-;12095:71;11602:575;;11544:633;11475:709;4135:5:::0;4122:10;;:18;;;;;;;;;;;;;;;;;;11425:759::o;9360:491::-;9462:4;9479:21;9503:4;9479:28;;9523:12;;;;;;;;;;;:32;;;;;9540:9;:15;9550:4;9540:15;;;;;;;;;;;;;;;;;;;;;;;;;9539:16;9523:32;:57;;;;;9560:9;:20;9570:9;9560:20;;;;;;;;;;;;;;;;;;;;;;;;;9559:21;9523:57;9518:292;;;9620:12;;9603:14;:29;9598:201;;;9656:5;9637:24;;9598:201;;;9689:5;:16;9695:9;9689:16;;;;;;;;;;;;;;;;;;;;;;;;;9688:17;:79;;;;;9750:16;;9733:14;9710:9;:20;9720:9;9710:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;9688:79;9683:116;;;9791:5;9772:24;;9683:116;9598:201;9518:292;9827:16;9820:23;;;9360:491;;;;;:::o;10136:832::-;10231:7;10251:17;10295:12;;;;;;;;;;;10294:13;:30;;;;10311:7;:13;10319:4;10311:13;;;;;;;;;;;;;;;;;;;;;;;;;10294:30;:52;;;;10328:7;:18;10336:9;10328:18;;;;;;;;;;;;;;;;;;;;;;;;;10294:52;10289:643;;;10377:1;10365:13;;10289:643;;;10402:5;:11;10408:4;10402:11;;;;;;;;;;;;;;;;;;;;;;;;;10397:535;;;10486:18;;;;;;;;;;;10453:51;;10465:18;;;;;;;;;;;10453:30;;:9;;:30;;;;:::i;:::-;:51;;;;:::i;:::-;10437:12;:67;10432:393;;10559:3;10547:9;;;;;;;;;;;10538:18;;:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;10526:36;;10432:393;;;10618:18;;;;;;;;;;;10606:30;;:9;;:30;;;;:::i;:::-;10590:12;:46;10585:240;;10694:3;10679:12;;;;;;;;;;;10670:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;10658:39;;10585:240;;;10740:9;;10724:12;:25;10719:106;;10806:3;10791:12;;;;;;;;;;;10782:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;10770:39;;10719:106;10585:240;10432:393;10397:535;;;10847:5;:16;10853:9;10847:16;;;;;;;;;;;;;;;;;;;;;;;;;10842:90;;;10916:3;10903:10;;;;;;;;;;;10894:19;;:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10882:37;;10842:90;10397:535;10289:643;10951:9;10944:16;;;10136:832;;;;;:::o;6470:317::-;6590:12;6541:11;:26;6561:4;6541:26;;;;;;;;;;;;;;;:46;3751:42;6541:46;;;;;;;;;;;;;;;;:61;6536:244;;;6669:17;6620:11;:26;6640:4;6620:26;;;;;;;;;;;;;;;:46;3751:42;6620:46;;;;;;;;;;;;;;;:66;;;;3751:42;6706:62;;6723:4;6706:62;;;6750:17;6706:62;;;;;;:::i;:::-;;;;;;;;6536:244;6470:317;:::o;12190:369::-;12260:27;12275:11;12260:14;:27::i;:::-;12298:21;12336:1;12322:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12298:40;;12368:4;12349;12354:1;12349:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;12395:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12385:4;12390:1;12385:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;12432:18;;;;;;;;;;;:69;;;12502:11;12514:1;12516:4;12529;12535:15;12432:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12249:310;12190:369;:::o;12565:103::-;12627:16;;;;;;;;;;;:25;;:33;12653:6;12627:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12565:103;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:89::-;4889:7;4929:6;4922:5;4918:18;4907:29;;4853:89;;;:::o;4948:120::-;5020:23;5037:5;5020:23;:::i;:::-;5013:5;5010:34;5000:62;;5058:1;5055;5048:12;5000:62;4948:120;:::o;5074:137::-;5119:5;5157:6;5144:20;5135:29;;5173:32;5199:5;5173:32;:::i;:::-;5074:137;;;;:::o;5217:470::-;5283:6;5291;5340:2;5328:9;5319:7;5315:23;5311:32;5308:119;;;5346:79;;:::i;:::-;5308:119;5466:1;5491:52;5535:7;5526:6;5515:9;5511:22;5491:52;:::i;:::-;5481:62;;5437:116;5592:2;5618:52;5662:7;5653:6;5642:9;5638:22;5618:52;:::i;:::-;5608:62;;5563:117;5217:470;;;;;:::o;5693:329::-;5752:6;5801:2;5789:9;5780:7;5776:23;5772:32;5769:119;;;5807:79;;:::i;:::-;5769:119;5927:1;5952:53;5997:7;5988:6;5977:9;5973:22;5952:53;:::i;:::-;5942:63;;5898:117;5693:329;;;;:::o;6028:118::-;6115:24;6133:5;6115:24;:::i;:::-;6110:3;6103:37;6028:118;;:::o;6152:222::-;6245:4;6283:2;6272:9;6268:18;6260:26;;6296:71;6364:1;6353:9;6349:17;6340:6;6296:71;:::i;:::-;6152:222;;;;:::o;6380:474::-;6448:6;6456;6505:2;6493:9;6484:7;6480:23;6476:32;6473:119;;;6511:79;;:::i;:::-;6473:119;6631:1;6656:53;6701:7;6692:6;6681:9;6677:22;6656:53;:::i;:::-;6646:63;;6602:117;6758:2;6784:53;6829:7;6820:6;6809:9;6805:22;6784:53;:::i;:::-;6774:63;;6729:118;6380:474;;;;;:::o;6860:104::-;6905:7;6934:24;6952:5;6934:24;:::i;:::-;6923:35;;6860:104;;;:::o;6970:138::-;7051:32;7077:5;7051:32;:::i;:::-;7044:5;7041:43;7031:71;;7098:1;7095;7088:12;7031:71;6970:138;:::o;7114:155::-;7168:5;7206:6;7193:20;7184:29;;7222:41;7257:5;7222:41;:::i;:::-;7114:155;;;;:::o;7275:345::-;7342:6;7391:2;7379:9;7370:7;7366:23;7362:32;7359:119;;;7397:79;;:::i;:::-;7359:119;7517:1;7542:61;7595:7;7586:6;7575:9;7571:22;7542:61;:::i;:::-;7532:71;;7488:125;7275:345;;;;:::o;7626:180::-;7674:77;7671:1;7664:88;7771:4;7768:1;7761:15;7795:4;7792:1;7785:15;7812:102;7854:8;7901:5;7898:1;7894:13;7873:34;;7812:102;;;:::o;7920:848::-;7981:5;7988:4;8012:6;8003:15;;8036:5;8027:14;;8050:712;8071:1;8061:8;8058:15;8050:712;;;8166:4;8161:3;8157:14;8151:4;8148:24;8145:50;;;8175:18;;:::i;:::-;8145:50;8225:1;8215:8;8211:16;8208:451;;;8640:4;8633:5;8629:16;8620:25;;8208:451;8690:4;8684;8680:15;8672:23;;8720:32;8743:8;8720:32;:::i;:::-;8708:44;;8050:712;;;7920:848;;;;;;;:::o;8774:1073::-;8828:5;9019:8;9009:40;;9040:1;9031:10;;9042:5;;9009:40;9068:4;9058:36;;9085:1;9076:10;;9087:5;;9058:36;9154:4;9202:1;9197:27;;;;9238:1;9233:191;;;;9147:277;;9197:27;9215:1;9206:10;;9217:5;;;9233:191;9278:3;9268:8;9265:17;9262:43;;;9285:18;;:::i;:::-;9262:43;9334:8;9331:1;9327:16;9318:25;;9369:3;9362:5;9359:14;9356:40;;;9376:18;;:::i;:::-;9356:40;9409:5;;;9147:277;;9533:2;9523:8;9520:16;9514:3;9508:4;9505:13;9501:36;9483:2;9473:8;9470:16;9465:2;9459:4;9456:12;9452:35;9436:111;9433:246;;;9589:8;9583:4;9579:19;9570:28;;9624:3;9617:5;9614:14;9611:40;;;9631:18;;:::i;:::-;9611:40;9664:5;;9433:246;9704:42;9742:3;9732:8;9726:4;9723:1;9704:42;:::i;:::-;9689:57;;;;9778:4;9773:3;9769:14;9762:5;9759:25;9756:51;;;9787:18;;:::i;:::-;9756:51;9836:4;9829:5;9825:16;9816:25;;8774:1073;;;;;;:::o;9853:281::-;9911:5;9935:23;9953:4;9935:23;:::i;:::-;9927:31;;9979:25;9995:8;9979:25;:::i;:::-;9967:37;;10023:104;10060:66;10050:8;10044:4;10023:104;:::i;:::-;10014:113;;9853:281;;;;:::o;10140:410::-;10180:7;10203:20;10221:1;10203:20;:::i;:::-;10198:25;;10237:20;10255:1;10237:20;:::i;:::-;10232:25;;10292:1;10289;10285:9;10314:30;10332:11;10314:30;:::i;:::-;10303:41;;10493:1;10484:7;10480:15;10477:1;10474:22;10454:1;10447:9;10427:83;10404:139;;10523:18;;:::i;:::-;10404:139;10188:362;10140:410;;;;:::o;10556:166::-;10696:18;10692:1;10684:6;10680:14;10673:42;10556:166;:::o;10728:366::-;10870:3;10891:67;10955:2;10950:3;10891:67;:::i;:::-;10884:74;;10967:93;11056:3;10967:93;:::i;:::-;11085:2;11080:3;11076:12;11069:19;;10728:366;;;:::o;11100:419::-;11266:4;11304:2;11293:9;11289:18;11281:26;;11353:9;11347:4;11343:20;11339:1;11328:9;11324:17;11317:47;11381:131;11507:4;11381:131;:::i;:::-;11373:139;;11100:419;;;:::o;11525:194::-;11565:4;11585:20;11603:1;11585:20;:::i;:::-;11580:25;;11619:20;11637:1;11619:20;:::i;:::-;11614:25;;11663:1;11660;11656:9;11648:17;;11687:1;11681:4;11678:11;11675:37;;;11692:18;;:::i;:::-;11675:37;11525:194;;;;:::o;11725:174::-;11865:26;11861:1;11853:6;11849:14;11842:50;11725:174;:::o;11905:366::-;12047:3;12068:67;12132:2;12127:3;12068:67;:::i;:::-;12061:74;;12144:93;12233:3;12144:93;:::i;:::-;12262:2;12257:3;12253:12;12246:19;;11905:366;;;:::o;12277:419::-;12443:4;12481:2;12470:9;12466:18;12458:26;;12530:9;12524:4;12520:20;12516:1;12505:9;12501:17;12494:47;12558:131;12684:4;12558:131;:::i;:::-;12550:139;;12277:419;;;:::o;12702:180::-;12750:77;12747:1;12740:88;12847:4;12844:1;12837:15;12871:4;12868:1;12861:15;12888:185;12928:1;12945:20;12963:1;12945:20;:::i;:::-;12940:25;;12979:20;12997:1;12979:20;:::i;:::-;12974:25;;13018:1;13008:35;;13023:18;;:::i;:::-;13008:35;13065:1;13062;13058:9;13053:14;;12888:185;;;;:::o;13079:191::-;13119:3;13138:20;13156:1;13138:20;:::i;:::-;13133:25;;13172:20;13190:1;13172:20;:::i;:::-;13167:25;;13215:1;13212;13208:9;13201:16;;13236:3;13233:1;13230:10;13227:36;;;13243:18;;:::i;:::-;13227:36;13079:191;;;;:::o;13276:160::-;13416:12;13412:1;13404:6;13400:14;13393:36;13276:160;:::o;13442:366::-;13584:3;13605:67;13669:2;13664:3;13605:67;:::i;:::-;13598:74;;13681:93;13770:3;13681:93;:::i;:::-;13799:2;13794:3;13790:12;13783:19;;13442:366;;;:::o;13814:419::-;13980:4;14018:2;14007:9;14003:18;13995:26;;14067:9;14061:4;14057:20;14053:1;14042:9;14038:17;14031:47;14095:131;14221:4;14095:131;:::i;:::-;14087:139;;13814:419;;;:::o;14239:164::-;14379:16;14375:1;14367:6;14363:14;14356:40;14239:164;:::o;14409:366::-;14551:3;14572:67;14636:2;14631:3;14572:67;:::i;:::-;14565:74;;14648:93;14737:3;14648:93;:::i;:::-;14766:2;14761:3;14757:12;14750:19;;14409:366;;;:::o;14781:419::-;14947:4;14985:2;14974:9;14970:18;14962:26;;15034:9;15028:4;15024:20;15020:1;15009:9;15005:17;14998:47;15062:131;15188:4;15062:131;:::i;:::-;15054:139;;14781:419;;;:::o;15206:160::-;15346:12;15342:1;15334:6;15330:14;15323:36;15206:160;:::o;15372:366::-;15514:3;15535:67;15599:2;15594:3;15535:67;:::i;:::-;15528:74;;15611:93;15700:3;15611:93;:::i;:::-;15729:2;15724:3;15720:12;15713:19;;15372:366;;;:::o;15744:419::-;15910:4;15948:2;15937:9;15933:18;15925:26;;15997:9;15991:4;15987:20;15983:1;15972:9;15968:17;15961:47;16025:131;16151:4;16025:131;:::i;:::-;16017:139;;15744:419;;;:::o;16169:162::-;16309:14;16305:1;16297:6;16293:14;16286:38;16169:162;:::o;16337:366::-;16479:3;16500:67;16564:2;16559:3;16500:67;:::i;:::-;16493:74;;16576:93;16665:3;16576:93;:::i;:::-;16694:2;16689:3;16685:12;16678:19;;16337:366;;;:::o;16709:419::-;16875:4;16913:2;16902:9;16898:18;16890:26;;16962:9;16956:4;16952:20;16948:1;16937:9;16933:17;16926:47;16990:131;17116:4;16990:131;:::i;:::-;16982:139;;16709:419;;;:::o;17134:166::-;17274:18;17270:1;17262:6;17258:14;17251:42;17134:166;:::o;17306:366::-;17448:3;17469:67;17533:2;17528:3;17469:67;:::i;:::-;17462:74;;17545:93;17634:3;17545:93;:::i;:::-;17663:2;17658:3;17654:12;17647:19;;17306:366;;;:::o;17678:419::-;17844:4;17882:2;17871:9;17867:18;17859:26;;17931:9;17925:4;17921:20;17917:1;17906:9;17902:17;17895:47;17959:131;18085:4;17959:131;:::i;:::-;17951:139;;17678:419;;;:::o;18103:165::-;18243:17;18239:1;18231:6;18227:14;18220:41;18103:165;:::o;18274:366::-;18416:3;18437:67;18501:2;18496:3;18437:67;:::i;:::-;18430:74;;18513:93;18602:3;18513:93;:::i;:::-;18631:2;18626:3;18622:12;18615:19;;18274:366;;;:::o;18646:419::-;18812:4;18850:2;18839:9;18835:18;18827:26;;18899:9;18893:4;18889:20;18885:1;18874:9;18870:17;18863:47;18927:131;19053:4;18927:131;:::i;:::-;18919:139;;18646:419;;;:::o;19071:143::-;19128:5;19159:6;19153:13;19144:22;;19175:33;19202:5;19175:33;:::i;:::-;19071:143;;;;:::o;19220:351::-;19290:6;19339:2;19327:9;19318:7;19314:23;19310:32;19307:119;;;19345:79;;:::i;:::-;19307:119;19465:1;19490:64;19546:7;19537:6;19526:9;19522:22;19490:64;:::i;:::-;19480:74;;19436:128;19220:351;;;;:::o;19577:332::-;19698:4;19736:2;19725:9;19721:18;19713:26;;19749:71;19817:1;19806:9;19802:17;19793:6;19749:71;:::i;:::-;19830:72;19898:2;19887:9;19883:18;19874:6;19830:72;:::i;:::-;19577:332;;;;;:::o;19915:98::-;19966:6;20000:5;19994:12;19984:22;;19915:98;;;:::o;20019:147::-;20120:11;20157:3;20142:18;;20019:147;;;;:::o;20172:386::-;20276:3;20304:38;20336:5;20304:38;:::i;:::-;20358:88;20439:6;20434:3;20358:88;:::i;:::-;20351:95;;20455:65;20513:6;20508:3;20501:4;20494:5;20490:16;20455:65;:::i;:::-;20545:6;20540:3;20536:16;20529:23;;20280:278;20172:386;;;;:::o;20564:271::-;20694:3;20716:93;20805:3;20796:6;20716:93;:::i;:::-;20709:100;;20826:3;20819:10;;20564:271;;;;:::o;20841:166::-;20981:18;20977:1;20969:6;20965:14;20958:42;20841:166;:::o;21013:366::-;21155:3;21176:67;21240:2;21235:3;21176:67;:::i;:::-;21169:74;;21252:93;21341:3;21252:93;:::i;:::-;21370:2;21365:3;21361:12;21354:19;;21013:366;;;:::o;21385:419::-;21551:4;21589:2;21578:9;21574:18;21566:26;;21638:9;21632:4;21628:20;21624:1;21613:9;21609:17;21602:47;21666:131;21792:4;21666:131;:::i;:::-;21658:139;;21385:419;;;:::o;21810:60::-;21838:3;21859:5;21852:12;;21810:60;;;:::o;21876:142::-;21926:9;21959:53;21977:34;21986:24;22004:5;21986:24;:::i;:::-;21977:34;:::i;:::-;21959:53;:::i;:::-;21946:66;;21876:142;;;:::o;22024:126::-;22074:9;22107:37;22138:5;22107:37;:::i;:::-;22094:50;;22024:126;;;:::o;22156:134::-;22214:9;22247:37;22278:5;22247:37;:::i;:::-;22234:50;;22156:134;;;:::o;22296:147::-;22391:45;22430:5;22391:45;:::i;:::-;22386:3;22379:58;22296:147;;:::o;22449:238::-;22550:4;22588:2;22577:9;22573:18;22565:26;;22601:79;22677:1;22666:9;22662:17;22653:6;22601:79;:::i;:::-;22449:238;;;;:::o;22693:179::-;22833:31;22829:1;22821:6;22817:14;22810:55;22693:179;:::o;22878:366::-;23020:3;23041:67;23105:2;23100:3;23041:67;:::i;:::-;23034:74;;23117:93;23206:3;23117:93;:::i;:::-;23235:2;23230:3;23226:12;23219:19;;22878:366;;;:::o;23250:419::-;23416:4;23454:2;23443:9;23439:18;23431:26;;23503:9;23497:4;23493:20;23489:1;23478:9;23474:17;23467:47;23531:131;23657:4;23531:131;:::i;:::-;23523:139;;23250:419;;;:::o;23675:161::-;23815:13;23811:1;23803:6;23799:14;23792:37;23675:161;:::o;23842:366::-;23984:3;24005:67;24069:2;24064:3;24005:67;:::i;:::-;23998:74;;24081:93;24170:3;24081:93;:::i;:::-;24199:2;24194:3;24190:12;24183:19;;23842:366;;;:::o;24214:419::-;24380:4;24418:2;24407:9;24403:18;24395:26;;24467:9;24461:4;24457:20;24453:1;24442:9;24438:17;24431:47;24495:131;24621:4;24495:131;:::i;:::-;24487:139;;24214:419;;;:::o;24639:167::-;24779:19;24775:1;24767:6;24763:14;24756:43;24639:167;:::o;24812:366::-;24954:3;24975:67;25039:2;25034:3;24975:67;:::i;:::-;24968:74;;25051:93;25140:3;25051:93;:::i;:::-;25169:2;25164:3;25160:12;25153:19;;24812:366;;;:::o;25184:419::-;25350:4;25388:2;25377:9;25373:18;25365:26;;25437:9;25431:4;25427:20;25423:1;25412:9;25408:17;25401:47;25465:131;25591:4;25465:131;:::i;:::-;25457:139;;25184:419;;;:::o;25609:85::-;25654:7;25683:5;25672:16;;25609:85;;;:::o;25700:158::-;25758:9;25791:61;25809:42;25818:32;25844:5;25818:32;:::i;:::-;25809:42;:::i;:::-;25791:61;:::i;:::-;25778:74;;25700:158;;;:::o;25864:147::-;25959:45;25998:5;25959:45;:::i;:::-;25954:3;25947:58;25864:147;;:::o;26017:807::-;26266:4;26304:3;26293:9;26289:19;26281:27;;26318:71;26386:1;26375:9;26371:17;26362:6;26318:71;:::i;:::-;26399:72;26467:2;26456:9;26452:18;26443:6;26399:72;:::i;:::-;26481:80;26557:2;26546:9;26542:18;26533:6;26481:80;:::i;:::-;26571;26647:2;26636:9;26632:18;26623:6;26571:80;:::i;:::-;26661:73;26729:3;26718:9;26714:19;26705:6;26661:73;:::i;:::-;26744;26812:3;26801:9;26797:19;26788:6;26744:73;:::i;:::-;26017:807;;;;;;;;;:::o;26830:143::-;26887:5;26918:6;26912:13;26903:22;;26934:33;26961:5;26934:33;:::i;:::-;26830:143;;;;:::o;26979:663::-;27067:6;27075;27083;27132:2;27120:9;27111:7;27107:23;27103:32;27100:119;;;27138:79;;:::i;:::-;27100:119;27258:1;27283:64;27339:7;27330:6;27319:9;27315:22;27283:64;:::i;:::-;27273:74;;27229:128;27396:2;27422:64;27478:7;27469:6;27458:9;27454:22;27422:64;:::i;:::-;27412:74;;27367:129;27535:2;27561:64;27617:7;27608:6;27597:9;27593:22;27561:64;:::i;:::-;27551:74;;27506:129;26979:663;;;;;:::o;27648:180::-;27696:77;27693:1;27686:88;27793:4;27790:1;27783:15;27817:4;27814:1;27807:15;27834:180;27882:77;27879:1;27872:88;27979:4;27976:1;27969:15;28003:4;28000:1;27993:15;28020:114;28087:6;28121:5;28115:12;28105:22;;28020:114;;;:::o;28140:184::-;28239:11;28273:6;28268:3;28261:19;28313:4;28308:3;28304:14;28289:29;;28140:184;;;;:::o;28330:132::-;28397:4;28420:3;28412:11;;28450:4;28445:3;28441:14;28433:22;;28330:132;;;:::o;28468:108::-;28545:24;28563:5;28545:24;:::i;:::-;28540:3;28533:37;28468:108;;:::o;28582:179::-;28651:10;28672:46;28714:3;28706:6;28672:46;:::i;:::-;28750:4;28745:3;28741:14;28727:28;;28582:179;;;;:::o;28767:113::-;28837:4;28869;28864:3;28860:14;28852:22;;28767:113;;;:::o;28916:732::-;29035:3;29064:54;29112:5;29064:54;:::i;:::-;29134:86;29213:6;29208:3;29134:86;:::i;:::-;29127:93;;29244:56;29294:5;29244:56;:::i;:::-;29323:7;29354:1;29339:284;29364:6;29361:1;29358:13;29339:284;;;29440:6;29434:13;29467:63;29526:3;29511:13;29467:63;:::i;:::-;29460:70;;29553:60;29606:6;29553:60;:::i;:::-;29543:70;;29399:224;29386:1;29383;29379:9;29374:14;;29339:284;;;29343:14;29639:3;29632:10;;29040:608;;;28916:732;;;;:::o;29654:831::-;29917:4;29955:3;29944:9;29940:19;29932:27;;29969:71;30037:1;30026:9;30022:17;30013:6;29969:71;:::i;:::-;30050:80;30126:2;30115:9;30111:18;30102:6;30050:80;:::i;:::-;30177:9;30171:4;30167:20;30162:2;30151:9;30147:18;30140:48;30205:108;30308:4;30299:6;30205:108;:::i;:::-;30197:116;;30323:72;30391:2;30380:9;30376:18;30367:6;30323:72;:::i;:::-;30405:73;30473:3;30462:9;30458:19;30449:6;30405:73;:::i;:::-;29654:831;;;;;;;;:::o

Swarm Source

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