ETH Price: $2,282.41 (+2.23%)

Token

NIPPON GINKO (NIPKO)
 

Overview

Max Total Supply

10,000,000 NIPKO

Holders

27

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.1365724 NIPKO

Value
$0.00
0x73a4EeECFdD0919611491Fb850b8E1e2b281657a
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:
NIPKO

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-03
*/

/**

TG https://t.me/nipponginko

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.7.6;


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

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

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

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

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

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

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

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

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

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

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

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

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

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

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

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IERC20 RWRD = IERC20(0xdAC17F958D2ee523a2206206994597C13D831ec7);
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    IDEXRouter router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 45 * 60;
    uint256 public minDistribution = 1 * (10 ** 13);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = RWRD.balanceOf(address(this));

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

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = RWRD.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RWRD.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract NIPKO is IERC20, Auth {
    using SafeMath for uint256;

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

    string constant _name = "NIPPON GINKO";
    string constant _symbol = "NIPKO";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 10 * 10**6 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply;
    uint256 public _maxWalletToken = _totalSupply;

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

    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;


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

    uint256 public liquidityFee    = 49;
    uint256 public reflectionFee   = 0;
    uint256 public marketingFee    = 50;
    uint256 public devFee          = 0;
    uint256 public totalFee        = marketingFee + reflectionFee + liquidityFee + devFee;
    uint256 public feeDenominator  = 100;

    uint256 public sellMultiplier  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public devFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = false;

    DividendDistributor public distributor;
    uint256 distributorGas = 500000;

    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 25;
    mapping (address => uint) private cooldownTimer;

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

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

        distributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        devFeeReceiver = 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, uint256(-1));
    }

    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] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external authorized() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000;
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external authorized() {
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = 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");
        }

        // Blacklist
        if(blacklistMode){
            require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");    
        }


        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != devFeeReceiver  && recipient != autoLiquidityReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
        
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }

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

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

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

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

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try distributor.process(distributorGas) {} catch {}

        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, bool isSell) internal returns (uint256) {
        
        uint256 multiplier = isSell ? sellMultiplier : 100;
        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        

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

        return amount.sub(feeAmount);
    }

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

    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

    function clearStuckBalance_sender(uint256 amountPercentage) external authorized {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    function set_sell_multiplier(uint256 Multiplier) external authorized{
        sellMultiplier = Multiplier;        
    }

    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    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] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHReflection = amountETH.mul(reflectionFee).div(totalETHFee);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee);

        try distributor.deposit{value: amountETHReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHDev, gas: 30000}("");
        
        // Supress warning msg
        tmpSuccess = false;

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


    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }


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

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

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

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _devFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(_devFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/3, "Fees cannot be more than 33%");
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver ) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
    }

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

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    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;
    }



/* Airdrop */
function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external authorized {

    require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    uint256 SCCC = 0;

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

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

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} 
        }
    }

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, _balances[from]) {} catch {}
    }
}

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

    require(addresses.length < 801,"GAS Error: max airdrop limit is 800 addresses");

    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);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} 
        }
    }

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, _balances[from]) {} catch {}
    }
}

