ETH Price: $2,543.42 (+0.89%)

Token

Fire Arrow (BO-HIYA)
 

Overview

Max Total Supply

100,000,000,000 BO-HIYA

Holders

24

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: BO-HIYA
Balance
15,018,883,594.831950582021996159 BO-HIYA

Value
$0.00
0x50b7bc26b4e09d189eb2516abafe2f328627d25e
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:
BOHIRA

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-05
*/

/**


Bo-hiya the legendary samurai fire arrow.


*/
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.5;


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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold


        return c;
    }
}


interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}


abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;


    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }


    
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }


    
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }


    
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }


    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }


    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }


    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }


    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }


    event OwnershipTransferred(address owner);
}


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


interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);


    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);


    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);


    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;


    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;


    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


contract BOHIRA is IBEP20, Auth {
    using SafeMath for uint256;


    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;


    string constant _name = "Fire Arrow";
    string constant _symbol = "BO-HIYA";
    uint8 constant _decimals = 18;


    uint256 _totalSupply = 100000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = (_totalSupply * 2) / 100; 
    uint256 public _maxWalletSize = (_totalSupply * 2) / 100; 


    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;


    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;


    uint256 liquidityFee = 2;
    uint256 OPFee = 2;
    uint256 BBFee = 2;
    uint256 totalFee = 6;
    uint256 feeDenominator = 100;
    
    address private BBFeeReceiver = 0x2c6E02cEC7ac40174d8983F6b4e87Deb3864E3f5;
    address private OPFeeReceiver = 0xb774CBcBe7F1140cB6a028EB30e67A44C50CD3D2;


    IDEXRouter public router;
    address public pair;


    uint256 public launchedAt;


    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000000 * 1; // 0.3%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }


    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;


        address _owner = owner;
        isFeeExempt[_owner] = true;
        isTxLimitExempt[_owner] = true;


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


    receive() external payable { }


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


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


    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }


    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }


    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }


        return _transferFrom(sender, recipient, amount);
    }


    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        checkTxLimit(sender, amount);
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletSize, "Transfer amount exceeds the bag size.");
        }
        
        if(shouldSwapBack()){ swapBack(); }


        if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); }


        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");


        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);


        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }


    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
    
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }




    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);


        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);


        return amount.sub(feeAmount);
    }


    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }


    function swapBack() internal swapping {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);


        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;


        uint256 balanceBefore = address(this).balance;


        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHOP = amountETH.mul(OPFee).div(totalETHFee);
        uint256 amountETHChad = amountETH - amountETHLiquidity - amountETHOP;


        (bool ChadSuccess, /* bytes memory data */) = payable(BBFeeReceiver).call{value: amountETHChad, gas: 30000}("");
        require(ChadSuccess, "receiver rejected ETH transfer");
        (bool OPSuccess, /* bytes memory data */) = payable(OPFeeReceiver).call{value: amountETHOP, gas: 30000}("");
        require(OPSuccess, "receiver rejected ETH transfer");
        addLiquidity(amountToLiquify, amountETHLiquidity);
    }


    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
    if(tokenAmount > 0){
            router.addLiquidityETH{value: ETHAmount}(
                address(this),
                tokenAmount,
                0,
                0,
                address(this),
                block.timestamp
            );
            emit AutoLiquify(ETHAmount, tokenAmount);
        }
    }


    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(this);


        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }


    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }


    function launch() internal {
        launchedAt = block.number;
    }


    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }


   function setMaxWallet(uint256 amount) external onlyOwner() {
        require(amount >= _totalSupply / 1000 );
        _maxWalletSize = amount;
    }    


    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }


    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }


    function setFees(uint256 _liquidityFee, uint256 _OPFee, uint256 _BBFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        OPFee = _OPFee;
        BBFee = _BBFee;
        totalFee = _liquidityFee.add(_OPFee).add(_BBFee);
        feeDenominator = _feeDenominator;
    }


    function setFeeReceiver(address _BBFeeReceiver, address _OPFeeReceiver) external authorized {
        BBFeeReceiver = _BBFeeReceiver;
        OPFeeReceiver = _OPFeeReceiver;
    }


    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }


    function manualSend() external authorized {
        uint256 contractETHBalance = address(this).balance;
        payable(BBFeeReceiver).transfer(contractETHBalance);
    }


    function transferForeignToken(address _token) public authorized {
        require(_token != address(this), "Can't let you take all native token");
        uint256 _contractBalance = IBEP20(_token).balanceOf(address(this));
        payable(BBFeeReceiver).transfer(_contractBalance);
    }
        
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }


    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }


    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
    
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_BBFeeReceiver","type":"address"},{"internalType":"address","name":"_OPFeeReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_OPFee","type":"uint256"},{"internalType":"uint256","name":"_BBFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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":"_token","type":"address"}],"name":"transferForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620000ee9190620008a7565b64174876e800620001009190620008f8565b60055560646002600554620001169190620008f8565b62000122919062000988565b60065560646002600554620001389190620008f8565b62000144919062000988565b6007556002600c556002600d556002600e556006600f556064601055732c6e02cec7ac40174d8983f6b4e87deb3864e3f5601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b774cbcbe7f1140cb6a028eb30e67a44c50cd3d2601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660006101000a81548160ff0219169083151502179055506001620f42406005546200023a919062000988565b620002469190620008f8565b6017553480156200025657600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d9919062000a2a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200043792919062000a6d565b6020604051808303816000875af115801562000457573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047d919062000a2a565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620006fe919062000aab565b60405180910390a35062000ac8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200079b578086048111156200077357620007726200070d565b5b6001851615620007835780820291505b808102905062000793856200073c565b945062000753565b94509492505050565b600082620007b6576001905062000889565b81620007c6576000905062000889565b8160018114620007df5760028114620007ea5762000820565b600191505062000889565b60ff841115620007ff57620007fe6200070d565b5b8360020a9150848211156200081957620008186200070d565b5b5062000889565b5060208310610133831016604e8410600b84101617156200085a5782820a9050838111156200085457620008536200070d565b5b62000889565b62000869848484600162000749565b925090508184048111156200088357620008826200070d565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008b48262000890565b9150620008c1836200089a565b9250620008f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007a4565b905092915050565b6000620009058262000890565b9150620009128362000890565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200094e576200094d6200070d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009958262000890565b9150620009a28362000890565b925082620009b557620009b462000959565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009f282620009c5565b9050919050565b62000a0481620009e5565b811462000a1057600080fd5b50565b60008151905062000a2481620009f9565b92915050565b60006020828403121562000a435762000a42620009c0565b5b600062000a538482850162000a13565b91505092915050565b62000a6781620009e5565b82525050565b600060408201905062000a84600083018562000a5c565b62000a93602083018462000a5c565b9392505050565b62000aa58162000890565b82525050565b600060208201905062000ac2600083018462000a9a565b92915050565b6137d78062000ad86000396000f3fe6080604052600436106102085760003560e01c8063893d20e811610118578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b146107ae578063f4293890146107d7578063f84ba65d146107ee578063f887ea4014610817578063fe9fbb80146108425761020f565b8063dd62ed3e146106f6578063df20fd4914610733578063e66db25e1461075c578063f0b37c04146107855761020f565b8063a9059cbb116100e7578063a9059cbb146105ff578063b6a5d7de1461063c578063bf56b37114610665578063d51ed1c814610690578063dc93cf70146106cd5761020f565b8063893d20e8146105535780638f9a55c01461057e57806395d89b41146105a9578063a8aa1b31146105d45761020f565b8063313ce5671161019b578063658d4b7f1161016a578063658d4b7f1461046e5780636ddd1713146104975780636fcba377146104c257806370a08231146104eb5780637d1db4a5146105285761020f565b8063313ce567146103b4578063571ac8b0146103df5780635c85974f1461041c5780635d0044ca146104455761020f565b806318160ddd116101d757806318160ddd146102e457806323b872dd1461030f5780632b112e491461034c5780632f54bf6e146103775761020f565b80630445b6671461021457806306fdde031461023f578063095ea7b31461026a5780631161ae39146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961087f565b60405161023691906129a9565b60405180910390f35b34801561024b57600080fd5b50610254610885565b6040516102619190612a5d565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612b0e565b6108c2565b60405161029e9190612b69565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612b84565b6109b4565b6040516102db9190612b69565b60405180910390f35b3480156102f057600080fd5b506102f96109c9565b60405161030691906129a9565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190612bc4565b6109d3565b6040516103439190612b69565b60405180910390f35b34801561035857600080fd5b50610361610bd3565b60405161036e91906129a9565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190612c17565b610c55565b6040516103ab9190612b69565b60405180910390f35b3480156103c057600080fd5b506103c9610cae565b6040516103d69190612c60565b60405180910390f35b3480156103eb57600080fd5b5061040660048036038101906104019190612c17565b610cb7565b6040516104139190612b69565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190612c7b565b610cea565b005b34801561045157600080fd5b5061046c60048036038101906104679190612c7b565b610d58565b005b34801561047a57600080fd5b5061049560048036038101906104909190612cd4565b610dc6565b005b3480156104a357600080fd5b506104ac610e69565b6040516104b99190612b69565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190612d14565b610e7c565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612c17565b610f11565b60405161051f91906129a9565b60405180910390f35b34801561053457600080fd5b5061053d610f5a565b60405161054a91906129a9565b60405180910390f35b34801561055f57600080fd5b50610568610f60565b6040516105759190612d8a565b60405180910390f35b34801561058a57600080fd5b50610593610f89565b6040516105a091906129a9565b60405180910390f35b3480156105b557600080fd5b506105be610f8f565b6040516105cb9190612a5d565b60405180910390f35b3480156105e057600080fd5b506105e9610fcc565b6040516105f69190612d8a565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190612b0e565b610ff2565b6040516106339190612b69565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190612c17565b611007565b005b34801561067157600080fd5b5061067a6110a9565b60405161068791906129a9565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190612c7b565b6110af565b6040516106c491906129a9565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190612c17565b611121565b005b34801561070257600080fd5b5061071d60048036038101906107189190612da5565b6112c2565b60405161072a91906129a9565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190612de5565b611349565b005b34801561076857600080fd5b50610783600480360381019061077e9190612da5565b6113b6565b005b34801561079157600080fd5b506107ac60048036038101906107a79190612c17565b611484565b005b3480156107ba57600080fd5b506107d560048036038101906107d09190612e63565b611527565b005b3480156107e357600080fd5b506107ec611640565b005b3480156107fa57600080fd5b5061081560048036038101906108109190612cd4565b6116f9565b005b34801561082357600080fd5b5061082c61179c565b6040516108399190612eef565b60405180910390f35b34801561084e57600080fd5b5061086960048036038101906108649190612c17565b6117c2565b6040516108769190612b69565b60405180910390f35b60175481565b60606040518060400160405280600a81526020017f46697265204172726f7700000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109a291906129a9565b60405180910390a36001905092915050565b6000826109c0836110af565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bbf57610b3e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118189092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bca84848461187c565b90509392505050565b6000610c50610c03600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b610c42610c31600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b600554611d0b90919063ffffffff16565b611d0b90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6000610ce3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c2565b9050919050565b610cf3336117c2565b610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2990612f56565b60405180910390fd5b6103e8600554610d429190612fd4565b811015610d4e57600080fd5b8060068190555050565b610d6133610c55565b610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9790613051565b60405180910390fd5b6103e8600554610db09190612fd4565b811015610dbc57600080fd5b8060078190555050565b610dcf336117c2565b610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0590612f56565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610e85336117c2565b610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb90612f56565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610efe82610ef08587611d5590919063ffffffff16565b611d5590919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600781526020017f424f2d4849594100000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610fff33848461187c565b905092915050565b61101033610c55565b61104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690613051565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b600061111a6110bc610bd3565b61110c6110fd60026110ef601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b611db390919063ffffffff16565b85611db390919063ffffffff16565b611e2d90919063ffffffff16565b9050919050565b61112a336117c2565b611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090612f56565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce906130e3565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112129190612d8a565b602060405180830381865afa15801561122f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112539190613118565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112bd573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611352336117c2565b611391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138890612f56565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6113bf336117c2565b6113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590612f56565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61148d33610c55565b6114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c390613051565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61153033610c55565b61156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156690613051565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116359190613166565b60405180910390a150565b611649336117c2565b611688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167f90612f56565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156116f5573d6000803e3d6000fd5b5050565b611702336117c2565b611741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173890612f56565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118579190612a5d565b60405180910390fd5b506000838561186f9190613181565b9050809150509392505050565b6000601860009054906101000a900460ff16156118a55761189e848484611e77565b9050611d04565b6118af848361204a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561195b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a4457600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a04575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a0191906131b5565b11155b611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a9061327d565b60405180910390fd5b5b611a4c6120e7565b15611a5a57611a596121be565b5b611a62612688565b158015611abc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611b16576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611b0d57600080fd5b611b15612695565b5b611b9f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118189092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bed8561269e565b611bf75782611c02565b611c0185846126f5565b5b9050611c5681600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cf691906129a9565b60405180910390a360019150505b9392505050565b6000611d4d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611818565b905092915050565b6000808284611d6491906131b5565b905083811015611da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da0906132e9565b60405180910390fd5b8091505092915050565b6000808303611dc55760009050611e27565b60008284611dd39190613309565b9050828482611de29190612fd4565b14611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e19906133d5565b60405180910390fd5b809150505b92915050565b6000611e6f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612839565b905092915050565b6000611f02826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118189092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f9782600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5590919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161203791906129a9565b60405180910390a3600190509392505050565b600654811115806120a45750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6120e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120da90613441565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121545750601860009054906101000a900460ff16155b801561216c5750601660009054906101000a900460ff165b80156121b95750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006121e430610f11565b905060006122246002612216600f54612208600c5487611db390919063ffffffff16565b611e2d90919063ffffffff16565b611e2d90919063ffffffff16565b9050600061223b8284611d0b90919063ffffffff16565b90506000600267ffffffffffffffff81111561225a57612259613461565b5b6040519080825280602002602001820160405280156122885781602001602082028036833780820191505090505b50905030816000815181106122a05761229f613490565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061231157612310613490565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016123b49594939291906135b8565b600060405180830381600087803b1580156123ce57600080fd5b505af11580156123e2573d6000803e3d6000fd5b5050505060006123fb8247611d0b90919063ffffffff16565b905060006124296124186002600c54611e2d90919063ffffffff16565b600f54611d0b90919063ffffffff16565b9050600061246760026124598461244b600c5488611db390919063ffffffff16565b611e2d90919063ffffffff16565b611e2d90919063ffffffff16565b9050600061249283612484600d5487611db390919063ffffffff16565b611e2d90919063ffffffff16565b905060008183866124a39190613181565b6124ad9190613181565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516124fb90613643565b600060405180830381858888f193505050503d8060008114612539576040519150601f19603f3d011682016040523d82523d6000602084013e61253e565b606091505b5050905080612582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612579906136a4565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516125ce90613643565b600060405180830381858888f193505050503d806000811461260c576040519150601f19603f3d011682016040523d82523d6000602084013e612611565b606091505b5050905080612655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264c906136a4565b60405180910390fd5b61265f8b8661289c565b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080612721601054612713600f5486611db390919063ffffffff16565b611e2d90919063ffffffff16565b905061277581600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5590919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161281591906129a9565b60405180910390a36128308184611d0b90919063ffffffff16565b91505092915050565b60008083118290612880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128779190612a5d565b60405180910390fd5b506000838561288f9190612fd4565b9050809150509392505050565b600082111561298c57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161290c969594939291906136c4565b60606040518083038185885af115801561292a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061294f9190613725565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068183604051612983929190613778565b60405180910390a15b5050565b6000819050919050565b6129a381612990565b82525050565b60006020820190506129be600083018461299a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129fe5780820151818401526020810190506129e3565b83811115612a0d576000848401525b50505050565b6000601f19601f8301169050919050565b6000612a2f826129c4565b612a3981856129cf565b9350612a498185602086016129e0565b612a5281612a13565b840191505092915050565b60006020820190508181036000830152612a778184612a24565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612aaf82612a84565b9050919050565b612abf81612aa4565b8114612aca57600080fd5b50565b600081359050612adc81612ab6565b92915050565b612aeb81612990565b8114612af657600080fd5b50565b600081359050612b0881612ae2565b92915050565b60008060408385031215612b2557612b24612a7f565b5b6000612b3385828601612acd565b9250506020612b4485828601612af9565b9150509250929050565b60008115159050919050565b612b6381612b4e565b82525050565b6000602082019050612b7e6000830184612b5a565b92915050565b60008060408385031215612b9b57612b9a612a7f565b5b6000612ba985828601612af9565b9250506020612bba85828601612af9565b9150509250929050565b600080600060608486031215612bdd57612bdc612a7f565b5b6000612beb86828701612acd565b9350506020612bfc86828701612acd565b9250506040612c0d86828701612af9565b9150509250925092565b600060208284031215612c2d57612c2c612a7f565b5b6000612c3b84828501612acd565b91505092915050565b600060ff82169050919050565b612c5a81612c44565b82525050565b6000602082019050612c756000830184612c51565b92915050565b600060208284031215612c9157612c90612a7f565b5b6000612c9f84828501612af9565b91505092915050565b612cb181612b4e565b8114612cbc57600080fd5b50565b600081359050612cce81612ca8565b92915050565b60008060408385031215612ceb57612cea612a7f565b5b6000612cf985828601612acd565b9250506020612d0a85828601612cbf565b9150509250929050565b60008060008060808587031215612d2e57612d2d612a7f565b5b6000612d3c87828801612af9565b9450506020612d4d87828801612af9565b9350506040612d5e87828801612af9565b9250506060612d6f87828801612af9565b91505092959194509250565b612d8481612aa4565b82525050565b6000602082019050612d9f6000830184612d7b565b92915050565b60008060408385031215612dbc57612dbb612a7f565b5b6000612dca85828601612acd565b9250506020612ddb85828601612acd565b9150509250929050565b60008060408385031215612dfc57612dfb612a7f565b5b6000612e0a85828601612cbf565b9250506020612e1b85828601612af9565b9150509250929050565b6000612e3082612a84565b9050919050565b612e4081612e25565b8114612e4b57600080fd5b50565b600081359050612e5d81612e37565b92915050565b600060208284031215612e7957612e78612a7f565b5b6000612e8784828501612e4e565b91505092915050565b6000819050919050565b6000612eb5612eb0612eab84612a84565b612e90565b612a84565b9050919050565b6000612ec782612e9a565b9050919050565b6000612ed982612ebc565b9050919050565b612ee981612ece565b82525050565b6000602082019050612f046000830184612ee0565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000612f40600b836129cf565b9150612f4b82612f0a565b602082019050919050565b60006020820190508181036000830152612f6f81612f33565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fdf82612990565b9150612fea83612990565b925082612ffa57612ff9612f76565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061303b6006836129cf565b915061304682613005565b602082019050919050565b6000602082019050818103600083015261306a8161302e565b9050919050565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b60006130cd6023836129cf565b91506130d882613071565b604082019050919050565b600060208201905081810360008301526130fc816130c0565b9050919050565b60008151905061311281612ae2565b92915050565b60006020828403121561312e5761312d612a7f565b5b600061313c84828501613103565b91505092915050565b600061315082612ebc565b9050919050565b61316081613145565b82525050565b600060208201905061317b6000830184613157565b92915050565b600061318c82612990565b915061319783612990565b9250828210156131aa576131a9612fa5565b5b828203905092915050565b60006131c082612990565b91506131cb83612990565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613200576131ff612fa5565b5b828201905092915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b60006132676025836129cf565b91506132728261320b565b604082019050919050565b600060208201905081810360008301526132968161325a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006132d3601b836129cf565b91506132de8261329d565b602082019050919050565b60006020820190508181036000830152613302816132c6565b9050919050565b600061331482612990565b915061331f83612990565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561335857613357612fa5565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006133bf6021836129cf565b91506133ca82613363565b604082019050919050565b600060208201905081810360008301526133ee816133b2565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061342b6011836129cf565b9150613436826133f5565b602082019050919050565b6000602082019050818103600083015261345a8161341e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006134e46134df6134da846134bf565b612e90565b612990565b9050919050565b6134f4816134c9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61352f81612aa4565b82525050565b60006135418383613526565b60208301905092915050565b6000602082019050919050565b6000613565826134fa565b61356f8185613505565b935061357a83613516565b8060005b838110156135ab5781516135928882613535565b975061359d8361354d565b92505060018101905061357e565b5085935050505092915050565b600060a0820190506135cd600083018861299a565b6135da60208301876134eb565b81810360408301526135ec818661355a565b90506135fb6060830185612d7b565b613608608083018461299a565b9695505050505050565b600081905092915050565b50565b600061362d600083613612565b91506136388261361d565b600082019050919050565b600061364e82613620565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b600061368e601e836129cf565b915061369982613658565b602082019050919050565b600060208201905081810360008301526136bd81613681565b9050919050565b600060c0820190506136d96000830189612d7b565b6136e6602083018861299a565b6136f360408301876134eb565b61370060608301866134eb565b61370d6080830185612d7b565b61371a60a083018461299a565b979650505050505050565b60008060006060848603121561373e5761373d612a7f565b5b600061374c86828701613103565b935050602061375d86828701613103565b925050604061376e86828701613103565b9150509250925092565b600060408201905061378d600083018561299a565b61379a602083018461299a565b939250505056fea2646970667358221220834afa4e961892f6545db586e8655dd65234ac33faf47ded8c816497e22d79bf64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102085760003560e01c8063893d20e811610118578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b146107ae578063f4293890146107d7578063f84ba65d146107ee578063f887ea4014610817578063fe9fbb80146108425761020f565b8063dd62ed3e146106f6578063df20fd4914610733578063e66db25e1461075c578063f0b37c04146107855761020f565b8063a9059cbb116100e7578063a9059cbb146105ff578063b6a5d7de1461063c578063bf56b37114610665578063d51ed1c814610690578063dc93cf70146106cd5761020f565b8063893d20e8146105535780638f9a55c01461057e57806395d89b41146105a9578063a8aa1b31146105d45761020f565b8063313ce5671161019b578063658d4b7f1161016a578063658d4b7f1461046e5780636ddd1713146104975780636fcba377146104c257806370a08231146104eb5780637d1db4a5146105285761020f565b8063313ce567146103b4578063571ac8b0146103df5780635c85974f1461041c5780635d0044ca146104455761020f565b806318160ddd116101d757806318160ddd146102e457806323b872dd1461030f5780632b112e491461034c5780632f54bf6e146103775761020f565b80630445b6671461021457806306fdde031461023f578063095ea7b31461026a5780631161ae39146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961087f565b60405161023691906129a9565b60405180910390f35b34801561024b57600080fd5b50610254610885565b6040516102619190612a5d565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612b0e565b6108c2565b60405161029e9190612b69565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612b84565b6109b4565b6040516102db9190612b69565b60405180910390f35b3480156102f057600080fd5b506102f96109c9565b60405161030691906129a9565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190612bc4565b6109d3565b6040516103439190612b69565b60405180910390f35b34801561035857600080fd5b50610361610bd3565b60405161036e91906129a9565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190612c17565b610c55565b6040516103ab9190612b69565b60405180910390f35b3480156103c057600080fd5b506103c9610cae565b6040516103d69190612c60565b60405180910390f35b3480156103eb57600080fd5b5061040660048036038101906104019190612c17565b610cb7565b6040516104139190612b69565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190612c7b565b610cea565b005b34801561045157600080fd5b5061046c60048036038101906104679190612c7b565b610d58565b005b34801561047a57600080fd5b5061049560048036038101906104909190612cd4565b610dc6565b005b3480156104a357600080fd5b506104ac610e69565b6040516104b99190612b69565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190612d14565b610e7c565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612c17565b610f11565b60405161051f91906129a9565b60405180910390f35b34801561053457600080fd5b5061053d610f5a565b60405161054a91906129a9565b60405180910390f35b34801561055f57600080fd5b50610568610f60565b6040516105759190612d8a565b60405180910390f35b34801561058a57600080fd5b50610593610f89565b6040516105a091906129a9565b60405180910390f35b3480156105b557600080fd5b506105be610f8f565b6040516105cb9190612a5d565b60405180910390f35b3480156105e057600080fd5b506105e9610fcc565b6040516105f69190612d8a565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190612b0e565b610ff2565b6040516106339190612b69565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190612c17565b611007565b005b34801561067157600080fd5b5061067a6110a9565b60405161068791906129a9565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190612c7b565b6110af565b6040516106c491906129a9565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190612c17565b611121565b005b34801561070257600080fd5b5061071d60048036038101906107189190612da5565b6112c2565b60405161072a91906129a9565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190612de5565b611349565b005b34801561076857600080fd5b50610783600480360381019061077e9190612da5565b6113b6565b005b34801561079157600080fd5b506107ac60048036038101906107a79190612c17565b611484565b005b3480156107ba57600080fd5b506107d560048036038101906107d09190612e63565b611527565b005b3480156107e357600080fd5b506107ec611640565b005b3480156107fa57600080fd5b5061081560048036038101906108109190612cd4565b6116f9565b005b34801561082357600080fd5b5061082c61179c565b6040516108399190612eef565b60405180910390f35b34801561084e57600080fd5b5061086960048036038101906108649190612c17565b6117c2565b6040516108769190612b69565b60405180910390f35b60175481565b60606040518060400160405280600a81526020017f46697265204172726f7700000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109a291906129a9565b60405180910390a36001905092915050565b6000826109c0836110af565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bbf57610b3e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118189092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bca84848461187c565b90509392505050565b6000610c50610c03600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b610c42610c31600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b600554611d0b90919063ffffffff16565b611d0b90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6000610ce3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c2565b9050919050565b610cf3336117c2565b610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2990612f56565b60405180910390fd5b6103e8600554610d429190612fd4565b811015610d4e57600080fd5b8060068190555050565b610d6133610c55565b610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9790613051565b60405180910390fd5b6103e8600554610db09190612fd4565b811015610dbc57600080fd5b8060078190555050565b610dcf336117c2565b610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0590612f56565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610e85336117c2565b610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb90612f56565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610efe82610ef08587611d5590919063ffffffff16565b611d5590919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600781526020017f424f2d4849594100000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610fff33848461187c565b905092915050565b61101033610c55565b61104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690613051565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b600061111a6110bc610bd3565b61110c6110fd60026110ef601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b611db390919063ffffffff16565b85611db390919063ffffffff16565b611e2d90919063ffffffff16565b9050919050565b61112a336117c2565b611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090612f56565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce906130e3565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112129190612d8a565b602060405180830381865afa15801561122f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112539190613118565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112bd573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611352336117c2565b611391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138890612f56565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6113bf336117c2565b6113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590612f56565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61148d33610c55565b6114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c390613051565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61153033610c55565b61156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156690613051565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116359190613166565b60405180910390a150565b611649336117c2565b611688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167f90612f56565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156116f5573d6000803e3d6000fd5b5050565b611702336117c2565b611741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173890612f56565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118579190612a5d565b60405180910390fd5b506000838561186f9190613181565b9050809150509392505050565b6000601860009054906101000a900460ff16156118a55761189e848484611e77565b9050611d04565b6118af848361204a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561195b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a4457600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a04575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a0191906131b5565b11155b611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a9061327d565b60405180910390fd5b5b611a4c6120e7565b15611a5a57611a596121be565b5b611a62612688565b158015611abc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611b16576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611b0d57600080fd5b611b15612695565b5b611b9f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118189092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bed8561269e565b611bf75782611c02565b611c0185846126f5565b5b9050611c5681600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cf691906129a9565b60405180910390a360019150505b9392505050565b6000611d4d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611818565b905092915050565b6000808284611d6491906131b5565b905083811015611da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da0906132e9565b60405180910390fd5b8091505092915050565b6000808303611dc55760009050611e27565b60008284611dd39190613309565b9050828482611de29190612fd4565b14611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e19906133d5565b60405180910390fd5b809150505b92915050565b6000611e6f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612839565b905092915050565b6000611f02826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118189092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f9782600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5590919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161203791906129a9565b60405180910390a3600190509392505050565b600654811115806120a45750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6120e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120da90613441565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121545750601860009054906101000a900460ff16155b801561216c5750601660009054906101000a900460ff165b80156121b95750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006121e430610f11565b905060006122246002612216600f54612208600c5487611db390919063ffffffff16565b611e2d90919063ffffffff16565b611e2d90919063ffffffff16565b9050600061223b8284611d0b90919063ffffffff16565b90506000600267ffffffffffffffff81111561225a57612259613461565b5b6040519080825280602002602001820160405280156122885781602001602082028036833780820191505090505b50905030816000815181106122a05761229f613490565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061231157612310613490565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016123b49594939291906135b8565b600060405180830381600087803b1580156123ce57600080fd5b505af11580156123e2573d6000803e3d6000fd5b5050505060006123fb8247611d0b90919063ffffffff16565b905060006124296124186002600c54611e2d90919063ffffffff16565b600f54611d0b90919063ffffffff16565b9050600061246760026124598461244b600c5488611db390919063ffffffff16565b611e2d90919063ffffffff16565b611e2d90919063ffffffff16565b9050600061249283612484600d5487611db390919063ffffffff16565b611e2d90919063ffffffff16565b905060008183866124a39190613181565b6124ad9190613181565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516124fb90613643565b600060405180830381858888f193505050503d8060008114612539576040519150601f19603f3d011682016040523d82523d6000602084013e61253e565b606091505b5050905080612582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612579906136a4565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516125ce90613643565b600060405180830381858888f193505050503d806000811461260c576040519150601f19603f3d011682016040523d82523d6000602084013e612611565b606091505b5050905080612655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264c906136a4565b60405180910390fd5b61265f8b8661289c565b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080612721601054612713600f5486611db390919063ffffffff16565b611e2d90919063ffffffff16565b905061277581600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5590919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161281591906129a9565b60405180910390a36128308184611d0b90919063ffffffff16565b91505092915050565b60008083118290612880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128779190612a5d565b60405180910390fd5b506000838561288f9190612fd4565b9050809150509392505050565b600082111561298c57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161290c969594939291906136c4565b60606040518083038185885af115801561292a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061294f9190613725565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068183604051612983929190613778565b60405180910390a15b5050565b6000819050919050565b6129a381612990565b82525050565b60006020820190506129be600083018461299a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129fe5780820151818401526020810190506129e3565b83811115612a0d576000848401525b50505050565b6000601f19601f8301169050919050565b6000612a2f826129c4565b612a3981856129cf565b9350612a498185602086016129e0565b612a5281612a13565b840191505092915050565b60006020820190508181036000830152612a778184612a24565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612aaf82612a84565b9050919050565b612abf81612aa4565b8114612aca57600080fd5b50565b600081359050612adc81612ab6565b92915050565b612aeb81612990565b8114612af657600080fd5b50565b600081359050612b0881612ae2565b92915050565b60008060408385031215612b2557612b24612a7f565b5b6000612b3385828601612acd565b9250506020612b4485828601612af9565b9150509250929050565b60008115159050919050565b612b6381612b4e565b82525050565b6000602082019050612b7e6000830184612b5a565b92915050565b60008060408385031215612b9b57612b9a612a7f565b5b6000612ba985828601612af9565b9250506020612bba85828601612af9565b9150509250929050565b600080600060608486031215612bdd57612bdc612a7f565b5b6000612beb86828701612acd565b9350506020612bfc86828701612acd565b9250506040612c0d86828701612af9565b9150509250925092565b600060208284031215612c2d57612c2c612a7f565b5b6000612c3b84828501612acd565b91505092915050565b600060ff82169050919050565b612c5a81612c44565b82525050565b6000602082019050612c756000830184612c51565b92915050565b600060208284031215612c9157612c90612a7f565b5b6000612c9f84828501612af9565b91505092915050565b612cb181612b4e565b8114612cbc57600080fd5b50565b600081359050612cce81612ca8565b92915050565b60008060408385031215612ceb57612cea612a7f565b5b6000612cf985828601612acd565b9250506020612d0a85828601612cbf565b9150509250929050565b60008060008060808587031215612d2e57612d2d612a7f565b5b6000612d3c87828801612af9565b9450506020612d4d87828801612af9565b9350506040612d5e87828801612af9565b9250506060612d6f87828801612af9565b91505092959194509250565b612d8481612aa4565b82525050565b6000602082019050612d9f6000830184612d7b565b92915050565b60008060408385031215612dbc57612dbb612a7f565b5b6000612dca85828601612acd565b9250506020612ddb85828601612acd565b9150509250929050565b60008060408385031215612dfc57612dfb612a7f565b5b6000612e0a85828601612cbf565b9250506020612e1b85828601612af9565b9150509250929050565b6000612e3082612a84565b9050919050565b612e4081612e25565b8114612e4b57600080fd5b50565b600081359050612e5d81612e37565b92915050565b600060208284031215612e7957612e78612a7f565b5b6000612e8784828501612e4e565b91505092915050565b6000819050919050565b6000612eb5612eb0612eab84612a84565b612e90565b612a84565b9050919050565b6000612ec782612e9a565b9050919050565b6000612ed982612ebc565b9050919050565b612ee981612ece565b82525050565b6000602082019050612f046000830184612ee0565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000612f40600b836129cf565b9150612f4b82612f0a565b602082019050919050565b60006020820190508181036000830152612f6f81612f33565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fdf82612990565b9150612fea83612990565b925082612ffa57612ff9612f76565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061303b6006836129cf565b915061304682613005565b602082019050919050565b6000602082019050818103600083015261306a8161302e565b9050919050565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b60006130cd6023836129cf565b91506130d882613071565b604082019050919050565b600060208201905081810360008301526130fc816130c0565b9050919050565b60008151905061311281612ae2565b92915050565b60006020828403121561312e5761312d612a7f565b5b600061313c84828501613103565b91505092915050565b600061315082612ebc565b9050919050565b61316081613145565b82525050565b600060208201905061317b6000830184613157565b92915050565b600061318c82612990565b915061319783612990565b9250828210156131aa576131a9612fa5565b5b828203905092915050565b60006131c082612990565b91506131cb83612990565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613200576131ff612fa5565b5b828201905092915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b60006132676025836129cf565b91506132728261320b565b604082019050919050565b600060208201905081810360008301526132968161325a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006132d3601b836129cf565b91506132de8261329d565b602082019050919050565b60006020820190508181036000830152613302816132c6565b9050919050565b600061331482612990565b915061331f83612990565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561335857613357612fa5565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006133bf6021836129cf565b91506133ca82613363565b604082019050919050565b600060208201905081810360008301526133ee816133b2565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061342b6011836129cf565b9150613436826133f5565b602082019050919050565b6000602082019050818103600083015261345a8161341e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006134e46134df6134da846134bf565b612e90565b612990565b9050919050565b6134f4816134c9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61352f81612aa4565b82525050565b60006135418383613526565b60208301905092915050565b6000602082019050919050565b6000613565826134fa565b61356f8185613505565b935061357a83613516565b8060005b838110156135ab5781516135928882613535565b975061359d8361354d565b92505060018101905061357e565b5085935050505092915050565b600060a0820190506135cd600083018861299a565b6135da60208301876134eb565b81810360408301526135ec818661355a565b90506135fb6060830185612d7b565b613608608083018461299a565b9695505050505050565b600081905092915050565b50565b600061362d600083613612565b91506136388261361d565b600082019050919050565b600061364e82613620565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b600061368e601e836129cf565b915061369982613658565b602082019050919050565b600060208201905081810360008301526136bd81613681565b9050919050565b600060c0820190506136d96000830189612d7b565b6136e6602083018861299a565b6136f360408301876134eb565b61370060608301866134eb565b61370d6080830185612d7b565b61371a60a083018461299a565b979650505050505050565b60008060006060848603121561373e5761373d612a7f565b5b600061374c86828701613103565b935050602061375d86828701613103565b925050604061376e86828701613103565b9150509250925092565b600060408201905061378d600083018561299a565b61379a602083018461299a565b939250505056fea2646970667358221220834afa4e961892f6545db586e8655dd65234ac33faf47ded8c816497e22d79bf64736f6c634300080f0033

