ETH Price: $2,396.49 (-4.29%)

Token

Grok Reflections (GROKR)
 

Overview

Max Total Supply

1,000,000,000 GROKR

Holders

21

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,100,000 GROKR

Value
$0.00
0x5e3d03d052e62563c57d0e69aff1cce9fdd35b52
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:
grokr

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-12
*/

/*

3% GROK reflections
1% Marketing

Socials coming soon

t.me/grokreflections

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.13;

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

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

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

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

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

        return c;
    }
}

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

 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    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 IGrokReflections {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
    function gibTokens(address shareholder) external;
}


contract GrokReflections is IGrokReflections {

    using SafeMath for uint256;
    address _token;

    address public GROK;

    IDEXRouter router;

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

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

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

    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 0 * (10 ** 9);

    uint256 public currentIndex;
    bool initialized;

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

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

    constructor () {
        _token = msg.sender;
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        GROK = 0x8390a1DA07E376ef7aDd4Be859BA74Fb83aA02D5;
    }
    
    receive() external payable {
        deposit();
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

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

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

    function deposit() public payable override {

        uint256 balanceBefore = IERC20(GROK).balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(GROK);

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

        uint256 amount = IERC20(GROK).balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
    
    function process(uint256 gas) external override {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

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

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

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

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

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

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            IERC20(GROK).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function gibTokens(address shareholder) external override onlyToken {
        distributeDividend(shareholder);
    }

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

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

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

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

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

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

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

contract grokr is Context, IERC20, Ownable {
    using SafeMath for uint256;

    address public GROK = 0x8390a1DA07E376ef7aDd4Be859BA74Fb83aA02D5; //GROK CA

    string private constant _name = "Grok Reflections";
    string private constant _symbol = "GROKR";
    uint8 private constant _decimals = 18;
    
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);

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

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

    bool public antiBot = true;

    mapping (address => bool) private bots; 
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public launchedAt;
    address public lpWallet = DEAD;

    uint256 public buyFee = 29;
    uint256 public sellFee = 29;

    uint256 public toReflections = 75;
    uint256 public toLiquidity = 0;
    uint256 public toMarketing = 25;

    uint256 public allocationSum = 100;

    IDEXRouter public router;
    address public pair;
    address public factory;
    address private tokenOwner;
    address public devWallet = payable(0xF2D7B7A0c9Fb60C28c093A1E4F2eb0Faf5344AF3);

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    
    GrokReflections public grokReflections;
    uint256 public grokReflectionsGas = 0;

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    uint256 public maxTx = _totalSupply.div(100);
    uint256 public maxWallet = _totalSupply.div(50);
    uint256 public swapThreshold = _totalSupply.div(400);

    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            
        WETH = router.WETH();
        
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        grokReflections = new GrokReflections();
        
        isFeeExempt[owner()] = true;
        isFeeExempt[devWallet] = true;            

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

        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[devWallet] = true;  


        _balances[owner()] = _totalSupply;
    
        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable { }


    function setBots(address[] memory bots_) external onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    //once enabled, cannot be reversed
    function openTrading() external onlyOwner {
        launchedAt = block.number;
        tradingOpen = true;
    }      

    function changeTotalFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {

        buyFee = newBuyFee;
        sellFee = newSellFee;
    } 
    
    function changeFeeAllocation(uint256 newRewardFee, uint256 newLpFee, uint256 newMarketingFee) external onlyOwner {
        toReflections = newRewardFee;
        toLiquidity = newLpFee;
        toMarketing = newMarketingFee;
    }

    function changeTxLimit(uint256 newLimit) external onlyOwner {
        maxTx = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        maxWallet  = newLimit;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

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

    function setDevWallet(address payable newDevWallet) external onlyOwner {
        devWallet = payable(newDevWallet);
    }

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }     

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external onlyOwner {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner {
        grokReflections.setDistributionCriteria(newMinPeriod, newMinDistribution);        
    }

    function delBot(address notbot) external onlyOwner {
        bots[notbot] = false;
    }

    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            grokReflections.setShare(holder, 0);
        }else{
            grokReflections.setShare(holder, _balances[holder]);
        }
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        _setIsDividendExempt(holder, exempt);
    }

    function changeGrokReflectionsGas(uint256 newGas) external onlyOwner {
        grokReflectionsGas = newGas;
    }           

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transfer(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 _transfer(sender, recipient, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (sender!= owner() && recipient!= owner()) require(tradingOpen, "hold ur horses big guy."); //transfers disabled before tradingActive
        require(!bots[sender] && !bots[recipient]);

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

        require(amount <= maxTx || isTxLimitExempt[sender], "tx");

        if(!isTxLimitExempt[recipient] && antiBot)
        {
            require(_balances[recipient].add(amount) <= maxWallet, "wallet");
        }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

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

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

        emit Transfer(sender, recipient, finalAmount);
        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 takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? sellFee : buyFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

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

        return amount.sub(feeAmount);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {

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

        approve(address(this), tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpWallet,
            block.timestamp
        );
    }

    function swapBack() internal lockTheSwap {
    
        uint256 tokenBalance = _balances[address(this)]; 
        uint256 tokensForLiquidity = tokenBalance.mul(toLiquidity).div(100).div(2);     
        uint256 amountToSwap = tokenBalance.sub(tokensForLiquidity);

        swapTokensForEth(amountToSwap);

        uint256 totalEthBalance = address(this).balance;
        uint256 ethForGROK = totalEthBalance.mul(toReflections).div(100);
        uint256 ethForDev = totalEthBalance.mul(toMarketing).div(100);
        uint256 ethForLiquidity = totalEthBalance.mul(toLiquidity).div(100).div(2);
      
        if (totalEthBalance > 0){
            payable(devWallet).transfer(ethForDev);
        }
        
        try grokReflections.deposit{value: ethForGROK}() {} catch {}
        
        if (tokensForLiquidity > 0){
            addLiquidity(tokensForLiquidity, ethForLiquidity);
        }
    }

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

    function clearStuckEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0){          
            payable(devWallet).transfer(contractETHBalance);
        }
    }

    function manualProcessGas(uint256 manualGas) external onlyOwner {
        grokReflections.process(manualGas);
    }

    function checkPendingReflections(address shareholder) external view returns (uint256) {
        return grokReflections.getUnpaidEarnings(shareholder);
    }

    function getGROK() external {
        grokReflections.gibTokens(msg.sender);
    }
}

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":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":"GROK","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocationSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newLpFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"changeFeeAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGas","type":"uint256"}],"name":"changeGrokReflectionsGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"changeTotalFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"checkPendingReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGROK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"grokReflections","outputs":[{"internalType":"contract GrokReflections","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"grokReflectionsGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcessGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052738390a1da07e376ef7add4be859ba74fb83aa02d5600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a62000069919062000e86565b633b9aca006200007a919062000ed7565b60025561dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860146101000a81548160ff021916908315150217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d600f55601d601055604b60115560006012556019601355606460145573f2d7b7a0c9fb60c28c093a1e4f2eb0faf5344af3601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506000601b556200024b606460025462000bf360201b620028241790919060201c565b601c556200026b603260025462000bf360201b620028241790919060201c565b601d556200028c61019060025462000bf360201b620028241790919060201c565b601e553480156200029c57600080fd5b506000620002af62000c4560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000410573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000436919062000fa2565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050a919062000fa2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200056892919062000fe5565b6020604051808303816000875af115801562000588573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ae919062000fa2565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051620006bf9062000cde565b604051809103906000f080158015620006dc573d6000803e3d6000fd5b50601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60006200073362000c4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200096062000c4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002546003600062000b3662000c4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b8462000c4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000be5919062001023565b60405180910390a36200116f565b600062000c3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c7660201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cb79190620010e4565b60405180910390fd5b506000838562000cd1919062001137565b9050809150509392505050565b61204c8062005fc083390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d7a5780860481111562000d525762000d5162000cec565b5b600185161562000d625780820291505b808102905062000d728562000d1b565b945062000d32565b94509492505050565b60008262000d95576001905062000e68565b8162000da5576000905062000e68565b816001811462000dbe576002811462000dc95762000dff565b600191505062000e68565b60ff84111562000dde5762000ddd62000cec565b5b8360020a91508482111562000df85762000df762000cec565b5b5062000e68565b5060208310610133831016604e8410600b841016171562000e395782820a90508381111562000e335762000e3262000cec565b5b62000e68565b62000e48848484600162000d28565b9250905081840481111562000e625762000e6162000cec565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000e938262000e6f565b915062000ea08362000e79565b925062000ecf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d83565b905092915050565b600062000ee48262000e6f565b915062000ef18362000e6f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f2d5762000f2c62000cec565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f6a8262000f3d565b9050919050565b62000f7c8162000f5d565b811462000f8857600080fd5b50565b60008151905062000f9c8162000f71565b92915050565b60006020828403121562000fbb5762000fba62000f38565b5b600062000fcb8482850162000f8b565b91505092915050565b62000fdf8162000f5d565b82525050565b600060408201905062000ffc600083018562000fd4565b6200100b602083018462000fd4565b9392505050565b6200101d8162000e6f565b82525050565b60006020820190506200103a600083018462001012565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200107c5780820151818401526020810190506200105f565b838111156200108c576000848401525b50505050565b6000601f19601f8301169050919050565b6000620010b08262001040565b620010bc81856200104b565b9350620010ce8185602086016200105c565b620010d98162001092565b840191505092915050565b60006020820190508181036000830152620011008184620010a3565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011448262000e6f565b9150620011518362000e6f565b92508262001164576200116362001108565b5b828204905092915050565b614e41806200117f6000396000f3fe6080604052600436106103905760003560e01c806377359aa7116101dc578063bb542ef011610102578063d920334e116100a0578063f887ea401161006f578063f887ea4014610d0b578063f8b45b0514610d36578063fabe628314610d61578063ffb54a9914610d8a57610397565b8063d920334e14610c53578063dd62ed3e14610c7c578063f2fde38b14610cb9578063f708a64f14610ce257610397565b8063c45a0155116100dc578063c45a015514610bbb578063c8d1293d14610be6578063c9567bf914610c11578063caa5581b14610c2857610397565b8063bb542ef014610b3c578063bf56b37114610b65578063c2c3952d14610b9057610397565b80638b42507f1161017a578063a3a2e89e11610149578063a3a2e89e14610a82578063a8aa1b3114610aab578063a9059cbb14610ad6578063b515566a14610b1357610397565b80638b42507f146109c45780638da5cb5b14610a015780638ea5220f14610a2c57806395d89b4114610a5757610397565b80637f058804116101b65780637f05880414610942578063819340311461095957806389291a8f14610982578063893d20e81461099957610397565b806377359aa7146108b15780637db1342c146108ee5780637dfcbe341461091757610397565b80633dab5269116102c1578063558da3d31161025f57806370a082311161022e57806370a0823114610807578063715018a6146108445780637437681e1461085b57806375df13051461088657610397565b8063558da3d31461075f578063571ac8b0146107885780636303516c146107c557806366eb3785146107f057610397565b8063454343771161029b57806345434377146106b357806347062402146106de5780634a74bb0214610709578063538b1bea1461073457610397565b80633dab5269146106105780633f4218e0146106395780634355855a1461067657610397565b8063273123b71161032e5780632d48e896116103085780632d48e8961461056a5780632dbea2e11461059357806330ca34ee146105bc578063313ce567146105e557610397565b8063273123b7146104eb5780632b112e49146105145780632b14ca561461053f57610397565b8063095ea7b31161036a578063095ea7b31461041d57806318160ddd1461045a5780631f53ac021461048557806323b872dd146104ae57610397565b80630445b6671461039c57806305efa057146103c757806306fdde03146103f257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610db5565b6040516103be9190613ea0565b60405180910390f35b3480156103d357600080fd5b506103dc610dbb565b6040516103e99190613efc565b60405180910390f35b3480156103fe57600080fd5b50610407610de1565b6040516104149190613fb0565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f919061403e565b610e1e565b6040516104519190614099565b60405180910390f35b34801561046657600080fd5b5061046f610f10565b60405161047c9190613ea0565b60405180910390f35b34801561049157600080fd5b506104ac60048036038101906104a791906140f2565b610f1a565b005b3480156104ba57600080fd5b506104d560048036038101906104d0919061411f565b610ff3565b6040516104e29190614099565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190614172565b6111f3565b005b34801561052057600080fd5b506105296112e3565b6040516105369190613ea0565b60405180910390f35b34801561054b57600080fd5b50610554611365565b6040516105619190613ea0565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061419f565b61136b565b005b34801561059f57600080fd5b506105ba60048036038101906105b591906141df565b611493565b005b3480156105c857600080fd5b506105e360048036038101906105de919061419f565b611542565b005b3480156105f157600080fd5b506105fa6115e9565b604051610607919061424e565b60405180910390f35b34801561061c57600080fd5b5061063760048036038101906106329190614295565b6115f2565b005b34801561064557600080fd5b50610660600480360381019061065b9190614172565b6116ac565b60405161066d9190614099565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190614172565b6116cc565b6040516106aa9190614099565b60405180910390f35b3480156106bf57600080fd5b506106c86116ec565b6040516106d59190613ea0565b60405180910390f35b3480156106ea57600080fd5b506106f36116f2565b6040516107009190613ea0565b60405180910390f35b34801561071557600080fd5b5061071e6116f8565b60405161072b9190614099565b60405180910390f35b34801561074057600080fd5b5061074961170b565b6040516107569190614334565b60405180910390f35b34801561076b57600080fd5b506107866004803603810190610781919061434f565b611731565b005b34801561079457600080fd5b506107af60048036038101906107aa9190614172565b6117d0565b6040516107bc9190614099565b60405180910390f35b3480156107d157600080fd5b506107da611803565b6040516107e79190613efc565b60405180910390f35b3480156107fc57600080fd5b50610805611829565b005b34801561081357600080fd5b5061082e60048036038101906108299190614172565b6118c8565b60405161083b9190613ea0565b60405180910390f35b34801561085057600080fd5b50610859611911565b005b34801561086757600080fd5b50610870611a64565b60405161087d9190613ea0565b60405180910390f35b34801561089257600080fd5b5061089b611a6a565b6040516108a89190613ea0565b60405180910390f35b3480156108bd57600080fd5b506108d860048036038101906108d39190614172565b611a70565b6040516108e59190613ea0565b60405180910390f35b3480156108fa57600080fd5b506109156004803603810190610910919061434f565b611b15565b005b34801561092357600080fd5b5061092c611bb4565b6040516109399190614099565b60405180910390f35b34801561094e57600080fd5b50610957611bc7565b005b34801561096557600080fd5b50610980600480360381019061097b919061434f565b611c56565b005b34801561098e57600080fd5b50610997611d7b565b005b3480156109a557600080fd5b506109ae611e8b565b6040516109bb9190613efc565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190614172565b611e9a565b6040516109f89190614099565b60405180910390f35b348015610a0d57600080fd5b50610a16611eba565b604051610a239190613efc565b60405180910390f35b348015610a3857600080fd5b50610a41611ee3565b604051610a4e9190613efc565b60405180910390f35b348015610a6357600080fd5b50610a6c611f09565b604051610a799190613fb0565b60405180910390f35b348015610a8e57600080fd5b50610aa96004803603810190610aa4919061437c565b611f46565b005b348015610ab757600080fd5b50610ac0612036565b604051610acd9190613efc565b60405180910390f35b348015610ae257600080fd5b50610afd6004803603810190610af8919061403e565b61205c565b604051610b0a9190614099565b60405180910390f35b348015610b1f57600080fd5b50610b3a6004803603810190610b359190614504565b612071565b005b348015610b4857600080fd5b50610b636004803603810190610b5e91906140f2565b61219b565b005b348015610b7157600080fd5b50610b7a612274565b604051610b879190613ea0565b60405180910390f35b348015610b9c57600080fd5b50610ba561227a565b604051610bb29190613ea0565b60405180910390f35b348015610bc757600080fd5b50610bd0612280565b604051610bdd9190613efc565b60405180910390f35b348015610bf257600080fd5b50610bfb6122a6565b604051610c089190613ea0565b60405180910390f35b348015610c1d57600080fd5b50610c266122ac565b005b348015610c3457600080fd5b50610c3d612365565b604051610c4a9190613ea0565b60405180910390f35b348015610c5f57600080fd5b50610c7a6004803603810190610c75919061434f565b61236b565b005b348015610c8857600080fd5b50610ca36004803603810190610c9e919061454d565b61240a565b604051610cb09190613ea0565b60405180910390f35b348015610cc557600080fd5b50610ce06004803603810190610cdb9190614172565b612491565b005b348015610cee57600080fd5b50610d096004803603810190610d04919061437c565b612652565b005b348015610d1757600080fd5b50610d206126f5565b604051610d2d91906145c0565b60405180910390f35b348015610d4257600080fd5b50610d4b61271b565b604051610d589190613ea0565b60405180910390f35b348015610d6d57600080fd5b50610d886004803603810190610d83919061437c565b612721565b005b348015610d9657600080fd5b50610d9f612811565b604051610dac9190614099565b60405180910390f35b601e5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280601081526020017f47726f6b205265666c656374696f6e7300000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610efe9190613ea0565b60405180910390a36001905092915050565b6000600254905090565b610f2261286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690614627565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146111df5761115e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6111ea8484846128da565b90509392505050565b6111fb61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127f90614627565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611360611313600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118c8565b611352611341600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118c8565b6002546131b990919063ffffffff16565b6131b990919063ffffffff16565b905090565b60105481565b61137361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f790614627565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161145d929190614647565b600060405180830381600087803b15801561147757600080fd5b505af115801561148b573d6000803e3d6000fd5b505050505050565b61149b61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151f90614627565b60405180910390fd5b826011819055508160128190555080601381905550505050565b61154a61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce90614627565b60405180910390fd5b81600f81905550806010819055505050565b60006012905090565b6115fa61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e90614627565b60405180910390fd5b81601960156101000a81548160ff02191690831515021790555080601e819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b600f5481565b601960159054906101000a900460ff1681565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61173961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd90614627565b60405180910390fd5b80601b8190555050565b60006117fc827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e1e565b9050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61183161286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b590614627565b60405180910390fd5b6118c6613203565b565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61191961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d90614627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c5481565b60135481565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401611acd9190613efc565b602060405180830381865afa158015611aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0e9190614685565b9050919050565b611b1d61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba190614627565b60405180910390fd5b80601d8190555050565b600860149054906101000a900460ff1681565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd14ae27336040518263ffffffff1660e01b8152600401611c229190613efc565b600060405180830381600087803b158015611c3c57600080fd5b505af1158015611c50573d6000803e3d6000fd5b50505050565b611c5e61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290614627565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611d469190613ea0565b600060405180830381600087803b158015611d6057600080fd5b505af1158015611d74573d6000803e3d6000fd5b5050505050565b611d8361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0790614627565b60405180910390fd5b60004790506000811115611e8857601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e86573d6000803e3d6000fd5b505b50565b6000611e95611eba565b905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f47524f4b52000000000000000000000000000000000000000000000000000000815250905090565b611f4e61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd290614627565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120693384846128da565b905092915050565b61207961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fd90614627565b60405180910390fd5b60005b81518110156121975760016009600084848151811061212b5761212a6146b2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061218f90614710565b915050612109565b5050565b6121a361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222790614627565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b601b5481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6122b461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233890614627565b60405180910390fd5b43600d819055506001601960166101000a81548160ff021916908315150217905550565b60115481565b61237361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f790614627565b60405180910390fd5b80601c8190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61249961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251d90614627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258c906147ca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61265a61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126de90614627565b60405180910390fd5b6126f18282613485565b5050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b61272961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad90614627565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960169054906101000a900460ff1681565b600061286683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136dd565b905092915050565b600033905090565b60008383111582906128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b59190613fb0565b60405180910390fd5b50600083856128cd91906147ea565b9050809150509392505050565b60006128e4611eba565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156129525750612922611eba565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156129a757601960169054906101000a900460ff166129a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299d9061486a565b60405180910390fd5b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a4b5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612a5457600080fd5b601960149054906101000a900460ff1615612a7b57612a74848484613740565b90506131b2565b601c5482111580612ad55750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0b906148d6565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b7a5750600860149054906101000a900460ff165b15612c1657601d54612bd483600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b1115612c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0c90614942565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612c815750601960149054906101000a900460ff16155b8015612c995750601960159054906101000a900460ff165b8015612ce65750601e54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612cf457612cf3613203565b5b612d7d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e665750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612e705782612e7c565b612e7b858585613971565b5b9050612ed081600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302d57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613000929190614962565b600060405180830381600087803b15801561301a57600080fd5b505af192505050801561302b575060015b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661314757601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161311a929190614962565b600060405180830381600087803b15801561313457600080fd5b505af1925050508015613145575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131a49190613ea0565b60405180910390a360019150505b9392505050565b60006131fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612876565b905092915050565b6001601960146101000a81548160ff0219169083151502179055506000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061329f6002613291606461328360125487613b1990919063ffffffff16565b61282490919063ffffffff16565b61282490919063ffffffff16565b905060006132b682846131b990919063ffffffff16565b90506132c181613b93565b600047905060006132f060646132e260115485613b1990919063ffffffff16565b61282490919063ffffffff16565b9050600061331c606461330e60135486613b1990919063ffffffff16565b61282490919063ffffffff16565b9050600061335b600261334d606461333f60125489613b1990919063ffffffff16565b61282490919063ffffffff16565b61282490919063ffffffff16565b905060008411156133d057601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156133ce573d6000803e3d6000fd5b505b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561343a57600080fd5b505af19350505050801561344c575060015b506000861115613461576134608682613db4565b5b505050505050506000601960146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561350f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61351857600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561360a57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016135d39291906149c6565b600060405180830381600087803b1580156135ed57600080fd5b505af1158015613601573d6000803e3d6000fd5b505050506136d9565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016136a6929190614962565b600060405180830381600087803b1580156136c057600080fd5b505af11580156136d4573d6000803e3d6000fd5b505050505b5050565b60008083118290613724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371b9190613fb0565b60405180910390fd5b50600083856137339190614a1e565b9050809150509392505050565b60006137cb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139009190613ea0565b60405180910390a3600190509392505050565b60008082846139229190614a4f565b905083811015613967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395e90614af1565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146139d157600f546139d5565b6010545b905060006139ff60646139f18487613b1990919063ffffffff16565b61282490919063ffffffff16565b9050613a5381600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613af39190613ea0565b60405180910390a3613b0e81856131b990919063ffffffff16565b925050509392505050565b6000808303613b2b5760009050613b8d565b60008284613b399190614b11565b9050828482613b489190614a1e565b14613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f90614bdd565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff811115613bb057613baf6143c1565b5b604051908082528060200260200182016040528015613bde5781602001602082028036833780820191505090505b5090503081600081518110613bf657613bf56146b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc19190614c12565b81600181518110613cd557613cd46146b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d193083610e1e565b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d7e959493929190614cfd565b600060405180830381600087803b158015613d9857600080fd5b505af1158015613dac573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613e3d96959493929190614d57565b60606040518083038185885af1158015613e5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e809190614db8565b5050505050565b6000819050919050565b613e9a81613e87565b82525050565b6000602082019050613eb56000830184613e91565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ee682613ebb565b9050919050565b613ef681613edb565b82525050565b6000602082019050613f116000830184613eed565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f51578082015181840152602081019050613f36565b83811115613f60576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f8282613f17565b613f8c8185613f22565b9350613f9c818560208601613f33565b613fa581613f66565b840191505092915050565b60006020820190508181036000830152613fca8184613f77565b905092915050565b6000604051905090565b600080fd5b600080fd5b613fef81613edb565b8114613ffa57600080fd5b50565b60008135905061400c81613fe6565b92915050565b61401b81613e87565b811461402657600080fd5b50565b60008135905061403881614012565b92915050565b6000806040838503121561405557614054613fdc565b5b600061406385828601613ffd565b925050602061407485828601614029565b9150509250929050565b60008115159050919050565b6140938161407e565b82525050565b60006020820190506140ae600083018461408a565b92915050565b60006140bf82613ebb565b9050919050565b6140cf816140b4565b81146140da57600080fd5b50565b6000813590506140ec816140c6565b92915050565b60006020828403121561410857614107613fdc565b5b6000614116848285016140dd565b91505092915050565b60008060006060848603121561413857614137613fdc565b5b600061414686828701613ffd565b935050602061415786828701613ffd565b925050604061416886828701614029565b9150509250925092565b60006020828403121561418857614187613fdc565b5b600061419684828501613ffd565b91505092915050565b600080604083850312156141b6576141b5613fdc565b5b60006141c485828601614029565b92505060206141d585828601614029565b9150509250929050565b6000806000606084860312156141f8576141f7613fdc565b5b600061420686828701614029565b935050602061421786828701614029565b925050604061422886828701614029565b9150509250925092565b600060ff82169050919050565b61424881614232565b82525050565b6000602082019050614263600083018461423f565b92915050565b6142728161407e565b811461427d57600080fd5b50565b60008135905061428f81614269565b92915050565b600080604083850312156142ac576142ab613fdc565b5b60006142ba85828601614280565b92505060206142cb85828601614029565b9150509250929050565b6000819050919050565b60006142fa6142f56142f084613ebb565b6142d5565b613ebb565b9050919050565b600061430c826142df565b9050919050565b600061431e82614301565b9050919050565b61432e81614313565b82525050565b60006020820190506143496000830184614325565b92915050565b60006020828403121561436557614364613fdc565b5b600061437384828501614029565b91505092915050565b6000806040838503121561439357614392613fdc565b5b60006143a185828601613ffd565b92505060206143b285828601614280565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6143f982613f66565b810181811067ffffffffffffffff82111715614418576144176143c1565b5b80604052505050565b600061442b613fd2565b905061443782826143f0565b919050565b600067ffffffffffffffff821115614457576144566143c1565b5b602082029050602081019050919050565b600080fd5b600061448061447b8461443c565b614421565b905080838252602082019050602084028301858111156144a3576144a2614468565b5b835b818110156144cc57806144b88882613ffd565b8452602084019350506020810190506144a5565b5050509392505050565b600082601f8301126144eb576144ea6143bc565b5b81356144fb84826020860161446d565b91505092915050565b60006020828403121561451a57614519613fdc565b5b600082013567ffffffffffffffff81111561453857614537613fe1565b5b614544848285016144d6565b91505092915050565b6000806040838503121561456457614563613fdc565b5b600061457285828601613ffd565b925050602061458385828601613ffd565b9150509250929050565b6000614598826142df565b9050919050565b60006145aa8261458d565b9050919050565b6145ba8161459f565b82525050565b60006020820190506145d560008301846145b1565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614611602083613f22565b915061461c826145db565b602082019050919050565b6000602082019050818103600083015261464081614604565b9050919050565b600060408201905061465c6000830185613e91565b6146696020830184613e91565b9392505050565b60008151905061467f81614012565b92915050565b60006020828403121561469b5761469a613fdc565b5b60006146a984828501614670565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061471b82613e87565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361474d5761474c6146e1565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147b4602683613f22565b91506147bf82614758565b604082019050919050565b600060208201905081810360008301526147e3816147a7565b9050919050565b60006147f582613e87565b915061480083613e87565b925082821015614813576148126146e1565b5b828203905092915050565b7f686f6c6420757220686f7273657320626967206775792e000000000000000000600082015250565b6000614854601783613f22565b915061485f8261481e565b602082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006148c0600283613f22565b91506148cb8261488a565b602082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b600061492c600683613f22565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b60006040820190506149776000830185613eed565b6149846020830184613e91565b9392505050565b6000819050919050565b60006149b06149ab6149a68461498b565b6142d5565b613e87565b9050919050565b6149c081614995565b82525050565b60006040820190506149db6000830185613eed565b6149e860208301846149b7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a2982613e87565b9150614a3483613e87565b925082614a4457614a436149ef565b5b828204905092915050565b6000614a5a82613e87565b9150614a6583613e87565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9a57614a996146e1565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614adb601b83613f22565b9150614ae682614aa5565b602082019050919050565b60006020820190508181036000830152614b0a81614ace565b9050919050565b6000614b1c82613e87565b9150614b2783613e87565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b6057614b5f6146e1565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bc7602183613f22565b9150614bd282614b6b565b604082019050919050565b60006020820190508181036000830152614bf681614bba565b9050919050565b600081519050614c0c81613fe6565b92915050565b600060208284031215614c2857614c27613fdc565b5b6000614c3684828501614bfd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c7481613edb565b82525050565b6000614c868383614c6b565b60208301905092915050565b6000602082019050919050565b6000614caa82614c3f565b614cb48185614c4a565b9350614cbf83614c5b565b8060005b83811015614cf0578151614cd78882614c7a565b9750614ce283614c92565b925050600181019050614cc3565b5085935050505092915050565b600060a082019050614d126000830188613e91565b614d1f60208301876149b7565b8181036040830152614d318186614c9f565b9050614d406060830185613eed565b614d4d6080830184613e91565b9695505050505050565b600060c082019050614d6c6000830189613eed565b614d796020830188613e91565b614d8660408301876149b7565b614d9360608301866149b7565b614da06080830185613eed565b614dad60a0830184613e91565b979650505050505050565b600080600060608486031215614dd157614dd0613fdc565b5b6000614ddf86828701614670565b9350506020614df086828701614670565b9250506040614e0186828701614670565b915050925092509256fea2646970667358221220be01228fdb5d7e1711b64a4a773923d7ba01760b0697b831c35ac7bb156a75d164736f6c634300080d003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c556000600d5534801561002e57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738390a1da07e376ef7add4be859ba74fb83aa02d5600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f24806101286000396000f3fe6080604052600436106101025760003560e01c80638c21cd5211610095578063d0e30db011610064578063d0e30db01461034c578063e2d2e21914610356578063efca2eed14610381578063ffb2c479146103ac578063ffd49c84146103d557610111565b80638c21cd521461027c578063997664d7146102b9578063bd14ae27146102e4578063ce7c2ac21461030d57610111565b806328fd3198116100d157806328fd3198146101c05780632d48e896146101fd5780633a98ef39146102265780634fab0ae81461025157610111565b806305efa0571461011657806311ce023d1461014157806314b6ca961461016c57806326987b601461019557610111565b366101115761010f610400565b005b600080fd5b34801561012257600080fd5b5061012b6107e8565b60405161013891906116a5565b60405180910390f35b34801561014d57600080fd5b5061015661080e565b60405161016391906116d9565b60405180910390f35b34801561017857600080fd5b50610193600480360381019061018e9190611751565b610814565b005b3480156101a157600080fd5b506101aa610ad3565b6040516101b791906116d9565b60405180910390f35b3480156101cc57600080fd5b506101e760048036038101906101e29190611791565b610ad9565b6040516101f491906116d9565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f91906117be565b610bf2565b005b34801561023257600080fd5b5061023b610c5c565b60405161024891906116d9565b60405180910390f35b34801561025d57600080fd5b50610266610c62565b60405161027391906116d9565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190611791565b610c68565b6040516102b09190611819565b60405180910390f35b3480156102c557600080fd5b506102ce610cd5565b6040516102db91906116d9565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190611791565b610cdb565b005b34801561031957600080fd5b50610334600480360381019061032f9190611791565b610d3f565b60405161034393929190611834565b60405180910390f35b610354610400565b005b34801561036257600080fd5b5061036b610d69565b60405161037891906116d9565b60405180910390f35b34801561038d57600080fd5b50610396610d6f565b6040516103a391906116d9565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce919061186b565b610d75565b005b3480156103e157600080fd5b506103ea610eb0565b6040516103f791906116d9565b60405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161045d91906116a5565b602060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049e91906118ad565b90506000600267ffffffffffffffff8111156104bd576104bc6118da565b5b6040519080825280602002602001820160405280156104eb5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f919061191e565b816000815181106105935761059261194b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106106045761060361194b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b81526004016106a19493929190611a7d565b6000604051808303818588803b1580156106ba57600080fd5b505af11580156106ce573d6000803e3d6000fd5b5050505050600061078383600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161073491906116a5565b602060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077591906118ad565b610eb690919063ffffffff16565b905061079a81600854610f0090919063ffffffff16565b6008819055506107dd6107cc6007546107be84600b54610f5e90919063ffffffff16565b610fd890919063ffffffff16565b600a54610f0090919063ffffffff16565b600a81905550505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086c57600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156108c1576108c082611022565b5b60008111801561091357506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561092657610921826112b5565b610988565b60008114801561097857506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156109875761098682611364565b5b5b6109f1816109e3600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754610eb690919063ffffffff16565b610f0090919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610a89600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600e5481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403610b2d5760009050610bed565b6000610b7a600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610bd557600092505050610bed565b610be88183610eb690919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4a57600080fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cb89190611af8565b108015610cce5750600d54610ccc83610ad9565b115b9050919050565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3357600080fd5b610d3c81611022565b50565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b600a5481565b60095481565b6000600380549050905060008103610d8d5750610ead565b60008060005a90505b8482108015610da457508383105b15610ea85783600e5410610dbb576000600e819055505b610e046003600e5481548110610dd457610dd361194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c68565b15610e5357610e526003600e5481548110610e2257610e2161194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611022565b5b610e78610e695a83610eb690919063ffffffff16565b83610f0090919063ffffffff16565b91505a9050600e6000815480929190610e9090611b4e565b91905055508280610ea090611b4e565b935050610d96565b505050505b50565b600c5481565b6000610ef883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061159d565b905092915050565b6000808284610f0f9190611af8565b905083811015610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90611bf3565b60405180910390fd5b8091505092915050565b6000808303610f705760009050610fd2565b60008284610f7e9190611c13565b9050828482610f8d9190611c9c565b14610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc490611d3f565b60405180910390fd5b809150505b92915050565b600061101a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611601565b905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403156112b257600061107882610ad9565b905060008111156112b05761109881600954610f0090919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016110fb929190611d5f565b6020604051808303816000875af115801561111a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113e9190611db4565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111d881600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610f0090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611269600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490506113789190611de1565b815481106113895761138861194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114075761140661194b565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460046000600360016003805490506114a79190611de1565b815481106114b8576114b761194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600380548061153357611532611e15565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000611596600b54611588600a5485610f5e90919063ffffffff16565b610fd890919063ffffffff16565b9050919050565b60008383111582906115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc9190611ecc565b60405180910390fd5b50600083856115f49190611de1565b9050809150509392505050565b60008083118290611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f9190611ecc565b60405180910390fd5b50600083856116579190611c9c565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061168f82611664565b9050919050565b61169f81611684565b82525050565b60006020820190506116ba6000830184611696565b92915050565b6000819050919050565b6116d3816116c0565b82525050565b60006020820190506116ee60008301846116ca565b92915050565b600080fd5b61170281611684565b811461170d57600080fd5b50565b60008135905061171f816116f9565b92915050565b61172e816116c0565b811461173957600080fd5b50565b60008135905061174b81611725565b92915050565b60008060408385031215611768576117676116f4565b5b600061177685828601611710565b92505060206117878582860161173c565b9150509250929050565b6000602082840312156117a7576117a66116f4565b5b60006117b584828501611710565b91505092915050565b600080604083850312156117d5576117d46116f4565b5b60006117e38582860161173c565b92505060206117f48582860161173c565b9150509250929050565b60008115159050919050565b611813816117fe565b82525050565b600060208201905061182e600083018461180a565b92915050565b600060608201905061184960008301866116ca565b61185660208301856116ca565b61186360408301846116ca565b949350505050565b600060208284031215611881576118806116f4565b5b600061188f8482850161173c565b91505092915050565b6000815190506118a781611725565b92915050565b6000602082840312156118c3576118c26116f4565b5b60006118d184828501611898565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050611918816116f9565b92915050565b600060208284031215611934576119336116f4565b5b600061194284828501611909565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b60006119a96119a461199f8461197a565b611984565b6116c0565b9050919050565b6119b98161198e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6119f481611684565b82525050565b6000611a0683836119eb565b60208301905092915050565b6000602082019050919050565b6000611a2a826119bf565b611a3481856119ca565b9350611a3f836119db565b8060005b83811015611a70578151611a5788826119fa565b9750611a6283611a12565b925050600181019050611a43565b5085935050505092915050565b6000608082019050611a9260008301876119b0565b8181036020830152611aa48186611a1f565b9050611ab36040830185611696565b611ac060608301846116ca565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b03826116c0565b9150611b0e836116c0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b4357611b42611ac9565b5b828201905092915050565b6000611b59826116c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b8b57611b8a611ac9565b5b600182019050919050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611bdd601b83611b96565b9150611be882611ba7565b602082019050919050565b60006020820190508181036000830152611c0c81611bd0565b9050919050565b6000611c1e826116c0565b9150611c29836116c0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c6257611c61611ac9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611ca7826116c0565b9150611cb2836116c0565b925082611cc257611cc1611c6d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d29602183611b96565b9150611d3482611ccd565b604082019050919050565b60006020820190508181036000830152611d5881611d1c565b9050919050565b6000604082019050611d746000830185611696565b611d8160208301846116ca565b9392505050565b611d91816117fe565b8114611d9c57600080fd5b50565b600081519050611dae81611d88565b92915050565b600060208284031215611dca57611dc96116f4565b5b6000611dd884828501611d9f565b91505092915050565b6000611dec826116c0565b9150611df7836116c0565b925082821015611e0a57611e09611ac9565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b60005b83811015611e6d578082015181840152602081019050611e52565b83811115611e7c576000848401525b50505050565b6000601f19601f8301169050919050565b6000611e9e82611e44565b611ea88185611b96565b9350611eb8818560208601611e4f565b611ec181611e82565b840191505092915050565b60006020820190508181036000830152611ee68184611e93565b90509291505056fea26469706673582212206864f6258e30369ebcfa623149e4ba846f2a6b23ca6e01fee54552cf46af849864736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106103905760003560e01c806377359aa7116101dc578063bb542ef011610102578063d920334e116100a0578063f887ea401161006f578063f887ea4014610d0b578063f8b45b0514610d36578063fabe628314610d61578063ffb54a9914610d8a57610397565b8063d920334e14610c53578063dd62ed3e14610c7c578063f2fde38b14610cb9578063f708a64f14610ce257610397565b8063c45a0155116100dc578063c45a015514610bbb578063c8d1293d14610be6578063c9567bf914610c11578063caa5581b14610c2857610397565b8063bb542ef014610b3c578063bf56b37114610b65578063c2c3952d14610b9057610397565b80638b42507f1161017a578063a3a2e89e11610149578063a3a2e89e14610a82578063a8aa1b3114610aab578063a9059cbb14610ad6578063b515566a14610b1357610397565b80638b42507f146109c45780638da5cb5b14610a015780638ea5220f14610a2c57806395d89b4114610a5757610397565b80637f058804116101b65780637f05880414610942578063819340311461095957806389291a8f14610982578063893d20e81461099957610397565b806377359aa7146108b15780637db1342c146108ee5780637dfcbe341461091757610397565b80633dab5269116102c1578063558da3d31161025f57806370a082311161022e57806370a0823114610807578063715018a6146108445780637437681e1461085b57806375df13051461088657610397565b8063558da3d31461075f578063571ac8b0146107885780636303516c146107c557806366eb3785146107f057610397565b8063454343771161029b57806345434377146106b357806347062402146106de5780634a74bb0214610709578063538b1bea1461073457610397565b80633dab5269146106105780633f4218e0146106395780634355855a1461067657610397565b8063273123b71161032e5780632d48e896116103085780632d48e8961461056a5780632dbea2e11461059357806330ca34ee146105bc578063313ce567146105e557610397565b8063273123b7146104eb5780632b112e49146105145780632b14ca561461053f57610397565b8063095ea7b31161036a578063095ea7b31461041d57806318160ddd1461045a5780631f53ac021461048557806323b872dd146104ae57610397565b80630445b6671461039c57806305efa057146103c757806306fdde03146103f257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610db5565b6040516103be9190613ea0565b60405180910390f35b3480156103d357600080fd5b506103dc610dbb565b6040516103e99190613efc565b60405180910390f35b3480156103fe57600080fd5b50610407610de1565b6040516104149190613fb0565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f919061403e565b610e1e565b6040516104519190614099565b60405180910390f35b34801561046657600080fd5b5061046f610f10565b60405161047c9190613ea0565b60405180910390f35b34801561049157600080fd5b506104ac60048036038101906104a791906140f2565b610f1a565b005b3480156104ba57600080fd5b506104d560048036038101906104d0919061411f565b610ff3565b6040516104e29190614099565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190614172565b6111f3565b005b34801561052057600080fd5b506105296112e3565b6040516105369190613ea0565b60405180910390f35b34801561054b57600080fd5b50610554611365565b6040516105619190613ea0565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061419f565b61136b565b005b34801561059f57600080fd5b506105ba60048036038101906105b591906141df565b611493565b005b3480156105c857600080fd5b506105e360048036038101906105de919061419f565b611542565b005b3480156105f157600080fd5b506105fa6115e9565b604051610607919061424e565b60405180910390f35b34801561061c57600080fd5b5061063760048036038101906106329190614295565b6115f2565b005b34801561064557600080fd5b50610660600480360381019061065b9190614172565b6116ac565b60405161066d9190614099565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190614172565b6116cc565b6040516106aa9190614099565b60405180910390f35b3480156106bf57600080fd5b506106c86116ec565b6040516106d59190613ea0565b60405180910390f35b3480156106ea57600080fd5b506106f36116f2565b6040516107009190613ea0565b60405180910390f35b34801561071557600080fd5b5061071e6116f8565b60405161072b9190614099565b60405180910390f35b34801561074057600080fd5b5061074961170b565b6040516107569190614334565b60405180910390f35b34801561076b57600080fd5b506107866004803603810190610781919061434f565b611731565b005b34801561079457600080fd5b506107af60048036038101906107aa9190614172565b6117d0565b6040516107bc9190614099565b60405180910390f35b3480156107d157600080fd5b506107da611803565b6040516107e79190613efc565b60405180910390f35b3480156107fc57600080fd5b50610805611829565b005b34801561081357600080fd5b5061082e60048036038101906108299190614172565b6118c8565b60405161083b9190613ea0565b60405180910390f35b34801561085057600080fd5b50610859611911565b005b34801561086757600080fd5b50610870611a64565b60405161087d9190613ea0565b60405180910390f35b34801561089257600080fd5b5061089b611a6a565b6040516108a89190613ea0565b60405180910390f35b3480156108bd57600080fd5b506108d860048036038101906108d39190614172565b611a70565b6040516108e59190613ea0565b60405180910390f35b3480156108fa57600080fd5b506109156004803603810190610910919061434f565b611b15565b005b34801561092357600080fd5b5061092c611bb4565b6040516109399190614099565b60405180910390f35b34801561094e57600080fd5b50610957611bc7565b005b34801561096557600080fd5b50610980600480360381019061097b919061434f565b611c56565b005b34801561098e57600080fd5b50610997611d7b565b005b3480156109a557600080fd5b506109ae611e8b565b6040516109bb9190613efc565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190614172565b611e9a565b6040516109f89190614099565b60405180910390f35b348015610a0d57600080fd5b50610a16611eba565b604051610a239190613efc565b60405180910390f35b348015610a3857600080fd5b50610a41611ee3565b604051610a4e9190613efc565b60405180910390f35b348015610a6357600080fd5b50610a6c611f09565b604051610a799190613fb0565b60405180910390f35b348015610a8e57600080fd5b50610aa96004803603810190610aa4919061437c565b611f46565b005b348015610ab757600080fd5b50610ac0612036565b604051610acd9190613efc565b60405180910390f35b348015610ae257600080fd5b50610afd6004803603810190610af8919061403e565b61205c565b604051610b0a9190614099565b60405180910390f35b348015610b1f57600080fd5b50610b3a6004803603810190610b359190614504565b612071565b005b348015610b4857600080fd5b50610b636004803603810190610b5e91906140f2565b61219b565b005b348015610b7157600080fd5b50610b7a612274565b604051610b879190613ea0565b60405180910390f35b348015610b9c57600080fd5b50610ba561227a565b604051610bb29190613ea0565b60405180910390f35b348015610bc757600080fd5b50610bd0612280565b604051610bdd9190613efc565b60405180910390f35b348015610bf257600080fd5b50610bfb6122a6565b604051610c089190613ea0565b60405180910390f35b348015610c1d57600080fd5b50610c266122ac565b005b348015610c3457600080fd5b50610c3d612365565b604051610c4a9190613ea0565b60405180910390f35b348015610c5f57600080fd5b50610c7a6004803603810190610c75919061434f565b61236b565b005b348015610c8857600080fd5b50610ca36004803603810190610c9e919061454d565b61240a565b604051610cb09190613ea0565b60405180910390f35b348015610cc557600080fd5b50610ce06004803603810190610cdb9190614172565b612491565b005b348015610cee57600080fd5b50610d096004803603810190610d04919061437c565b612652565b005b348015610d1757600080fd5b50610d206126f5565b604051610d2d91906145c0565b60405180910390f35b348015610d4257600080fd5b50610d4b61271b565b604051610d589190613ea0565b60405180910390f35b348015610d6d57600080fd5b50610d886004803603810190610d83919061437c565b612721565b005b348015610d9657600080fd5b50610d9f612811565b604051610dac9190614099565b60405180910390f35b601e5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280601081526020017f47726f6b205265666c656374696f6e7300000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610efe9190613ea0565b60405180910390a36001905092915050565b6000600254905090565b610f2261286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690614627565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146111df5761115e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6111ea8484846128da565b90509392505050565b6111fb61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127f90614627565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611360611313600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118c8565b611352611341600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118c8565b6002546131b990919063ffffffff16565b6131b990919063ffffffff16565b905090565b60105481565b61137361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f790614627565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161145d929190614647565b600060405180830381600087803b15801561147757600080fd5b505af115801561148b573d6000803e3d6000fd5b505050505050565b61149b61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151f90614627565b60405180910390fd5b826011819055508160128190555080601381905550505050565b61154a61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce90614627565b60405180910390fd5b81600f81905550806010819055505050565b60006012905090565b6115fa61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e90614627565b60405180910390fd5b81601960156101000a81548160ff02191690831515021790555080601e819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b600f5481565b601960159054906101000a900460ff1681565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61173961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd90614627565b60405180910390fd5b80601b8190555050565b60006117fc827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e1e565b9050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61183161286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b590614627565b60405180910390fd5b6118c6613203565b565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61191961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d90614627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c5481565b60135481565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401611acd9190613efc565b602060405180830381865afa158015611aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0e9190614685565b9050919050565b611b1d61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba190614627565b60405180910390fd5b80601d8190555050565b600860149054906101000a900460ff1681565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd14ae27336040518263ffffffff1660e01b8152600401611c229190613efc565b600060405180830381600087803b158015611c3c57600080fd5b505af1158015611c50573d6000803e3d6000fd5b50505050565b611c5e61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290614627565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611d469190613ea0565b600060405180830381600087803b158015611d6057600080fd5b505af1158015611d74573d6000803e3d6000fd5b5050505050565b611d8361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0790614627565b60405180910390fd5b60004790506000811115611e8857601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e86573d6000803e3d6000fd5b505b50565b6000611e95611eba565b905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f47524f4b52000000000000000000000000000000000000000000000000000000815250905090565b611f4e61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd290614627565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120693384846128da565b905092915050565b61207961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fd90614627565b60405180910390fd5b60005b81518110156121975760016009600084848151811061212b5761212a6146b2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061218f90614710565b915050612109565b5050565b6121a361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222790614627565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b601b5481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6122b461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233890614627565b60405180910390fd5b43600d819055506001601960166101000a81548160ff021916908315150217905550565b60115481565b61237361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f790614627565b60405180910390fd5b80601c8190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61249961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251d90614627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258c906147ca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61265a61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126de90614627565b60405180910390fd5b6126f18282613485565b5050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b61272961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad90614627565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960169054906101000a900460ff1681565b600061286683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136dd565b905092915050565b600033905090565b60008383111582906128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b59190613fb0565b60405180910390fd5b50600083856128cd91906147ea565b9050809150509392505050565b60006128e4611eba565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156129525750612922611eba565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156129a757601960169054906101000a900460ff166129a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299d9061486a565b60405180910390fd5b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a4b5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612a5457600080fd5b601960149054906101000a900460ff1615612a7b57612a74848484613740565b90506131b2565b601c5482111580612ad55750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0b906148d6565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b7a5750600860149054906101000a900460ff165b15612c1657601d54612bd483600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b1115612c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0c90614942565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612c815750601960149054906101000a900460ff16155b8015612c995750601960159054906101000a900460ff165b8015612ce65750601e54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612cf457612cf3613203565b5b612d7d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e665750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612e705782612e7c565b612e7b858585613971565b5b9050612ed081600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302d57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613000929190614962565b600060405180830381600087803b15801561301a57600080fd5b505af192505050801561302b575060015b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661314757601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161311a929190614962565b600060405180830381600087803b15801561313457600080fd5b505af1925050508015613145575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131a49190613ea0565b60405180910390a360019150505b9392505050565b60006131fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612876565b905092915050565b6001601960146101000a81548160ff0219169083151502179055506000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061329f6002613291606461328360125487613b1990919063ffffffff16565b61282490919063ffffffff16565b61282490919063ffffffff16565b905060006132b682846131b990919063ffffffff16565b90506132c181613b93565b600047905060006132f060646132e260115485613b1990919063ffffffff16565b61282490919063ffffffff16565b9050600061331c606461330e60135486613b1990919063ffffffff16565b61282490919063ffffffff16565b9050600061335b600261334d606461333f60125489613b1990919063ffffffff16565b61282490919063ffffffff16565b61282490919063ffffffff16565b905060008411156133d057601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156133ce573d6000803e3d6000fd5b505b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561343a57600080fd5b505af19350505050801561344c575060015b506000861115613461576134608682613db4565b5b505050505050506000601960146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561350f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61351857600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561360a57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016135d39291906149c6565b600060405180830381600087803b1580156135ed57600080fd5b505af1158015613601573d6000803e3d6000fd5b505050506136d9565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016136a6929190614962565b600060405180830381600087803b1580156136c057600080fd5b505af11580156136d4573d6000803e3d6000fd5b505050505b5050565b60008083118290613724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371b9190613fb0565b60405180910390fd5b50600083856137339190614a1e565b9050809150509392505050565b60006137cb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139009190613ea0565b60405180910390a3600190509392505050565b60008082846139229190614a4f565b905083811015613967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395e90614af1565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146139d157600f546139d5565b6010545b905060006139ff60646139f18487613b1990919063ffffffff16565b61282490919063ffffffff16565b9050613a5381600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613af39190613ea0565b60405180910390a3613b0e81856131b990919063ffffffff16565b925050509392505050565b6000808303613b2b5760009050613b8d565b60008284613b399190614b11565b9050828482613b489190614a1e565b14613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f90614bdd565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff811115613bb057613baf6143c1565b5b604051908082528060200260200182016040528015613bde5781602001602082028036833780820191505090505b5090503081600081518110613bf657613bf56146b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc19190614c12565b81600181518110613cd557613cd46146b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d193083610e1e565b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d7e959493929190614cfd565b600060405180830381600087803b158015613d9857600080fd5b505af1158015613dac573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613e3d96959493929190614d57565b60606040518083038185885af1158015613e5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e809190614db8565b5050505050565b6000819050919050565b613e9a81613e87565b82525050565b6000602082019050613eb56000830184613e91565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ee682613ebb565b9050919050565b613ef681613edb565b82525050565b6000602082019050613f116000830184613eed565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f51578082015181840152602081019050613f36565b83811115613f60576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f8282613f17565b613f8c8185613f22565b9350613f9c818560208601613f33565b613fa581613f66565b840191505092915050565b60006020820190508181036000830152613fca8184613f77565b905092915050565b6000604051905090565b600080fd5b600080fd5b613fef81613edb565b8114613ffa57600080fd5b50565b60008135905061400c81613fe6565b92915050565b61401b81613e87565b811461402657600080fd5b50565b60008135905061403881614012565b92915050565b6000806040838503121561405557614054613fdc565b5b600061406385828601613ffd565b925050602061407485828601614029565b9150509250929050565b60008115159050919050565b6140938161407e565b82525050565b60006020820190506140ae600083018461408a565b92915050565b60006140bf82613ebb565b9050919050565b6140cf816140b4565b81146140da57600080fd5b50565b6000813590506140ec816140c6565b92915050565b60006020828403121561410857614107613fdc565b5b6000614116848285016140dd565b91505092915050565b60008060006060848603121561413857614137613fdc565b5b600061414686828701613ffd565b935050602061415786828701613ffd565b925050604061416886828701614029565b9150509250925092565b60006020828403121561418857614187613fdc565b5b600061419684828501613ffd565b91505092915050565b600080604083850312156141b6576141b5613fdc565b5b60006141c485828601614029565b92505060206141d585828601614029565b9150509250929050565b6000806000606084860312156141f8576141f7613fdc565b5b600061420686828701614029565b935050602061421786828701614029565b925050604061422886828701614029565b9150509250925092565b600060ff82169050919050565b61424881614232565b82525050565b6000602082019050614263600083018461423f565b92915050565b6142728161407e565b811461427d57600080fd5b50565b60008135905061428f81614269565b92915050565b600080604083850312156142ac576142ab613fdc565b5b60006142ba85828601614280565b92505060206142cb85828601614029565b9150509250929050565b6000819050919050565b60006142fa6142f56142f084613ebb565b6142d5565b613ebb565b9050919050565b600061430c826142df565b9050919050565b600061431e82614301565b9050919050565b61432e81614313565b82525050565b60006020820190506143496000830184614325565b92915050565b60006020828403121561436557614364613fdc565b5b600061437384828501614029565b91505092915050565b6000806040838503121561439357614392613fdc565b5b60006143a185828601613ffd565b92505060206143b285828601614280565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6143f982613f66565b810181811067ffffffffffffffff82111715614418576144176143c1565b5b80604052505050565b600061442b613fd2565b905061443782826143f0565b919050565b600067ffffffffffffffff821115614457576144566143c1565b5b602082029050602081019050919050565b600080fd5b600061448061447b8461443c565b614421565b905080838252602082019050602084028301858111156144a3576144a2614468565b5b835b818110156144cc57806144b88882613ffd565b8452602084019350506020810190506144a5565b5050509392505050565b600082601f8301126144eb576144ea6143bc565b5b81356144fb84826020860161446d565b91505092915050565b60006020828403121561451a57614519613fdc565b5b600082013567ffffffffffffffff81111561453857614537613fe1565b5b614544848285016144d6565b91505092915050565b6000806040838503121561456457614563613fdc565b5b600061457285828601613ffd565b925050602061458385828601613ffd565b9150509250929050565b6000614598826142df565b9050919050565b60006145aa8261458d565b9050919050565b6145ba8161459f565b82525050565b60006020820190506145d560008301846145b1565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614611602083613f22565b915061461c826145db565b602082019050919050565b6000602082019050818103600083015261464081614604565b9050919050565b600060408201905061465c6000830185613e91565b6146696020830184613e91565b9392505050565b60008151905061467f81614012565b92915050565b60006020828403121561469b5761469a613fdc565b5b60006146a984828501614670565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061471b82613e87565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361474d5761474c6146e1565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147b4602683613f22565b91506147bf82614758565b604082019050919050565b600060208201905081810360008301526147e3816147a7565b9050919050565b60006147f582613e87565b915061480083613e87565b925082821015614813576148126146e1565b5b828203905092915050565b7f686f6c6420757220686f7273657320626967206775792e000000000000000000600082015250565b6000614854601783613f22565b915061485f8261481e565b602082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006148c0600283613f22565b91506148cb8261488a565b602082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b600061492c600683613f22565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b60006040820190506149776000830185613eed565b6149846020830184613e91565b9392505050565b6000819050919050565b60006149b06149ab6149a68461498b565b6142d5565b613e87565b9050919050565b6149c081614995565b82525050565b60006040820190506149db6000830185613eed565b6149e860208301846149b7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a2982613e87565b9150614a3483613e87565b925082614a4457614a436149ef565b5b828204905092915050565b6000614a5a82613e87565b9150614a6583613e87565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9a57614a996146e1565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614adb601b83613f22565b9150614ae682614aa5565b602082019050919050565b60006020820190508181036000830152614b0a81614ace565b9050919050565b6000614b1c82613e87565b9150614b2783613e87565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b6057614b5f6146e1565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bc7602183613f22565b9150614bd282614b6b565b604082019050919050565b60006020820190508181036000830152614bf681614bba565b9050919050565b600081519050614c0c81613fe6565b92915050565b600060208284031215614c2857614c27613fdc565b5b6000614c3684828501614bfd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c7481613edb565b82525050565b6000614c868383614c6b565b60208301905092915050565b6000602082019050919050565b6000614caa82614c3f565b614cb48185614c4a565b9350614cbf83614c5b565b8060005b83811015614cf0578151614cd78882614c7a565b9750614ce283614c92565b925050600181019050614cc3565b5085935050505092915050565b600060a082019050614d126000830188613e91565b614d1f60208301876149b7565b8181036040830152614d318186614c9f565b9050614d406060830185613eed565b614d4d6080830184613e91565b9695505050505050565b600060c082019050614d6c6000830189613eed565b614d796020830188613e91565b614d8660408301876149b7565b614d9360608301866149b7565b614da06080830185613eed565b614dad60a0830184613e91565b979650505050505050565b600080600060608486031215614dd157614dd0613fdc565b5b6000614ddf86828701614670565b9350506020614df086828701614670565b9250506040614e0186828701614670565b915050925092509256fea2646970667358221220be01228fdb5d7e1711b64a4a773923d7ba01760b0697b831c35ac7bb156a75d164736f6c634300080d0033

Deployed Bytecode Sourcemap

11193:11906:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13107:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11278:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17173:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17601:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16903:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15346:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18115:366;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16028:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16753:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12272:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15818:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14612:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14446:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16997:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15611:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12004:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12110:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12425:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12239:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12702:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12793:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16619:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17825:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12200:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22398:74;;;;;;;;;;;;;:::i;:::-;;17345:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3273:148;;;;;;;;;;;;;:::i;:::-;;13002:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12385:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22846:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14956:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11923:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23012:84;;;;;;;;;;;;;:::i;:::-;;22721:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22480:233;;;;;;;;;;;;;:::i;:::-;;17259:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12055:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3059:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12587:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17083:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15072:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12499:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17955:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14099:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15477:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12168:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12838:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12525:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12348:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14317:115;;;;;;;;;;;;;:::i;:::-;;12308:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14853:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17456:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3429:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16479:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12468:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13053:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15202:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12749:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13107:52;;;;:::o;11278:64::-;;;;;;;;;;;;;:::o;17173:80::-;17221:13;17245:5;;;;;;;;;;;;;;;;;17238:12;;17173:80;:::o;17601:216::-;17676:4;17728:6;17693:11;:23;17705:10;17693:23;;;;;;;;;;;;;;;:32;17717:7;17693:32;;;;;;;;;;;;;;;:41;;;;17771:7;17750:37;;17759:10;17750:37;;;17780:6;17750:37;;;;;;:::i;:::-;;;;;;;;17805:4;17798:11;;17601:216;;;;:::o;16903:88::-;16958:7;16976:12;;16969:19;;16903:88;:::o;15346:123::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15448:12:::1;15428:9;;:33;;;;;;;;;;;;;;;;;;15346:123:::0;:::o;18115:366::-;18215:4;18270:17;18235:11;:19;18247:6;18235:19;;;;;;;;;;;;;;;:31;18255:10;18235:31;;;;;;;;;;;;;;;;:52;18232:186;;18337:69;18373:6;18337:69;;;;;;;;;;;;;;;;;:11;:19;18349:6;18337:19;;;;;;;;;;;;;;;:31;18357:10;18337:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;18303:11;:19;18315:6;18303:19;;;;;;;;;;;;;;;:31;18323:10;18303:31;;;;;;;;;;;;;;;:103;;;;18232:186;18437:36;18447:6;18455:9;18466:6;18437:9;:36::i;:::-;18430:43;;18115:366;;;;;:::o;16028:90::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16105:5:::1;16090:4;:12;16095:6;16090:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16028:90:::0;:::o;16753:142::-;16806:7;16833:54;16871:15;16881:4;;;;;;;;;;;16871:9;:15::i;:::-;16833:33;16850:15;16860:4;;;;;;;;;;;16850:9;:15::i;:::-;16833:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;16826:61;;16753:142;:::o;12272:27::-;;;;:::o;15818:202::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15931:15:::1;;;;;;;;;;;:39;;;15971:12;15985:18;15931:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15818:202:::0;;:::o;14612:233::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14752:12:::1;14736:13;:28;;;;14789:8;14775:11;:22;;;;14822:15;14808:11;:29;;;;14612:233:::0;;;:::o;14446:153::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14551:9:::1;14542:6;:18;;;;14581:10;14571:7;:20;;;;14446:153:::0;;:::o;16997:80::-;17049:5;11501:2;17058:16;;16997:80;:::o;15611:199::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15745:14:::1;15720:21;;:39;;;;;;;;;;;;;;;;;;15786:16;15770:13;:32;;;;15611:199:::0;;:::o;12004:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12110:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;12425:34::-;;;;:::o;12239:26::-;;;;:::o;12702:40::-;;;;;;;;;;;;;:::o;12793:38::-;;;;;;;;;;;;;:::o;16619:115::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16720:6:::1;16699:18;:27;;;;16619:115:::0;:::o;17825:122::-;17880:4;17904:35;17912:7;17921:17;17904:7;:35::i;:::-;17897:42;;17825:122;;;:::o;12200:30::-;;;;;;;;;;;;;:::o;22398:74::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22454:10:::1;:8;:10::i;:::-;22398:74::o:0;17345:105::-;17411:7;17429:9;:18;17439:7;17429:18;;;;;;;;;;;;;;;;17422:25;;17345:105;;;:::o;3273:148::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3380:1:::1;3343:40;;3364:6;::::0;::::1;;;;;;;;3343:40;;;;;;;;;;;;3411:1;3394:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3273:148::o:0;13002:44::-;;;;:::o;12385:31::-;;;;:::o;22846:158::-;22923:7;22950:15;;;;;;;;;;;:33;;;22984:11;22950:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22943:53;;22846:158;;;:::o;14956:104::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15044:8:::1;15031:9;:21;;;;14956:104:::0;:::o;11923:26::-;;;;;;;;;;;;;:::o;23012:84::-;23051:15;;;;;;;;;;;:25;;;23077:10;23051:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23012:84::o;22721:117::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22796:15:::1;;;;;;;;;;;:23;;;22820:9;22796:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22721:117:::0;:::o;22480:233::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22535:26:::1;22564:21;22535:50;;22620:1;22599:18;:22;22596:110;;;22655:9;;;;;;;;;;;22647:27;;:47;22675:18;22647:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22596:110;22524:189;22480:233::o:0;17259:80::-;17311:7;17329;:5;:7::i;:::-;17322:14;;17259:80;:::o;12055:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3059:79::-;3097:7;3124:6;;;;;;;;;;;3117:13;;3059:79;:::o;12587:78::-;;;;;;;;;;;;;:::o;17083:84::-;17133:13;17157:7;;;;;;;;;;;;;;;;;17150:14;;17083:84;:::o;15072:122::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15180:6:::1;15158:11;:19;15170:6;15158:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15072:122:::0;;:::o;12499:19::-;;;;;;;;;;;;;:::o;17955:152::-;18035:4;18059:40;18069:10;18081:9;18092:6;18059:9;:40::i;:::-;18052:47;;17955:152;;;;:::o;14099:166::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14175:6:::1;14170:88;14191:5;:12;14187:1;:16;14170:88;;;14242:4;14225;:14;14230:5;14236:1;14230:8;;;;;;;;:::i;:::-;;;;;;;;14225:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14205:3;;;;;:::i;:::-;;;;14170:88;;;;14099:166:::0;:::o;15477:121::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15576:14:::1;15563:10;;:27;;;;;;;;;;;;;;;;;;15477:121:::0;:::o;12168:25::-;;;;:::o;12838:37::-;;;;:::o;12525:22::-;;;;;;;;;;;;;:::o;12348:30::-;;;;:::o;14317:115::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14383:12:::1;14370:10;:25;;;;14420:4;14406:11;;:18;;;;;;;;;;;;;;;;;;14317:115::o:0;12308:33::-;;;;:::o;14853:95::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14932:8:::1;14924:5;:16;;;;14853:95:::0;:::o;17456:133::-;17540:7;17558:11;:19;17570:6;17558:19;;;;;;;;;;;;;;;:28;17578:7;17558:28;;;;;;;;;;;;;;;;17551:35;;17456:133;;;;:::o;3429:244::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3538:1:::1;3518:22;;:8;:22;;::::0;3510:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3628:8;3599:38;;3620:6;::::0;::::1;;;;;;;;3599:38;;;;;;;;;;;;3657:8;3648:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3429:244:::0;:::o;16479:132::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16567:36:::1;16588:6;16596;16567:20;:36::i;:::-;16479:132:::0;;:::o;12468:24::-;;;;;;;;;;;;;:::o;13053:47::-;;;;:::o;15202:136::-;3196:12;:10;:12::i;:::-;3186:22;;:6;;;;;;;;;;:22;;;3178:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15324:6:::1;15298:15;:23;15314:6;15298:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15202:136:::0;;:::o;12749:31::-;;;;;;;;;;;;;:::o;1043:132::-;1101:7;1128:39;1132:1;1135;1128:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1121:46;;1043:132;;;;:::o;2523:98::-;2576:7;2603:10;2596:17;;2523:98;:::o;589:192::-;675:7;708:1;703;:6;;711:12;695:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;735:9;751:1;747;:5;;;;:::i;:::-;735:17;;772:1;765:8;;;589:192;;;;;:::o;18489:1432::-;18577:4;18607:7;:5;:7::i;:::-;18598:16;;:6;:16;;;;:39;;;;;18630:7;:5;:7::i;:::-;18618:19;;:9;:19;;;;18598:39;18594:92;;;18647:11;;;;;;;;;;;18639:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18594:92;18748:4;:12;18753:6;18748:12;;;;;;;;;;;;;;;;;;;;;;;;;18747:13;:33;;;;;18765:4;:15;18770:9;18765:15;;;;;;;;;;;;;;;;;;;;;;;;;18764:16;18747:33;18739:42;;;;;;18797:16;;;;;;;;;;;18794:73;;;18823:41;18838:6;18846:9;18857:6;18823:14;:41::i;:::-;18816:48;;;;18794:73;18897:5;;18887:6;:15;;:42;;;;18906:15;:23;18922:6;18906:23;;;;;;;;;;;;;;;;;;;;;;;;;18887:42;18879:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;18953:15;:26;18969:9;18953:26;;;;;;;;;;;;;;;;;;;;;;;;;18952:27;:38;;;;;18983:7;;;;;;;;;;;18952:38;18949:143;;;19060:9;;19024:32;19049:6;19024:9;:20;19034:9;19024:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:45;;19016:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18949:143;19121:4;;;;;;;;;;;19107:18;;:10;:18;;;;:39;;;;;19130:16;;;;;;;;;;;19129:17;19107:39;:64;;;;;19150:21;;;;;;;;;;;19107:64;:109;;;;;19203:13;;19175:9;:24;19193:4;19175:24;;;;;;;;;;;;;;;;:41;;19107:109;19104:128;;;19219:10;:8;:10::i;:::-;19104:128;19264:53;19286:6;19264:53;;;;;;;;;;;;;;;;;:9;:17;19274:6;19264:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19244:9;:17;19254:6;19244:17;;;;;;;;;;;;;;;:73;;;;19338:19;19361:11;:19;19373:6;19361:19;;;;;;;;;;;;;;;;;;;;;;;;;19360:20;:47;;;;;19385:11;:22;19397:9;19385:22;;;;;;;;;;;;;;;;;;;;;;;;;19384:23;19360:47;:93;;19447:6;19360:93;;;19410:34;19418:6;19426:9;19437:6;19410:7;:34::i;:::-;19360:93;19338:115;;19487:37;19512:11;19487:9;:20;19497:9;19487:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;19464:9;:20;19474:9;19464:20;;;;;;;;;;;;;;;:60;;;;19570:16;:24;19587:6;19570:24;;;;;;;;;;;;;;;;;;;;;;;;;19566:123;;19615:15;;;;;;;;;;;:24;;;19640:6;19648:9;:17;19658:6;19648:17;;;;;;;;;;;;;;;;19615:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19611:67;19566:123;19705:16;:27;19722:9;19705:27;;;;;;;;;;;;;;;;;;;;;;;;;19701:133;;19753:15;;;;;;;;;;;:24;;;19778:9;19789;:20;19799:9;19789:20;;;;;;;;;;;;;;;;19753:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19749:73;19701:133;19868:9;19851:40;;19860:6;19851:40;;;19879:11;19851:40;;;;;;:::i;:::-;;;;;;;;19909:4;19902:11;;;18489:1432;;;;;;:::o;447:136::-;505:7;532:43;536:1;539;532:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;525:50;;447:136;;;;:::o;21471:919::-;12935:4;12916:16;;:23;;;;;;;;;;;;;;;;;;21529:20:::1;21552:9;:24;21570:4;21552:24;;;;;;;;;;;;;;;;21529:47;;21588:26;21617:45;21660:1;21617:38;21651:3;21617:29;21634:11;;21617:12;:16;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;:42;;:45;;;;:::i;:::-;21588:74;;21678:20;21701:36;21718:18;21701:12;:16;;:36;;;;:::i;:::-;21678:59;;21750:30;21767:12;21750:16;:30::i;:::-;21793:23;21819:21;21793:47;;21851:18;21872:43;21911:3;21872:34;21892:13;;21872:15;:19;;:34;;;;:::i;:::-;:38;;:43;;;;:::i;:::-;21851:64;;21926:17;21946:41;21983:3;21946:32;21966:11;;21946:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;21926:61;;21998:23;22024:48;22070:1;22024:41;22061:3;22024:32;22044:11;;22024:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;:45;;:48;;;;:::i;:::-;21998:74;;22113:1;22095:15;:19;22091:89;;;22138:9;;;;;;;;;;;22130:27;;:38;22158:9;22130:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22091:89;22204:15;;;;;;;;;;;:23;;;22235:10;22204:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22200:60:::0;22305:1:::1;22284:18;:22;22280:103;;;22322:49;22335:18;22355:15;22322:12;:49::i;:::-;22280:103;21512:878;;;;;;;12981:5:::0;12962:16;;:24;;;;;;;;;;;;;;;;;;21471:919::o;16126:345::-;16231:4;16213:23;;:6;:23;;;;:41;;;;;16250:4;;;;;;;;;;;16240:14;;:6;:14;;;;16213:41;16205:50;;;;;;16293:6;16266:16;:24;16283:6;16266:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16313:6;16310:154;;;16335:15;;;;;;;;;;;:24;;;16360:6;16368:1;16335:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16310:154;;;16401:15;;;;;;;;;;;:24;;;16426:6;16434:9;:17;16444:6;16434:17;;;;;;;;;;;;;;;;16401:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16310:154;16126:345;;:::o;1181:::-;1267:7;1366:1;1362;:5;1369:12;1354:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1393:9;1409:1;1405;:5;;;;:::i;:::-;1393:17;;1517:1;1510:8;;;1181:345;;;;;:::o;19933:330::-;20026:4;20063:53;20085:6;20063:53;;;;;;;;;;;;;;;;;:9;:17;20073:6;20063:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;20043:9;:17;20053:6;20043:17;;;;;;;;;;;;;;;:73;;;;20150:32;20175:6;20150:9;:20;20160:9;20150:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20127:9;:20;20137:9;20127:20;;;;;;;;;;;;;;;:55;;;;20215:9;20198:35;;20207:6;20198:35;;;20226:6;20198:35;;;;;;:::i;:::-;;;;;;;;20251:4;20244:11;;19933:330;;;;;:::o;260:181::-;318:7;338:9;354:1;350;:5;;;;:::i;:::-;338:17;;379:1;374;:6;;366:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;432:1;425:8;;;260:181;;;;:::o;20277:427::-;20363:7;20393:21;20425:9;20417:17;;:4;;;;;;;;;;;:17;;;:36;;20447:6;;20417:36;;;20437:7;;20417:36;20393:60;;20464:17;20484:34;20514:3;20484:25;20495:13;20484:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;20464:54;;20558:39;20587:9;20558;:24;20576:4;20558:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20531:9;:24;20549:4;20531:24;;;;;;;;;;;;;;;:66;;;;20638:4;20613:42;;20622:6;20613:42;;;20645:9;20613:42;;;;;;:::i;:::-;;;;;;;;20675:21;20686:9;20675:6;:10;;:21;;;;:::i;:::-;20668:28;;;;20277:427;;;;;:::o;787:250::-;845:7;874:1;869;:6;865:47;;899:1;892:8;;;;865:47;924:9;940:1;936;:5;;;;:::i;:::-;924:17;;969:1;964;960;:5;;;;:::i;:::-;:10;952:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1028:1;1021:8;;;787:250;;;;;:::o;20716:460::-;20784:21;20822:1;20808:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20784:40;;20853:4;20835;20840:1;20835:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20879:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20869:4;20874:1;20869:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20905:35;20921:4;20928:11;20905:7;:35::i;:::-;;20953:6;;;;;;;;;;;:57;;;21025:11;21051:1;21095:4;21122;21142:15;20953:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20771:405;20716:460;:::o;21184:279::-;21265:6;;;;;;;;;;;:22;;;21295:9;21328:4;21348:11;21374:1;21390;21406:8;;;;;;;;;;;21429:15;21265:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21184:279;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:126::-;479:7;519:42;512:5;508:54;497:65;;442:126;;;:::o;574:96::-;611:7;640:24;658:5;640:24;:::i;:::-;629:35;;574:96;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1028:99::-;1080:6;1114:5;1108:12;1098:22;;1028:99;;;:::o;1133:169::-;1217:11;1251:6;1246:3;1239:19;1291:4;1286:3;1282:14;1267:29;;1133:169;;;;:::o;1308:307::-;1376:1;1386:113;1400:6;1397:1;1394:13;1386:113;;;1485:1;1480:3;1476:11;1470:18;1466:1;1461:3;1457:11;1450:39;1422:2;1419:1;1415:10;1410:15;;1386:113;;;1517:6;1514:1;1511:13;1508:101;;;1597:1;1588:6;1583:3;1579:16;1572:27;1508:101;1357:258;1308:307;;;:::o;1621:102::-;1662:6;1713:2;1709:7;1704:2;1697:5;1693:14;1689:28;1679:38;;1621:102;;;:::o;1729:364::-;1817:3;1845:39;1878:5;1845:39;:::i;:::-;1900:71;1964:6;1959:3;1900:71;:::i;:::-;1893:78;;1980:52;2025:6;2020:3;2013:4;2006:5;2002:16;1980:52;:::i;:::-;2057:29;2079:6;2057:29;:::i;:::-;2052:3;2048:39;2041:46;;1821:272;1729:364;;;;:::o;2099:313::-;2212:4;2250:2;2239:9;2235:18;2227:26;;2299:9;2293:4;2289:20;2285:1;2274:9;2270:17;2263:47;2327:78;2400:4;2391:6;2327:78;:::i;:::-;2319:86;;2099:313;;;;:::o;2418:75::-;2451:6;2484:2;2478:9;2468:19;;2418:75;:::o;2499:117::-;2608:1;2605;2598:12;2622:117;2731:1;2728;2721:12;2745:122;2818:24;2836:5;2818:24;:::i;:::-;2811:5;2808:35;2798:63;;2857:1;2854;2847:12;2798:63;2745:122;:::o;2873:139::-;2919:5;2957:6;2944:20;2935:29;;2973:33;3000:5;2973:33;:::i;:::-;2873:139;;;;:::o;3018:122::-;3091:24;3109:5;3091:24;:::i;:::-;3084:5;3081:35;3071:63;;3130:1;3127;3120:12;3071:63;3018:122;:::o;3146:139::-;3192:5;3230:6;3217:20;3208:29;;3246:33;3273:5;3246:33;:::i;:::-;3146:139;;;;:::o;3291:474::-;3359:6;3367;3416:2;3404:9;3395:7;3391:23;3387:32;3384:119;;;3422:79;;:::i;:::-;3384:119;3542:1;3567:53;3612:7;3603:6;3592:9;3588:22;3567:53;:::i;:::-;3557:63;;3513:117;3669:2;3695:53;3740:7;3731:6;3720:9;3716:22;3695:53;:::i;:::-;3685:63;;3640:118;3291:474;;;;;:::o;3771:90::-;3805:7;3848:5;3841:13;3834:21;3823:32;;3771:90;;;:::o;3867:109::-;3948:21;3963:5;3948:21;:::i;:::-;3943:3;3936:34;3867:109;;:::o;3982:210::-;4069:4;4107:2;4096:9;4092:18;4084:26;;4120:65;4182:1;4171:9;4167:17;4158:6;4120:65;:::i;:::-;3982:210;;;;:::o;4198:104::-;4243:7;4272:24;4290:5;4272:24;:::i;:::-;4261:35;;4198:104;;;:::o;4308:138::-;4389:32;4415:5;4389:32;:::i;:::-;4382:5;4379:43;4369:71;;4436:1;4433;4426:12;4369:71;4308:138;:::o;4452:155::-;4506:5;4544:6;4531:20;4522:29;;4560:41;4595:5;4560:41;:::i;:::-;4452:155;;;;:::o;4613:345::-;4680:6;4729:2;4717:9;4708:7;4704:23;4700:32;4697:119;;;4735:79;;:::i;:::-;4697:119;4855:1;4880:61;4933:7;4924:6;4913:9;4909:22;4880:61;:::i;:::-;4870:71;;4826:125;4613:345;;;;:::o;4964:619::-;5041:6;5049;5057;5106:2;5094:9;5085:7;5081:23;5077:32;5074:119;;;5112:79;;:::i;:::-;5074:119;5232:1;5257:53;5302:7;5293:6;5282:9;5278:22;5257:53;:::i;:::-;5247:63;;5203:117;5359:2;5385:53;5430:7;5421:6;5410:9;5406:22;5385:53;:::i;:::-;5375:63;;5330:118;5487:2;5513:53;5558:7;5549:6;5538:9;5534:22;5513:53;:::i;:::-;5503:63;;5458:118;4964:619;;;;;:::o;5589:329::-;5648:6;5697:2;5685:9;5676:7;5672:23;5668:32;5665:119;;;5703:79;;:::i;:::-;5665:119;5823:1;5848:53;5893:7;5884:6;5873:9;5869:22;5848:53;:::i;:::-;5838:63;;5794:117;5589:329;;;;:::o;5924:474::-;5992:6;6000;6049:2;6037:9;6028:7;6024:23;6020:32;6017:119;;;6055:79;;:::i;:::-;6017:119;6175:1;6200:53;6245:7;6236:6;6225:9;6221:22;6200:53;:::i;:::-;6190:63;;6146:117;6302:2;6328:53;6373:7;6364:6;6353:9;6349:22;6328:53;:::i;:::-;6318:63;;6273:118;5924:474;;;;;:::o;6404:619::-;6481:6;6489;6497;6546:2;6534:9;6525:7;6521:23;6517:32;6514:119;;;6552:79;;:::i;:::-;6514:119;6672:1;6697:53;6742:7;6733:6;6722:9;6718:22;6697:53;:::i;:::-;6687:63;;6643:117;6799:2;6825:53;6870:7;6861:6;6850:9;6846:22;6825:53;:::i;:::-;6815:63;;6770:118;6927:2;6953:53;6998:7;6989:6;6978:9;6974:22;6953:53;:::i;:::-;6943:63;;6898:118;6404:619;;;;;:::o;7029:86::-;7064:7;7104:4;7097:5;7093:16;7082:27;;7029:86;;;:::o;7121:112::-;7204:22;7220:5;7204:22;:::i;:::-;7199:3;7192:35;7121:112;;:::o;7239:214::-;7328:4;7366:2;7355:9;7351:18;7343:26;;7379:67;7443:1;7432:9;7428:17;7419:6;7379:67;:::i;:::-;7239:214;;;;:::o;7459:116::-;7529:21;7544:5;7529:21;:::i;:::-;7522:5;7519:32;7509:60;;7565:1;7562;7555:12;7509:60;7459:116;:::o;7581:133::-;7624:5;7662:6;7649:20;7640:29;;7678:30;7702:5;7678:30;:::i;:::-;7581:133;;;;:::o;7720:468::-;7785:6;7793;7842:2;7830:9;7821:7;7817:23;7813:32;7810:119;;;7848:79;;:::i;:::-;7810:119;7968:1;7993:50;8035:7;8026:6;8015:9;8011:22;7993:50;:::i;:::-;7983:60;;7939:114;8092:2;8118:53;8163:7;8154:6;8143:9;8139:22;8118:53;:::i;:::-;8108:63;;8063:118;7720:468;;;;;:::o;8194:60::-;8222:3;8243:5;8236:12;;8194:60;;;:::o;8260:142::-;8310:9;8343:53;8361:34;8370:24;8388:5;8370:24;:::i;:::-;8361:34;:::i;:::-;8343:53;:::i;:::-;8330:66;;8260:142;;;:::o;8408:134::-;8466:9;8499:37;8530:5;8499:37;:::i;:::-;8486:50;;8408:134;;;:::o;8548:166::-;8630:9;8663:45;8702:5;8663:45;:::i;:::-;8650:58;;8548:166;;;:::o;8720:195::-;8839:69;8902:5;8839:69;:::i;:::-;8834:3;8827:82;8720:195;;:::o;8921:286::-;9046:4;9084:2;9073:9;9069:18;9061:26;;9097:103;9197:1;9186:9;9182:17;9173:6;9097:103;:::i;:::-;8921:286;;;;:::o;9213:329::-;9272:6;9321:2;9309:9;9300:7;9296:23;9292:32;9289:119;;;9327:79;;:::i;:::-;9289:119;9447:1;9472:53;9517:7;9508:6;9497:9;9493:22;9472:53;:::i;:::-;9462:63;;9418:117;9213:329;;;;:::o;9548:468::-;9613:6;9621;9670:2;9658:9;9649:7;9645:23;9641:32;9638:119;;;9676:79;;:::i;:::-;9638:119;9796:1;9821:53;9866:7;9857:6;9846:9;9842:22;9821:53;:::i;:::-;9811:63;;9767:117;9923:2;9949:50;9991:7;9982:6;9971:9;9967:22;9949:50;:::i;:::-;9939:60;;9894:115;9548:468;;;;;:::o;10022:117::-;10131:1;10128;10121:12;10145:180;10193:77;10190:1;10183:88;10290:4;10287:1;10280:15;10314:4;10311:1;10304:15;10331:281;10414:27;10436:4;10414:27;:::i;:::-;10406:6;10402:40;10544:6;10532:10;10529:22;10508:18;10496:10;10493:34;10490:62;10487:88;;;10555:18;;:::i;:::-;10487:88;10595:10;10591:2;10584:22;10374:238;10331:281;;:::o;10618:129::-;10652:6;10679:20;;:::i;:::-;10669:30;;10708:33;10736:4;10728:6;10708:33;:::i;:::-;10618:129;;;:::o;10753:311::-;10830:4;10920:18;10912:6;10909:30;10906:56;;;10942:18;;:::i;:::-;10906:56;10992:4;10984:6;10980:17;10972:25;;11052:4;11046;11042:15;11034:23;;10753:311;;;:::o;11070:117::-;11179:1;11176;11169:12;11210:710;11306:5;11331:81;11347:64;11404:6;11347:64;:::i;:::-;11331:81;:::i;:::-;11322:90;;11432:5;11461:6;11454:5;11447:21;11495:4;11488:5;11484:16;11477:23;;11548:4;11540:6;11536:17;11528:6;11524:30;11577:3;11569:6;11566:15;11563:122;;;11596:79;;:::i;:::-;11563:122;11711:6;11694:220;11728:6;11723:3;11720:15;11694:220;;;11803:3;11832:37;11865:3;11853:10;11832:37;:::i;:::-;11827:3;11820:50;11899:4;11894:3;11890:14;11883:21;;11770:144;11754:4;11749:3;11745:14;11738:21;;11694:220;;;11698:21;11312:608;;11210:710;;;;;:::o;11943:370::-;12014:5;12063:3;12056:4;12048:6;12044:17;12040:27;12030:122;;12071:79;;:::i;:::-;12030:122;12188:6;12175:20;12213:94;12303:3;12295:6;12288:4;12280:6;12276:17;12213:94;:::i;:::-;12204:103;;12020:293;11943:370;;;;:::o;12319:539::-;12403:6;12452:2;12440:9;12431:7;12427:23;12423:32;12420:119;;;12458:79;;:::i;:::-;12420:119;12606:1;12595:9;12591:17;12578:31;12636:18;12628:6;12625:30;12622:117;;;12658:79;;:::i;:::-;12622:117;12763:78;12833:7;12824:6;12813:9;12809:22;12763:78;:::i;:::-;12753:88;;12549:302;12319:539;;;;:::o;12864:474::-;12932:6;12940;12989:2;12977:9;12968:7;12964:23;12960:32;12957:119;;;12995:79;;:::i;:::-;12957:119;13115:1;13140:53;13185:7;13176:6;13165:9;13161:22;13140:53;:::i;:::-;13130:63;;13086:117;13242:2;13268:53;13313:7;13304:6;13293:9;13289:22;13268:53;:::i;:::-;13258:63;;13213:118;12864:474;;;;;:::o;13344:126::-;13394:9;13427:37;13458:5;13427:37;:::i;:::-;13414:50;;13344:126;;;:::o;13476:144::-;13544:9;13577:37;13608:5;13577:37;:::i;:::-;13564:50;;13476:144;;;:::o;13626:167::-;13731:55;13780:5;13731:55;:::i;:::-;13726:3;13719:68;13626:167;;:::o;13799:258::-;13910:4;13948:2;13937:9;13933:18;13925:26;;13961:89;14047:1;14036:9;14032:17;14023:6;13961:89;:::i;:::-;13799:258;;;;:::o;14063:182::-;14203:34;14199:1;14191:6;14187:14;14180:58;14063:182;:::o;14251:366::-;14393:3;14414:67;14478:2;14473:3;14414:67;:::i;:::-;14407:74;;14490:93;14579:3;14490:93;:::i;:::-;14608:2;14603:3;14599:12;14592:19;;14251:366;;;:::o;14623:419::-;14789:4;14827:2;14816:9;14812:18;14804:26;;14876:9;14870:4;14866:20;14862:1;14851:9;14847:17;14840:47;14904:131;15030:4;14904:131;:::i;:::-;14896:139;;14623:419;;;:::o;15048:332::-;15169:4;15207:2;15196:9;15192:18;15184:26;;15220:71;15288:1;15277:9;15273:17;15264:6;15220:71;:::i;:::-;15301:72;15369:2;15358:9;15354:18;15345:6;15301:72;:::i;:::-;15048:332;;;;;:::o;15386:143::-;15443:5;15474:6;15468:13;15459:22;;15490:33;15517:5;15490:33;:::i;:::-;15386:143;;;;:::o;15535:351::-;15605:6;15654:2;15642:9;15633:7;15629:23;15625:32;15622:119;;;15660:79;;:::i;:::-;15622:119;15780:1;15805:64;15861:7;15852:6;15841:9;15837:22;15805:64;:::i;:::-;15795:74;;15751:128;15535:351;;;;:::o;15892:180::-;15940:77;15937:1;15930:88;16037:4;16034:1;16027:15;16061:4;16058:1;16051:15;16078:180;16126:77;16123:1;16116:88;16223:4;16220:1;16213:15;16247:4;16244:1;16237:15;16264:233;16303:3;16326:24;16344:5;16326:24;:::i;:::-;16317:33;;16372:66;16365:5;16362:77;16359:103;;16442:18;;:::i;:::-;16359:103;16489:1;16482:5;16478:13;16471:20;;16264:233;;;:::o;16503:225::-;16643:34;16639:1;16631:6;16627:14;16620:58;16712:8;16707:2;16699:6;16695:15;16688:33;16503:225;:::o;16734:366::-;16876:3;16897:67;16961:2;16956:3;16897:67;:::i;:::-;16890:74;;16973:93;17062:3;16973:93;:::i;:::-;17091:2;17086:3;17082:12;17075:19;;16734:366;;;:::o;17106:419::-;17272:4;17310:2;17299:9;17295:18;17287:26;;17359:9;17353:4;17349:20;17345:1;17334:9;17330:17;17323:47;17387:131;17513:4;17387:131;:::i;:::-;17379:139;;17106:419;;;:::o;17531:191::-;17571:4;17591:20;17609:1;17591:20;:::i;:::-;17586:25;;17625:20;17643:1;17625:20;:::i;:::-;17620:25;;17664:1;17661;17658:8;17655:34;;;17669:18;;:::i;:::-;17655:34;17714:1;17711;17707:9;17699:17;;17531:191;;;;:::o;17728:173::-;17868:25;17864:1;17856:6;17852:14;17845:49;17728:173;:::o;17907:366::-;18049:3;18070:67;18134:2;18129:3;18070:67;:::i;:::-;18063:74;;18146:93;18235:3;18146:93;:::i;:::-;18264:2;18259:3;18255:12;18248:19;;17907:366;;;:::o;18279:419::-;18445:4;18483:2;18472:9;18468:18;18460:26;;18532:9;18526:4;18522:20;18518:1;18507:9;18503:17;18496:47;18560:131;18686:4;18560:131;:::i;:::-;18552:139;;18279:419;;;:::o;18704:152::-;18844:4;18840:1;18832:6;18828:14;18821:28;18704:152;:::o;18862:365::-;19004:3;19025:66;19089:1;19084:3;19025:66;:::i;:::-;19018:73;;19100:93;19189:3;19100:93;:::i;:::-;19218:2;19213:3;19209:12;19202:19;;18862:365;;;:::o;19233:419::-;19399:4;19437:2;19426:9;19422:18;19414:26;;19486:9;19480:4;19476:20;19472:1;19461:9;19457:17;19450:47;19514:131;19640:4;19514:131;:::i;:::-;19506:139;;19233:419;;;:::o;19658:156::-;19798:8;19794:1;19786:6;19782:14;19775:32;19658:156;:::o;19820:365::-;19962:3;19983:66;20047:1;20042:3;19983:66;:::i;:::-;19976:73;;20058:93;20147:3;20058:93;:::i;:::-;20176:2;20171:3;20167:12;20160:19;;19820:365;;;:::o;20191:419::-;20357:4;20395:2;20384:9;20380:18;20372:26;;20444:9;20438:4;20434:20;20430:1;20419:9;20415:17;20408:47;20472:131;20598:4;20472:131;:::i;:::-;20464:139;;20191:419;;;:::o;20616:332::-;20737:4;20775:2;20764:9;20760:18;20752:26;;20788:71;20856:1;20845:9;20841:17;20832:6;20788:71;:::i;:::-;20869:72;20937:2;20926:9;20922:18;20913:6;20869:72;:::i;:::-;20616:332;;;;;:::o;20954:85::-;20999:7;21028:5;21017:16;;20954:85;;;:::o;21045:158::-;21103:9;21136:61;21154:42;21163:32;21189:5;21163:32;:::i;:::-;21154:42;:::i;:::-;21136:61;:::i;:::-;21123:74;;21045:158;;;:::o;21209:147::-;21304:45;21343:5;21304:45;:::i;:::-;21299:3;21292:58;21209:147;;:::o;21362:348::-;21491:4;21529:2;21518:9;21514:18;21506:26;;21542:71;21610:1;21599:9;21595:17;21586:6;21542:71;:::i;:::-;21623:80;21699:2;21688:9;21684:18;21675:6;21623:80;:::i;:::-;21362:348;;;;;:::o;21716:180::-;21764:77;21761:1;21754:88;21861:4;21858:1;21851:15;21885:4;21882:1;21875:15;21902:185;21942:1;21959:20;21977:1;21959:20;:::i;:::-;21954:25;;21993:20;22011:1;21993:20;:::i;:::-;21988:25;;22032:1;22022:35;;22037:18;;:::i;:::-;22022:35;22079:1;22076;22072:9;22067:14;;21902:185;;;;:::o;22093:305::-;22133:3;22152:20;22170:1;22152:20;:::i;:::-;22147:25;;22186:20;22204:1;22186:20;:::i;:::-;22181:25;;22340:1;22272:66;22268:74;22265:1;22262:81;22259:107;;;22346:18;;:::i;:::-;22259:107;22390:1;22387;22383:9;22376:16;;22093:305;;;;:::o;22404:177::-;22544:29;22540:1;22532:6;22528:14;22521:53;22404:177;:::o;22587:366::-;22729:3;22750:67;22814:2;22809:3;22750:67;:::i;:::-;22743:74;;22826:93;22915:3;22826:93;:::i;:::-;22944:2;22939:3;22935:12;22928:19;;22587:366;;;:::o;22959:419::-;23125:4;23163:2;23152:9;23148:18;23140:26;;23212:9;23206:4;23202:20;23198:1;23187:9;23183:17;23176:47;23240:131;23366:4;23240:131;:::i;:::-;23232:139;;22959:419;;;:::o;23384:348::-;23424:7;23447:20;23465:1;23447:20;:::i;:::-;23442:25;;23481:20;23499:1;23481:20;:::i;:::-;23476:25;;23669:1;23601:66;23597:74;23594:1;23591:81;23586:1;23579:9;23572:17;23568:105;23565:131;;;23676:18;;:::i;:::-;23565:131;23724:1;23721;23717:9;23706:20;;23384:348;;;;:::o;23738:220::-;23878:34;23874:1;23866:6;23862:14;23855:58;23947:3;23942:2;23934:6;23930:15;23923:28;23738:220;:::o;23964:366::-;24106:3;24127:67;24191:2;24186:3;24127:67;:::i;:::-;24120:74;;24203:93;24292:3;24203:93;:::i;:::-;24321:2;24316:3;24312:12;24305:19;;23964:366;;;:::o;24336:419::-;24502:4;24540:2;24529:9;24525:18;24517:26;;24589:9;24583:4;24579:20;24575:1;24564:9;24560:17;24553:47;24617:131;24743:4;24617:131;:::i;:::-;24609:139;;24336:419;;;:::o;24761:143::-;24818:5;24849:6;24843:13;24834:22;;24865:33;24892:5;24865:33;:::i;:::-;24761:143;;;;:::o;24910:351::-;24980:6;25029:2;25017:9;25008:7;25004:23;25000:32;24997:119;;;25035:79;;:::i;:::-;24997:119;25155:1;25180:64;25236:7;25227:6;25216:9;25212:22;25180:64;:::i;:::-;25170:74;;25126:128;24910:351;;;;:::o;25267:114::-;25334:6;25368:5;25362:12;25352:22;;25267:114;;;:::o;25387:184::-;25486:11;25520:6;25515:3;25508:19;25560:4;25555:3;25551:14;25536:29;;25387:184;;;;:::o;25577:132::-;25644:4;25667:3;25659:11;;25697:4;25692:3;25688:14;25680:22;;25577:132;;;:::o;25715:108::-;25792:24;25810:5;25792:24;:::i;:::-;25787:3;25780:37;25715:108;;:::o;25829:179::-;25898:10;25919:46;25961:3;25953:6;25919:46;:::i;:::-;25997:4;25992:3;25988:14;25974:28;;25829:179;;;;:::o;26014:113::-;26084:4;26116;26111:3;26107:14;26099:22;;26014:113;;;:::o;26163:732::-;26282:3;26311:54;26359:5;26311:54;:::i;:::-;26381:86;26460:6;26455:3;26381:86;:::i;:::-;26374:93;;26491:56;26541:5;26491:56;:::i;:::-;26570:7;26601:1;26586:284;26611:6;26608:1;26605:13;26586:284;;;26687:6;26681:13;26714:63;26773:3;26758:13;26714:63;:::i;:::-;26707:70;;26800:60;26853:6;26800:60;:::i;:::-;26790:70;;26646:224;26633:1;26630;26626:9;26621:14;;26586:284;;;26590:14;26886:3;26879:10;;26287:608;;;26163:732;;;;:::o;26901:831::-;27164:4;27202:3;27191:9;27187:19;27179:27;;27216:71;27284:1;27273:9;27269:17;27260:6;27216:71;:::i;:::-;27297:80;27373:2;27362:9;27358:18;27349:6;27297:80;:::i;:::-;27424:9;27418:4;27414:20;27409:2;27398:9;27394:18;27387:48;27452:108;27555:4;27546:6;27452:108;:::i;:::-;27444:116;;27570:72;27638:2;27627:9;27623:18;27614:6;27570:72;:::i;:::-;27652:73;27720:3;27709:9;27705:19;27696:6;27652:73;:::i;:::-;26901:831;;;;;;;;:::o;27738:807::-;27987:4;28025:3;28014:9;28010:19;28002:27;;28039:71;28107:1;28096:9;28092:17;28083:6;28039:71;:::i;:::-;28120:72;28188:2;28177:9;28173:18;28164:6;28120:72;:::i;:::-;28202:80;28278:2;28267:9;28263:18;28254:6;28202:80;:::i;:::-;28292;28368:2;28357:9;28353:18;28344:6;28292:80;:::i;:::-;28382:73;28450:3;28439:9;28435:19;28426:6;28382:73;:::i;:::-;28465;28533:3;28522:9;28518:19;28509:6;28465:73;:::i;:::-;27738:807;;;;;;;;;:::o;28551:663::-;28639:6;28647;28655;28704:2;28692:9;28683:7;28679:23;28675:32;28672:119;;;28710:79;;:::i;:::-;28672:119;28830:1;28855:64;28911:7;28902:6;28891:9;28887:22;28855:64;:::i;:::-;28845:74;;28801:128;28968:2;28994:64;29050:7;29041:6;29030:9;29026:22;28994:64;:::i;:::-;28984:74;;28939:129;29107:2;29133:64;29189:7;29180:6;29169:9;29165:22;29133:64;:::i;:::-;29123:74;;29078:129;28551:663;;;;;:::o

Swarm Source

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