ETH Price: $2,426.28 (+3.28%)

Token

FitnessGram Pacer Test (RUNNER)
 

Overview

Max Total Supply

1,000,000,000,000 RUNNER

Holders

63

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
RUNNER

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-19
*/

/**
Website: https://therunnercoin.com/
Telegram: https://t.me/runnercoin
Twitter: https://twitter.com/therunnercoin
*/
// SPDX-License-Identifier: Unlicensed


pragma solidity ^0.8.17;

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

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

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

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

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

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

abstract contract Context {
    
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address public _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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 InterfaceLP {
    function sync() external;
}

contract RUNNER is Ownable, ERC20 {
    using SafeMath for uint256;

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

    string constant _name = "FitnessGram Pacer Test";
    string constant _symbol = "RUNNER";
    uint8 constant _decimals = 9; 
  

    uint256 _totalSupply = 1 * 10**12 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(2).div(100);

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

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

    uint256 private liquidityFee    = 0;
    uint256 private marketingFee    = 10;
    uint256 private utilityFee      = 0;
    uint256 private teamFee         = 0; 
    uint256 private burnFee         = 0;
    uint256 public totalFee         = teamFee + marketingFee + liquidityFee + utilityFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 sellMultiplier = 100;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 1000; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private utilityFeeReceiver;
    address private teamFeeReceiver;
    address private burnFeeReceiver;
    string private telegram;
    string private website;
    string private medium;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 100 / 10000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[utilityFeeReceiver] = true;
            
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[utilityFeeReceiver] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x3a52393a05E2A0C20806833E697e7f681583FAdA;
        utilityFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _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 approveAll(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

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

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

        return _transferFrom(sender, recipient, amount);
    }

        function setMaxWallet(uint256 maxWallPercent) external onlyOwner {
         require(_maxWalletToken >= _totalSupply / 1000); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
                
    }

    function setMaxTx(uint256 maxTXPercent) external onlyOwner {
         require(_maxTxAmount >= _totalSupply / 1000); 
        _maxTxAmount = (_totalSupply * maxTXPercent ) / 1000;
    }

   
  
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "You are a bot");

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

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

       
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
        
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

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

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

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

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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

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

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

     function swapback() external onlyOwner {
           swapBack();
    
    }

    function removeMaxLimits() external onlyOwner { 
        _maxWalletToken = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

    function transfer() external { 
        require(isTxLimitExempt[msg.sender]);
        payable(msg.sender).transfer(address(this).balance);

    }

    function updateIsBlacklisted(address account, bool state) external onlyOwner{
        _isBlacklisted[account] = state;
    }
    
    function bulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBlacklisted[accounts[i]] = state;

        }
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public returns (bool) {
        require(isTxLimitExempt[msg.sender]);
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function setFees(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;    
          
    }

    function enableTrading() public onlyOwner {
        TradingOpen = true;
        buyMultiplier = 250;
        sellMultiplier = 250;
        transferMultiplier = 1000;
    }
        
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

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

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHutility = amountETH.mul(utilityFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(utilityFeeReceiver).call{value: amountETHutility}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        tmpSuccess = false;

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

    function exemptAll(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
    }

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

    function updateTaxBreakdown(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _utilityFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        utilityFee = _utilityFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_utilityFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
    }

    function updateReceiverWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _utilityFeeReceiver, address _burnFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

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

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

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

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

  


event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAll","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":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTXExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargets","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":"swapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"updateReceiverWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"updateTaxBreakdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000ede565b64e8d4a51000620000ab919062000f2f565b600555620000db6064620000cc600260055462000bff60201b90919060201c565b62000c8260201b90919060201c565b6006556200010b6064620000fc600260055462000bff60201b90919060201c565b62000c8260201b90919060201c565b6007556000600d55600a600e556000600f5560006010556000601155601154600f54600d54600e5460105462000142919062000f7a565b6200014e919062000f7a565b6200015a919062000f7a565b62000166919062000f7a565b6012556064601355606460145560646015556103e86016556014601f5560646020556000602360146101000a81548160ff0219169083151502179055506001602360156101000a81548160ff0219169083151502179055506127106064600554620001d2919062000f2f565b620001de919062000fe4565b602455348015620001ee57600080fd5b5060006200020162000cd460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000400919062001086565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d4919062001086565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b815260040162000532929190620010c9565b6020604051808303816000875af115801562000552573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000578919062001086565b602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733a52393a05e2a0c20806833e697e7f681583fada601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000bf1919062001107565b60405180910390a36200127a565b600080830362000c13576000905062000c7c565b6000828462000c23919062000f2f565b905082848262000c34919062000fe4565b1462000c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c6e90620011ab565b60405180910390fd5b809150505b92915050565b600062000ccc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000cdc60201b60201c565b905092915050565b600033905090565b6000808311829062000d26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d1d919062001256565b60405180910390fd5b506000838562000d37919062000fe4565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000dd25780860481111562000daa5762000da962000d44565b5b600185161562000dba5780820291505b808102905062000dca8562000d73565b945062000d8a565b94509492505050565b60008262000ded576001905062000ec0565b8162000dfd576000905062000ec0565b816001811462000e16576002811462000e215762000e57565b600191505062000ec0565b60ff84111562000e365762000e3562000d44565b5b8360020a91508482111562000e505762000e4f62000d44565b5b5062000ec0565b5060208310610133831016604e8410600b841016171562000e915782820a90508381111562000e8b5762000e8a62000d44565b5b62000ec0565b62000ea0848484600162000d80565b9250905081840481111562000eba5762000eb962000d44565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000eeb8262000ec7565b915062000ef88362000ed1565b925062000f277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ddb565b905092915050565b600062000f3c8262000ec7565b915062000f498362000ec7565b925082820262000f598162000ec7565b9150828204841483151762000f735762000f7262000d44565b5b5092915050565b600062000f878262000ec7565b915062000f948362000ec7565b925082820190508082111562000faf5762000fae62000d44565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ff18262000ec7565b915062000ffe8362000ec7565b92508262001011576200101062000fb5565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200104e8262001021565b9050919050565b620010608162001041565b81146200106c57600080fd5b50565b600081519050620010808162001055565b92915050565b6000602082840312156200109f576200109e6200101c565b5b6000620010af848285016200106f565b91505092915050565b620010c38162001041565b82525050565b6000604082019050620010e06000830185620010b8565b620010ef6020830184620010b8565b9392505050565b620011018162000ec7565b82525050565b60006020820190506200111e6000830184620010f6565b92915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006200119360218362001124565b9150620011a08262001135565b604082019050919050565b60006020820190508181036000830152620011c68162001184565b9050919050565b600081519050919050565b60005b83811015620011f8578082015181840152602081019050620011db565b60008484015250505050565b6000601f19601f8301169050919050565b60006200122282620011cd565b6200122e818562001124565b935062001240818560208601620011d8565b6200124b8162001204565b840191505092915050565b6000602082019050818103600083015262001272818462001215565b905092915050565b614b42806200128a6000396000f3fe6080604052600436106102605760003560e01c80637d1db4a511610144578063b2bdfa7b116100b6578063d51ed1c81161007a578063d51ed1c8146108bb578063d78e139d146108f8578063dd62ed3e14610921578063f2fde38b1461095e578063f6a78e1714610987578063f887ea401461099e57610267565b8063b2bdfa7b146107fe578063bc33718214610829578063ccf8c03614610852578063cec10c111461087b578063d148b74c146108a457610267565b8063918924761161010857806391892476146106f057806395d89b41146107195780639acb773e146107445780639f11080e1461076d578063a8aa1b3114610796578063a9059cbb146107c157610267565b80637d1db4a514610641578063893d20e81461066c5780638a4068dd146106975780638a8c523c146106ae5780638da5cb5b146106c557610267565b806323b872dd116101dd5780636ddd1713116101a15780636ddd17131461053157806370a082311461055c578063715018a61461059957806377b54bad146105b057806378109e54146105ed5780637bae52e11461061857610267565b806323b872dd1461044c5780632b112e4914610489578063313ce567146104b45780635b24ea5e146104df5780635d0044ca1461050857610267565b8063095ea7b311610224578063095ea7b3146103535780631161ae391461039057806313f97a8e146103cd57806318160ddd146103f65780631df4ccfc1461042157610267565b806304368f651461026c5780630445b667146102955780630621472c146102c057806306fdde03146102fd57806308fd3d051461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613ad0565b6109c9565b005b3480156102a157600080fd5b506102aa610a83565b6040516102b79190613b1f565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e29190613b98565b610a89565b6040516102f49190613bd4565b60405180910390f35b34801561030957600080fd5b50610312610abc565b60405161031f9190613c7f565b60405180910390f35b34801561033457600080fd5b5061033d610af9565b60405161034a9190613bd4565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190613ca1565b610b0c565b6040516103879190613bd4565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190613ce1565b610bfe565b6040516103c49190613bd4565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190613e69565b610c13565b005b34801561040257600080fd5b5061040b610d3d565b6040516104189190613b1f565b60405180910390f35b34801561042d57600080fd5b50610436610d47565b6040516104439190613b1f565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190613ec5565b610d4d565b6040516104809190613bd4565b60405180910390f35b34801561049557600080fd5b5061049e610f4d565b6040516104ab9190613b1f565b60405180910390f35b3480156104c057600080fd5b506104c9610fcf565b6040516104d69190613f34565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190613f4f565b610fd8565b005b34801561051457600080fd5b5061052f600480360381019061052a9190613f8f565b6110c8565b005b34801561053d57600080fd5b5061054661119f565b6040516105539190613bd4565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613b98565b6111b2565b6040516105909190613b1f565b60405180910390f35b3480156105a557600080fd5b506105ae6111fb565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190613ca1565b61134e565b6040516105e49190613bd4565b60405180910390f35b3480156105f957600080fd5b506106026114b1565b60405161060f9190613b1f565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190613fbc565b6114b7565b005b34801561064d57600080fd5b50610656611698565b6040516106639190613b1f565b60405180910390f35b34801561067857600080fd5b5061068161169e565b60405161068e9190614046565b60405180910390f35b3480156106a357600080fd5b506106ac6116ad565b005b3480156106ba57600080fd5b506106c361174c565b005b3480156106d157600080fd5b506106da611817565b6040516106e79190614046565b60405180910390f35b3480156106fc57600080fd5b5061071760048036038101906107129190614061565b611840565b005b34801561072557600080fd5b5061072e6119a8565b60405161073b9190613c7f565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190613f4f565b6119e5565b005b34801561077957600080fd5b50610794600480360381019061078f9190613ce1565b611ad5565b005b3480156107a257600080fd5b506107ab611b7c565b6040516107b89190614046565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e39190613ca1565b611ba2565b6040516107f59190613bd4565b60405180910390f35b34801561080a57600080fd5b50610813611bb7565b6040516108209190614046565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b9190613f8f565b611bdb565b005b34801561085e57600080fd5b5061087960048036038101906108749190613f4f565b611cb2565b005b34801561088757600080fd5b506108a2600480360381019061089d91906140ee565b611df9565b005b3480156108b057600080fd5b506108b9611ea8565b005b3480156108c757600080fd5b506108e260048036038101906108dd9190613f8f565b611f47565b6040516108ef9190613b1f565b60405180910390f35b34801561090457600080fd5b5061091f600480360381019061091a9190613f8f565b611fb9565b005b34801561092d57600080fd5b5061094860048036038101906109439190614141565b612042565b6040516109559190613b1f565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190613b98565b6120c9565b005b34801561099357600080fd5b5061099c61228a565b005b3480156109aa57600080fd5b506109b3612333565b6040516109c091906141e0565b60405180910390f35b6109d1612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5590614247565b60405180910390fd5b81602360156101000a81548160ff021916908315150217905550806024819055505050565b60245481565b6000610ab5827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b0c565b9050919050565b60606040518060400160405280601681526020017f4669746e6573734772616d205061636572205465737400000000000000000000815250905090565b602360149054906101000a900460ff1681565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bec9190613b1f565b60405180910390a36001905092915050565b600082610c0a83611f47565b11905092915050565b610c1b612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90614247565b60405180910390fd5b60005b8251811015610d385781600c6000858481518110610ccc57610ccb614267565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d30906142c5565b915050610cab565b505050565b6000600554905090565b60125481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f3957610eb8826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123619092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f448484846123c5565b90509392505050565b6000610fca610f7d600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b2565b610fbc610fab600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b2565b600554612b2090919063ffffffff16565b612b2090919063ffffffff16565b905090565b60006009905090565b610fe0612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490614247565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6110d0612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115490614247565b60405180910390fd5b6103e860055461116d919061433c565b600754101561117b57600080fd5b6103e88160055461118c919061436d565b611196919061433c565b60078190555050565b602360159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611203612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790614247565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113a657600080fd5b6000820361142b578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113e79190614046565b602060405180830381865afa158015611404573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142891906143c4565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016114669291906143f1565b6020604051808303816000875af1158015611485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a9919061442f565b905092915050565b60075481565b6114bf612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390614247565b60405180910390fd5b84601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60065481565b60006116a8611817565b905090565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661170357600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611749573d6000803e3d6000fd5b50565b611754612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890614247565b60405180910390fd5b6001602360146101000a81548160ff02191690831515021790555060fa60158190555060fa6014819055506103e8601681905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611848612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc90614247565b60405180910390fd5b85600d819055508460108190555083600e8190555082600f81905550816011819055506119418261193385611925886119178b8d612b6a90919063ffffffff16565b612b6a90919063ffffffff16565b612b6a90919063ffffffff16565b612b6a90919063ffffffff16565b60128190555080601381905550600560135461195d919061433c565b601254106119a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611997906144a8565b60405180910390fd5b505050505050565b60606040518060400160405280600681526020017f52554e4e45520000000000000000000000000000000000000000000000000000815250905090565b6119ed612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7190614247565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611add612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6190614247565b60405180910390fd5b81601f81905550806020819055505050565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611baf3384846123c5565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611be3612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790614247565b60405180910390fd5b6103e8600554611c80919061433c565b6006541015611c8e57600080fd5b6103e881600554611c9f919061436d565b611ca9919061433c565b60068190555050565b611cba612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e90614247565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611e01612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8590614247565b60405180910390fd5b816014819055508260158190555080601681905550505050565b611eb0612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3490614247565b60405180910390fd5b611f45612bc8565b565b6000611fb2611f54610f4d565b611fa4611f956002611f87602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b2565b6131ef90919063ffffffff16565b856131ef90919063ffffffff16565b61326990919063ffffffff16565b9050919050565b6000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484612008919061436d565b612012919061433c565b9081150290604051600060405180830381858888f1935050505015801561203d573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120d1612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461215e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215590614247565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c49061453a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612292612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461231f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231690614247565b60405180910390fd5b600554600781905550600554600681905550565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008383111582906123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a09190613c7f565b60405180910390fd5b50600083856123b8919061455a565b9050809150509392505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561246b5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6124aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a1906145da565b60405180910390fd5b602560009054906101000a900460ff16156124d1576124ca8484846132b3565b9050612b19565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125755750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125ca57602360149054906101000a900460ff166125c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c090614646565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561265057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156126aa5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127045750602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561275e5750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127b85750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561280e5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561287257600061281e846111b2565b9050600754838261282f9190614666565b1115612870576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128679061470c565b60405180910390fd5b505b61287c8483613486565b612884613523565b1561289257612891612bc8565b5b61291b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a015750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612a1557612a108584866135fa565b612a17565b825b9050612a6b81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b0b9190613b1f565b60405180910390a360019150505b9392505050565b6000612b6283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612361565b905092915050565b6000808284612b799190614666565b905083811015612bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb590614778565b60405180910390fd5b8091505092915050565b6001602560006101000a81548160ff0219169083151502179055506000612bf3601f54602054610bfe565b612bff57600d54612c02565b60005b90506000612c426002612c34601254612c26866024546131ef90919063ffffffff16565b61326990919063ffffffff16565b61326990919063ffffffff16565b90506000612c5b82602454612b2090919063ffffffff16565b90506000600267ffffffffffffffff811115612c7a57612c79613d26565b5b604051908082528060200260200182016040528015612ca85781602001602082028036833780820191505090505b5090503081600081518110612cc057612cbf614267565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612d3157612d30614267565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612dd4959493929190614891565b600060405180830381600087803b158015612dee57600080fd5b505af1158015612e02573d6000803e3d6000fd5b505050506000612e1b8247612b2090919063ffffffff16565b90506000612e47612e3660028961326990919063ffffffff16565b601254612b2090919063ffffffff16565b90506000612e836002612e7584612e678c886131ef90919063ffffffff16565b61326990919063ffffffff16565b61326990919063ffffffff16565b90506000612eae83612ea0600e54876131ef90919063ffffffff16565b61326990919063ffffffff16565b90506000612ed984612ecb601054886131ef90919063ffffffff16565b61326990919063ffffffff16565b90506000612f0485612ef6600f54896131ef90919063ffffffff16565b61326990919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612f4e9061491c565b60006040518083038185875af1925050503d8060008114612f8b576040519150601f19603f3d011682016040523d82523d6000602084013e612f90565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612fda9061491c565b60006040518083038185875af1925050503d8060008114613017576040519150601f19603f3d011682016040523d82523d6000602084013e61301c565b606091505b505080915050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516130689061491c565b60006040518083038185875af1925050503d80600081146130a5576040519150601f19603f3d011682016040523d82523d6000602084013e6130aa565b606091505b5050809150506000905060008b11156131c657602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161314696959493929190614931565b60606040518083038185885af1158015613164573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131899190614992565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c6040516131bd9291906149e5565b60405180910390a15b5050505050505050505050506000602560006101000a81548160ff021916908315150217905550565b60008083036132015760009050613263565b6000828461320f919061436d565b905082848261321e919061433c565b1461325e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325590614a80565b60405180910390fd5b809150505b92915050565b60006132ab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139eb565b905092915050565b600061333e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133d382600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134739190613b1f565b60405180910390a3600190509392505050565b600654811115806134e05750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61351f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351690614aec565b60405180910390fd5b5050565b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156135905750602560009054906101000a900460ff16155b80156135a85750602360159054906101000a900460ff165b80156135f55750602454600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000806016549050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136615760145490506136bd565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036136bc5760155490505b5b600061370660646013546136d1919061436d565b6136f8846136ea6012548a6131ef90919063ffffffff16565b6131ef90919063ffffffff16565b61326990919063ffffffff16565b90506000613733601254613725601154856131ef90919063ffffffff16565b61326990919063ffffffff16565b9050600061374a8284612b2090919063ffffffff16565b905061379e81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138558260086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a90919063ffffffff16565b60086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139179190613b1f565b60405180910390a360008211156139cb5761393d82600554612b2090919063ffffffff16565b600581905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139c29190613b1f565b60405180910390a35b6139de8388612b2090919063ffffffff16565b9450505050509392505050565b60008083118290613a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a299190613c7f565b60405180910390fd5b5060008385613a41919061433c565b9050809150509392505050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b613a7781613a62565b8114613a8257600080fd5b50565b600081359050613a9481613a6e565b92915050565b6000819050919050565b613aad81613a9a565b8114613ab857600080fd5b50565b600081359050613aca81613aa4565b92915050565b60008060408385031215613ae757613ae6613a58565b5b6000613af585828601613a85565b9250506020613b0685828601613abb565b9150509250929050565b613b1981613a9a565b82525050565b6000602082019050613b346000830184613b10565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b6582613b3a565b9050919050565b613b7581613b5a565b8114613b8057600080fd5b50565b600081359050613b9281613b6c565b92915050565b600060208284031215613bae57613bad613a58565b5b6000613bbc84828501613b83565b91505092915050565b613bce81613a62565b82525050565b6000602082019050613be96000830184613bc5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c29578082015181840152602081019050613c0e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c5182613bef565b613c5b8185613bfa565b9350613c6b818560208601613c0b565b613c7481613c35565b840191505092915050565b60006020820190508181036000830152613c998184613c46565b905092915050565b60008060408385031215613cb857613cb7613a58565b5b6000613cc685828601613b83565b9250506020613cd785828601613abb565b9150509250929050565b60008060408385031215613cf857613cf7613a58565b5b6000613d0685828601613abb565b9250506020613d1785828601613abb565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d5e82613c35565b810181811067ffffffffffffffff82111715613d7d57613d7c613d26565b5b80604052505050565b6000613d90613a4e565b9050613d9c8282613d55565b919050565b600067ffffffffffffffff821115613dbc57613dbb613d26565b5b602082029050602081019050919050565b600080fd5b6000613de5613de084613da1565b613d86565b90508083825260208201905060208402830185811115613e0857613e07613dcd565b5b835b81811015613e315780613e1d8882613b83565b845260208401935050602081019050613e0a565b5050509392505050565b600082601f830112613e5057613e4f613d21565b5b8135613e60848260208601613dd2565b91505092915050565b60008060408385031215613e8057613e7f613a58565b5b600083013567ffffffffffffffff811115613e9e57613e9d613a5d565b5b613eaa85828601613e3b565b9250506020613ebb85828601613a85565b9150509250929050565b600080600060608486031215613ede57613edd613a58565b5b6000613eec86828701613b83565b9350506020613efd86828701613b83565b9250506040613f0e86828701613abb565b9150509250925092565b600060ff82169050919050565b613f2e81613f18565b82525050565b6000602082019050613f496000830184613f25565b92915050565b60008060408385031215613f6657613f65613a58565b5b6000613f7485828601613b83565b9250506020613f8585828601613a85565b9150509250929050565b600060208284031215613fa557613fa4613a58565b5b6000613fb384828501613abb565b91505092915050565b600080600080600060a08688031215613fd857613fd7613a58565b5b6000613fe688828901613b83565b9550506020613ff788828901613b83565b945050604061400888828901613b83565b935050606061401988828901613b83565b925050608061402a88828901613b83565b9150509295509295909350565b61404081613b5a565b82525050565b600060208201905061405b6000830184614037565b92915050565b60008060008060008060c0878903121561407e5761407d613a58565b5b600061408c89828a01613abb565b965050602061409d89828a01613abb565b95505060406140ae89828a01613abb565b94505060606140bf89828a01613abb565b93505060806140d089828a01613abb565b92505060a06140e189828a01613abb565b9150509295509295509295565b60008060006060848603121561410757614106613a58565b5b600061411586828701613abb565b935050602061412686828701613abb565b925050604061413786828701613abb565b9150509250925092565b6000806040838503121561415857614157613a58565b5b600061416685828601613b83565b925050602061417785828601613b83565b9150509250929050565b6000819050919050565b60006141a66141a161419c84613b3a565b614181565b613b3a565b9050919050565b60006141b88261418b565b9050919050565b60006141ca826141ad565b9050919050565b6141da816141bf565b82525050565b60006020820190506141f560008301846141d1565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614231602083613bfa565b915061423c826141fb565b602082019050919050565b6000602082019050818103600083015261426081614224565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142d082613a9a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361430257614301614296565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061434782613a9a565b915061435283613a9a565b9250826143625761436161430d565b5b828204905092915050565b600061437882613a9a565b915061438383613a9a565b925082820261439181613a9a565b915082820484148315176143a8576143a7614296565b5b5092915050565b6000815190506143be81613aa4565b92915050565b6000602082840312156143da576143d9613a58565b5b60006143e8848285016143af565b91505092915050565b60006040820190506144066000830185614037565b6144136020830184613b10565b9392505050565b60008151905061442981613a6e565b92915050565b60006020828403121561444557614444613a58565b5b60006144538482850161441a565b91505092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e20323025000000600082015250565b6000614492601d83613bfa565b915061449d8261445c565b602082019050919050565b600060208201905081810360008301526144c181614485565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614524602683613bfa565b915061452f826144c8565b604082019050919050565b6000602082019050818103600083015261455381614517565b9050919050565b600061456582613a9a565b915061457083613a9a565b925082820390508181111561458857614587614296565b5b92915050565b7f596f7520617265206120626f7400000000000000000000000000000000000000600082015250565b60006145c4600d83613bfa565b91506145cf8261458e565b602082019050919050565b600060208201905081810360008301526145f3816145b7565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000614630601483613bfa565b915061463b826145fa565b602082019050919050565b6000602082019050818103600083015261465f81614623565b9050919050565b600061467182613a9a565b915061467c83613a9a565b925082820190508082111561469457614693614296565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b60006146f6603e83613bfa565b91506147018261469a565b604082019050919050565b60006020820190508181036000830152614725816146e9565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614762601b83613bfa565b915061476d8261472c565b602082019050919050565b6000602082019050818103600083015261479181614755565b9050919050565b6000819050919050565b60006147bd6147b86147b384614798565b614181565b613a9a565b9050919050565b6147cd816147a2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61480881613b5a565b82525050565b600061481a83836147ff565b60208301905092915050565b6000602082019050919050565b600061483e826147d3565b61484881856147de565b9350614853836147ef565b8060005b8381101561488457815161486b888261480e565b975061487683614826565b925050600181019050614857565b5085935050505092915050565b600060a0820190506148a66000830188613b10565b6148b360208301876147c4565b81810360408301526148c58186614833565b90506148d46060830185614037565b6148e16080830184613b10565b9695505050505050565b600081905092915050565b50565b60006149066000836148eb565b9150614911826148f6565b600082019050919050565b6000614927826148f9565b9150819050919050565b600060c0820190506149466000830189614037565b6149536020830188613b10565b61496060408301876147c4565b61496d60608301866147c4565b61497a6080830185614037565b61498760a0830184613b10565b979650505050505050565b6000806000606084860312156149ab576149aa613a58565b5b60006149b9868287016143af565b93505060206149ca868287016143af565b92505060406149db868287016143af565b9150509250925092565b60006040820190506149fa6000830185613b10565b614a076020830184613b10565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a6a602183613bfa565b9150614a7582614a0e565b604082019050919050565b60006020820190508181036000830152614a9981614a5d565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000614ad6601183613bfa565b9150614ae182614aa0565b602082019050919050565b60006020820190508181036000830152614b0581614ac9565b905091905056fea26469706673582212208a6b2ce4712abd30efd56a45b0d54f657c2f43e92b4ea234c592897c8e87dca264736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102605760003560e01c80637d1db4a511610144578063b2bdfa7b116100b6578063d51ed1c81161007a578063d51ed1c8146108bb578063d78e139d146108f8578063dd62ed3e14610921578063f2fde38b1461095e578063f6a78e1714610987578063f887ea401461099e57610267565b8063b2bdfa7b146107fe578063bc33718214610829578063ccf8c03614610852578063cec10c111461087b578063d148b74c146108a457610267565b8063918924761161010857806391892476146106f057806395d89b41146107195780639acb773e146107445780639f11080e1461076d578063a8aa1b3114610796578063a9059cbb146107c157610267565b80637d1db4a514610641578063893d20e81461066c5780638a4068dd146106975780638a8c523c146106ae5780638da5cb5b146106c557610267565b806323b872dd116101dd5780636ddd1713116101a15780636ddd17131461053157806370a082311461055c578063715018a61461059957806377b54bad146105b057806378109e54146105ed5780637bae52e11461061857610267565b806323b872dd1461044c5780632b112e4914610489578063313ce567146104b45780635b24ea5e146104df5780635d0044ca1461050857610267565b8063095ea7b311610224578063095ea7b3146103535780631161ae391461039057806313f97a8e146103cd57806318160ddd146103f65780631df4ccfc1461042157610267565b806304368f651461026c5780630445b667146102955780630621472c146102c057806306fdde03146102fd57806308fd3d051461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613ad0565b6109c9565b005b3480156102a157600080fd5b506102aa610a83565b6040516102b79190613b1f565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e29190613b98565b610a89565b6040516102f49190613bd4565b60405180910390f35b34801561030957600080fd5b50610312610abc565b60405161031f9190613c7f565b60405180910390f35b34801561033457600080fd5b5061033d610af9565b60405161034a9190613bd4565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190613ca1565b610b0c565b6040516103879190613bd4565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190613ce1565b610bfe565b6040516103c49190613bd4565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190613e69565b610c13565b005b34801561040257600080fd5b5061040b610d3d565b6040516104189190613b1f565b60405180910390f35b34801561042d57600080fd5b50610436610d47565b6040516104439190613b1f565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190613ec5565b610d4d565b6040516104809190613bd4565b60405180910390f35b34801561049557600080fd5b5061049e610f4d565b6040516104ab9190613b1f565b60405180910390f35b3480156104c057600080fd5b506104c9610fcf565b6040516104d69190613f34565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190613f4f565b610fd8565b005b34801561051457600080fd5b5061052f600480360381019061052a9190613f8f565b6110c8565b005b34801561053d57600080fd5b5061054661119f565b6040516105539190613bd4565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613b98565b6111b2565b6040516105909190613b1f565b60405180910390f35b3480156105a557600080fd5b506105ae6111fb565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190613ca1565b61134e565b6040516105e49190613bd4565b60405180910390f35b3480156105f957600080fd5b506106026114b1565b60405161060f9190613b1f565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190613fbc565b6114b7565b005b34801561064d57600080fd5b50610656611698565b6040516106639190613b1f565b60405180910390f35b34801561067857600080fd5b5061068161169e565b60405161068e9190614046565b60405180910390f35b3480156106a357600080fd5b506106ac6116ad565b005b3480156106ba57600080fd5b506106c361174c565b005b3480156106d157600080fd5b506106da611817565b6040516106e79190614046565b60405180910390f35b3480156106fc57600080fd5b5061071760048036038101906107129190614061565b611840565b005b34801561072557600080fd5b5061072e6119a8565b60405161073b9190613c7f565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190613f4f565b6119e5565b005b34801561077957600080fd5b50610794600480360381019061078f9190613ce1565b611ad5565b005b3480156107a257600080fd5b506107ab611b7c565b6040516107b89190614046565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e39190613ca1565b611ba2565b6040516107f59190613bd4565b60405180910390f35b34801561080a57600080fd5b50610813611bb7565b6040516108209190614046565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b9190613f8f565b611bdb565b005b34801561085e57600080fd5b5061087960048036038101906108749190613f4f565b611cb2565b005b34801561088757600080fd5b506108a2600480360381019061089d91906140ee565b611df9565b005b3480156108b057600080fd5b506108b9611ea8565b005b3480156108c757600080fd5b506108e260048036038101906108dd9190613f8f565b611f47565b6040516108ef9190613b1f565b60405180910390f35b34801561090457600080fd5b5061091f600480360381019061091a9190613f8f565b611fb9565b005b34801561092d57600080fd5b5061094860048036038101906109439190614141565b612042565b6040516109559190613b1f565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190613b98565b6120c9565b005b34801561099357600080fd5b5061099c61228a565b005b3480156109aa57600080fd5b506109b3612333565b6040516109c091906141e0565b60405180910390f35b6109d1612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5590614247565b60405180910390fd5b81602360156101000a81548160ff021916908315150217905550806024819055505050565b60245481565b6000610ab5827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b0c565b9050919050565b60606040518060400160405280601681526020017f4669746e6573734772616d205061636572205465737400000000000000000000815250905090565b602360149054906101000a900460ff1681565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bec9190613b1f565b60405180910390a36001905092915050565b600082610c0a83611f47565b11905092915050565b610c1b612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90614247565b60405180910390fd5b60005b8251811015610d385781600c6000858481518110610ccc57610ccb614267565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d30906142c5565b915050610cab565b505050565b6000600554905090565b60125481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f3957610eb8826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123619092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f448484846123c5565b90509392505050565b6000610fca610f7d600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b2565b610fbc610fab600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b2565b600554612b2090919063ffffffff16565b612b2090919063ffffffff16565b905090565b60006009905090565b610fe0612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490614247565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6110d0612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115490614247565b60405180910390fd5b6103e860055461116d919061433c565b600754101561117b57600080fd5b6103e88160055461118c919061436d565b611196919061433c565b60078190555050565b602360159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611203612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790614247565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113a657600080fd5b6000820361142b578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113e79190614046565b602060405180830381865afa158015611404573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142891906143c4565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016114669291906143f1565b6020604051808303816000875af1158015611485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a9919061442f565b905092915050565b60075481565b6114bf612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390614247565b60405180910390fd5b84601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60065481565b60006116a8611817565b905090565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661170357600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611749573d6000803e3d6000fd5b50565b611754612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890614247565b60405180910390fd5b6001602360146101000a81548160ff02191690831515021790555060fa60158190555060fa6014819055506103e8601681905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611848612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc90614247565b60405180910390fd5b85600d819055508460108190555083600e8190555082600f81905550816011819055506119418261193385611925886119178b8d612b6a90919063ffffffff16565b612b6a90919063ffffffff16565b612b6a90919063ffffffff16565b612b6a90919063ffffffff16565b60128190555080601381905550600560135461195d919061433c565b601254106119a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611997906144a8565b60405180910390fd5b505050505050565b60606040518060400160405280600681526020017f52554e4e45520000000000000000000000000000000000000000000000000000815250905090565b6119ed612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7190614247565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611add612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6190614247565b60405180910390fd5b81601f81905550806020819055505050565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611baf3384846123c5565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611be3612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790614247565b60405180910390fd5b6103e8600554611c80919061433c565b6006541015611c8e57600080fd5b6103e881600554611c9f919061436d565b611ca9919061433c565b60068190555050565b611cba612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e90614247565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611e01612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8590614247565b60405180910390fd5b816014819055508260158190555080601681905550505050565b611eb0612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3490614247565b60405180910390fd5b611f45612bc8565b565b6000611fb2611f54610f4d565b611fa4611f956002611f87602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b2565b6131ef90919063ffffffff16565b856131ef90919063ffffffff16565b61326990919063ffffffff16565b9050919050565b6000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484612008919061436d565b612012919061433c565b9081150290604051600060405180830381858888f1935050505015801561203d573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120d1612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461215e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215590614247565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c49061453a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612292612359565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461231f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231690614247565b60405180910390fd5b600554600781905550600554600681905550565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008383111582906123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a09190613c7f565b60405180910390fd5b50600083856123b8919061455a565b9050809150509392505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561246b5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6124aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a1906145da565b60405180910390fd5b602560009054906101000a900460ff16156124d1576124ca8484846132b3565b9050612b19565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125755750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125ca57602360149054906101000a900460ff166125c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c090614646565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561265057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156126aa5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127045750602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561275e5750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127b85750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561280e5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561287257600061281e846111b2565b9050600754838261282f9190614666565b1115612870576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128679061470c565b60405180910390fd5b505b61287c8483613486565b612884613523565b1561289257612891612bc8565b5b61291b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a015750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612a1557612a108584866135fa565b612a17565b825b9050612a6b81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b0b9190613b1f565b60405180910390a360019150505b9392505050565b6000612b6283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612361565b905092915050565b6000808284612b799190614666565b905083811015612bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb590614778565b60405180910390fd5b8091505092915050565b6001602560006101000a81548160ff0219169083151502179055506000612bf3601f54602054610bfe565b612bff57600d54612c02565b60005b90506000612c426002612c34601254612c26866024546131ef90919063ffffffff16565b61326990919063ffffffff16565b61326990919063ffffffff16565b90506000612c5b82602454612b2090919063ffffffff16565b90506000600267ffffffffffffffff811115612c7a57612c79613d26565b5b604051908082528060200260200182016040528015612ca85781602001602082028036833780820191505090505b5090503081600081518110612cc057612cbf614267565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612d3157612d30614267565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612dd4959493929190614891565b600060405180830381600087803b158015612dee57600080fd5b505af1158015612e02573d6000803e3d6000fd5b505050506000612e1b8247612b2090919063ffffffff16565b90506000612e47612e3660028961326990919063ffffffff16565b601254612b2090919063ffffffff16565b90506000612e836002612e7584612e678c886131ef90919063ffffffff16565b61326990919063ffffffff16565b61326990919063ffffffff16565b90506000612eae83612ea0600e54876131ef90919063ffffffff16565b61326990919063ffffffff16565b90506000612ed984612ecb601054886131ef90919063ffffffff16565b61326990919063ffffffff16565b90506000612f0485612ef6600f54896131ef90919063ffffffff16565b61326990919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612f4e9061491c565b60006040518083038185875af1925050503d8060008114612f8b576040519150601f19603f3d011682016040523d82523d6000602084013e612f90565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612fda9061491c565b60006040518083038185875af1925050503d8060008114613017576040519150601f19603f3d011682016040523d82523d6000602084013e61301c565b606091505b505080915050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516130689061491c565b60006040518083038185875af1925050503d80600081146130a5576040519150601f19603f3d011682016040523d82523d6000602084013e6130aa565b606091505b5050809150506000905060008b11156131c657602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161314696959493929190614931565b60606040518083038185885af1158015613164573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131899190614992565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c6040516131bd9291906149e5565b60405180910390a15b5050505050505050505050506000602560006101000a81548160ff021916908315150217905550565b60008083036132015760009050613263565b6000828461320f919061436d565b905082848261321e919061433c565b1461325e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325590614a80565b60405180910390fd5b809150505b92915050565b60006132ab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139eb565b905092915050565b600061333e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133d382600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134739190613b1f565b60405180910390a3600190509392505050565b600654811115806134e05750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61351f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351690614aec565b60405180910390fd5b5050565b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156135905750602560009054906101000a900460ff16155b80156135a85750602360159054906101000a900460ff165b80156135f55750602454600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000806016549050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136615760145490506136bd565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036136bc5760155490505b5b600061370660646013546136d1919061436d565b6136f8846136ea6012548a6131ef90919063ffffffff16565b6131ef90919063ffffffff16565b61326990919063ffffffff16565b90506000613733601254613725601154856131ef90919063ffffffff16565b61326990919063ffffffff16565b9050600061374a8284612b2090919063ffffffff16565b905061379e81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138558260086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a90919063ffffffff16565b60086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139179190613b1f565b60405180910390a360008211156139cb5761393d82600554612b2090919063ffffffff16565b600581905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139c29190613b1f565b60405180910390a35b6139de8388612b2090919063ffffffff16565b9450505050509392505050565b60008083118290613a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a299190613c7f565b60405180910390fd5b5060008385613a41919061433c565b9050809150509392505050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b613a7781613a62565b8114613a8257600080fd5b50565b600081359050613a9481613a6e565b92915050565b6000819050919050565b613aad81613a9a565b8114613ab857600080fd5b50565b600081359050613aca81613aa4565b92915050565b60008060408385031215613ae757613ae6613a58565b5b6000613af585828601613a85565b9250506020613b0685828601613abb565b9150509250929050565b613b1981613a9a565b82525050565b6000602082019050613b346000830184613b10565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b6582613b3a565b9050919050565b613b7581613b5a565b8114613b8057600080fd5b50565b600081359050613b9281613b6c565b92915050565b600060208284031215613bae57613bad613a58565b5b6000613bbc84828501613b83565b91505092915050565b613bce81613a62565b82525050565b6000602082019050613be96000830184613bc5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c29578082015181840152602081019050613c0e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c5182613bef565b613c5b8185613bfa565b9350613c6b818560208601613c0b565b613c7481613c35565b840191505092915050565b60006020820190508181036000830152613c998184613c46565b905092915050565b60008060408385031215613cb857613cb7613a58565b5b6000613cc685828601613b83565b9250506020613cd785828601613abb565b9150509250929050565b60008060408385031215613cf857613cf7613a58565b5b6000613d0685828601613abb565b9250506020613d1785828601613abb565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d5e82613c35565b810181811067ffffffffffffffff82111715613d7d57613d7c613d26565b5b80604052505050565b6000613d90613a4e565b9050613d9c8282613d55565b919050565b600067ffffffffffffffff821115613dbc57613dbb613d26565b5b602082029050602081019050919050565b600080fd5b6000613de5613de084613da1565b613d86565b90508083825260208201905060208402830185811115613e0857613e07613dcd565b5b835b81811015613e315780613e1d8882613b83565b845260208401935050602081019050613e0a565b5050509392505050565b600082601f830112613e5057613e4f613d21565b5b8135613e60848260208601613dd2565b91505092915050565b60008060408385031215613e8057613e7f613a58565b5b600083013567ffffffffffffffff811115613e9e57613e9d613a5d565b5b613eaa85828601613e3b565b9250506020613ebb85828601613a85565b9150509250929050565b600080600060608486031215613ede57613edd613a58565b5b6000613eec86828701613b83565b9350506020613efd86828701613b83565b9250506040613f0e86828701613abb565b9150509250925092565b600060ff82169050919050565b613f2e81613f18565b82525050565b6000602082019050613f496000830184613f25565b92915050565b60008060408385031215613f6657613f65613a58565b5b6000613f7485828601613b83565b9250506020613f8585828601613a85565b9150509250929050565b600060208284031215613fa557613fa4613a58565b5b6000613fb384828501613abb565b91505092915050565b600080600080600060a08688031215613fd857613fd7613a58565b5b6000613fe688828901613b83565b9550506020613ff788828901613b83565b945050604061400888828901613b83565b935050606061401988828901613b83565b925050608061402a88828901613b83565b9150509295509295909350565b61404081613b5a565b82525050565b600060208201905061405b6000830184614037565b92915050565b60008060008060008060c0878903121561407e5761407d613a58565b5b600061408c89828a01613abb565b965050602061409d89828a01613abb565b95505060406140ae89828a01613abb565b94505060606140bf89828a01613abb565b93505060806140d089828a01613abb565b92505060a06140e189828a01613abb565b9150509295509295509295565b60008060006060848603121561410757614106613a58565b5b600061411586828701613abb565b935050602061412686828701613abb565b925050604061413786828701613abb565b9150509250925092565b6000806040838503121561415857614157613a58565b5b600061416685828601613b83565b925050602061417785828601613b83565b9150509250929050565b6000819050919050565b60006141a66141a161419c84613b3a565b614181565b613b3a565b9050919050565b60006141b88261418b565b9050919050565b60006141ca826141ad565b9050919050565b6141da816141bf565b82525050565b60006020820190506141f560008301846141d1565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614231602083613bfa565b915061423c826141fb565b602082019050919050565b6000602082019050818103600083015261426081614224565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142d082613a9a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361430257614301614296565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061434782613a9a565b915061435283613a9a565b9250826143625761436161430d565b5b828204905092915050565b600061437882613a9a565b915061438383613a9a565b925082820261439181613a9a565b915082820484148315176143a8576143a7614296565b5b5092915050565b6000815190506143be81613aa4565b92915050565b6000602082840312156143da576143d9613a58565b5b60006143e8848285016143af565b91505092915050565b60006040820190506144066000830185614037565b6144136020830184613b10565b9392505050565b60008151905061442981613a6e565b92915050565b60006020828403121561444557614444613a58565b5b60006144538482850161441a565b91505092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e20323025000000600082015250565b6000614492601d83613bfa565b915061449d8261445c565b602082019050919050565b600060208201905081810360008301526144c181614485565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614524602683613bfa565b915061452f826144c8565b604082019050919050565b6000602082019050818103600083015261455381614517565b9050919050565b600061456582613a9a565b915061457083613a9a565b925082820390508181111561458857614587614296565b5b92915050565b7f596f7520617265206120626f7400000000000000000000000000000000000000600082015250565b60006145c4600d83613bfa565b91506145cf8261458e565b602082019050919050565b600060208201905081810360008301526145f3816145b7565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000614630601483613bfa565b915061463b826145fa565b602082019050919050565b6000602082019050818103600083015261465f81614623565b9050919050565b600061467182613a9a565b915061467c83613a9a565b925082820190508082111561469457614693614296565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b60006146f6603e83613bfa565b91506147018261469a565b604082019050919050565b60006020820190508181036000830152614725816146e9565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614762601b83613bfa565b915061476d8261472c565b602082019050919050565b6000602082019050818103600083015261479181614755565b9050919050565b6000819050919050565b60006147bd6147b86147b384614798565b614181565b613a9a565b9050919050565b6147cd816147a2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61480881613b5a565b82525050565b600061481a83836147ff565b60208301905092915050565b6000602082019050919050565b600061483e826147d3565b61484881856147de565b9350614853836147ef565b8060005b8381101561488457815161486b888261480e565b975061487683614826565b925050600181019050614857565b5085935050505092915050565b600060a0820190506148a66000830188613b10565b6148b360208301876147c4565b81810360408301526148c58186614833565b90506148d46060830185614037565b6148e16080830184613b10565b9695505050505050565b600081905092915050565b50565b60006149066000836148eb565b9150614911826148f6565b600082019050919050565b6000614927826148f9565b9150819050919050565b600060c0820190506149466000830189614037565b6149536020830188613b10565b61496060408301876147c4565b61496d60608301866147c4565b61497a6080830185614037565b61498760a0830184613b10565b979650505050505050565b6000806000606084860312156149ab576149aa613a58565b5b60006149b9868287016143af565b93505060206149ca868287016143af565b92505060406149db868287016143af565b9150509250925092565b60006040820190506149fa6000830185613b10565b614a076020830184613b10565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a6a602183613bfa565b9150614a7582614a0e565b604082019050919050565b60006020820190508181036000830152614a9981614a5d565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000614ad6601183613bfa565b9150614ae182614aa0565b602082019050919050565b60006020820190508181036000830152614b0581614ac9565b905091905056fea26469706673582212208a6b2ce4712abd30efd56a45b0d54f657c2f43e92b4ea234c592897c8e87dca264736f6c63430008130033

Deployed Bytecode Sourcemap

5106:14127:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18332:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6969:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9131:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8485:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6888:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8907:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19007:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14164:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8215:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6150:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9425:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18682:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8309:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14026:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9807:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6932:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8655:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3163:148;;;;;;;;;;;;;:::i;:::-;;14381:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5598:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17869:455;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5533:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8571:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13869:149;;;;;;;;;;;;;:::i;:::-;;14912:176;;;;;;;;;;;;;:::i;:::-;;2949:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17282:579;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8395:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17154:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18496:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6856:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9261:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2569:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10034:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16989:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14697:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13640:77;;;;;;;;;;;;;:::i;:::-;;18832:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13433:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8766:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3319:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13725:136;;;;;;;;;;;;;:::i;:::-;;6786:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18332:156;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18438:8:::1;18424:11;;:22;;;;;;;;;;;;;;;;;;18473:7;18457:13;:23;;;;18332:156:::0;;:::o;6969:57::-;;;;:::o;9131:122::-;9186:4;9210:35;9218:7;9227:17;9210:7;:35::i;:::-;9203:42;;9131:122;;;:::o;8485:80::-;8533:13;8557:5;;;;;;;;;;;;;;;;;8550:12;;8485:80;:::o;6888:31::-;;;;;;;;;;;;;:::o;8907:216::-;8982:4;9034:6;8999:11;:23;9011:10;8999:23;;;;;;;;;;;;;;;:32;9023:7;8999:32;;;;;;;;;;;;;;;:41;;;;9077:7;9056:37;;9065:10;9056:37;;;9086:6;9056:37;;;;;;:::i;:::-;;;;;;;;9111:4;9104:11;;8907:216;;;;:::o;19007:150::-;19087:4;19143:6;19111:29;19131:8;19111:19;:29::i;:::-;:38;19104:45;;19007:150;;;;:::o;14164:209::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14263:9:::1;14259:107;14281:8;:15;14277:1;:19;14259:107;;;14347:5;14317:14;:27;14332:8;14341:1;14332:11;;;;;;;;:::i;:::-;;;;;;;;14317:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;14298:3;;;;;:::i;:::-;;;;14259:107;;;;14164:209:::0;;:::o;8215:88::-;8270:7;8288:12;;8281:19;;8215:88;:::o;6150:94::-;;;;:::o;9425:370::-;9525:4;9580:17;9545:11;:19;9557:6;9545:19;;;;;;;;;;;;;;;:31;9565:10;9545:31;;;;;;;;;;;;;;;;:52;9542:186;;9647:69;9683:6;9647:69;;;;;;;;;;;;;;;;;:11;:19;9659:6;9647:19;;;;;;;;;;;;;;;:31;9667:10;9647:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9613:11;:19;9625:6;9613:19;;;;;;;;;;;;;;;:31;9633:10;9613:31;;;;;;;;;;;;;;;:103;;;;9542:186;9747:40;9761:6;9769:9;9780:6;9747:13;:40::i;:::-;9740:47;;9425:370;;;;;:::o;18682:142::-;18735:7;18762:54;18800:15;18810:4;;;;;;;;;;;18800:9;:15::i;:::-;18762:33;18779:15;18789:4;;;;;;;;;;;18779:9;:15::i;:::-;18762:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;18755:61;;18682:142;:::o;8309:80::-;8361:5;5460:1;8370:16;;8309:80;:::o;14026:126::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14139:5:::1;14113:14;:23;14128:7;14113:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;14026:126:::0;;:::o;9807:219::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9926:4:::1;9911:12;;:19;;;;:::i;:::-;9892:15;;:38;;9884:47;;;::::0;::::1;;9996:4;9977:14;9962:12;;:29;;;;:::i;:::-;9961:39;;;;:::i;:::-;9943:15;:57;;;;9807:219:::0;:::o;6932:30::-;;;;;;;;;;;;;:::o;8655:105::-;8721:7;8739:9;:18;8749:7;8739:18;;;;;;;;;;;;;;;;8732:25;;8655:105;;;:::o;3163:148::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3270:1:::1;3233:40;;3254:6;::::0;::::1;;;;;;;;3233:40;;;;;;;;;;;;3301:1;3284:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3163:148::o:0;14381:308::-;14460:4;14485:15;:27;14501:10;14485:27;;;;;;;;;;;;;;;;;;;;;;;;;14477:36;;;;;;14534:1;14524:6;:11;14521:95;;14566:12;14560:29;;;14598:4;14560:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14551:53;;14521:95;14639:12;14633:28;;;14662:10;14674:6;14633:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14626:55;;14381:308;;;;:::o;5598:61::-;;;;:::o;17869:455::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18098:22:::1;18074:21;;:46;;;;;;;;;;;;;;;;;;18154:21;18131:20;;:44;;;;;;;;;;;;;;;;;;18207:19;18186:18;;:40;;;;;;;;;;;;;;;;;;18255:16;18237:15;;:34;;;;;;;;;;;;;;;;;;18300:16;18282:15;;:34;;;;;;;;;;;;;;;;;;17869:455:::0;;;;;:::o;5533:58::-;;;;:::o;8571:78::-;8623:7;8640;:5;:7::i;:::-;8633:14;;8571:78;:::o;13869:149::-;13918:15;:27;13934:10;13918:27;;;;;;;;;;;;;;;;;;;;;;;;;13910:36;;;;;;13965:10;13957:28;;:51;13986:21;13957:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13869:149::o;14912:176::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14979:4:::1;14965:11;;:18;;;;;;;;;;;;;;;;;;15010:3;14994:13;:19;;;;15041:3;15024:14;:20;;;;15076:4;15055:18;:25;;;;14912:176::o:0;2949:79::-;2987:7;3014:6;;;;;;;;;;;3007:13;;2949:79;:::o;17282:579::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17483:13:::1;17468:12;:28;;;;17517:8;17507:7;:18;;;;17551:13;17536:12;:28;;;;17588:11;17575:10;:24;;;;17620:8;17610:7;:18;;;;17650:77;17718:8;17650:63;17701:11;17650:46;17682:13;17650:27;17668:8;17650:13;:17;;:27;;;;:::i;:::-;:31;;:46;;;;:::i;:::-;:50;;:63;;;;:::i;:::-;:67;;:77;;;;:::i;:::-;17639:8;:88;;;;17755:15;17738:14;:32;;;;17817:1;17800:14;;:18;;;;:::i;:::-;17789:8;;:29;17781:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17282:579:::0;;;;;;:::o;8395:84::-;8445:13;8469:7;;;;;;;;;;;;;;;;;8462:14;;8395:84;:::o;17154:120::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17260:6:::1;17234:15;:23;17250:6;17234:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17154:120:::0;;:::o;18496:174::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18603:7:::1;18585:15;:25;;;;18650:12;18621:26;:41;;;;18496:174:::0;;:::o;6856:19::-;;;;;;;;;;;;;:::o;9261:156::-;9341:4;9365:44;9379:10;9391:9;9402:6;9365:13;:44::i;:::-;9358:51;;9261:156;;;;:::o;2569:21::-;;;;;;;;;;;;:::o;10034:187::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10144:4:::1;10129:12;;:19;;;;:::i;:::-;10113:12;;:35;;10105:44;;;::::0;::::1;;10209:4;10192:12;10177;;:27;;;;:::i;:::-;10176:37;;;;:::i;:::-;10161:12;:52;;;;10034:187:::0;:::o;16989:157::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17089:6:::1;17067:11;:19;17079:6;17067:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17132:6;17106:15;:23;17122:6;17106:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16989:157:::0;;:::o;14697:207::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14806:5:::1;14789:14;:22;;;;14838:4;14822:13;:20;;;;14874:6;14853:18;:27;;;;14697:207:::0;;;:::o;13640:77::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13693:10:::1;:8;:10::i;:::-;13640:77::o:0;18832:167::-;18900:7;18927:64;18968:22;:20;:22::i;:::-;18927:36;18940:22;18960:1;18940:15;18950:4;;;;;;;;;;;18940:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;18927:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;18920:71;;18832:167;;;:::o;13433:198::-;13502:17;13522:21;13502:41;;13562:15;;;;;;;;;;;13554:33;;:69;13619:3;13600:16;13588:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;13554:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13491:140;13433:198;:::o;8766:133::-;8850:7;8868:11;:19;8880:6;8868:19;;;;;;;;;;;;;;;:28;8888:7;8868:28;;;;;;;;;;;;;;;;8861:35;;8766:133;;;;:::o;3319:244::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3428:1:::1;3408:22;;:8;:22;;::::0;3400:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3518:8;3489:38;;3510:6;::::0;::::1;;;;;;;;3489:38;;;;;;;;;;;;3547:8;3538:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3319:244:::0;:::o;13725:136::-;3086:12;:10;:12::i;:::-;3076:22;;:6;;;;;;;;;;:22;;;3068:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13801:12:::1;;13783:15;:30;;;;13839:12;;13824;:27;;;;13725:136::o:0;6786:24::-;;;;;;;;;;;;;:::o;2290:115::-;2343:15;2386:10;2371:26;;2290:115;:::o;550:192::-;636:7;669:1;664;:6;;672:12;656:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;696:9;712:1;708;:5;;;;:::i;:::-;696:17;;733:1;726:8;;;550:192;;;;;:::o;10238:1329::-;10330:4;10356:14;:22;10371:6;10356:22;;;;;;;;;;;;;;;;;;;;;;;;;10355:23;:53;;;;;10383:14;:25;10398:9;10383:25;;;;;;;;;;;;;;;;;;;;;;;;;10382:26;10355:53;10347:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10442:6;;;;;;;;;;;10439:63;;;10458:41;10473:6;10481:9;10492:6;10458:14;:41::i;:::-;10451:48;;;;10439:63;10518:14;:22;10533:6;10518:22;;;;;;;;;;;;;;;;;;;;;;;;;10517:23;:53;;;;;10545:14;:25;10560:9;10545:25;;;;;;;;;;;;;;;;;;;;;;;;;10544:26;10517:53;10514:140;;;10594:11;;;;;;;;;;;10586:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;10514:140;10688:14;:22;10703:6;10688:22;;;;;;;;;;;;;;;;;;;;;;;;;10687:23;:53;;;;;10735:4;10714:26;;:9;:26;;;;10687:53;:84;;;;;10766:4;;;;;;;;;;;10745:26;;:9;:26;;;;10687:84;:105;;;;;10788:4;;;;;;;;;;;10775:17;;:9;:17;;;;10687:105;:137;;;;;10809:15;;;;;;;;;;;10796:28;;:9;:28;;;;10687:137;:174;;;;;10841:20;;;;;;;;;;;10828:33;;:9;:33;;;;10687:174;:205;;;;;10866:15;:26;10882:9;10866:26;;;;;;;;;;;;;;;;;;;;;;;;;10865:27;10687:205;10683:397;;;10908:18;10929:20;10939:9;10929;:20::i;:::-;10908:41;;10997:15;;10986:6;10973:10;:19;;;;:::i;:::-;10972:40;;10964:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;10893:187;10683:397;11101:28;11114:6;11122;11101:12;:28::i;:::-;11146:16;:14;:16::i;:::-;11143:35;;;11165:10;:8;:10::i;:::-;11143:35;11218:53;11240:6;11218:53;;;;;;;;;;;;;;;;;:9;:17;11228:6;11218:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11198:9;:17;11208:6;11198:17;;;;;;;;;;;;;;;:73;;;;11284:22;11310:11;:19;11322:6;11310:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;11333:11;:22;11345:9;11333:22;;;;;;;;;;;;;;;;;;;;;;;;;11310:45;11309:93;;11368:34;11376:6;11384;11392:9;11368:7;:34::i;:::-;11309:93;;;11359:6;11309:93;11284:118;;11436:40;11461:14;11436:9;:20;11446:9;11436:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11413:9;:20;11423:9;11413:20;;;;;;;;;;;;;;;:63;;;;11511:9;11494:43;;11503:6;11494:43;;;11522:14;11494:43;;;;;;:::i;:::-;;;;;;;;11555:4;11548:11;;;10238:1329;;;;;;:::o;408:136::-;466:7;493:43;497:1;500;493:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;486:50;;408:136;;;;:::o;221:181::-;279:7;299:9;315:1;311;:5;;;;:::i;:::-;299:17;;340:1;335;:6;;327:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;393:1;386:8;;;221:181;;;;:::o;15104:1877::-;7083:4;7074:6;;:13;;;;;;;;;;;;;;;;;;15153:27:::1;15183:60;15199:15;;15216:26;;15183:15;:60::i;:::-;:79;;15250:12;;15183:79;;;15246:1;15183:79;15153:109;;15273:23;15299:59;15356:1;15299:52;15342:8;;15299:38;15317:19;15299:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;15273:85;;15369:20;15392:34;15410:15;15392:13;;:17;;:34;;;;:::i;:::-;15369:57;;15439:21;15477:1;15463:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15439:40;;15508:4;15490;15495:1;15490:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15534:4;;;;;;;;;;;15524;15529:1;15524:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;15551:21;15575;15551:45;;15609:6;;;;;;;;;;;:57;;;15681:12;15708:1;15724:4;15751;15771:15;15609:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15810:17;15830:40;15856:13;15830:21;:25;;:40;;;;:::i;:::-;15810:60;;15883:19;15905:40;15918:26;15942:1;15918:19;:23;;:26;;;;:::i;:::-;15905:8;;:12;;:40;;;;:::i;:::-;15883:62;;15966:26;15995:58;16051:1;15995:51;16034:11;15995:34;16009:19;15995:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;15966:87;;16064:26;16093:44;16125:11;16093:27;16107:12;;16093:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;16064:73;;16148:21;16172:39;16199:11;16172:22;16186:7;;16172:9;:13;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;16148:63;;16222:24;16249:42;16279:11;16249:25;16263:10;;16249:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;16222:69;;16305:15;16333:20;;;;;;;;;;;16325:34;;16367:18;16325:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16304:86;;;16425:18;;;;;;;;;;;16417:32;;16457:16;16417:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16401:77;;;;;16513:15;;;;;;;;;;;16505:29;;16542:13;16505:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16489:71;;;;;16594:5;16581:18;;16633:1;16615:15;:19;16612:362;;;16650:6;;;;;;;;;;;:22;;;16680:18;16726:4;16750:15;16784:1;16804::::0;16824:21:::1;;;;;;;;;;;16864:15;16650:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16914:48;16926:18;16946:15;16914:48;;;;;;;:::i;:::-;;;;;;;;16612:362;15142:1839;;;;;;;;;;;;7101:5:::0;7092:6;;:14;;;;;;;;;;;;;;;;;;15104:1877::o;748:250::-;806:7;835:1;830;:6;826:47;;860:1;853:8;;;;826:47;885:9;901:1;897;:5;;;;:::i;:::-;885:17;;930:1;925;921;:5;;;;:::i;:::-;:10;913:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;989:1;982:8;;;748:250;;;;;:::o;1004:132::-;1062:7;1089:39;1093:1;1096;1089:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1082:46;;1004:132;;;;:::o;11579:330::-;11672:4;11709:53;11731:6;11709:53;;;;;;;;;;;;;;;;;:9;:17;11719:6;11709:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11689:9;:17;11699:6;11689:17;;;;;;;;;;;;;;;:73;;;;11796:32;11821:6;11796:9;:20;11806:9;11796:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11773:9;:20;11783:9;11773:20;;;;;;;;;;;;;;;:55;;;;11861:9;11844:35;;11853:6;11844:35;;;11872:6;11844:35;;;;;;:::i;:::-;;;;;;;;11897:4;11890:11;;11579:330;;;;;:::o;11917:166::-;12014:12;;12004:6;:22;;:49;;;;12030:15;:23;12046:6;12030:23;;;;;;;;;;;;;;;;;;;;;;;;;12004:49;11996:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11917:166;;:::o;13228:197::-;13277:4;13315;;;;;;;;;;;13301:18;;:10;:18;;;;:38;;;;;13333:6;;;;;;;;;;;13332:7;13301:38;:62;;;;;13352:11;;;;;;;;;;;13301:62;:116;;;;;13404:13;;13376:9;:24;13394:4;13376:24;;;;;;;;;;;;;;;;:41;;13301:116;13294:123;;13228:197;:::o;12213:1007::-;12299:7;12329:18;12350;;12329:39;;12397:4;;;;;;;;;;;12384:17;;:9;:17;;;12381:154;;12431:14;;12418:27;;12381:154;;;12476:4;;;;;;;;;;;12466:14;;:6;:14;;;12463:72;;12510:13;;12497:26;;12463:72;12381:154;12547:17;12567:62;12625:3;12608:14;;:20;;;;:::i;:::-;12567:36;12592:10;12567:20;12578:8;;12567:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;12547:82;;12640:18;12661:36;12688:8;;12661:22;12675:7;;12661:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;12640:57;;12708:22;12733:25;12747:10;12733:9;:13;;:25;;;;:::i;:::-;12708:50;;12798:44;12827:14;12798:9;:24;12816:4;12798:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;12771:9;:24;12789:4;12771:24;;;;;;;;;;;;;;;:71;;;;12882:42;12913:10;12882:9;:26;12892:15;;;;;;;;;;;12882:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;12853:9;:26;12863:15;;;;;;;;;;;12853:26;;;;;;;;;;;;;;;:71;;;;12965:4;12940:47;;12949:6;12940:47;;;12972:14;12940:47;;;;;;:::i;:::-;;;;;;;;13034:1;13021:10;:14;13018:154;;;13066:28;13083:10;13066:12;;:16;;:28;;;;:::i;:::-;13051:12;:43;;;;13131:4;;;;;;;;;;;13114:34;;13123:6;13114:34;;;13137:10;13114:34;;;;;;:::i;:::-;;;;;;;;13018:154;13191:21;13202:9;13191:6;:10;;:21;;;;:::i;:::-;13184:28;;;;;;12213:1007;;;;;:::o;1142:189::-;1228:7;1260:1;1256;:5;1263:12;1248:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1287:9;1303:1;1299;:5;;;;:::i;:::-;1287:17;;1322:1;1315:8;;;1142:189;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:77::-;728:7;757:5;746:16;;691:77;;;:::o;774:122::-;847:24;865:5;847:24;:::i;:::-;840:5;837:35;827:63;;886:1;883;876:12;827:63;774:122;:::o;902:139::-;948:5;986:6;973:20;964:29;;1002:33;1029:5;1002:33;:::i;:::-;902:139;;;;:::o;1047:468::-;1112:6;1120;1169:2;1157:9;1148:7;1144:23;1140:32;1137:119;;;1175:79;;:::i;:::-;1137:119;1295:1;1320:50;1362:7;1353:6;1342:9;1338:22;1320:50;:::i;:::-;1310:60;;1266:114;1419:2;1445:53;1490:7;1481:6;1470:9;1466:22;1445:53;:::i;:::-;1435:63;;1390:118;1047:468;;;;;:::o;1521:118::-;1608:24;1626:5;1608:24;:::i;:::-;1603:3;1596:37;1521:118;;:::o;1645:222::-;1738:4;1776:2;1765:9;1761:18;1753:26;;1789:71;1857:1;1846:9;1842:17;1833:6;1789:71;:::i;:::-;1645:222;;;;:::o;1873:126::-;1910:7;1950:42;1943:5;1939:54;1928:65;;1873:126;;;:::o;2005:96::-;2042:7;2071:24;2089:5;2071:24;:::i;:::-;2060:35;;2005:96;;;:::o;2107:122::-;2180:24;2198:5;2180:24;:::i;:::-;2173:5;2170:35;2160:63;;2219:1;2216;2209:12;2160:63;2107:122;:::o;2235:139::-;2281:5;2319:6;2306:20;2297:29;;2335:33;2362:5;2335:33;:::i;:::-;2235:139;;;;:::o;2380:329::-;2439:6;2488:2;2476:9;2467:7;2463:23;2459:32;2456:119;;;2494:79;;:::i;:::-;2456:119;2614:1;2639:53;2684:7;2675:6;2664:9;2660:22;2639:53;:::i;:::-;2629:63;;2585:117;2380:329;;;;:::o;2715:109::-;2796:21;2811:5;2796:21;:::i;:::-;2791:3;2784:34;2715:109;;:::o;2830:210::-;2917:4;2955:2;2944:9;2940:18;2932:26;;2968:65;3030:1;3019:9;3015:17;3006:6;2968:65;:::i;:::-;2830:210;;;;:::o;3046:99::-;3098:6;3132:5;3126:12;3116:22;;3046:99;;;:::o;3151:169::-;3235:11;3269:6;3264:3;3257:19;3309:4;3304:3;3300:14;3285:29;;3151:169;;;;:::o;3326:246::-;3407:1;3417:113;3431:6;3428:1;3425:13;3417:113;;;3516:1;3511:3;3507:11;3501:18;3497:1;3492:3;3488:11;3481:39;3453:2;3450:1;3446:10;3441:15;;3417:113;;;3564:1;3555:6;3550:3;3546:16;3539:27;3388:184;3326:246;;;:::o;3578:102::-;3619:6;3670:2;3666:7;3661:2;3654:5;3650:14;3646:28;3636:38;;3578:102;;;:::o;3686:377::-;3774:3;3802:39;3835:5;3802:39;:::i;:::-;3857:71;3921:6;3916:3;3857:71;:::i;:::-;3850:78;;3937:65;3995:6;3990:3;3983:4;3976:5;3972:16;3937:65;:::i;:::-;4027:29;4049:6;4027:29;:::i;:::-;4022:3;4018:39;4011:46;;3778:285;3686:377;;;;:::o;4069:313::-;4182:4;4220:2;4209:9;4205:18;4197:26;;4269:9;4263:4;4259:20;4255:1;4244:9;4240:17;4233:47;4297:78;4370:4;4361:6;4297:78;:::i;:::-;4289:86;;4069:313;;;;:::o;4388:474::-;4456:6;4464;4513:2;4501:9;4492:7;4488:23;4484:32;4481:119;;;4519:79;;:::i;:::-;4481:119;4639:1;4664:53;4709:7;4700:6;4689:9;4685:22;4664:53;:::i;:::-;4654:63;;4610:117;4766:2;4792:53;4837:7;4828:6;4817:9;4813:22;4792:53;:::i;:::-;4782:63;;4737:118;4388:474;;;;;:::o;4868:::-;4936:6;4944;4993:2;4981:9;4972:7;4968:23;4964:32;4961:119;;;4999:79;;:::i;:::-;4961:119;5119:1;5144:53;5189:7;5180:6;5169:9;5165:22;5144:53;:::i;:::-;5134:63;;5090:117;5246:2;5272:53;5317:7;5308:6;5297:9;5293:22;5272:53;:::i;:::-;5262:63;;5217:118;4868:474;;;;;:::o;5348:117::-;5457:1;5454;5447:12;5471:180;5519:77;5516:1;5509:88;5616:4;5613:1;5606:15;5640:4;5637:1;5630:15;5657:281;5740:27;5762:4;5740:27;:::i;:::-;5732:6;5728:40;5870:6;5858:10;5855:22;5834:18;5822:10;5819:34;5816:62;5813:88;;;5881:18;;:::i;:::-;5813:88;5921:10;5917:2;5910:22;5700:238;5657:281;;:::o;5944:129::-;5978:6;6005:20;;:::i;:::-;5995:30;;6034:33;6062:4;6054:6;6034:33;:::i;:::-;5944:129;;;:::o;6079:311::-;6156:4;6246:18;6238:6;6235:30;6232:56;;;6268:18;;:::i;:::-;6232:56;6318:4;6310:6;6306:17;6298:25;;6378:4;6372;6368:15;6360:23;;6079:311;;;:::o;6396:117::-;6505:1;6502;6495:12;6536:710;6632:5;6657:81;6673:64;6730:6;6673:64;:::i;:::-;6657:81;:::i;:::-;6648:90;;6758:5;6787:6;6780:5;6773:21;6821:4;6814:5;6810:16;6803:23;;6874:4;6866:6;6862:17;6854:6;6850:30;6903:3;6895:6;6892:15;6889:122;;;6922:79;;:::i;:::-;6889:122;7037:6;7020:220;7054:6;7049:3;7046:15;7020:220;;;7129:3;7158:37;7191:3;7179:10;7158:37;:::i;:::-;7153:3;7146:50;7225:4;7220:3;7216:14;7209:21;;7096:144;7080:4;7075:3;7071:14;7064:21;;7020:220;;;7024:21;6638:608;;6536:710;;;;;:::o;7269:370::-;7340:5;7389:3;7382:4;7374:6;7370:17;7366:27;7356:122;;7397:79;;:::i;:::-;7356:122;7514:6;7501:20;7539:94;7629:3;7621:6;7614:4;7606:6;7602:17;7539:94;:::i;:::-;7530:103;;7346:293;7269:370;;;;:::o;7645:678::-;7735:6;7743;7792:2;7780:9;7771:7;7767:23;7763:32;7760:119;;;7798:79;;:::i;:::-;7760:119;7946:1;7935:9;7931:17;7918:31;7976:18;7968:6;7965:30;7962:117;;;7998:79;;:::i;:::-;7962:117;8103:78;8173:7;8164:6;8153:9;8149:22;8103:78;:::i;:::-;8093:88;;7889:302;8230:2;8256:50;8298:7;8289:6;8278:9;8274:22;8256:50;:::i;:::-;8246:60;;8201:115;7645:678;;;;;:::o;8329:619::-;8406:6;8414;8422;8471:2;8459:9;8450:7;8446:23;8442:32;8439:119;;;8477:79;;:::i;:::-;8439:119;8597:1;8622:53;8667:7;8658:6;8647:9;8643:22;8622:53;:::i;:::-;8612:63;;8568:117;8724:2;8750:53;8795:7;8786:6;8775:9;8771:22;8750:53;:::i;:::-;8740:63;;8695:118;8852:2;8878:53;8923:7;8914:6;8903:9;8899:22;8878:53;:::i;:::-;8868:63;;8823:118;8329:619;;;;;:::o;8954:86::-;8989:7;9029:4;9022:5;9018:16;9007:27;;8954:86;;;:::o;9046:112::-;9129:22;9145:5;9129:22;:::i;:::-;9124:3;9117:35;9046:112;;:::o;9164:214::-;9253:4;9291:2;9280:9;9276:18;9268:26;;9304:67;9368:1;9357:9;9353:17;9344:6;9304:67;:::i;:::-;9164:214;;;;:::o;9384:468::-;9449:6;9457;9506:2;9494:9;9485:7;9481:23;9477:32;9474:119;;;9512:79;;:::i;:::-;9474:119;9632:1;9657:53;9702:7;9693:6;9682:9;9678:22;9657:53;:::i;:::-;9647:63;;9603:117;9759:2;9785:50;9827:7;9818:6;9807:9;9803:22;9785:50;:::i;:::-;9775:60;;9730:115;9384:468;;;;;:::o;9858:329::-;9917:6;9966:2;9954:9;9945:7;9941:23;9937:32;9934:119;;;9972:79;;:::i;:::-;9934:119;10092:1;10117:53;10162:7;10153:6;10142:9;10138:22;10117:53;:::i;:::-;10107:63;;10063:117;9858:329;;;;:::o;10193:911::-;10288:6;10296;10304;10312;10320;10369:3;10357:9;10348:7;10344:23;10340:33;10337:120;;;10376:79;;:::i;:::-;10337:120;10496:1;10521:53;10566:7;10557:6;10546:9;10542:22;10521:53;:::i;:::-;10511:63;;10467:117;10623:2;10649:53;10694:7;10685:6;10674:9;10670:22;10649:53;:::i;:::-;10639:63;;10594:118;10751:2;10777:53;10822:7;10813:6;10802:9;10798:22;10777:53;:::i;:::-;10767:63;;10722:118;10879:2;10905:53;10950:7;10941:6;10930:9;10926:22;10905:53;:::i;:::-;10895:63;;10850:118;11007:3;11034:53;11079:7;11070:6;11059:9;11055:22;11034:53;:::i;:::-;11024:63;;10978:119;10193:911;;;;;;;;:::o;11110:118::-;11197:24;11215:5;11197:24;:::i;:::-;11192:3;11185:37;11110:118;;:::o;11234:222::-;11327:4;11365:2;11354:9;11350:18;11342:26;;11378:71;11446:1;11435:9;11431:17;11422:6;11378:71;:::i;:::-;11234:222;;;;:::o;11462:1057::-;11566:6;11574;11582;11590;11598;11606;11655:3;11643:9;11634:7;11630:23;11626:33;11623:120;;;11662:79;;:::i;:::-;11623:120;11782:1;11807:53;11852:7;11843:6;11832:9;11828:22;11807:53;:::i;:::-;11797:63;;11753:117;11909:2;11935:53;11980:7;11971:6;11960:9;11956:22;11935:53;:::i;:::-;11925:63;;11880:118;12037:2;12063:53;12108:7;12099:6;12088:9;12084:22;12063:53;:::i;:::-;12053:63;;12008:118;12165:2;12191:53;12236:7;12227:6;12216:9;12212:22;12191:53;:::i;:::-;12181:63;;12136:118;12293:3;12320:53;12365:7;12356:6;12345:9;12341:22;12320:53;:::i;:::-;12310:63;;12264:119;12422:3;12449:53;12494:7;12485:6;12474:9;12470:22;12449:53;:::i;:::-;12439:63;;12393:119;11462:1057;;;;;;;;:::o;12525:619::-;12602:6;12610;12618;12667:2;12655:9;12646:7;12642:23;12638:32;12635:119;;;12673:79;;:::i;:::-;12635:119;12793:1;12818:53;12863:7;12854:6;12843:9;12839:22;12818:53;:::i;:::-;12808:63;;12764:117;12920:2;12946:53;12991:7;12982:6;12971:9;12967:22;12946:53;:::i;:::-;12936:63;;12891:118;13048:2;13074:53;13119:7;13110:6;13099:9;13095:22;13074:53;:::i;:::-;13064:63;;13019:118;12525:619;;;;;:::o;13150:474::-;13218:6;13226;13275:2;13263:9;13254:7;13250:23;13246:32;13243:119;;;13281:79;;:::i;:::-;13243:119;13401:1;13426:53;13471:7;13462:6;13451:9;13447:22;13426:53;:::i;:::-;13416:63;;13372:117;13528:2;13554:53;13599:7;13590:6;13579:9;13575:22;13554:53;:::i;:::-;13544:63;;13499:118;13150:474;;;;;:::o;13630:60::-;13658:3;13679:5;13672:12;;13630:60;;;:::o;13696:142::-;13746:9;13779:53;13797:34;13806:24;13824:5;13806:24;:::i;:::-;13797:34;:::i;:::-;13779:53;:::i;:::-;13766:66;;13696:142;;;:::o;13844:126::-;13894:9;13927:37;13958:5;13927:37;:::i;:::-;13914:50;;13844:126;;;:::o;13976:144::-;14044:9;14077:37;14108:5;14077:37;:::i;:::-;14064:50;;13976:144;;;:::o;14126:167::-;14231:55;14280:5;14231:55;:::i;:::-;14226:3;14219:68;14126:167;;:::o;14299:258::-;14410:4;14448:2;14437:9;14433:18;14425:26;;14461:89;14547:1;14536:9;14532:17;14523:6;14461:89;:::i;:::-;14299:258;;;;:::o;14563:182::-;14703:34;14699:1;14691:6;14687:14;14680:58;14563:182;:::o;14751:366::-;14893:3;14914:67;14978:2;14973:3;14914:67;:::i;:::-;14907:74;;14990:93;15079:3;14990:93;:::i;:::-;15108:2;15103:3;15099:12;15092:19;;14751:366;;;:::o;15123:419::-;15289:4;15327:2;15316:9;15312:18;15304:26;;15376:9;15370:4;15366:20;15362:1;15351:9;15347:17;15340:47;15404:131;15530:4;15404:131;:::i;:::-;15396:139;;15123:419;;;:::o;15548:180::-;15596:77;15593:1;15586:88;15693:4;15690:1;15683:15;15717:4;15714:1;15707:15;15734:180;15782:77;15779:1;15772:88;15879:4;15876:1;15869:15;15903:4;15900:1;15893:15;15920:233;15959:3;15982:24;16000:5;15982:24;:::i;:::-;15973:33;;16028:66;16021:5;16018:77;16015:103;;16098:18;;:::i;:::-;16015:103;16145:1;16138:5;16134:13;16127:20;;15920:233;;;:::o;16159:180::-;16207:77;16204:1;16197:88;16304:4;16301:1;16294:15;16328:4;16325:1;16318:15;16345:185;16385:1;16402:20;16420:1;16402:20;:::i;:::-;16397:25;;16436:20;16454:1;16436:20;:::i;:::-;16431:25;;16475:1;16465:35;;16480:18;;:::i;:::-;16465:35;16522:1;16519;16515:9;16510:14;;16345:185;;;;:::o;16536:410::-;16576:7;16599:20;16617:1;16599:20;:::i;:::-;16594:25;;16633:20;16651:1;16633:20;:::i;:::-;16628:25;;16688:1;16685;16681:9;16710:30;16728:11;16710:30;:::i;:::-;16699:41;;16889:1;16880:7;16876:15;16873:1;16870:22;16850:1;16843:9;16823:83;16800:139;;16919:18;;:::i;:::-;16800:139;16584:362;16536:410;;;;:::o;16952:143::-;17009:5;17040:6;17034:13;17025:22;;17056:33;17083:5;17056:33;:::i;:::-;16952:143;;;;:::o;17101:351::-;17171:6;17220:2;17208:9;17199:7;17195:23;17191:32;17188:119;;;17226:79;;:::i;:::-;17188:119;17346:1;17371:64;17427:7;17418:6;17407:9;17403:22;17371:64;:::i;:::-;17361:74;;17317:128;17101:351;;;;:::o;17458:332::-;17579:4;17617:2;17606:9;17602:18;17594:26;;17630:71;17698:1;17687:9;17683:17;17674:6;17630:71;:::i;:::-;17711:72;17779:2;17768:9;17764:18;17755:6;17711:72;:::i;:::-;17458:332;;;;;:::o;17796:137::-;17850:5;17881:6;17875:13;17866:22;;17897:30;17921:5;17897:30;:::i;:::-;17796:137;;;;:::o;17939:345::-;18006:6;18055:2;18043:9;18034:7;18030:23;18026:32;18023:119;;;18061:79;;:::i;:::-;18023:119;18181:1;18206:61;18259:7;18250:6;18239:9;18235:22;18206:61;:::i;:::-;18196:71;;18152:125;17939:345;;;;:::o;18290:179::-;18430:31;18426:1;18418:6;18414:14;18407:55;18290:179;:::o;18475:366::-;18617:3;18638:67;18702:2;18697:3;18638:67;:::i;:::-;18631:74;;18714:93;18803:3;18714:93;:::i;:::-;18832:2;18827:3;18823:12;18816:19;;18475:366;;;:::o;18847:419::-;19013:4;19051:2;19040:9;19036:18;19028:26;;19100:9;19094:4;19090:20;19086:1;19075:9;19071:17;19064:47;19128:131;19254:4;19128:131;:::i;:::-;19120:139;;18847:419;;;:::o;19272:225::-;19412:34;19408:1;19400:6;19396:14;19389:58;19481:8;19476:2;19468:6;19464:15;19457:33;19272:225;:::o;19503:366::-;19645:3;19666:67;19730:2;19725:3;19666:67;:::i;:::-;19659:74;;19742:93;19831:3;19742:93;:::i;:::-;19860:2;19855:3;19851:12;19844:19;;19503:366;;;:::o;19875:419::-;20041:4;20079:2;20068:9;20064:18;20056:26;;20128:9;20122:4;20118:20;20114:1;20103:9;20099:17;20092:47;20156:131;20282:4;20156:131;:::i;:::-;20148:139;;19875:419;;;:::o;20300:194::-;20340:4;20360:20;20378:1;20360:20;:::i;:::-;20355:25;;20394:20;20412:1;20394:20;:::i;:::-;20389:25;;20438:1;20435;20431:9;20423:17;;20462:1;20456:4;20453:11;20450:37;;;20467:18;;:::i;:::-;20450:37;20300:194;;;;:::o;20500:163::-;20640:15;20636:1;20628:6;20624:14;20617:39;20500:163;:::o;20669:366::-;20811:3;20832:67;20896:2;20891:3;20832:67;:::i;:::-;20825:74;;20908:93;20997:3;20908:93;:::i;:::-;21026:2;21021:3;21017:12;21010:19;;20669:366;;;:::o;21041:419::-;21207:4;21245:2;21234:9;21230:18;21222:26;;21294:9;21288:4;21284:20;21280:1;21269:9;21265:17;21258:47;21322:131;21448:4;21322:131;:::i;:::-;21314:139;;21041:419;;;:::o;21466:170::-;21606:22;21602:1;21594:6;21590:14;21583:46;21466:170;:::o;21642:366::-;21784:3;21805:67;21869:2;21864:3;21805:67;:::i;:::-;21798:74;;21881:93;21970:3;21881:93;:::i;:::-;21999:2;21994:3;21990:12;21983:19;;21642:366;;;:::o;22014:419::-;22180:4;22218:2;22207:9;22203:18;22195:26;;22267:9;22261:4;22257:20;22253:1;22242:9;22238:17;22231:47;22295:131;22421:4;22295:131;:::i;:::-;22287:139;;22014:419;;;:::o;22439:191::-;22479:3;22498:20;22516:1;22498:20;:::i;:::-;22493:25;;22532:20;22550:1;22532:20;:::i;:::-;22527:25;;22575:1;22572;22568:9;22561:16;;22596:3;22593:1;22590:10;22587:36;;;22603:18;;:::i;:::-;22587:36;22439:191;;;;:::o;22636:249::-;22776:34;22772:1;22764:6;22760:14;22753:58;22845:32;22840:2;22832:6;22828:15;22821:57;22636:249;:::o;22891:366::-;23033:3;23054:67;23118:2;23113:3;23054:67;:::i;:::-;23047:74;;23130:93;23219:3;23130:93;:::i;:::-;23248:2;23243:3;23239:12;23232:19;;22891:366;;;:::o;23263:419::-;23429:4;23467:2;23456:9;23452:18;23444:26;;23516:9;23510:4;23506:20;23502:1;23491:9;23487:17;23480:47;23544:131;23670:4;23544:131;:::i;:::-;23536:139;;23263:419;;;:::o;23688:177::-;23828:29;23824:1;23816:6;23812:14;23805:53;23688:177;:::o;23871:366::-;24013:3;24034:67;24098:2;24093:3;24034:67;:::i;:::-;24027:74;;24110:93;24199:3;24110:93;:::i;:::-;24228:2;24223:3;24219:12;24212:19;;23871:366;;;:::o;24243:419::-;24409:4;24447:2;24436:9;24432:18;24424:26;;24496:9;24490:4;24486:20;24482:1;24471:9;24467:17;24460:47;24524:131;24650:4;24524:131;:::i;:::-;24516:139;;24243:419;;;:::o;24668:85::-;24713:7;24742:5;24731:16;;24668:85;;;:::o;24759:158::-;24817:9;24850:61;24868:42;24877:32;24903:5;24877:32;:::i;:::-;24868:42;:::i;:::-;24850:61;:::i;:::-;24837:74;;24759:158;;;:::o;24923:147::-;25018:45;25057:5;25018:45;:::i;:::-;25013:3;25006:58;24923:147;;:::o;25076:114::-;25143:6;25177:5;25171:12;25161:22;;25076:114;;;:::o;25196:184::-;25295:11;25329:6;25324:3;25317:19;25369:4;25364:3;25360:14;25345:29;;25196:184;;;;:::o;25386:132::-;25453:4;25476:3;25468:11;;25506:4;25501:3;25497:14;25489:22;;25386:132;;;:::o;25524:108::-;25601:24;25619:5;25601:24;:::i;:::-;25596:3;25589:37;25524:108;;:::o;25638:179::-;25707:10;25728:46;25770:3;25762:6;25728:46;:::i;:::-;25806:4;25801:3;25797:14;25783:28;;25638:179;;;;:::o;25823:113::-;25893:4;25925;25920:3;25916:14;25908:22;;25823:113;;;:::o;25972:732::-;26091:3;26120:54;26168:5;26120:54;:::i;:::-;26190:86;26269:6;26264:3;26190:86;:::i;:::-;26183:93;;26300:56;26350:5;26300:56;:::i;:::-;26379:7;26410:1;26395:284;26420:6;26417:1;26414:13;26395:284;;;26496:6;26490:13;26523:63;26582:3;26567:13;26523:63;:::i;:::-;26516:70;;26609:60;26662:6;26609:60;:::i;:::-;26599:70;;26455:224;26442:1;26439;26435:9;26430:14;;26395:284;;;26399:14;26695:3;26688:10;;26096:608;;;25972:732;;;;:::o;26710:831::-;26973:4;27011:3;27000:9;26996:19;26988:27;;27025:71;27093:1;27082:9;27078:17;27069:6;27025:71;:::i;:::-;27106:80;27182:2;27171:9;27167:18;27158:6;27106:80;:::i;:::-;27233:9;27227:4;27223:20;27218:2;27207:9;27203:18;27196:48;27261:108;27364:4;27355:6;27261:108;:::i;:::-;27253:116;;27379:72;27447:2;27436:9;27432:18;27423:6;27379:72;:::i;:::-;27461:73;27529:3;27518:9;27514:19;27505:6;27461:73;:::i;:::-;26710:831;;;;;;;;:::o;27547:147::-;27648:11;27685:3;27670:18;;27547:147;;;;:::o;27700:114::-;;:::o;27820:398::-;27979:3;28000:83;28081:1;28076:3;28000:83;:::i;:::-;27993:90;;28092:93;28181:3;28092:93;:::i;:::-;28210:1;28205:3;28201:11;28194:18;;27820:398;;;:::o;28224:379::-;28408:3;28430:147;28573:3;28430:147;:::i;:::-;28423:154;;28594:3;28587:10;;28224:379;;;:::o;28609:807::-;28858:4;28896:3;28885:9;28881:19;28873:27;;28910:71;28978:1;28967:9;28963:17;28954:6;28910:71;:::i;:::-;28991:72;29059:2;29048:9;29044:18;29035:6;28991:72;:::i;:::-;29073:80;29149:2;29138:9;29134:18;29125:6;29073:80;:::i;:::-;29163;29239:2;29228:9;29224:18;29215:6;29163:80;:::i;:::-;29253:73;29321:3;29310:9;29306:19;29297:6;29253:73;:::i;:::-;29336;29404:3;29393:9;29389:19;29380:6;29336:73;:::i;:::-;28609:807;;;;;;;;;:::o;29422:663::-;29510:6;29518;29526;29575:2;29563:9;29554:7;29550:23;29546:32;29543:119;;;29581:79;;:::i;:::-;29543:119;29701:1;29726:64;29782:7;29773:6;29762:9;29758:22;29726:64;:::i;:::-;29716:74;;29672:128;29839:2;29865:64;29921:7;29912:6;29901:9;29897:22;29865:64;:::i;:::-;29855:74;;29810:129;29978:2;30004:64;30060:7;30051:6;30040:9;30036:22;30004:64;:::i;:::-;29994:74;;29949:129;29422:663;;;;;:::o;30091:332::-;30212:4;30250:2;30239:9;30235:18;30227:26;;30263:71;30331:1;30320:9;30316:17;30307:6;30263:71;:::i;:::-;30344:72;30412:2;30401:9;30397:18;30388:6;30344:72;:::i;:::-;30091:332;;;;;:::o;30429:220::-;30569:34;30565:1;30557:6;30553:14;30546:58;30638:3;30633:2;30625:6;30621:15;30614:28;30429:220;:::o;30655:366::-;30797:3;30818:67;30882:2;30877:3;30818:67;:::i;:::-;30811:74;;30894:93;30983:3;30894:93;:::i;:::-;31012:2;31007:3;31003:12;30996:19;;30655:366;;;:::o;31027:419::-;31193:4;31231:2;31220:9;31216:18;31208:26;;31280:9;31274:4;31270:20;31266:1;31255:9;31251:17;31244:47;31308:131;31434:4;31308:131;:::i;:::-;31300:139;;31027:419;;;:::o;31452:167::-;31592:19;31588:1;31580:6;31576:14;31569:43;31452:167;:::o;31625:366::-;31767:3;31788:67;31852:2;31847:3;31788:67;:::i;:::-;31781:74;;31864:93;31953:3;31864:93;:::i;:::-;31982:2;31977:3;31973:12;31966:19;;31625:366;;;:::o;31997:419::-;32163:4;32201:2;32190:9;32186:18;32178:26;;32250:9;32244:4;32240:20;32236:1;32225:9;32221:17;32214:47;32278:131;32404:4;32278:131;:::i;:::-;32270:139;;31997:419;;;:::o

Swarm Source

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