ETH Price: $2,556.10 (+6.34%)
 

Overview

Max Total Supply

1,000,000,000 QUANT

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
5,382,393.0599 QUANT

Value
$0.00
0xe84152d321b397bf81cb4a988a5842460f3c644f
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:
Quantinium

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
    Quantinium is watching you. What will you do? Will you join or will it come for you? 

    If you join then do not wait, for you are the leader of this fate. 
*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.7.4;

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

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

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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

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

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

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

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

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

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

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

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

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

    event OwnershipTransferred(address owner);
}

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

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

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

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

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

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

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

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

    IBEP20 MATIC = IBEP20(0xdAC17F958D2ee523a2206206994597C13D831ec7); //the reward token you want distributed 
    address WBNB = 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;

    //SETMEUP, change this to 1 hour instead of 10mins
    uint256 public minPeriod = 45 minutes;
    uint256 public minDistribution = 1 * (10 ** 18);

    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 = MATIC.balanceOf(address(this));

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

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

        uint256 amount = MATIC.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);
            MATIC.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 Quantinium is IBEP20, Auth {
    using SafeMath for uint256;

    address MATIC = 0xdAC17F958D2ee523a2206206994597C13D831ec7; //Input the token address of whatever your reward is. leave 431,432,433 as is. 
    address WBNB = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; 
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Quantinium";    //name of your token here. 436 is symbol, leave decimals as is. if you want to change decimals, then you need to make sure the math works out with the rest of the code since everywhere else the code is written with assumption of 4 decimals
    string constant _symbol = "QUANT";
    uint8 constant _decimals = 4;

    uint256 _totalSupply = 1 * 10**9 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 3 / 100;

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

    //max wallet holding of 4% 
    uint256 public _maxWalletToken = ( _totalSupply * 3 ) / 100;  // 2 is the percentage of max wallet. if you want smaller or bigger max wallets justa djust 3. 

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

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

    uint256 liquidityFee    = 2; //fees.
    uint256 reflectionFee   = 0;
    uint256 marketingFee    = 1;
    uint256 public totalFee = 3;
    uint256 public sellBias = 0;
    uint256 feeDenominator  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;

    address public lockedPool;
    address public unlockedPool;

    uint256 targetLiquidity = 99;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    DividendDistributor distributor;
    uint256 distributorGas = 500000;

    // Cooldown & timer functionality
    bool public buyCooldownEnabled = false;
    uint8 public cooldownTimerInterval = 30; //this is in seconds. 
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 10 / 10000; // will start swapping once 0.01% of supply is in the swap wallet
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

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

        distributor = new DividendDistributor(address(router));

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

        // No timelock for these people
        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        // TO DO, manually whitelist this
        //isFeeExempt[_presaleContract] = true;
        //isTxLimitExempt[_presaleContract] = true;
        //isDividendExempt[_presaleContract] = true;

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

        // NICE!
        autoLiquidityReceiver = 0x87266dE18c72F1C6899E9DfD2dA5acB4f4Ce8404;
        marketingFeeReceiver = 0x87266dE18c72F1C6899E9DfD2dA5acB4f4Ce8404;

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

    //settting the maximum permitted wallet holding (percent of total supply)
     function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

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

        
        // cooldown timer, so a bot doesnt do quick trades! 1min gap between 2 trades.
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for cooldown between buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }

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


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

        // Liquidity, Maintained at 25%
        if(lockedPool != recipient && lockedPool != sender && unlockedPool != recipient && unlockedPool != sender) {
            if(shouldSwapBack()){ swapBack(); }
        }

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

        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : 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, address recipient, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded");
    }

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

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = (sender != pair ? amount.mul(totalFee.add(sellBias)).div(feeDenominator) : amount.mul(totalFee).div(feeDenominator));

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

        return amount.sub(feeAmount);
    }

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

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

    // 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] = WBNB;

        uint256 balanceBefore = address(this).balance;

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

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

        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);

        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;

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


    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }

    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) external authorized {
        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 setIsMaxWalletExempt(address holder, bool exempt) external authorized {
        isMaxWalletExempt[holder] = exempt;
    }

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

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator, uint256 _sellBias) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        sellBias = _sellBias;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator);
    }

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

    function setStakingPools(address _lockedPool, address _unlockedPool) external authorized {
        lockedPool = _lockedPool;
        unlockedPool = _unlockedPool;
    }

    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 Begins */


 function airdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external authorized {

    uint256 SCCC = 0;

    require(addresses.length == tokens.length,"Mismatch between Address and token count");

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

    require(balanceOf(from) >= SCCC, "Not enough tokens to airdrop");

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

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"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":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","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":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockedPool","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBias","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"}],"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":"_feeDenominator","type":"uint256"},{"internalType":"uint256","name":"_sellBias","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":"setIsMaxWalletExempt","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":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lockedPool","type":"address"},{"internalType":"address","name":"_unlockedPool","type":"address"}],"name":"setStakingPools","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":[],"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":[{"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"},{"inputs":[],"name":"unlockedPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273dac17f958d2ee523a2206206994597c13d831ec7600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460ff16600a0a633b9aca00026006556064600360065402816200015457fe5b046007556001600860006101000a81548160ff0219169083151502179055506064600360065402816200018357fe5b04600a556002601255600060135560016014556003601555600060165560646017556063601c556064601d556207a1206022556000602360006101000a81548160ff021916908315150217905550601e602360016101000a81548160ff021916908360ff1602179055506001602560006101000a81548160ff021916908315150217905550612710600a60065402816200021957fe5b046026553480156200022a57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038257600080fd5b505afa15801562000397573d6000803e3d6000fd5b505050506040513d6020811015620003ae57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200046857600080fd5b505af11580156200047d573d6000803e3d6000fd5b505050506040513d60208110156200049457600080fd5b8101908080519060200190929190505050601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005d99062000b33565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000616573d6000803e3d6000fd5b50602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507387266de18c72f1c6899e9dfd2da5acb4f4ce8404601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507387266de18c72f1c6899e9dfd2da5acb4f4ce8404601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000b41565b6119d18062005dae83390190565b61525d8062000b516000396000f3fe6080604052600436106103545760003560e01c80637d1db4a5116101c6578063bf56b371116100f7578063f0b37c0411610095578063f84ba65d1161006f578063f84ba65d14611393578063f887ea40146113f0578063fe575a8714611431578063fe9fbb80146114985761035b565b8063f0b37c0414611294578063f2fde38b146112e5578063f708a64f146113365761035b565b8063d51ed1c8116100d1578063d51ed1c814611138578063dd62ed3e14611187578063df20fd491461120c578063e96fada2146112535761035b565b8063bf56b3711461106f578063c04a78ad1461109a578063ca33e64c146110f75761035b565b806395d89b4111610164578063a4b45c001161013e578063a4b45c0014610efb578063a8aa1b3114610f6c578063a9059cbb14610fad578063b6a5d7de1461101e5761035b565b806395d89b4114610e055780639d1944f514610e95578063a317234014610ed05761035b565b8063893d20e8116101a0578063893d20e814610c94578063896648c114610cd55780638e2eee8414610d025780638e56b2ca14610d945761035b565b80637d1db4a514610bed5780637d3c0c6514610c1857806382bf293c14610c595761035b565b80632d594567116102a0578063617fe0ed1161023e5780636ddd1713116102185780636ddd171314610b0257806370a0823114610b2f578063722b62ad14610b9457806378109e5414610bc25761035b565b8063617fe0ed14610a37578063658d4b7f14610a64578063693eb77714610ac15761035b565b806350db71fb1161027a57806350db71fb146108fb578063571ac8b0146109585780635c85974f146109bf5780635e562f3b146109fa5761035b565b80632d5945671461081c5780632f54bf6e14610866578063313ce567146108cd5761035b565b806318160ddd1161030d578063201e7991116102e7578063201e7991146106d657806323b872dd1461071b5780632b112e49146107ac5780632d48e896146107d75761035b565b806318160ddd146106455780631da1db5e146106705780631df4ccfc146106ab5761035b565b8063025ff12f146103605780630445b6671461045b57806304a66b481461048657806306fdde03146104e9578063095ea7b3146105795780631161ae39146105ea5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b506104596004803603606081101561038357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156103c057600080fd5b8201836020820111156103d257600080fd5b803590602001918460208302840111640100000000831117156103f457600080fd5b90919293919293908035906020019064010000000081111561041557600080fd5b82018360208201111561042757600080fd5b8035906020019184602083028401116401000000008311171561044957600080fd5b90919293919293905050506114ff565b005b34801561046757600080fd5b506104706119eb565b6040518082815260200191505060405180910390f35b34801561049257600080fd5b506104e7600480360360a08110156104a957600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506119f1565b005b3480156104f557600080fd5b506104fe611ad1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561053e578082015181840152602081019050610523565b50505050905090810190601f16801561056b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561058557600080fd5b506105d26004803603604081101561059c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b0e565b60405180821515815260200191505060405180910390f35b3480156105f657600080fd5b5061062d6004803603604081101561060d57600080fd5b810190808035906020019092919080359060200190929190505050611c00565b60405180821515815260200191505060405180910390f35b34801561065157600080fd5b5061065a611c15565b6040518082815260200191505060405180910390f35b34801561067c57600080fd5b506106a96004803603602081101561069357600080fd5b8101908080359060200190929190505050611c1f565b005b3480156106b757600080fd5b506106c0611d18565b6040518082815260200191505060405180910390f35b3480156106e257600080fd5b50610719600480360360408110156106f957600080fd5b810190808035906020019092919080359060200190929190505050611d1e565b005b34801561072757600080fd5b506107946004803603606081101561073e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dab565b60405180821515815260200191505060405180910390f35b3480156107b857600080fd5b506107c1611fab565b6040518082815260200191505060405180910390f35b3480156107e357600080fd5b5061081a600480360360408110156107fa57600080fd5b81019080803590602001909291908035906020019092919050505061202d565b005b34801561082857600080fd5b506108646004803603604081101561083f57600080fd5b81019080803515159060200190929190803560ff169060200190929190505050612141565b005b34801561087257600080fd5b506108b56004803603602081101561088957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f5565b60405180821515815260200191505060405180910390f35b3480156108d957600080fd5b506108e261224e565b604051808260ff16815260200191505060405180910390f35b34801561090757600080fd5b506109566004803603604081101561091e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612257565b005b34801561096457600080fd5b506109a76004803603602081101561097b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061232d565b60405180821515815260200191505060405180910390f35b3480156109cb57600080fd5b506109f8600480360360208110156109e257600080fd5b8101908080359060200190929190505050612360565b005b348015610a0657600080fd5b50610a3560048036036020811015610a1d57600080fd5b810190808035151590602001909291905050506123e5565b005b348015610a4357600080fd5b50610a4c61247d565b60405180821515815260200191505060405180910390f35b348015610a7057600080fd5b50610abf60048036036040811015610a8757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612490565b005b348015610acd57600080fd5b50610ad6612566565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b0e57600080fd5b50610b1761258c565b60405180821515815260200191505060405180910390f35b348015610b3b57600080fd5b50610b7e60048036036020811015610b5257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061259f565b6040518082815260200191505060405180910390f35b348015610ba057600080fd5b50610ba96125e8565b604051808260ff16815260200191505060405180910390f35b348015610bce57600080fd5b50610bd76125fb565b6040518082815260200191505060405180910390f35b348015610bf957600080fd5b50610c02612601565b6040518082815260200191505060405180910390f35b348015610c2457600080fd5b50610c2d612607565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c6557600080fd5b50610c9260048036036020811015610c7c57600080fd5b810190808035906020019092919050505061262d565b005b348015610ca057600080fd5b50610ca96126c0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ce157600080fd5b50610cea6126e9565b60405180821515815260200191505060405180910390f35b348015610d0e57600080fd5b50610d9260048036036040811015610d2557600080fd5b8101908080359060200190640100000000811115610d4257600080fd5b820183602082011115610d5457600080fd5b80359060200191846020830284011164010000000083111715610d7657600080fd5b90919293919293908035151590602001909291905050506126fc565b005b348015610da057600080fd5b50610e0360048036036040811015610db757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612815565b005b348015610e1157600080fd5b50610e1a612916565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e5a578082015181840152602081019050610e3f565b50505050905090810190601f168015610e875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ea157600080fd5b50610ece60048036036020811015610eb857600080fd5b8101908080359060200190929190505050612953565b005b348015610edc57600080fd5b50610ee56129e7565b6040518082815260200191505060405180910390f35b348015610f0757600080fd5b50610f6a60048036036040811015610f1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129ed565b005b348015610f7857600080fd5b50610f81612aee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fb957600080fd5b5061100660048036036040811015610fd057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b14565b60405180821515815260200191505060405180910390f35b34801561102a57600080fd5b5061106d6004803603602081101561104157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b29565b005b34801561107b57600080fd5b50611084612bfe565b6040518082815260200191505060405180910390f35b3480156110a657600080fd5b506110f5600480360360408110156110bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612c04565b005b34801561110357600080fd5b5061110c612cda565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561114457600080fd5b506111716004803603602081101561115b57600080fd5b8101908080359060200190929190505050612d00565b6040518082815260200191505060405180910390f35b34801561119357600080fd5b506111f6600480360360408110156111aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d72565b6040518082815260200191505060405180910390f35b34801561121857600080fd5b506112516004803603604081101561122f57600080fd5b8101908080351515906020019092919080359060200190929190505050612df9565b005b34801561125f57600080fd5b50611268612e99565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156112a057600080fd5b506112e3600480360360208110156112b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ebf565b005b3480156112f157600080fd5b506113346004803603602081101561130857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f95565b005b34801561134257600080fd5b506113916004803603604081101561135957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506130f7565b005b34801561139f57600080fd5b506113ee600480360360408110156113b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613402565b005b3480156113fc57600080fd5b506114056134d8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561143d57600080fd5b506114806004803603602081101561145457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134fe565b60405180821515815260200191505060405180910390f35b3480156114a457600080fd5b506114e7600480360360208110156114bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061351e565b60405180821515815260200191505060405180910390f35b6115083361351e565b61157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008282905085859050146115da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061517c6028913960400191505060405180910390fd5b60005b8585905081101561160c578383828181106115f457fe5b905060200201358201915080806001019150506115dd565b50806116178761259f565b101561168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f700000000081525060200191505060405180910390fd5b60005b858590508110156118a3576116de878787848181106116a957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168686858181106116d257fe5b90506020020135613574565b50601160008787848181106116ef57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661189657602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968787848181106117a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600b60008a8a878181106117cf57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561187a57600080fd5b505af192505050801561188b575060015b61189457611895565b5b5b808060010191505061168e565b50601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119e357602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156119c757600080fd5b505af19250505080156119d8575060015b6119e1576119e2565b5b5b505050505050565b60265481565b6119fa3361351e565b611a6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b84601281905550836013819055508260148190555080601681905550611aad83611a9f868861374790919063ffffffff16565b61374790919063ffffffff16565b6015819055508160178190555060175460155410611aca57600080fd5b5050505050565b60606040518060400160405280600a81526020017f5175616e74696e69756d00000000000000000000000000000000000000000000815250905090565b600081600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600082611c0c83612d00565b11905092915050565b6000600654905090565b611c28336121f5565b611c9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484840281611ce757fe5b049081150290604051600060405180830381858888f19350505050158015611d13573d6000803e3d6000fd5b505050565b60155481565b611d273361351e565b611d99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601c8190555080601d819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611f9757611f16826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137cf9092919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611fa284848461388f565b90509392505050565b6000612028611fdb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661259f565b61201a612009600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661259f565b6006546144da90919063ffffffff16565b6144da90919063ffffffff16565b905090565b6120363361351e565b6120a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561212557600080fd5b505af1158015612139573d6000803e3d6000fd5b505050505050565b61214a336121f5565b6121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602360006101000a81548160ff02191690831515021790555080602360016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006004905090565b6122603361351e565b6122d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000612359827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611b0e565b9050919050565b6123693361351e565b6123db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b6123ee336121f5565b612460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600860006101000a81548160ff02191690831515021790555050565b602360009054906101000a900460ff1681565b6124993361351e565b61250b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602560009054906101000a900460ff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b602360019054906101000a900460ff1681565b600a5481565b60075481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612636336121f5565b6126a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60648160065402816126b657fe5b04600a8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900460ff1681565b6127053361351e565b612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60005b8383905081101561280f57816009600086868581811061279657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600101905061277a565b50505050565b61281e3361351e565b612890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60606040518060400160405280600581526020017f5155414e54000000000000000000000000000000000000000000000000000000815250905090565b61295c3361351e565b6129ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b081106129dd57600080fd5b8060228190555050565b60165481565b6129f63361351e565b612a68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612b2133848461388f565b905092915050565b612b32336121f5565b612ba4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60205481565b612c0d3361351e565b612c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612d6b612d0d611fab565b612d5d612d4e6002612d40601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661259f565b61452490919063ffffffff16565b8561452490919063ffffffff16565b6145aa90919063ffffffff16565b9050919050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612e023361351e565b612e74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602560006101000a81548160ff021916908315150217905550806026819055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ec8336121f5565b612f3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612f9e336121f5565b613010576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6131003361351e565b613172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156131fc5750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61320557600080fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561331357602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050506133fe565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156133e557600080fd5b505af11580156133f9573d6000803e3d6000fd5b505050505b5050565b61340b3361351e565b61347d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006135ff826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137cf9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369482600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374790919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000808284019050838110156137c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600083831115829061387c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613841578082015181840152602081019050613826565b50505050905090810190601f16801561386e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602760009054906101000a900460ff16156138b8576138b1848484613574565b90506144d3565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561393e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156139985750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156139f25750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613a4c5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613aa65750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613afc5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b525750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613bc3576000613b628461259f565b9050600a548382011115613bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e8152602001806151ea603e913960400191505060405180910390fd5b505b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015613c2c5750602360009054906101000a900460ff165b8015613c825750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613d775742602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806151a46025913960400191505060405180910390fd5b602360019054906101000a900460ff1660ff164201602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600860009054906101000a900460ff1615613e4d57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f426c61636b6c697374656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b613e588484846145f4565b8273ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613f0457508373ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015613f5e57508273ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015613fb857508373ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15613fd457613fc5614719565b15613fd357613fd26147f0565b5b5b61405d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137cf9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006140ac8585614e2c565b6140b657826140c1565b6140c08584614ed8565b5b905061411581600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374790919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661429757602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561427b57600080fd5b505af192505050801561428c575060015b61429557614296565b5b5b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166143d657602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156143ba57600080fd5b505af19250505080156143cb575060015b6143d4576143d5565b5b5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796022546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561444d57600080fd5b505af192505050801561445e575060015b61446757614468565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b600061451c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506137cf565b905092915050565b60008083141561453757600090506145a4565b600082840290508284828161454857fe5b041461459f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806151c96021913960400191505060405180910390fd5b809150505b92915050565b60006145ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506150b5565b905092915050565b6007548111158061464e5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806146a25750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b614714576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b505050565b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156147865750602760009054906101000a900460ff16155b801561479e5750602560009054906101000a900460ff165b80156147eb5750602654600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602760006101000a81548160ff021916908315150217905550600061481b601c54601d54611c00565b6148275760125461482a565b60005b9050600061486a600261485c60155461484e8660265461452490919063ffffffff16565b6145aa90919063ffffffff16565b6145aa90919063ffffffff16565b90506000614883826026546144da90919063ffffffff16565b90506060600267ffffffffffffffff8111801561489f57600080fd5b506040519080825280602002602001820160405280156148ce5781602001602082028036833780820191505090505b50905030816000815181106148df57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061494957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614a4c578082015181840152602081019050614a31565b505050509050019650505050505050600060405180830381600087803b158015614a7557600080fd5b505af1158015614a89573d6000803e3d6000fd5b505050506000614aa282476144da90919063ffffffff16565b90506000614ace614abd6002896145aa90919063ffffffff16565b6015546144da90919063ffffffff16565b90506000614b0a6002614afc84614aee8c8861452490919063ffffffff16565b6145aa90919063ffffffff16565b6145aa90919063ffffffff16565b90506000614b3583614b276013548761452490919063ffffffff16565b6145aa90919063ffffffff16565b90506000614b6084614b526014548861452490919063ffffffff16565b6145aa90919063ffffffff16565b9050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015614bcc57600080fd5b505af193505050508015614bde575060015b614be757614be8565b5b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d8060008114614c6f576040519150601f19603f3d011682016040523d82523d6000602084013e614c74565b606091505b505090506000905060008a1115614e0457601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015614d7157600080fd5b505af1158015614d85573d6000803e3d6000fd5b50505050506040513d6060811015614d9c57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051808381526020018281526020019250505060405180910390a15b50505050505050505050506000602760006101000a81548160ff021916908315150217905550565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680614ecf5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b600080601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614f5f57614f5a601754614f4c6015548661452490919063ffffffff16565b6145aa90919063ffffffff16565b614f9d565b614f9c601754614f8e614f7f60165460155461374790919063ffffffff16565b8661452490919063ffffffff16565b6145aa90919063ffffffff16565b5b9050614ff181600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374790919063ffffffff16565b600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36150ac81846144da90919063ffffffff16565b91505092915050565b60008083118290615161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561512657808201518184015260208101905061510b565b50505050905090810190601f1680156151535780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161516d57fe5b04905080915050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220636f6f6c646f776e206265747765656e2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea2646970667358221220c6c79ef5297bdf70eec9d28e504b779f64c4e1e43235af28ffd39ac2ea4d2ff764736f6c63430007040033608060405273dac17f958d2ee523a2206206994597c13d831ec7600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610a8c600d55670de0b6b3a7640000600e553480156100df57600080fd5b506040516119d13803806119d18339818101604052602081101561010257600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561016257737a250d5630b4cf539739df2c5dacb4c659f2488d610164565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506117dd806101f46000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed1461033b578063f0fc6bca14610366578063ffb2c4791461037d578063ffd49c84146103b8576100dd565b8063ce7c2ac214610293578063d0e30db014610306578063e2d2e21914610310576100dd565b80632d48e896116100bb5780632d48e896146101cd5780633a98ef39146102125780634fab0ae81461023d578063997664d714610268576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610168575b600080fd5b3480156100ee57600080fd5b506100f76103e3565b6040518082815260200191505060405180910390f35b34801561011957600080fd5b506101666004803603604081101561013057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103e9565b005b34801561017457600080fd5b506101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a8565b6040518082815260200191505060405180910390f35b3480156101d957600080fd5b50610210600480360360408110156101f057600080fd5b8101908080359060200190929190803590602001909291905050506107c2565b005b34801561021e57600080fd5b5061022761082c565b6040518082815260200191505060405180910390f35b34801561024957600080fd5b50610252610832565b6040518082815260200191505060405180910390f35b34801561027457600080fd5b5061027d610838565b6040518082815260200191505060405180910390f35b34801561029f57600080fd5b506102e2600480360360208110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b60405180848152602001838152602001828152602001935050505060405180910390f35b61030e610868565b005b34801561031c57600080fd5b50610325610ce3565b6040518082815260200191505060405180910390f35b34801561034757600080fd5b50610350610ce9565b6040518082815260200191505060405180910390f35b34801561037257600080fd5b5061037b610cef565b005b34801561038957600080fd5b506103b6600480360360208110156103a057600080fd5b8101908080359060200190929190505050610cfa565b005b3480156103c457600080fd5b506103cd610e74565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044157600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104965761049582610e7a565b5b6000811180156104e857506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104fb576104f682611140565b61055d565b60008114801561054d57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561055c5761055b826111ef565b5b5b6105c6816105b8600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546113c890919063ffffffff16565b61141290919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061065e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106fd57600090506107bd565b600061074a600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107a5576000925050506107bd565b6107b881836113c890919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081a57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c057600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561094b57600080fd5b505afa15801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b810190808051906020019092919050505090506060600267ffffffffffffffff811180156109a257600080fd5b506040519080825280602002602001820160405280156109d15781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610a0457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a6e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610b66578082015181840152602081019050610b4b565b50505050905001955050505050506000604051808303818588803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b50505050506000610c7e83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c3557600080fd5b505afa158015610c49573d6000803e3d6000fd5b505050506040513d6020811015610c5f57600080fd5b81019080805190602001909291905050506113c890919063ffffffff16565b9050610c958160095461141290919063ffffffff16565b600981905550610cd8610cc7600854610cb984600c546114cc90919063ffffffff16565b61155290919063ffffffff16565b600b5461141290919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610cf833610e7a565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5257600080fd5b600060048054905090506000811415610d6b5750610e71565b6000805a905060005b8483108015610d8257508381105b15610e6c5783600f5410610d99576000600f819055505b610ddb6004600f5481548110610dab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661159c565b15610e2357610e226004600f5481548110610df257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e7a565b5b610e48610e395a846113c890919063ffffffff16565b8461141290919063ffffffff16565b92505a9150600f600081548092919060010191905055508080600101915050610d74565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610eca5761113d565b6000610ed5826106a8565b9050600081111561113b57610ef581600a5461141290919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050506040513d6020811015610fb857600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061106381600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461141290919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506110f4600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046001600480549050038154811061120457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061127b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600060046001600480549050038154811061131c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061139057fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061140a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611600565b905092915050565b600080828401905083811015611490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006114c5600c546114b7600b54856114cc90919063ffffffff16565b61155290919063ffffffff16565b9050919050565b6000808314156114df576000905061154c565b60008284029050828482816114f057fe5b0414611547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117876021913960400191505060405180910390fd5b809150505b92915050565b600061159483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116c0565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156115f95750600e546115f7836106a8565b115b9050919050565b60008383111582906116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611672578082015181840152602081019050611657565b50505050905090810190601f16801561169f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808311829061176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611731578082015181840152602081019050611716565b50505050905090810190601f16801561175e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161177857fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220ad39b904849e6aea73610092cb37f973379c7397b77728c348f74c2b41bd16c064736f6c63430007040033

Deployed Bytecode

0x6080604052600436106103545760003560e01c80637d1db4a5116101c6578063bf56b371116100f7578063f0b37c0411610095578063f84ba65d1161006f578063f84ba65d14611393578063f887ea40146113f0578063fe575a8714611431578063fe9fbb80146114985761035b565b8063f0b37c0414611294578063f2fde38b146112e5578063f708a64f146113365761035b565b8063d51ed1c8116100d1578063d51ed1c814611138578063dd62ed3e14611187578063df20fd491461120c578063e96fada2146112535761035b565b8063bf56b3711461106f578063c04a78ad1461109a578063ca33e64c146110f75761035b565b806395d89b4111610164578063a4b45c001161013e578063a4b45c0014610efb578063a8aa1b3114610f6c578063a9059cbb14610fad578063b6a5d7de1461101e5761035b565b806395d89b4114610e055780639d1944f514610e95578063a317234014610ed05761035b565b8063893d20e8116101a0578063893d20e814610c94578063896648c114610cd55780638e2eee8414610d025780638e56b2ca14610d945761035b565b80637d1db4a514610bed5780637d3c0c6514610c1857806382bf293c14610c595761035b565b80632d594567116102a0578063617fe0ed1161023e5780636ddd1713116102185780636ddd171314610b0257806370a0823114610b2f578063722b62ad14610b9457806378109e5414610bc25761035b565b8063617fe0ed14610a37578063658d4b7f14610a64578063693eb77714610ac15761035b565b806350db71fb1161027a57806350db71fb146108fb578063571ac8b0146109585780635c85974f146109bf5780635e562f3b146109fa5761035b565b80632d5945671461081c5780632f54bf6e14610866578063313ce567146108cd5761035b565b806318160ddd1161030d578063201e7991116102e7578063201e7991146106d657806323b872dd1461071b5780632b112e49146107ac5780632d48e896146107d75761035b565b806318160ddd146106455780631da1db5e146106705780631df4ccfc146106ab5761035b565b8063025ff12f146103605780630445b6671461045b57806304a66b481461048657806306fdde03146104e9578063095ea7b3146105795780631161ae39146105ea5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b506104596004803603606081101561038357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156103c057600080fd5b8201836020820111156103d257600080fd5b803590602001918460208302840111640100000000831117156103f457600080fd5b90919293919293908035906020019064010000000081111561041557600080fd5b82018360208201111561042757600080fd5b8035906020019184602083028401116401000000008311171561044957600080fd5b90919293919293905050506114ff565b005b34801561046757600080fd5b506104706119eb565b6040518082815260200191505060405180910390f35b34801561049257600080fd5b506104e7600480360360a08110156104a957600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506119f1565b005b3480156104f557600080fd5b506104fe611ad1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561053e578082015181840152602081019050610523565b50505050905090810190601f16801561056b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561058557600080fd5b506105d26004803603604081101561059c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b0e565b60405180821515815260200191505060405180910390f35b3480156105f657600080fd5b5061062d6004803603604081101561060d57600080fd5b810190808035906020019092919080359060200190929190505050611c00565b60405180821515815260200191505060405180910390f35b34801561065157600080fd5b5061065a611c15565b6040518082815260200191505060405180910390f35b34801561067c57600080fd5b506106a96004803603602081101561069357600080fd5b8101908080359060200190929190505050611c1f565b005b3480156106b757600080fd5b506106c0611d18565b6040518082815260200191505060405180910390f35b3480156106e257600080fd5b50610719600480360360408110156106f957600080fd5b810190808035906020019092919080359060200190929190505050611d1e565b005b34801561072757600080fd5b506107946004803603606081101561073e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dab565b60405180821515815260200191505060405180910390f35b3480156107b857600080fd5b506107c1611fab565b6040518082815260200191505060405180910390f35b3480156107e357600080fd5b5061081a600480360360408110156107fa57600080fd5b81019080803590602001909291908035906020019092919050505061202d565b005b34801561082857600080fd5b506108646004803603604081101561083f57600080fd5b81019080803515159060200190929190803560ff169060200190929190505050612141565b005b34801561087257600080fd5b506108b56004803603602081101561088957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f5565b60405180821515815260200191505060405180910390f35b3480156108d957600080fd5b506108e261224e565b604051808260ff16815260200191505060405180910390f35b34801561090757600080fd5b506109566004803603604081101561091e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612257565b005b34801561096457600080fd5b506109a76004803603602081101561097b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061232d565b60405180821515815260200191505060405180910390f35b3480156109cb57600080fd5b506109f8600480360360208110156109e257600080fd5b8101908080359060200190929190505050612360565b005b348015610a0657600080fd5b50610a3560048036036020811015610a1d57600080fd5b810190808035151590602001909291905050506123e5565b005b348015610a4357600080fd5b50610a4c61247d565b60405180821515815260200191505060405180910390f35b348015610a7057600080fd5b50610abf60048036036040811015610a8757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612490565b005b348015610acd57600080fd5b50610ad6612566565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b0e57600080fd5b50610b1761258c565b60405180821515815260200191505060405180910390f35b348015610b3b57600080fd5b50610b7e60048036036020811015610b5257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061259f565b6040518082815260200191505060405180910390f35b348015610ba057600080fd5b50610ba96125e8565b604051808260ff16815260200191505060405180910390f35b348015610bce57600080fd5b50610bd76125fb565b6040518082815260200191505060405180910390f35b348015610bf957600080fd5b50610c02612601565b6040518082815260200191505060405180910390f35b348015610c2457600080fd5b50610c2d612607565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c6557600080fd5b50610c9260048036036020811015610c7c57600080fd5b810190808035906020019092919050505061262d565b005b348015610ca057600080fd5b50610ca96126c0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ce157600080fd5b50610cea6126e9565b60405180821515815260200191505060405180910390f35b348015610d0e57600080fd5b50610d9260048036036040811015610d2557600080fd5b8101908080359060200190640100000000811115610d4257600080fd5b820183602082011115610d5457600080fd5b80359060200191846020830284011164010000000083111715610d7657600080fd5b90919293919293908035151590602001909291905050506126fc565b005b348015610da057600080fd5b50610e0360048036036040811015610db757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612815565b005b348015610e1157600080fd5b50610e1a612916565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e5a578082015181840152602081019050610e3f565b50505050905090810190601f168015610e875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ea157600080fd5b50610ece60048036036020811015610eb857600080fd5b8101908080359060200190929190505050612953565b005b348015610edc57600080fd5b50610ee56129e7565b6040518082815260200191505060405180910390f35b348015610f0757600080fd5b50610f6a60048036036040811015610f1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129ed565b005b348015610f7857600080fd5b50610f81612aee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fb957600080fd5b5061100660048036036040811015610fd057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b14565b60405180821515815260200191505060405180910390f35b34801561102a57600080fd5b5061106d6004803603602081101561104157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b29565b005b34801561107b57600080fd5b50611084612bfe565b6040518082815260200191505060405180910390f35b3480156110a657600080fd5b506110f5600480360360408110156110bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612c04565b005b34801561110357600080fd5b5061110c612cda565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561114457600080fd5b506111716004803603602081101561115b57600080fd5b8101908080359060200190929190505050612d00565b6040518082815260200191505060405180910390f35b34801561119357600080fd5b506111f6600480360360408110156111aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d72565b6040518082815260200191505060405180910390f35b34801561121857600080fd5b506112516004803603604081101561122f57600080fd5b8101908080351515906020019092919080359060200190929190505050612df9565b005b34801561125f57600080fd5b50611268612e99565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156112a057600080fd5b506112e3600480360360208110156112b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ebf565b005b3480156112f157600080fd5b506113346004803603602081101561130857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f95565b005b34801561134257600080fd5b506113916004803603604081101561135957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506130f7565b005b34801561139f57600080fd5b506113ee600480360360408110156113b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613402565b005b3480156113fc57600080fd5b506114056134d8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561143d57600080fd5b506114806004803603602081101561145457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134fe565b60405180821515815260200191505060405180910390f35b3480156114a457600080fd5b506114e7600480360360208110156114bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061351e565b60405180821515815260200191505060405180910390f35b6115083361351e565b61157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008282905085859050146115da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061517c6028913960400191505060405180910390fd5b60005b8585905081101561160c578383828181106115f457fe5b905060200201358201915080806001019150506115dd565b50806116178761259f565b101561168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f700000000081525060200191505060405180910390fd5b60005b858590508110156118a3576116de878787848181106116a957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168686858181106116d257fe5b90506020020135613574565b50601160008787848181106116ef57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661189657602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968787848181106117a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600b60008a8a878181106117cf57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561187a57600080fd5b505af192505050801561188b575060015b61189457611895565b5b5b808060010191505061168e565b50601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119e357602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156119c757600080fd5b505af19250505080156119d8575060015b6119e1576119e2565b5b5b505050505050565b60265481565b6119fa3361351e565b611a6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b84601281905550836013819055508260148190555080601681905550611aad83611a9f868861374790919063ffffffff16565b61374790919063ffffffff16565b6015819055508160178190555060175460155410611aca57600080fd5b5050505050565b60606040518060400160405280600a81526020017f5175616e74696e69756d00000000000000000000000000000000000000000000815250905090565b600081600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600082611c0c83612d00565b11905092915050565b6000600654905090565b611c28336121f5565b611c9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484840281611ce757fe5b049081150290604051600060405180830381858888f19350505050158015611d13573d6000803e3d6000fd5b505050565b60155481565b611d273361351e565b611d99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601c8190555080601d819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611f9757611f16826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137cf9092919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611fa284848461388f565b90509392505050565b6000612028611fdb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661259f565b61201a612009600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661259f565b6006546144da90919063ffffffff16565b6144da90919063ffffffff16565b905090565b6120363361351e565b6120a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561212557600080fd5b505af1158015612139573d6000803e3d6000fd5b505050505050565b61214a336121f5565b6121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602360006101000a81548160ff02191690831515021790555080602360016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006004905090565b6122603361351e565b6122d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000612359827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611b0e565b9050919050565b6123693361351e565b6123db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b6123ee336121f5565b612460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600860006101000a81548160ff02191690831515021790555050565b602360009054906101000a900460ff1681565b6124993361351e565b61250b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602560009054906101000a900460ff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b602360019054906101000a900460ff1681565b600a5481565b60075481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612636336121f5565b6126a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60648160065402816126b657fe5b04600a8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900460ff1681565b6127053361351e565b612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60005b8383905081101561280f57816009600086868581811061279657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600101905061277a565b50505050565b61281e3361351e565b612890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60606040518060400160405280600581526020017f5155414e54000000000000000000000000000000000000000000000000000000815250905090565b61295c3361351e565b6129ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b081106129dd57600080fd5b8060228190555050565b60165481565b6129f63361351e565b612a68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612b2133848461388f565b905092915050565b612b32336121f5565b612ba4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60205481565b612c0d3361351e565b612c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612d6b612d0d611fab565b612d5d612d4e6002612d40601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661259f565b61452490919063ffffffff16565b8561452490919063ffffffff16565b6145aa90919063ffffffff16565b9050919050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612e023361351e565b612e74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602560006101000a81548160ff021916908315150217905550806026819055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ec8336121f5565b612f3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612f9e336121f5565b613010576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6131003361351e565b613172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156131fc5750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61320557600080fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561331357602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050506133fe565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156133e557600080fd5b505af11580156133f9573d6000803e3d6000fd5b505050505b5050565b61340b3361351e565b61347d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006135ff826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137cf9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369482600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374790919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000808284019050838110156137c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600083831115829061387c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613841578082015181840152602081019050613826565b50505050905090810190601f16801561386e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602760009054906101000a900460ff16156138b8576138b1848484613574565b90506144d3565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561393e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156139985750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156139f25750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613a4c5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613aa65750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613afc5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b525750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613bc3576000613b628461259f565b9050600a548382011115613bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e8152602001806151ea603e913960400191505060405180910390fd5b505b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015613c2c5750602360009054906101000a900460ff165b8015613c825750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613d775742602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806151a46025913960400191505060405180910390fd5b602360019054906101000a900460ff1660ff164201602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600860009054906101000a900460ff1615613e4d57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f426c61636b6c697374656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b613e588484846145f4565b8273ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613f0457508373ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015613f5e57508273ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015613fb857508373ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15613fd457613fc5614719565b15613fd357613fd26147f0565b5b5b61405d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137cf9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006140ac8585614e2c565b6140b657826140c1565b6140c08584614ed8565b5b905061411581600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374790919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661429757602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561427b57600080fd5b505af192505050801561428c575060015b61429557614296565b5b5b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166143d657602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156143ba57600080fd5b505af19250505080156143cb575060015b6143d4576143d5565b5b5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796022546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561444d57600080fd5b505af192505050801561445e575060015b61446757614468565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b600061451c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506137cf565b905092915050565b60008083141561453757600090506145a4565b600082840290508284828161454857fe5b041461459f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806151c96021913960400191505060405180910390fd5b809150505b92915050565b60006145ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506150b5565b905092915050565b6007548111158061464e5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806146a25750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b614714576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b505050565b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156147865750602760009054906101000a900460ff16155b801561479e5750602560009054906101000a900460ff165b80156147eb5750602654600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602760006101000a81548160ff021916908315150217905550600061481b601c54601d54611c00565b6148275760125461482a565b60005b9050600061486a600261485c60155461484e8660265461452490919063ffffffff16565b6145aa90919063ffffffff16565b6145aa90919063ffffffff16565b90506000614883826026546144da90919063ffffffff16565b90506060600267ffffffffffffffff8111801561489f57600080fd5b506040519080825280602002602001820160405280156148ce5781602001602082028036833780820191505090505b50905030816000815181106148df57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061494957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614a4c578082015181840152602081019050614a31565b505050509050019650505050505050600060405180830381600087803b158015614a7557600080fd5b505af1158015614a89573d6000803e3d6000fd5b505050506000614aa282476144da90919063ffffffff16565b90506000614ace614abd6002896145aa90919063ffffffff16565b6015546144da90919063ffffffff16565b90506000614b0a6002614afc84614aee8c8861452490919063ffffffff16565b6145aa90919063ffffffff16565b6145aa90919063ffffffff16565b90506000614b3583614b276013548761452490919063ffffffff16565b6145aa90919063ffffffff16565b90506000614b6084614b526014548861452490919063ffffffff16565b6145aa90919063ffffffff16565b9050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015614bcc57600080fd5b505af193505050508015614bde575060015b614be757614be8565b5b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d8060008114614c6f576040519150601f19603f3d011682016040523d82523d6000602084013e614c74565b606091505b505090506000905060008a1115614e0457601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015614d7157600080fd5b505af1158015614d85573d6000803e3d6000fd5b50505050506040513d6060811015614d9c57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051808381526020018281526020019250505060405180910390a15b50505050505050505050506000602760006101000a81548160ff021916908315150217905550565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680614ecf5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b600080601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614f5f57614f5a601754614f4c6015548661452490919063ffffffff16565b6145aa90919063ffffffff16565b614f9d565b614f9c601754614f8e614f7f60165460155461374790919063ffffffff16565b8661452490919063ffffffff16565b6145aa90919063ffffffff16565b5b9050614ff181600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374790919063ffffffff16565b600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36150ac81846144da90919063ffffffff16565b91505092915050565b60008083118290615161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561512657808201518184015260208101905061510b565b50505050905090810190601f1680156151535780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161516d57fe5b04905080915050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220636f6f6c646f776e206265747765656e2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea2646970667358221220c6c79ef5297bdf70eec9d28e504b779f64c4e1e43235af28ffd39ac2ea4d2ff764736f6c63430007040033

Deployed Bytecode Sourcemap

11763:15867:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26771:790;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14185:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24673:471;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15970:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16392:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26586:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15700:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21132:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13423:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25731:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16904:364;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26261:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25922:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21396:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3530:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15794:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24535:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16616:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23344:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23803:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13978:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24131:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13616:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14148:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16140:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14023:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12791:59;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12603:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13648:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17356:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16056:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12664:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23910:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25388:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15880:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26113:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13457:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25152:228;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13799:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16740:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3203:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13827:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24395:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13529:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26411:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16251:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25567:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13572:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3373:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3930:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23448:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24259:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13768:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12703:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3704:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26771:790;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26888:12:::1;26941:6;;:13;;26921:9;;:16;;:33;26913:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27011:6;27007:82;27025:9;;:16;;27021:1;:20;27007:82;;;27072:6;;27079:1;27072:9;;;;;;;;;;;;;27065:4;:16;27058:23;;27043:3;;;;;;;27007:82;;;;27124:4;27105:15;27115:4;27105:9;:15::i;:::-;:23;;27097:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;27174:6;27170:250;27188:9;;:16;;27184:1;:20;27170:250;;;27221:43;27236:4;27241:9;;27251:1;27241:12;;;;;;;;;;;;;;;27254:6;;27261:1;27254:9;;;;;;;;;;;;;27221:14;:43::i;:::-;;27279:16;:30;27296:9;;27306:1;27296:12;;;;;;;;;;;;;;;27279:30;;;;;;;;;;;;;;;;;;;;;;;;;27275:138;;27330:11;;;;;;;;;;;:20;;;27351:9;;27361:1;27351:12;;;;;;;;;;;;;;;27365:9;:23;27375:9;;27385:1;27375:12;;;;;;;;;;;;;;;27365:23;;;;;;;;;;;;;;;;27330:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27326:75;;;;;;27275:138;27206:3;;;;;;;27170:250;;;;27457:16;:22;27474:4;27457:22;;;;;;;;;;;;;;;;;;;;;;;;;27453:105;;27496:11;;;;;;;;;;;:20;;;27517:4;27523:9;:15;27533:4;27523:15;;;;;;;;;;;;;;;;27496:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27492:59;;;;;;27453:105;3130:1;26771:790:::0;;;;;:::o;14185:56::-;;;;:::o;24673:471::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24850:13:::1;24835:12;:28;;;;24890:14;24874:13;:30;;;;24930:13;24915:12;:28;;;;24965:9;24954:8;:20;;;;24996:52;25034:13;24996:33;25014:14;24996:13;:17;;:33;;;;:::i;:::-;:37;;:52;;;;:::i;:::-;24985:8;:63;;;;25076:15;25059:14;:32;;;;25121:14;;25110:8;;:25;25102:34;;;::::0;::::1;;24673:471:::0;;;;;:::o;15970:80::-;16018:13;16042:5;;;;;;;;;;;;;;;;;16035:12;;15970:80;:::o;16392:216::-;16467:4;16519:6;16484:11;:23;16496:10;16484:23;;;;;;;;;;;;;;;:32;16508:7;16484:32;;;;;;;;;;;;;;;:41;;;;16562:7;16541:37;;16550:10;16541:37;;;16571:6;16541:37;;;;;;;;;;;;;;;;;;16596:4;16589:11;;16392:216;;;;:::o;26586:150::-;26666:4;26722:6;26690:29;26710:8;26690:19;:29::i;:::-;:38;26683:45;;26586:150;;;;:::o;15700:88::-;15755:7;15773:12;;15766:19;;15700:88;:::o;21132:217::-;2919:19;2927:10;2919:7;:19::i;:::-;2911:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21215:17:::1;21235:21;21215:41;;21275:20;;;;;;;;;;;21267:38;;:74;21337:3;21318:16;21306:9;:28;:34;;;;;;21267:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;2951:1;21132:217:::0;:::o;13423:27::-;;;;:::o;25731:183::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25847:7:::1;25829:15;:25;;;;25894:12;25865:26;:41;;;;25731:183:::0;;:::o;16904:364::-;17004:4;17067:2;17024:11;:19;17036:6;17024:19;;;;;;;;;;;;;;;:31;17044:10;17024:31;;;;;;;;;;;;;;;;:46;17021:180;;17120:69;17156:6;17120:69;;;;;;;;;;;;;;;;;:11;:19;17132:6;17120:19;;;;;;;;;;;;;;;:31;17140:10;17120:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;17086:11;:19;17098:6;17086:19;;;;;;;;;;;;;;;:31;17106:10;17086:31;;;;;;;;;;;;;;;:103;;;;17021:180;17220:40;17234:6;17242:9;17253:6;17220:13;:40::i;:::-;17213:47;;16904:364;;;;;:::o;26261:142::-;26314:7;26341:54;26379:15;26389:4;;;;;;;;;;;26379:9;:15::i;:::-;26341:33;26358:15;26368:4;;;;;;;;;;;26358:9;:15::i;:::-;26341:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;26334:61;;26261:142;:::o;25922:183::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26032:11:::1;;;;;;;;;;;:35;;;26068:10;26080:16;26032:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25922:183:::0;;:::o;21396:164::-;2919:19;2927:10;2919:7;:19::i;:::-;2911:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21501:7:::1;21480:18;;:28;;;;;;;;;;;;;;;;;;21543:9;21519:21;;:33;;;;;;;;;;;;;;;;;;21396:164:::0;;:::o;3530:103::-;3585:4;3620:5;;;;;;;;;;;3609:16;;:7;:16;;;3602:23;;3530:103;;;:::o;15794:80::-;15846:5;12534:1;15855:16;;15794:80;:::o;24535:130::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24651:6:::1;24624:16;:24;24641:6;24624:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24535:130:::0;;:::o;16616:116::-;16671:4;16695:29;16703:7;16720:2;16695:7;:29::i;:::-;16688:36;;16616:116;;;:::o;23344:96::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23426:6:::1;23411:12;:21;;;;23344:96:::0;:::o;23803:99::-;2919:19;2927:10;2919:7;:19::i;:::-;2911:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23887:7:::1;23871:13;;:23;;;;;;;;;;;;;;;;;;23803:99:::0;:::o;13978:38::-;;;;;;;;;;;;;:::o;24131:120::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24237:6:::1;24215:11;:19;24227:6;24215:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;24131:120:::0;;:::o;13616:25::-;;;;;;;;;;;;;:::o;14148:30::-;;;;;;;;;;;;;:::o;16140:105::-;16206:7;16224:9;:18;16234:7;16224:18;;;;;;;;;;;;;;;;16217:25;;16140:105;;;:::o;14023:39::-;;;;;;;;;;;;;:::o;12791:59::-;;;;:::o;12603:52::-;;;;:::o;13648:27::-;;;;;;;;;;;;;:::o;17356:149::-;2919:19;2927:10;2919:7;:19::i;:::-;2911:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17494:3:::1;17475:14;17460:12;;:29;17459:38;;;;;;17441:15;:56;;;;17356:149:::0;:::o;16056:78::-;16108:7;16126:5;;;;;;;;;;;16119:12;;16056:78;:::o;12664:32::-;;;;;;;;;;;;;:::o;23910:213::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24015:9:::1;24010:106;24030:9;;:16;;24026:1;:20;24010:106;;;24098:6;24068:13;:27;24082:9;;24092:1;24082:12;;;;;;;;;;;;;;;24068:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;24048:3;;;;;24010:106;;;;23910:213:::0;;;:::o;25388:171::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25501:11:::1;25488:10;;:24;;;;;;;;;;;;;;;;;;25538:13;25523:12;;:28;;;;;;;;;;;;;;;;;;25388:171:::0;;:::o;15880:84::-;15930:13;15954:7;;;;;;;;;;;;;;;;;15947:14;;15880:84;:::o;26113:136::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26203:6:::1;26197:3;:12;26189:21;;;::::0;::::1;;26238:3;26221:14;:20;;;;26113:136:::0;:::o;13457:27::-;;;;:::o;25152:228::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25295:22:::1;25271:21;;:46;;;;;;;;;;;;;;;;;;25351:21;25328:20;;:44;;;;;;;;;;;;;;;;;;25152:228:::0;;:::o;13799:19::-;;;;;;;;;;;;;:::o;16740:156::-;16820:4;16844:44;16858:10;16870:9;16881:6;16844:13;:44::i;:::-;16837:51;;16740:156;;;;:::o;3203:94::-;2919:19;2927:10;2919:7;:19::i;:::-;2911:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3285:4:::1;3263:14:::0;:19:::1;3278:3;3263:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3203:94:::0;:::o;13827:25::-;;;;:::o;24395:132::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24513:6:::1;24485:17;:25;24503:6;24485:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;24395:132:::0;;:::o;13529:36::-;;;;;;;;;;;;;:::o;26411:167::-;26479:7;26506:64;26547:22;:20;:22::i;:::-;26506:36;26519:22;26539:1;26519:15;26529:4;;;;;;;;;;;26519:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;26506:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;26499:71;;26411:167;;;:::o;16251:133::-;16335:7;16353:11;:19;16365:6;16353:19;;;;;;;;;;;;;;;:28;16373:7;16353:28;;;;;;;;;;;;;;;;16346:35;;16251:133;;;;:::o;25567:156::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25673:8:::1;25659:11;;:22;;;;;;;;;;;;;;;;;;25708:7;25692:13;:23;;;;25567:156:::0;;:::o;13572:35::-;;;;;;;;;;;;;:::o;3373:97::-;2919:19;2927:10;2919:7;:19::i;:::-;2911:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3457:5:::1;3435:14;:19;3450:3;3435:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3373:97:::0;:::o;3930:173::-;2919:19;2927:10;2919:7;:19::i;:::-;2911:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4014:3:::1;4006:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4050:4;4028:14:::0;:19:::1;4043:3;4028:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4070:25;4091:3;4070:25;;;;;;;;;;;;;;;;;;;;3930:173:::0;:::o;23448:347::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23563:4:::1;23545:23;;:6;:23;;;;:41;;;;;23582:4;;;;;;;;;;;23572:14;;:6;:14;;;;23545:41;23537:50;;;::::0;::::1;;23625:6;23598:16;:24;23615:6;23598:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23645:6;23642:146;;;23667:11;;;;;;;;;;;:20;;;23688:6;23696:1;23667:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23642:146;;;23729:11;;;;;;;;;;;:20;;;23750:6;23758:9;:17;23768:6;23758:17;;;;;;;;;;;;;;;;23729:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23642:146;23448:347:::0;;:::o;24259:128::-;3088:24;3101:10;3088:12;:24::i;:::-;3080:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24373:6:::1;24347:15;:23;24363:6;24347:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;24259:128:::0;;:::o;13768:24::-;;;;;;;;;;;;;:::o;12703:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;3704:107::-;3760:4;3784:14;:19;3799:3;3784:19;;;;;;;;;;;;;;;;;;;;;;;;;3777:26;;3704:107;;;:::o;19780:330::-;19873:4;19910:53;19932:6;19910:53;;;;;;;;;;;;;;;;;:9;:17;19920:6;19910:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19890:9;:17;19900:6;19890:17;;;;;;;;;;;;;;;:73;;;;19997:32;20022:6;19997:9;:20;20007:9;19997:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;19974:9;:20;19984:9;19974:20;;;;;;;;;;;;;;;:55;;;;20062:9;20045:35;;20054:6;20045:35;;;20073:6;20045:35;;;;;;;;;;;;;;;;;;20098:4;20091:11;;19780:330;;;;;:::o;260:181::-;318:7;338:9;354:1;350;:5;338:17;;379:1;374;:6;;366:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;432:1;425:8;;;260:181;;;;:::o;589:192::-;675:7;708:1;703;:6;;711:12;695:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;735:9;751:1;747;:5;735:17;;772:1;765:8;;;589:192;;;;;:::o;17513:2255::-;17605:4;17625:6;;;;;;;;;;;17622:63;;;17641:41;17656:6;17664:9;17675:6;17641:14;:41::i;:::-;17634:48;;;;17622:63;17730:14;:22;17745:6;17730:22;;;;;;;;;;;;;;;;;;;;;;;;;17729:23;:53;;;;;17777:4;17756:26;;:9;:26;;;;17729:53;:84;;;;;17808:4;;;;;;;;;;;17787:26;;:9;:26;;;;17729:84;:105;;;;;17830:4;;;;;;;;;;;17817:17;;:9;:17;;;;17729:105;:142;;;;;17851:20;;;;;;;;;;;17838:33;;:9;:33;;;;17729:142;:180;;;;;17888:21;;;;;;;;;;;17875:34;;:9;:34;;;;17729:180;:213;;;;;17914:17;:28;17932:9;17914:28;;;;;;;;;;;;;;;;;;;;;;;;;17913:29;17729:213;:243;;;;;17947:17;:25;17965:6;17947:25;;;;;;;;;;;;;;;;;;;;;;;;;17946:26;17729:243;17725:435;;;17988:18;18009:20;18019:9;18009;:20::i;:::-;17988:41;;18077:15;;18066:6;18053:10;:19;18052:40;;18044:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17725:435;;18294:4;;;;;;;;;;;18284:14;;:6;:14;;;:49;;;;;18315:18;;;;;;;;;;;18284:49;:94;;;;;18351:16;:27;18368:9;18351:27;;;;;;;;;;;;;;;;;;;;;;;;;18350:28;18284:94;18280:299;;;18430:15;18403:13;:24;18417:9;18403:24;;;;;;;;;;;;;;;;:42;18395:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18546:21;;;;;;;;;;;18528:39;;:15;:39;18501:13;:24;18515:9;18501:24;;;;;;;;;;;;;;;:66;;;;18280:299;18616:13;;;;;;;;;;;18613:93;;;18654:13;:21;18668:6;18654:21;;;;;;;;;;;;;;;;;;;;;;;;;18653:22;18645:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18613:93;18761:39;18774:6;18782:9;18793:6;18761:12;:39::i;:::-;18871:9;18857:23;;:10;;;;;;;;;;;:23;;;;:47;;;;;18898:6;18884:20;;:10;;;;;;;;;;;:20;;;;18857:47;:76;;;;;18924:9;18908:25;;:12;;;;;;;;;;;:25;;;;18857:76;:102;;;;;18953:6;18937:22;;:12;;;;;;;;;;;:22;;;;18857:102;18854:168;;;18979:16;:14;:16::i;:::-;18976:35;;;18998:10;:8;:10::i;:::-;18976:35;18854:168;19081:53;19103:6;19081:53;;;;;;;;;;;;;;;;;:9;:17;19091:6;19081:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19061:9;:17;19071:6;19061:17;;;;;;;;;;;;;;;:73;;;;19147:22;19172:32;19186:6;19194:9;19172:13;:32::i;:::-;:67;;19233:6;19172:67;;;19207:23;19215:6;19223;19207:7;:23::i;:::-;19172:67;19147:92;;19273:40;19298:14;19273:9;:20;19283:9;19273:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;19250:9;:20;19260:9;19250:20;;;;;;;;;;;;;;;:63;;;;19359:16;:24;19376:6;19359:24;;;;;;;;;;;;;;;;;;;;;;;;;19355:119;;19404:11;;;;;;;;;;;:20;;;19425:6;19433:9;:17;19443:6;19433:17;;;;;;;;;;;;;;;;19404:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19400:63;;;;;;19355:119;19490:16;:27;19507:9;19490:27;;;;;;;;;;;;;;;;;;;;;;;;;19486:129;;19538:11;;;;;;;;;;;:20;;;19559:9;19570;:20;19580:9;19570:20;;;;;;;;;;;;;;;;19538:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19534:69;;;;;;19486:129;19631:11;;;;;;;;;;;:19;;;19651:14;;19631:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19627:51;;;;;;19712:9;19695:43;;19704:6;19695:43;;;19723:14;19695:43;;;;;;;;;;;;;;;;;;19756:4;19749:11;;;17513:2255;;;;;;:::o;447:136::-;505:7;532:43;536:1;539;532:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;525:50;;447:136;;;;:::o;787:250::-;845:7;874:1;869;:6;865:47;;;899:1;892:8;;;;865:47;924:9;940:1;936;:5;924:17;;969:1;964;960;:5;;;;;;:10;952:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1028:1;1021:8;;;787:250;;;;;:::o;1043:132::-;1101:7;1128:39;1132:1;1135;1128:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1121:46;;1043:132;;;;:::o;20118:215::-;20234:12;;20224:6;:22;;:49;;;;20250:15;:23;20266:6;20250:23;;;;;;;;;;;;;;;;;;;;;;;;;20224:49;:79;;;;20277:15;:26;20293:9;20277:26;;;;;;;;;;;;;;;;;;;;;;;;;20224:79;20216:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20118:215;;;:::o;20927:197::-;20976:4;21014;;;;;;;;;;;21000:18;;:10;:18;;;;:38;;;;;21032:6;;;;;;;;;;;21031:7;21000:38;:62;;;;;21051:11;;;;;;;;;;;21000:62;:116;;;;;21103:13;;21075:9;:24;21093:4;21075:24;;;;;;;;;;;;;;;;:41;;21000:116;20993:123;;20927:197;:::o;21568:1766::-;14363:4;14354:6;;:13;;;;;;;;;;;;;;;;;;21617:27:::1;21647:60;21663:15;;21680:26;;21647:15;:60::i;:::-;:79;;21714:12;;21647:79;;;21710:1;21647:79;21617:109;;21737:23;21763:59;21820:1;21763:52;21806:8;;21763:38;21781:19;21763:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;21737:85;;21833:20;21856:34;21874:15;21856:13;;:17;;:34;;;;:::i;:::-;21833:57;;21903:21;21941:1;21927:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21903:40;;21972:4;21954;21959:1;21954:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21998:4;;;;;;;;;;;21988;21993:1;21988:7;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;22015:21;22039;22015:45;;22073:6;;;;;;;;;;;:57;;;22145:12;22172:1;22188:4;22215;22235:15;22073:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22274:17;22294:40;22320:13;22294:21;:25;;:40;;;;:::i;:::-;22274:60;;22347:19;22369:40;22382:26;22406:1;22382:19;:23;;:26;;;;:::i;:::-;22369:8;;:12;;:40;;;;:::i;:::-;22347:62;;22430:26;22459:58;22515:1;22459:51;22498:11;22459:34;22473:19;22459:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;22430:87;;22528:27;22558:45;22591:11;22558:28;22572:13;;22558:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;22528:75;;22614:26;22643:44;22675:11;22643:27;22657:12;;22643:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;22614:73;;22704:11;;;;;;;;;;;:19;;;22731;22704:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22700:65;;;;;;22776:15;22804:20;;;;;;;;;;;22796:34;;22838:18;22863:5;22796:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22775:98;;;22947:5;22934:18;;22986:1;22968:15;:19;22965:362;;;23003:6;;;;;;;;;;;:22;;;23033:18;23079:4;23103:15;23137:1;23157::::0;23177:21:::1;;;;;;;;;;;23217:15;23003:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23267:48;23279:18;23299:15;23267:48;;;;;;;;;;;;;;;;;;;;;;;;22965:362;14369:1;;;;;;;;;;;14381:5:::0;14372:6;;:14;;;;;;;;;;;;;;;;;;21568:1766::o;20341:161::-;20422:4;20448:11;:19;20460:6;20448:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;20471:11;:22;20483:9;20471:22;;;;;;;;;;;;;;;;;;;;;;;;;20448:45;20446:48;20439:55;;20341:161;;;;:::o;20510:409::-;20577:7;20597:17;20628:4;;;;;;;;;;;20618:14;;:6;:14;;;;:114;;20692:40;20717:14;;20692:20;20703:8;;20692:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;20618:114;;;20635:54;20674:14;;20635:34;20646:22;20659:8;;20646;;:12;;:22;;;;:::i;:::-;20635:6;:10;;:34;;;;:::i;:::-;:38;;:54;;;;:::i;:::-;20618:114;20597:136;;20773:39;20802:9;20773;:24;20791:4;20773:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20746:9;:24;20764:4;20746:24;;;;;;;;;;;;;;;:66;;;;20853:4;20828:42;;20837:6;20828:42;;;20860:9;20828:42;;;;;;;;;;;;;;;;;;20890:21;20901:9;20890:6;:10;;:21;;;;:::i;:::-;20883:28;;;20510:409;;;;:::o;1181:345::-;1267:7;1366:1;1362;:5;1369:12;1354:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1393:9;1409:1;1405;:5;;;;;;1393:17;;1517:1;1510:8;;;1181:345;;;;;:::o

Swarm Source

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