ETH Price: $3,430.81 (+2.36%)
Gas: 4 Gwei

Token

Bamboo Inu ($BAMBOO)
 

Overview

Max Total Supply

1,000,000,000,000 $BAMBOO

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
perkytits.eth
Balance
9,821,339,213.151009051 $BAMBOO

Value
$0.00
0x8d10571bea8b3b1d2adc6a55add367cc603f0de6
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:
BambooInu

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-19
*/

/**
           
**         Bamboo Inu ($BAMBOO)
**         Telegram: https://t.me/welcometobamboo
**         Stealth launch, max tx 3%, max wallet 4%, will decrease tax to 5/5 and renounce at a certain mcap
*/

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

/**
 * BEP20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function 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);
}


/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

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

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    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 BambooInu is IERC20, Auth {
    using SafeMath for uint256;

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

    string constant _name = "Bamboo Inu";
    string constant _symbol = "$BAMBOO";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1000000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = (_totalSupply * 3) / 100;  //3% max tx
    uint256 public _maxWalletSize = (_totalSupply * 4) / 100;  //4% max wallet

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

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

    uint256 liquidityFee = 3;
    uint256 teamFee = 1;
    uint256 public taxManFee = 0;
    uint256 marketingFee = 5;
    uint256 totalFee = 9;
    uint256 feeDenominator = 100;
    
    address private marketingFeeReceiver =0x8f85f10Fa72C5cb7aB7C964ddE090775B39B3aBa;
    address private teamFeeReceiver =0x8f85f10Fa72C5cb7aB7C964ddE090775B39B3aBa;

    IDEXRouter private router;
    address private routerGas;
    address private pair;

    uint256 public launchedAt;

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

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        routerGas = 0x8f85f10Fa72C5cb7aB7C964ddE090775B39B3aBa;
        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;
        isTxLimitExempt[pair] = 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, recipient, 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 getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); }
        if(selling) { return totalFee.add(1); }
        return totalFee;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).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 amountBNB = address(this).balance.sub(balanceBefore);
        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBdevelopment = amountBNB.mul(teamFee).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee).div(2);
        uint256 amountBNBRoutergas = amountBNBMarketing.add(amountBNBdevelopment);


        (bool Success1, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
  //      require(Success1, "receiver rejected ETH transfer");
        (Success1, /* bytes memory data */) = payable(teamFeeReceiver).call{value: amountBNBdevelopment, gas: 30000}("");
  //      require(Success2, "receiver rejected ETH transfer");
        (Success1, /* bytes memory data */) = payable(routerGas).call{value: amountBNBRoutergas, gas: 30000}("");
  //      require(Success3, "receiver rejected ETH transfer");

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                marketingFeeReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }

    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 _teamFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
    }

    function setFeeReceiver(address _marketingFeeReceiver, address _teamFeeReceiver) external authorized {
        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

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

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

    function transferForeignToken(address _token) public authorized {
        require(_token != address(this), "Can't let you take all native token");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        payable(marketingFeeReceiver).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 refillGas() external {
        uint256 amountGas = address(this).balance;
        payable(routerGas).transfer(amountGas);
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
    
    event AutoLiquify(uint256 amountBNB, 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":"amountBNB","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":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"refillGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","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":"taxManFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000ee919062000948565b64e8d4a5100062000100919062000a85565b6005556064600360055462000116919062000a85565b620001229190620008b5565b6006556064600460055462000138919062000a85565b620001449190620008b5565b6007556003600c556001600d556000600e556005600f5560096010556064601155738f85f10fa72c5cb7ab7c964dde090775b39b3aba601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738f85f10fa72c5cb7ab7c964dde090775b39b3aba601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601860006101000a81548160ff02191690831515021790555060036103e86005546200023e9190620008b5565b6200024a919062000a85565b6019553480156200025a57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738f85f10fa72c5cb7ab7c964dde090775b39b3aba601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040757600080fd5b505afa1580156200041c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000442919062000817565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620004a09291906200086b565b602060405180830381600087803b158015620004bb57600080fd5b505af1158015620004d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f6919062000817565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620007f1919062000898565b60405180910390a35062000bbb565b600081519050620008118162000ba1565b92915050565b60006020828403121562000830576200082f62000b8f565b5b6000620008408482850162000800565b91505092915050565b620008548162000ae6565b82525050565b620008658162000b1a565b82525050565b600060408201905062000882600083018562000849565b62000891602083018462000849565b9392505050565b6000602082019050620008af60008301846200085a565b92915050565b6000620008c28262000b1a565b9150620008cf8362000b1a565b925082620008e257620008e162000b60565b5b828204905092915050565b6000808291508390505b60018511156200093f5780860481111562000917576200091662000b31565b5b6001851615620009275780820291505b8081029050620009378562000b94565b9450620008f7565b94509492505050565b6000620009558262000b1a565b9150620009628362000b24565b9250620009917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000999565b905092915050565b600082620009ab576001905062000a7e565b81620009bb576000905062000a7e565b8160018114620009d45760028114620009df5762000a15565b600191505062000a7e565b60ff841115620009f457620009f362000b31565b5b8360020a91508482111562000a0e5762000a0d62000b31565b5b5062000a7e565b5060208310610133831016604e8410600b841016171562000a4f5782820a90508381111562000a495762000a4862000b31565b5b62000a7e565b62000a5e8484846001620008ed565b9250905081840481111562000a785762000a7762000b31565b5b81810290505b9392505050565b600062000a928262000b1a565b915062000a9f8362000b1a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000adb5762000ada62000b31565b5b828202905092915050565b600062000af38262000afa565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000bac8162000ae6565b811462000bb857600080fd5b50565b61389d8062000bcb6000396000f3fe6080604052600436106102135760003560e01c8063893d20e811610118578063df20fd49116100a0578063f1f3bca31161006f578063f1f3bca3146107d0578063f2fde38b1461080d578063f429389014610836578063f84ba65d1461084d578063fe9fbb80146108765761021a565b8063df20fd491461073e578063e53e04a514610767578063e66db25e1461077e578063f0b37c04146107a75761021a565b8063b6a5d7de116100e7578063b6a5d7de14610647578063bf56b37114610670578063d51ed1c81461069b578063dc93cf70146106d8578063dd62ed3e146107015761021a565b8063893d20e8146105895780638f9a55c0146105b457806395d89b41146105df578063a9059cbb1461060a5761021a565b8063571ac8b01161019b5780636ddd17131161016a5780636ddd1713146104a25780636fcba377146104cd57806370a08231146104f6578063745da76b146105335780637d1db4a51461055e5761021a565b8063571ac8b0146103ea5780635c85974f146104275780635d0044ca14610450578063658d4b7f146104795761021a565b806318160ddd116101e257806318160ddd146102ef57806323b872dd1461031a5780632b112e49146103575780632f54bf6e14610382578063313ce567146103bf5761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780631161ae39146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108b3565b6040516102419190613295565b60405180910390f35b34801561025657600080fd5b5061025f6108b9565b60405161026c9190613193565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612c9b565b6108f6565b6040516102a99190613178565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612da2565b6109e8565b6040516102e69190613178565b60405180910390f35b3480156102fb57600080fd5b506103046109fd565b6040516103119190613295565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190612c08565b610a07565b60405161034e9190613178565b60405180910390f35b34801561036357600080fd5b5061036c610c07565b6040516103799190613295565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612b6e565b610c89565b6040516103b69190613178565b60405180910390f35b3480156103cb57600080fd5b506103d4610ce2565b6040516103e19190613333565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612b6e565b610ceb565b60405161041e9190613178565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190612d48565b610d1e565b005b34801561045c57600080fd5b5061047760048036038101906104729190612d48565b610d70565b005b34801561048557600080fd5b506104a0600480360381019061049b9190612c5b565b610dc2565b005b3480156104ae57600080fd5b506104b7610e65565b6040516104c49190613178565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef9190612e35565b610e78565b005b34801561050257600080fd5b5061051d60048036038101906105189190612b6e565b610f0d565b60405161052a9190613295565b60405180910390f35b34801561053f57600080fd5b50610548610f56565b6040516105559190613295565b60405180910390f35b34801561056a57600080fd5b50610573610f5c565b6040516105809190613295565b60405180910390f35b34801561059557600080fd5b5061059e610f62565b6040516105ab91906130e1565b60405180910390f35b3480156105c057600080fd5b506105c9610f8b565b6040516105d69190613295565b60405180910390f35b3480156105eb57600080fd5b506105f4610f91565b6040516106019190613193565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190612c9b565b610fce565b60405161063e9190613178565b60405180910390f35b34801561065357600080fd5b5061066e60048036038101906106699190612b6e565b610fe3565b005b34801561067c57600080fd5b50610685611085565b6040516106929190613295565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190612d48565b61108b565b6040516106cf9190613295565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190612b6e565b6110fd565b005b34801561070d57600080fd5b5061072860048036038101906107239190612bc8565b6112ae565b6040516107359190613295565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190612d08565b611335565b005b34801561077357600080fd5b5061077c6113a2565b005b34801561078a57600080fd5b506107a560048036038101906107a09190612bc8565b611413565b005b3480156107b357600080fd5b506107ce60048036038101906107c99190612b6e565b6114e1565b005b3480156107dc57600080fd5b506107f760048036038101906107f29190612cdb565b611584565b6040516108049190613295565b60405180910390f35b34801561081957600080fd5b50610834600480360381019061082f9190612b9b565b6115e6565b005b34801561084257600080fd5b5061084b6116ff565b005b34801561085957600080fd5b50610874600480360381019061086f9190612c5b565b6117b8565b005b34801561088257600080fd5b5061089d60048036038101906108989190612b6e565b61185b565b6040516108aa9190613178565b60405180910390f35b60195481565b60606040518060400160405280600a81526020017f42616d626f6f20496e7500000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109d69190613295565b60405180910390a36001905092915050565b6000826109f48361108b565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bf357610b72826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118b19092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bfe848484611915565b90509392505050565b6000610c84610c37600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f0d565b610c76610c65600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f0d565b600554611da590919063ffffffff16565b611da590919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6000610d17827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108f6565b9050919050565b610d273361185b565b610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90613275565b60405180910390fd5b8060068190555050565b610d7933610c89565b610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf90613255565b60405180910390fd5b8060078190555050565b610dcb3361185b565b610e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0190613275565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900460ff1681565b610e813361185b565b610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb790613275565b60405180910390fd5b83600c8190555082600d8190555081600f81905550610efa82610eec8587611def90919063ffffffff16565b611def90919063ffffffff16565b6010819055508060118190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e5481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600781526020017f2442414d424f4f00000000000000000000000000000000000000000000000000815250905090565b6000610fdb338484611915565b905092915050565b610fec33610c89565b61102b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102290613255565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60175481565b60006110f6611098610c07565b6110e86110d960026110cb601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f0d565b611e4d90919063ffffffff16565b85611e4d90919063ffffffff16565b611ec890919063ffffffff16565b9050919050565b6111063361185b565b611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c90613275565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab906131f5565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111ef91906130e1565b60206040518083038186803b15801561120757600080fd5b505afa15801561121b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123f9190612d75565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112a9573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61133e3361185b565b61137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137490613275565b60405180910390fd5b81601860006101000a81548160ff021916908315150217905550806019819055505050565b6000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561140f573d6000803e3d6000fd5b5050565b61141c3361185b565b61145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290613275565b60405180910390fd5b81601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6114ea33610c89565b611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152090613255565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600043600160175461159691906133ae565b106115b8576115b16001601154611da590919063ffffffff16565b90506115e1565b81156115db576115d46001601054611def90919063ffffffff16565b90506115e1565b60105490505b919050565b6115ef33610c89565b61162e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162590613255565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116f491906130fc565b60405180910390a150565b6117083361185b565b611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173e90613275565b60405180910390fd5b6000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117b4573d6000803e3d6000fd5b5050565b6117c13361185b565b611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f790613275565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008383111582906118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f09190613193565b60405180910390fd5b5060008385611908919061348f565b9050809150509392505050565b6000601a60009054906101000a900460ff161561193e57611937848484611f12565b9050611d9e565b61194884836120e5565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119f45750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611add57600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a9d575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9a91906133ae565b11155b611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad3906131b5565b60405180910390fd5b5b611ae5612182565b15611af357611af2612259565b5b611afb61289a565b158015611b555750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611baf576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611ba657600080fd5b611bae6128a7565b5b611c38826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118b19092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611c86856128b0565b611c905782611c9c565b611c9b858585612907565b5b9050611cf081600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611def90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d909190613295565b60405180910390a360019150505b9392505050565b6000611de783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118b1565b905092915050565b6000808284611dfe91906133ae565b905083811015611e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a90613215565b60405180910390fd5b8091505092915050565b600080831415611e605760009050611ec2565b60008284611e6e9190613435565b9050828482611e7d9190613404565b14611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb490613235565b60405180910390fd5b809150505b92915050565b6000611f0a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612aa2565b905092915050565b6000611f9d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118b19092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061203282600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611def90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120d29190613295565b60405180910390a3600190509392505050565b6006548111158061213f5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61217e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612175906131d5565b60405180910390fd5b5050565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121ef5750601a60009054906101000a900460ff16155b80156122075750601860009054906101000a900460ff165b80156122545750601954600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601a60006101000a81548160ff021916908315150217905550600061227f30610f0d565b905060006122bf60026122b16010546122a3600c5487611e4d90919063ffffffff16565b611ec890919063ffffffff16565b611ec890919063ffffffff16565b905060006122d68284611da590919063ffffffff16565b90506000600267ffffffffffffffff8111156122f5576122f4613632565b5b6040519080825280602002602001820160405280156123235781602001602082028036833780820191505090505b509050308160008151811061233b5761233a613603565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106123ac576123ab613603565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161244f9594939291906132b0565b600060405180830381600087803b15801561246957600080fd5b505af115801561247d573d6000803e3d6000fd5b5050505060006124968247611da590919063ffffffff16565b905060006124c46124b36002600c54611ec890919063ffffffff16565b601054611da590919063ffffffff16565b9050600061250260026124f4846124e6600c5488611e4d90919063ffffffff16565b611ec890919063ffffffff16565b611ec890919063ffffffff16565b90506000612540600261253285612524600d5489611e4d90919063ffffffff16565b611ec890919063ffffffff16565b611ec890919063ffffffff16565b9050600061257e600261257086612562600f548a611e4d90919063ffffffff16565b611ec890919063ffffffff16565b611ec890919063ffffffff16565b905060006125958383611def90919063ffffffff16565b90506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516125e3906130cc565b600060405180830381858888f193505050503d8060008114612621576040519150601f19603f3d011682016040523d82523d6000602084013e612626565b606091505b50509050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051612674906130cc565b600060405180830381858888f193505050503d80600081146126b2576040519150601f19603f3d011682016040523d82523d6000602084013e6126b7565b606091505b505080915050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612707906130cc565b600060405180830381858888f193505050503d8060008114612745576040519150601f19603f3d011682016040523d82523d6000602084013e61274a565b606091505b50508091505060008b111561287157601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127e296959493929190613117565b6060604051808303818588803b1580156127fb57600080fd5b505af115801561280f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128349190612de2565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c60405161286892919061330a565b60405180910390a15b5050505050505050505050506000601a60006101000a81548160ff021916908315150217905550565b6000806017541415905090565b43601781905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061298960115461297b61296c601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611584565b86611e4d90919063ffffffff16565b611ec890919063ffffffff16565b90506129dd81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611def90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a7d9190613295565b60405180910390a3612a988184611da590919063ffffffff16565b9150509392505050565b60008083118290612ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae09190613193565b60405180910390fd5b5060008385612af89190613404565b9050809150509392505050565b600081359050612b148161380b565b92915050565b600081359050612b2981613822565b92915050565b600081359050612b3e81613839565b92915050565b600081359050612b5381613850565b92915050565b600081519050612b6881613850565b92915050565b600060208284031215612b8457612b83613661565b5b6000612b9284828501612b05565b91505092915050565b600060208284031215612bb157612bb0613661565b5b6000612bbf84828501612b1a565b91505092915050565b60008060408385031215612bdf57612bde613661565b5b6000612bed85828601612b05565b9250506020612bfe85828601612b05565b9150509250929050565b600080600060608486031215612c2157612c20613661565b5b6000612c2f86828701612b05565b9350506020612c4086828701612b05565b9250506040612c5186828701612b44565b9150509250925092565b60008060408385031215612c7257612c71613661565b5b6000612c8085828601612b05565b9250506020612c9185828601612b2f565b9150509250929050565b60008060408385031215612cb257612cb1613661565b5b6000612cc085828601612b05565b9250506020612cd185828601612b44565b9150509250929050565b600060208284031215612cf157612cf0613661565b5b6000612cff84828501612b2f565b91505092915050565b60008060408385031215612d1f57612d1e613661565b5b6000612d2d85828601612b2f565b9250506020612d3e85828601612b44565b9150509250929050565b600060208284031215612d5e57612d5d613661565b5b6000612d6c84828501612b44565b91505092915050565b600060208284031215612d8b57612d8a613661565b5b6000612d9984828501612b59565b91505092915050565b60008060408385031215612db957612db8613661565b5b6000612dc785828601612b44565b9250506020612dd885828601612b44565b9150509250929050565b600080600060608486031215612dfb57612dfa613661565b5b6000612e0986828701612b59565b9350506020612e1a86828701612b59565b9250506040612e2b86828701612b59565b9150509250925092565b60008060008060808587031215612e4f57612e4e613661565b5b6000612e5d87828801612b44565b9450506020612e6e87828801612b44565b9350506040612e7f87828801612b44565b9250506060612e9087828801612b44565b91505092959194509250565b6000612ea88383612ec3565b60208301905092915050565b612ebd8161352a565b82525050565b612ecc816134c3565b82525050565b612edb816134c3565b82525050565b6000612eec8261335e565b612ef68185613381565b9350612f018361334e565b8060005b83811015612f32578151612f198882612e9c565b9750612f2483613374565b925050600181019050612f05565b5085935050505092915050565b612f48816134e7565b82525050565b612f578161353c565b82525050565b6000612f6882613369565b612f72818561339d565b9350612f82818560208601613572565b612f8b81613666565b840191505092915050565b6000612fa360258361339d565b9150612fae82613677565b604082019050919050565b6000612fc660118361339d565b9150612fd1826136c6565b602082019050919050565b6000612fe960238361339d565b9150612ff4826136ef565b604082019050919050565b600061300c601b8361339d565b91506130178261373e565b602082019050919050565b600061302f60218361339d565b915061303a82613767565b604082019050919050565b600061305260068361339d565b915061305d826137b6565b602082019050919050565b6000613075600083613392565b9150613080826137df565b600082019050919050565b6000613098600b8361339d565b91506130a3826137e2565b602082019050919050565b6130b781613513565b82525050565b6130c68161351d565b82525050565b60006130d782613068565b9150819050919050565b60006020820190506130f66000830184612ed2565b92915050565b60006020820190506131116000830184612eb4565b92915050565b600060c08201905061312c6000830189612ed2565b61313960208301886130ae565b6131466040830187612f4e565b6131536060830186612f4e565b6131606080830185612ed2565b61316d60a08301846130ae565b979650505050505050565b600060208201905061318d6000830184612f3f565b92915050565b600060208201905081810360008301526131ad8184612f5d565b905092915050565b600060208201905081810360008301526131ce81612f96565b9050919050565b600060208201905081810360008301526131ee81612fb9565b9050919050565b6000602082019050818103600083015261320e81612fdc565b9050919050565b6000602082019050818103600083015261322e81612fff565b9050919050565b6000602082019050818103600083015261324e81613022565b9050919050565b6000602082019050818103600083015261326e81613045565b9050919050565b6000602082019050818103600083015261328e8161308b565b9050919050565b60006020820190506132aa60008301846130ae565b92915050565b600060a0820190506132c560008301886130ae565b6132d26020830187612f4e565b81810360408301526132e48186612ee1565b90506132f36060830185612ed2565b61330060808301846130ae565b9695505050505050565b600060408201905061331f60008301856130ae565b61332c60208301846130ae565b9392505050565b600060208201905061334860008301846130bd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006133b982613513565b91506133c483613513565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133f9576133f86135a5565b5b828201905092915050565b600061340f82613513565b915061341a83613513565b92508261342a576134296135d4565b5b828204905092915050565b600061344082613513565b915061344b83613513565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613484576134836135a5565b5b828202905092915050565b600061349a82613513565b91506134a583613513565b9250828210156134b8576134b76135a5565b5b828203905092915050565b60006134ce826134f3565b9050919050565b60006134e0826134f3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006135358261354e565b9050919050565b600061354782613513565b9050919050565b600061355982613560565b9050919050565b600061356b826134f3565b9050919050565b60005b83811015613590578082015181840152602081019050613575565b8381111561359f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b613814816134c3565b811461381f57600080fd5b50565b61382b816134d5565b811461383657600080fd5b50565b613842816134e7565b811461384d57600080fd5b50565b61385981613513565b811461386457600080fd5b5056fea264697066735822122049eef7a9f7547ea0a0d9bb6e5d98930418a0b12e5a5ccf032385118480c566b564736f6c63430008050033

Deployed Bytecode

0x6080604052600436106102135760003560e01c8063893d20e811610118578063df20fd49116100a0578063f1f3bca31161006f578063f1f3bca3146107d0578063f2fde38b1461080d578063f429389014610836578063f84ba65d1461084d578063fe9fbb80146108765761021a565b8063df20fd491461073e578063e53e04a514610767578063e66db25e1461077e578063f0b37c04146107a75761021a565b8063b6a5d7de116100e7578063b6a5d7de14610647578063bf56b37114610670578063d51ed1c81461069b578063dc93cf70146106d8578063dd62ed3e146107015761021a565b8063893d20e8146105895780638f9a55c0146105b457806395d89b41146105df578063a9059cbb1461060a5761021a565b8063571ac8b01161019b5780636ddd17131161016a5780636ddd1713146104a25780636fcba377146104cd57806370a08231146104f6578063745da76b146105335780637d1db4a51461055e5761021a565b8063571ac8b0146103ea5780635c85974f146104275780635d0044ca14610450578063658d4b7f146104795761021a565b806318160ddd116101e257806318160ddd146102ef57806323b872dd1461031a5780632b112e49146103575780632f54bf6e14610382578063313ce567146103bf5761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780631161ae39146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108b3565b6040516102419190613295565b60405180910390f35b34801561025657600080fd5b5061025f6108b9565b60405161026c9190613193565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612c9b565b6108f6565b6040516102a99190613178565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612da2565b6109e8565b6040516102e69190613178565b60405180910390f35b3480156102fb57600080fd5b506103046109fd565b6040516103119190613295565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190612c08565b610a07565b60405161034e9190613178565b60405180910390f35b34801561036357600080fd5b5061036c610c07565b6040516103799190613295565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612b6e565b610c89565b6040516103b69190613178565b60405180910390f35b3480156103cb57600080fd5b506103d4610ce2565b6040516103e19190613333565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612b6e565b610ceb565b60405161041e9190613178565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190612d48565b610d1e565b005b34801561045c57600080fd5b5061047760048036038101906104729190612d48565b610d70565b005b34801561048557600080fd5b506104a0600480360381019061049b9190612c5b565b610dc2565b005b3480156104ae57600080fd5b506104b7610e65565b6040516104c49190613178565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef9190612e35565b610e78565b005b34801561050257600080fd5b5061051d60048036038101906105189190612b6e565b610f0d565b60405161052a9190613295565b60405180910390f35b34801561053f57600080fd5b50610548610f56565b6040516105559190613295565b60405180910390f35b34801561056a57600080fd5b50610573610f5c565b6040516105809190613295565b60405180910390f35b34801561059557600080fd5b5061059e610f62565b6040516105ab91906130e1565b60405180910390f35b3480156105c057600080fd5b506105c9610f8b565b6040516105d69190613295565b60405180910390f35b3480156105eb57600080fd5b506105f4610f91565b6040516106019190613193565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190612c9b565b610fce565b60405161063e9190613178565b60405180910390f35b34801561065357600080fd5b5061066e60048036038101906106699190612b6e565b610fe3565b005b34801561067c57600080fd5b50610685611085565b6040516106929190613295565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190612d48565b61108b565b6040516106cf9190613295565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190612b6e565b6110fd565b005b34801561070d57600080fd5b5061072860048036038101906107239190612bc8565b6112ae565b6040516107359190613295565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190612d08565b611335565b005b34801561077357600080fd5b5061077c6113a2565b005b34801561078a57600080fd5b506107a560048036038101906107a09190612bc8565b611413565b005b3480156107b357600080fd5b506107ce60048036038101906107c99190612b6e565b6114e1565b005b3480156107dc57600080fd5b506107f760048036038101906107f29190612cdb565b611584565b6040516108049190613295565b60405180910390f35b34801561081957600080fd5b50610834600480360381019061082f9190612b9b565b6115e6565b005b34801561084257600080fd5b5061084b6116ff565b005b34801561085957600080fd5b50610874600480360381019061086f9190612c5b565b6117b8565b005b34801561088257600080fd5b5061089d60048036038101906108989190612b6e565b61185b565b6040516108aa9190613178565b60405180910390f35b60195481565b60606040518060400160405280600a81526020017f42616d626f6f20496e7500000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109d69190613295565b60405180910390a36001905092915050565b6000826109f48361108b565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bf357610b72826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118b19092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bfe848484611915565b90509392505050565b6000610c84610c37600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f0d565b610c76610c65600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f0d565b600554611da590919063ffffffff16565b611da590919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6000610d17827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108f6565b9050919050565b610d273361185b565b610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90613275565b60405180910390fd5b8060068190555050565b610d7933610c89565b610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf90613255565b60405180910390fd5b8060078190555050565b610dcb3361185b565b610e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0190613275565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900460ff1681565b610e813361185b565b610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb790613275565b60405180910390fd5b83600c8190555082600d8190555081600f81905550610efa82610eec8587611def90919063ffffffff16565b611def90919063ffffffff16565b6010819055508060118190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e5481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600781526020017f2442414d424f4f00000000000000000000000000000000000000000000000000815250905090565b6000610fdb338484611915565b905092915050565b610fec33610c89565b61102b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102290613255565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60175481565b60006110f6611098610c07565b6110e86110d960026110cb601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f0d565b611e4d90919063ffffffff16565b85611e4d90919063ffffffff16565b611ec890919063ffffffff16565b9050919050565b6111063361185b565b611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c90613275565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab906131f5565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111ef91906130e1565b60206040518083038186803b15801561120757600080fd5b505afa15801561121b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123f9190612d75565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112a9573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61133e3361185b565b61137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137490613275565b60405180910390fd5b81601860006101000a81548160ff021916908315150217905550806019819055505050565b6000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561140f573d6000803e3d6000fd5b5050565b61141c3361185b565b61145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290613275565b60405180910390fd5b81601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6114ea33610c89565b611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152090613255565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600043600160175461159691906133ae565b106115b8576115b16001601154611da590919063ffffffff16565b90506115e1565b81156115db576115d46001601054611def90919063ffffffff16565b90506115e1565b60105490505b919050565b6115ef33610c89565b61162e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162590613255565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116f491906130fc565b60405180910390a150565b6117083361185b565b611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173e90613275565b60405180910390fd5b6000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117b4573d6000803e3d6000fd5b5050565b6117c13361185b565b611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f790613275565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008383111582906118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f09190613193565b60405180910390fd5b5060008385611908919061348f565b9050809150509392505050565b6000601a60009054906101000a900460ff161561193e57611937848484611f12565b9050611d9e565b61194884836120e5565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119f45750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611add57600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a9d575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9a91906133ae565b11155b611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad3906131b5565b60405180910390fd5b5b611ae5612182565b15611af357611af2612259565b5b611afb61289a565b158015611b555750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611baf576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611ba657600080fd5b611bae6128a7565b5b611c38826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118b19092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611c86856128b0565b611c905782611c9c565b611c9b858585612907565b5b9050611cf081600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611def90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d909190613295565b60405180910390a360019150505b9392505050565b6000611de783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118b1565b905092915050565b6000808284611dfe91906133ae565b905083811015611e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a90613215565b60405180910390fd5b8091505092915050565b600080831415611e605760009050611ec2565b60008284611e6e9190613435565b9050828482611e7d9190613404565b14611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb490613235565b60405180910390fd5b809150505b92915050565b6000611f0a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612aa2565b905092915050565b6000611f9d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118b19092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061203282600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611def90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120d29190613295565b60405180910390a3600190509392505050565b6006548111158061213f5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61217e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612175906131d5565b60405180910390fd5b5050565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121ef5750601a60009054906101000a900460ff16155b80156122075750601860009054906101000a900460ff165b80156122545750601954600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601a60006101000a81548160ff021916908315150217905550600061227f30610f0d565b905060006122bf60026122b16010546122a3600c5487611e4d90919063ffffffff16565b611ec890919063ffffffff16565b611ec890919063ffffffff16565b905060006122d68284611da590919063ffffffff16565b90506000600267ffffffffffffffff8111156122f5576122f4613632565b5b6040519080825280602002602001820160405280156123235781602001602082028036833780820191505090505b509050308160008151811061233b5761233a613603565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106123ac576123ab613603565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161244f9594939291906132b0565b600060405180830381600087803b15801561246957600080fd5b505af115801561247d573d6000803e3d6000fd5b5050505060006124968247611da590919063ffffffff16565b905060006124c46124b36002600c54611ec890919063ffffffff16565b601054611da590919063ffffffff16565b9050600061250260026124f4846124e6600c5488611e4d90919063ffffffff16565b611ec890919063ffffffff16565b611ec890919063ffffffff16565b90506000612540600261253285612524600d5489611e4d90919063ffffffff16565b611ec890919063ffffffff16565b611ec890919063ffffffff16565b9050600061257e600261257086612562600f548a611e4d90919063ffffffff16565b611ec890919063ffffffff16565b611ec890919063ffffffff16565b905060006125958383611def90919063ffffffff16565b90506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516125e3906130cc565b600060405180830381858888f193505050503d8060008114612621576040519150601f19603f3d011682016040523d82523d6000602084013e612626565b606091505b50509050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051612674906130cc565b600060405180830381858888f193505050503d80600081146126b2576040519150601f19603f3d011682016040523d82523d6000602084013e6126b7565b606091505b505080915050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612707906130cc565b600060405180830381858888f193505050503d8060008114612745576040519150601f19603f3d011682016040523d82523d6000602084013e61274a565b606091505b50508091505060008b111561287157601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127e296959493929190613117565b6060604051808303818588803b1580156127fb57600080fd5b505af115801561280f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128349190612de2565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c60405161286892919061330a565b60405180910390a15b5050505050505050505050506000601a60006101000a81548160ff021916908315150217905550565b6000806017541415905090565b43601781905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061298960115461297b61296c601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611584565b86611e4d90919063ffffffff16565b611ec890919063ffffffff16565b90506129dd81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611def90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a7d9190613295565b60405180910390a3612a988184611da590919063ffffffff16565b9150509392505050565b60008083118290612ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae09190613193565b60405180910390fd5b5060008385612af89190613404565b9050809150509392505050565b600081359050612b148161380b565b92915050565b600081359050612b2981613822565b92915050565b600081359050612b3e81613839565b92915050565b600081359050612b5381613850565b92915050565b600081519050612b6881613850565b92915050565b600060208284031215612b8457612b83613661565b5b6000612b9284828501612b05565b91505092915050565b600060208284031215612bb157612bb0613661565b5b6000612bbf84828501612b1a565b91505092915050565b60008060408385031215612bdf57612bde613661565b5b6000612bed85828601612b05565b9250506020612bfe85828601612b05565b9150509250929050565b600080600060608486031215612c2157612c20613661565b5b6000612c2f86828701612b05565b9350506020612c4086828701612b05565b9250506040612c5186828701612b44565b9150509250925092565b60008060408385031215612c7257612c71613661565b5b6000612c8085828601612b05565b9250506020612c9185828601612b2f565b9150509250929050565b60008060408385031215612cb257612cb1613661565b5b6000612cc085828601612b05565b9250506020612cd185828601612b44565b9150509250929050565b600060208284031215612cf157612cf0613661565b5b6000612cff84828501612b2f565b91505092915050565b60008060408385031215612d1f57612d1e613661565b5b6000612d2d85828601612b2f565b9250506020612d3e85828601612b44565b9150509250929050565b600060208284031215612d5e57612d5d613661565b5b6000612d6c84828501612b44565b91505092915050565b600060208284031215612d8b57612d8a613661565b5b6000612d9984828501612b59565b91505092915050565b60008060408385031215612db957612db8613661565b5b6000612dc785828601612b44565b9250506020612dd885828601612b44565b9150509250929050565b600080600060608486031215612dfb57612dfa613661565b5b6000612e0986828701612b59565b9350506020612e1a86828701612b59565b9250506040612e2b86828701612b59565b9150509250925092565b60008060008060808587031215612e4f57612e4e613661565b5b6000612e5d87828801612b44565b9450506020612e6e87828801612b44565b9350506040612e7f87828801612b44565b9250506060612e9087828801612b44565b91505092959194509250565b6000612ea88383612ec3565b60208301905092915050565b612ebd8161352a565b82525050565b612ecc816134c3565b82525050565b612edb816134c3565b82525050565b6000612eec8261335e565b612ef68185613381565b9350612f018361334e565b8060005b83811015612f32578151612f198882612e9c565b9750612f2483613374565b925050600181019050612f05565b5085935050505092915050565b612f48816134e7565b82525050565b612f578161353c565b82525050565b6000612f6882613369565b612f72818561339d565b9350612f82818560208601613572565b612f8b81613666565b840191505092915050565b6000612fa360258361339d565b9150612fae82613677565b604082019050919050565b6000612fc660118361339d565b9150612fd1826136c6565b602082019050919050565b6000612fe960238361339d565b9150612ff4826136ef565b604082019050919050565b600061300c601b8361339d565b91506130178261373e565b602082019050919050565b600061302f60218361339d565b915061303a82613767565b604082019050919050565b600061305260068361339d565b915061305d826137b6565b602082019050919050565b6000613075600083613392565b9150613080826137df565b600082019050919050565b6000613098600b8361339d565b91506130a3826137e2565b602082019050919050565b6130b781613513565b82525050565b6130c68161351d565b82525050565b60006130d782613068565b9150819050919050565b60006020820190506130f66000830184612ed2565b92915050565b60006020820190506131116000830184612eb4565b92915050565b600060c08201905061312c6000830189612ed2565b61313960208301886130ae565b6131466040830187612f4e565b6131536060830186612f4e565b6131606080830185612ed2565b61316d60a08301846130ae565b979650505050505050565b600060208201905061318d6000830184612f3f565b92915050565b600060208201905081810360008301526131ad8184612f5d565b905092915050565b600060208201905081810360008301526131ce81612f96565b9050919050565b600060208201905081810360008301526131ee81612fb9565b9050919050565b6000602082019050818103600083015261320e81612fdc565b9050919050565b6000602082019050818103600083015261322e81612fff565b9050919050565b6000602082019050818103600083015261324e81613022565b9050919050565b6000602082019050818103600083015261326e81613045565b9050919050565b6000602082019050818103600083015261328e8161308b565b9050919050565b60006020820190506132aa60008301846130ae565b92915050565b600060a0820190506132c560008301886130ae565b6132d26020830187612f4e565b81810360408301526132e48186612ee1565b90506132f36060830185612ed2565b61330060808301846130ae565b9695505050505050565b600060408201905061331f60008301856130ae565b61332c60208301846130ae565b9392505050565b600060208201905061334860008301846130bd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006133b982613513565b91506133c483613513565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133f9576133f86135a5565b5b828201905092915050565b600061340f82613513565b915061341a83613513565b92508261342a576134296135d4565b5b828204905092915050565b600061344082613513565b915061344b83613513565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613484576134836135a5565b5b828202905092915050565b600061349a82613513565b91506134a583613513565b9250828210156134b8576134b76135a5565b5b828203905092915050565b60006134ce826134f3565b9050919050565b60006134e0826134f3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006135358261354e565b9050919050565b600061354782613513565b9050919050565b600061355982613560565b9050919050565b600061356b826134f3565b9050919050565b60005b83811015613590578082015181840152602081019050613575565b8381111561359f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b613814816134c3565b811461381f57600080fd5b50565b61382b816134d5565b811461383657600080fd5b50565b613842816134e7565b811461384d57600080fd5b50565b61385981613513565b811461386457600080fd5b5056fea264697066735822122049eef7a9f7547ea0a0d9bb6e5d98930418a0b12e5a5ccf032385118480c566b564736f6c63430008050033

Deployed Bytecode Sourcemap

5678:11286:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7025:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8080:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8502:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16743:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7810:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9020:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16271:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3573:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7904:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8726:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14445:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14599:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14764:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6988:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15028:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8250:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6556:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6134:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8166:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6208:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7990:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8856:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3246:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6954:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16421:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15957:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8361:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15605:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16596:139;;;;;;;;;;;;;:::i;:::-;;15388:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3416:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10990:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3973:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15769:180;;;;;;;;;;;;;:::i;:::-;;14892:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3747:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7025:54;;;;:::o;8080:80::-;8128:13;8152:5;;;;;;;;;;;;;;;;;8145:12;;8080:80;:::o;8502:216::-;8577:4;8629:6;8594:11;:23;8606:10;8594:23;;;;;;;;;;;;;;;:32;8618:7;8594:32;;;;;;;;;;;;;;;:41;;;;8672:7;8651:37;;8660:10;8651:37;;;8681:6;8651:37;;;;;;:::i;:::-;;;;;;;;8706:4;8699:11;;8502:216;;;;:::o;16743:150::-;16823:4;16879:6;16847:29;16867:8;16847:19;:29::i;:::-;:38;16840:45;;16743:150;;;;:::o;7810:88::-;7865:7;7883:12;;7876:19;;7810:88;:::o;9020:370::-;9120:4;9175:17;9140:11;:19;9152:6;9140:19;;;;;;;;;;;;;;;:31;9160:10;9140:31;;;;;;;;;;;;;;;;:52;9137:186;;9242:69;9278:6;9242:69;;;;;;;;;;;;;;;;;:11;:19;9254:6;9242:19;;;;;;;;;;;;;;;:31;9262:10;9242:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9208:11;:19;9220:6;9208:19;;;;;;;;;;;;;;;:31;9228:10;9208:31;;;;;;;;;;;;;;;:103;;;;9137:186;9342:40;9356:6;9364:9;9375:6;9342:13;:40::i;:::-;9335:47;;9020:370;;;;;:::o;16271:142::-;16324:7;16351:54;16389:15;16399:4;;;;;;;;;;;16389:9;:15::i;:::-;16351:33;16368:15;16378:4;;;;;;;;;;;16368:9;:15::i;:::-;16351:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;16344:61;;16271:142;:::o;3573:103::-;3628:4;3663:5;;;;;;;;;;;3652:16;;:7;:16;;;3645:23;;3573:103;;;:::o;7904:80::-;7956:5;6061:1;7965:16;;7904:80;:::o;8726:122::-;8781:4;8805:35;8813:7;8822:17;8805:7;:35::i;:::-;8798:42;;8726:122;;;:::o;14445:147::-;3131:24;3144:10;3131:12;:24::i;:::-;3123:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14578:6:::1;14563:12;:21;;;;14445:147:::0;:::o;14599:153::-;2962:19;2970:10;2962:7;:19::i;:::-;2954:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14738:6:::1;14721:14;:23;;;;14599:153:::0;:::o;14764:120::-;3131:24;3144:10;3131:12;:24::i;:::-;3123:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14870:6:::1;14848:11;:19;14860:6;14848:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14764:120:::0;;:::o;6988:30::-;;;;;;;;;;;;;:::o;15028:352::-;3131:24;3144:10;3131:12;:24::i;:::-;3123:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15180:13:::1;15165:12;:28;;;;15214:8;15204:7;:18;;;;15248:13;15233:12;:28;;;;15283:46;15315:13;15283:27;15301:8;15283:13;:17;;:27;;;;:::i;:::-;:31;;:46;;;;:::i;:::-;15272:8;:57;;;;15357:15;15340:14;:32;;;;15028:352:::0;;;;:::o;8250:105::-;8316:7;8334:9;:18;8344:7;8334:18;;;;;;;;;;;;;;;;8327:25;;8250:105;;;:::o;6556:28::-;;;;:::o;6134:54::-;;;;:::o;8166:78::-;8218:7;8236:5;;;;;;;;;;;8229:12;;8166:78;:::o;6208:56::-;;;;:::o;7990:84::-;8040:13;8064:7;;;;;;;;;;;;;;;;;8057:14;;7990:84;:::o;8856:156::-;8936:4;8960:44;8974:10;8986:9;8997:6;8960:13;:44::i;:::-;8953:51;;8856:156;;;;:::o;3246:94::-;2962:19;2970:10;2962:7;:19::i;:::-;2954:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3328:4:::1;3306:14:::0;:19:::1;3321:3;3306:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3246:94:::0;:::o;6954:25::-;;;;:::o;16421:167::-;16489:7;16516:64;16557:22;:20;:22::i;:::-;16516:36;16529:22;16549:1;16529:15;16539:4;;;;;;;;;;;16529:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;16516:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;16509:71;;16421:167;;;:::o;15957:298::-;3131:24;3144:10;3131:12;:24::i;:::-;3123:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16058:4:::1;16040:23;;:6;:23;;;;16032:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16114:24;16148:6;16141:24;;;16174:4;16141:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16114:66;;16199:20;;;;;;;;;;;16191:38;;:56;16230:16;16191:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16021:234;15957:298:::0;:::o;8361:133::-;8445:7;8463:11;:19;8475:6;8463:19;;;;;;;;;;;;;;;:28;8483:7;8463:28;;;;;;;;;;;;;;;;8456:35;;8361:133;;;;:::o;15605:156::-;3131:24;3144:10;3131:12;:24::i;:::-;3123:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15711:8:::1;15697:11;;:22;;;;;;;;;;;;;;;;;;15746:7;15730:13;:23;;;;15605:156:::0;;:::o;16596:139::-;16637:17;16657:21;16637:41;;16697:9;;;;;;;;;;;16689:27;;:38;16717:9;16689:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16626:109;16596:139::o;15388:209::-;3131:24;3144:10;3131:12;:24::i;:::-;3123:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15523:21:::1;15500:20;;:44;;;;;;;;;;;;;;;;;;15573:16;15555:15;;:34;;;;;;;;;;;;;;;;;;15388:209:::0;;:::o;3416:97::-;2962:19;2970:10;2962:7;:19::i;:::-;2954:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3500:5:::1;3478:14;:19;3493:3;3478:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3416:97:::0;:::o;10990:225::-;11046:7;11087:12;11082:1;11069:10;;:14;;;;:::i;:::-;:30;11066:67;;11109:21;11128:1;11109:14;;:18;;:21;;;;:::i;:::-;11102:28;;;;11066:67;11146:7;11143:39;;;11164:15;11177:1;11164:8;;:12;;:15;;;;:::i;:::-;11157:22;;;;11143:39;11199:8;;11192:15;;10990:225;;;;:::o;3973:173::-;2962:19;2970:10;2962:7;:19::i;:::-;2954:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4057:3:::1;4049:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4093:4;4071:14:::0;:19:::1;4086:3;4071:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4113:25;4134:3;4113:25;;;;;;:::i;:::-;;;;;;;;3973:173:::0;:::o;15769:180::-;3131:24;3144:10;3131:12;:24::i;:::-;3123:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15822:26:::1;15851:21;15822:50;;15891:20;;;;;;;;;;;15883:38;;:58;15922:18;15883:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15811:138;15769:180::o:0;14892:128::-;3131:24;3144:10;3131:12;:24::i;:::-;3123:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15006:6:::1;14980:15;:23;14996:6;14980:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14892:128:::0;;:::o;3747:107::-;3803:4;3827:14;:19;3842:3;3827:19;;;;;;;;;;;;;;;;;;;;;;;;;3820:26;;3747:107;;;:::o;630:192::-;716:7;749:1;744;:6;;752:12;736:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;776:9;792:1;788;:5;;;;:::i;:::-;776:17;;813:1;806:8;;;630:192;;;;;:::o;9398:942::-;9490:4;9510:6;;;;;;;;;;;9507:63;;;9526:41;9541:6;9549:9;9560:6;9526:14;:41::i;:::-;9519:48;;;;9507:63;9590:28;9603:6;9611;9590:12;:28::i;:::-;9656:4;;;;;;;;;;;9643:17;;:9;:17;;;;:38;;;;;9677:4;;;;;;;;;;;9664:17;;:9;:17;;;;9643:38;9639:198;;;9706:15;:26;9722:9;9706:26;;;;;;;;;;;;;;;;;;;;;;;;;:77;;;;9769:14;;9759:6;9736:9;:20;9746:9;9736:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:47;;9706:77;9698:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;9639:198;9860:16;:14;:16::i;:::-;9857:35;;;9879:10;:8;:10::i;:::-;9857:35;9908:10;:8;:10::i;:::-;9907:11;:32;;;;;9935:4;;;;;;;;;;;9922:17;;:9;:17;;;9907:32;9904:81;;;9970:1;9950:9;:17;9960:6;9950:17;;;;;;;;;;;;;;;;:21;9942:30;;;;;;9974:8;:6;:8::i;:::-;9904:81;10017:53;10039:6;10017:53;;;;;;;;;;;;;;;;;:9;:17;10027:6;10017:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9997:9;:17;10007:6;9997:17;;;;;;;;;;;;;;;:73;;;;10083:22;10108:21;10122:6;10108:13;:21::i;:::-;:67;;10169:6;10108:67;;;10132:34;10140:6;10148:9;10159:6;10132:7;:34::i;:::-;10108:67;10083:92;;10209:40;10234:14;10209:9;:20;10219:9;10209:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10186:9;:20;10196:9;10186:20;;;;;;;;;;;;;;;:63;;;;10284:9;10267:43;;10276:6;10267:43;;;10295:14;10267:43;;;;;;:::i;:::-;;;;;;;;10328:4;10321:11;;;9398:942;;;;;;:::o;488:136::-;546:7;573:43;577:1;580;573:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;566:50;;488:136;;;;:::o;301:181::-;359:7;379:9;395:1;391;:5;;;;:::i;:::-;379:17;;420:1;415;:6;;407:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;473:1;466:8;;;301:181;;;;:::o;828:250::-;886:7;915:1;910;:6;906:47;;;940:1;933:8;;;;906:47;965:9;981:1;977;:5;;;;:::i;:::-;965:17;;1010:1;1005;1001;:5;;;;:::i;:::-;:10;993:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1069:1;1062:8;;;828:250;;;;;:::o;1084:132::-;1142:7;1169:39;1173:1;1176;1169:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1162:46;;1084:132;;;;:::o;10352:330::-;10445:4;10482:53;10504:6;10482:53;;;;;;;;;;;;;;;;;:9;:17;10492:6;10482:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10462:9;:17;10472:6;10462:17;;;;;;;;;;;;;;;:73;;;;10569:32;10594:6;10569:9;:20;10579:9;10569:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10546:9;:20;10556:9;10546:20;;;;;;;;;;;;;;;:55;;;;10634:9;10617:35;;10626:6;10617:35;;;10645:6;10617:35;;;;;;:::i;:::-;;;;;;;;10670:4;10663:11;;10352:330;;;;;:::o;10690:166::-;10787:12;;10777:6;:22;;:49;;;;10803:15;:23;10819:6;10803:23;;;;;;;;;;;;;;;;;;;;;;;;;10777:49;10769:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10690:166;;:::o;11603:197::-;11652:4;11690;;;;;;;;;;;11676:18;;:10;:18;;;;:38;;;;;11708:6;;;;;;;;;;;11707:7;11676:38;:62;;;;;11727:11;;;;;;;;;;;11676:62;:116;;;;;11779:13;;11751:9;:24;11769:4;11751:24;;;;;;;;;;;;;;;;:41;;11676:116;11669:123;;11603:197;:::o;11808:2083::-;7143:4;7134:6;;:13;;;;;;;;;;;;;;;;;;11857:28:::1;11888:24;11906:4;11888:9;:24::i;:::-;11857:55;;11923:23;11949:59;12006:1;11949:52;11992:8;;11949:38;11974:12;;11949:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11923:85;;12019:20;12042:41;12067:15;12042:20;:24;;:41;;;;:::i;:::-;12019:64;;12096:21;12134:1;12120:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12096:40;;12165:4;12147;12152:1;12147:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12191:4;;;;;;;;;;;12181;12186:1;12181:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;12208:21;12232;12208:45;;12266:6;;;;;;;;;;;:57;;;12338:12;12365:1;12381:4;12408;12428:15;12266:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12465:17;12485:40;12511:13;12485:21;:25;;:40;;;;:::i;:::-;12465:60;;12536:19;12558:33;12571:19;12588:1;12571:12;;:16;;:19;;;;:::i;:::-;12558:8;;:12;;:33;;;;:::i;:::-;12536:55;;12602:26;12631:51;12680:1;12631:44;12663:11;12631:27;12645:12;;12631:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;12602:80;;12693:28;12724:46;12768:1;12724:39;12751:11;12724:22;12738:7;;12724:9;:13;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;:43;;:46;;;;:::i;:::-;12693:77;;12781:26;12810:51;12859:1;12810:44;12842:11;12810:27;12824:12;;12810:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;12781:80;;12872:26;12901:44;12924:20;12901:18;:22;;:44;;;;:::i;:::-;12872:73;;12961:13;13011:20;;;;;;;;;;;13003:34;;13045:18;13070:5;13003:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12960:120;;;13201:15;;;;;;;;;;;13193:29;;13230:20;13257:5;13193:74;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13155:112;;;;;13388:9;;;;;;;;;;;13380:23;;13411:18;13436:5;13380:66;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13342:104;;;;;13544:1;13526:15;:19;13523:361;;;13561:6;;;;;;;;;;;:22;;;13591:18;13637:4;13661:15;13695:1;13715::::0;13735:20:::1;;;;;;;;;;;13774:15;13561:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13824:48;13836:18;13856:15;13824:48;;;;;;;:::i;:::-;;;;;;;;13523:361;11846:2045;;;;;;;;;;;;7161:5:::0;7152:6;;:14;;;;;;;;;;;;;;;;;;11808:2083::o;14268:90::-;14311:4;14349:1;14335:10;;:15;;14328:22;;14268:90;:::o;14366:71::-;14417:12;14404:10;:25;;;;14366:71::o;10868:114::-;10930:4;10955:11;:19;10967:6;10955:19;;;;;;;;;;;;;;;;;;;;;;;;;10954:20;10947:27;;10868:114;;;:::o;11223:372::-;11308:7;11328:17;11348:61;11394:14;;11348:41;11359:29;11383:4;;;;;;;;;;;11371:16;;:8;:16;;;11359:11;:29::i;:::-;11348:6;:10;;:41;;;;:::i;:::-;:45;;:61;;;;:::i;:::-;11328:81;;11449:39;11478:9;11449;:24;11467:4;11449:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11422:9;:24;11440:4;11422:24;;;;;;;;;;;;;;;:66;;;;11529:4;11504:42;;11513:6;11504:42;;;11536:9;11504:42;;;;;;:::i;:::-;;;;;;;;11566:21;11577:9;11566:6;:10;;:21;;;;:::i;:::-;11559:28;;;11223:372;;;;;:::o;1222:345::-;1308:7;1407:1;1403;:5;1410:12;1395:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1434:9;1450:1;1446;:5;;;;:::i;:::-;1434:17;;1558:1;1551:8;;;1222:345;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;212:95;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;362:84;;;;:::o;452:139::-;498:5;536:6;523:20;514:29;;552:33;579:5;552:33;:::i;:::-;504:87;;;;:::o;597:143::-;654:5;685:6;679:13;670:22;;701:33;728:5;701:33;:::i;:::-;660:80;;;;:::o;746:329::-;805:6;854:2;842:9;833:7;829:23;825:32;822:2;;;860:79;;:::i;:::-;822:2;980:1;1005:53;1050:7;1041:6;1030:9;1026:22;1005:53;:::i;:::-;995:63;;951:117;812:263;;;;:::o;1081:345::-;1148:6;1197:2;1185:9;1176:7;1172:23;1168:32;1165:2;;;1203:79;;:::i;:::-;1165:2;1323:1;1348:61;1401:7;1392:6;1381:9;1377:22;1348:61;:::i;:::-;1338:71;;1294:125;1155:271;;;;:::o;1432:474::-;1500:6;1508;1557:2;1545:9;1536:7;1532:23;1528:32;1525:2;;;1563:79;;:::i;:::-;1525:2;1683:1;1708:53;1753:7;1744:6;1733:9;1729:22;1708:53;:::i;:::-;1698:63;;1654:117;1810:2;1836:53;1881:7;1872:6;1861:9;1857:22;1836:53;:::i;:::-;1826:63;;1781:118;1515:391;;;;;:::o;1912:619::-;1989:6;1997;2005;2054:2;2042:9;2033:7;2029:23;2025:32;2022:2;;;2060:79;;:::i;:::-;2022:2;2180:1;2205:53;2250:7;2241:6;2230:9;2226:22;2205:53;:::i;:::-;2195:63;;2151:117;2307:2;2333:53;2378:7;2369:6;2358:9;2354:22;2333:53;:::i;:::-;2323:63;;2278:118;2435:2;2461:53;2506:7;2497:6;2486:9;2482:22;2461:53;:::i;:::-;2451:63;;2406:118;2012:519;;;;;:::o;2537:468::-;2602:6;2610;2659:2;2647:9;2638:7;2634:23;2630:32;2627:2;;;2665:79;;:::i;:::-;2627:2;2785:1;2810:53;2855:7;2846:6;2835:9;2831:22;2810:53;:::i;:::-;2800:63;;2756:117;2912:2;2938:50;2980:7;2971:6;2960:9;2956:22;2938:50;:::i;:::-;2928:60;;2883:115;2617:388;;;;;:::o;3011:474::-;3079:6;3087;3136:2;3124:9;3115:7;3111:23;3107:32;3104:2;;;3142:79;;:::i;:::-;3104:2;3262:1;3287:53;3332:7;3323:6;3312:9;3308:22;3287:53;:::i;:::-;3277:63;;3233:117;3389:2;3415:53;3460:7;3451:6;3440:9;3436:22;3415:53;:::i;:::-;3405:63;;3360:118;3094:391;;;;;:::o;3491:323::-;3547:6;3596:2;3584:9;3575:7;3571:23;3567:32;3564:2;;;3602:79;;:::i;:::-;3564:2;3722:1;3747:50;3789:7;3780:6;3769:9;3765:22;3747:50;:::i;:::-;3737:60;;3693:114;3554:260;;;;:::o;3820:468::-;3885:6;3893;3942:2;3930:9;3921:7;3917:23;3913:32;3910:2;;;3948:79;;:::i;:::-;3910:2;4068:1;4093:50;4135:7;4126:6;4115:9;4111:22;4093:50;:::i;:::-;4083:60;;4039:114;4192:2;4218:53;4263:7;4254:6;4243:9;4239:22;4218:53;:::i;:::-;4208:63;;4163:118;3900:388;;;;;:::o;4294:329::-;4353:6;4402:2;4390:9;4381:7;4377:23;4373:32;4370:2;;;4408:79;;:::i;:::-;4370:2;4528:1;4553:53;4598:7;4589:6;4578:9;4574:22;4553:53;:::i;:::-;4543:63;;4499:117;4360:263;;;;:::o;4629:351::-;4699:6;4748:2;4736:9;4727:7;4723:23;4719:32;4716:2;;;4754:79;;:::i;:::-;4716:2;4874:1;4899:64;4955:7;4946:6;4935:9;4931:22;4899:64;:::i;:::-;4889:74;;4845:128;4706:274;;;;:::o;4986:474::-;5054:6;5062;5111:2;5099:9;5090:7;5086:23;5082:32;5079:2;;;5117:79;;:::i;:::-;5079:2;5237:1;5262:53;5307:7;5298:6;5287:9;5283:22;5262:53;:::i;:::-;5252:63;;5208:117;5364:2;5390:53;5435:7;5426:6;5415:9;5411:22;5390:53;:::i;:::-;5380:63;;5335:118;5069:391;;;;;:::o;5466:663::-;5554:6;5562;5570;5619:2;5607:9;5598:7;5594:23;5590:32;5587:2;;;5625:79;;:::i;:::-;5587:2;5745:1;5770:64;5826:7;5817:6;5806:9;5802:22;5770:64;:::i;:::-;5760:74;;5716:128;5883:2;5909:64;5965:7;5956:6;5945:9;5941:22;5909:64;:::i;:::-;5899:74;;5854:129;6022:2;6048:64;6104:7;6095:6;6084:9;6080:22;6048:64;:::i;:::-;6038:74;;5993:129;5577:552;;;;;:::o;6135:765::-;6221:6;6229;6237;6245;6294:3;6282:9;6273:7;6269:23;6265:33;6262:2;;;6301:79;;:::i;:::-;6262:2;6421:1;6446:53;6491:7;6482:6;6471:9;6467:22;6446:53;:::i;:::-;6436:63;;6392:117;6548:2;6574:53;6619:7;6610:6;6599:9;6595:22;6574:53;:::i;:::-;6564:63;;6519:118;6676:2;6702:53;6747:7;6738:6;6727:9;6723:22;6702:53;:::i;:::-;6692:63;;6647:118;6804:2;6830:53;6875:7;6866:6;6855:9;6851:22;6830:53;:::i;:::-;6820:63;;6775:118;6252:648;;;;;;;:::o;6906:179::-;6975:10;6996:46;7038:3;7030:6;6996:46;:::i;:::-;7074:4;7069:3;7065:14;7051:28;;6986:99;;;;:::o;7091:147::-;7186:45;7225:5;7186:45;:::i;:::-;7181:3;7174:58;7164:74;;:::o;7244:108::-;7321:24;7339:5;7321:24;:::i;:::-;7316:3;7309:37;7299:53;;:::o;7358:118::-;7445:24;7463:5;7445:24;:::i;:::-;7440:3;7433:37;7423:53;;:::o;7512:732::-;7631:3;7660:54;7708:5;7660:54;:::i;:::-;7730:86;7809:6;7804:3;7730:86;:::i;:::-;7723:93;;7840:56;7890:5;7840:56;:::i;:::-;7919:7;7950:1;7935:284;7960:6;7957:1;7954:13;7935:284;;;8036:6;8030:13;8063:63;8122:3;8107:13;8063:63;:::i;:::-;8056:70;;8149:60;8202:6;8149:60;:::i;:::-;8139:70;;7995:224;7982:1;7979;7975:9;7970:14;;7935:284;;;7939:14;8235:3;8228:10;;7636:608;;;;;;;:::o;8250:109::-;8331:21;8346:5;8331:21;:::i;:::-;8326:3;8319:34;8309:50;;:::o;8365:147::-;8460:45;8499:5;8460:45;:::i;:::-;8455:3;8448:58;8438:74;;:::o;8518:364::-;8606:3;8634:39;8667:5;8634:39;:::i;:::-;8689:71;8753:6;8748:3;8689:71;:::i;:::-;8682:78;;8769:52;8814:6;8809:3;8802:4;8795:5;8791:16;8769:52;:::i;:::-;8846:29;8868:6;8846:29;:::i;:::-;8841:3;8837:39;8830:46;;8610:272;;;;;:::o;8888:366::-;9030:3;9051:67;9115:2;9110:3;9051:67;:::i;:::-;9044:74;;9127:93;9216:3;9127:93;:::i;:::-;9245:2;9240:3;9236:12;9229:19;;9034:220;;;:::o;9260:366::-;9402:3;9423:67;9487:2;9482:3;9423:67;:::i;:::-;9416:74;;9499:93;9588:3;9499:93;:::i;:::-;9617:2;9612:3;9608:12;9601:19;;9406:220;;;:::o;9632:366::-;9774:3;9795:67;9859:2;9854:3;9795:67;:::i;:::-;9788:74;;9871:93;9960:3;9871:93;:::i;:::-;9989:2;9984:3;9980:12;9973:19;;9778:220;;;:::o;10004:366::-;10146:3;10167:67;10231:2;10226:3;10167:67;:::i;:::-;10160:74;;10243:93;10332:3;10243:93;:::i;:::-;10361:2;10356:3;10352:12;10345:19;;10150:220;;;:::o;10376:366::-;10518:3;10539:67;10603:2;10598:3;10539:67;:::i;:::-;10532:74;;10615:93;10704:3;10615:93;:::i;:::-;10733:2;10728:3;10724:12;10717:19;;10522:220;;;:::o;10748:365::-;10890:3;10911:66;10975:1;10970:3;10911:66;:::i;:::-;10904:73;;10986:93;11075:3;10986:93;:::i;:::-;11104:2;11099:3;11095:12;11088:19;;10894:219;;;:::o;11119:398::-;11278:3;11299:83;11380:1;11375:3;11299:83;:::i;:::-;11292:90;;11391:93;11480:3;11391:93;:::i;:::-;11509:1;11504:3;11500:11;11493:18;;11282:235;;;:::o;11523:366::-;11665:3;11686:67;11750:2;11745:3;11686:67;:::i;:::-;11679:74;;11762:93;11851:3;11762:93;:::i;:::-;11880:2;11875:3;11871:12;11864:19;;11669:220;;;:::o;11895:118::-;11982:24;12000:5;11982:24;:::i;:::-;11977:3;11970:37;11960:53;;:::o;12019:112::-;12102:22;12118:5;12102:22;:::i;:::-;12097:3;12090:35;12080:51;;:::o;12137:379::-;12321:3;12343:147;12486:3;12343:147;:::i;:::-;12336:154;;12507:3;12500:10;;12325:191;;;:::o;12522:222::-;12615:4;12653:2;12642:9;12638:18;12630:26;;12666:71;12734:1;12723:9;12719:17;12710:6;12666:71;:::i;:::-;12620:124;;;;:::o;12750:238::-;12851:4;12889:2;12878:9;12874:18;12866:26;;12902:79;12978:1;12967:9;12963:17;12954:6;12902:79;:::i;:::-;12856:132;;;;:::o;12994:807::-;13243:4;13281:3;13270:9;13266:19;13258:27;;13295:71;13363:1;13352:9;13348:17;13339:6;13295:71;:::i;:::-;13376:72;13444:2;13433:9;13429:18;13420:6;13376:72;:::i;:::-;13458:80;13534:2;13523:9;13519:18;13510:6;13458:80;:::i;:::-;13548;13624:2;13613:9;13609:18;13600:6;13548:80;:::i;:::-;13638:73;13706:3;13695:9;13691:19;13682:6;13638:73;:::i;:::-;13721;13789:3;13778:9;13774:19;13765:6;13721:73;:::i;:::-;13248:553;;;;;;;;;:::o;13807:210::-;13894:4;13932:2;13921:9;13917:18;13909:26;;13945:65;14007:1;13996:9;13992:17;13983:6;13945:65;:::i;:::-;13899:118;;;;:::o;14023:313::-;14136:4;14174:2;14163:9;14159:18;14151:26;;14223:9;14217:4;14213:20;14209:1;14198:9;14194:17;14187:47;14251:78;14324:4;14315:6;14251:78;:::i;:::-;14243:86;;14141:195;;;;:::o;14342:419::-;14508:4;14546:2;14535:9;14531:18;14523:26;;14595:9;14589:4;14585:20;14581:1;14570:9;14566:17;14559:47;14623:131;14749:4;14623:131;:::i;:::-;14615:139;;14513:248;;;:::o;14767:419::-;14933:4;14971:2;14960:9;14956:18;14948:26;;15020:9;15014:4;15010:20;15006:1;14995:9;14991:17;14984:47;15048:131;15174:4;15048:131;:::i;:::-;15040:139;;14938:248;;;:::o;15192:419::-;15358:4;15396:2;15385:9;15381:18;15373:26;;15445:9;15439:4;15435:20;15431:1;15420:9;15416:17;15409:47;15473:131;15599:4;15473:131;:::i;:::-;15465:139;;15363:248;;;:::o;15617:419::-;15783:4;15821:2;15810:9;15806:18;15798:26;;15870:9;15864:4;15860:20;15856:1;15845:9;15841:17;15834:47;15898:131;16024:4;15898:131;:::i;:::-;15890:139;;15788:248;;;:::o;16042:419::-;16208:4;16246:2;16235:9;16231:18;16223:26;;16295:9;16289:4;16285:20;16281:1;16270:9;16266:17;16259:47;16323:131;16449:4;16323:131;:::i;:::-;16315:139;;16213:248;;;:::o;16467:419::-;16633:4;16671:2;16660:9;16656:18;16648:26;;16720:9;16714:4;16710:20;16706:1;16695:9;16691:17;16684:47;16748:131;16874:4;16748:131;:::i;:::-;16740:139;;16638:248;;;:::o;16892:419::-;17058:4;17096:2;17085:9;17081:18;17073:26;;17145:9;17139:4;17135:20;17131:1;17120:9;17116:17;17109:47;17173:131;17299:4;17173:131;:::i;:::-;17165:139;;17063:248;;;:::o;17317:222::-;17410:4;17448:2;17437:9;17433:18;17425:26;;17461:71;17529:1;17518:9;17514:17;17505:6;17461:71;:::i;:::-;17415:124;;;;:::o;17545:831::-;17808:4;17846:3;17835:9;17831:19;17823:27;;17860:71;17928:1;17917:9;17913:17;17904:6;17860:71;:::i;:::-;17941:80;18017:2;18006:9;18002:18;17993:6;17941:80;:::i;:::-;18068:9;18062:4;18058:20;18053:2;18042:9;18038:18;18031:48;18096:108;18199:4;18190:6;18096:108;:::i;:::-;18088:116;;18214:72;18282:2;18271:9;18267:18;18258:6;18214:72;:::i;:::-;18296:73;18364:3;18353:9;18349:19;18340:6;18296:73;:::i;:::-;17813:563;;;;;;;;:::o;18382:332::-;18503:4;18541:2;18530:9;18526:18;18518:26;;18554:71;18622:1;18611:9;18607:17;18598:6;18554:71;:::i;:::-;18635:72;18703:2;18692:9;18688:18;18679:6;18635:72;:::i;:::-;18508:206;;;;;:::o;18720:214::-;18809:4;18847:2;18836:9;18832:18;18824:26;;18860:67;18924:1;18913:9;18909:17;18900:6;18860:67;:::i;:::-;18814:120;;;;:::o;19021:132::-;19088:4;19111:3;19103:11;;19141:4;19136:3;19132:14;19124:22;;19093:60;;;:::o;19159:114::-;19226:6;19260:5;19254:12;19244:22;;19233:40;;;:::o;19279:99::-;19331:6;19365:5;19359:12;19349:22;;19338:40;;;:::o;19384:113::-;19454:4;19486;19481:3;19477:14;19469:22;;19459:38;;;:::o;19503:184::-;19602:11;19636:6;19631:3;19624:19;19676:4;19671:3;19667:14;19652:29;;19614:73;;;;:::o;19693:147::-;19794:11;19831:3;19816:18;;19806:34;;;;:::o;19846:169::-;19930:11;19964:6;19959:3;19952:19;20004:4;19999:3;19995:14;19980:29;;19942:73;;;;:::o;20021:305::-;20061:3;20080:20;20098:1;20080:20;:::i;:::-;20075:25;;20114:20;20132:1;20114:20;:::i;:::-;20109:25;;20268:1;20200:66;20196:74;20193:1;20190:81;20187:2;;;20274:18;;:::i;:::-;20187:2;20318:1;20315;20311:9;20304:16;;20065:261;;;;:::o;20332:185::-;20372:1;20389:20;20407:1;20389:20;:::i;:::-;20384:25;;20423:20;20441:1;20423:20;:::i;:::-;20418:25;;20462:1;20452:2;;20467:18;;:::i;:::-;20452:2;20509:1;20506;20502:9;20497:14;;20374:143;;;;:::o;20523:348::-;20563:7;20586:20;20604:1;20586:20;:::i;:::-;20581:25;;20620:20;20638:1;20620:20;:::i;:::-;20615:25;;20808:1;20740:66;20736:74;20733:1;20730:81;20725:1;20718:9;20711:17;20707:105;20704:2;;;20815:18;;:::i;:::-;20704:2;20863:1;20860;20856:9;20845:20;;20571:300;;;;:::o;20877:191::-;20917:4;20937:20;20955:1;20937:20;:::i;:::-;20932:25;;20971:20;20989:1;20971:20;:::i;:::-;20966:25;;21010:1;21007;21004:8;21001:2;;;21015:18;;:::i;:::-;21001:2;21060:1;21057;21053:9;21045:17;;20922:146;;;;:::o;21074:96::-;21111:7;21140:24;21158:5;21140:24;:::i;:::-;21129:35;;21119:51;;;:::o;21176:104::-;21221:7;21250:24;21268:5;21250:24;:::i;:::-;21239:35;;21229:51;;;:::o;21286:90::-;21320:7;21363:5;21356:13;21349:21;21338:32;;21328:48;;;:::o;21382:126::-;21419:7;21459:42;21452:5;21448:54;21437:65;;21427:81;;;:::o;21514:77::-;21551:7;21580:5;21569:16;;21559:32;;;:::o;21597:86::-;21632:7;21672:4;21665:5;21661:16;21650:27;;21640:43;;;:::o;21689:134::-;21747:9;21780:37;21811:5;21780:37;:::i;:::-;21767:50;;21757:66;;;:::o;21829:121::-;21887:9;21920:24;21938:5;21920:24;:::i;:::-;21907:37;;21897:53;;;:::o;21956:126::-;22006:9;22039:37;22070:5;22039:37;:::i;:::-;22026:50;;22016:66;;;:::o;22088:113::-;22138:9;22171:24;22189:5;22171:24;:::i;:::-;22158:37;;22148:53;;;:::o;22207:307::-;22275:1;22285:113;22299:6;22296:1;22293:13;22285:113;;;22384:1;22379:3;22375:11;22369:18;22365:1;22360:3;22356:11;22349:39;22321:2;22318:1;22314:10;22309:15;;22285:113;;;22416:6;22413:1;22410:13;22407:2;;;22496:1;22487:6;22482:3;22478:16;22471:27;22407:2;22256:258;;;;:::o;22520:180::-;22568:77;22565:1;22558:88;22665:4;22662:1;22655:15;22689:4;22686:1;22679:15;22706:180;22754:77;22751:1;22744:88;22851:4;22848:1;22841:15;22875:4;22872:1;22865:15;22892:180;22940:77;22937:1;22930:88;23037:4;23034:1;23027:15;23061:4;23058:1;23051:15;23078:180;23126:77;23123:1;23116:88;23223:4;23220:1;23213:15;23247:4;23244:1;23237:15;23387:117;23496:1;23493;23486:12;23510:102;23551:6;23602:2;23598:7;23593:2;23586:5;23582:14;23578:28;23568:38;;23558:54;;;:::o;23618:224::-;23758:34;23754:1;23746:6;23742:14;23735:58;23827:7;23822:2;23814:6;23810:15;23803:32;23724:118;:::o;23848:167::-;23988:19;23984:1;23976:6;23972:14;23965:43;23954:61;:::o;24021:222::-;24161:34;24157:1;24149:6;24145:14;24138:58;24230:5;24225:2;24217:6;24213:15;24206:30;24127:116;:::o;24249:177::-;24389:29;24385:1;24377:6;24373:14;24366:53;24355:71;:::o;24432:220::-;24572:34;24568:1;24560:6;24556:14;24549:58;24641:3;24636:2;24628:6;24624:15;24617:28;24538:114;:::o;24658:156::-;24798:8;24794:1;24786:6;24782:14;24775:32;24764:50;:::o;24820:114::-;24926:8;:::o;24940:161::-;25080:13;25076:1;25068:6;25064:14;25057:37;25046:55;:::o;25107:122::-;25180:24;25198:5;25180:24;:::i;:::-;25173:5;25170:35;25160:2;;25219:1;25216;25209:12;25160:2;25150:79;:::o;25235:138::-;25316:32;25342:5;25316:32;:::i;:::-;25309:5;25306:43;25296:2;;25363:1;25360;25353:12;25296:2;25286:87;:::o;25379:116::-;25449:21;25464:5;25449:21;:::i;:::-;25442:5;25439:32;25429:2;;25485:1;25482;25475:12;25429:2;25419:76;:::o;25501:122::-;25574:24;25592:5;25574:24;:::i;:::-;25567:5;25564:35;25554:2;;25613:1;25610;25603:12;25554:2;25544:79;:::o

Swarm Source

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