Deployed Bytecode Sourcemap

5245:10456:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6494:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7458:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7882:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15480:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7188:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8406:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15151:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3118:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7282:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8108:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13390:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13544:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13709:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6457:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13977:316;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7628:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5704:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7544:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5766:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7368:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6391:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8240:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2787:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6421:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15303:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14844:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7739:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14495:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14303:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2959:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3522:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14661;;;;;;;;;;;;;:::i;:::-;;13839:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6360:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3294:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6494:57;;;;:::o;7458:80::-;7506:13;7530:5;;;;;;;;;;;;;;;;;7523:12;;7458:80;:::o;7882:216::-;7957:4;8009:6;7974:11;:23;7986:10;7974:23;;;;;;;;;;;;;;;:32;7998:7;7974:32;;;;;;;;;;;;;;;:41;;;;8052:7;8031:37;;8040:10;8031:37;;;8061:6;8031:37;;;;;;:::i;:::-;;;;;;;;8086:4;8079:11;;7882:216;;;;:::o;15480:150::-;15560:4;15616:6;15584:29;15604:8;15584:19;:29::i;:::-;:38;15577:45;;15480:150;;;;:::o;7188:88::-;7243:7;7261:12;;7254:19;;7188:88;:::o;8406:372::-;8506:4;8561:17;8526:11;:19;8538:6;8526:19;;;;;;;;;;;;;;;:31;8546:10;8526:31;;;;;;;;;;;;;;;;:52;8523:186;;8628:69;8664:6;8628:69;;;;;;;;;;;;;;;;;:11;:19;8640:6;8628:19;;;;;;;;;;;;;;;:31;8648:10;8628:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8594:11;:19;8606:6;8594:19;;;;;;;;;;;;;;;:31;8614:10;8594:31;;;;;;;;;;;;;;;:103;;;;8523:186;8730:40;8744:6;8752:9;8763:6;8730:13;:40::i;:::-;8723:47;;8406:372;;;;;:::o;15151:142::-;15204:7;15231:54;15269:15;15279:4;;;;;;;;;;;15269:9;:15::i;:::-;15231:33;15248:15;15258:4;;;;;;;;;;;15248:9;:15::i;:::-;15231:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15224:61;;15151:142;:::o;3118:103::-;3173:4;3208:5;;;;;;;;;;;3197:16;;:7;:16;;;3190:23;;3118:103;;;:::o;7282:80::-;7334:5;5629:2;7343:16;;7282:80;:::o;8108:122::-;8163:4;8187:35;8195:7;8204:17;8187:7;:35::i;:::-;8180:42;;8108:122;;;:::o;13390:145::-;2720:24;2733:10;2720:12;:24::i;:::-;2712:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13490:4:::1;13475:12;;:19;;;;:::i;:::-;13465:6;:29;;13457:38;;;::::0;::::1;;13521:6;13506:12;:21;;;;13390:145:::0;:::o;13544:151::-;2622:19;2630:10;2622:7;:19::i;:::-;2614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13647:4:::1;13632:12;;:19;;;;:::i;:::-;13622:6;:29;;13614:39;;;::::0;::::1;;13681:6;13664:14;:23;;;;13544:151:::0;:::o;13709:120::-;2720:24;2733:10;2720:12;:24::i;:::-;2712:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13815:6:::1;13793:11;:19;13805:6;13793:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;13709:120:::0;;:::o;6457:30::-;;;;;;;;;;;;;:::o;13977:316::-;2720:24;2733:10;2720:12;:24::i;:::-;2712:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14120:13:::1;14105:12;:28;;;;14152:6;14144:5;:14;;;;14177:6;14169:5;:14;;;;14205:37;14235:6;14205:25;14223:6;14205:13;:17;;:25;;;;:::i;:::-;:29;;:37;;;;:::i;:::-;14194:8;:48;;;;14270:15;14253:14;:32;;;;13977:316:::0;;;;:::o;7628:105::-;7694:7;7712:9;:18;7722:7;7712:18;;;;;;;;;;;;;;;;7705:25;;7628:105;;;:::o;5704:54::-;;;;:::o;7544:78::-;7596:7;7614:5;;;;;;;;;;;7607:12;;7544:78;:::o;5766:56::-;;;;:::o;7368:84::-;7418:13;7442:7;;;;;;;;;;;;;;;;;7435:14;;7368:84;:::o;6391:19::-;;;;;;;;;;;;;:::o;8240:156::-;8320:4;8344:44;8358:10;8370:9;8381:6;8344:13;:44::i;:::-;8337:51;;8240:156;;;;:::o;2787:94::-;2622:19;2630:10;2622:7;:19::i;:::-;2614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2869:4:::1;2847:14:::0;:19:::1;2862:3;2847:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2787:94:::0;:::o;6421:25::-;;;;:::o;15303:167::-;15371:7;15398:64;15439:22;:20;:22::i;:::-;15398:36;15411:22;15431:1;15411:15;15421:4;;;;;;;;;;;15411:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;15398:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;15391:71;;15303:167;;;:::o;14844:291::-;2720:24;2733:10;2720:12;:24::i;:::-;2712:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14945:4:::1;14927:23;;:6;:23;;::::0;14919:71:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15001:24;15035:6;15028:24;;;15061:4;15028:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15001:66;;15086:13;;;;;;;;;;;15078:31;;:49;15110:16;15078:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14908:227;14844:291:::0;:::o;7739:133::-;7823:7;7841:11;:19;7853:6;7841:19;;;;;;;;;;;;;;;:28;7861:7;7841:28;;;;;;;;;;;;;;;;7834:35;;7739:133;;;;:::o;14495:156::-;2720:24;2733:10;2720:12;:24::i;:::-;2712:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14601:8:::1;14587:11;;:22;;;;;;;;;;;;;;;;;;14636:7;14620:13;:23;;;;14495:156:::0;;:::o;14303:182::-;2720:24;2733:10;2720:12;:24::i;:::-;2712:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14422:14:::1;14406:13;;:30;;;;;;;;;;;;;;;;;;14463:14;14447:13;;:30;;;;;;;;;;;;;;;;;;14303:182:::0;;:::o;2959:97::-;2622:19;2630:10;2622:7;:19::i;:::-;2614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3043:5:::1;3021:14;:19;3036:3;3021:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2959:97:::0;:::o;3522:173::-;2622:19;2630:10;2622:7;:19::i;:::-;2614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3606:3:::1;3598:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3642:4;3620:14:::0;:19:::1;3635:3;3620:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3662:25;3683:3;3662:25;;;;;;:::i;:::-;;;;;;;;3522:173:::0;:::o;14661:::-;2720:24;2733:10;2720:12;:24::i;:::-;2712:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14714:26:::1;14743:21;14714:50;;14783:13;;;;;;;;;;;14775:31;;:51;14807:18;14775:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14703:131;14661:173::o:0;13839:128::-;2720:24;2733:10;2720:12;:24::i;:::-;2712:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13953:6:::1;13927:15;:23;13943:6;13927:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13839:128:::0;;:::o;6360:24::-;;;;;;;;;;;;;:::o;3294:107::-;3350:4;3374:14;:19;3389:3;3374:19;;;;;;;;;;;;;;;;;;;;;;;;;3367:26;;3294:107;;;:::o;476:194::-;562:7;595:1;590;:6;;598:12;582:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;622:9;638:1;634;:5;;;;:::i;:::-;622:17;;661:1;654:8;;;476:194;;;;;:::o;8788:939::-;8880:4;8900:6;;;;;;;;;;;8897:63;;;8916:41;8931:6;8939:9;8950:6;8916:14;:41::i;:::-;8909:48;;;;8897:63;8980:28;8993:6;9001;8980:12;:28::i;:::-;9046:4;;;;;;;;;;;9033:17;;:9;:17;;;;:38;;;;;9067:4;;;;;;;;;;;9054:17;;:9;:17;;;;9033:38;9029:198;;;9096:15;:26;9112:9;9096:26;;;;;;;;;;;;;;;;;;;;;;;;;:77;;;;9159:14;;9149:6;9126:9;:20;9136:9;9126:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:47;;9096:77;9088:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;9029:198;9250:16;:14;:16::i;:::-;9247:35;;;9269:10;:8;:10::i;:::-;9247:35;9300:10;:8;:10::i;:::-;9299:11;:32;;;;;9327:4;;;;;;;;;;;9314:17;;:9;:17;;;9299:32;9296:81;;;9362:1;9342:9;:17;9352:6;9342:17;;;;;;;;;;;;;;;;:21;9334:30;;;;;;9366:8;:6;:8::i;:::-;9296:81;9411:53;9433:6;9411:53;;;;;;;;;;;;;;;;;:9;:17;9421:6;9411:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9391:9;:17;9401:6;9391:17;;;;;;;;;;;;;;;:73;;;;9479:22;9504:21;9518:6;9504:13;:21::i;:::-;:56;;9554:6;9504:56;;;9528:23;9536:6;9544;9528:7;:23::i;:::-;9504:56;9479:81;;9594:40;9619:14;9594:9;:20;9604:9;9594:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9571:9;:20;9581:9;9571:20;;;;;;;;;;;;;;;:63;;;;9671:9;9654:43;;9663:6;9654:43;;;9682:14;9654:43;;;;;;:::i;:::-;;;;;;;;9715:4;9708:11;;;8788:939;;;;;;:::o;334:136::-;392:7;419:43;423:1;426;419:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;412:50;;334:136;;;;:::o;145:183::-;203:7;223:9;239:1;235;:5;;;;:::i;:::-;223:17;;264:1;259;:6;;251:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;319:1;312:8;;;145:183;;;;:::o;676:254::-;734:7;763:1;758;:6;754:47;;788:1;781:8;;;;754:47;815:9;831:1;827;:5;;;;:::i;:::-;815:17;;860:1;855;851;:5;;;;:::i;:::-;:10;843:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;921:1;914:8;;;676:254;;;;;:::o;936:132::-;994:7;1021:39;1025:1;1028;1021:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1014:46;;936:132;;;;:::o;9739:330::-;9832:4;9869:53;9891:6;9869:53;;;;;;;;;;;;;;;;;:9;:17;9879:6;9869:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9849:9;:17;9859:6;9849:17;;;;;;;;;;;;;;;:73;;;;9956:32;9981:6;9956:9;:20;9966:9;9956:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9933:9;:20;9943:9;9933:20;;;;;;;;;;;;;;;:55;;;;10021:9;10004:35;;10013:6;10004:35;;;10032:6;10004:35;;;;;;:::i;:::-;;;;;;;;10057:4;10050:11;;9739:330;;;;;:::o;10079:166::-;10176:12;;10166:6;:22;;:49;;;;10192:15;:23;10208:6;10192:23;;;;;;;;;;;;;;;;;;;;;;;;;10166:49;10158:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10079:166;;:::o;10732:197::-;10781:4;10819;;;;;;;;;;;10805:18;;:10;:18;;;;:38;;;;;10837:6;;;;;;;;;;;10836:7;10805:38;:62;;;;;10856:11;;;;;;;;;;;10805:62;:116;;;;;10908:13;;10880:9;:24;10898:4;10880:24;;;;;;;;;;;;;;;;:41;;10805:116;10798:123;;10732:197;:::o;10939:1469::-;6615:4;6606:6;;:13;;;;;;;;;;;;;;;;;;10988:28:::1;11019:24;11037:4;11019:9;:24::i;:::-;10988:55;;11054:23;11080:59;11137:1;11080:52;11123:8;;11080:38;11105:12;;11080:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11054:85;;11150:20;11173:41;11198:15;11173:20;:24;;:41;;;;:::i;:::-;11150:64;;11229:21;11267:1;11253:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11229:40;;11298:4;11280;11285:1;11280:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11324:4;;;;;;;;;;;11314;11319:1;11314:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11343:21;11367;11343:45;;11403:6;;;;;;;;;;;:57;;;11475:12;11502:1;11518:4;11545;11565:15;11403:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11602:17;11622:40;11648:13;11622:21;:25;;:40;;;;:::i;:::-;11602:60;;11673:19;11695:33;11708:19;11725:1;11708:12;;:16;;:19;;;;:::i;:::-;11695:8;;:12;;:33;;;;:::i;:::-;11673:55;;11739:26;11768:51;11817:1;11768:44;11800:11;11768:27;11782:12;;11768:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;11739:80;;11830:19;11852:37;11877:11;11852:20;11866:5;;11852:9;:13;;:20;;;;:::i;:::-;:24;;:37;;;;:::i;:::-;11830:59;;11900:21;11957:11;11936:18;11924:9;:30;;;;:::i;:::-;:44;;;;:::i;:::-;11900:68;;11984:16;12037:13;;;;;;;;;;;12029:27;;12064:13;12084:5;12029:65;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11983:111;;;12113:11;12105:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;12171:14;12222:13;;;;;;;;;;;12214:27;;12249:11;12267:5;12214:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12170:107;;;12296:9;12288:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12351:49;12364:15;12381:18;12351:12;:49::i;:::-;10977:1431;;;;;;;;;;;;6633:5:::0;6624:6;;:14;;;;;;;;;;;;;;;;;;10939:1469::o;13209:90::-;13252:4;13290:1;13276:10;;:15;;13269:22;;13209:90;:::o;13309:71::-;13360:12;13347:10;:25;;;;13309:71::o;10257:114::-;10319:4;10344:11;:19;10356:6;10344:19;;;;;;;;;;;;;;;;;;;;;;;;;10343:20;10336:27;;10257:114;;;:::o;10385:337::-;10452:7;10472:17;10492:40;10517:14;;10492:20;10503:8;;10492:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;10472:60;;10574:39;10603:9;10574;:24;10592:4;10574:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10547:9;:24;10565:4;10547:24;;;;;;;;;;;;;;;:66;;;;10654:4;10629:42;;10638:6;10629:42;;;10661:9;10629:42;;;;;;:::i;:::-;;;;;;;;10693:21;10704:9;10693:6;:10;;:21;;;;:::i;:::-;10686:28;;;10385:337;;;;:::o;1074:347::-;1160:7;1259:1;1255;:5;1262:12;1247:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1286:9;1302:1;1298;:5;;;;:::i;:::-;1286:17;;1412:1;1405:8;;;1074:347;;;;;:::o;12418:408::-;12512:1;12498:11;:15;12495:324;;;12529:6;;;;;;;;;;;:22;;;12559:9;12596:4;12620:11;12650:1;12670;12698:4;12722:15;12529:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12772:35;12784:9;12795:11;12772:35;;;;;;;:::i;:::-;;;;;;;;12495:324;12418:408;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:474::-;3914:6;3922;3971:2;3959:9;3950:7;3946:23;3942:32;3939:119;;;3977:79;;:::i;:::-;3939:119;4097:1;4122:53;4167:7;4158:6;4147:9;4143:22;4122:53;:::i;:::-;4112:63;;4068:117;4224:2;4250:53;4295:7;4286:6;4275:9;4271:22;4250:53;:::i;:::-;4240:63;;4195:118;3846:474;;;;;:::o;4326:619::-;4403:6;4411;4419;4468:2;4456:9;4447:7;4443:23;4439:32;4436:119;;;4474:79;;:::i;:::-;4436:119;4594:1;4619:53;4664:7;4655:6;4644:9;4640:22;4619:53;:::i;:::-;4609:63;;4565:117;4721:2;4747:53;4792:7;4783:6;4772:9;4768:22;4747:53;:::i;:::-;4737:63;;4692:118;4849:2;4875:53;4920:7;4911:6;4900:9;4896:22;4875:53;:::i;:::-;4865:63;;4820:118;4326:619;;;;;:::o;4951:329::-;5010:6;5059:2;5047:9;5038:7;5034:23;5030:32;5027:119;;;5065:79;;:::i;:::-;5027:119;5185:1;5210:53;5255:7;5246:6;5235:9;5231:22;5210:53;:::i;:::-;5200:63;;5156:117;4951:329;;;;:::o;5286:86::-;5321:7;5361:4;5354:5;5350:16;5339:27;;5286:86;;;:::o;5378:112::-;5461:22;5477:5;5461:22;:::i;:::-;5456:3;5449:35;5378:112;;:::o;5496:214::-;5585:4;5623:2;5612:9;5608:18;5600:26;;5636:67;5700:1;5689:9;5685:17;5676:6;5636:67;:::i;:::-;5496:214;;;;:::o;5716:329::-;5775:6;5824:2;5812:9;5803:7;5799:23;5795:32;5792:119;;;5830:79;;:::i;:::-;5792:119;5950:1;5975:53;6020:7;6011:6;6000:9;5996:22;5975:53;:::i;:::-;5965:63;;5921:117;5716:329;;;;:::o;6051:116::-;6121:21;6136:5;6121:21;:::i;:::-;6114:5;6111:32;6101:60;;6157:1;6154;6147:12;6101:60;6051:116;:::o;6173:133::-;6216:5;6254:6;6241:20;6232:29;;6270:30;6294:5;6270:30;:::i;:::-;6173:133;;;;:::o;6312:468::-;6377:6;6385;6434:2;6422:9;6413:7;6409:23;6405:32;6402:119;;;6440:79;;:::i;:::-;6402:119;6560:1;6585:53;6630:7;6621:6;6610:9;6606:22;6585:53;:::i;:::-;6575:63;;6531:117;6687:2;6713:50;6755:7;6746:6;6735:9;6731:22;6713:50;:::i;:::-;6703:60;;6658:115;6312:468;;;;;:::o;6786:765::-;6872:6;6880;6888;6896;6945:3;6933:9;6924:7;6920:23;6916:33;6913:120;;;6952:79;;:::i;:::-;6913:120;7072:1;7097:53;7142:7;7133:6;7122:9;7118:22;7097:53;:::i;:::-;7087:63;;7043:117;7199:2;7225:53;7270:7;7261:6;7250:9;7246:22;7225:53;:::i;:::-;7215:63;;7170:118;7327:2;7353:53;7398:7;7389:6;7378:9;7374:22;7353:53;:::i;:::-;7343:63;;7298:118;7455:2;7481:53;7526:7;7517:6;7506:9;7502:22;7481:53;:::i;:::-;7471:63;;7426:118;6786:765;;;;;;;:::o;7557:118::-;7644:24;7662:5;7644:24;:::i;:::-;7639:3;7632:37;7557:118;;:::o;7681:222::-;7774:4;7812:2;7801:9;7797:18;7789:26;;7825:71;7893:1;7882:9;7878:17;7869:6;7825:71;:::i;:::-;7681:222;;;;:::o;7909:474::-;7977:6;7985;8034:2;8022:9;8013:7;8009:23;8005:32;8002:119;;;8040:79;;:::i;:::-;8002:119;8160:1;8185:53;8230:7;8221:6;8210:9;8206:22;8185:53;:::i;:::-;8175:63;;8131:117;8287:2;8313:53;8358:7;8349:6;8338:9;8334:22;8313:53;:::i;:::-;8303:63;;8258:118;7909:474;;;;;:::o;8389:468::-;8454:6;8462;8511:2;8499:9;8490:7;8486:23;8482:32;8479:119;;;8517:79;;:::i;:::-;8479:119;8637:1;8662:50;8704:7;8695:6;8684:9;8680:22;8662:50;:::i;:::-;8652:60;;8608:114;8761:2;8787:53;8832:7;8823:6;8812:9;8808:22;8787:53;:::i;:::-;8777:63;;8732:118;8389:468;;;;;:::o;8863:104::-;8908:7;8937:24;8955:5;8937:24;:::i;:::-;8926:35;;8863:104;;;:::o;8973:138::-;9054:32;9080:5;9054:32;:::i;:::-;9047:5;9044:43;9034:71;;9101:1;9098;9091:12;9034:71;8973:138;:::o;9117:155::-;9171:5;9209:6;9196:20;9187:29;;9225:41;9260:5;9225:41;:::i;:::-;9117:155;;;;:::o;9278:345::-;9345:6;9394:2;9382:9;9373:7;9369:23;9365:32;9362:119;;;9400:79;;:::i;:::-;9362:119;9520:1;9545:61;9598:7;9589:6;9578:9;9574:22;9545:61;:::i;:::-;9535:71;;9491:125;9278:345;;;;:::o;9629:60::-;9657:3;9678:5;9671:12;;9629:60;;;:::o;9695:142::-;9745:9;9778:53;9796:34;9805:24;9823:5;9805:24;:::i;:::-;9796:34;:::i;:::-;9778:53;:::i;:::-;9765:66;;9695:142;;;:::o;9843:126::-;9893:9;9926:37;9957:5;9926:37;:::i;:::-;9913:50;;9843:126;;;:::o;9975:144::-;10043:9;10076:37;10107:5;10076:37;:::i;:::-;10063:50;;9975:144;;;:::o;10125:167::-;10230:55;10279:5;10230:55;:::i;:::-;10225:3;10218:68;10125:167;;:::o;10298:258::-;10409:4;10447:2;10436:9;10432:18;10424:26;;10460:89;10546:1;10535:9;10531:17;10522:6;10460:89;:::i;:::-;10298:258;;;;:::o;10562:161::-;10702:13;10698:1;10690:6;10686:14;10679:37;10562:161;:::o;10729:366::-;10871:3;10892:67;10956:2;10951:3;10892:67;:::i;:::-;10885:74;;10968:93;11057:3;10968:93;:::i;:::-;11086:2;11081:3;11077:12;11070:19;;10729:366;;;:::o;11101:419::-;11267:4;11305:2;11294:9;11290:18;11282:26;;11354:9;11348:4;11344:20;11340:1;11329:9;11325:17;11318:47;11382:131;11508:4;11382:131;:::i;:::-;11374:139;;11101:419;;;:::o;11526:180::-;11574:77;11571:1;11564:88;11671:4;11668:1;11661:15;11695:4;11692:1;11685:15;11712:180;11760:77;11757:1;11750:88;11857:4;11854:1;11847:15;11881:4;11878:1;11871:15;11898:185;11938:1;11955:20;11973:1;11955:20;:::i;:::-;11950:25;;11989:20;12007:1;11989:20;:::i;:::-;11984:25;;12028:1;12018:35;;12033:18;;:::i;:::-;12018:35;12075:1;12072;12068:9;12063:14;;11898:185;;;;:::o;12089:156::-;12229:8;12225:1;12217:6;12213:14;12206:32;12089:156;:::o;12251:365::-;12393:3;12414:66;12478:1;12473:3;12414:66;:::i;:::-;12407:73;;12489:93;12578:3;12489:93;:::i;:::-;12607:2;12602:3;12598:12;12591:19;;12251:365;;;:::o;12622:419::-;12788:4;12826:2;12815:9;12811:18;12803:26;;12875:9;12869:4;12865:20;12861:1;12850:9;12846:17;12839:47;12903:131;13029:4;12903:131;:::i;:::-;12895:139;;12622:419;;;:::o;13047:222::-;13187:34;13183:1;13175:6;13171:14;13164:58;13256:5;13251:2;13243:6;13239:15;13232:30;13047:222;:::o;13275:366::-;13417:3;13438:67;13502:2;13497:3;13438:67;:::i;:::-;13431:74;;13514:93;13603:3;13514:93;:::i;:::-;13632:2;13627:3;13623:12;13616:19;;13275:366;;;:::o;13647:419::-;13813:4;13851:2;13840:9;13836:18;13828:26;;13900:9;13894:4;13890:20;13886:1;13875:9;13871:17;13864:47;13928:131;14054:4;13928:131;:::i;:::-;13920:139;;13647:419;;;:::o;14072:143::-;14129:5;14160:6;14154:13;14145:22;;14176:33;14203:5;14176:33;:::i;:::-;14072:143;;;;:::o;14221:351::-;14291:6;14340:2;14328:9;14319:7;14315:23;14311:32;14308:119;;;14346:79;;:::i;:::-;14308:119;14466:1;14491:64;14547:7;14538:6;14527:9;14523:22;14491:64;:::i;:::-;14481:74;;14437:128;14221:351;;;;:::o;14578:134::-;14636:9;14669:37;14700:5;14669:37;:::i;:::-;14656:50;;14578:134;;;:::o;14718:147::-;14813:45;14852:5;14813:45;:::i;:::-;14808:3;14801:58;14718:147;;:::o;14871:238::-;14972:4;15010:2;14999:9;14995:18;14987:26;;15023:79;15099:1;15088:9;15084:17;15075:6;15023:79;:::i;:::-;14871:238;;;;:::o;15115:191::-;15155:4;15175:20;15193:1;15175:20;:::i;:::-;15170:25;;15209:20;15227:1;15209:20;:::i;:::-;15204:25;;15248:1;15245;15242:8;15239:34;;;15253:18;;:::i;:::-;15239:34;15298:1;15295;15291:9;15283:17;;15115:191;;;;:::o;15312:305::-;15352:3;15371:20;15389:1;15371:20;:::i;:::-;15366:25;;15405:20;15423:1;15405:20;:::i;:::-;15400:25;;15559:1;15491:66;15487:74;15484:1;15481:81;15478:107;;;15565:18;;:::i;:::-;15478:107;15609:1;15606;15602:9;15595:16;;15312:305;;;;:::o;15623:224::-;15763:34;15759:1;15751:6;15747:14;15740:58;15832:7;15827:2;15819:6;15815:15;15808:32;15623:224;:::o;15853:366::-;15995:3;16016:67;16080:2;16075:3;16016:67;:::i;:::-;16009:74;;16092:93;16181:3;16092:93;:::i;:::-;16210:2;16205:3;16201:12;16194:19;;15853:366;;;:::o;16225:419::-;16391:4;16429:2;16418:9;16414:18;16406:26;;16478:9;16472:4;16468:20;16464:1;16453:9;16449:17;16442:47;16506:131;16632:4;16506:131;:::i;:::-;16498:139;;16225:419;;;:::o;16650:177::-;16790:29;16786:1;16778:6;16774:14;16767:53;16650:177;:::o;16833:366::-;16975:3;16996:67;17060:2;17055:3;16996:67;:::i;:::-;16989:74;;17072:93;17161:3;17072:93;:::i;:::-;17190:2;17185:3;17181:12;17174:19;;16833:366;;;:::o;17205:419::-;17371:4;17409:2;17398:9;17394:18;17386:26;;17458:9;17452:4;17448:20;17444:1;17433:9;17429:17;17422:47;17486:131;17612:4;17486:131;:::i;:::-;17478:139;;17205:419;;;:::o;17630:348::-;17670:7;17693:20;17711:1;17693:20;:::i;:::-;17688:25;;17727:20;17745:1;17727:20;:::i;:::-;17722:25;;17915:1;17847:66;17843:74;17840:1;17837:81;17832:1;17825:9;17818:17;17814:105;17811:131;;;17922:18;;:::i;:::-;17811:131;17970:1;17967;17963:9;17952:20;;17630:348;;;;:::o;17984:220::-;18124:34;18120:1;18112:6;18108:14;18101:58;18193:3;18188:2;18180:6;18176:15;18169:28;17984:220;:::o;18210:366::-;18352:3;18373:67;18437:2;18432:3;18373:67;:::i;:::-;18366:74;;18449:93;18538:3;18449:93;:::i;:::-;18567:2;18562:3;18558:12;18551:19;;18210:366;;;:::o;18582:419::-;18748:4;18786:2;18775:9;18771:18;18763:26;;18835:9;18829:4;18825:20;18821:1;18810:9;18806:17;18799:47;18863:131;18989:4;18863:131;:::i;:::-;18855:139;;18582:419;;;:::o;19007:167::-;19147:19;19143:1;19135:6;19131:14;19124:43;19007:167;:::o;19180:366::-;19322:3;19343:67;19407:2;19402:3;19343:67;:::i;:::-;19336:74;;19419:93;19508:3;19419:93;:::i;:::-;19537:2;19532:3;19528:12;19521:19;;19180:366;;;:::o;19552:419::-;19718:4;19756:2;19745:9;19741:18;19733:26;;19805:9;19799:4;19795:20;19791:1;19780:9;19776:17;19769:47;19833:131;19959:4;19833:131;:::i;:::-;19825:139;;19552:419;;;:::o;19977:180::-;20025:77;20022:1;20015:88;20122:4;20119:1;20112:15;20146:4;20143:1;20136:15;20163:180;20211:77;20208:1;20201:88;20308:4;20305:1;20298:15;20332:4;20329:1;20322:15;20349:85;20394:7;20423:5;20412:16;;20349:85;;;:::o;20440:158::-;20498:9;20531:61;20549:42;20558:32;20584:5;20558:32;:::i;:::-;20549:42;:::i;:::-;20531:61;:::i;:::-;20518:74;;20440:158;;;:::o;20604:147::-;20699:45;20738:5;20699:45;:::i;:::-;20694:3;20687:58;20604:147;;:::o;20757:114::-;20824:6;20858:5;20852:12;20842:22;;20757:114;;;:::o;20877:184::-;20976:11;21010:6;21005:3;20998:19;21050:4;21045:3;21041:14;21026:29;;20877:184;;;;:::o;21067:132::-;21134:4;21157:3;21149:11;;21187:4;21182:3;21178:14;21170:22;;21067:132;;;:::o;21205:108::-;21282:24;21300:5;21282:24;:::i;:::-;21277:3;21270:37;21205:108;;:::o;21319:179::-;21388:10;21409:46;21451:3;21443:6;21409:46;:::i;:::-;21487:4;21482:3;21478:14;21464:28;;21319:179;;;;:::o;21504:113::-;21574:4;21606;21601:3;21597:14;21589:22;;21504:113;;;:::o;21653:732::-;21772:3;21801:54;21849:5;21801:54;:::i;:::-;21871:86;21950:6;21945:3;21871:86;:::i;:::-;21864:93;;21981:56;22031:5;21981:56;:::i;:::-;22060:7;22091:1;22076:284;22101:6;22098:1;22095:13;22076:284;;;22177:6;22171:13;22204:63;22263:3;22248:13;22204:63;:::i;:::-;22197:70;;22290:60;22343:6;22290:60;:::i;:::-;22280:70;;22136:224;22123:1;22120;22116:9;22111:14;;22076:284;;;22080:14;22376:3;22369:10;;21777:608;;;21653:732;;;;:::o;22391:831::-;22654:4;22692:3;22681:9;22677:19;22669:27;;22706:71;22774:1;22763:9;22759:17;22750:6;22706:71;:::i;:::-;22787:80;22863:2;22852:9;22848:18;22839:6;22787:80;:::i;:::-;22914:9;22908:4;22904:20;22899:2;22888:9;22884:18;22877:48;22942:108;23045:4;23036:6;22942:108;:::i;:::-;22934:116;;23060:72;23128:2;23117:9;23113:18;23104:6;23060:72;:::i;:::-;23142:73;23210:3;23199:9;23195:19;23186:6;23142:73;:::i;:::-;22391:831;;;;;;;;:::o;23228:147::-;23329:11;23366:3;23351:18;;23228:147;;;;:::o;23381:114::-;;:::o;23501:398::-;23660:3;23681:83;23762:1;23757:3;23681:83;:::i;:::-;23674:90;;23773:93;23862:3;23773:93;:::i;:::-;23891:1;23886:3;23882:11;23875:18;;23501:398;;;:::o;23905:379::-;24089:3;24111:147;24254:3;24111:147;:::i;:::-;24104:154;;24275:3;24268:10;;23905:379;;;:::o;24290:180::-;24430:32;24426:1;24418:6;24414:14;24407:56;24290:180;:::o;24476:366::-;24618:3;24639:67;24703:2;24698:3;24639:67;:::i;:::-;24632:74;;24715:93;24804:3;24715:93;:::i;:::-;24833:2;24828:3;24824:12;24817:19;;24476:366;;;:::o;24848:419::-;25014:4;25052:2;25041:9;25037:18;25029:26;;25101:9;25095:4;25091:20;25087:1;25076:9;25072:17;25065:47;25129:131;25255:4;25129:131;:::i;:::-;25121:139;;24848:419;;;:::o;25273:807::-;25522:4;25560:3;25549:9;25545:19;25537:27;;25574:71;25642:1;25631:9;25627:17;25618:6;25574:71;:::i;:::-;25655:72;25723:2;25712:9;25708:18;25699:6;25655:72;:::i;:::-;25737:80;25813:2;25802:9;25798:18;25789:6;25737:80;:::i;:::-;25827;25903:2;25892:9;25888:18;25879:6;25827:80;:::i;:::-;25917:73;25985:3;25974:9;25970:19;25961:6;25917:73;:::i;:::-;26000;26068:3;26057:9;26053:19;26044:6;26000:73;:::i;:::-;25273:807;;;;;;;;;:::o;26086:663::-;26174:6;26182;26190;26239:2;26227:9;26218:7;26214:23;26210:32;26207:119;;;26245:79;;:::i;:::-;26207:119;26365:1;26390:64;26446:7;26437:6;26426:9;26422:22;26390:64;:::i;:::-;26380:74;;26336:128;26503:2;26529:64;26585:7;26576:6;26565:9;26561:22;26529:64;:::i;:::-;26519:74;;26474:129;26642:2;26668:64;26724:7;26715:6;26704:9;26700:22;26668:64;:::i;:::-;26658:74;;26613:129;26086:663;;;;;:::o;26755:332::-;26876:4;26914:2;26903:9;26899:18;26891:26;;26927:71;26995:1;26984:9;26980:17;26971:6;26927:71;:::i;:::-;27008:72;27076:2;27065:9;27061:18;27052:6;27008:72;:::i;:::-;26755:332;;;;;:::o

Swarm Source

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