ETH Price: $3,877.74 (-1.18%)

Token

ERC-20: ONIGAMI INU (ONIGAMI)
 

Overview

Max Total Supply

100,000,000 ONIGAMI

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
defialloddssimp.eth
Balance
1,395,324.477184875894439983 ONIGAMI

Value
$0.00
0x6CFE0f1Cfc110be97C4D5Cc838F26c8f5Ca08f17
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:
ONIGAMI

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**
https://t.me/OnigamiinuErc
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function transferOwnership(address _newOwner) public virtual onlyOwner {
        emit OwnershipTransferred(_owner, _newOwner);
        _owner = _newOwner;
        
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}  

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

contract ONIGAMI is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isOutFromFee;
    mapping (address => bool) private isBlacklisted;

    uint256 private time;
    uint256 private bTime;

    uint256 private _totalSupply = 10**8 * 10**18;

    struct TaxStructure {
        uint256 totalPc;
        uint256 pcMarketing;
        uint256 pcDevelopment;
        uint256 pcLP;
    }
    TaxStructure private sellTax = TaxStructure(50,25,15,10);
    TaxStructure private buyTax = TaxStructure(200,110,70,20);
    TaxStructure private ZERO = TaxStructure(0,0,0,0);
    TaxStructure private initialTax = TaxStructure(990,635,345,10);
    TaxStructure private initialSellTax = TaxStructure(500,325,165,10);

    string private constant _name = unicode"ONIGAMI INU";
    string private constant _symbol = unicode"ONIGAMI";
    uint8 private constant _decimals = 18;

    uint256 private _maxTxAmount = _totalSupply.div(100);
    uint256 private _maxWalletAmount = _totalSupply.div(50);
    uint256 private liquidityParkedTokens = 0;
    uint256 private marketingParkedTokens = 0;
    uint256 private developmentParkedTokens = 0;
    uint256 private minBalance = _totalSupply.div(10000);

    address payable private _marketingWallet;
    address payable private _developmentWallet;

    IUniswapV2Router02 private uniswapV2Router;

    address private uniswapV2PairAddress;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () payable {
        _marketingWallet = payable(0x42cD2ceB7C1e54F9B90457C57B91799788F09574);
        _developmentWallet = payable(0x42cD2ceB7C1e54F9B90457C57B91799788F09574);
        _balOwned[owner()] = _totalSupply;

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2PairAddress = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        _isOutFromFee[owner()] = true;
        _isOutFromFee[address(this)] = true;
        _isOutFromFee[uniswapV2PairAddress] = true;


        emit Transfer(address(0),address(this),_totalSupply);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ONIGAMI: transfer amount exceeds allowance"));
        return true;
    }

  

    function updateBuyTax(uint256 _marketing,uint256 _development,uint256 _lp) external onlyOwner {
        buyTax.pcLP = _lp;
        buyTax.pcMarketing = _marketing;
        buyTax.pcDevelopment = _development;
        buyTax.totalPc = _marketing.add(_lp).add(_development);
        require(buyTax.totalPc < 200,"ONIGAMI: Buy tax can not greater than 20%");
    }
    function updateSellTax(uint256 _marketing,uint256 _development,uint256 _lp) external onlyOwner {
        sellTax.pcLP = _lp;
        sellTax.pcMarketing = _marketing;
        sellTax.pcDevelopment = _development;
        sellTax.totalPc = _marketing.add(_lp).add(_development);
        require(sellTax.totalPc < 100,"ONIGAMI: Sell tax can not greater than 10%");
    }

    function updateLimits(uint256 maxTransactionPer,uint256 maxWalletPer) external onlyOwner {
        require(maxTransactionPer > 1 && maxWalletPer > 1,"ONIGAMI: Max Wallet and max transction limits should be greater than 1%");
        _maxTxAmount = _totalSupply.mul(maxTransactionPer).div(100);
        _maxWalletAmount = _totalSupply.mul(maxWalletPer).div(100);
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _totalSupply;
    }


    function excludeFromFees(address[] calldata target) external onlyOwner{
        for(uint i=0;i<target.length;i++)
            _isOutFromFee[target[i]] = true;
    }

   
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ONIGAMI: Approving from the zero address");
        require(spender != address(0), "ONIGAMI: Approving to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ONIGAMI: Transfer from the zero address");
        require(to != address(0), "ONIGAMI: Transfer to the zero address");

        if (from != owner() && to != owner()) {
            require(tradingOpen,"ONIGAMI: trading != true");
            require(!isBlacklisted[from] && !isBlacklisted[to]);

            TaxStructure storage _tax = ZERO;
            if(!_isOutFromFee[to]){
                require((_balOwned[to] + amount) <= _maxWalletAmount,"ONIGAMI: Max Wallet Limit");
                require(amount <= _maxTxAmount,"ONIGAMI: Max TxAmount Limit");
                if (from == uniswapV2PairAddress && to != address(uniswapV2Router)){
                    _tax = buyTax;
                }
                if(bTime > block.number){
                    _tax = initialTax;
                }
            }

            else if (to == uniswapV2PairAddress && from != address(uniswapV2Router) && ! _isOutFromFee[from]) {
                if(block.timestamp > time){
                    _tax = sellTax;
                }else{
                    _tax = initialSellTax;
                }
            }
            
            
            if (!inSwap && from != uniswapV2PairAddress && swapEnabled && !_isOutFromFee[from] && balanceOf(address(this)) > minBalance) {
                    swapBack(false);
            }

            if(_tax.totalPc>0){
                uint256 txTax = amount.mul(_tax.totalPc).div(1000);
                amount = amount.sub(txTax);
                liquidityParkedTokens = liquidityParkedTokens.add(txTax.mul(_tax.pcLP).div(_tax.totalPc));
                marketingParkedTokens = marketingParkedTokens.add(txTax.mul(_tax.pcMarketing).div(_tax.totalPc));
                developmentParkedTokens = developmentParkedTokens.add(txTax.mul(_tax.pcDevelopment).div(_tax.totalPc));
                _transferStandard(from,address(this),txTax);
            }
        }
        		
        _transferStandard(from,to,amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    

    function addLiquidity(uint256 tokenAmount,uint256 ethValue) private {
        _approve(address(this),address(uniswapV2Router),tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethValue}(address(this),tokenAmount,0,0,address(0xdEaD),block.timestamp);
    }

    function swapBack(bool _force) private lockTheSwap {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = liquidityParkedTokens + marketingParkedTokens + developmentParkedTokens;
        bool success;

        if (contractTokenBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (!_force && (contractTokenBalance > (minBalance * 20))) {
            contractTokenBalance = minBalance * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractTokenBalance * liquidityParkedTokens) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractTokenBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(marketingParkedTokens).div(totalTokensToSwap);

        uint256 ethForDevelopment = ethBalance.mul(developmentParkedTokens).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDevelopment;

        liquidityParkedTokens = 0;
        marketingParkedTokens = 0;
        developmentParkedTokens = 0;

        (success, ) = address(_developmentWallet).call{value: ethForDevelopment}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success, ) = address(_marketingWallet).call{
            value: address(this).balance
        }("");

    }
    

    
    function enableTrading() external onlyOwner {
        require(!tradingOpen,"trading is already open");
        swapEnabled = true;
        tradingOpen = true;
        time = block.timestamp + (10 minutes);
        bTime = block.number + 2;
    }
    
    function setBlacklist(address[] memory _isBlacklisted) public onlyOwner {
        for (uint i = 0; i < _isBlacklisted.length; i++) {
            isBlacklisted[_isBlacklisted[i]] = true;
        }
    }
    
    function removeBlacklist(address[] memory notbot) public onlyOwner {
        for(uint i=0;i<notbot.length;i++){isBlacklisted[notbot[i]] = false;}
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        _balOwned[sender] = _balOwned[sender].sub(tAmount);
        _balOwned[recipient] = _balOwned[recipient].add(tAmount); 
        emit Transfer(sender, recipient, tAmount);
    }

    receive() external payable {}
    
    function manualSwap() external onlyOwner{
        swapBack(true);
    }

    function recoverTokens(address tokenAddress) external onlyOwner {
        require(tokenAddress != uniswapV2PairAddress);
        IERC20 _token = IERC20(tokenAddress);
        _token.transfer(msg.sender,_token.balanceOf(address(this)));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"target","type":"address[]"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"removeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_isBlacklisted","type":"address[]"}],"name":"setBlacklist","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_lp","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTransactionPer","type":"uint256"},{"internalType":"uint256","name":"maxWalletPer","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_lp","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526a52b7d2dcc80cd2e400000060085560405180608001604052806032815260200160198152602001600f8152602001600a8152506009600082015181600001556020820151816001015560408201518160020155606082015181600301555050604051806080016040528060c88152602001606e8152602001604681526020016014815250600d60008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180608001604052806000815260200160008152602001600081526020016000815250601160008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180608001604052806103de815260200161027b81526020016101598152602001600a815250601560008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180608001604052806101f48152602001610145815260200160a58152602001600a8152506019600082015181600001556020820151816001015560408201518160020155606082015181600301555050620001ca60646008546200081960201b620015f31790919060201c565b601d55620001ea60326008546200081960201b620015f31790919060201c565b601e556000601f55600060205560006021556200021a6127106008546200081960201b620015f31790919060201c565b6022556000602660156101000a81548160ff0219169083151502179055506000602660166101000a81548160ff0219169083151502179055506000620002656200086b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507342cd2ceb7c1e54f9b90457c57b91799788f09574602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507342cd2ceb7c1e54f9b90457c57b91799788f09574602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085460026000620003c46200087360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620004c057600080fd5b505afa158015620004d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fb91906200096e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200058057600080fd5b505afa15801562000595573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005bb91906200096e565b6040518363ffffffff1660e01b8152600401620005da929190620009b1565b602060405180830381600087803b158015620005f557600080fd5b505af11580156200060a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200063091906200096e565b602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000620006866200087360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008546040516200080b9190620009f9565b60405180910390a362000b45565b60006200086383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200089c60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620008e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008dd919062000aba565b60405180910390fd5b5060008385620008f7919062000b0d565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009368262000909565b9050919050565b620009488162000929565b81146200095457600080fd5b50565b60008151905062000968816200093d565b92915050565b60006020828403121562000987576200098662000904565b5b6000620009978482850162000957565b91505092915050565b620009ab8162000929565b82525050565b6000604082019050620009c86000830185620009a0565b620009d76020830184620009a0565b9392505050565b6000819050919050565b620009f381620009de565b82525050565b600060208201905062000a106000830184620009e8565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000a5257808201518184015260208101905062000a35565b8381111562000a62576000848401525b50505050565b6000601f19601f8301169050919050565b600062000a868262000a16565b62000a92818562000a21565b935062000aa481856020860162000a32565b62000aaf8162000a68565b840191505092915050565b6000602082019050818103600083015262000ad6818462000a79565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b1a82620009de565b915062000b2783620009de565b92508262000b3a5762000b3962000ade565b5b828204905092915050565b613c3e8062000b556000396000f3fe6080604052600436106101395760003560e01c80637911ef9d116100ab578063a0a485ca1161006f578063a0a485ca146103d3578063a2240e19146103fc578063a9059cbb14610425578063bf77249114610462578063dd62ed3e1461048b578063f2fde38b146104c857610140565b80637911ef9d146103145780638a8c523c1461033d5780638da5cb5b1461035457806392f428701461037f57806395d89b41146103a857610140565b806323b872dd116100fd57806323b872dd1461022a578063313ce5671461026757806351bc3c851461029257806370a08231146102a9578063715018a6146102e6578063751039fc146102fd57610140565b806305f936501461014557806306fdde031461016e578063095ea7b31461019957806316114acd146101d657806318160ddd146101ff57610140565b3661014057005b600080fd5b34801561015157600080fd5b5061016c600480360381019061016791906129b2565b6104f1565b005b34801561017a57600080fd5b5061018361061f565b6040516101909190612a9e565b60405180910390f35b3480156101a557600080fd5b506101c060048036038101906101bb9190612b1e565b61065c565b6040516101cd9190612b79565b60405180910390f35b3480156101e257600080fd5b506101fd60048036038101906101f89190612b94565b61067a565b005b34801561020b57600080fd5b50610214610889565b6040516102219190612bd0565b60405180910390f35b34801561023657600080fd5b50610251600480360381019061024c9190612beb565b610893565b60405161025e9190612b79565b60405180910390f35b34801561027357600080fd5b5061027c61096c565b6040516102899190612c5a565b60405180910390f35b34801561029e57600080fd5b506102a7610975565b005b3480156102b557600080fd5b506102d060048036038101906102cb9190612b94565b610a16565b6040516102dd9190612bd0565b60405180910390f35b3480156102f257600080fd5b506102fb610a5f565b005b34801561030957600080fd5b50610312610bb2565b005b34801561032057600080fd5b5061033b60048036038101906103369190612dbd565b610c52565b005b34801561034957600080fd5b50610352610d7c565b005b34801561036057600080fd5b50610369610ec0565b6040516103769190612e15565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a19190612e8b565b610ee9565b005b3480156103b457600080fd5b506103bd611023565b6040516103ca9190612a9e565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f591906129b2565b611060565b005b34801561040857600080fd5b50610423600480360381019061041e9190612ed8565b61118e565b005b34801561043157600080fd5b5061044c60048036038101906104479190612b1e565b6112d2565b6040516104599190612b79565b60405180910390f35b34801561046e57600080fd5b5061048960048036038101906104849190612dbd565b6112f0565b005b34801561049757600080fd5b506104b260048036038101906104ad9190612f18565b61141a565b6040516104bf9190612bd0565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea9190612b94565b6114a1565b005b6104f961163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057d90612fa4565b60405180910390fd5b8060096003018190555082600960010181905550816009600201819055506105c9826105bb838661164590919063ffffffff16565b61164590919063ffffffff16565b60096000018190555060646009600001541061061a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061190613036565b60405180910390fd5b505050565b60606040518060400160405280600b81526020017f4f4e4947414d4920494e55000000000000000000000000000000000000000000815250905090565b600061067061066961163d565b84846116a3565b6001905092915050565b61068261163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070690612fa4565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561076a57600080fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107c59190612e15565b60206040518083038186803b1580156107dd57600080fd5b505afa1580156107f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610815919061306b565b6040518363ffffffff1660e01b8152600401610832929190613098565b602060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088491906130ed565b505050565b6000600854905090565b60006108a084848461186e565b610961846108ac61163d565b61095c856040518060600160405280602a8152602001613bdf602a9139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061091261163d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201c9092919063ffffffff16565b6116a3565b600190509392505050565b60006012905090565b61097d61163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0190612fa4565b60405180910390fd5b610a146001612080565b565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a6761163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb90612fa4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610bba61163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e90612fa4565b60405180910390fd5b600854601d81905550565b610c5a61163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90612fa4565b60405180910390fd5b60005b8151811015610d7857600060056000848481518110610d0c57610d0b61311a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d7090613178565b915050610cea565b5050565b610d8461163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0890612fa4565b60405180910390fd5b602660149054906101000a900460ff1615610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e589061320d565b60405180910390fd5b6001602660166101000a81548160ff0219169083151502179055506001602660146101000a81548160ff02191690831515021790555061025842610ea5919061322d565b600681905550600243610eb8919061322d565b600781905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ef161163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590612fa4565b60405180910390fd5b60005b8282905081101561101e57600160046000858585818110610fa557610fa461311a565b5b9050602002016020810190610fba9190612b94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061101690613178565b915050610f81565b505050565b60606040518060400160405280600781526020017f4f4e4947414d4900000000000000000000000000000000000000000000000000815250905090565b61106861163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90612fa4565b60405180910390fd5b80600d6003018190555082600d6001018190555081600d600201819055506111388261112a838661164590919063ffffffff16565b61164590919063ffffffff16565b600d6000018190555060c8600d6000015410611189576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611180906132f5565b60405180910390fd5b505050565b61119661163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a90612fa4565b60405180910390fd5b6001821180156112335750600181115b611272576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611269906133ad565b60405180910390fd5b61129a606461128c8460085461236b90919063ffffffff16565b6115f390919063ffffffff16565b601d819055506112c860646112ba8360085461236b90919063ffffffff16565b6115f390919063ffffffff16565b601e819055505050565b60006112e66112df61163d565b848461186e565b6001905092915050565b6112f861163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137c90612fa4565b60405180910390fd5b60005b8151811015611416576001600560008484815181106113aa576113a961311a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061140e90613178565b915050611388565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114a961163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d90612fa4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061163583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123e6565b905092915050565b600033905090565b6000808284611654919061322d565b905083811015611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090613419565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a906134ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177a9061353d565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118619190612bd0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d5906135cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561194e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194590613661565b60405180910390fd5b611956610ec0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119c45750611994610ec0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561200c57602660149054906101000a900460ff16611a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0f906136cd565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611abc5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ac557600080fd5b600060119050600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611cb957601e5482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b6a919061322d565b1115611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613739565b60405180910390fd5b601d54821115611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be7906137a5565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c9b5750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ca557600d90505b436007541115611cb457601590505b611dd9565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d645750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611dba5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611dd857600654421115611dd25760099050611dd7565b601990505b5b5b602660159054906101000a900460ff16158015611e445750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e5c5750602660169054906101000a900460ff165b8015611eb25750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ec75750602254611ec530610a16565b115b15611ed757611ed66000612080565b5b60008160000154111561200a576000611f116103e8611f0384600001548661236b90919063ffffffff16565b6115f390919063ffffffff16565b9050611f26818461244990919063ffffffff16565b9250611f69611f588360000154611f4a85600301548561236b90919063ffffffff16565b6115f390919063ffffffff16565b601f5461164590919063ffffffff16565b601f81905550611fb0611f9f8360000154611f9185600101548561236b90919063ffffffff16565b6115f390919063ffffffff16565b60205461164590919063ffffffff16565b602081905550611ff7611fe68360000154611fd885600201548561236b90919063ffffffff16565b6115f390919063ffffffff16565b60215461164590919063ffffffff16565b602181905550612008853083612493565b505b505b612017838383612493565b505050565b6000838311158290612064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205b9190612a9e565b60405180910390fd5b506000838561207391906137c5565b9050809150509392505050565b6001602660156101000a81548160ff02191690831515021790555060006120a630610a16565b90506000602154602054601f546120bd919061322d565b6120c7919061322d565b90506000808314806120d95750600082145b156120e65750505061234d565b83158015612101575060146022546120fe91906137f9565b83115b1561211857601460225461211591906137f9565b92505b6000600283601f548661212b91906137f9565b6121359190613882565b61213f9190613882565b90506000612156828661244990919063ffffffff16565b9050600047905061216682612627565b600061217b824761244990919063ffffffff16565b905060006121a6876121986020548561236b90919063ffffffff16565b6115f390919063ffffffff16565b905060006121d1886121c36021548661236b90919063ffffffff16565b6115f390919063ffffffff16565b905060008183856121e291906137c5565b6121ec91906137c5565b90506000601f8190555060006020819055506000602181905550602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161224c906138e4565b60006040518083038185875af1925050503d8060008114612289576040519150601f19603f3d011682016040523d82523d6000602084013e61228e565b606091505b5050809850506000871180156122a45750600081115b156122b4576122b38782612879565b5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516122fa906138e4565b60006040518083038185875af1925050503d8060008114612337576040519150601f19603f3d011682016040523d82523d6000602084013e61233c565b606091505b505080985050505050505050505050505b6000602660156101000a81548160ff02191690831515021790555050565b60008083141561237e57600090506123e0565b6000828461238c91906137f9565b905082848261239b9190613882565b146123db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d29061396b565b60405180910390fd5b809150505b92915050565b6000808311829061242d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124249190612a9e565b60405180910390fd5b506000838561243c9190613882565b9050809150509392505050565b600061248b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061201c565b905092915050565b6124e581600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244990919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061257a81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164590919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161261a9190612bd0565b60405180910390a3505050565b6000600267ffffffffffffffff81111561264457612643612c7a565b5b6040519080825280602002602001820160405280156126725781602001602082028036833780820191505090505b509050308160008151811061268a5761268961311a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272c57600080fd5b505afa158015612740573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276491906139a0565b816001815181106127785761277761311a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127df30602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116a3565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612843959493929190613ad0565b600060405180830381600087803b15801561285d57600080fd5b505af1158015612871573d6000803e3d6000fd5b505050505050565b6128a630602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116a3565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161290f96959493929190613b2a565b6060604051808303818588803b15801561292857600080fd5b505af115801561293c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129619190613b8b565b5050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61298f8161297c565b811461299a57600080fd5b50565b6000813590506129ac81612986565b92915050565b6000806000606084860312156129cb576129ca612972565b5b60006129d98682870161299d565b93505060206129ea8682870161299d565b92505060406129fb8682870161299d565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a3f578082015181840152602081019050612a24565b83811115612a4e576000848401525b50505050565b6000601f19601f8301169050919050565b6000612a7082612a05565b612a7a8185612a10565b9350612a8a818560208601612a21565b612a9381612a54565b840191505092915050565b60006020820190508181036000830152612ab88184612a65565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612aeb82612ac0565b9050919050565b612afb81612ae0565b8114612b0657600080fd5b50565b600081359050612b1881612af2565b92915050565b60008060408385031215612b3557612b34612972565b5b6000612b4385828601612b09565b9250506020612b548582860161299d565b9150509250929050565b60008115159050919050565b612b7381612b5e565b82525050565b6000602082019050612b8e6000830184612b6a565b92915050565b600060208284031215612baa57612ba9612972565b5b6000612bb884828501612b09565b91505092915050565b612bca8161297c565b82525050565b6000602082019050612be56000830184612bc1565b92915050565b600080600060608486031215612c0457612c03612972565b5b6000612c1286828701612b09565b9350506020612c2386828701612b09565b9250506040612c348682870161299d565b9150509250925092565b600060ff82169050919050565b612c5481612c3e565b82525050565b6000602082019050612c6f6000830184612c4b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cb282612a54565b810181811067ffffffffffffffff82111715612cd157612cd0612c7a565b5b80604052505050565b6000612ce4612968565b9050612cf08282612ca9565b919050565b600067ffffffffffffffff821115612d1057612d0f612c7a565b5b602082029050602081019050919050565b600080fd5b6000612d39612d3484612cf5565b612cda565b90508083825260208201905060208402830185811115612d5c57612d5b612d21565b5b835b81811015612d855780612d718882612b09565b845260208401935050602081019050612d5e565b5050509392505050565b600082601f830112612da457612da3612c75565b5b8135612db4848260208601612d26565b91505092915050565b600060208284031215612dd357612dd2612972565b5b600082013567ffffffffffffffff811115612df157612df0612977565b5b612dfd84828501612d8f565b91505092915050565b612e0f81612ae0565b82525050565b6000602082019050612e2a6000830184612e06565b92915050565b600080fd5b60008083601f840112612e4b57612e4a612c75565b5b8235905067ffffffffffffffff811115612e6857612e67612e30565b5b602083019150836020820283011115612e8457612e83612d21565b5b9250929050565b60008060208385031215612ea257612ea1612972565b5b600083013567ffffffffffffffff811115612ec057612ebf612977565b5b612ecc85828601612e35565b92509250509250929050565b60008060408385031215612eef57612eee612972565b5b6000612efd8582860161299d565b9250506020612f0e8582860161299d565b9150509250929050565b60008060408385031215612f2f57612f2e612972565b5b6000612f3d85828601612b09565b9250506020612f4e85828601612b09565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f8e602083612a10565b9150612f9982612f58565b602082019050919050565b60006020820190508181036000830152612fbd81612f81565b9050919050565b7f4f4e4947414d493a2053656c6c207461782063616e206e6f742067726561746560008201527f72207468616e2031302500000000000000000000000000000000000000000000602082015250565b6000613020602a83612a10565b915061302b82612fc4565b604082019050919050565b6000602082019050818103600083015261304f81613013565b9050919050565b60008151905061306581612986565b92915050565b60006020828403121561308157613080612972565b5b600061308f84828501613056565b91505092915050565b60006040820190506130ad6000830185612e06565b6130ba6020830184612bc1565b9392505050565b6130ca81612b5e565b81146130d557600080fd5b50565b6000815190506130e7816130c1565b92915050565b60006020828403121561310357613102612972565b5b6000613111848285016130d8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131838261297c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156131b6576131b5613149565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006131f7601783612a10565b9150613202826131c1565b602082019050919050565b60006020820190508181036000830152613226816131ea565b9050919050565b60006132388261297c565b91506132438361297c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561327857613277613149565b5b828201905092915050565b7f4f4e4947414d493a20427579207461782063616e206e6f74206772656174657260008201527f207468616e203230250000000000000000000000000000000000000000000000602082015250565b60006132df602983612a10565b91506132ea82613283565b604082019050919050565b6000602082019050818103600083015261330e816132d2565b9050919050565b7f4f4e4947414d493a204d61782057616c6c657420616e64206d6178207472616e60008201527f736374696f6e206c696d6974732073686f756c6420626520677265617465722060208201527f7468616e20312500000000000000000000000000000000000000000000000000604082015250565b6000613397604783612a10565b91506133a282613315565b606082019050919050565b600060208201905081810360008301526133c68161338a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613403601b83612a10565b915061340e826133cd565b602082019050919050565b60006020820190508181036000830152613432816133f6565b9050919050565b7f4f4e4947414d493a20417070726f76696e672066726f6d20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000613495602883612a10565b91506134a082613439565b604082019050919050565b600060208201905081810360008301526134c481613488565b9050919050565b7f4f4e4947414d493a20417070726f76696e6720746f20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613527602683612a10565b9150613532826134cb565b604082019050919050565b600060208201905081810360008301526135568161351a565b9050919050565b7f4f4e4947414d493a205472616e736665722066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b60006135b9602783612a10565b91506135c48261355d565b604082019050919050565b600060208201905081810360008301526135e8816135ac565b9050919050565b7f4f4e4947414d493a205472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061364b602583612a10565b9150613656826135ef565b604082019050919050565b6000602082019050818103600083015261367a8161363e565b9050919050565b7f4f4e4947414d493a2074726164696e6720213d20747275650000000000000000600082015250565b60006136b7601883612a10565b91506136c282613681565b602082019050919050565b600060208201905081810360008301526136e6816136aa565b9050919050565b7f4f4e4947414d493a204d61782057616c6c6574204c696d697400000000000000600082015250565b6000613723601983612a10565b915061372e826136ed565b602082019050919050565b6000602082019050818103600083015261375281613716565b9050919050565b7f4f4e4947414d493a204d6178205478416d6f756e74204c696d69740000000000600082015250565b600061378f601b83612a10565b915061379a82613759565b602082019050919050565b600060208201905081810360008301526137be81613782565b9050919050565b60006137d08261297c565b91506137db8361297c565b9250828210156137ee576137ed613149565b5b828203905092915050565b60006138048261297c565b915061380f8361297c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561384857613847613149565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061388d8261297c565b91506138988361297c565b9250826138a8576138a7613853565b5b828204905092915050565b600081905092915050565b50565b60006138ce6000836138b3565b91506138d9826138be565b600082019050919050565b60006138ef826138c1565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613955602183612a10565b9150613960826138f9565b604082019050919050565b6000602082019050818103600083015261398481613948565b9050919050565b60008151905061399a81612af2565b92915050565b6000602082840312156139b6576139b5612972565b5b60006139c48482850161398b565b91505092915050565b6000819050919050565b6000819050919050565b60006139fc6139f76139f2846139cd565b6139d7565b61297c565b9050919050565b613a0c816139e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a4781612ae0565b82525050565b6000613a598383613a3e565b60208301905092915050565b6000602082019050919050565b6000613a7d82613a12565b613a878185613a1d565b9350613a9283613a2e565b8060005b83811015613ac3578151613aaa8882613a4d565b9750613ab583613a65565b925050600181019050613a96565b5085935050505092915050565b600060a082019050613ae56000830188612bc1565b613af26020830187613a03565b8181036040830152613b048186613a72565b9050613b136060830185612e06565b613b206080830184612bc1565b9695505050505050565b600060c082019050613b3f6000830189612e06565b613b4c6020830188612bc1565b613b596040830187613a03565b613b666060830186613a03565b613b736080830185612e06565b613b8060a0830184612bc1565b979650505050505050565b600080600060608486031215613ba457613ba3612972565b5b6000613bb286828701613056565b9350506020613bc386828701613056565b9250506040613bd486828701613056565b915050925092509256fe4f4e4947414d493a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa3d61bf81bcae56fc6a19f8ec965b78c3357e5667b7d6e7255f22a78176f2ca64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101395760003560e01c80637911ef9d116100ab578063a0a485ca1161006f578063a0a485ca146103d3578063a2240e19146103fc578063a9059cbb14610425578063bf77249114610462578063dd62ed3e1461048b578063f2fde38b146104c857610140565b80637911ef9d146103145780638a8c523c1461033d5780638da5cb5b1461035457806392f428701461037f57806395d89b41146103a857610140565b806323b872dd116100fd57806323b872dd1461022a578063313ce5671461026757806351bc3c851461029257806370a08231146102a9578063715018a6146102e6578063751039fc146102fd57610140565b806305f936501461014557806306fdde031461016e578063095ea7b31461019957806316114acd146101d657806318160ddd146101ff57610140565b3661014057005b600080fd5b34801561015157600080fd5b5061016c600480360381019061016791906129b2565b6104f1565b005b34801561017a57600080fd5b5061018361061f565b6040516101909190612a9e565b60405180910390f35b3480156101a557600080fd5b506101c060048036038101906101bb9190612b1e565b61065c565b6040516101cd9190612b79565b60405180910390f35b3480156101e257600080fd5b506101fd60048036038101906101f89190612b94565b61067a565b005b34801561020b57600080fd5b50610214610889565b6040516102219190612bd0565b60405180910390f35b34801561023657600080fd5b50610251600480360381019061024c9190612beb565b610893565b60405161025e9190612b79565b60405180910390f35b34801561027357600080fd5b5061027c61096c565b6040516102899190612c5a565b60405180910390f35b34801561029e57600080fd5b506102a7610975565b005b3480156102b557600080fd5b506102d060048036038101906102cb9190612b94565b610a16565b6040516102dd9190612bd0565b60405180910390f35b3480156102f257600080fd5b506102fb610a5f565b005b34801561030957600080fd5b50610312610bb2565b005b34801561032057600080fd5b5061033b60048036038101906103369190612dbd565b610c52565b005b34801561034957600080fd5b50610352610d7c565b005b34801561036057600080fd5b50610369610ec0565b6040516103769190612e15565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a19190612e8b565b610ee9565b005b3480156103b457600080fd5b506103bd611023565b6040516103ca9190612a9e565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f591906129b2565b611060565b005b34801561040857600080fd5b50610423600480360381019061041e9190612ed8565b61118e565b005b34801561043157600080fd5b5061044c60048036038101906104479190612b1e565b6112d2565b6040516104599190612b79565b60405180910390f35b34801561046e57600080fd5b5061048960048036038101906104849190612dbd565b6112f0565b005b34801561049757600080fd5b506104b260048036038101906104ad9190612f18565b61141a565b6040516104bf9190612bd0565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea9190612b94565b6114a1565b005b6104f961163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057d90612fa4565b60405180910390fd5b8060096003018190555082600960010181905550816009600201819055506105c9826105bb838661164590919063ffffffff16565b61164590919063ffffffff16565b60096000018190555060646009600001541061061a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061190613036565b60405180910390fd5b505050565b60606040518060400160405280600b81526020017f4f4e4947414d4920494e55000000000000000000000000000000000000000000815250905090565b600061067061066961163d565b84846116a3565b6001905092915050565b61068261163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070690612fa4565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561076a57600080fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107c59190612e15565b60206040518083038186803b1580156107dd57600080fd5b505afa1580156107f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610815919061306b565b6040518363ffffffff1660e01b8152600401610832929190613098565b602060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088491906130ed565b505050565b6000600854905090565b60006108a084848461186e565b610961846108ac61163d565b61095c856040518060600160405280602a8152602001613bdf602a9139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061091261163d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201c9092919063ffffffff16565b6116a3565b600190509392505050565b60006012905090565b61097d61163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0190612fa4565b60405180910390fd5b610a146001612080565b565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a6761163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb90612fa4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610bba61163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e90612fa4565b60405180910390fd5b600854601d81905550565b610c5a61163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90612fa4565b60405180910390fd5b60005b8151811015610d7857600060056000848481518110610d0c57610d0b61311a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d7090613178565b915050610cea565b5050565b610d8461163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0890612fa4565b60405180910390fd5b602660149054906101000a900460ff1615610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e589061320d565b60405180910390fd5b6001602660166101000a81548160ff0219169083151502179055506001602660146101000a81548160ff02191690831515021790555061025842610ea5919061322d565b600681905550600243610eb8919061322d565b600781905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ef161163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590612fa4565b60405180910390fd5b60005b8282905081101561101e57600160046000858585818110610fa557610fa461311a565b5b9050602002016020810190610fba9190612b94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061101690613178565b915050610f81565b505050565b60606040518060400160405280600781526020017f4f4e4947414d4900000000000000000000000000000000000000000000000000815250905090565b61106861163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90612fa4565b60405180910390fd5b80600d6003018190555082600d6001018190555081600d600201819055506111388261112a838661164590919063ffffffff16565b61164590919063ffffffff16565b600d6000018190555060c8600d6000015410611189576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611180906132f5565b60405180910390fd5b505050565b61119661163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a90612fa4565b60405180910390fd5b6001821180156112335750600181115b611272576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611269906133ad565b60405180910390fd5b61129a606461128c8460085461236b90919063ffffffff16565b6115f390919063ffffffff16565b601d819055506112c860646112ba8360085461236b90919063ffffffff16565b6115f390919063ffffffff16565b601e819055505050565b60006112e66112df61163d565b848461186e565b6001905092915050565b6112f861163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137c90612fa4565b60405180910390fd5b60005b8151811015611416576001600560008484815181106113aa576113a961311a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061140e90613178565b915050611388565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114a961163d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d90612fa4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061163583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123e6565b905092915050565b600033905090565b6000808284611654919061322d565b905083811015611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090613419565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a906134ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177a9061353d565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118619190612bd0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d5906135cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561194e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194590613661565b60405180910390fd5b611956610ec0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119c45750611994610ec0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561200c57602660149054906101000a900460ff16611a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0f906136cd565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611abc5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ac557600080fd5b600060119050600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611cb957601e5482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b6a919061322d565b1115611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613739565b60405180910390fd5b601d54821115611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be7906137a5565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c9b5750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ca557600d90505b436007541115611cb457601590505b611dd9565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d645750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611dba5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611dd857600654421115611dd25760099050611dd7565b601990505b5b5b602660159054906101000a900460ff16158015611e445750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e5c5750602660169054906101000a900460ff165b8015611eb25750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ec75750602254611ec530610a16565b115b15611ed757611ed66000612080565b5b60008160000154111561200a576000611f116103e8611f0384600001548661236b90919063ffffffff16565b6115f390919063ffffffff16565b9050611f26818461244990919063ffffffff16565b9250611f69611f588360000154611f4a85600301548561236b90919063ffffffff16565b6115f390919063ffffffff16565b601f5461164590919063ffffffff16565b601f81905550611fb0611f9f8360000154611f9185600101548561236b90919063ffffffff16565b6115f390919063ffffffff16565b60205461164590919063ffffffff16565b602081905550611ff7611fe68360000154611fd885600201548561236b90919063ffffffff16565b6115f390919063ffffffff16565b60215461164590919063ffffffff16565b602181905550612008853083612493565b505b505b612017838383612493565b505050565b6000838311158290612064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205b9190612a9e565b60405180910390fd5b506000838561207391906137c5565b9050809150509392505050565b6001602660156101000a81548160ff02191690831515021790555060006120a630610a16565b90506000602154602054601f546120bd919061322d565b6120c7919061322d565b90506000808314806120d95750600082145b156120e65750505061234d565b83158015612101575060146022546120fe91906137f9565b83115b1561211857601460225461211591906137f9565b92505b6000600283601f548661212b91906137f9565b6121359190613882565b61213f9190613882565b90506000612156828661244990919063ffffffff16565b9050600047905061216682612627565b600061217b824761244990919063ffffffff16565b905060006121a6876121986020548561236b90919063ffffffff16565b6115f390919063ffffffff16565b905060006121d1886121c36021548661236b90919063ffffffff16565b6115f390919063ffffffff16565b905060008183856121e291906137c5565b6121ec91906137c5565b90506000601f8190555060006020819055506000602181905550602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161224c906138e4565b60006040518083038185875af1925050503d8060008114612289576040519150601f19603f3d011682016040523d82523d6000602084013e61228e565b606091505b5050809850506000871180156122a45750600081115b156122b4576122b38782612879565b5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516122fa906138e4565b60006040518083038185875af1925050503d8060008114612337576040519150601f19603f3d011682016040523d82523d6000602084013e61233c565b606091505b505080985050505050505050505050505b6000602660156101000a81548160ff02191690831515021790555050565b60008083141561237e57600090506123e0565b6000828461238c91906137f9565b905082848261239b9190613882565b146123db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d29061396b565b60405180910390fd5b809150505b92915050565b6000808311829061242d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124249190612a9e565b60405180910390fd5b506000838561243c9190613882565b9050809150509392505050565b600061248b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061201c565b905092915050565b6124e581600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244990919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061257a81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164590919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161261a9190612bd0565b60405180910390a3505050565b6000600267ffffffffffffffff81111561264457612643612c7a565b5b6040519080825280602002602001820160405280156126725781602001602082028036833780820191505090505b509050308160008151811061268a5761268961311a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272c57600080fd5b505afa158015612740573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276491906139a0565b816001815181106127785761277761311a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127df30602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116a3565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612843959493929190613ad0565b600060405180830381600087803b15801561285d57600080fd5b505af1158015612871573d6000803e3d6000fd5b505050505050565b6128a630602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116a3565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161290f96959493929190613b2a565b6060604051808303818588803b15801561292857600080fd5b505af115801561293c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129619190613b8b565b5050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61298f8161297c565b811461299a57600080fd5b50565b6000813590506129ac81612986565b92915050565b6000806000606084860312156129cb576129ca612972565b5b60006129d98682870161299d565b93505060206129ea8682870161299d565b92505060406129fb8682870161299d565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a3f578082015181840152602081019050612a24565b83811115612a4e576000848401525b50505050565b6000601f19601f8301169050919050565b6000612a7082612a05565b612a7a8185612a10565b9350612a8a818560208601612a21565b612a9381612a54565b840191505092915050565b60006020820190508181036000830152612ab88184612a65565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612aeb82612ac0565b9050919050565b612afb81612ae0565b8114612b0657600080fd5b50565b600081359050612b1881612af2565b92915050565b60008060408385031215612b3557612b34612972565b5b6000612b4385828601612b09565b9250506020612b548582860161299d565b9150509250929050565b60008115159050919050565b612b7381612b5e565b82525050565b6000602082019050612b8e6000830184612b6a565b92915050565b600060208284031215612baa57612ba9612972565b5b6000612bb884828501612b09565b91505092915050565b612bca8161297c565b82525050565b6000602082019050612be56000830184612bc1565b92915050565b600080600060608486031215612c0457612c03612972565b5b6000612c1286828701612b09565b9350506020612c2386828701612b09565b9250506040612c348682870161299d565b9150509250925092565b600060ff82169050919050565b612c5481612c3e565b82525050565b6000602082019050612c6f6000830184612c4b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cb282612a54565b810181811067ffffffffffffffff82111715612cd157612cd0612c7a565b5b80604052505050565b6000612ce4612968565b9050612cf08282612ca9565b919050565b600067ffffffffffffffff821115612d1057612d0f612c7a565b5b602082029050602081019050919050565b600080fd5b6000612d39612d3484612cf5565b612cda565b90508083825260208201905060208402830185811115612d5c57612d5b612d21565b5b835b81811015612d855780612d718882612b09565b845260208401935050602081019050612d5e565b5050509392505050565b600082601f830112612da457612da3612c75565b5b8135612db4848260208601612d26565b91505092915050565b600060208284031215612dd357612dd2612972565b5b600082013567ffffffffffffffff811115612df157612df0612977565b5b612dfd84828501612d8f565b91505092915050565b612e0f81612ae0565b82525050565b6000602082019050612e2a6000830184612e06565b92915050565b600080fd5b60008083601f840112612e4b57612e4a612c75565b5b8235905067ffffffffffffffff811115612e6857612e67612e30565b5b602083019150836020820283011115612e8457612e83612d21565b5b9250929050565b60008060208385031215612ea257612ea1612972565b5b600083013567ffffffffffffffff811115612ec057612ebf612977565b5b612ecc85828601612e35565b92509250509250929050565b60008060408385031215612eef57612eee612972565b5b6000612efd8582860161299d565b9250506020612f0e8582860161299d565b9150509250929050565b60008060408385031215612f2f57612f2e612972565b5b6000612f3d85828601612b09565b9250506020612f4e85828601612b09565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f8e602083612a10565b9150612f9982612f58565b602082019050919050565b60006020820190508181036000830152612fbd81612f81565b9050919050565b7f4f4e4947414d493a2053656c6c207461782063616e206e6f742067726561746560008201527f72207468616e2031302500000000000000000000000000000000000000000000602082015250565b6000613020602a83612a10565b915061302b82612fc4565b604082019050919050565b6000602082019050818103600083015261304f81613013565b9050919050565b60008151905061306581612986565b92915050565b60006020828403121561308157613080612972565b5b600061308f84828501613056565b91505092915050565b60006040820190506130ad6000830185612e06565b6130ba6020830184612bc1565b9392505050565b6130ca81612b5e565b81146130d557600080fd5b50565b6000815190506130e7816130c1565b92915050565b60006020828403121561310357613102612972565b5b6000613111848285016130d8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131838261297c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156131b6576131b5613149565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006131f7601783612a10565b9150613202826131c1565b602082019050919050565b60006020820190508181036000830152613226816131ea565b9050919050565b60006132388261297c565b91506132438361297c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561327857613277613149565b5b828201905092915050565b7f4f4e4947414d493a20427579207461782063616e206e6f74206772656174657260008201527f207468616e203230250000000000000000000000000000000000000000000000602082015250565b60006132df602983612a10565b91506132ea82613283565b604082019050919050565b6000602082019050818103600083015261330e816132d2565b9050919050565b7f4f4e4947414d493a204d61782057616c6c657420616e64206d6178207472616e60008201527f736374696f6e206c696d6974732073686f756c6420626520677265617465722060208201527f7468616e20312500000000000000000000000000000000000000000000000000604082015250565b6000613397604783612a10565b91506133a282613315565b606082019050919050565b600060208201905081810360008301526133c68161338a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613403601b83612a10565b915061340e826133cd565b602082019050919050565b60006020820190508181036000830152613432816133f6565b9050919050565b7f4f4e4947414d493a20417070726f76696e672066726f6d20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000613495602883612a10565b91506134a082613439565b604082019050919050565b600060208201905081810360008301526134c481613488565b9050919050565b7f4f4e4947414d493a20417070726f76696e6720746f20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613527602683612a10565b9150613532826134cb565b604082019050919050565b600060208201905081810360008301526135568161351a565b9050919050565b7f4f4e4947414d493a205472616e736665722066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b60006135b9602783612a10565b91506135c48261355d565b604082019050919050565b600060208201905081810360008301526135e8816135ac565b9050919050565b7f4f4e4947414d493a205472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061364b602583612a10565b9150613656826135ef565b604082019050919050565b6000602082019050818103600083015261367a8161363e565b9050919050565b7f4f4e4947414d493a2074726164696e6720213d20747275650000000000000000600082015250565b60006136b7601883612a10565b91506136c282613681565b602082019050919050565b600060208201905081810360008301526136e6816136aa565b9050919050565b7f4f4e4947414d493a204d61782057616c6c6574204c696d697400000000000000600082015250565b6000613723601983612a10565b915061372e826136ed565b602082019050919050565b6000602082019050818103600083015261375281613716565b9050919050565b7f4f4e4947414d493a204d6178205478416d6f756e74204c696d69740000000000600082015250565b600061378f601b83612a10565b915061379a82613759565b602082019050919050565b600060208201905081810360008301526137be81613782565b9050919050565b60006137d08261297c565b91506137db8361297c565b9250828210156137ee576137ed613149565b5b828203905092915050565b60006138048261297c565b915061380f8361297c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561384857613847613149565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061388d8261297c565b91506138988361297c565b9250826138a8576138a7613853565b5b828204905092915050565b600081905092915050565b50565b60006138ce6000836138b3565b91506138d9826138be565b600082019050919050565b60006138ef826138c1565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613955602183612a10565b9150613960826138f9565b604082019050919050565b6000602082019050818103600083015261398481613948565b9050919050565b60008151905061399a81612af2565b92915050565b6000602082840312156139b6576139b5612972565b5b60006139c48482850161398b565b91505092915050565b6000819050919050565b6000819050919050565b60006139fc6139f76139f2846139cd565b6139d7565b61297c565b9050919050565b613a0c816139e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a4781612ae0565b82525050565b6000613a598383613a3e565b60208301905092915050565b6000602082019050919050565b6000613a7d82613a12565b613a878185613a1d565b9350613a9283613a2e565b8060005b83811015613ac3578151613aaa8882613a4d565b9750613ab583613a65565b925050600181019050613a96565b5085935050505092915050565b600060a082019050613ae56000830188612bc1565b613af26020830187613a03565b8181036040830152613b048186613a72565b9050613b136060830185612e06565b613b206080830184612bc1565b9695505050505050565b600060c082019050613b3f6000830189612e06565b613b4c6020830188612bc1565b613b596040830187613a03565b613b666060830186613a03565b613b736080830185612e06565b613b8060a0830184612bc1565b979650505050505050565b600080600060608486031215613ba457613ba3612972565b5b6000613bb286828701613056565b9350506020613bc386828701613056565b9250506040613bd486828701613056565b915050925092509256fe4f4e4947414d493a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa3d61bf81bcae56fc6a19f8ec965b78c3357e5667b7d6e7255f22a78176f2ca64736f6c63430008090033

Deployed Bytecode Sourcemap

3739:11416:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7921:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6212:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7050:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14907:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6489:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7219:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6398:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14826:73;;;;;;;;;;;;;:::i;:::-;;6597:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2818:148;;;;;;;;;;;;;:::i;:::-;;8682:88;;;;;;;;;;;;;:::i;:::-;;14340:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13860:251;;;;;;;;;;;;;:::i;:::-;;2423:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8780:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6303:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7548:367;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8303:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6724:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14123:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6899:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2637:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7921:374;2560:12;:10;:12::i;:::-;2550:22;;:6;;;;;;;;;;:22;;;2542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8042:3:::1;8027:7;:12;;:18;;;;8078:10;8056:7;:19;;:32;;;;8123:12;8099:7;:21;;:36;;;;8164:37;8188:12;8164:19;8179:3;8164:10;:14;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;8146:7;:15;;:55;;;;8238:3;8220:7;:15;;;:21;8212:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;7921:374:::0;;;:::o;6212:83::-;6249:13;6282:5;;;;;;;;;;;;;;;;;6275:12;;6212:83;:::o;7050:161::-;7125:4;7142:39;7151:12;:10;:12::i;:::-;7165:7;7174:6;7142:8;:39::i;:::-;7199:4;7192:11;;7050:161;;;;:::o;14907:245::-;2560:12;:10;:12::i;:::-;2550:22;;:6;;;;;;;;;;:22;;;2542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15006:20:::1;;;;;;;;;;;14990:36;;:12;:36;;;;14982:45;;;::::0;::::1;;15038:13;15061:12;15038:36;;15085:6;:15;;;15101:10;15112:6;:16;;;15137:4;15112:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15085:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14971:181;14907:245:::0;:::o;6489:100::-;6542:7;6569:12;;6562:19;;6489:100;:::o;7219:315::-;7317:4;7334:36;7344:6;7352:9;7363:6;7334:9;:36::i;:::-;7381:123;7390:6;7398:12;:10;:12::i;:::-;7412:91;7450:6;7412:91;;;;;;;;;;;;;;;;;:11;:19;7424:6;7412:19;;;;;;;;;;;;;;;:33;7432:12;:10;:12::i;:::-;7412:33;;;;;;;;;;;;;;;;:37;;:91;;;;;:::i;:::-;7381:8;:123::i;:::-;7522:4;7515:11;;7219:315;;;;;:::o;6398:83::-;6439:5;4801:2;6457:16;;6398:83;:::o;14826:73::-;2560:12;:10;:12::i;:::-;2550:22;;:6;;;;;;;;;;:22;;;2542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14877:14:::1;14886:4;14877:8;:14::i;:::-;14826:73::o:0;6597:119::-;6663:7;6690:9;:18;6700:7;6690:18;;;;;;;;;;;;;;;;6683:25;;6597:119;;;:::o;2818:148::-;2560:12;:10;:12::i;:::-;2550:22;;:6;;;;;;;;;;:22;;;2542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2925:1:::1;2888:40;;2909:6;::::0;::::1;;;;;;;;2888:40;;;;;;;;;;;;2956:1;2939:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2818:148::o:0;8682:88::-;2560:12;:10;:12::i;:::-;2550:22;;:6;;;;;;;;;;:22;;;2542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8750:12:::1;;8735;:27;;;;8682:88::o:0;14340:153::-;2560:12;:10;:12::i;:::-;2550:22;;:6;;;;;;;;;;:22;;;2542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14422:6:::1;14418:68;14433:6;:13;14431:1;:15;14418:68;;;14479:5;14452:13;:24;14466:6;14473:1;14466:9;;;;;;;;:::i;:::-;;;;;;;;14452:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14447:3;;;;;:::i;:::-;;;;14418:68;;;;14340:153:::0;:::o;13860:251::-;2560:12;:10;:12::i;:::-;2550:22;;:6;;;;;;;;;;:22;;;2542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13924:11:::1;;;;;;;;;;;13923:12;13915:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13987:4;13973:11;;:18;;;;;;;;;;;;;;;;;;14016:4;14002:11;;:18;;;;;;;;;;;;;;;;;;14057:10;14038:15;:30;;;;:::i;:::-;14031:4;:37;;;;14102:1;14087:12;:16;;;;:::i;:::-;14079:5;:24;;;;13860:251::o:0;2423:79::-;2461:7;2488:6;;;;;;;;;;;2481:13;;2423:79;:::o;8780:167::-;2560:12;:10;:12::i;:::-;2550:22;;:6;;;;;;;;;;:22;;;2542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8865:6:::1;8861:78;8876:6;;:13;;8874:1;:15;8861:78;;;8935:4;8908:13;:24;8922:6;;8929:1;8922:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8908:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;8890:3;;;;;:::i;:::-;;;;8861:78;;;;8780:167:::0;;:::o;6303:87::-;6342:13;6375:7;;;;;;;;;;;;;;;;;6368:14;;6303:87;:::o;7548:367::-;2560:12;:10;:12::i;:::-;2550:22;;:6;;;;;;;;;;:22;;;2542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7667:3:::1;7653:6;:11;;:17;;;;7702:10;7681:6;:18;;:31;;;;7746:12;7723:6;:20;;:35;;;;7786:37;7810:12;7786:19;7801:3;7786:10;:14;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;7769:6;:14;;:54;;;;7859:3;7842:6;:14;;;:20;7834:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7548:367:::0;;;:::o;8303:371::-;2560:12;:10;:12::i;:::-;2550:22;;:6;;;;;;;;;;:22;;;2542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8431:1:::1;8411:17;:21;:41;;;;;8451:1;8436:12;:16;8411:41;8403:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;8553:44;8593:3;8553:35;8570:17;8553:12;;:16;;:35;;;;:::i;:::-;:39;;:44;;;;:::i;:::-;8538:12;:59;;;;8627:39;8662:3;8627:30;8644:12;8627;;:16;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;8608:16;:58;;;;8303:371:::0;;:::o;6724:167::-;6802:4;6819:42;6829:12;:10;:12::i;:::-;6843:9;6854:6;6819:9;:42::i;:::-;6879:4;6872:11;;6724:167;;;;:::o;14123:205::-;2560:12;:10;:12::i;:::-;2550:22;;:6;;;;;;;;;;:22;;;2542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14211:6:::1;14206:115;14227:14;:21;14223:1;:25;14206:115;;;14305:4;14270:13;:32;14284:14;14299:1;14284:17;;;;;;;;:::i;:::-;;;;;;;;14270:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14250:3;;;;;:::i;:::-;;;;14206:115;;;;14123:205:::0;:::o;6899:143::-;6980:7;7007:11;:18;7019:5;7007:18;;;;;;;;;;;;;;;:27;7026:7;7007:27;;;;;;;;;;;;;;;;7000:34;;6899:143;;;;:::o;2637:173::-;2560:12;:10;:12::i;:::-;2550:22;;:6;;;;;;;;;;:22;;;2542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2753:9:::1;2724:39;;2745:6;::::0;::::1;;;;;;;;2724:39;;;;;;;;;;;;2783:9;2774:6;::::0;:18:::1;;;;;;;;;;;;;;;;;;2637:173:::0;:::o;1730:132::-;1788:7;1815:39;1819:1;1822;1815:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1808:46;;1730:132;;;;:::o;141:98::-;194:7;221:10;214:17;;141:98;:::o;947:179::-;1005:7;1025:9;1041:1;1037;:5;;;;:::i;:::-;1025:17;;1066:1;1061;:6;;1053:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1117:1;1110:8;;;947:179;;;;:::o;8960:343::-;9070:1;9053:19;;:5;:19;;;;9045:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9155:1;9136:21;;:7;:21;;;;9128:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9241:6;9211:11;:18;9223:5;9211:18;;;;;;;;;;;;;;;:27;9230:7;9211:27;;;;;;;;;;;;;;;:36;;;;9279:7;9263:32;;9272:5;9263:32;;;9288:6;9263:32;;;;;;:::i;:::-;;;;;;;;8960:343;;;:::o;9311:2095::-;9415:1;9399:18;;:4;:18;;;;9391:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9494:1;9480:16;;:2;:16;;;;9472:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9563:7;:5;:7::i;:::-;9555:15;;:4;:15;;;;:32;;;;;9580:7;:5;:7::i;:::-;9574:13;;:2;:13;;;;9555:32;9551:1792;;;9612:11;;;;;;;;;;;9604:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9675:13;:19;9689:4;9675:19;;;;;;;;;;;;;;;;;;;;;;;;;9674:20;:42;;;;;9699:13;:17;9713:2;9699:17;;;;;;;;;;;;;;;;;;;;;;;;;9698:18;9674:42;9666:51;;;;;;9734:25;9762:4;9734:32;;9785:13;:17;9799:2;9785:17;;;;;;;;;;;;;;;;;;;;;;;;;9781:760;;9858:16;;9847:6;9831:9;:13;9841:2;9831:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;9830:44;;9822:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;9940:12;;9930:6;:22;;9922:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10014:20;;;;;;;;;;;10006:28;;:4;:28;;;:62;;;;;10052:15;;;;;;;;;;;10038:30;;:2;:30;;;;10006:62;10002:123;;;10099:6;10092:13;;10002:123;10154:12;10146:5;;:20;10143:84;;;10197:10;10190:17;;10143:84;9781:760;;;10273:20;;;;;;;;;;;10267:26;;:2;:26;;;:62;;;;;10313:15;;;;;;;;;;;10297:32;;:4;:32;;;;10267:62;:87;;;;;10335:13;:19;10349:4;10335:19;;;;;;;;;;;;;;;;;;;;;;;;;10333:21;10267:87;10263:278;;;10396:4;;10378:15;:22;10375:151;;;10431:7;10424:14;;10375:151;;;10492:14;10485:21;;10375:151;10263:278;9781:760;10588:6;;;;;;;;;;;10587:7;:39;;;;;10606:20;;;;;;;;;;;10598:28;;:4;:28;;;;10587:39;:54;;;;;10630:11;;;;;;;;;;;10587:54;:78;;;;;10646:13;:19;10660:4;10646:19;;;;;;;;;;;;;;;;;;;;;;;;;10645:20;10587:78;:119;;;;;10696:10;;10669:24;10687:4;10669:9;:24::i;:::-;:37;10587:119;10583:179;;;10731:15;10740:5;10731:8;:15::i;:::-;10583:179;10794:1;10781:4;:12;;;:14;10778:554;;;10815:13;10831:34;10860:4;10831:24;10842:4;:12;;;10831:6;:10;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;10815:50;;10893:17;10904:5;10893:6;:10;;:17;;;;:::i;:::-;10884:26;;10953:65;10979:38;11004:4;:12;;;10979:20;10989:4;:9;;;10979:5;:9;;:20;;;;:::i;:::-;:24;;:38;;;;:::i;:::-;10953:21;;:25;;:65;;;;:::i;:::-;10929:21;:89;;;;11061:72;11087:45;11119:4;:12;;;11087:27;11097:4;:16;;;11087:5;:9;;:27;;;;:::i;:::-;:31;;:45;;;;:::i;:::-;11061:21;;:25;;:72;;;;:::i;:::-;11037:21;:96;;;;11178:76;11206:47;11240:4;:12;;;11206:29;11216:4;:18;;;11206:5;:9;;:29;;;;:::i;:::-;:33;;:47;;;;:::i;:::-;11178:23;;:27;;:76;;;;:::i;:::-;11152:23;:102;;;;11273:43;11291:4;11304;11310:5;11273:17;:43::i;:::-;10796:536;10778:554;9589:1754;9551:1792;11365:33;11383:4;11388:2;11391:6;11365:17;:33::i;:::-;9311:2095;;;:::o;1278:190::-;1364:7;1397:1;1392;:6;;1400:12;1384:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1424:9;1440:1;1436;:5;;;;:::i;:::-;1424:17;;1459:1;1452:8;;;1278:190;;;;;:::o;12176:1664::-;5481:4;5472:6;;:13;;;;;;;;;;;;;;;;;;12238:28:::1;12269:24;12287:4;12269:9;:24::i;:::-;12238:55;;12304:25;12380:23;;12356:21;;12332;;:45;;;;:::i;:::-;:71;;;;:::i;:::-;12304:99;;12414:12;12467:1:::0;12443:20:::1;:25;:51;;;;12493:1;12472:17;:22;12443:51;12439:90;;;12511:7;;;;;12439:90;12546:6;12545:7;:53;;;;;12594:2;12581:10;;:15;;;;:::i;:::-;12557:20;:40;12545:53;12541:124;;;12651:2;12638:10;;:15;;;;:::i;:::-;12615:38;;12541:124;12726:23;12821:1;12801:17;12776:21;;12753:20;:44;;;;:::i;:::-;12752:66;;;;:::i;:::-;:70;;;;:::i;:::-;12726:96;;12833:26;12862:41;12887:15;12862:20;:24;;:41;;;;:::i;:::-;12833:70;;12916:25;12944:21;12916:49;;12978:36;12995:18;12978:16;:36::i;:::-;13027:18;13048:44;13074:17;13048:21;:25;;:44;;;;:::i;:::-;13027:65;;13105:23;13131:60;13173:17;13131:37;13146:21;;13131:10;:14;;:37;;;;:::i;:::-;:41;;:60;;;;:::i;:::-;13105:86;;13204:25;13232:62;13276:17;13232:39;13247:23;;13232:10;:14;;:39;;;;:::i;:::-;:43;;:62;;;;:::i;:::-;13204:90;;13307:23;13364:17;13346:15;13333:10;:28;;;;:::i;:::-;:48;;;;:::i;:::-;13307:74;;13418:1;13394:21;:25;;;;13454:1;13430:21;:25;;;;13492:1;13466:23;:27;;;;13528:18;;;;;;;;;;;13520:32;;13560:17;13520:62;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13506:76;;;;;13617:1;13599:15;:19;:42;;;;;13640:1;13622:15;:19;13599:42;13595:121;;;13658:46;13671:15;13688;13658:12;:46::i;:::-;13595:121;13750:16;;;;;;;;;;;13742:30;;13794:21;13742:88;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13728:102;;;;;12227:1613;;;;;;;;;;5496:1;5517:5:::0;5508:6;;:14;;;;;;;;;;;;;;;;;;12176:1664;:::o;1476:246::-;1534:7;1563:1;1558;:6;1554:47;;;1588:1;1581:8;;;;1554:47;1611:9;1627:1;1623;:5;;;;:::i;:::-;1611:17;;1656:1;1651;1647;:5;;;;:::i;:::-;:10;1639:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1713:1;1706:8;;;1476:246;;;;;:::o;1870:189::-;1956:7;1988:1;1984;:5;1991:12;1976:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2015:9;2031:1;2027;:5;;;;:::i;:::-;2015:17;;2050:1;2043:8;;;1870:189;;;;;:::o;1134:136::-;1192:7;1219:43;1223:1;1226;1219:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1212:50;;1134:136;;;;:::o;14501:276::-;14619:30;14641:7;14619:9;:17;14629:6;14619:17;;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;14599:9;:17;14609:6;14599:17;;;;;;;;;;;;;;;:50;;;;14683:33;14708:7;14683:9;:20;14693:9;14683:20;;;;;;;;;;;;;;;;:24;;:33;;;;:::i;:::-;14660:9;:20;14670:9;14660:20;;;;;;;;;;;;;;;:56;;;;14750:9;14733:36;;14742:6;14733:36;;;14761:7;14733:36;;;;;;:::i;:::-;;;;;;;;14501:276;;;:::o;11414:471::-;11480:21;11518:1;11504:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11480:40;;11549:4;11531;11536:1;11531:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;11575:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11565:4;11570:1;11565:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;11608:62;11625:4;11640:15;;;;;;;;;;;11658:11;11608:8;:62::i;:::-;11681:15;;;;;;;;;;;:66;;;11762:11;11788:1;11804:4;11831;11851:15;11681:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11469:416;11414:471;:::o;11899:269::-;11978:60;11995:4;12009:15;;;;;;;;;;;12026:11;11978:8;:60::i;:::-;12049:15;;;;;;;;;;;:31;;;12088:8;12106:4;12112:11;12124:1;12126;12136:6;12144:15;12049:111;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11899:269;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:619::-;767:6;775;783;832:2;820:9;811:7;807:23;803:32;800:119;;;838:79;;:::i;:::-;800:119;958:1;983:53;1028:7;1019:6;1008:9;1004:22;983:53;:::i;:::-;973:63;;929:117;1085:2;1111:53;1156:7;1147:6;1136:9;1132:22;1111:53;:::i;:::-;1101:63;;1056:118;1213:2;1239:53;1284:7;1275:6;1264:9;1260:22;1239:53;:::i;:::-;1229:63;;1184:118;690:619;;;;;:::o;1315:99::-;1367:6;1401:5;1395:12;1385:22;;1315:99;;;:::o;1420:169::-;1504:11;1538:6;1533:3;1526:19;1578:4;1573:3;1569:14;1554:29;;1420:169;;;;:::o;1595:307::-;1663:1;1673:113;1687:6;1684:1;1681:13;1673:113;;;1772:1;1767:3;1763:11;1757:18;1753:1;1748:3;1744:11;1737:39;1709:2;1706:1;1702:10;1697:15;;1673:113;;;1804:6;1801:1;1798:13;1795:101;;;1884:1;1875:6;1870:3;1866:16;1859:27;1795:101;1644:258;1595:307;;;:::o;1908:102::-;1949:6;2000:2;1996:7;1991:2;1984:5;1980:14;1976:28;1966:38;;1908:102;;;:::o;2016:364::-;2104:3;2132:39;2165:5;2132:39;:::i;:::-;2187:71;2251:6;2246:3;2187:71;:::i;:::-;2180:78;;2267:52;2312:6;2307:3;2300:4;2293:5;2289:16;2267:52;:::i;:::-;2344:29;2366:6;2344:29;:::i;:::-;2339:3;2335:39;2328:46;;2108:272;2016:364;;;;:::o;2386:313::-;2499:4;2537:2;2526:9;2522:18;2514:26;;2586:9;2580:4;2576:20;2572:1;2561:9;2557:17;2550:47;2614:78;2687:4;2678:6;2614:78;:::i;:::-;2606:86;;2386:313;;;;:::o;2705:126::-;2742:7;2782:42;2775:5;2771:54;2760:65;;2705:126;;;:::o;2837:96::-;2874:7;2903:24;2921:5;2903:24;:::i;:::-;2892:35;;2837:96;;;:::o;2939:122::-;3012:24;3030:5;3012:24;:::i;:::-;3005:5;3002:35;2992:63;;3051:1;3048;3041:12;2992:63;2939:122;:::o;3067:139::-;3113:5;3151:6;3138:20;3129:29;;3167:33;3194:5;3167:33;:::i;:::-;3067:139;;;;:::o;3212:474::-;3280:6;3288;3337:2;3325:9;3316:7;3312:23;3308:32;3305:119;;;3343:79;;:::i;:::-;3305:119;3463:1;3488:53;3533:7;3524:6;3513:9;3509:22;3488:53;:::i;:::-;3478:63;;3434:117;3590:2;3616:53;3661:7;3652:6;3641:9;3637:22;3616:53;:::i;:::-;3606:63;;3561:118;3212:474;;;;;:::o;3692:90::-;3726:7;3769:5;3762:13;3755:21;3744:32;;3692:90;;;:::o;3788:109::-;3869:21;3884:5;3869:21;:::i;:::-;3864:3;3857:34;3788:109;;:::o;3903:210::-;3990:4;4028:2;4017:9;4013:18;4005:26;;4041:65;4103:1;4092:9;4088:17;4079:6;4041:65;:::i;:::-;3903:210;;;;:::o;4119:329::-;4178:6;4227:2;4215:9;4206:7;4202:23;4198:32;4195:119;;;4233:79;;:::i;:::-;4195:119;4353:1;4378:53;4423:7;4414:6;4403:9;4399:22;4378:53;:::i;:::-;4368:63;;4324:117;4119:329;;;;:::o;4454:118::-;4541:24;4559:5;4541:24;:::i;:::-;4536:3;4529:37;4454:118;;:::o;4578:222::-;4671:4;4709:2;4698:9;4694:18;4686:26;;4722:71;4790:1;4779:9;4775:17;4766:6;4722:71;:::i;:::-;4578:222;;;;:::o;4806:619::-;4883:6;4891;4899;4948:2;4936:9;4927:7;4923:23;4919:32;4916:119;;;4954:79;;:::i;:::-;4916:119;5074:1;5099:53;5144:7;5135:6;5124:9;5120:22;5099:53;:::i;:::-;5089:63;;5045:117;5201:2;5227:53;5272:7;5263:6;5252:9;5248:22;5227:53;:::i;:::-;5217:63;;5172:118;5329:2;5355:53;5400:7;5391:6;5380:9;5376:22;5355:53;:::i;:::-;5345:63;;5300:118;4806:619;;;;;:::o;5431:86::-;5466:7;5506:4;5499:5;5495:16;5484:27;;5431:86;;;:::o;5523:112::-;5606:22;5622:5;5606:22;:::i;:::-;5601:3;5594:35;5523:112;;:::o;5641:214::-;5730:4;5768:2;5757:9;5753:18;5745:26;;5781:67;5845:1;5834:9;5830:17;5821:6;5781:67;:::i;:::-;5641:214;;;;:::o;5861:117::-;5970:1;5967;5960:12;5984:180;6032:77;6029:1;6022:88;6129:4;6126:1;6119:15;6153:4;6150:1;6143:15;6170:281;6253:27;6275:4;6253:27;:::i;:::-;6245:6;6241:40;6383:6;6371:10;6368:22;6347:18;6335:10;6332:34;6329:62;6326:88;;;6394:18;;:::i;:::-;6326:88;6434:10;6430:2;6423:22;6213:238;6170:281;;:::o;6457:129::-;6491:6;6518:20;;:::i;:::-;6508:30;;6547:33;6575:4;6567:6;6547:33;:::i;:::-;6457:129;;;:::o;6592:311::-;6669:4;6759:18;6751:6;6748:30;6745:56;;;6781:18;;:::i;:::-;6745:56;6831:4;6823:6;6819:17;6811:25;;6891:4;6885;6881:15;6873:23;;6592:311;;;:::o;6909:117::-;7018:1;7015;7008:12;7049:710;7145:5;7170:81;7186:64;7243:6;7186:64;:::i;:::-;7170:81;:::i;:::-;7161:90;;7271:5;7300:6;7293:5;7286:21;7334:4;7327:5;7323:16;7316:23;;7387:4;7379:6;7375:17;7367:6;7363:30;7416:3;7408:6;7405:15;7402:122;;;7435:79;;:::i;:::-;7402:122;7550:6;7533:220;7567:6;7562:3;7559:15;7533:220;;;7642:3;7671:37;7704:3;7692:10;7671:37;:::i;:::-;7666:3;7659:50;7738:4;7733:3;7729:14;7722:21;;7609:144;7593:4;7588:3;7584:14;7577:21;;7533:220;;;7537:21;7151:608;;7049:710;;;;;:::o;7782:370::-;7853:5;7902:3;7895:4;7887:6;7883:17;7879:27;7869:122;;7910:79;;:::i;:::-;7869:122;8027:6;8014:20;8052:94;8142:3;8134:6;8127:4;8119:6;8115:17;8052:94;:::i;:::-;8043:103;;7859:293;7782:370;;;;:::o;8158:539::-;8242:6;8291:2;8279:9;8270:7;8266:23;8262:32;8259:119;;;8297:79;;:::i;:::-;8259:119;8445:1;8434:9;8430:17;8417:31;8475:18;8467:6;8464:30;8461:117;;;8497:79;;:::i;:::-;8461:117;8602:78;8672:7;8663:6;8652:9;8648:22;8602:78;:::i;:::-;8592:88;;8388:302;8158:539;;;;:::o;8703:118::-;8790:24;8808:5;8790:24;:::i;:::-;8785:3;8778:37;8703:118;;:::o;8827:222::-;8920:4;8958:2;8947:9;8943:18;8935:26;;8971:71;9039:1;9028:9;9024:17;9015:6;8971:71;:::i;:::-;8827:222;;;;:::o;9055:117::-;9164:1;9161;9154:12;9195:568;9268:8;9278:6;9328:3;9321:4;9313:6;9309:17;9305:27;9295:122;;9336:79;;:::i;:::-;9295:122;9449:6;9436:20;9426:30;;9479:18;9471:6;9468:30;9465:117;;;9501:79;;:::i;:::-;9465:117;9615:4;9607:6;9603:17;9591:29;;9669:3;9661:4;9653:6;9649:17;9639:8;9635:32;9632:41;9629:128;;;9676:79;;:::i;:::-;9629:128;9195:568;;;;;:::o;9769:559::-;9855:6;9863;9912:2;9900:9;9891:7;9887:23;9883:32;9880:119;;;9918:79;;:::i;:::-;9880:119;10066:1;10055:9;10051:17;10038:31;10096:18;10088:6;10085:30;10082:117;;;10118:79;;:::i;:::-;10082:117;10231:80;10303:7;10294:6;10283:9;10279:22;10231:80;:::i;:::-;10213:98;;;;10009:312;9769:559;;;;;:::o;10334:474::-;10402:6;10410;10459:2;10447:9;10438:7;10434:23;10430:32;10427:119;;;10465:79;;:::i;:::-;10427:119;10585:1;10610:53;10655:7;10646:6;10635:9;10631:22;10610:53;:::i;:::-;10600:63;;10556:117;10712:2;10738:53;10783:7;10774:6;10763:9;10759:22;10738:53;:::i;:::-;10728:63;;10683:118;10334:474;;;;;:::o;10814:::-;10882:6;10890;10939:2;10927:9;10918:7;10914:23;10910:32;10907:119;;;10945:79;;:::i;:::-;10907:119;11065:1;11090:53;11135:7;11126:6;11115:9;11111:22;11090:53;:::i;:::-;11080:63;;11036:117;11192:2;11218:53;11263:7;11254:6;11243:9;11239:22;11218:53;:::i;:::-;11208:63;;11163:118;10814:474;;;;;:::o;11294:182::-;11434:34;11430:1;11422:6;11418:14;11411:58;11294:182;:::o;11482:366::-;11624:3;11645:67;11709:2;11704:3;11645:67;:::i;:::-;11638:74;;11721:93;11810:3;11721:93;:::i;:::-;11839:2;11834:3;11830:12;11823:19;;11482:366;;;:::o;11854:419::-;12020:4;12058:2;12047:9;12043:18;12035:26;;12107:9;12101:4;12097:20;12093:1;12082:9;12078:17;12071:47;12135:131;12261:4;12135:131;:::i;:::-;12127:139;;11854:419;;;:::o;12279:229::-;12419:34;12415:1;12407:6;12403:14;12396:58;12488:12;12483:2;12475:6;12471:15;12464:37;12279:229;:::o;12514:366::-;12656:3;12677:67;12741:2;12736:3;12677:67;:::i;:::-;12670:74;;12753:93;12842:3;12753:93;:::i;:::-;12871:2;12866:3;12862:12;12855:19;;12514:366;;;:::o;12886:419::-;13052:4;13090:2;13079:9;13075:18;13067:26;;13139:9;13133:4;13129:20;13125:1;13114:9;13110:17;13103:47;13167:131;13293:4;13167:131;:::i;:::-;13159:139;;12886:419;;;:::o;13311:143::-;13368:5;13399:6;13393:13;13384:22;;13415:33;13442:5;13415:33;:::i;:::-;13311:143;;;;:::o;13460:351::-;13530:6;13579:2;13567:9;13558:7;13554:23;13550:32;13547:119;;;13585:79;;:::i;:::-;13547:119;13705:1;13730:64;13786:7;13777:6;13766:9;13762:22;13730:64;:::i;:::-;13720:74;;13676:128;13460:351;;;;:::o;13817:332::-;13938:4;13976:2;13965:9;13961:18;13953:26;;13989:71;14057:1;14046:9;14042:17;14033:6;13989:71;:::i;:::-;14070:72;14138:2;14127:9;14123:18;14114:6;14070:72;:::i;:::-;13817:332;;;;;:::o;14155:116::-;14225:21;14240:5;14225:21;:::i;:::-;14218:5;14215:32;14205:60;;14261:1;14258;14251:12;14205:60;14155:116;:::o;14277:137::-;14331:5;14362:6;14356:13;14347:22;;14378:30;14402:5;14378:30;:::i;:::-;14277:137;;;;:::o;14420:345::-;14487:6;14536:2;14524:9;14515:7;14511:23;14507:32;14504:119;;;14542:79;;:::i;:::-;14504:119;14662:1;14687:61;14740:7;14731:6;14720:9;14716:22;14687:61;:::i;:::-;14677:71;;14633:125;14420:345;;;;:::o;14771:180::-;14819:77;14816:1;14809:88;14916:4;14913:1;14906:15;14940:4;14937:1;14930:15;14957:180;15005:77;15002:1;14995:88;15102:4;15099:1;15092:15;15126:4;15123:1;15116:15;15143:233;15182:3;15205:24;15223:5;15205:24;:::i;:::-;15196:33;;15251:66;15244:5;15241:77;15238:103;;;15321:18;;:::i;:::-;15238:103;15368:1;15361:5;15357:13;15350:20;;15143:233;;;:::o;15382:173::-;15522:25;15518:1;15510:6;15506:14;15499:49;15382:173;:::o;15561:366::-;15703:3;15724:67;15788:2;15783:3;15724:67;:::i;:::-;15717:74;;15800:93;15889:3;15800:93;:::i;:::-;15918:2;15913:3;15909:12;15902:19;;15561:366;;;:::o;15933:419::-;16099:4;16137:2;16126:9;16122:18;16114:26;;16186:9;16180:4;16176:20;16172:1;16161:9;16157:17;16150:47;16214:131;16340:4;16214:131;:::i;:::-;16206:139;;15933:419;;;:::o;16358:305::-;16398:3;16417:20;16435:1;16417:20;:::i;:::-;16412:25;;16451:20;16469:1;16451:20;:::i;:::-;16446:25;;16605:1;16537:66;16533:74;16530:1;16527:81;16524:107;;;16611:18;;:::i;:::-;16524:107;16655:1;16652;16648:9;16641:16;;16358:305;;;;:::o;16669:228::-;16809:34;16805:1;16797:6;16793:14;16786:58;16878:11;16873:2;16865:6;16861:15;16854:36;16669:228;:::o;16903:366::-;17045:3;17066:67;17130:2;17125:3;17066:67;:::i;:::-;17059:74;;17142:93;17231:3;17142:93;:::i;:::-;17260:2;17255:3;17251:12;17244:19;;16903:366;;;:::o;17275:419::-;17441:4;17479:2;17468:9;17464:18;17456:26;;17528:9;17522:4;17518:20;17514:1;17503:9;17499:17;17492:47;17556:131;17682:4;17556:131;:::i;:::-;17548:139;;17275:419;;;:::o;17700:295::-;17840:34;17836:1;17828:6;17824:14;17817:58;17909:34;17904:2;17896:6;17892:15;17885:59;17978:9;17973:2;17965:6;17961:15;17954:34;17700:295;:::o;18001:366::-;18143:3;18164:67;18228:2;18223:3;18164:67;:::i;:::-;18157:74;;18240:93;18329:3;18240:93;:::i;:::-;18358:2;18353:3;18349:12;18342:19;;18001:366;;;:::o;18373:419::-;18539:4;18577:2;18566:9;18562:18;18554:26;;18626:9;18620:4;18616:20;18612:1;18601:9;18597:17;18590:47;18654:131;18780:4;18654:131;:::i;:::-;18646:139;;18373:419;;;:::o;18798:177::-;18938:29;18934:1;18926:6;18922:14;18915:53;18798:177;:::o;18981:366::-;19123:3;19144:67;19208:2;19203:3;19144:67;:::i;:::-;19137:74;;19220:93;19309:3;19220:93;:::i;:::-;19338:2;19333:3;19329:12;19322:19;;18981:366;;;:::o;19353:419::-;19519:4;19557:2;19546:9;19542:18;19534:26;;19606:9;19600:4;19596:20;19592:1;19581:9;19577:17;19570:47;19634:131;19760:4;19634:131;:::i;:::-;19626:139;;19353:419;;;:::o;19778:227::-;19918:34;19914:1;19906:6;19902:14;19895:58;19987:10;19982:2;19974:6;19970:15;19963:35;19778:227;:::o;20011:366::-;20153:3;20174:67;20238:2;20233:3;20174:67;:::i;:::-;20167:74;;20250:93;20339:3;20250:93;:::i;:::-;20368:2;20363:3;20359:12;20352:19;;20011:366;;;:::o;20383:419::-;20549:4;20587:2;20576:9;20572:18;20564:26;;20636:9;20630:4;20626:20;20622:1;20611:9;20607:17;20600:47;20664:131;20790:4;20664:131;:::i;:::-;20656:139;;20383:419;;;:::o;20808:225::-;20948:34;20944:1;20936:6;20932:14;20925:58;21017:8;21012:2;21004:6;21000:15;20993:33;20808:225;:::o;21039:366::-;21181:3;21202:67;21266:2;21261:3;21202:67;:::i;:::-;21195:74;;21278:93;21367:3;21278:93;:::i;:::-;21396:2;21391:3;21387:12;21380:19;;21039:366;;;:::o;21411:419::-;21577:4;21615:2;21604:9;21600:18;21592:26;;21664:9;21658:4;21654:20;21650:1;21639:9;21635:17;21628:47;21692:131;21818:4;21692:131;:::i;:::-;21684:139;;21411:419;;;:::o;21836:226::-;21976:34;21972:1;21964:6;21960:14;21953:58;22045:9;22040:2;22032:6;22028:15;22021:34;21836:226;:::o;22068:366::-;22210:3;22231:67;22295:2;22290:3;22231:67;:::i;:::-;22224:74;;22307:93;22396:3;22307:93;:::i;:::-;22425:2;22420:3;22416:12;22409:19;;22068:366;;;:::o;22440:419::-;22606:4;22644:2;22633:9;22629:18;22621:26;;22693:9;22687:4;22683:20;22679:1;22668:9;22664:17;22657:47;22721:131;22847:4;22721:131;:::i;:::-;22713:139;;22440:419;;;:::o;22865:224::-;23005:34;23001:1;22993:6;22989:14;22982:58;23074:7;23069:2;23061:6;23057:15;23050:32;22865:224;:::o;23095:366::-;23237:3;23258:67;23322:2;23317:3;23258:67;:::i;:::-;23251:74;;23334:93;23423:3;23334:93;:::i;:::-;23452:2;23447:3;23443:12;23436:19;;23095:366;;;:::o;23467:419::-;23633:4;23671:2;23660:9;23656:18;23648:26;;23720:9;23714:4;23710:20;23706:1;23695:9;23691:17;23684:47;23748:131;23874:4;23748:131;:::i;:::-;23740:139;;23467:419;;;:::o;23892:174::-;24032:26;24028:1;24020:6;24016:14;24009:50;23892:174;:::o;24072:366::-;24214:3;24235:67;24299:2;24294:3;24235:67;:::i;:::-;24228:74;;24311:93;24400:3;24311:93;:::i;:::-;24429:2;24424:3;24420:12;24413:19;;24072:366;;;:::o;24444:419::-;24610:4;24648:2;24637:9;24633:18;24625:26;;24697:9;24691:4;24687:20;24683:1;24672:9;24668:17;24661:47;24725:131;24851:4;24725:131;:::i;:::-;24717:139;;24444:419;;;:::o;24869:175::-;25009:27;25005:1;24997:6;24993:14;24986:51;24869:175;:::o;25050:366::-;25192:3;25213:67;25277:2;25272:3;25213:67;:::i;:::-;25206:74;;25289:93;25378:3;25289:93;:::i;:::-;25407:2;25402:3;25398:12;25391:19;;25050:366;;;:::o;25422:419::-;25588:4;25626:2;25615:9;25611:18;25603:26;;25675:9;25669:4;25665:20;25661:1;25650:9;25646:17;25639:47;25703:131;25829:4;25703:131;:::i;:::-;25695:139;;25422:419;;;:::o;25847:177::-;25987:29;25983:1;25975:6;25971:14;25964:53;25847:177;:::o;26030:366::-;26172:3;26193:67;26257:2;26252:3;26193:67;:::i;:::-;26186:74;;26269:93;26358:3;26269:93;:::i;:::-;26387:2;26382:3;26378:12;26371:19;;26030:366;;;:::o;26402:419::-;26568:4;26606:2;26595:9;26591:18;26583:26;;26655:9;26649:4;26645:20;26641:1;26630:9;26626:17;26619:47;26683:131;26809:4;26683:131;:::i;:::-;26675:139;;26402:419;;;:::o;26827:191::-;26867:4;26887:20;26905:1;26887:20;:::i;:::-;26882:25;;26921:20;26939:1;26921:20;:::i;:::-;26916:25;;26960:1;26957;26954:8;26951:34;;;26965:18;;:::i;:::-;26951:34;27010:1;27007;27003:9;26995:17;;26827:191;;;;:::o;27024:348::-;27064:7;27087:20;27105:1;27087:20;:::i;:::-;27082:25;;27121:20;27139:1;27121:20;:::i;:::-;27116:25;;27309:1;27241:66;27237:74;27234:1;27231:81;27226:1;27219:9;27212:17;27208:105;27205:131;;;27316:18;;:::i;:::-;27205:131;27364:1;27361;27357:9;27346:20;;27024:348;;;;:::o;27378:180::-;27426:77;27423:1;27416:88;27523:4;27520:1;27513:15;27547:4;27544:1;27537:15;27564:185;27604:1;27621:20;27639:1;27621:20;:::i;:::-;27616:25;;27655:20;27673:1;27655:20;:::i;:::-;27650:25;;27694:1;27684:35;;27699:18;;:::i;:::-;27684:35;27741:1;27738;27734:9;27729:14;;27564:185;;;;:::o;27755:147::-;27856:11;27893:3;27878:18;;27755:147;;;;:::o;27908:114::-;;:::o;28028:398::-;28187:3;28208:83;28289:1;28284:3;28208:83;:::i;:::-;28201:90;;28300:93;28389:3;28300:93;:::i;:::-;28418:1;28413:3;28409:11;28402:18;;28028:398;;;:::o;28432:379::-;28616:3;28638:147;28781:3;28638:147;:::i;:::-;28631:154;;28802:3;28795:10;;28432:379;;;:::o;28817:220::-;28957:34;28953:1;28945:6;28941:14;28934:58;29026:3;29021:2;29013:6;29009:15;29002:28;28817:220;:::o;29043:366::-;29185:3;29206:67;29270:2;29265:3;29206:67;:::i;:::-;29199:74;;29282:93;29371:3;29282:93;:::i;:::-;29400:2;29395:3;29391:12;29384:19;;29043:366;;;:::o;29415:419::-;29581:4;29619:2;29608:9;29604:18;29596:26;;29668:9;29662:4;29658:20;29654:1;29643:9;29639:17;29632:47;29696:131;29822:4;29696:131;:::i;:::-;29688:139;;29415:419;;;:::o;29840:143::-;29897:5;29928:6;29922:13;29913:22;;29944:33;29971:5;29944:33;:::i;:::-;29840:143;;;;:::o;29989:351::-;30059:6;30108:2;30096:9;30087:7;30083:23;30079:32;30076:119;;;30114:79;;:::i;:::-;30076:119;30234:1;30259:64;30315:7;30306:6;30295:9;30291:22;30259:64;:::i;:::-;30249:74;;30205:128;29989:351;;;;:::o;30346:85::-;30391:7;30420:5;30409:16;;30346:85;;;:::o;30437:60::-;30465:3;30486:5;30479:12;;30437:60;;;:::o;30503:158::-;30561:9;30594:61;30612:42;30621:32;30647:5;30621:32;:::i;:::-;30612:42;:::i;:::-;30594:61;:::i;:::-;30581:74;;30503:158;;;:::o;30667:147::-;30762:45;30801:5;30762:45;:::i;:::-;30757:3;30750:58;30667:147;;:::o;30820:114::-;30887:6;30921:5;30915:12;30905:22;;30820:114;;;:::o;30940:184::-;31039:11;31073:6;31068:3;31061:19;31113:4;31108:3;31104:14;31089:29;;30940:184;;;;:::o;31130:132::-;31197:4;31220:3;31212:11;;31250:4;31245:3;31241:14;31233:22;;31130:132;;;:::o;31268:108::-;31345:24;31363:5;31345:24;:::i;:::-;31340:3;31333:37;31268:108;;:::o;31382:179::-;31451:10;31472:46;31514:3;31506:6;31472:46;:::i;:::-;31550:4;31545:3;31541:14;31527:28;;31382:179;;;;:::o;31567:113::-;31637:4;31669;31664:3;31660:14;31652:22;;31567:113;;;:::o;31716:732::-;31835:3;31864:54;31912:5;31864:54;:::i;:::-;31934:86;32013:6;32008:3;31934:86;:::i;:::-;31927:93;;32044:56;32094:5;32044:56;:::i;:::-;32123:7;32154:1;32139:284;32164:6;32161:1;32158:13;32139:284;;;32240:6;32234:13;32267:63;32326:3;32311:13;32267:63;:::i;:::-;32260:70;;32353:60;32406:6;32353:60;:::i;:::-;32343:70;;32199:224;32186:1;32183;32179:9;32174:14;;32139:284;;;32143:14;32439:3;32432:10;;31840:608;;;31716:732;;;;:::o;32454:831::-;32717:4;32755:3;32744:9;32740:19;32732:27;;32769:71;32837:1;32826:9;32822:17;32813:6;32769:71;:::i;:::-;32850:80;32926:2;32915:9;32911:18;32902:6;32850:80;:::i;:::-;32977:9;32971:4;32967:20;32962:2;32951:9;32947:18;32940:48;33005:108;33108:4;33099:6;33005:108;:::i;:::-;32997:116;;33123:72;33191:2;33180:9;33176:18;33167:6;33123:72;:::i;:::-;33205:73;33273:3;33262:9;33258:19;33249:6;33205:73;:::i;:::-;32454:831;;;;;;;;:::o;33291:807::-;33540:4;33578:3;33567:9;33563:19;33555:27;;33592:71;33660:1;33649:9;33645:17;33636:6;33592:71;:::i;:::-;33673:72;33741:2;33730:9;33726:18;33717:6;33673:72;:::i;:::-;33755:80;33831:2;33820:9;33816:18;33807:6;33755:80;:::i;:::-;33845;33921:2;33910:9;33906:18;33897:6;33845:80;:::i;:::-;33935:73;34003:3;33992:9;33988:19;33979:6;33935:73;:::i;:::-;34018;34086:3;34075:9;34071:19;34062:6;34018:73;:::i;:::-;33291:807;;;;;;;;;:::o;34104:663::-;34192:6;34200;34208;34257:2;34245:9;34236:7;34232:23;34228:32;34225:119;;;34263:79;;:::i;:::-;34225:119;34383:1;34408:64;34464:7;34455:6;34444:9;34440:22;34408:64;:::i;:::-;34398:74;;34354:128;34521:2;34547:64;34603:7;34594:6;34583:9;34579:22;34547:64;:::i;:::-;34537:74;;34492:129;34660:2;34686:64;34742:7;34733:6;34722:9;34718:22;34686:64;:::i;:::-;34676:74;;34631:129;34104:663;;;;;:::o

Swarm Source

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