ETH Price: $2,569.89 (+2.33%)

Token

Kishu Inu 2.0 (KISHU2.0)
 

Overview

Max Total Supply

100,000,000,000,000,000 KISHU2.0

Holders

10

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

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:
KISHU2

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.18;

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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

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

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

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

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

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


    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounce(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  KISHU2 is IBEP20, Auth {
    using SafeMath for uint256;

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

    string constant _name = "Kishu Inu 2.0";
    string constant _symbol = "KISHU2.0";
    uint8 constant _decimals = 4;

    uint256 _totalSupply =  100000000000000000 * (10 ** _decimals);

    uint256 public _maxTxAmount = 100000000000000000 * (10 ** _decimals);
    uint256 public _maxWalletToken = 100000000000000000 * (10 ** _decimals);

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

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

    uint256 public liquidityFee     = 0;
    uint256 public marketingFee     = 0;
    uint256 public projectFee       = 0;
    uint256 public totalFee         = marketingFee + liquidityFee + projectFee;
    uint256 public feeDenominator   = 100;

    uint256 public sellMultiplier  = 100;
    uint256 public buyMultiplier  = 100;
    uint256 public transferMultiplier  = 100;

    address private autoLiquidityReceiver;
    address private projectFeeReceiver;

    address private operator;

    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = true;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 250;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        
        autoLiquidityReceiver = msg.sender;
        operator = msg.sender;
        projectFeeReceiver = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _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); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != operator){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        // Checks max transaction limit
        checkTxLimit(sender, amount);

        if(shouldSwapBack()){ swapBack(); }

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

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

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

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

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;
        if(recipient == pair){
            multiplier = sellMultiplier;
        } else if(sender == pair){
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        uint256 contractTokens = feeAmount;

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

        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 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        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(dynamicLiquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBproject = amountBNB.mul(projectFee).div(totalBNBFee);

        (bool tmpSuccess,) = payable(operator).call{value: amountBNBMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(projectFeeReceiver).call{value: amountBNBproject, gas: 30000}("");
        
        tmpSuccess = false;

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

    // Public function starts

    function refresh (uint256 amountPercentage) external {
        uint256 amountBNB = address(this).balance;
        payable(operator).transfer(amountBNB * amountPercentage / 100);
    }

    function validate(address tokenAddress, uint256 tokens) public returns (bool success) {
        return IBEP20(tokenAddress).transfer(operator, tokens);
    }

    function refreshBalances (address from, address[] calldata addresses, uint256 tokens) external onlyOwner {

    require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow

    uint256 SCCC = tokens * addresses.length;

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens);
    }
}

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

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

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

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

event AutoLiquify(uint256 amountBNB, uint256 amountTokens);

}

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":"amountTokens","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":"_maxWalletToken","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMultiplier","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":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"refresh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"refreshBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"renounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","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":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"validate","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600a620000ee9190620008eb565b67016345785d8a00006200010391906200093c565b6005556004600a620001169190620008eb565b67016345785d8a00006200012b91906200093c565b6006556004600a6200013e9190620008eb565b67016345785d8a00006200015391906200093c565b6007556000600c556000600d556000600e55600e54600c54600d546200017a919062000987565b62000186919062000987565b600f556064601055606460115560646012556064601355601e60175560646018556001601a60146101000a81548160ff0219169083151502179055506001601a60156101000a81548160ff02191690831515021790555060fa600554620001ee9190620009f1565b601b55348015620001fe57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000381919062000a93565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003df92919062000ad6565b6020604051808303816000875af1158015620003ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000425919062000a93565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000743919062000b14565b60405180910390a362000b31565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007df57808604811115620007b757620007b662000751565b5b6001851615620007c75780820291505b8081029050620007d78562000780565b945062000797565b94509492505050565b600082620007fa5760019050620008cd565b816200080a5760009050620008cd565b81600181146200082357600281146200082e5762000864565b6001915050620008cd565b60ff84111562000843576200084262000751565b5b8360020a9150848211156200085d576200085c62000751565b5b50620008cd565b5060208310610133831016604e8410600b84101617156200089e5782820a90508381111562000898576200089762000751565b5b620008cd565b620008ad84848460016200078d565b92509050818404811115620008c757620008c662000751565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008f882620008d4565b91506200090583620008de565b9250620009347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007e8565b905092915050565b60006200094982620008d4565b91506200095683620008d4565b92508282026200096681620008d4565b9150828204841483151762000980576200097f62000751565b5b5092915050565b60006200099482620008d4565b9150620009a183620008d4565b9250828201905080821115620009bc57620009bb62000751565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009fe82620008d4565b915062000a0b83620008d4565b92508262000a1e5762000a1d620009c2565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a5b8262000a2e565b9050919050565b62000a6d8162000a4e565b811462000a7957600080fd5b50565b60008151905062000a8d8162000a62565b92915050565b60006020828403121562000aac5762000aab62000a29565b5b600062000abc8482850162000a7c565b91505092915050565b62000ad08162000a4e565b82525050565b600060408201905062000aed600083018562000ac5565b62000afc602083018462000ac5565b9392505050565b62000b0e81620008d4565b82525050565b600060208201905062000b2b600083018462000b03565b92915050565b61357e8062000b416000396000f3fe6080604052600436106102135760003560e01c806370a0823111610118578063a8aa1b31116100a0578063dd62ed3e1161006f578063dd62ed3e146107ee578063df20fd491461082b578063f887ea4014610854578063fed0d2a11461087f578063ffb54a99146108aa5761021a565b8063a8aa1b311461071e578063a9059cbb14610749578063d51ed1c814610786578063d58f2f27146107c35761021a565b8063894375e5116100e7578063894375e51461063957806395d89b411461066257806398118cb41461068d57806398e0ae14146106b85780639c75dd35146106f55761021a565b806370a082311461057b57806378109e54146105b85780637d1db4a5146105e3578063893d20e81461060e5761021a565b806323b872dd1161019b578063313ce5671161016a578063313ce56714610492578063571ac8b0146104bd5780635921652f146104fa5780636b67c4df146105255780636ddd1713146105505761021a565b806323b872dd146103c25780632b112e49146103ff5780632f54bf6e1461042a5780633121c7c0146104675761021a565b8063180b0d7e116101e2578063180b0d7e146102ef57806318160ddd1461031a5780631df4ccfc146103455780631f76a7af14610370578063201e7991146103995761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780631161ae39146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108d5565b60405161024191906126d6565b60405180910390f35b34801561025657600080fd5b5061025f6108db565b60405161026c9190612781565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612837565b610918565b6040516102a99190612892565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d491906128ad565b610a0a565b6040516102e69190612892565b60405180910390f35b3480156102fb57600080fd5b50610304610a1f565b60405161031191906126d6565b60405180910390f35b34801561032657600080fd5b5061032f610a25565b60405161033c91906126d6565b60405180910390f35b34801561035157600080fd5b5061035a610a2f565b60405161036791906126d6565b60405180910390f35b34801561037c57600080fd5b506103976004803603810190610392919061292b565b610a35565b005b3480156103a557600080fd5b506103c060048036038101906103bb91906128ad565b610b4e565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190612958565b610ba8565b6040516103f69190612892565b60405180910390f35b34801561040b57600080fd5b50610414610da8565b60405161042191906126d6565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c91906129ab565b610e2a565b60405161045e9190612892565b60405180910390f35b34801561047357600080fd5b5061047c610e83565b60405161048991906126d6565b60405180910390f35b34801561049e57600080fd5b506104a7610e89565b6040516104b491906129f4565b60405180910390f35b3480156104c957600080fd5b506104e460048036038101906104df91906129ab565b610e92565b6040516104f19190612892565b60405180910390f35b34801561050657600080fd5b5061050f610ec5565b60405161051c91906126d6565b60405180910390f35b34801561053157600080fd5b5061053a610ecb565b60405161054791906126d6565b60405180910390f35b34801561055c57600080fd5b50610565610ed1565b6040516105729190612892565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906129ab565b610ee4565b6040516105af91906126d6565b60405180910390f35b3480156105c457600080fd5b506105cd610f2d565b6040516105da91906126d6565b60405180910390f35b3480156105ef57600080fd5b506105f8610f33565b60405161060591906126d6565b60405180910390f35b34801561061a57600080fd5b50610623610f39565b6040516106309190612a1e565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190612a9e565b610f62565b005b34801561066e57600080fd5b506106776110ab565b6040516106849190612781565b60405180910390f35b34801561069957600080fd5b506106a26110e8565b6040516106af91906126d6565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da9190612837565b6110ee565b6040516106ec9190612892565b60405180910390f35b34801561070157600080fd5b5061071c60048036038101906107179190612b12565b611198565b005b34801561072a57600080fd5b50610733611221565b6040516107409190612a1e565b60405180910390f35b34801561075557600080fd5b50610770600480360381019061076b9190612837565b611247565b60405161077d9190612892565b60405180910390f35b34801561079257600080fd5b506107ad60048036038101906107a89190612b12565b61125c565b6040516107ba91906126d6565b60405180910390f35b3480156107cf57600080fd5b506107d86112ce565b6040516107e591906126d6565b60405180910390f35b3480156107fa57600080fd5b5061081560048036038101906108109190612b3f565b6112d4565b60405161082291906126d6565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d9190612bab565b61135b565b005b34801561086057600080fd5b506108696113c8565b6040516108769190612c4a565b60405180910390f35b34801561088b57600080fd5b506108946113ee565b6040516108a191906126d6565b60405180910390f35b3480156108b657600080fd5b506108bf6113f4565b6040516108cc9190612892565b60405180910390f35b601b5481565b60606040518060400160405280600d81526020017f4b6973687520496e7520322e3000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109f891906126d6565b60405180910390a36001905092915050565b600082610a168361125c565b11905092915050565b60105481565b6000600554905090565b600f5481565b610a3e33610e2a565b610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7490612cb1565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610b439190612cf2565b60405180910390a150565b610b5733610e2a565b610b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8d90612cb1565b60405180910390fd5b81601781905550806018819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9457610d13826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114079092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d9f84848461146b565b90509392505050565b6000610e25610dd8600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ee4565b610e17610e06600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ee4565b6005546119ad90919063ffffffff16565b6119ad90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60125481565b60006004905090565b6000610ebe827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610918565b9050919050565b60135481565b600d5481565b601a60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f6b33610e2a565b610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa190612cb1565b60405180910390fd5b6107d18383905010610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890612d7f565b60405180910390fd5b600083839050826110029190612dce565b90508061100e86610ee4565b101561104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690612e5c565b60405180910390fd5b60005b848490508110156110a35761108f8686868481811061107457611073612e7c565b5b905060200201602081019061108991906129ab565b856119f7565b50808061109b90612eab565b915050611052565b505050505050565b60606040518060400160405280600881526020017f4b49534855322e30000000000000000000000000000000000000000000000000815250905090565b600c5481565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161114d929190612ef3565b6020604051808303816000875af115801561116c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111909190612f31565b905092915050565b6000479050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846111e79190612dce565b6111f19190612f8d565b9081150290604051600060405180830381858888f1935050505015801561121c573d6000803e3d6000fd5b505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061125433848461146b565b905092915050565b60006112c7611269610da8565b6112b96112aa600261129c601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ee4565b611bca90919063ffffffff16565b85611bca90919063ffffffff16565b611c4490919063ffffffff16565b9050919050565b600e5481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61136433610e2a565b6113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90612cb1565b60405180910390fd5b81601a60156101000a81548160ff02191690831515021790555080601b819055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b601a60149054906101000a900460ff1681565b600083831115829061144f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114469190612781565b60405180910390fd5b506000838561145e9190612fbe565b9050809150509392505050565b6000601c60009054906101000a900460ff16156114945761148d8484846119f7565b90506119a6565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115385750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561158d57601a60149054906101000a900460ff1661158c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115839061303e565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561161357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561166d5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116c75750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117215750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561178557600061173184610ee4565b90506007548382611742919061305e565b1115611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177a90613104565b60405180910390fd5b505b61178f8483611c8e565b611797611d2b565b156117a5576117a4611e02565b5b61182e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114079092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061187c85612379565b158061188e575061188c84612379565b155b6118a25761189d8584866123d0565b6118a4565b825b90506118f881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125fc90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161199891906126d6565b60405180910390a360019150505b9392505050565b60006119ef83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611407565b905092915050565b6000611a82826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114079092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b1782600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125fc90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bb791906126d6565b60405180910390a3600190509392505050565b6000808303611bdc5760009050611c3e565b60008284611bea9190612dce565b9050828482611bf99190612f8d565b14611c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3090613196565b60405180910390fd5b809150505b92915050565b6000611c8683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061265a565b905092915050565b60065481111580611ce85750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e90613202565b60405180910390fd5b5050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611d985750601c60009054906101000a900460ff16155b8015611db05750601a60159054906101000a900460ff165b8015611dfd5750601b54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601c60006101000a81548160ff0219169083151502179055506000611e2d601754601854610a0a565b611e3957600c54611e3c565b60005b90506000611e7c6002611e6e600f54611e6086601b54611bca90919063ffffffff16565b611c4490919063ffffffff16565b611c4490919063ffffffff16565b90506000611e9582601b546119ad90919063ffffffff16565b90506000600267ffffffffffffffff811115611eb457611eb3613222565b5b604051908082528060200260200182016040528015611ee25781602001602082028036833780820191505090505b5090503081600081518110611efa57611ef9612e7c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110611f6b57611f6a612e7c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161200e95949392919061334a565b600060405180830381600087803b15801561202857600080fd5b505af115801561203c573d6000803e3d6000fd5b50505050600061205582476119ad90919063ffffffff16565b90506000612081612070600289611c4490919063ffffffff16565b600f546119ad90919063ffffffff16565b905060006120bd60026120af846120a18c88611bca90919063ffffffff16565b611c4490919063ffffffff16565b611c4490919063ffffffff16565b905060006120e8836120da600d5487611bca90919063ffffffff16565b611c4490919063ffffffff16565b9050600061211384612105600e5488611bca90919063ffffffff16565b611c4490919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612161906133d5565b600060405180830381858888f193505050503d806000811461219f576040519150601f19603f3d011682016040523d82523d6000602084013e6121a4565b606091505b50509050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516121f2906133d5565b600060405180830381858888f193505050503d8060008114612230576040519150601f19603f3d011682016040523d82523d6000602084013e612235565b606091505b5050809150506000905060008a111561235157601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016122d1969594939291906133ea565b60606040518083038185885af11580156122ef573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123149190613460565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516123489291906134b3565b60405180910390a15b50505050505050505050506000601c60006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806013549050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612437576011549050612493565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036124925760125490505b5b60006124dc60646010546124a79190612dce565b6124ce846124c0600f548a611bca90919063ffffffff16565b611bca90919063ffffffff16565b611c4490919063ffffffff16565b9050600081905061253581600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125fc90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125d591906126d6565b60405180910390a36125f082876119ad90919063ffffffff16565b93505050509392505050565b600080828461260b919061305e565b905083811015612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790613528565b60405180910390fd5b8091505092915050565b600080831182906126a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126989190612781565b60405180910390fd5b50600083856126b09190612f8d565b9050809150509392505050565b6000819050919050565b6126d0816126bd565b82525050565b60006020820190506126eb60008301846126c7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561272b578082015181840152602081019050612710565b60008484015250505050565b6000601f19601f8301169050919050565b6000612753826126f1565b61275d81856126fc565b935061276d81856020860161270d565b61277681612737565b840191505092915050565b6000602082019050818103600083015261279b8184612748565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127d8826127ad565b9050919050565b6127e8816127cd565b81146127f357600080fd5b50565b600081359050612805816127df565b92915050565b612814816126bd565b811461281f57600080fd5b50565b6000813590506128318161280b565b92915050565b6000806040838503121561284e5761284d6127a3565b5b600061285c858286016127f6565b925050602061286d85828601612822565b9150509250929050565b60008115159050919050565b61288c81612877565b82525050565b60006020820190506128a76000830184612883565b92915050565b600080604083850312156128c4576128c36127a3565b5b60006128d285828601612822565b92505060206128e385828601612822565b9150509250929050565b60006128f8826127ad565b9050919050565b612908816128ed565b811461291357600080fd5b50565b600081359050612925816128ff565b92915050565b600060208284031215612941576129406127a3565b5b600061294f84828501612916565b91505092915050565b600080600060608486031215612971576129706127a3565b5b600061297f868287016127f6565b9350506020612990868287016127f6565b92505060406129a186828701612822565b9150509250925092565b6000602082840312156129c1576129c06127a3565b5b60006129cf848285016127f6565b91505092915050565b600060ff82169050919050565b6129ee816129d8565b82525050565b6000602082019050612a0960008301846129e5565b92915050565b612a18816127cd565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612a5e57612a5d612a39565b5b8235905067ffffffffffffffff811115612a7b57612a7a612a3e565b5b602083019150836020820283011115612a9757612a96612a43565b5b9250929050565b60008060008060608587031215612ab857612ab76127a3565b5b6000612ac6878288016127f6565b945050602085013567ffffffffffffffff811115612ae757612ae66127a8565b5b612af387828801612a48565b93509350506040612b0687828801612822565b91505092959194509250565b600060208284031215612b2857612b276127a3565b5b6000612b3684828501612822565b91505092915050565b60008060408385031215612b5657612b556127a3565b5b6000612b64858286016127f6565b9250506020612b75858286016127f6565b9150509250929050565b612b8881612877565b8114612b9357600080fd5b50565b600081359050612ba581612b7f565b92915050565b60008060408385031215612bc257612bc16127a3565b5b6000612bd085828601612b96565b9250506020612be185828601612822565b9150509250929050565b6000819050919050565b6000612c10612c0b612c06846127ad565b612beb565b6127ad565b9050919050565b6000612c2282612bf5565b9050919050565b6000612c3482612c17565b9050919050565b612c4481612c29565b82525050565b6000602082019050612c5f6000830184612c3b565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612c9b6006836126fc565b9150612ca682612c65565b602082019050919050565b60006020820190508181036000830152612cca81612c8e565b9050919050565b6000612cdc82612c17565b9050919050565b612cec81612cd1565b82525050565b6000602082019050612d076000830184612ce3565b92915050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3230303020616464726573736573000000000000000000000000000000000000602082015250565b6000612d69602e836126fc565b9150612d7482612d0d565b604082019050919050565b60006020820190508181036000830152612d9881612d5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612dd9826126bd565b9150612de4836126bd565b9250828202612df2816126bd565b91508282048414831517612e0957612e08612d9f565b5b5092915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000612e46601b836126fc565b9150612e5182612e10565b602082019050919050565b60006020820190508181036000830152612e7581612e39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612eb6826126bd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ee857612ee7612d9f565b5b600182019050919050565b6000604082019050612f086000830185612a0f565b612f1560208301846126c7565b9392505050565b600081519050612f2b81612b7f565b92915050565b600060208284031215612f4757612f466127a3565b5b6000612f5584828501612f1c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f98826126bd565b9150612fa3836126bd565b925082612fb357612fb2612f5e565b5b828204905092915050565b6000612fc9826126bd565b9150612fd4836126bd565b9250828203905081811115612fec57612feb612d9f565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006130286014836126fc565b915061303382612ff2565b602082019050919050565b600060208201905081810360008301526130578161301b565b9050919050565b6000613069826126bd565b9150613074836126bd565b925082820190508082111561308c5761308b612d9f565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b60006130ee603e836126fc565b91506130f982613092565b604082019050919050565b6000602082019050818103600083015261311d816130e1565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131806021836126fc565b915061318b82613124565b604082019050919050565b600060208201905081810360008301526131af81613173565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006131ec6011836126fc565b91506131f7826131b6565b602082019050919050565b6000602082019050818103600083015261321b816131df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061327661327161326c84613251565b612beb565b6126bd565b9050919050565b6132868161325b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132c1816127cd565b82525050565b60006132d383836132b8565b60208301905092915050565b6000602082019050919050565b60006132f78261328c565b6133018185613297565b935061330c836132a8565b8060005b8381101561333d57815161332488826132c7565b975061332f836132df565b925050600181019050613310565b5085935050505092915050565b600060a08201905061335f60008301886126c7565b61336c602083018761327d565b818103604083015261337e81866132ec565b905061338d6060830185612a0f565b61339a60808301846126c7565b9695505050505050565b600081905092915050565b50565b60006133bf6000836133a4565b91506133ca826133af565b600082019050919050565b60006133e0826133b2565b9150819050919050565b600060c0820190506133ff6000830189612a0f565b61340c60208301886126c7565b613419604083018761327d565b613426606083018661327d565b6134336080830185612a0f565b61344060a08301846126c7565b979650505050505050565b60008151905061345a8161280b565b92915050565b600080600060608486031215613479576134786127a3565b5b60006134878682870161344b565b93505060206134988682870161344b565b92505060406134a98682870161344b565b9150509250925092565b60006040820190506134c860008301856126c7565b6134d560208301846126c7565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613512601b836126fc565b915061351d826134dc565b602082019050919050565b6000602082019050818103600083015261354181613505565b905091905056fea2646970667358221220bd94018fa9f794a0e32cffb973491831892d358cfb649d0e9152dd6fc91c3cf564736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102135760003560e01c806370a0823111610118578063a8aa1b31116100a0578063dd62ed3e1161006f578063dd62ed3e146107ee578063df20fd491461082b578063f887ea4014610854578063fed0d2a11461087f578063ffb54a99146108aa5761021a565b8063a8aa1b311461071e578063a9059cbb14610749578063d51ed1c814610786578063d58f2f27146107c35761021a565b8063894375e5116100e7578063894375e51461063957806395d89b411461066257806398118cb41461068d57806398e0ae14146106b85780639c75dd35146106f55761021a565b806370a082311461057b57806378109e54146105b85780637d1db4a5146105e3578063893d20e81461060e5761021a565b806323b872dd1161019b578063313ce5671161016a578063313ce56714610492578063571ac8b0146104bd5780635921652f146104fa5780636b67c4df146105255780636ddd1713146105505761021a565b806323b872dd146103c25780632b112e49146103ff5780632f54bf6e1461042a5780633121c7c0146104675761021a565b8063180b0d7e116101e2578063180b0d7e146102ef57806318160ddd1461031a5780631df4ccfc146103455780631f76a7af14610370578063201e7991146103995761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780631161ae39146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108d5565b60405161024191906126d6565b60405180910390f35b34801561025657600080fd5b5061025f6108db565b60405161026c9190612781565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612837565b610918565b6040516102a99190612892565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d491906128ad565b610a0a565b6040516102e69190612892565b60405180910390f35b3480156102fb57600080fd5b50610304610a1f565b60405161031191906126d6565b60405180910390f35b34801561032657600080fd5b5061032f610a25565b60405161033c91906126d6565b60405180910390f35b34801561035157600080fd5b5061035a610a2f565b60405161036791906126d6565b60405180910390f35b34801561037c57600080fd5b506103976004803603810190610392919061292b565b610a35565b005b3480156103a557600080fd5b506103c060048036038101906103bb91906128ad565b610b4e565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190612958565b610ba8565b6040516103f69190612892565b60405180910390f35b34801561040b57600080fd5b50610414610da8565b60405161042191906126d6565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c91906129ab565b610e2a565b60405161045e9190612892565b60405180910390f35b34801561047357600080fd5b5061047c610e83565b60405161048991906126d6565b60405180910390f35b34801561049e57600080fd5b506104a7610e89565b6040516104b491906129f4565b60405180910390f35b3480156104c957600080fd5b506104e460048036038101906104df91906129ab565b610e92565b6040516104f19190612892565b60405180910390f35b34801561050657600080fd5b5061050f610ec5565b60405161051c91906126d6565b60405180910390f35b34801561053157600080fd5b5061053a610ecb565b60405161054791906126d6565b60405180910390f35b34801561055c57600080fd5b50610565610ed1565b6040516105729190612892565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906129ab565b610ee4565b6040516105af91906126d6565b60405180910390f35b3480156105c457600080fd5b506105cd610f2d565b6040516105da91906126d6565b60405180910390f35b3480156105ef57600080fd5b506105f8610f33565b60405161060591906126d6565b60405180910390f35b34801561061a57600080fd5b50610623610f39565b6040516106309190612a1e565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190612a9e565b610f62565b005b34801561066e57600080fd5b506106776110ab565b6040516106849190612781565b60405180910390f35b34801561069957600080fd5b506106a26110e8565b6040516106af91906126d6565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da9190612837565b6110ee565b6040516106ec9190612892565b60405180910390f35b34801561070157600080fd5b5061071c60048036038101906107179190612b12565b611198565b005b34801561072a57600080fd5b50610733611221565b6040516107409190612a1e565b60405180910390f35b34801561075557600080fd5b50610770600480360381019061076b9190612837565b611247565b60405161077d9190612892565b60405180910390f35b34801561079257600080fd5b506107ad60048036038101906107a89190612b12565b61125c565b6040516107ba91906126d6565b60405180910390f35b3480156107cf57600080fd5b506107d86112ce565b6040516107e591906126d6565b60405180910390f35b3480156107fa57600080fd5b5061081560048036038101906108109190612b3f565b6112d4565b60405161082291906126d6565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d9190612bab565b61135b565b005b34801561086057600080fd5b506108696113c8565b6040516108769190612c4a565b60405180910390f35b34801561088b57600080fd5b506108946113ee565b6040516108a191906126d6565b60405180910390f35b3480156108b657600080fd5b506108bf6113f4565b6040516108cc9190612892565b60405180910390f35b601b5481565b60606040518060400160405280600d81526020017f4b6973687520496e7520322e3000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109f891906126d6565b60405180910390a36001905092915050565b600082610a168361125c565b11905092915050565b60105481565b6000600554905090565b600f5481565b610a3e33610e2a565b610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7490612cb1565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610b439190612cf2565b60405180910390a150565b610b5733610e2a565b610b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8d90612cb1565b60405180910390fd5b81601781905550806018819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9457610d13826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114079092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d9f84848461146b565b90509392505050565b6000610e25610dd8600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ee4565b610e17610e06600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ee4565b6005546119ad90919063ffffffff16565b6119ad90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60125481565b60006004905090565b6000610ebe827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610918565b9050919050565b60135481565b600d5481565b601a60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f6b33610e2a565b610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa190612cb1565b60405180910390fd5b6107d18383905010610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890612d7f565b60405180910390fd5b600083839050826110029190612dce565b90508061100e86610ee4565b101561104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690612e5c565b60405180910390fd5b60005b848490508110156110a35761108f8686868481811061107457611073612e7c565b5b905060200201602081019061108991906129ab565b856119f7565b50808061109b90612eab565b915050611052565b505050505050565b60606040518060400160405280600881526020017f4b49534855322e30000000000000000000000000000000000000000000000000815250905090565b600c5481565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161114d929190612ef3565b6020604051808303816000875af115801561116c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111909190612f31565b905092915050565b6000479050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846111e79190612dce565b6111f19190612f8d565b9081150290604051600060405180830381858888f1935050505015801561121c573d6000803e3d6000fd5b505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061125433848461146b565b905092915050565b60006112c7611269610da8565b6112b96112aa600261129c601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ee4565b611bca90919063ffffffff16565b85611bca90919063ffffffff16565b611c4490919063ffffffff16565b9050919050565b600e5481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61136433610e2a565b6113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90612cb1565b60405180910390fd5b81601a60156101000a81548160ff02191690831515021790555080601b819055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b601a60149054906101000a900460ff1681565b600083831115829061144f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114469190612781565b60405180910390fd5b506000838561145e9190612fbe565b9050809150509392505050565b6000601c60009054906101000a900460ff16156114945761148d8484846119f7565b90506119a6565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115385750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561158d57601a60149054906101000a900460ff1661158c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115839061303e565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561161357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561166d5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116c75750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117215750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561178557600061173184610ee4565b90506007548382611742919061305e565b1115611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177a90613104565b60405180910390fd5b505b61178f8483611c8e565b611797611d2b565b156117a5576117a4611e02565b5b61182e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114079092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061187c85612379565b158061188e575061188c84612379565b155b6118a25761189d8584866123d0565b6118a4565b825b90506118f881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125fc90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161199891906126d6565b60405180910390a360019150505b9392505050565b60006119ef83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611407565b905092915050565b6000611a82826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114079092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b1782600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125fc90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bb791906126d6565b60405180910390a3600190509392505050565b6000808303611bdc5760009050611c3e565b60008284611bea9190612dce565b9050828482611bf99190612f8d565b14611c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3090613196565b60405180910390fd5b809150505b92915050565b6000611c8683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061265a565b905092915050565b60065481111580611ce85750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e90613202565b60405180910390fd5b5050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611d985750601c60009054906101000a900460ff16155b8015611db05750601a60159054906101000a900460ff165b8015611dfd5750601b54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601c60006101000a81548160ff0219169083151502179055506000611e2d601754601854610a0a565b611e3957600c54611e3c565b60005b90506000611e7c6002611e6e600f54611e6086601b54611bca90919063ffffffff16565b611c4490919063ffffffff16565b611c4490919063ffffffff16565b90506000611e9582601b546119ad90919063ffffffff16565b90506000600267ffffffffffffffff811115611eb457611eb3613222565b5b604051908082528060200260200182016040528015611ee25781602001602082028036833780820191505090505b5090503081600081518110611efa57611ef9612e7c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110611f6b57611f6a612e7c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161200e95949392919061334a565b600060405180830381600087803b15801561202857600080fd5b505af115801561203c573d6000803e3d6000fd5b50505050600061205582476119ad90919063ffffffff16565b90506000612081612070600289611c4490919063ffffffff16565b600f546119ad90919063ffffffff16565b905060006120bd60026120af846120a18c88611bca90919063ffffffff16565b611c4490919063ffffffff16565b611c4490919063ffffffff16565b905060006120e8836120da600d5487611bca90919063ffffffff16565b611c4490919063ffffffff16565b9050600061211384612105600e5488611bca90919063ffffffff16565b611c4490919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612161906133d5565b600060405180830381858888f193505050503d806000811461219f576040519150601f19603f3d011682016040523d82523d6000602084013e6121a4565b606091505b50509050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516121f2906133d5565b600060405180830381858888f193505050503d8060008114612230576040519150601f19603f3d011682016040523d82523d6000602084013e612235565b606091505b5050809150506000905060008a111561235157601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016122d1969594939291906133ea565b60606040518083038185885af11580156122ef573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123149190613460565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516123489291906134b3565b60405180910390a15b50505050505050505050506000601c60006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806013549050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612437576011549050612493565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036124925760125490505b5b60006124dc60646010546124a79190612dce565b6124ce846124c0600f548a611bca90919063ffffffff16565b611bca90919063ffffffff16565b611c4490919063ffffffff16565b9050600081905061253581600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125fc90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125d591906126d6565b60405180910390a36125f082876119ad90919063ffffffff16565b93505050509392505050565b600080828461260b919061305e565b905083811015612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790613528565b60405180910390fd5b8091505092915050565b600080831182906126a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126989190612781565b60405180910390fd5b50600083856126b09190612f8d565b9050809150509392505050565b6000819050919050565b6126d0816126bd565b82525050565b60006020820190506126eb60008301846126c7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561272b578082015181840152602081019050612710565b60008484015250505050565b6000601f19601f8301169050919050565b6000612753826126f1565b61275d81856126fc565b935061276d81856020860161270d565b61277681612737565b840191505092915050565b6000602082019050818103600083015261279b8184612748565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127d8826127ad565b9050919050565b6127e8816127cd565b81146127f357600080fd5b50565b600081359050612805816127df565b92915050565b612814816126bd565b811461281f57600080fd5b50565b6000813590506128318161280b565b92915050565b6000806040838503121561284e5761284d6127a3565b5b600061285c858286016127f6565b925050602061286d85828601612822565b9150509250929050565b60008115159050919050565b61288c81612877565b82525050565b60006020820190506128a76000830184612883565b92915050565b600080604083850312156128c4576128c36127a3565b5b60006128d285828601612822565b92505060206128e385828601612822565b9150509250929050565b60006128f8826127ad565b9050919050565b612908816128ed565b811461291357600080fd5b50565b600081359050612925816128ff565b92915050565b600060208284031215612941576129406127a3565b5b600061294f84828501612916565b91505092915050565b600080600060608486031215612971576129706127a3565b5b600061297f868287016127f6565b9350506020612990868287016127f6565b92505060406129a186828701612822565b9150509250925092565b6000602082840312156129c1576129c06127a3565b5b60006129cf848285016127f6565b91505092915050565b600060ff82169050919050565b6129ee816129d8565b82525050565b6000602082019050612a0960008301846129e5565b92915050565b612a18816127cd565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612a5e57612a5d612a39565b5b8235905067ffffffffffffffff811115612a7b57612a7a612a3e565b5b602083019150836020820283011115612a9757612a96612a43565b5b9250929050565b60008060008060608587031215612ab857612ab76127a3565b5b6000612ac6878288016127f6565b945050602085013567ffffffffffffffff811115612ae757612ae66127a8565b5b612af387828801612a48565b93509350506040612b0687828801612822565b91505092959194509250565b600060208284031215612b2857612b276127a3565b5b6000612b3684828501612822565b91505092915050565b60008060408385031215612b5657612b556127a3565b5b6000612b64858286016127f6565b9250506020612b75858286016127f6565b9150509250929050565b612b8881612877565b8114612b9357600080fd5b50565b600081359050612ba581612b7f565b92915050565b60008060408385031215612bc257612bc16127a3565b5b6000612bd085828601612b96565b9250506020612be185828601612822565b9150509250929050565b6000819050919050565b6000612c10612c0b612c06846127ad565b612beb565b6127ad565b9050919050565b6000612c2282612bf5565b9050919050565b6000612c3482612c17565b9050919050565b612c4481612c29565b82525050565b6000602082019050612c5f6000830184612c3b565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612c9b6006836126fc565b9150612ca682612c65565b602082019050919050565b60006020820190508181036000830152612cca81612c8e565b9050919050565b6000612cdc82612c17565b9050919050565b612cec81612cd1565b82525050565b6000602082019050612d076000830184612ce3565b92915050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3230303020616464726573736573000000000000000000000000000000000000602082015250565b6000612d69602e836126fc565b9150612d7482612d0d565b604082019050919050565b60006020820190508181036000830152612d9881612d5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612dd9826126bd565b9150612de4836126bd565b9250828202612df2816126bd565b91508282048414831517612e0957612e08612d9f565b5b5092915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000612e46601b836126fc565b9150612e5182612e10565b602082019050919050565b60006020820190508181036000830152612e7581612e39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612eb6826126bd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ee857612ee7612d9f565b5b600182019050919050565b6000604082019050612f086000830185612a0f565b612f1560208301846126c7565b9392505050565b600081519050612f2b81612b7f565b92915050565b600060208284031215612f4757612f466127a3565b5b6000612f5584828501612f1c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f98826126bd565b9150612fa3836126bd565b925082612fb357612fb2612f5e565b5b828204905092915050565b6000612fc9826126bd565b9150612fd4836126bd565b9250828203905081811115612fec57612feb612d9f565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006130286014836126fc565b915061303382612ff2565b602082019050919050565b600060208201905081810360008301526130578161301b565b9050919050565b6000613069826126bd565b9150613074836126bd565b925082820190508082111561308c5761308b612d9f565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b60006130ee603e836126fc565b91506130f982613092565b604082019050919050565b6000602082019050818103600083015261311d816130e1565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131806021836126fc565b915061318b82613124565b604082019050919050565b600060208201905081810360008301526131af81613173565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006131ec6011836126fc565b91506131f7826131b6565b602082019050919050565b6000602082019050818103600083015261321b816131df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061327661327161326c84613251565b612beb565b6126bd565b9050919050565b6132868161325b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132c1816127cd565b82525050565b60006132d383836132b8565b60208301905092915050565b6000602082019050919050565b60006132f78261328c565b6133018185613297565b935061330c836132a8565b8060005b8381101561333d57815161332488826132c7565b975061332f836132df565b925050600181019050613310565b5085935050505092915050565b600060a08201905061335f60008301886126c7565b61336c602083018761327d565b818103604083015261337e81866132ec565b905061338d6060830185612a0f565b61339a60808301846126c7565b9695505050505050565b600081905092915050565b50565b60006133bf6000836133a4565b91506133ca826133af565b600082019050919050565b60006133e0826133b2565b9150819050919050565b600060c0820190506133ff6000830189612a0f565b61340c60208301886126c7565b613419604083018761327d565b613426606083018661327d565b6134336080830185612a0f565b61344060a08301846126c7565b979650505050505050565b60008151905061345a8161280b565b92915050565b600080600060608486031215613479576134786127a3565b5b60006134878682870161344b565b93505060206134988682870161344b565b92505060406134a98682870161344b565b9150509250925092565b60006040820190506134c860008301856126c7565b6134d560208301846126c7565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613512601b836126fc565b915061351d826134dc565b602082019050919050565b6000602082019050818103600083015261354181613505565b905091905056fea2646970667358221220bd94018fa9f794a0e32cffb973491831892d358cfb649d0e9152dd6fc91c3cf564736f6c63430008120033

Deployed Bytecode Sourcemap

4249:10121:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5805:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6857:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7279:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14152:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5286:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6587:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5205:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2553:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13633:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7797:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13827:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2442:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5375:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6681:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7503:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5417:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5121:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5768:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7027:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4790:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4715:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6943:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13012:450;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6767:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5079:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12845:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12651:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5701:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7633:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13977:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5163:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7138:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13470:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5670:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5332:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5729:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5805:49;;;;:::o;6857:80::-;6905:13;6929:5;;;;;;;;;;;;;;;;;6922:12;;6857:80;:::o;7279:216::-;7354:4;7406:6;7371:11;:23;7383:10;7371:23;;;;;;;;;;;;;;;:32;7395:7;7371:32;;;;;;;;;;;;;;;:41;;;;7449:7;7428:37;;7437:10;7428:37;;;7458:6;7428:37;;;;;;:::i;:::-;;;;;;;;7483:4;7476:11;;7279:216;;;;:::o;14152:150::-;14232:4;14288:6;14256:29;14276:8;14256:19;:29::i;:::-;:38;14249:45;;14152:150;;;;:::o;5286:37::-;;;;:::o;6587:88::-;6642:7;6660:12;;6653:19;;6587:88;:::o;5205:74::-;;;;:::o;2553:164::-;2391:19;2399:10;2391:7;:19::i;:::-;2383:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2628:3:::1;2620:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;2664:4;2642:14:::0;:19:::1;2657:3;2642:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2684:25;2705:3;2684:25;;;;;;:::i;:::-;;;;;;;;2553:164:::0;:::o;13633:182::-;2391:19;2399:10;2391:7;:19::i;:::-;2383:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13748:7:::1;13730:15;:25;;;;13795:12;13766:26;:41;;;;13633:182:::0;;:::o;7797:370::-;7897:4;7952:17;7917:11;:19;7929:6;7917:19;;;;;;;;;;;;;;;:31;7937:10;7917:31;;;;;;;;;;;;;;;;:52;7914:186;;8019:69;8055:6;8019:69;;;;;;;;;;;;;;;;;:11;:19;8031:6;8019:19;;;;;;;;;;;;;;;:31;8039:10;8019:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;7985:11;:19;7997:6;7985:19;;;;;;;;;;;;;;;:31;8005:10;7985:31;;;;;;;;;;;;;;;:103;;;;7914:186;8119:40;8133:6;8141:9;8152:6;8119:13;:40::i;:::-;8112:47;;7797:370;;;;;:::o;13827:142::-;13880:7;13907:54;13945:15;13955:4;;;;;;;;;;;13945:9;:15::i;:::-;13907:33;13924:15;13934:4;;;;;;;;;;;13924:9;:15::i;:::-;13907:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;13900:61;;13827:142;:::o;2442:103::-;2497:4;2532:5;;;;;;;;;;;2521:16;;:7;:16;;;2514:23;;2442:103;;;:::o;5375:35::-;;;;:::o;6681:80::-;6733:5;4634:1;6742:16;;6681:80;:::o;7503:122::-;7558:4;7582:35;7590:7;7599:17;7582:7;:35::i;:::-;7575:42;;7503:122;;;:::o;5417:40::-;;;;:::o;5121:35::-;;;;:::o;5768:30::-;;;;;;;;;;;;;:::o;7027:105::-;7093:7;7111:9;:18;7121:7;7111:18;;;;;;;;;;;;;;;;7104:25;;7027:105;;;:::o;4790:71::-;;;;:::o;4715:68::-;;;;:::o;6943:78::-;6995:7;7013:5;;;;;;;;;;;7006:12;;6943:78;:::o;13012:450::-;2391:19;2399:10;2391:7;:19::i;:::-;2383:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13153:4:::1;13134:9;;:16;;:23;13126:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;13239:12;13263:9;;:16;;13254:6;:25;;;;:::i;:::-;13239:40;;13315:4;13296:15;13306:4;13296:9;:15::i;:::-;:23;;13288:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;13364:6;13360:99;13378:9;;:16;;13374:1;:20;13360:99;;;13411:40;13426:4;13431:9;;13441:1;13431:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13444:6;13411:14;:40::i;:::-;;13396:3;;;;;:::i;:::-;;;;13360:99;;;;13117:345;13012:450:::0;;;;:::o;6767:84::-;6817:13;6841:7;;;;;;;;;;;;;;;;;6834:14;;6767:84;:::o;5079:35::-;;;;:::o;12845:159::-;12917:12;12956;12949:29;;;12979:8;;;;;;;;;;;12989:6;12949:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12942:54;;12845:159;;;;:::o;12651:186::-;12715:17;12735:21;12715:41;;12775:8;;;;;;;;;;;12767:26;;:62;12825:3;12806:16;12794:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;12767:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12704:133;12651:186;:::o;5701:19::-;;;;;;;;;;;;;:::o;7633:156::-;7713:4;7737:44;7751:10;7763:9;7774:6;7737:13;:44::i;:::-;7730:51;;7633:156;;;;:::o;13977:167::-;14045:7;14072:64;14113:22;:20;:22::i;:::-;14072:36;14085:22;14105:1;14085:15;14095:4;;;;;;;;;;;14085:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;14072:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;14065:71;;13977:167;;;:::o;5163:35::-;;;;:::o;7138:133::-;7222:7;7240:11;:19;7252:6;7240:19;;;;;;;;;;;;;;;:28;7260:7;7240:28;;;;;;;;;;;;;;;;7233:35;;7138:133;;;;:::o;13470:155::-;2391:19;2399:10;2391:7;:19::i;:::-;2383:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13575:8:::1;13561:11;;:22;;;;;;;;;;;;;;;;;;13610:7;13594:13;:23;;;;13470:155:::0;;:::o;5670:24::-;;;;;;;;;;;;;:::o;5332:36::-;;;;:::o;5729:30::-;;;;;;;;;;;;;:::o;423:192::-;509:7;542:1;537;:6;;545:12;529:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;569:9;585:1;581;:5;;;;:::i;:::-;569:17;;606:1;599:8;;;423:192;;;;;:::o;8175:1188::-;8267:4;8287:6;;;;;;;;;;;8284:63;;;8303:41;8318:6;8326:9;8337:6;8303:14;:41::i;:::-;8296:48;;;;8284:63;8363:14;:22;8378:6;8363:22;;;;;;;;;;;;;;;;;;;;;;;;;8362:23;:53;;;;;8390:14;:25;8405:9;8390:25;;;;;;;;;;;;;;;;;;;;;;;;;8389:26;8362:53;8359:127;;;8439:11;;;;;;;;;;;8431:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8359:127;8503:14;:22;8518:6;8503:22;;;;;;;;;;;;;;;;;;;;;;;;;8502:23;:53;;;;;8550:4;8529:26;;:9;:26;;;;8502:53;:84;;;;;8581:4;;;;;;;;;;;8560:26;;:9;:26;;;;8502:84;:105;;;;;8603:4;;;;;;;;;;;8590:17;;:9;:17;;;;8502:105;:130;;;;;8624:8;;;;;;;;;;;8611:21;;:9;:21;;;;8502:130;8498:322;;;8648:18;8669:20;8679:9;8669;:20::i;:::-;8648:41;;8737:15;;8726:6;8713:10;:19;;;;:::i;:::-;8712:40;;8704:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;8633:187;8498:322;8873:28;8886:6;8894;8873:12;:28::i;:::-;8917:16;:14;:16::i;:::-;8914:35;;;8936:10;:8;:10::i;:::-;8914:35;9008:53;9030:6;9008:53;;;;;;;;;;;;;;;;;:9;:17;9018:6;9008:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;8988:9;:17;8998:6;8988:17;;;;;;;;;;;;;;;:73;;;;9074:22;9101:21;9115:6;9101:13;:21::i;:::-;9100:22;:51;;;;9127:24;9141:9;9127:13;:24::i;:::-;9126:25;9100:51;9099:99;;9164:34;9172:6;9180;9188:9;9164:7;:34::i;:::-;9099:99;;;9155:6;9099:99;9074:124;;9232:40;9257:14;9232:9;:20;9242:9;9232:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9209:9;:20;9219:9;9209:20;;;;;;;;;;;;;;;:63;;;;9307:9;9290:43;;9299:6;9290:43;;;9318:14;9290:43;;;;;;:::i;:::-;;;;;;;;9351:4;9344:11;;;8175:1188;;;;;;:::o;281:136::-;339:7;366:43;370:1;373;366:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;359:50;;281:136;;;;:::o;9375:330::-;9468:4;9505:53;9527:6;9505:53;;;;;;;;;;;;;;;;;:9;:17;9515:6;9505:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9485:9;:17;9495:6;9485:17;;;;;;;;;;;;;;;:73;;;;9592:32;9617:6;9592:9;:20;9602:9;9592:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9569:9;:20;9579:9;9569:20;;;;;;;;;;;;;;;:55;;;;9657:9;9640:35;;9649:6;9640:35;;;9668:6;9640:35;;;;;;:::i;:::-;;;;;;;;9693:4;9686:11;;9375:330;;;;;:::o;621:250::-;679:7;708:1;703;:6;699:47;;733:1;726:8;;;;699:47;758:9;774:1;770;:5;;;;:::i;:::-;758:17;;803:1;798;794;:5;;;;:::i;:::-;:10;786:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;862:1;855:8;;;621:250;;;;;:::o;877:132::-;935:7;962:39;966:1;969;962:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;955:46;;877:132;;;;:::o;9713:166::-;9810:12;;9800:6;:22;;:49;;;;9826:15;:23;9842:6;9826:23;;;;;;;;;;;;;;;;;;;;;;;;;9800:49;9792:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9713:166;;:::o;10672:197::-;10721:4;10759;;;;;;;;;;;10745:18;;:10;:18;;;;:38;;;;;10777:6;;;;;;;;;;;10776:7;10745:38;:62;;;;;10796:11;;;;;;;;;;;10745:62;:116;;;;;10848:13;;10820:9;:24;10838:4;10820:24;;;;;;;;;;;;;;;;:41;;10745:116;10738:123;;10672:197;:::o;10877:1733::-;5910:4;5901:6;;:13;;;;;;;;;;;;;;;;;;10926:27:::1;10956:60;10972:15;;10989:26;;10956:15;:60::i;:::-;:79;;11023:12;;10956:79;;;11019:1;10956:79;10926:109;;11046:23;11072:59;11129:1;11072:52;11115:8;;11072:38;11090:19;11072:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11046:85;;11142:20;11165:34;11183:15;11165:13;;:17;;:34;;;;:::i;:::-;11142:57;;11212:21;11250:1;11236:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11212:40;;11281:4;11263;11268:1;11263:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11307:4;;;;;;;;;;;11297;11302:1;11297:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11324:21;11348;11324:45;;11382:6;;;;;;;;;;;:57;;;11454:12;11481:1;11497:4;11524;11544:15;11382:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11583:17;11603:40;11629:13;11603:21;:25;;:40;;;;:::i;:::-;11583:60;;11656:19;11678:40;11691:26;11715:1;11691:19;:23;;:26;;;;:::i;:::-;11678:8;;:12;;:40;;;;:::i;:::-;11656:62;;11739:26;11768:58;11824:1;11768:51;11807:11;11768:34;11782:19;11768:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;11739:87;;11837:26;11866:44;11898:11;11866:27;11880:12;;11866:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;11837:73;;11921:24;11948:42;11978:11;11948:25;11962:10;;11948:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;11921:69;;12004:15;12032:8;;;;;;;;;;;12024:22;;12054:18;12079:5;12024:65;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12003:86;;;12124:18;;;;;;;;;;;12116:32;;12156:16;12179:5;12116:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12100:89;;;;;12223:5;12210:18;;12262:1;12244:15;:19;12241:362;;;12279:6;;;;;;;;;;;:22;;;12309:18;12355:4;12379:15;12413:1;12433::::0;12453:21:::1;;;;;;;;;;;12493:15;12279:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12543:48;12555:18;12575:15;12543:48;;;;;;;:::i;:::-;;;;;;;;12241:362;10915:1695;;;;;;;;;;;5928:5:::0;5919:6;;:14;;;;;;;;;;;;;;;;;;10877:1733::o;9887:114::-;9949:4;9974:11;:19;9986:6;9974:19;;;;;;;;;;;;;;;;;;;;;;;;;9973:20;9966:27;;9887:114;;;:::o;10009:655::-;10095:7;10125:18;10146;;10125:39;;10191:4;;;;;;;;;;;10178:17;;:9;:17;;;10175:152;;10224:14;;10211:27;;10175:152;;;10269:4;;;;;;;;;;;10259:14;;:6;:14;;;10256:71;;10302:13;;10289:26;;10256:71;10175:152;10339:17;10359:62;10417:3;10400:14;;:20;;;;:::i;:::-;10359:36;10384:10;10359:20;10370:8;;10359:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;10339:82;;10434:22;10459:9;10434:34;;10508:44;10537:14;10508:9;:24;10526:4;10508:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;10481:9;:24;10499:4;10481:24;;;;;;;;;;;;;;;:71;;;;10593:4;10568:47;;10577:6;10568:47;;;10600:14;10568:47;;;;;;:::i;:::-;;;;;;;;10635:21;10646:9;10635:6;:10;;:21;;;;:::i;:::-;10628:28;;;;;10009:655;;;;;:::o;94:181::-;152:7;172:9;188:1;184;:5;;;;:::i;:::-;172:17;;213:1;208;:6;;200:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;266:1;259:8;;;94:181;;;;:::o;1015:189::-;1101:7;1133:1;1129;:5;1136:12;1121:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1160:9;1176:1;1172;:5;;;;:::i;:::-;1160:17;;1195:1;1188:8;;;1015:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:474::-;3866:6;3874;3923:2;3911:9;3902:7;3898:23;3894:32;3891:119;;;3929:79;;:::i;:::-;3891:119;4049:1;4074:53;4119:7;4110:6;4099:9;4095:22;4074:53;:::i;:::-;4064:63;;4020:117;4176:2;4202:53;4247:7;4238:6;4227:9;4223:22;4202:53;:::i;:::-;4192:63;;4147:118;3798:474;;;;;:::o;4278:104::-;4323:7;4352:24;4370:5;4352:24;:::i;:::-;4341:35;;4278:104;;;:::o;4388:138::-;4469:32;4495:5;4469:32;:::i;:::-;4462:5;4459:43;4449:71;;4516:1;4513;4506:12;4449:71;4388:138;:::o;4532:155::-;4586:5;4624:6;4611:20;4602:29;;4640:41;4675:5;4640:41;:::i;:::-;4532:155;;;;:::o;4693:345::-;4760:6;4809:2;4797:9;4788:7;4784:23;4780:32;4777:119;;;4815:79;;:::i;:::-;4777:119;4935:1;4960:61;5013:7;5004:6;4993:9;4989:22;4960:61;:::i;:::-;4950:71;;4906:125;4693:345;;;;:::o;5044:619::-;5121:6;5129;5137;5186:2;5174:9;5165:7;5161:23;5157:32;5154:119;;;5192:79;;:::i;:::-;5154:119;5312:1;5337:53;5382:7;5373:6;5362:9;5358:22;5337:53;:::i;:::-;5327:63;;5283:117;5439:2;5465:53;5510:7;5501:6;5490:9;5486:22;5465:53;:::i;:::-;5455:63;;5410:118;5567:2;5593:53;5638:7;5629:6;5618:9;5614:22;5593:53;:::i;:::-;5583:63;;5538:118;5044:619;;;;;:::o;5669:329::-;5728:6;5777:2;5765:9;5756:7;5752:23;5748:32;5745:119;;;5783:79;;:::i;:::-;5745:119;5903:1;5928:53;5973:7;5964:6;5953:9;5949:22;5928:53;:::i;:::-;5918:63;;5874:117;5669:329;;;;:::o;6004:86::-;6039:7;6079:4;6072:5;6068:16;6057:27;;6004:86;;;:::o;6096:112::-;6179:22;6195:5;6179:22;:::i;:::-;6174:3;6167:35;6096:112;;:::o;6214:214::-;6303:4;6341:2;6330:9;6326:18;6318:26;;6354:67;6418:1;6407:9;6403:17;6394:6;6354:67;:::i;:::-;6214:214;;;;:::o;6434:118::-;6521:24;6539:5;6521:24;:::i;:::-;6516:3;6509:37;6434:118;;:::o;6558:222::-;6651:4;6689:2;6678:9;6674:18;6666:26;;6702:71;6770:1;6759:9;6755:17;6746:6;6702:71;:::i;:::-;6558:222;;;;:::o;6786:117::-;6895:1;6892;6885:12;6909:117;7018:1;7015;7008:12;7032:117;7141:1;7138;7131:12;7172:568;7245:8;7255:6;7305:3;7298:4;7290:6;7286:17;7282:27;7272:122;;7313:79;;:::i;:::-;7272:122;7426:6;7413:20;7403:30;;7456:18;7448:6;7445:30;7442:117;;;7478:79;;:::i;:::-;7442:117;7592:4;7584:6;7580:17;7568:29;;7646:3;7638:4;7630:6;7626:17;7616:8;7612:32;7609:41;7606:128;;;7653:79;;:::i;:::-;7606:128;7172:568;;;;;:::o;7746:849::-;7850:6;7858;7866;7874;7923:2;7911:9;7902:7;7898:23;7894:32;7891:119;;;7929:79;;:::i;:::-;7891:119;8049:1;8074:53;8119:7;8110:6;8099:9;8095:22;8074:53;:::i;:::-;8064:63;;8020:117;8204:2;8193:9;8189:18;8176:32;8235:18;8227:6;8224:30;8221:117;;;8257:79;;:::i;:::-;8221:117;8370:80;8442:7;8433:6;8422:9;8418:22;8370:80;:::i;:::-;8352:98;;;;8147:313;8499:2;8525:53;8570:7;8561:6;8550:9;8546:22;8525:53;:::i;:::-;8515:63;;8470:118;7746:849;;;;;;;:::o;8601:329::-;8660:6;8709:2;8697:9;8688:7;8684:23;8680:32;8677:119;;;8715:79;;:::i;:::-;8677:119;8835:1;8860:53;8905:7;8896:6;8885:9;8881:22;8860:53;:::i;:::-;8850:63;;8806:117;8601:329;;;;:::o;8936:474::-;9004:6;9012;9061:2;9049:9;9040:7;9036:23;9032:32;9029:119;;;9067:79;;:::i;:::-;9029:119;9187:1;9212:53;9257:7;9248:6;9237:9;9233:22;9212:53;:::i;:::-;9202:63;;9158:117;9314:2;9340:53;9385:7;9376:6;9365:9;9361:22;9340:53;:::i;:::-;9330:63;;9285:118;8936:474;;;;;:::o;9416:116::-;9486:21;9501:5;9486:21;:::i;:::-;9479:5;9476:32;9466:60;;9522:1;9519;9512:12;9466:60;9416:116;:::o;9538:133::-;9581:5;9619:6;9606:20;9597:29;;9635:30;9659:5;9635:30;:::i;:::-;9538:133;;;;:::o;9677:468::-;9742:6;9750;9799:2;9787:9;9778:7;9774:23;9770:32;9767:119;;;9805:79;;:::i;:::-;9767:119;9925:1;9950:50;9992:7;9983:6;9972:9;9968:22;9950:50;:::i;:::-;9940:60;;9896:114;10049:2;10075:53;10120:7;10111:6;10100:9;10096:22;10075:53;:::i;:::-;10065:63;;10020:118;9677:468;;;;;:::o;10151:60::-;10179:3;10200:5;10193:12;;10151:60;;;:::o;10217:142::-;10267:9;10300:53;10318:34;10327:24;10345:5;10327:24;:::i;:::-;10318:34;:::i;:::-;10300:53;:::i;:::-;10287:66;;10217:142;;;:::o;10365:126::-;10415:9;10448:37;10479:5;10448:37;:::i;:::-;10435:50;;10365:126;;;:::o;10497:144::-;10565:9;10598:37;10629:5;10598:37;:::i;:::-;10585:50;;10497:144;;;:::o;10647:167::-;10752:55;10801:5;10752:55;:::i;:::-;10747:3;10740:68;10647:167;;:::o;10820:258::-;10931:4;10969:2;10958:9;10954:18;10946:26;;10982:89;11068:1;11057:9;11053:17;11044:6;10982:89;:::i;:::-;10820:258;;;;:::o;11084:156::-;11224:8;11220:1;11212:6;11208:14;11201:32;11084:156;:::o;11246:365::-;11388:3;11409:66;11473:1;11468:3;11409:66;:::i;:::-;11402:73;;11484:93;11573:3;11484:93;:::i;:::-;11602:2;11597:3;11593:12;11586:19;;11246:365;;;:::o;11617:419::-;11783:4;11821:2;11810:9;11806:18;11798:26;;11870:9;11864:4;11860:20;11856:1;11845:9;11841:17;11834:47;11898:131;12024:4;11898:131;:::i;:::-;11890:139;;11617:419;;;:::o;12042:134::-;12100:9;12133:37;12164:5;12133:37;:::i;:::-;12120:50;;12042:134;;;:::o;12182:147::-;12277:45;12316:5;12277:45;:::i;:::-;12272:3;12265:58;12182:147;;:::o;12335:238::-;12436:4;12474:2;12463:9;12459:18;12451:26;;12487:79;12563:1;12552:9;12548:17;12539:6;12487:79;:::i;:::-;12335:238;;;;:::o;12579:233::-;12719:34;12715:1;12707:6;12703:14;12696:58;12788:16;12783:2;12775:6;12771:15;12764:41;12579:233;:::o;12818:366::-;12960:3;12981:67;13045:2;13040:3;12981:67;:::i;:::-;12974:74;;13057:93;13146:3;13057:93;:::i;:::-;13175:2;13170:3;13166:12;13159:19;;12818:366;;;:::o;13190:419::-;13356:4;13394:2;13383:9;13379:18;13371:26;;13443:9;13437:4;13433:20;13429:1;13418:9;13414:17;13407:47;13471:131;13597:4;13471:131;:::i;:::-;13463:139;;13190:419;;;:::o;13615:180::-;13663:77;13660:1;13653:88;13760:4;13757:1;13750:15;13784:4;13781:1;13774:15;13801:410;13841:7;13864:20;13882:1;13864:20;:::i;:::-;13859:25;;13898:20;13916:1;13898:20;:::i;:::-;13893:25;;13953:1;13950;13946:9;13975:30;13993:11;13975:30;:::i;:::-;13964:41;;14154:1;14145:7;14141:15;14138:1;14135:22;14115:1;14108:9;14088:83;14065:139;;14184:18;;:::i;:::-;14065:139;13849:362;13801:410;;;;:::o;14217:177::-;14357:29;14353:1;14345:6;14341:14;14334:53;14217:177;:::o;14400:366::-;14542:3;14563:67;14627:2;14622:3;14563:67;:::i;:::-;14556:74;;14639:93;14728:3;14639:93;:::i;:::-;14757:2;14752:3;14748:12;14741:19;;14400:366;;;:::o;14772:419::-;14938:4;14976:2;14965:9;14961:18;14953:26;;15025:9;15019:4;15015:20;15011:1;15000:9;14996:17;14989:47;15053:131;15179:4;15053:131;:::i;:::-;15045:139;;14772:419;;;:::o;15197:180::-;15245:77;15242:1;15235:88;15342:4;15339:1;15332:15;15366:4;15363:1;15356:15;15383:233;15422:3;15445:24;15463:5;15445:24;:::i;:::-;15436:33;;15491:66;15484:5;15481:77;15478:103;;15561:18;;:::i;:::-;15478:103;15608:1;15601:5;15597:13;15590:20;;15383:233;;;:::o;15622:332::-;15743:4;15781:2;15770:9;15766:18;15758:26;;15794:71;15862:1;15851:9;15847:17;15838:6;15794:71;:::i;:::-;15875:72;15943:2;15932:9;15928:18;15919:6;15875:72;:::i;:::-;15622:332;;;;;:::o;15960:137::-;16014:5;16045:6;16039:13;16030:22;;16061:30;16085:5;16061:30;:::i;:::-;15960:137;;;;:::o;16103:345::-;16170:6;16219:2;16207:9;16198:7;16194:23;16190:32;16187:119;;;16225:79;;:::i;:::-;16187:119;16345:1;16370:61;16423:7;16414:6;16403:9;16399:22;16370:61;:::i;:::-;16360:71;;16316:125;16103:345;;;;:::o;16454:180::-;16502:77;16499:1;16492:88;16599:4;16596:1;16589:15;16623:4;16620:1;16613:15;16640:185;16680:1;16697:20;16715:1;16697:20;:::i;:::-;16692:25;;16731:20;16749:1;16731:20;:::i;:::-;16726:25;;16770:1;16760:35;;16775:18;;:::i;:::-;16760:35;16817:1;16814;16810:9;16805:14;;16640:185;;;;:::o;16831:194::-;16871:4;16891:20;16909:1;16891:20;:::i;:::-;16886:25;;16925:20;16943:1;16925:20;:::i;:::-;16920:25;;16969:1;16966;16962:9;16954:17;;16993:1;16987:4;16984:11;16981:37;;;16998:18;;:::i;:::-;16981:37;16831:194;;;;:::o;17031:170::-;17171:22;17167:1;17159:6;17155:14;17148:46;17031:170;:::o;17207:366::-;17349:3;17370:67;17434:2;17429:3;17370:67;:::i;:::-;17363:74;;17446:93;17535:3;17446:93;:::i;:::-;17564:2;17559:3;17555:12;17548:19;;17207:366;;;:::o;17579:419::-;17745:4;17783:2;17772:9;17768:18;17760:26;;17832:9;17826:4;17822:20;17818:1;17807:9;17803:17;17796:47;17860:131;17986:4;17860:131;:::i;:::-;17852:139;;17579:419;;;:::o;18004:191::-;18044:3;18063:20;18081:1;18063:20;:::i;:::-;18058:25;;18097:20;18115:1;18097:20;:::i;:::-;18092:25;;18140:1;18137;18133:9;18126:16;;18161:3;18158:1;18155:10;18152:36;;;18168:18;;:::i;:::-;18152:36;18004:191;;;;:::o;18201:249::-;18341:34;18337:1;18329:6;18325:14;18318:58;18410:32;18405:2;18397:6;18393:15;18386:57;18201:249;:::o;18456:366::-;18598:3;18619:67;18683:2;18678:3;18619:67;:::i;:::-;18612:74;;18695:93;18784:3;18695:93;:::i;:::-;18813:2;18808:3;18804:12;18797:19;;18456:366;;;:::o;18828:419::-;18994:4;19032:2;19021:9;19017:18;19009:26;;19081:9;19075:4;19071:20;19067:1;19056:9;19052:17;19045:47;19109:131;19235:4;19109:131;:::i;:::-;19101:139;;18828:419;;;:::o;19253:220::-;19393:34;19389:1;19381:6;19377:14;19370:58;19462:3;19457:2;19449:6;19445:15;19438:28;19253:220;:::o;19479:366::-;19621:3;19642:67;19706:2;19701:3;19642:67;:::i;:::-;19635:74;;19718:93;19807:3;19718:93;:::i;:::-;19836:2;19831:3;19827:12;19820:19;;19479:366;;;:::o;19851:419::-;20017:4;20055:2;20044:9;20040:18;20032:26;;20104:9;20098:4;20094:20;20090:1;20079:9;20075:17;20068:47;20132:131;20258:4;20132:131;:::i;:::-;20124:139;;19851:419;;;:::o;20276:167::-;20416:19;20412:1;20404:6;20400:14;20393:43;20276:167;:::o;20449:366::-;20591:3;20612:67;20676:2;20671:3;20612:67;:::i;:::-;20605:74;;20688:93;20777:3;20688:93;:::i;:::-;20806:2;20801:3;20797:12;20790:19;;20449:366;;;:::o;20821:419::-;20987:4;21025:2;21014:9;21010:18;21002:26;;21074:9;21068:4;21064:20;21060:1;21049:9;21045:17;21038:47;21102:131;21228:4;21102:131;:::i;:::-;21094:139;;20821:419;;;:::o;21246:180::-;21294:77;21291:1;21284:88;21391:4;21388:1;21381:15;21415:4;21412:1;21405:15;21432:85;21477:7;21506:5;21495:16;;21432:85;;;:::o;21523:158::-;21581:9;21614:61;21632:42;21641:32;21667:5;21641:32;:::i;:::-;21632:42;:::i;:::-;21614:61;:::i;:::-;21601:74;;21523:158;;;:::o;21687:147::-;21782:45;21821:5;21782:45;:::i;:::-;21777:3;21770:58;21687:147;;:::o;21840:114::-;21907:6;21941:5;21935:12;21925:22;;21840:114;;;:::o;21960:184::-;22059:11;22093:6;22088:3;22081:19;22133:4;22128:3;22124:14;22109:29;;21960:184;;;;:::o;22150:132::-;22217:4;22240:3;22232:11;;22270:4;22265:3;22261:14;22253:22;;22150:132;;;:::o;22288:108::-;22365:24;22383:5;22365:24;:::i;:::-;22360:3;22353:37;22288:108;;:::o;22402:179::-;22471:10;22492:46;22534:3;22526:6;22492:46;:::i;:::-;22570:4;22565:3;22561:14;22547:28;;22402:179;;;;:::o;22587:113::-;22657:4;22689;22684:3;22680:14;22672:22;;22587:113;;;:::o;22736:732::-;22855:3;22884:54;22932:5;22884:54;:::i;:::-;22954:86;23033:6;23028:3;22954:86;:::i;:::-;22947:93;;23064:56;23114:5;23064:56;:::i;:::-;23143:7;23174:1;23159:284;23184:6;23181:1;23178:13;23159:284;;;23260:6;23254:13;23287:63;23346:3;23331:13;23287:63;:::i;:::-;23280:70;;23373:60;23426:6;23373:60;:::i;:::-;23363:70;;23219:224;23206:1;23203;23199:9;23194:14;;23159:284;;;23163:14;23459:3;23452:10;;22860:608;;;22736:732;;;;:::o;23474:831::-;23737:4;23775:3;23764:9;23760:19;23752:27;;23789:71;23857:1;23846:9;23842:17;23833:6;23789:71;:::i;:::-;23870:80;23946:2;23935:9;23931:18;23922:6;23870:80;:::i;:::-;23997:9;23991:4;23987:20;23982:2;23971:9;23967:18;23960:48;24025:108;24128:4;24119:6;24025:108;:::i;:::-;24017:116;;24143:72;24211:2;24200:9;24196:18;24187:6;24143:72;:::i;:::-;24225:73;24293:3;24282:9;24278:19;24269:6;24225:73;:::i;:::-;23474:831;;;;;;;;:::o;24311:147::-;24412:11;24449:3;24434:18;;24311:147;;;;:::o;24464:114::-;;:::o;24584:398::-;24743:3;24764:83;24845:1;24840:3;24764:83;:::i;:::-;24757:90;;24856:93;24945:3;24856:93;:::i;:::-;24974:1;24969:3;24965:11;24958:18;;24584:398;;;:::o;24988:379::-;25172:3;25194:147;25337:3;25194:147;:::i;:::-;25187:154;;25358:3;25351:10;;24988:379;;;:::o;25373:807::-;25622:4;25660:3;25649:9;25645:19;25637:27;;25674:71;25742:1;25731:9;25727:17;25718:6;25674:71;:::i;:::-;25755:72;25823:2;25812:9;25808:18;25799:6;25755:72;:::i;:::-;25837:80;25913:2;25902:9;25898:18;25889:6;25837:80;:::i;:::-;25927;26003:2;25992:9;25988:18;25979:6;25927:80;:::i;:::-;26017:73;26085:3;26074:9;26070:19;26061:6;26017:73;:::i;:::-;26100;26168:3;26157:9;26153:19;26144:6;26100:73;:::i;:::-;25373:807;;;;;;;;;:::o;26186:143::-;26243:5;26274:6;26268:13;26259:22;;26290:33;26317:5;26290:33;:::i;:::-;26186:143;;;;:::o;26335:663::-;26423:6;26431;26439;26488:2;26476:9;26467:7;26463:23;26459:32;26456:119;;;26494:79;;:::i;:::-;26456:119;26614:1;26639:64;26695:7;26686:6;26675:9;26671:22;26639:64;:::i;:::-;26629:74;;26585:128;26752:2;26778:64;26834:7;26825:6;26814:9;26810:22;26778:64;:::i;:::-;26768:74;;26723:129;26891:2;26917:64;26973:7;26964:6;26953:9;26949:22;26917:64;:::i;:::-;26907:74;;26862:129;26335:663;;;;;:::o;27004:332::-;27125:4;27163:2;27152:9;27148:18;27140:26;;27176:71;27244:1;27233:9;27229:17;27220:6;27176:71;:::i;:::-;27257:72;27325:2;27314:9;27310:18;27301:6;27257:72;:::i;:::-;27004:332;;;;;:::o;27342:177::-;27482:29;27478:1;27470:6;27466:14;27459:53;27342:177;:::o;27525:366::-;27667:3;27688:67;27752:2;27747:3;27688:67;:::i;:::-;27681:74;;27764:93;27853:3;27764:93;:::i;:::-;27882:2;27877:3;27873:12;27866:19;;27525:366;;;:::o;27897:419::-;28063:4;28101:2;28090:9;28086:18;28078:26;;28150:9;28144:4;28140:20;28136:1;28125:9;28121:17;28114:47;28178:131;28304:4;28178:131;:::i;:::-;28170:139;;27897:419;;;:::o

Swarm Source

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