event AutoLiquify(uint256 amountETH, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_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":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","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":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","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":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","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":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960ff16600a0a62989680026005556005546006556005546007556001600a60006101000a81548160ff0219169083151502179055506031601055600060115560326012556000601355601354601054601154601254010101601455606460155560646016556014601a556064601b556000601d60146101000a81548160ff0219169083151502179055506207a120601f556001602060006101000a81548160ff0219169083151502179055506019602060016101000a81548160ff021916908360ff1602179055506001602260006101000a81548160ff021916908315150217905550612710604e6005540281620001d457fe5b04602355348015620001e557600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033d57600080fd5b505afa15801562000352573d6000803e3d6000fd5b505050506040513d60208110156200036957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200042357600080fd5b505af115801562000438573d6000803e3d6000fd5b505050506040513d60208110156200044f57600080fd5b8101908080519060200190929190505050601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005949062000aaf565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015620005d1573d6000803e3d6000fd5b50601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040518082815260200191505060405180910390a362000abd565b6119cf806200661f83390190565b615b528062000acd6000396000f3fe6080604052600436106103bc5760003560e01c8063722b62ad116101f2578063d51ed1c81161010d578063f2fde38b116100a0578063fe575a871161006f578063fe575a871461160a578063fe9fbb8014611671578063fed0d2a1146116d8578063ffb54a9914611703576103c3565b8063f2fde38b146114be578063f708a64f1461150f578063f84ba65d1461156c578063f887ea40146115c9576103c3565b8063df20fd49116100dc578063df20fd49146113aa578063e96fada2146113f1578063ec72d65f14611432578063f0b37c041461146d576103c3565b8063d51ed1c814611204578063d7c0103214611253578063dab84ee7146112e4578063dd62ed3e14611325576103c3565b806398118cb411610185578063b6a5d7de11610154578063b6a5d7de146110f6578063bd9ab53714611147578063bfe1092814611182578063ca33e64c146111c3576103c3565b806398118cb414610fde5780639d1944f514611009578063a8aa1b3114611044578063a9059cbb14611085576103c3565b8063893d20e8116101c1578063893d20e814610e4e578063896648c114610e8f5780638e2eee8414610ebc57806395d89b4114610f4e576103c3565b8063722b62ad14610d9f57806378109e5414610dcd5780637d1db4a514610df857806383ad799414610e23576103c3565b80632d48e896116102e25780635c85974f116102755780636827e764116102445780636827e76414610cb75780636b67c4df14610ce25780636ddd171314610d0d57806370a0823114610d3a576103c3565b80635c85974f14610bb55780635e562f3b14610bf0578063617fe0ed14610c2d578063658d4b7f14610c5a576103c3565b8063335f6a43116102b1578063335f6a4314610a0657806344a33fd214610ab657806350db71fb14610af1578063571ac8b014610b4e576103c3565b80632d48e896146108e25780632d594567146109275780632f54bf6e14610971578063313ce567146109d8576103c3565b8063180b0d7e1161035a5780631df4ccfc116103295780631df4ccfc146107b6578063201e7991146107e157806323b872dd146108265780632b112e49146108b7576103c3565b8063180b0d7e1461062a57806318160ddd146106555780631ca0a28d146106805780631da1db5e1461077b576103c3565b806309302dc61161039657806309302dc6146104e6578063095ea7b3146105215780630d295980146105925780631161ae39146105cf576103c3565b80630445b667146103c857806304a66b48146103f357806306fdde0314610456576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd611730565b6040518082815260200191505060405180910390f35b3480156103ff57600080fd5b50610454600480360360a081101561041657600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611736565b005b34801561046257600080fd5b5061046b61189b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104f257600080fd5b5061051f6004803603602081101561050957600080fd5b81019080803590602001909291905050506118d8565b005b34801561052d57600080fd5b5061057a6004803603604081101561054457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061196c565b60405180821515815260200191505060405180910390f35b34801561059e57600080fd5b506105cd600480360360208110156105b557600080fd5b81019080803515159060200190929190505050611a5e565b005b3480156105db57600080fd5b50610612600480360360408110156105f257600080fd5b810190808035906020019092919080359060200190929190505050611af6565b60405180821515815260200191505060405180910390f35b34801561063657600080fd5b5061063f611b0b565b6040518082815260200191505060405180910390f35b34801561066157600080fd5b5061066a611b11565b6040518082815260200191505060405180910390f35b34801561068c57600080fd5b50610779600480360360608110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156106e057600080fd5b8201836020820111156106f257600080fd5b8035906020019184602083028401116401000000008311171561071457600080fd5b90919293919293908035906020019064010000000081111561073557600080fd5b82018360208201111561074757600080fd5b8035906020019184602083028401116401000000008311171561076957600080fd5b9091929391929390505050611b1b565b005b34801561078757600080fd5b506107b46004803603602081101561079e57600080fd5b8101908080359060200190929190505050612063565b005b3480156107c257600080fd5b506107cb61215c565b6040518082815260200191505060405180910390f35b3480156107ed57600080fd5b506108246004803603604081101561080457600080fd5b810190808035906020019092919080359060200190929190505050612162565b005b34801561083257600080fd5b5061089f6004803603606081101561084957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121ef565b60405180821515815260200191505060405180910390f35b3480156108c357600080fd5b506108cc6123ef565b6040518082815260200191505060405180910390f35b3480156108ee57600080fd5b506109256004803603604081101561090557600080fd5b810190808035906020019092919080359060200190929190505050612471565b005b34801561093357600080fd5b5061096f6004803603604081101561094a57600080fd5b81019080803515159060200190929190803560ff169060200190929190505050612585565b005b34801561097d57600080fd5b506109c06004803603602081101561099457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612639565b60405180821515815260200191505060405180910390f35b3480156109e457600080fd5b506109ed612692565b604051808260ff16815260200191505060405180910390f35b348015610a1257600080fd5b50610ab460048036036060811015610a2957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a6657600080fd5b820183602082011115610a7857600080fd5b80359060200191846020830284011164010000000083111715610a9a57600080fd5b90919293919293908035906020019092919050505061269b565b005b348015610ac257600080fd5b50610aef60048036036020811015610ad957600080fd5b8101908080359060200190929190505050612b48565b005b348015610afd57600080fd5b50610b4c60048036036040811015610b1457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612c1f565b005b348015610b5a57600080fd5b50610b9d60048036036020811015610b7157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cf5565b60405180821515815260200191505060405180910390f35b348015610bc157600080fd5b50610bee60048036036020811015610bd857600080fd5b8101908080359060200190929190505050612d28565b005b348015610bfc57600080fd5b50610c2b60048036036020811015610c1357600080fd5b81019080803515159060200190929190505050612dad565b005b348015610c3957600080fd5b50610c42612e45565b60405180821515815260200191505060405180910390f35b348015610c6657600080fd5b50610cb560048036036040811015610c7d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612e58565b005b348015610cc357600080fd5b50610ccc612f2e565b6040518082815260200191505060405180910390f35b348015610cee57600080fd5b50610cf7612f34565b6040518082815260200191505060405180910390f35b348015610d1957600080fd5b50610d22612f3a565b60405180821515815260200191505060405180910390f35b348015610d4657600080fd5b50610d8960048036036020811015610d5d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f4d565b6040518082815260200191505060405180910390f35b348015610dab57600080fd5b50610db4612f96565b604051808260ff16815260200191505060405180910390f35b348015610dd957600080fd5b50610de2612fa9565b6040518082815260200191505060405180910390f35b348015610e0457600080fd5b50610e0d612faf565b6040518082815260200191505060405180910390f35b348015610e2f57600080fd5b50610e38612fb5565b6040518082815260200191505060405180910390f35b348015610e5a57600080fd5b50610e63612fbb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e9b57600080fd5b50610ea4612fe4565b60405180821515815260200191505060405180910390f35b348015610ec857600080fd5b50610f4c60048036036040811015610edf57600080fd5b8101908080359060200190640100000000811115610efc57600080fd5b820183602082011115610f0e57600080fd5b80359060200191846020830284011164010000000083111715610f3057600080fd5b9091929391929390803515159060200190929190505050612ff7565b005b348015610f5a57600080fd5b50610f63613110565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610fa3578082015181840152602081019050610f88565b50505050905090810190601f168015610fd05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610fea57600080fd5b50610ff361314d565b6040518082815260200191505060405180910390f35b34801561101557600080fd5b506110426004803603602081101561102c57600080fd5b8101908080359060200190929190505050613153565b005b34801561105057600080fd5b506110596131e7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561109157600080fd5b506110de600480360360408110156110a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061320d565b60405180821515815260200191505060405180910390f35b34801561110257600080fd5b506111456004803603602081101561111957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613222565b005b34801561115357600080fd5b506111806004803603602081101561116a57600080fd5b81019080803590602001909291905050506132f7565b005b34801561118e57600080fd5b5061119761338b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156111cf57600080fd5b506111d86133b1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561121057600080fd5b5061123d6004803603602081101561122757600080fd5b81019080803590602001909291905050506133d7565b6040518082815260200191505060405180910390f35b34801561125f57600080fd5b506112e26004803603606081101561127657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613449565b005b3480156112f057600080fd5b506112f961358c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561133157600080fd5b506113946004803603604081101561134857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135b2565b6040518082815260200191505060405180910390f35b3480156113b657600080fd5b506113ef600480360360408110156113cd57600080fd5b8101908080351515906020019092919080359060200190929190505050613639565b005b3480156113fd57600080fd5b506114066136d9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561143e57600080fd5b5061146b6004803603602081101561145557600080fd5b81019080803590602001909291905050506136ff565b005b34801561147957600080fd5b506114bc6004803603602081101561149057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613784565b005b3480156114ca57600080fd5b5061150d600480360360208110156114e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061385a565b005b34801561151b57600080fd5b5061156a6004803603604081101561153257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506139bc565b005b34801561157857600080fd5b506115c76004803603604081101561158f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613cc7565b005b3480156115d557600080fd5b506115de613d9d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561161657600080fd5b506116596004803603602081101561162d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613dc3565b60405180821515815260200191505060405180910390f35b34801561167d57600080fd5b506116c06004803603602081101561169457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613de3565b60405180821515815260200191505060405180910390f35b3480156116e457600080fd5b506116ed613e39565b6040518082815260200191505060405180910390f35b34801561170f57600080fd5b50611718613e3f565b60405180821515815260200191505060405180910390f35b60235481565b61173f33613de3565b6117b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b84601081905550836011819055508260128190555081601381905550611804826117f6856117e8888a613e5290919063ffffffff16565b613e5290919063ffffffff16565b613e5290919063ffffffff16565b6014819055508060158190555060036015548161181d57fe5b0460145410611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466565732063616e6e6f74206265206d6f7265207468616e203333250000000081525060200191505060405180910390fd5b5050505050565b60606040518060400160405280600c81526020017f4e4950504f4e2047494e4b4f0000000000000000000000000000000000000000815250905090565b6118e133613de3565b611953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e881600554028161196257fe5b0460078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b611a6733612639565b611ad9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601d60146101000a81548160ff02191690831515021790555050565b600082611b02836133d7565b11905092915050565b60155481565b6000600554905090565b611b2433613de3565b611b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6101f58484905010611bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615ac3602d913960400191505060405180910390fd5b818190508484905014611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615a176028913960400191505060405180910390fd5b6000805b85859050811015611c8457838382818110611c6c57fe5b90506020020135820191508080600101915050611c55565b5080611c8f87612f4d565b1015611d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000081525060200191505060405180910390fd5b60005b85859050811015611f1b57611d5687878784818110611d2157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16868685818110611d4a57fe5b90506020020135613eda565b50600f6000878784818110611d6757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f0e57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96878784818110611e1a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600860008a8a87818110611e4757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ef257600080fd5b505af1925050508015611f03575060015b611f0c57611f0d565b5b5b8080600101915050611d06565b50600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661205b57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561203f57600080fd5b505af1925050508015612050575060015b6120595761205a565b5b5b505050505050565b61206c33613de3565b6120de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484028161212b57fe5b049081150290604051600060405180830381858888f19350505050158015612157573d6000803e3d6000fd5b505050565b60145481565b61216b33613de3565b6121dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601a8190555080601b819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146123db5761235a826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140ad9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6123e684848461416d565b90509392505050565b600061246c61241f600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f4d565b61245e61244d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f4d565b600554614dd190919063ffffffff16565b614dd190919063ffffffff16565b905090565b61247a33613de3565b6124ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561256957600080fd5b505af115801561257d573d6000803e3d6000fd5b505050505050565b61258e33612639565b612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602060006101000a81548160ff02191690831515021790555080602060016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6126a433612639565b612716576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103218383905010612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615af0602d913960400191505060405180910390fd5b600083839050820290508061278786612f4d565b10156127fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000081525060200191505060405180910390fd5b60005b84849050811015612a015761283c8686868481811061281957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685613eda565b50600f600086868481811061284d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129f457601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686868481811061290057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166008600089898781811061292d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156129d857600080fd5b505af19250505080156129e9575060015b6129f2576129f3565b5b5b80806001019150506127fe565b50600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b4157601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612b2557600080fd5b505af1925050508015612b36575060015b612b3f57612b40565b5b5b5050505050565b612b5133613de3565b612bc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484840281612bee57fe5b049081150290604051600060405180830381858888f19350505050158015612c1a573d6000803e3d6000fd5b505050565b612c2833613de3565b612c9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000612d21827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61196c565b9050919050565b612d3133613de3565b612da3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060068190555050565b612db633612639565b612e28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b602060009054906101000a900460ff1681565b612e6133613de3565b612ed3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b60125481565b602260009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b602060019054906101000a900460ff1681565b60075481565b60065481565b60115481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900460ff1681565b61300033612639565b613072576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60005b8383905081101561310a5781600b600086868581811061309157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806001019050613075565b50505050565b60606040518060400160405280600581526020017f4e49504b4f000000000000000000000000000000000000000000000000000000815250905090565b60105481565b61315c33613de3565b6131ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b081106131dd57600080fd5b80601f8190555050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061321a33848461416d565b905092915050565b61322b33612639565b61329d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61330033613de3565b613372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e881600554028161338157fe5b0460068190555050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006134426133e46123ef565b6134346134256002613417601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f4d565b614e1b90919063ffffffff16565b85614e1b90919063ffffffff16565b614ea190919063ffffffff16565b9050919050565b61345233613de3565b6134c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61364233613de3565b6136b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602260006101000a81548160ff021916908315150217905550806023819055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61370833613de3565b61377a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060168190555050565b61378d33612639565b6137ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61386333612639565b6138d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6139c533613de3565b613a37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015613ac15750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613aca57600080fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015613bd857601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613bbb57600080fd5b505af1158015613bcf573d6000803e3d6000fd5b50505050613cc3565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613caa57600080fd5b505af1158015613cbe573d6000803e3d6000fd5b505050505b5050565b613cd033613de3565b613d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b601d60149054906101000a900460ff1681565b600080828401905083811015613ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000613f65826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140ad9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ffa82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e5290919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600083831115829061415a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561411f578082015181840152602081019050614104565b50505050905090810190601f16801561414c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602460009054906101000a900460ff16156141965761418f848484613eda565b9050614dca565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561423a5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156142c257601d60149054906101000a900460ff166142c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b5b600a60009054906101000a900460ff16156143ee57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561437b5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6143ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f426c61636b6c697374656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561447457503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156144ce5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156145285750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156145825750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156145dc5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156146365750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156146a757600061464684612f4d565b905060075483820111156146a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180615a85603e913960400191505060405180910390fd5b505b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156147105750602060009054906101000a900460ff165b80156147665750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561485b5742602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410614802576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615a3f6025913960400191505060405180910390fd5b602060019054906101000a900460ff1660ff164201602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6148658483614eeb565b61486d614fbb565b1561487b5761487a615092565b5b614904826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140ad9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006149528561578a565b61495c57826149b8565b6149b78584601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146157e1565b5b9050614a0c81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e5290919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614b8e57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614b7257600080fd5b505af1925050508015614b83575060015b614b8c57614b8d565b5b5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614ccd57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614cb157600080fd5b505af1925050508015614cc2575060015b614ccb57614ccc565b5b5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601f546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015614d4457600080fd5b505af1925050508015614d55575060015b614d5e57614d5f565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b6000614e1383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506140ad565b905092915050565b600080831415614e2e5760009050614e9b565b6000828402905082848281614e3f57fe5b0414614e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615a646021913960400191505060405180910390fd5b809150505b92915050565b6000614ee383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615950565b905092915050565b60065481111580614f455750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b614fb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5050565b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156150285750602460009054906101000a900460ff16155b80156150405750602260009054906101000a900460ff165b801561508d5750602354600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602460006101000a81548160ff02191690831515021790555060006150bd601a54601b54611af6565b6150c9576010546150cc565b60005b9050600061510c60026150fe6014546150f086602354614e1b90919063ffffffff16565b614ea190919063ffffffff16565b614ea190919063ffffffff16565b9050600061512582602354614dd190919063ffffffff16565b90506000600267ffffffffffffffff8111801561514157600080fd5b506040519080825280602002602001820160405280156151705781602001602082028036833780820191505090505b509050308160008151811061518157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106151eb57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156152ee5780820151818401526020810190506152d3565b505050509050019650505050505050600060405180830381600087803b15801561531757600080fd5b505af115801561532b573d6000803e3d6000fd5b5050505060006153448247614dd190919063ffffffff16565b9050600061537061535f600289614ea190919063ffffffff16565b601454614dd190919063ffffffff16565b905060006153ac600261539e846153908c88614e1b90919063ffffffff16565b614ea190919063ffffffff16565b614ea190919063ffffffff16565b905060006153d7836153c960115487614e1b90919063ffffffff16565b614ea190919063ffffffff16565b90506000615402846153f460125488614e1b90919063ffffffff16565b614ea190919063ffffffff16565b9050600061542d8561541f60135489614e1b90919063ffffffff16565b614ea190919063ffffffff16565b9050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561549957600080fd5b505af1935050505080156154ab575060015b6154b4576154b5565b5b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d806000811461553c576040519150601f19603f3d011682016040523d82523d6000602084013e615541565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d80600081146155ca576040519150601f19603f3d011682016040523d82523d6000602084013e6155cf565b606091505b5050809150506000905060008b111561576157601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156156ce57600080fd5b505af11580156156e2573d6000803e3d6000fd5b50505050506040513d60608110156156f957600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051808381526020018281526020019250505060405180910390a15b5050505050505050505050506000602460006101000a81548160ff021916908315150217905550565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080826157f05760646157f4565b6016545b905060006158366064601554026158288461581a6014548a614e1b90919063ffffffff16565b614e1b90919063ffffffff16565b614ea190919063ffffffff16565b905061588a81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e5290919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36159458186614dd190919063ffffffff16565b925050509392505050565b600080831182906159fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156159c15780820151818401526020810190506159a6565b50505050905090810190601f1680156159ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615a0857fe5b04905080915050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d61782061697264726f70206c696d69742069732038303020616464726573736573a2646970667358221220043c4f9a0fac9db74b1f26e65ce26bda8e1915c16e98b15e699cab6a0651d10164736f6c63430007060033608060405273dac17f958d2ee523a2206206994597c13d831ec7600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610a8c600d556509184e72a000600e553480156100dd57600080fd5b506040516119cf3803806119cf8339818101604052602081101561010057600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561016057737a250d5630b4cf539739df2c5dacb4c659f2488d610162565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506117dd806101f26000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed1461033b578063f0fc6bca14610366578063ffb2c4791461037d578063ffd49c84146103b8576100dd565b8063ce7c2ac214610293578063d0e30db014610306578063e2d2e21914610310576100dd565b80632d48e896116100bb5780632d48e896146101cd5780633a98ef39146102125780634fab0ae81461023d578063997664d714610268576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610168575b600080fd5b3480156100ee57600080fd5b506100f76103e3565b6040518082815260200191505060405180910390f35b34801561011957600080fd5b506101666004803603604081101561013057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103e9565b005b34801561017457600080fd5b506101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a8565b6040518082815260200191505060405180910390f35b3480156101d957600080fd5b50610210600480360360408110156101f057600080fd5b8101908080359060200190929190803590602001909291905050506107c2565b005b34801561021e57600080fd5b5061022761082c565b6040518082815260200191505060405180910390f35b34801561024957600080fd5b50610252610832565b6040518082815260200191505060405180910390f35b34801561027457600080fd5b5061027d610838565b6040518082815260200191505060405180910390f35b34801561029f57600080fd5b506102e2600480360360208110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b60405180848152602001838152602001828152602001935050505060405180910390f35b61030e610868565b005b34801561031c57600080fd5b50610325610ce3565b6040518082815260200191505060405180910390f35b34801561034757600080fd5b50610350610ce9565b6040518082815260200191505060405180910390f35b34801561037257600080fd5b5061037b610cef565b005b34801561038957600080fd5b506103b6600480360360208110156103a057600080fd5b8101908080359060200190929190505050610cfa565b005b3480156103c457600080fd5b506103cd610e74565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044157600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104965761049582610e7a565b5b6000811180156104e857506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104fb576104f682611140565b61055d565b60008114801561054d57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561055c5761055b826111ef565b5b5b6105c6816105b8600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546113c890919063ffffffff16565b61141290919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061065e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106fd57600090506107bd565b600061074a600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107a5576000925050506107bd565b6107b881836113c890919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081a57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c057600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561094b57600080fd5b505afa15801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b810190808051906020019092919050505090506000600267ffffffffffffffff811180156109a257600080fd5b506040519080825280602002602001820160405280156109d15781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610a0457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a6e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610b66578082015181840152602081019050610b4b565b50505050905001955050505050506000604051808303818588803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b50505050506000610c7e83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c3557600080fd5b505afa158015610c49573d6000803e3d6000fd5b505050506040513d6020811015610c5f57600080fd5b81019080805190602001909291905050506113c890919063ffffffff16565b9050610c958160095461141290919063ffffffff16565b600981905550610cd8610cc7600854610cb984600c546114cc90919063ffffffff16565b61155290919063ffffffff16565b600b5461141290919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610cf833610e7a565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5257600080fd5b600060048054905090506000811415610d6b5750610e71565b6000805a905060005b8483108015610d8257508381105b15610e6c5783600f5410610d99576000600f819055505b610ddb6004600f5481548110610dab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661159c565b15610e2357610e226004600f5481548110610df257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e7a565b5b610e48610e395a846113c890919063ffffffff16565b8461141290919063ffffffff16565b92505a9150600f600081548092919060010191905055508080600101915050610d74565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610eca5761113d565b6000610ed5826106a8565b9050600081111561113b57610ef581600a5461141290919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050506040513d6020811015610fb857600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061106381600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461141290919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506110f4600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046001600480549050038154811061120457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061127b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600060046001600480549050038154811061131c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061139057fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061140a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611600565b905092915050565b600080828401905083811015611490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006114c5600c546114b7600b54856114cc90919063ffffffff16565b61155290919063ffffffff16565b9050919050565b6000808314156114df576000905061154c565b60008284029050828482816114f057fe5b0414611547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117876021913960400191505060405180910390fd5b809150505b92915050565b600061159483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116c0565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156115f95750600e546115f7836106a8565b115b9050919050565b60008383111582906116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611672578082015181840152602081019050611657565b50505050905090810190601f16801561169f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808311829061176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611731578082015181840152602081019050611716565b50505050905090810190601f16801561175e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161177857fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220f4e30276e1d9e393893311d2a1b8773cd3b480e41486fdea6a1d7e139a13d17a64736f6c63430007060033

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c8063722b62ad116101f2578063d51ed1c81161010d578063f2fde38b116100a0578063fe575a871161006f578063fe575a871461160a578063fe9fbb8014611671578063fed0d2a1146116d8578063ffb54a9914611703576103c3565b8063f2fde38b146114be578063f708a64f1461150f578063f84ba65d1461156c578063f887ea40146115c9576103c3565b8063df20fd49116100dc578063df20fd49146113aa578063e96fada2146113f1578063ec72d65f14611432578063f0b37c041461146d576103c3565b8063d51ed1c814611204578063d7c0103214611253578063dab84ee7146112e4578063dd62ed3e14611325576103c3565b806398118cb411610185578063b6a5d7de11610154578063b6a5d7de146110f6578063bd9ab53714611147578063bfe1092814611182578063ca33e64c146111c3576103c3565b806398118cb414610fde5780639d1944f514611009578063a8aa1b3114611044578063a9059cbb14611085576103c3565b8063893d20e8116101c1578063893d20e814610e4e578063896648c114610e8f5780638e2eee8414610ebc57806395d89b4114610f4e576103c3565b8063722b62ad14610d9f57806378109e5414610dcd5780637d1db4a514610df857806383ad799414610e23576103c3565b80632d48e896116102e25780635c85974f116102755780636827e764116102445780636827e76414610cb75780636b67c4df14610ce25780636ddd171314610d0d57806370a0823114610d3a576103c3565b80635c85974f14610bb55780635e562f3b14610bf0578063617fe0ed14610c2d578063658d4b7f14610c5a576103c3565b8063335f6a43116102b1578063335f6a4314610a0657806344a33fd214610ab657806350db71fb14610af1578063571ac8b014610b4e576103c3565b80632d48e896146108e25780632d594567146109275780632f54bf6e14610971578063313ce567146109d8576103c3565b8063180b0d7e1161035a5780631df4ccfc116103295780631df4ccfc146107b6578063201e7991146107e157806323b872dd146108265780632b112e49146108b7576103c3565b8063180b0d7e1461062a57806318160ddd146106555780631ca0a28d146106805780631da1db5e1461077b576103c3565b806309302dc61161039657806309302dc6146104e6578063095ea7b3146105215780630d295980146105925780631161ae39146105cf576103c3565b80630445b667146103c857806304a66b48146103f357806306fdde0314610456576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd611730565b6040518082815260200191505060405180910390f35b3480156103ff57600080fd5b50610454600480360360a081101561041657600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611736565b005b34801561046257600080fd5b5061046b61189b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104f257600080fd5b5061051f6004803603602081101561050957600080fd5b81019080803590602001909291905050506118d8565b005b34801561052d57600080fd5b5061057a6004803603604081101561054457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061196c565b60405180821515815260200191505060405180910390f35b34801561059e57600080fd5b506105cd600480360360208110156105b557600080fd5b81019080803515159060200190929190505050611a5e565b005b3480156105db57600080fd5b50610612600480360360408110156105f257600080fd5b810190808035906020019092919080359060200190929190505050611af6565b60405180821515815260200191505060405180910390f35b34801561063657600080fd5b5061063f611b0b565b6040518082815260200191505060405180910390f35b34801561066157600080fd5b5061066a611b11565b6040518082815260200191505060405180910390f35b34801561068c57600080fd5b50610779600480360360608110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156106e057600080fd5b8201836020820111156106f257600080fd5b8035906020019184602083028401116401000000008311171561071457600080fd5b90919293919293908035906020019064010000000081111561073557600080fd5b82018360208201111561074757600080fd5b8035906020019184602083028401116401000000008311171561076957600080fd5b9091929391929390505050611b1b565b005b34801561078757600080fd5b506107b46004803603602081101561079e57600080fd5b8101908080359060200190929190505050612063565b005b3480156107c257600080fd5b506107cb61215c565b6040518082815260200191505060405180910390f35b3480156107ed57600080fd5b506108246004803603604081101561080457600080fd5b810190808035906020019092919080359060200190929190505050612162565b005b34801561083257600080fd5b5061089f6004803603606081101561084957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121ef565b60405180821515815260200191505060405180910390f35b3480156108c357600080fd5b506108cc6123ef565b6040518082815260200191505060405180910390f35b3480156108ee57600080fd5b506109256004803603604081101561090557600080fd5b810190808035906020019092919080359060200190929190505050612471565b005b34801561093357600080fd5b5061096f6004803603604081101561094a57600080fd5b81019080803515159060200190929190803560ff169060200190929190505050612585565b005b34801561097d57600080fd5b506109c06004803603602081101561099457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612639565b60405180821515815260200191505060405180910390f35b3480156109e457600080fd5b506109ed612692565b604051808260ff16815260200191505060405180910390f35b348015610a1257600080fd5b50610ab460048036036060811015610a2957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a6657600080fd5b820183602082011115610a7857600080fd5b80359060200191846020830284011164010000000083111715610a9a57600080fd5b90919293919293908035906020019092919050505061269b565b005b348015610ac257600080fd5b50610aef60048036036020811015610ad957600080fd5b8101908080359060200190929190505050612b48565b005b348015610afd57600080fd5b50610b4c60048036036040811015610b1457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612c1f565b005b348015610b5a57600080fd5b50610b9d60048036036020811015610b7157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cf5565b60405180821515815260200191505060405180910390f35b348015610bc157600080fd5b50610bee60048036036020811015610bd857600080fd5b8101908080359060200190929190505050612d28565b005b348015610bfc57600080fd5b50610c2b60048036036020811015610c1357600080fd5b81019080803515159060200190929190505050612dad565b005b348015610c3957600080fd5b50610c42612e45565b60405180821515815260200191505060405180910390f35b348015610c6657600080fd5b50610cb560048036036040811015610c7d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612e58565b005b348015610cc357600080fd5b50610ccc612f2e565b6040518082815260200191505060405180910390f35b348015610cee57600080fd5b50610cf7612f34565b6040518082815260200191505060405180910390f35b348015610d1957600080fd5b50610d22612f3a565b60405180821515815260200191505060405180910390f35b348015610d4657600080fd5b50610d8960048036036020811015610d5d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f4d565b6040518082815260200191505060405180910390f35b348015610dab57600080fd5b50610db4612f96565b604051808260ff16815260200191505060405180910390f35b348015610dd957600080fd5b50610de2612fa9565b6040518082815260200191505060405180910390f35b348015610e0457600080fd5b50610e0d612faf565b6040518082815260200191505060405180910390f35b348015610e2f57600080fd5b50610e38612fb5565b6040518082815260200191505060405180910390f35b348015610e5a57600080fd5b50610e63612fbb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e9b57600080fd5b50610ea4612fe4565b60405180821515815260200191505060405180910390f35b348015610ec857600080fd5b50610f4c60048036036040811015610edf57600080fd5b8101908080359060200190640100000000811115610efc57600080fd5b820183602082011115610f0e57600080fd5b80359060200191846020830284011164010000000083111715610f3057600080fd5b9091929391929390803515159060200190929190505050612ff7565b005b348015610f5a57600080fd5b50610f63613110565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610fa3578082015181840152602081019050610f88565b50505050905090810190601f168015610fd05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610fea57600080fd5b50610ff361314d565b6040518082815260200191505060405180910390f35b34801561101557600080fd5b506110426004803603602081101561102c57600080fd5b8101908080359060200190929190505050613153565b005b34801561105057600080fd5b506110596131e7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561109157600080fd5b506110de600480360360408110156110a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061320d565b60405180821515815260200191505060405180910390f35b34801561110257600080fd5b506111456004803603602081101561111957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613222565b005b34801561115357600080fd5b506111806004803603602081101561116a57600080fd5b81019080803590602001909291905050506132f7565b005b34801561118e57600080fd5b5061119761338b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156111cf57600080fd5b506111d86133b1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561121057600080fd5b5061123d6004803603602081101561122757600080fd5b81019080803590602001909291905050506133d7565b6040518082815260200191505060405180910390f35b34801561125f57600080fd5b506112e26004803603606081101561127657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613449565b005b3480156112f057600080fd5b506112f961358c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561133157600080fd5b506113946004803603604081101561134857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135b2565b6040518082815260200191505060405180910390f35b3480156113b657600080fd5b506113ef600480360360408110156113cd57600080fd5b8101908080351515906020019092919080359060200190929190505050613639565b005b3480156113fd57600080fd5b506114066136d9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561143e57600080fd5b5061146b6004803603602081101561145557600080fd5b81019080803590602001909291905050506136ff565b005b34801561147957600080fd5b506114bc6004803603602081101561149057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613784565b005b3480156114ca57600080fd5b5061150d600480360360208110156114e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061385a565b005b34801561151b57600080fd5b5061156a6004803603604081101561153257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506139bc565b005b34801561157857600080fd5b506115c76004803603604081101561158f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613cc7565b005b3480156115d557600080fd5b506115de613d9d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561161657600080fd5b506116596004803603602081101561162d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613dc3565b60405180821515815260200191505060405180910390f35b34801561167d57600080fd5b506116c06004803603602081101561169457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613de3565b60405180821515815260200191505060405180910390f35b3480156116e457600080fd5b506116ed613e39565b6040518082815260200191505060405180910390f35b34801561170f57600080fd5b50611718613e3f565b60405180821515815260200191505060405180910390f35b60235481565b61173f33613de3565b6117b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b84601081905550836011819055508260128190555081601381905550611804826117f6856117e8888a613e5290919063ffffffff16565b613e5290919063ffffffff16565b613e5290919063ffffffff16565b6014819055508060158190555060036015548161181d57fe5b0460145410611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466565732063616e6e6f74206265206d6f7265207468616e203333250000000081525060200191505060405180910390fd5b5050505050565b60606040518060400160405280600c81526020017f4e4950504f4e2047494e4b4f0000000000000000000000000000000000000000815250905090565b6118e133613de3565b611953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e881600554028161196257fe5b0460078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b611a6733612639565b611ad9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601d60146101000a81548160ff02191690831515021790555050565b600082611b02836133d7565b11905092915050565b60155481565b6000600554905090565b611b2433613de3565b611b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6101f58484905010611bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615ac3602d913960400191505060405180910390fd5b818190508484905014611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615a176028913960400191505060405180910390fd5b6000805b85859050811015611c8457838382818110611c6c57fe5b90506020020135820191508080600101915050611c55565b5080611c8f87612f4d565b1015611d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000081525060200191505060405180910390fd5b60005b85859050811015611f1b57611d5687878784818110611d2157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16868685818110611d4a57fe5b90506020020135613eda565b50600f6000878784818110611d6757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f0e57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96878784818110611e1a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600860008a8a87818110611e4757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ef257600080fd5b505af1925050508015611f03575060015b611f0c57611f0d565b5b5b8080600101915050611d06565b50600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661205b57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561203f57600080fd5b505af1925050508015612050575060015b6120595761205a565b5b5b505050505050565b61206c33613de3565b6120de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484028161212b57fe5b049081150290604051600060405180830381858888f19350505050158015612157573d6000803e3d6000fd5b505050565b60145481565b61216b33613de3565b6121dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601a8190555080601b819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146123db5761235a826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140ad9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6123e684848461416d565b90509392505050565b600061246c61241f600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f4d565b61245e61244d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f4d565b600554614dd190919063ffffffff16565b614dd190919063ffffffff16565b905090565b61247a33613de3565b6124ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561256957600080fd5b505af115801561257d573d6000803e3d6000fd5b505050505050565b61258e33612639565b612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602060006101000a81548160ff02191690831515021790555080602060016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6126a433612639565b612716576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103218383905010612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615af0602d913960400191505060405180910390fd5b600083839050820290508061278786612f4d565b10156127fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000081525060200191505060405180910390fd5b60005b84849050811015612a015761283c8686868481811061281957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685613eda565b50600f600086868481811061284d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129f457601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686868481811061290057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166008600089898781811061292d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156129d857600080fd5b505af19250505080156129e9575060015b6129f2576129f3565b5b5b80806001019150506127fe565b50600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b4157601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612b2557600080fd5b505af1925050508015612b36575060015b612b3f57612b40565b5b5b5050505050565b612b5133613de3565b612bc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484840281612bee57fe5b049081150290604051600060405180830381858888f19350505050158015612c1a573d6000803e3d6000fd5b505050565b612c2833613de3565b612c9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000612d21827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61196c565b9050919050565b612d3133613de3565b612da3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060068190555050565b612db633612639565b612e28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b602060009054906101000a900460ff1681565b612e6133613de3565b612ed3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b60125481565b602260009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b602060019054906101000a900460ff1681565b60075481565b60065481565b60115481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900460ff1681565b61300033612639565b613072576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60005b8383905081101561310a5781600b600086868581811061309157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806001019050613075565b50505050565b60606040518060400160405280600581526020017f4e49504b4f000000000000000000000000000000000000000000000000000000815250905090565b60105481565b61315c33613de3565b6131ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b081106131dd57600080fd5b80601f8190555050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061321a33848461416d565b905092915050565b61322b33612639565b61329d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61330033613de3565b613372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e881600554028161338157fe5b0460068190555050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006134426133e46123ef565b6134346134256002613417601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f4d565b614e1b90919063ffffffff16565b85614e1b90919063ffffffff16565b614ea190919063ffffffff16565b9050919050565b61345233613de3565b6134c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61364233613de3565b6136b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602260006101000a81548160ff021916908315150217905550806023819055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61370833613de3565b61377a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060168190555050565b61378d33612639565b6137ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61386333612639565b6138d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6139c533613de3565b613a37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015613ac15750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613aca57600080fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015613bd857601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613bbb57600080fd5b505af1158015613bcf573d6000803e3d6000fd5b50505050613cc3565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613caa57600080fd5b505af1158015613cbe573d6000803e3d6000fd5b505050505b5050565b613cd033613de3565b613d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b601d60149054906101000a900460ff1681565b600080828401905083811015613ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000613f65826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140ad9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ffa82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e5290919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600083831115829061415a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561411f578082015181840152602081019050614104565b50505050905090810190601f16801561414c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602460009054906101000a900460ff16156141965761418f848484613eda565b9050614dca565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561423a5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156142c257601d60149054906101000a900460ff166142c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b5b600a60009054906101000a900460ff16156143ee57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561437b5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6143ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f426c61636b6c697374656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561447457503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156144ce5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156145285750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156145825750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156145dc5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156146365750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156146a757600061464684612f4d565b905060075483820111156146a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180615a85603e913960400191505060405180910390fd5b505b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156147105750602060009054906101000a900460ff165b80156147665750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561485b5742602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410614802576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615a3f6025913960400191505060405180910390fd5b602060019054906101000a900460ff1660ff164201602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6148658483614eeb565b61486d614fbb565b1561487b5761487a615092565b5b614904826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140ad9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006149528561578a565b61495c57826149b8565b6149b78584601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146157e1565b5b9050614a0c81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e5290919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614b8e57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614b7257600080fd5b505af1925050508015614b83575060015b614b8c57614b8d565b5b5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614ccd57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614cb157600080fd5b505af1925050508015614cc2575060015b614ccb57614ccc565b5b5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601f546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015614d4457600080fd5b505af1925050508015614d55575060015b614d5e57614d5f565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b6000614e1383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506140ad565b905092915050565b600080831415614e2e5760009050614e9b565b6000828402905082848281614e3f57fe5b0414614e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615a646021913960400191505060405180910390fd5b809150505b92915050565b6000614ee383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615950565b905092915050565b60065481111580614f455750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b614fb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5050565b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156150285750602460009054906101000a900460ff16155b80156150405750602260009054906101000a900460ff165b801561508d5750602354600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602460006101000a81548160ff02191690831515021790555060006150bd601a54601b54611af6565b6150c9576010546150cc565b60005b9050600061510c60026150fe6014546150f086602354614e1b90919063ffffffff16565b614ea190919063ffffffff16565b614ea190919063ffffffff16565b9050600061512582602354614dd190919063ffffffff16565b90506000600267ffffffffffffffff8111801561514157600080fd5b506040519080825280602002602001820160405280156151705781602001602082028036833780820191505090505b509050308160008151811061518157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106151eb57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156152ee5780820151818401526020810190506152d3565b505050509050019650505050505050600060405180830381600087803b15801561531757600080fd5b505af115801561532b573d6000803e3d6000fd5b5050505060006153448247614dd190919063ffffffff16565b9050600061537061535f600289614ea190919063ffffffff16565b601454614dd190919063ffffffff16565b905060006153ac600261539e846153908c88614e1b90919063ffffffff16565b614ea190919063ffffffff16565b614ea190919063ffffffff16565b905060006153d7836153c960115487614e1b90919063ffffffff16565b614ea190919063ffffffff16565b90506000615402846153f460125488614e1b90919063ffffffff16565b614ea190919063ffffffff16565b9050600061542d8561541f60135489614e1b90919063ffffffff16565b614ea190919063ffffffff16565b9050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561549957600080fd5b505af1935050505080156154ab575060015b6154b4576154b5565b5b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d806000811461553c576040519150601f19603f3d011682016040523d82523d6000602084013e615541565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d80600081146155ca576040519150601f19603f3d011682016040523d82523d6000602084013e6155cf565b606091505b5050809150506000905060008b111561576157601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156156ce57600080fd5b505af11580156156e2573d6000803e3d6000fd5b50505050506040513d60608110156156f957600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051808381526020018281526020019250505060405180910390a15b5050505050505050505050506000602460006101000a81548160ff021916908315150217905550565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080826157f05760646157f4565b6016545b905060006158366064601554026158288461581a6014548a614e1b90919063ffffffff16565b614e1b90919063ffffffff16565b614ea190919063ffffffff16565b905061588a81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e5290919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36159458186614dd190919063ffffffff16565b925050509392505050565b600080831182906159fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156159c15780820151818401526020810190506159a6565b50505050905090810190601f1680156159ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615a0857fe5b04905080915050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d61782061697264726f70206c696d69742069732038303020616464726573736573a2646970667358221220043c4f9a0fac9db74b1f26e65ce26bda8e1915c16e98b15e699cab6a0651d10164736f6c63430007060033

Deployed Bytecode Sourcemap

10779:16046:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12654:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23144:512;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14040:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15346:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14462:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19815:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24988:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11990:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13770:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25161:881;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19213:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11898:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24133:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14974:364;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24663:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24324:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19956:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2825:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13864:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26046:714;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19439:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23006:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14686:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15711:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22415:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12471:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22742:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11857:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11815:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12617:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14210:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12515:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11275:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11226:42;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11774:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14126:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11444:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22522:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13950:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11732:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24515:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12318:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14810:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2618:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15530:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12386:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12080:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24813:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23664:297;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12165:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14321:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23969:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12123:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19662:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2720:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3051:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22060:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22870:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12287:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11483:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2936:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12035:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12346:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12654:56;;;;:::o;23144:512::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23319:13:::1;23304:12;:28;;;;23359:14;23343:13;:30;;;;23399:13;23384:12;:28;;;;23432:7;23423:6;:16;;;;23461:65;23518:7;23461:52;23499:13;23461:33;23479:14;23461:13;:17;;:33;;;;:::i;:::-;:37;;:52;;;;:::i;:::-;:56;;:65;;;;:::i;:::-;23450:8;:76;;;;23554:15;23537:14;:32;;;;23614:1;23599:14;;:16;;;;;;23588:8;;:27;23580:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;23144:512:::0;;;;;:::o;14040:80::-;14088:13;14112:5;;;;;;;;;;;;;;;;;14105:12;;14040:80;:::o;15346:178::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15512:4:::1;15484:23;15469:12;;:38;15468:48;;;;;;15450:15;:66;;;;15346:178:::0;:::o;14462:216::-;14537:4;14589:6;14554:11;:23;14566:10;14554:23;;;;;;;;;;;;;;;:32;14578:7;14554:32;;;;;;;;;;;;;;;:41;;;;14632:7;14611:37;;14620:10;14611:37;;;14641:6;14611:37;;;;;;;;;;;;;;;;;;14666:4;14659:11;;14462:216;;;;:::o;19815:94::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19894:7:::1;19880:11;;:21;;;;;;;;;;;;;;;;;;19815:94:::0;:::o;24988:150::-;25068:4;25124:6;25092:29;25112:8;25092:19;:29::i;:::-;:38;25085:45;;24988:150;;;;:::o;11990:36::-;;;;:::o;13770:88::-;13825:7;13843:12;;13836:19;;13770:88;:::o;25161:881::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25311:3:::1;25292:9;;:16;;:22;25284:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25398:6;;:13;;25378:9;;:16;;:33;25370:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25464:12;25493:6:::0;25489:82:::1;25507:9;;:16;;25503:1;:20;25489:82;;;25554:6;;25561:1;25554:9;;;;;;;;;;;;;25547:4;:16;25540:23;;25525:3;;;;;;;25489:82;;;;25606:4;25587:15;25597:4;25587:9;:15::i;:::-;:23;;25579:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;25655:6;25651:250;25669:9;;:16;;25665:1;:20;25651:250;;;25702:43;25717:4;25722:9;;25732:1;25722:12;;;;;;;;;;;;;;;25735:6;;25742:1;25735:9;;;;;;;;;;;;;25702:14;:43::i;:::-;;25760:16;:30;25777:9;;25787:1;25777:12;;;;;;;;;;;;;;;25760:30;;;;;;;;;;;;;;;;;;;;;;;;;25756:138;;25811:11;;;;;;;;;;;:20;;;25832:9;;25842:1;25832:12;;;;;;;;;;;;;;;25846:9;:23;25856:9;;25866:1;25856:12;;;;;;;;;;;;;;;25846:23;;;;;;;;;;;;;;;;25811:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25807:75;;;;;;25756:138;25687:3;;;;;;;25651:250;;;;25938:16;:22;25955:4;25938:22;;;;;;;;;;;;;;;;;;;;;;;;;25934:105;;25977:11;;;;;;;;;;;:20;;;25998:4;26004:9;:15;26014:4;26004:15;;;;;;;;;;;;;;;;25977:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25973:59;;;;;;25934:105;2601:1;25161:881:::0;;;;;:::o;19213:218::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19297:17:::1;19317:21;19297:41;;19357:20;;;;;;;;;;;19349:38;;:74;19419:3;19400:16;19388:9;:28;:34;;;;;;19349:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;2601:1;19213:218:::0;:::o;11898:85::-;;;;:::o;24133:183::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24249:7:::1;24231:15;:25;;;;24296:12;24267:26;:41;;;;24133:183:::0;;:::o;14974:364::-;15074:4;15137:2;15094:11;:19;15106:6;15094:19;;;;;;;;;;;;;;;:31;15114:10;15094:31;;;;;;;;;;;;;;;;:46;15091:180;;15190:69;15226:6;15190:69;;;;;;;;;;;;;;;;;:11;:19;15202:6;15190:19;;;;;;;;;;;;;;;:31;15210:10;15190:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;15156:11;:19;15168:6;15156:19;;;;;;;;;;;;;;;:31;15176:10;15156:31;;;;;;;;;;;;;;;:103;;;;15091:180;15290:40;15304:6;15312:9;15323:6;15290:13;:40::i;:::-;15283:47;;14974:364;;;;;:::o;24663:142::-;24716:7;24743:54;24781:15;24791:4;;;;;;;;;;;24781:9;:15::i;:::-;24743:33;24760:15;24770:4;;;;;;;;;;;24760:9;:15::i;:::-;24743:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;24736:61;;24663:142;:::o;24324:183::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24434:11:::1;;;;;;;;;;;:35;;;24470:10;24482:16;24434:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24324:183:::0;;:::o;19956:164::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20061:7:::1;20040:18;;:28;;;;;;;;;;;;;;;;;;20103:9;20079:21;;:33;;;;;;;;;;;;;;;;;;19956:164:::0;;:::o;2825:103::-;2880:4;2915:5;;;;;;;;;;;2904:16;;:7;:16;;;2897:23;;2825:103;;;:::o;13864:80::-;13916:5;11158:1;13925:16;;13864:80;:::o;26046:714::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26190:3:::1;26171:9;;:16;;:22;26163:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26251:12;26275:9;;:16;;26266:6;:25;26251:40;;26327:4;26308:15;26318:4;26308:9;:15::i;:::-;:23;;26300:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;26376:6;26372:247;26390:9;;:16;;26386:1;:20;26372:247;;;26423:40;26438:4;26443:9;;26453:1;26443:12;;;;;;;;;;;;;;;26456:6;26423:14;:40::i;:::-;;26478:16;:30;26495:9;;26505:1;26495:12;;;;;;;;;;;;;;;26478:30;;;;;;;;;;;;;;;;;;;;;;;;;26474:138;;26529:11;;;;;;;;;;;:20;;;26550:9;;26560:1;26550:12;;;;;;;;;;;;;;;26564:9;:23;26574:9;;26584:1;26574:12;;;;;;;;;;;;;;;26564:23;;;;;;;;;;;;;;;;26529:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26525:75;;;;;;26474:138;26408:3;;;;;;;26372:247;;;;26656:16;:22;26673:4;26656:22;;;;;;;;;;;;;;;;;;;;;;;;;26652:105;;26695:11;;;;;;;;;;;:20;;;26716:4;26722:9;:15;26732:4;26722:15;;;;;;;;;;;;;;;;26695:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26691:59;;;;;;26652:105;2501:1;26046:714:::0;;;;:::o;19439:215::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19530:17:::1;19550:21;19530:41;;19590:10;19582:28;;:64;19642:3;19623:16;19611:9;:28;:34;;;;;;19582:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;2601:1;19439:215:::0;:::o;23006:130::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23122:6:::1;23095:16;:24;23112:6;23095:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23006:130:::0;;:::o;14686:116::-;14741:4;14765:29;14773:7;14790:2;14765:7;:29::i;:::-;14758:36;;14686:116;;;:::o;15711:96::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15793:6:::1;15778:12;:21;;;;15711:96:::0;:::o;22415:99::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22499:7:::1;22483:13;;:23;;;;;;;;;;;;;;;;;;22415:99:::0;:::o;12471:37::-;;;;;;;;;;;;;:::o;22742:120::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22848:6:::1;22826:11;:19;22838:6;22826:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22742:120:::0;;:::o;11857:34::-;;;;:::o;11815:35::-;;;;:::o;12617:30::-;;;;;;;;;;;;;:::o;14210:105::-;14276:7;14294:9;:18;14304:7;14294:18;;;;;;;;;;;;;;;;14287:25;;14210:105;;;:::o;12515:39::-;;;;;;;;;;;;;:::o;11275:45::-;;;;:::o;11226:42::-;;;;:::o;11774:34::-;;;;:::o;14126:78::-;14178:7;14196:5;;;;;;;;;;;14189:12;;14126:78;:::o;11444:32::-;;;;;;;;;;;;;:::o;22522:210::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22624:9:::1;22619:106;22639:9;;:16;;22635:1;:20;22619:106;;;22707:6;22677:13;:27;22691:9;;22701:1;22691:12;;;;;;;;;;;;;;;22677:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22657:3;;;;;22619:106;;;;22522:210:::0;;;:::o;13950:84::-;14000:13;14024:7;;;;;;;;;;;;;;;;;14017:14;;13950:84;:::o;11732:35::-;;;;:::o;24515:136::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24605:6:::1;24599:3;:12;24591:21;;;::::0;::::1;;24640:3;24623:14;:20;;;;24515:136:::0;:::o;12318:19::-;;;;;;;;;;;;;:::o;14810:156::-;14890:4;14914:44;14928:10;14940:9;14951:6;14914:13;:44::i;:::-;14907:51;;14810:156;;;;:::o;2618:94::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2700:4:::1;2678:14:::0;:19:::1;2693:3;2678:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2618:94:::0;:::o;15530:173::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15691:4:::1;15662:24;15647:12;;:39;15646:49;;;;;;15631:12;:64;;;;15530:173:::0;:::o;12386:38::-;;;;;;;;;;;;;:::o;12080:36::-;;;;;;;;;;;;;:::o;24813:167::-;24881:7;24908:64;24949:22;:20;:22::i;:::-;24908:36;24921:22;24941:1;24921:15;24931:4;;;;;;;;;;;24921:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;24908:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;24901:71;;24813:167;;;:::o;23664:297::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23833:22:::1;23809:21;;:46;;;;;;;;;;;;;;;;;;23889:21;23866:20;;:44;;;;;;;;;;;;;;;;;;23938:15;23921:14;;:32;;;;;;;;;;;;;;;;;;23664:297:::0;;;:::o;12165:29::-;;;;;;;;;;;;;:::o;14321:133::-;14405:7;14423:11;:19;14435:6;14423:19;;;;;;;;;;;;;;;:28;14443:7;14423:28;;;;;;;;;;;;;;;;14416:35;;14321:133;;;;:::o;23969:156::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24075:8:::1;24061:11;;:22;;;;;;;;;;;;;;;;;;24110:7;24094:13;:23;;;;23969:156:::0;;:::o;12123:35::-;;;;;;;;;;;;;:::o;19662:122::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19758:10:::1;19741:14;:27;;;;19662:122:::0;:::o;2720:97::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2804:5:::1;2782:14;:19;2797:3;2782:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2720:97:::0;:::o;3051:173::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3135:3:::1;3127:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3171:4;3149:14:::0;:19:::1;3164:3;3149:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3191:25;3212:3;3191:25;;;;;;;;;;;;;;;;;;;;3051:173:::0;:::o;22060:347::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22175:4:::1;22157:23;;:6;:23;;;;:41;;;;;22194:4;;;;;;;;;;;22184:14;;:6;:14;;;;22157:41;22149:50;;;::::0;::::1;;22237:6;22210:16;:24;22227:6;22210:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22257:6;22254:146;;;22279:11;;;;;;;;;;;:20;;;22300:6;22308:1;22279:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22254:146;;;22341:11;;;;;;;;;;;:20;;;22362:6;22370:9;:17;22380:6;22370:17;;;;;;;;;;;;;;;;22341:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22254:146;22060:347:::0;;:::o;22870:128::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22984:6:::1;22958:15;:23;22974:6;22958:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;22870:128:::0;;:::o;12287:24::-;;;;;;;;;;;;;:::o;11483:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;2936:107::-;2992:4;3016:14;:19;3031:3;3016:19;;;;;;;;;;;;;;;;;;;;;;;;;3009:26;;2936:107;;;:::o;12035:36::-;;;;:::o;12346:31::-;;;;;;;;;;;;;:::o;132:181::-;190:7;210:9;226:1;222;:5;210:17;;251:1;246;:6;;238:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;304:1;297:8;;;132:181;;;;:::o;17917:330::-;18010:4;18047:53;18069:6;18047:53;;;;;;;;;;;;;;;;;:9;:17;18057:6;18047:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18027:9;:17;18037:6;18027:17;;;;;;;;;;;;;;;:73;;;;18134:32;18159:6;18134:9;:20;18144:9;18134:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18111:9;:20;18121:9;18111:20;;;;;;;;;;;;;;;:55;;;;18199:9;18182:35;;18191:6;18182:35;;;18210:6;18182:35;;;;;;;;;;;;;;;;;;18235:4;18228:11;;17917:330;;;;;:::o;461:192::-;547:7;580:1;575;:6;;583:12;567:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:9;623:1;619;:5;607:17;;644:1;637:8;;;461:192;;;;;:::o;15817:2088::-;15909:4;15929:6;;;;;;;;;;;15926:63;;;15945:41;15960:6;15968:9;15979:6;15945:14;:41::i;:::-;15938:48;;;;15926:63;16005:14;:22;16020:6;16005:22;;;;;;;;;;;;;;;;;;;;;;;;;16004:23;:53;;;;;16032:14;:25;16047:9;16032:25;;;;;;;;;;;;;;;;;;;;;;;;;16031:26;16004:53;16001:127;;;16081:11;;;;;;;;;;;16073:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16001:127;16165:13;;;;;;;;;;;16162:122;;;16203:13;:21;16217:6;16203:21;;;;;;;;;;;;;;;;;;;;;;;;;16202:22;:51;;;;;16229:13;:24;16243:9;16229:24;;;;;;;;;;;;;;;;;;;;;;;;;16228:25;16202:51;16194:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16162:122;16303:14;:22;16318:6;16303:22;;;;;;;;;;;;;;;;;;;;;;;;;16302:23;:53;;;;;16350:4;16329:26;;:9;:26;;;;16302:53;:84;;;;;16381:4;;;;;;;;;;;16360:26;;:9;:26;;;;16302:84;:105;;;;;16403:4;;;;;;;;;;;16390:17;;:9;:17;;;;16302:105;:142;;;;;16424:20;;;;;;;;;;;16411:33;;:9;:33;;;;16302:142;:173;;;;;16461:14;;;;;;;;;;;16448:27;;:9;:27;;;;16302:173;:212;;;;;16493:21;;;;;;;;;;;16480:34;;:9;:34;;;;16302:212;16298:404;;;16530:18;16551:20;16561:9;16551;:20::i;:::-;16530:41;;16619:15;;16608:6;16595:10;:19;16594:40;;16586:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16298:404;;16736:4;;;;;;;;;;;16726:14;;:6;:14;;;:49;;;;;16757:18;;;;;;;;;;;16726:49;:94;;;;;16793:16;:27;16810:9;16793:27;;;;;;;;;;;;;;;;;;;;;;;;;16792:28;16726:94;16722:299;;;16872:15;16845:13;:24;16859:9;16845:24;;;;;;;;;;;;;;;;:42;16837:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16988:21;;;;;;;;;;;16970:39;;:15;:39;16943:13;:24;16957:9;16943:24;;;;;;;;;;;;;;;:66;;;;16722:299;17074:28;17087:6;17095;17074:12;:28::i;:::-;17118:16;:14;:16::i;:::-;17115:35;;;17137:10;:8;:10::i;:::-;17115:35;17209:53;17231:6;17209:53;;;;;;;;;;;;;;;;;:9;:17;17219:6;17209:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;17189:9;:17;17199:6;17189:17;;;;;;;;;;;;;;;:73;;;;17275:22;17300:21;17314:6;17300:13;:21::i;:::-;:76;;17370:6;17300:76;;;17324:43;17332:6;17340;17361:4;;;;;;;;;;;17348:17;;:9;:17;;;17324:7;:43::i;:::-;17300:76;17275:101;;17410:40;17435:14;17410:9;:20;17420:9;17410:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;17387:9;:20;17397:9;17387:20;;;;;;;;;;;;;;;:63;;;;17496:16;:24;17513:6;17496:24;;;;;;;;;;;;;;;;;;;;;;;;;17492:119;;17541:11;;;;;;;;;;;:20;;;17562:6;17570:9;:17;17580:6;17570:17;;;;;;;;;;;;;;;;17541:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17537:63;;;;;;17492:119;17627:16;:27;17644:9;17627:27;;;;;;;;;;;;;;;;;;;;;;;;;17623:129;;17675:11;;;;;;;;;;;:20;;;17696:9;17707;:20;17717:9;17707:20;;;;;;;;;;;;;;;;17675:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17671:69;;;;;;17623:129;17768:11;;;;;;;;;;;:19;;;17788:14;;17768:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17764:51;;;;;;17849:9;17832:43;;17841:6;17832:43;;;17860:14;17832:43;;;;;;;;;;;;;;;;;;17893:4;17886:11;;;15817:2088;;;;;;:::o;319:136::-;377:7;404:43;408:1;411;404:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;397:50;;319:136;;;;:::o;659:250::-;717:7;746:1;741;:6;737:47;;;771:1;764:8;;;;737:47;796:9;812:1;808;:5;796:17;;841:1;836;832;:5;;;;;;:10;824:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;900:1;893:8;;;659:250;;;;;:::o;915:132::-;973:7;1000:39;1004:1;1007;1000:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;993:46;;915:132;;;;:::o;18255:166::-;18352:12;;18342:6;:22;;:49;;;;18368:15;:23;18384:6;18368:23;;;;;;;;;;;;;;;;;;;;;;;;;18342:49;18334:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18255:166;;:::o;19008:197::-;19057:4;19095;;;;;;;;;;;19081:18;;:10;:18;;;;:38;;;;;19113:6;;;;;;;;;;;19112:7;19081:38;:62;;;;;19132:11;;;;;;;;;;;19081:62;:116;;;;;19184:13;;19156:9;:24;19174:4;19156:24;;;;;;;;;;;;;;;;:41;;19081:116;19074:123;;19008:197;:::o;20128:1922::-;12766:4;12757:6;;:13;;;;;;;;;;;;;;;;;;20177:27:::1;20207:60;20223:15;;20240:26;;20207:15;:60::i;:::-;:79;;20274:12;;20207:79;;;20270:1;20207:79;20177:109;;20297:23;20323:59;20380:1;20323:52;20366:8;;20323:38;20341:19;20323:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;20297:85;;20393:20;20416:34;20434:15;20416:13;;:17;;:34;;;;:::i;:::-;20393:57;;20463:21;20501:1;20487:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20463:40;;20532:4;20514;20519:1;20514:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;20558:4;;;;;;;;;;;20548;20553:1;20548:7;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;20575:21;20599;20575:45;;20633:6;;;;;;;;;;;:57;;;20705:12;20732:1;20748:4;20775;20795:15;20633:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20834:17;20854:40;20880:13;20854:21;:25;;:40;;;;:::i;:::-;20834:60;;20907:19;20929:40;20942:26;20966:1;20942:19;:23;;:26;;;;:::i;:::-;20929:8;;:12;;:40;;;;:::i;:::-;20907:62;;20990:26;21019:58;21075:1;21019:51;21058:11;21019:34;21033:19;21019:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;20990:87;;21088:27;21118:45;21151:11;21118:28;21132:13;;21118:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;21088:75;;21174:26;21203:44;21235:11;21203:27;21217:12;;21203:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;21174:73;;21258:20;21281:38;21307:11;21281:21;21295:6;;21281:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;21258:61;;21336:11;;;;;;;;;;;:19;;;21363;21336:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21332:65;;;;;;21408:15;21436:20;;;;;;;;;;;21428:34;;21470:18;21495:5;21428:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21407:98;;;21540:14;;;;;;;;;;;21532:28;;21568:12;21587:5;21532:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21516:81;;;;;21663:5;21650:18;;21702:1;21684:15;:19;21681:362;;;21719:6;;;;;;;;;;;:22;;;21749:18;21795:4;21819:15;21853:1;21873::::0;21893:21:::1;;;;;;;;;;;21933:15;21719:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21983:48;21995:18;22015:15;21983:48;;;;;;;;;;;;;;;;;;;;;;;;21681:362;12772:1;;;;;;;;;;;;12784:5:::0;12775:6;;:14;;;;;;;;;;;;;;;;;;20128:1922::o;18429:114::-;18491:4;18516:11;:19;18528:6;18516:19;;;;;;;;;;;;;;;;;;;;;;;;;18515:20;18508:27;;18429:114;;;:::o;18551:449::-;18631:7;18661:18;18682:6;:29;;18708:3;18682:29;;;18691:14;;18682:29;18661:50;;18722:17;18742:62;18800:3;18783:14;;:20;18742:36;18767:10;18742:20;18753:8;;18742:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;18722:82;;18854:39;18883:9;18854;:24;18872:4;18854:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;18827:9;:24;18845:4;18827:24;;;;;;;;;;;;;;;:66;;;;18934:4;18909:42;;18918:6;18909:42;;;18941:9;18909:42;;;;;;;;;;;;;;;;;;18971:21;18982:9;18971:6;:10;;:21;;;;:::i;:::-;18964:28;;;;18551:449;;;;;:::o;1053:189::-;1139:7;1171:1;1167;:5;1174:12;1159:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1198:9;1214:1;1210;:5;;;;;;1198:17;;1233:1;1226:8;;;1053:189;;;;;:::o

Swarm Source

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