ETH Price: $3,175.93 (-7.92%)
Gas: 4 Gwei

Token

GROKRRRRRRRRRRRRRRRRRRRRR (GROKR)
 

Overview

Max Total Supply

69,000,000 GROKR

Holders

135

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.686063992139696214 GROKR

Value
$0.00
0xb1348aEE16dC11dB9fbBf7bbDC098A56d22c0AF9
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.23+commit.f704f362

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

/*

    ████████████████████████████████████████████████████████████████████████████████
    ████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████⌐                      ╟███████
    █████████████████████████████████████████████████⌐                      ╟███████
    ██████████▀╙████████████████████▀▀╙╙╙▀▀██████████⌐     ¥▓▓              ╟███████
    ██████████  ████████████████████▄▓████▄  ████████⌐      ╙██▄            ╟███████
    ██████████  ████████████████████████████  ███████⌐        ███           ╟███████
    ██████,╙▀█  ███  ▄▄▄ ╙██▄ ▀ ╟██▀▀▀▀▀████▌ ╟██████⌐         ╙██▄         ╟███████
    ████████    ██  █████ ╟███▌ ╟██  ███████  ███████⌐           ███        ╟███████
    ██████▀ ▓█  ███ ╙███  ████▌ ╟██  ▀▀▀▀▀└ ╓████████⌐            ╙██▄      ╟███████
    ██████▓████▓█████▄▄▄███████▓██████▄▄▄▓███████████⌐              ▀▀^     ╟███████
    █████████████████████████████████████████████████⌐                      ╟███████
    █████████████████████████████████████████████████▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄████████
    ████████████████████████████████████████████████████████████████████████████████
    ████████████████████████████████████████████████████████████████████████████████

    https://x.com/grokr_erc

    https://t.me/GROKR_ERC

    https://grokreflections.com/

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.23;

/**
 * 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 = 10 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 = "GROKRRRRRRRRRRRRRRRRRRRRR";
    string private constant _symbol = "GROKR";
    uint8 private constant _decimals = 18;
    
    uint256 private _totalSupply = 69000000 * (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 = 69;
    uint256 public sellFee = 69;

    uint256 public toReflections = 50;
    uint256 public toLiquidity = 0;
    uint256 public toMarketing = 50;

    uint256 public allocationSum = 100;

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

    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(50);
    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"}]

6080604052738390a1da07e376ef7add4be859ba74fb83aa02d560015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a62000068919062000e21565b63041cdb4062000079919062000e71565b60025561dead60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860146101000a81548160ff02191690831515021790555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506045600f55604560105560326011555f6012556032601355606460145573ddc9c2d1fa6cf2aca4fbef545cac3fc6e1885dd960195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601960156101000a81548160ff0219169083151502179055505f601960166101000a81548160ff0219169083151502179055505f601b556200023c603260025462000b9c60201b90919060201c565b601c5562000257603260025462000b9c60201b90919060201c565b601d556200027361019060025462000b9c60201b90919060201c565b601e5534801562000282575f80fd5b505f6200029462000bed60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000415919062000f20565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004e5919062000f20565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200054292919062000f61565b6020604051808303815f875af11580156200055f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000585919062000f20565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550604051620006909062000c81565b604051809103905ff080158015620006aa573d5f803e3d5ffd5b50601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f620006ff62000bf460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f6200091a62000bf460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060025460035f62000ae162000bf460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555062000b2e62000bf460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000b8e919062000f9d565b60405180910390a3620010d2565b5f62000be583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c1b60201b60201c565b905092915050565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f808311829062000c64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c5b91906200104c565b60405180910390fd5b505f838562000c7491906200109b565b9050809150509392505050565b611f158062005cc483390190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000d195780860481111562000cf15762000cf062000c8f565b5b600185161562000d015780820291505b808102905062000d118562000cbc565b945062000cd1565b94509492505050565b5f8262000d33576001905062000e05565b8162000d42575f905062000e05565b816001811462000d5b576002811462000d665762000d9c565b600191505062000e05565b60ff84111562000d7b5762000d7a62000c8f565b5b8360020a91508482111562000d955762000d9462000c8f565b5b5062000e05565b5060208310610133831016604e8410600b841016171562000dd65782820a90508381111562000dd05762000dcf62000c8f565b5b62000e05565b62000de5848484600162000cc8565b9250905081840481111562000dff5762000dfe62000c8f565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000e2d8262000e0c565b915062000e3a8362000e15565b925062000e697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d22565b905092915050565b5f62000e7d8262000e0c565b915062000e8a8362000e0c565b925082820262000e9a8162000e0c565b9150828204841483151762000eb45762000eb362000c8f565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000eea8262000ebf565b9050919050565b62000efc8162000ede565b811462000f07575f80fd5b50565b5f8151905062000f1a8162000ef1565b92915050565b5f6020828403121562000f385762000f3762000ebb565b5b5f62000f478482850162000f0a565b91505092915050565b62000f5b8162000ede565b82525050565b5f60408201905062000f765f83018562000f50565b62000f85602083018462000f50565b9392505050565b62000f978162000e0c565b82525050565b5f60208201905062000fb25f83018462000f8c565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101562000ff157808201518184015260208101905062000fd4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f620010188262000fb8565b62001024818562000fc2565b93506200103681856020860162000fd2565b620010418162000ffc565b840191505092915050565b5f6020820190508181035f8301526200106681846200100c565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620010a78262000e0c565b9150620010b48362000e0c565b925082620010c757620010c66200106e565b5b828204905092915050565b614be480620010e05f395ff3fe60806040526004361061038f575f3560e01c806377359aa7116101db578063bb542ef011610101578063d920334e1161009f578063f887ea401161006e578063f887ea4014610cd2578063f8b45b0514610cfc578063fabe628314610d26578063ffb54a9914610d4e57610396565b8063d920334e14610c1e578063dd62ed3e14610c46578063f2fde38b14610c82578063f708a64f14610caa57610396565b8063c45a0155116100db578063c45a015514610b8a578063c8d1293d14610bb4578063c9567bf914610bde578063caa5581b14610bf457610396565b8063bb542ef014610b0e578063bf56b37114610b36578063c2c3952d14610b6057610396565b80638b42507f11610179578063a3a2e89e11610148578063a3a2e89e14610a58578063a8aa1b3114610a80578063a9059cbb14610aaa578063b515566a14610ae657610396565b80638b42507f1461099e5780638da5cb5b146109da5780638ea5220f14610a0457806395d89b4114610a2e57610396565b80637f058804116101b55780637f05880414610920578063819340311461093657806389291a8f1461095e578063893d20e81461097457610396565b806377359aa7146108925780637db1342c146108ce5780637dfcbe34146108f657610396565b80633dab5269116102c0578063558da3d31161025e57806370a082311161022d57806370a08231146107ec578063715018a6146108285780637437681e1461083e57806375df13051461086857610396565b8063558da3d314610748578063571ac8b0146107705780636303516c146107ac57806366eb3785146107d657610396565b8063454343771161029a57806345434377146106a057806347062402146106ca5780634a74bb02146106f4578063538b1bea1461071e57610396565b80633dab5269146106005780633f4218e0146106285780634355855a1461066457610396565b8063273123b71161032d5780632d48e896116103075780632d48e8961461055e5780632dbea2e11461058657806330ca34ee146105ae578063313ce567146105d657610396565b8063273123b7146104e25780632b112e491461050a5780632b14ca561461053457610396565b8063095ea7b311610369578063095ea7b31461041857806318160ddd146104545780631f53ac021461047e57806323b872dd146104a657610396565b80630445b6671461039a57806305efa057146103c457806306fdde03146103ee57610396565b3661039657005b5f80fd5b3480156103a5575f80fd5b506103ae610d78565b6040516103bb9190613d5a565b60405180910390f35b3480156103cf575f80fd5b506103d8610d7e565b6040516103e59190613db2565b60405180910390f35b3480156103f9575f80fd5b50610402610da3565b60405161040f9190613e55565b60405180910390f35b348015610423575f80fd5b5061043e60048036038101906104399190613eda565b610de0565b60405161044b9190613f32565b60405180910390f35b34801561045f575f80fd5b50610468610ecd565b6040516104759190613d5a565b60405180910390f35b348015610489575f80fd5b506104a4600480360381019061049f9190613f86565b610ed6565b005b3480156104b1575f80fd5b506104cc60048036038101906104c79190613fb1565b610fad565b6040516104d99190613f32565b60405180910390f35b3480156104ed575f80fd5b5061050860048036038101906105039190614001565b6111a0565b005b348015610515575f80fd5b5061051e61128b565b60405161052b9190613d5a565b60405180910390f35b34801561053f575f80fd5b5061054861130a565b6040516105559190613d5a565b60405180910390f35b348015610569575f80fd5b50610584600480360381019061057f919061402c565b611310565b005b348015610591575f80fd5b506105ac60048036038101906105a7919061406a565b611431565b005b3480156105b9575f80fd5b506105d460048036038101906105cf919061402c565b6114df565b005b3480156105e1575f80fd5b506105ea611585565b6040516105f791906140d5565b60405180910390f35b34801561060b575f80fd5b5061062660048036038101906106219190614118565b61158d565b005b348015610633575f80fd5b5061064e60048036038101906106499190614001565b611646565b60405161065b9190613f32565b60405180910390f35b34801561066f575f80fd5b5061068a60048036038101906106859190614001565b611663565b6040516106979190613f32565b60405180910390f35b3480156106ab575f80fd5b506106b4611680565b6040516106c19190613d5a565b60405180910390f35b3480156106d5575f80fd5b506106de611686565b6040516106eb9190613d5a565b60405180910390f35b3480156106ff575f80fd5b5061070861168c565b6040516107159190613f32565b60405180910390f35b348015610729575f80fd5b5061073261169f565b60405161073f91906141b1565b60405180910390f35b348015610753575f80fd5b5061076e600480360381019061076991906141ca565b6116c4565b005b34801561077b575f80fd5b5061079660048036038101906107919190614001565b611762565b6040516107a39190613f32565b60405180910390f35b3480156107b7575f80fd5b506107c0611794565b6040516107cd9190613db2565b60405180910390f35b3480156107e1575f80fd5b506107ea6117b9565b005b3480156107f7575f80fd5b50610812600480360381019061080d9190614001565b611857565b60405161081f9190613d5a565b60405180910390f35b348015610833575f80fd5b5061083c61189d565b005b348015610849575f80fd5b506108526119eb565b60405161085f9190613d5a565b60405180910390f35b348015610873575f80fd5b5061087c6119f1565b6040516108899190613d5a565b60405180910390f35b34801561089d575f80fd5b506108b860048036038101906108b39190614001565b6119f7565b6040516108c59190613d5a565b60405180910390f35b3480156108d9575f80fd5b506108f460048036038101906108ef91906141ca565b611a98565b005b348015610901575f80fd5b5061090a611b36565b6040516109179190613f32565b60405180910390f35b34801561092b575f80fd5b50610934611b49565b005b348015610941575f80fd5b5061095c600480360381019061095791906141ca565b611bd2565b005b348015610969575f80fd5b50610972611cf0565b005b34801561097f575f80fd5b50610988611df9565b6040516109959190613db2565b60405180910390f35b3480156109a9575f80fd5b506109c460048036038101906109bf9190614001565b611e07565b6040516109d19190613f32565b60405180910390f35b3480156109e5575f80fd5b506109ee611e24565b6040516109fb9190613db2565b60405180910390f35b348015610a0f575f80fd5b50610a18611e4b565b604051610a259190613db2565b60405180910390f35b348015610a39575f80fd5b50610a42611e70565b604051610a4f9190613e55565b60405180910390f35b348015610a63575f80fd5b50610a7e6004803603810190610a7991906141f5565b611ead565b005b348015610a8b575f80fd5b50610a94611f99565b604051610aa19190613db2565b60405180910390f35b348015610ab5575f80fd5b50610ad06004803603810190610acb9190613eda565b611fbe565b604051610add9190613f32565b60405180910390f35b348015610af1575f80fd5b50610b0c6004803603810190610b079190614373565b611fd2565b005b348015610b19575f80fd5b50610b346004803603810190610b2f9190613f86565b6120f1565b005b348015610b41575f80fd5b50610b4a6121c8565b604051610b579190613d5a565b60405180910390f35b348015610b6b575f80fd5b50610b746121ce565b604051610b819190613d5a565b60405180910390f35b348015610b95575f80fd5b50610b9e6121d4565b604051610bab9190613db2565b60405180910390f35b348015610bbf575f80fd5b50610bc86121f9565b604051610bd59190613d5a565b60405180910390f35b348015610be9575f80fd5b50610bf26121ff565b005b348015610bff575f80fd5b50610c086122b7565b604051610c159190613d5a565b60405180910390f35b348015610c29575f80fd5b50610c446004803603810190610c3f91906141ca565b6122bd565b005b348015610c51575f80fd5b50610c6c6004803603810190610c6791906143ba565b61235b565b604051610c799190613d5a565b60405180910390f35b348015610c8d575f80fd5b50610ca86004803603810190610ca39190614001565b6123dd565b005b348015610cb5575f80fd5b50610cd06004803603810190610ccb91906141f5565b61259a565b005b348015610cdd575f80fd5b50610ce661263c565b604051610cf39190614429565b60405180910390f35b348015610d07575f80fd5b50610d10612661565b604051610d1d9190613d5a565b60405180910390f35b348015610d31575f80fd5b50610d4c6004803603810190610d4791906141f5565b612667565b005b348015610d59575f80fd5b50610d62612753565b604051610d6f9190613f32565b60405180910390f35b601e5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280601981526020017f47524f4b52525252525252525252525252525252525252525200000000000000815250905090565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ebb9190613d5a565b60405180910390a36001905092915050565b5f600254905090565b610ede612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f619061448c565b60405180910390fd5b8060195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461118c5761110f826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276d9092919063ffffffff16565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6111978484846127cf565b90509392505050565b6111a8612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b9061448c565b60405180910390fd5b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f6113056112b960085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611857565b6112f76112e660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611857565b60025461307a90919063ffffffff16565b61307a90919063ffffffff16565b905090565b60105481565b611318612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b9061448c565b60405180910390fd5b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004016114009291906144aa565b5f604051808303815f87803b158015611417575f80fd5b505af1158015611429573d5f803e3d5ffd5b505050505050565b611439612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc9061448c565b60405180910390fd5b826011819055508160128190555080601381905550505050565b6114e7612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a9061448c565b60405180910390fd5b81600f81905550806010819055505050565b5f6012905090565b611595612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116189061448c565b60405180910390fd5b81601960156101000a81548160ff02191690831515021790555080601e819055505050565b600a602052805f5260405f205f915054906101000a900460ff1681565b600c602052805f5260405f205f915054906101000a900460ff1681565b60145481565b600f5481565b601960159054906101000a900460ff1681565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116cc612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f9061448c565b60405180910390fd5b80601b8190555050565b5f61178d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610de0565b9050919050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117c1612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118449061448c565b60405180910390fd5b6118556130c3565b565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6118a5612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611931576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119289061448c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c5481565b60135481565b5f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401611a529190613db2565b602060405180830381865afa158015611a6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9191906144e5565b9050919050565b611aa0612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b239061448c565b60405180910390fd5b80601d8190555050565b600860149054906101000a900460ff1681565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd14ae27336040518263ffffffff1660e01b8152600401611ba39190613db2565b5f604051808303815f87803b158015611bba575f80fd5b505af1158015611bcc573d5f803e3d5ffd5b50505050565b611bda612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5d9061448c565b60405180910390fd5b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611cc09190613d5a565b5f604051808303815f87803b158015611cd7575f80fd5b505af1158015611ce9573d5f803e3d5ffd5b5050505050565b611cf8612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b9061448c565b60405180910390fd5b5f4790505f811115611df65760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611df4573d5f803e3d5ffd5b505b50565b5f611e02611e24565b905090565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f47524f4b52000000000000000000000000000000000000000000000000000000815250905090565b611eb5612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f389061448c565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611fca3384846127cf565b905092915050565b611fda612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d9061448c565b60405180910390fd5b5f5b81518110156120ed57600160095f84848151811061208957612088614510565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050612068565b5050565b6120f9612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217c9061448c565b60405180910390fd5b8060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b601b5481565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b612207612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228a9061448c565b60405180910390fd5b43600d819055506001601960166101000a81548160ff021916908315150217905550565b60115481565b6122c5612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123489061448c565b60405180910390fd5b80601c8190555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6123e5612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124689061448c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d6906145ad565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125a2612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461262e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126259061448c565b60405180910390fd5b6126388282613332565b5050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b61266f612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f29061448c565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601960169054906101000a900460ff1681565b5f33905090565b5f8383111582906127b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ab9190613e55565b60405180910390fd5b505f83856127c291906145f8565b9050809150509392505050565b5f6127d8611e24565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156128465750612816611e24565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561289b57601960169054906101000a900460ff1661289a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289190614675565b60405180910390fd5b5b60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612939575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612941575f80fd5b601960149054906101000a900460ff161561296857612961848484613576565b9050613073565b601c54821115806129bf5750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6129fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f5906146dd565b60405180910390fd5b600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612a615750600860149054906101000a900460ff165b15612afb57601d54612ab98360035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461374090919063ffffffff16565b1115612afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af190614745565b60405180910390fd5b5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b655750601960149054906101000a900460ff16155b8015612b7d5750601960159054906101000a900460ff165b8015612bc85750601e5460035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b15612bd657612bd56130c3565b5b612c5d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276d9092919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612d3d5750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612d475782612d53565b612d5285858561379d565b5b9050612da58160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461374090919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612ef757601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968660035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b8152600401612ecd929190614763565b5f604051808303815f87803b158015612ee4575f80fd5b505af1925050508015612ef5575060015b505b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661300857601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968560035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b8152600401612fde929190614763565b5f604051808303815f87803b158015612ff5575f80fd5b505af1925050508015613006575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130659190613d5a565b60405180910390a360019150505b9392505050565b5f6130bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061276d565b905092915050565b6001601960146101000a81548160ff0219169083151502179055505f60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f61315b600261314d606461313f6012548761393e90919063ffffffff16565b6139b590919063ffffffff16565b6139b590919063ffffffff16565b90505f613171828461307a90919063ffffffff16565b905061317c816139fe565b5f4790505f6131a9606461319b6011548561393e90919063ffffffff16565b6139b590919063ffffffff16565b90505f6131d460646131c66013548661393e90919063ffffffff16565b6139b590919063ffffffff16565b90505f613212600261320460646131f66012548961393e90919063ffffffff16565b6139b590919063ffffffff16565b6139b590919063ffffffff16565b90505f8411156132825760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015613280573d5f803e3d5ffd5b505b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b1580156132e9575f80fd5b505af1935050505080156132fb575060015b505f86111561330f5761330e8682613c13565b5b505050505050505f601960146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156133bb575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6133c3575f80fd5b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080156134ab57601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96835f6040518363ffffffff1660e01b81526004016134799291906147c3565b5f604051808303815f87803b158015613490575f80fd5b505af11580156134a2573d5f803e3d5ffd5b50505050613572565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b8152600401613544929190614763565b5f604051808303815f87803b15801561355b575f80fd5b505af115801561356d573d5f803e3d5ffd5b505050505b5050565b5f6135fe826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276d9092919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061368f8260035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461374090919063ffffffff16565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161372d9190613d5a565b60405180910390a3600190509392505050565b5f80828461374e91906147ea565b905083811015613793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378a90614867565b60405180910390fd5b8091505092915050565b5f808373ffffffffffffffffffffffffffffffffffffffff1660165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146137fb57600f546137ff565b6010545b90505f613828606461381a848761393e90919063ffffffff16565b6139b590919063ffffffff16565b905061387a8160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461374090919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139189190613d5a565b60405180910390a3613933818561307a90919063ffffffff16565b925050509392505050565b5f80830361394e575f90506139af565b5f828461395b9190614885565b905082848261396a91906148f3565b146139aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139a190614993565b60405180910390fd5b809150505b92915050565b5f6139f683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ce1565b905092915050565b5f600267ffffffffffffffff811115613a1a57613a19614237565b5b604051908082528060200260200182016040528015613a485781602001602082028036833780820191505090505b50905030815f81518110613a5f57613a5e614510565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b2791906149c5565b81600181518110613b3b57613b3a614510565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b7f3083610de0565b5060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613be2959493929190614aa7565b5f604051808303815f87803b158015613bf9575f80fd5b505af1158015613c0b573d5f803e3d5ffd5b505050505050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613c9996959493929190614aff565b60606040518083038185885af1158015613cb5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613cda9190614b5e565b5050505050565b5f8083118290613d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d1e9190613e55565b60405180910390fd5b505f8385613d3591906148f3565b9050809150509392505050565b5f819050919050565b613d5481613d42565b82525050565b5f602082019050613d6d5f830184613d4b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613d9c82613d73565b9050919050565b613dac81613d92565b82525050565b5f602082019050613dc55f830184613da3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613e02578082015181840152602081019050613de7565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613e2782613dcb565b613e318185613dd5565b9350613e41818560208601613de5565b613e4a81613e0d565b840191505092915050565b5f6020820190508181035f830152613e6d8184613e1d565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b613e8f81613d92565b8114613e99575f80fd5b50565b5f81359050613eaa81613e86565b92915050565b613eb981613d42565b8114613ec3575f80fd5b50565b5f81359050613ed481613eb0565b92915050565b5f8060408385031215613ef057613eef613e7e565b5b5f613efd85828601613e9c565b9250506020613f0e85828601613ec6565b9150509250929050565b5f8115159050919050565b613f2c81613f18565b82525050565b5f602082019050613f455f830184613f23565b92915050565b5f613f5582613d73565b9050919050565b613f6581613f4b565b8114613f6f575f80fd5b50565b5f81359050613f8081613f5c565b92915050565b5f60208284031215613f9b57613f9a613e7e565b5b5f613fa884828501613f72565b91505092915050565b5f805f60608486031215613fc857613fc7613e7e565b5b5f613fd586828701613e9c565b9350506020613fe686828701613e9c565b9250506040613ff786828701613ec6565b9150509250925092565b5f6020828403121561401657614015613e7e565b5b5f61402384828501613e9c565b91505092915050565b5f806040838503121561404257614041613e7e565b5b5f61404f85828601613ec6565b925050602061406085828601613ec6565b9150509250929050565b5f805f6060848603121561408157614080613e7e565b5b5f61408e86828701613ec6565b935050602061409f86828701613ec6565b92505060406140b086828701613ec6565b9150509250925092565b5f60ff82169050919050565b6140cf816140ba565b82525050565b5f6020820190506140e85f8301846140c6565b92915050565b6140f781613f18565b8114614101575f80fd5b50565b5f81359050614112816140ee565b92915050565b5f806040838503121561412e5761412d613e7e565b5b5f61413b85828601614104565b925050602061414c85828601613ec6565b9150509250929050565b5f819050919050565b5f61417961417461416f84613d73565b614156565b613d73565b9050919050565b5f61418a8261415f565b9050919050565b5f61419b82614180565b9050919050565b6141ab81614191565b82525050565b5f6020820190506141c45f8301846141a2565b92915050565b5f602082840312156141df576141de613e7e565b5b5f6141ec84828501613ec6565b91505092915050565b5f806040838503121561420b5761420a613e7e565b5b5f61421885828601613e9c565b925050602061422985828601614104565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61426d82613e0d565b810181811067ffffffffffffffff8211171561428c5761428b614237565b5b80604052505050565b5f61429e613e75565b90506142aa8282614264565b919050565b5f67ffffffffffffffff8211156142c9576142c8614237565b5b602082029050602081019050919050565b5f80fd5b5f6142f06142eb846142af565b614295565b90508083825260208201905060208402830185811115614313576143126142da565b5b835b8181101561433c57806143288882613e9c565b845260208401935050602081019050614315565b5050509392505050565b5f82601f83011261435a57614359614233565b5b813561436a8482602086016142de565b91505092915050565b5f6020828403121561438857614387613e7e565b5b5f82013567ffffffffffffffff8111156143a5576143a4613e82565b5b6143b184828501614346565b91505092915050565b5f80604083850312156143d0576143cf613e7e565b5b5f6143dd85828601613e9c565b92505060206143ee85828601613e9c565b9150509250929050565b5f6144028261415f565b9050919050565b5f614413826143f8565b9050919050565b61442381614409565b82525050565b5f60208201905061443c5f83018461441a565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614476602083613dd5565b915061448182614442565b602082019050919050565b5f6020820190508181035f8301526144a38161446a565b9050919050565b5f6040820190506144bd5f830185613d4b565b6144ca6020830184613d4b565b9392505050565b5f815190506144df81613eb0565b92915050565b5f602082840312156144fa576144f9613e7e565b5b5f614507848285016144d1565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614597602683613dd5565b91506145a28261453d565b604082019050919050565b5f6020820190508181035f8301526145c48161458b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61460282613d42565b915061460d83613d42565b9250828203905081811115614625576146246145cb565b5b92915050565b7f686f6c6420757220686f7273657320626967206775792e0000000000000000005f82015250565b5f61465f601783613dd5565b915061466a8261462b565b602082019050919050565b5f6020820190508181035f83015261468c81614653565b9050919050565b7f74780000000000000000000000000000000000000000000000000000000000005f82015250565b5f6146c7600283613dd5565b91506146d282614693565b602082019050919050565b5f6020820190508181035f8301526146f4816146bb565b9050919050565b7f77616c6c657400000000000000000000000000000000000000000000000000005f82015250565b5f61472f600683613dd5565b915061473a826146fb565b602082019050919050565b5f6020820190508181035f83015261475c81614723565b9050919050565b5f6040820190506147765f830185613da3565b6147836020830184613d4b565b9392505050565b5f819050919050565b5f6147ad6147a86147a38461478a565b614156565b613d42565b9050919050565b6147bd81614793565b82525050565b5f6040820190506147d65f830185613da3565b6147e360208301846147b4565b9392505050565b5f6147f482613d42565b91506147ff83613d42565b9250828201905080821115614817576148166145cb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614851601b83613dd5565b915061485c8261481d565b602082019050919050565b5f6020820190508181035f83015261487e81614845565b9050919050565b5f61488f82613d42565b915061489a83613d42565b92508282026148a881613d42565b915082820484148315176148bf576148be6145cb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6148fd82613d42565b915061490883613d42565b925082614918576149176148c6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61497d602183613dd5565b915061498882614923565b604082019050919050565b5f6020820190508181035f8301526149aa81614971565b9050919050565b5f815190506149bf81613e86565b92915050565b5f602082840312156149da576149d9613e7e565b5b5f6149e7848285016149b1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614a2281613d92565b82525050565b5f614a338383614a19565b60208301905092915050565b5f602082019050919050565b5f614a55826149f0565b614a5f81856149fa565b9350614a6a83614a0a565b805f5b83811015614a9a578151614a818882614a28565b9750614a8c83614a3f565b925050600181019050614a6d565b5085935050505092915050565b5f60a082019050614aba5f830188613d4b565b614ac760208301876147b4565b8181036040830152614ad98186614a4b565b9050614ae86060830185613da3565b614af56080830184613d4b565b9695505050505050565b5f60c082019050614b125f830189613da3565b614b1f6020830188613d4b565b614b2c60408301876147b4565b614b3960608301866147b4565b614b466080830185613da3565b614b5360a0830184613d4b565b979650505050505050565b5f805f60608486031215614b7557614b74613e7e565b5b5f614b82868287016144d1565b9350506020614b93868287016144d1565b9250506040614ba4868287016144d1565b915050925092509256fea264697066735822122099443fca33098a3143e0030ff01b3c8d43dc09e4acac675a0028bb833ee79e5064736f6c6343000817003360806040526ec097ce7bc90715b34b9f1000000000600b55610258600c555f600d5534801561002c575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738390a1da07e376ef7add4be859ba74fb83aa02d560015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611df4806101215f395ff3fe608060405260043610610101575f3560e01c80638c21cd5211610094578063d0e30db011610063578063d0e30db01461033e578063e2d2e21914610348578063efca2eed14610372578063ffb2c4791461039c578063ffd49c84146103c457610110565b80638c21cd5214610272578063997664d7146102ae578063bd14ae27146102d8578063ce7c2ac21461030057610110565b806328fd3198116100d057806328fd3198146101ba5780632d48e896146101f65780633a98ef391461021e5780634fab0ae81461024857610110565b806305efa0571461011457806311ce023d1461013e57806314b6ca961461016857806326987b601461019057610110565b366101105761010e6103ee565b005b5f80fd5b34801561011f575f80fd5b506101286107c2565b6040516101359190611606565b60405180910390f35b348015610149575f80fd5b506101526107e7565b60405161015f9190611637565b60405180910390f35b348015610173575f80fd5b5061018e600480360381019061018991906116a8565b6107ed565b005b34801561019b575f80fd5b506101a4610a91565b6040516101b19190611637565b60405180910390f35b3480156101c5575f80fd5b506101e060048036038101906101db91906116e6565b610a97565b6040516101ed9190611637565b60405180910390f35b348015610201575f80fd5b5061021c60048036038101906102179190611711565b610ba3565b005b348015610229575f80fd5b50610232610c0b565b60405161023f9190611637565b60405180910390f35b348015610253575f80fd5b5061025c610c11565b6040516102699190611637565b60405180910390f35b34801561027d575f80fd5b50610298600480360381019061029391906116e6565b610c17565b6040516102a59190611769565b60405180910390f35b3480156102b9575f80fd5b506102c2610c81565b6040516102cf9190611637565b60405180910390f35b3480156102e3575f80fd5b506102fe60048036038101906102f991906116e6565b610c87565b005b34801561030b575f80fd5b50610326600480360381019061032191906116e6565b610ce9565b60405161033593929190611782565b60405180910390f35b6103466103ee565b005b348015610353575f80fd5b5061035c610d0f565b6040516103699190611637565b60405180910390f35b34801561037d575f80fd5b50610386610d15565b6040516103939190611637565b60405180910390f35b3480156103a7575f80fd5b506103c260048036038101906103bd91906117b7565b610d1b565b005b3480156103cf575f80fd5b506103d8610e4a565b6040516103e59190611637565b60405180910390f35b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104499190611606565b602060405180830381865afa158015610464573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048891906117f6565b90505f600267ffffffffffffffff8111156104a6576104a5611821565b5b6040519080825280602002602001820160405280156104d45781602001602082028036833780820191505090505b50905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610541573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105659190611862565b815f815181106105785761057761188d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106105e8576105e761188d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95345f8430426040518663ffffffff1660e01b815260040161068394939291906119b3565b5f604051808303818588803b15801561069a575f80fd5b505af11580156106ac573d5f803e3d5ffd5b50505050505f61075d8360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107109190611606565b602060405180830381865afa15801561072b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f91906117f6565b610e5090919063ffffffff16565b905061077481600854610e9990919063ffffffff16565b6008819055506107b76107a660075461079884600b54610ef690919063ffffffff16565b610f6d90919063ffffffff16565b600a54610e9990919063ffffffff16565b600a81905550505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610843575f80fd5b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015411156108945761089382610fb6565b5b5f811180156108e157505f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154145b156108f4576108ef82611234565b610951565b5f8114801561094157505f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154115b156109505761094f826112de565b5b5b6109b7816109a960065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154600754610e5090919063ffffffff16565b610e9990919063ffffffff16565b6007819055508060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0181905550610a4960065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01546114d3565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505050565b600e5481565b5f8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015403610ae6575f9050610b9e565b5f610b2f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01546114d3565b90505f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101549050808211610b86575f92505050610b9e565b610b998183610e5090919063ffffffff16565b925050505b919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf9575f80fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b5f42600c5460055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c649190611a2a565b108015610c7a5750600d54610c7883610a97565b115b9050919050565b60085481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cdd575f80fd5b610ce681610fb6565b50565b6006602052805f5260405f205f91509050805f0154908060010154908060020154905083565b600a5481565b60095481565b5f60038054905090505f8103610d315750610e47565b5f805f5a90505b8482108015610d4657508383105b15610e425783600e5410610d5c575f600e819055505b610da26003600e5481548110610d7557610d7461188d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c17565b15610dee57610ded6003600e5481548110610dc057610dbf61188d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610fb6565b5b610e13610e045a83610e5090919063ffffffff16565b83610e9990919063ffffffff16565b91505a9050600e5f815480929190610e2a90611a5d565b91905055508280610e3a90611a5d565b935050610d38565b505050505b50565b600c5481565b5f610e9183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611504565b905092915050565b5f808284610ea79190611a2a565b905083811015610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee390611afe565b60405180910390fd5b8091505092915050565b5f808303610f06575f9050610f67565b5f8284610f139190611b1c565b9050828482610f229190611b8a565b14610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5990611c2a565b60405180910390fd5b809150505b92915050565b5f610fae83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611566565b905092915050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01540315611231575f61100782610a97565b90505f81111561122f5761102681600954610e9990919063ffffffff16565b60098190555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611088929190611c48565b6020604051808303815f875af11580156110a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c89190611c99565b504260055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061115e8160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020154610e9990919063ffffffff16565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201819055506111ea60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01546114d3565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505b505b50565b60038054905060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600381908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490506112f29190611cc4565b815481106113035761130261188d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548154811061137c5761137b61188d565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460045f600360016003805490506114169190611cc4565b815481106114275761142661188d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600380548061149e5761149d611cf7565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b5f6114fd600b546114ef600a5485610ef690919063ffffffff16565b610f6d90919063ffffffff16565b9050919050565b5f83831115829061154b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115429190611d9e565b60405180910390fd5b505f83856115599190611cc4565b9050809150509392505050565b5f80831182906115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a39190611d9e565b60405180910390fd5b505f83856115ba9190611b8a565b9050809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115f0826115c7565b9050919050565b611600816115e6565b82525050565b5f6020820190506116195f8301846115f7565b92915050565b5f819050919050565b6116318161161f565b82525050565b5f60208201905061164a5f830184611628565b92915050565b5f80fd5b61165d816115e6565b8114611667575f80fd5b50565b5f8135905061167881611654565b92915050565b6116878161161f565b8114611691575f80fd5b50565b5f813590506116a28161167e565b92915050565b5f80604083850312156116be576116bd611650565b5b5f6116cb8582860161166a565b92505060206116dc85828601611694565b9150509250929050565b5f602082840312156116fb576116fa611650565b5b5f6117088482850161166a565b91505092915050565b5f806040838503121561172757611726611650565b5b5f61173485828601611694565b925050602061174585828601611694565b9150509250929050565b5f8115159050919050565b6117638161174f565b82525050565b5f60208201905061177c5f83018461175a565b92915050565b5f6060820190506117955f830186611628565b6117a26020830185611628565b6117af6040830184611628565b949350505050565b5f602082840312156117cc576117cb611650565b5b5f6117d984828501611694565b91505092915050565b5f815190506117f08161167e565b92915050565b5f6020828403121561180b5761180a611650565b5b5f611818848285016117e2565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061185c81611654565b92915050565b5f6020828403121561187757611876611650565b5b5f6118848482850161184e565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f6118e66118e16118dc846118ba565b6118c3565b61161f565b9050919050565b6118f6816118cc565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61192e816115e6565b82525050565b5f61193f8383611925565b60208301905092915050565b5f602082019050919050565b5f611961826118fc565b61196b8185611906565b935061197683611916565b805f5b838110156119a657815161198d8882611934565b97506119988361194b565b925050600181019050611979565b5085935050505092915050565b5f6080820190506119c65f8301876118ed565b81810360208301526119d88186611957565b90506119e760408301856115f7565b6119f46060830184611628565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a348261161f565b9150611a3f8361161f565b9250828201905080821115611a5757611a566119fd565b5b92915050565b5f611a678261161f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a9957611a986119fd565b5b600182019050919050565b5f82825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f611ae8601b83611aa4565b9150611af382611ab4565b602082019050919050565b5f6020820190508181035f830152611b1581611adc565b9050919050565b5f611b268261161f565b9150611b318361161f565b9250828202611b3f8161161f565b91508282048414831517611b5657611b556119fd565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611b948261161f565b9150611b9f8361161f565b925082611baf57611bae611b5d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f611c14602183611aa4565b9150611c1f82611bba565b604082019050919050565b5f6020820190508181035f830152611c4181611c08565b9050919050565b5f604082019050611c5b5f8301856115f7565b611c686020830184611628565b9392505050565b611c788161174f565b8114611c82575f80fd5b50565b5f81519050611c9381611c6f565b92915050565b5f60208284031215611cae57611cad611650565b5b5f611cbb84828501611c85565b91505092915050565b5f611cce8261161f565b9150611cd98361161f565b9250828203905081811115611cf157611cf06119fd565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f81519050919050565b5f5b83811015611d4b578082015181840152602081019050611d30565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611d7082611d24565b611d7a8185611aa4565b9350611d8a818560208601611d2e565b611d9381611d56565b840191505092915050565b5f6020820190508181035f830152611db68184611d66565b90509291505056fea2646970667358221220c924e0dab7d3ac9ffbd2fa4cd92d7c81f59869f5724a4540ae35238e4b45e5c064736f6c63430008170033

Deployed Bytecode

0x60806040526004361061038f575f3560e01c806377359aa7116101db578063bb542ef011610101578063d920334e1161009f578063f887ea401161006e578063f887ea4014610cd2578063f8b45b0514610cfc578063fabe628314610d26578063ffb54a9914610d4e57610396565b8063d920334e14610c1e578063dd62ed3e14610c46578063f2fde38b14610c82578063f708a64f14610caa57610396565b8063c45a0155116100db578063c45a015514610b8a578063c8d1293d14610bb4578063c9567bf914610bde578063caa5581b14610bf457610396565b8063bb542ef014610b0e578063bf56b37114610b36578063c2c3952d14610b6057610396565b80638b42507f11610179578063a3a2e89e11610148578063a3a2e89e14610a58578063a8aa1b3114610a80578063a9059cbb14610aaa578063b515566a14610ae657610396565b80638b42507f1461099e5780638da5cb5b146109da5780638ea5220f14610a0457806395d89b4114610a2e57610396565b80637f058804116101b55780637f05880414610920578063819340311461093657806389291a8f1461095e578063893d20e81461097457610396565b806377359aa7146108925780637db1342c146108ce5780637dfcbe34146108f657610396565b80633dab5269116102c0578063558da3d31161025e57806370a082311161022d57806370a08231146107ec578063715018a6146108285780637437681e1461083e57806375df13051461086857610396565b8063558da3d314610748578063571ac8b0146107705780636303516c146107ac57806366eb3785146107d657610396565b8063454343771161029a57806345434377146106a057806347062402146106ca5780634a74bb02146106f4578063538b1bea1461071e57610396565b80633dab5269146106005780633f4218e0146106285780634355855a1461066457610396565b8063273123b71161032d5780632d48e896116103075780632d48e8961461055e5780632dbea2e11461058657806330ca34ee146105ae578063313ce567146105d657610396565b8063273123b7146104e25780632b112e491461050a5780632b14ca561461053457610396565b8063095ea7b311610369578063095ea7b31461041857806318160ddd146104545780631f53ac021461047e57806323b872dd146104a657610396565b80630445b6671461039a57806305efa057146103c457806306fdde03146103ee57610396565b3661039657005b5f80fd5b3480156103a5575f80fd5b506103ae610d78565b6040516103bb9190613d5a565b60405180910390f35b3480156103cf575f80fd5b506103d8610d7e565b6040516103e59190613db2565b60405180910390f35b3480156103f9575f80fd5b50610402610da3565b60405161040f9190613e55565b60405180910390f35b348015610423575f80fd5b5061043e60048036038101906104399190613eda565b610de0565b60405161044b9190613f32565b60405180910390f35b34801561045f575f80fd5b50610468610ecd565b6040516104759190613d5a565b60405180910390f35b348015610489575f80fd5b506104a4600480360381019061049f9190613f86565b610ed6565b005b3480156104b1575f80fd5b506104cc60048036038101906104c79190613fb1565b610fad565b6040516104d99190613f32565b60405180910390f35b3480156104ed575f80fd5b5061050860048036038101906105039190614001565b6111a0565b005b348015610515575f80fd5b5061051e61128b565b60405161052b9190613d5a565b60405180910390f35b34801561053f575f80fd5b5061054861130a565b6040516105559190613d5a565b60405180910390f35b348015610569575f80fd5b50610584600480360381019061057f919061402c565b611310565b005b348015610591575f80fd5b506105ac60048036038101906105a7919061406a565b611431565b005b3480156105b9575f80fd5b506105d460048036038101906105cf919061402c565b6114df565b005b3480156105e1575f80fd5b506105ea611585565b6040516105f791906140d5565b60405180910390f35b34801561060b575f80fd5b5061062660048036038101906106219190614118565b61158d565b005b348015610633575f80fd5b5061064e60048036038101906106499190614001565b611646565b60405161065b9190613f32565b60405180910390f35b34801561066f575f80fd5b5061068a60048036038101906106859190614001565b611663565b6040516106979190613f32565b60405180910390f35b3480156106ab575f80fd5b506106b4611680565b6040516106c19190613d5a565b60405180910390f35b3480156106d5575f80fd5b506106de611686565b6040516106eb9190613d5a565b60405180910390f35b3480156106ff575f80fd5b5061070861168c565b6040516107159190613f32565b60405180910390f35b348015610729575f80fd5b5061073261169f565b60405161073f91906141b1565b60405180910390f35b348015610753575f80fd5b5061076e600480360381019061076991906141ca565b6116c4565b005b34801561077b575f80fd5b5061079660048036038101906107919190614001565b611762565b6040516107a39190613f32565b60405180910390f35b3480156107b7575f80fd5b506107c0611794565b6040516107cd9190613db2565b60405180910390f35b3480156107e1575f80fd5b506107ea6117b9565b005b3480156107f7575f80fd5b50610812600480360381019061080d9190614001565b611857565b60405161081f9190613d5a565b60405180910390f35b348015610833575f80fd5b5061083c61189d565b005b348015610849575f80fd5b506108526119eb565b60405161085f9190613d5a565b60405180910390f35b348015610873575f80fd5b5061087c6119f1565b6040516108899190613d5a565b60405180910390f35b34801561089d575f80fd5b506108b860048036038101906108b39190614001565b6119f7565b6040516108c59190613d5a565b60405180910390f35b3480156108d9575f80fd5b506108f460048036038101906108ef91906141ca565b611a98565b005b348015610901575f80fd5b5061090a611b36565b6040516109179190613f32565b60405180910390f35b34801561092b575f80fd5b50610934611b49565b005b348015610941575f80fd5b5061095c600480360381019061095791906141ca565b611bd2565b005b348015610969575f80fd5b50610972611cf0565b005b34801561097f575f80fd5b50610988611df9565b6040516109959190613db2565b60405180910390f35b3480156109a9575f80fd5b506109c460048036038101906109bf9190614001565b611e07565b6040516109d19190613f32565b60405180910390f35b3480156109e5575f80fd5b506109ee611e24565b6040516109fb9190613db2565b60405180910390f35b348015610a0f575f80fd5b50610a18611e4b565b604051610a259190613db2565b60405180910390f35b348015610a39575f80fd5b50610a42611e70565b604051610a4f9190613e55565b60405180910390f35b348015610a63575f80fd5b50610a7e6004803603810190610a7991906141f5565b611ead565b005b348015610a8b575f80fd5b50610a94611f99565b604051610aa19190613db2565b60405180910390f35b348015610ab5575f80fd5b50610ad06004803603810190610acb9190613eda565b611fbe565b604051610add9190613f32565b60405180910390f35b348015610af1575f80fd5b50610b0c6004803603810190610b079190614373565b611fd2565b005b348015610b19575f80fd5b50610b346004803603810190610b2f9190613f86565b6120f1565b005b348015610b41575f80fd5b50610b4a6121c8565b604051610b579190613d5a565b60405180910390f35b348015610b6b575f80fd5b50610b746121ce565b604051610b819190613d5a565b60405180910390f35b348015610b95575f80fd5b50610b9e6121d4565b604051610bab9190613db2565b60405180910390f35b348015610bbf575f80fd5b50610bc86121f9565b604051610bd59190613d5a565b60405180910390f35b348015610be9575f80fd5b50610bf26121ff565b005b348015610bff575f80fd5b50610c086122b7565b604051610c159190613d5a565b60405180910390f35b348015610c29575f80fd5b50610c446004803603810190610c3f91906141ca565b6122bd565b005b348015610c51575f80fd5b50610c6c6004803603810190610c6791906143ba565b61235b565b604051610c799190613d5a565b60405180910390f35b348015610c8d575f80fd5b50610ca86004803603810190610ca39190614001565b6123dd565b005b348015610cb5575f80fd5b50610cd06004803603810190610ccb91906141f5565b61259a565b005b348015610cdd575f80fd5b50610ce661263c565b604051610cf39190614429565b60405180910390f35b348015610d07575f80fd5b50610d10612661565b604051610d1d9190613d5a565b60405180910390f35b348015610d31575f80fd5b50610d4c6004803603810190610d4791906141f5565b612667565b005b348015610d59575f80fd5b50610d62612753565b604051610d6f9190613f32565b60405180910390f35b601e5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280601981526020017f47524f4b52525252525252525252525252525252525252525200000000000000815250905090565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ebb9190613d5a565b60405180910390a36001905092915050565b5f600254905090565b610ede612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f619061448c565b60405180910390fd5b8060195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461118c5761110f826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276d9092919063ffffffff16565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6111978484846127cf565b90509392505050565b6111a8612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b9061448c565b60405180910390fd5b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f6113056112b960085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611857565b6112f76112e660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611857565b60025461307a90919063ffffffff16565b61307a90919063ffffffff16565b905090565b60105481565b611318612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b9061448c565b60405180910390fd5b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004016114009291906144aa565b5f604051808303815f87803b158015611417575f80fd5b505af1158015611429573d5f803e3d5ffd5b505050505050565b611439612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc9061448c565b60405180910390fd5b826011819055508160128190555080601381905550505050565b6114e7612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a9061448c565b60405180910390fd5b81600f81905550806010819055505050565b5f6012905090565b611595612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116189061448c565b60405180910390fd5b81601960156101000a81548160ff02191690831515021790555080601e819055505050565b600a602052805f5260405f205f915054906101000a900460ff1681565b600c602052805f5260405f205f915054906101000a900460ff1681565b60145481565b600f5481565b601960159054906101000a900460ff1681565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116cc612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f9061448c565b60405180910390fd5b80601b8190555050565b5f61178d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610de0565b9050919050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117c1612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118449061448c565b60405180910390fd5b6118556130c3565b565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6118a5612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611931576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119289061448c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c5481565b60135481565b5f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401611a529190613db2565b602060405180830381865afa158015611a6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9191906144e5565b9050919050565b611aa0612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b239061448c565b60405180910390fd5b80601d8190555050565b600860149054906101000a900460ff1681565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd14ae27336040518263ffffffff1660e01b8152600401611ba39190613db2565b5f604051808303815f87803b158015611bba575f80fd5b505af1158015611bcc573d5f803e3d5ffd5b50505050565b611bda612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5d9061448c565b60405180910390fd5b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611cc09190613d5a565b5f604051808303815f87803b158015611cd7575f80fd5b505af1158015611ce9573d5f803e3d5ffd5b5050505050565b611cf8612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b9061448c565b60405180910390fd5b5f4790505f811115611df65760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611df4573d5f803e3d5ffd5b505b50565b5f611e02611e24565b905090565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f47524f4b52000000000000000000000000000000000000000000000000000000815250905090565b611eb5612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f389061448c565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611fca3384846127cf565b905092915050565b611fda612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d9061448c565b60405180910390fd5b5f5b81518110156120ed57600160095f84848151811061208957612088614510565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050612068565b5050565b6120f9612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217c9061448c565b60405180910390fd5b8060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b601b5481565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b612207612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228a9061448c565b60405180910390fd5b43600d819055506001601960166101000a81548160ff021916908315150217905550565b60115481565b6122c5612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123489061448c565b60405180910390fd5b80601c8190555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6123e5612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124689061448c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d6906145ad565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125a2612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461262e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126259061448c565b60405180910390fd5b6126388282613332565b5050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b61266f612766565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f29061448c565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601960169054906101000a900460ff1681565b5f33905090565b5f8383111582906127b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ab9190613e55565b60405180910390fd5b505f83856127c291906145f8565b9050809150509392505050565b5f6127d8611e24565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156128465750612816611e24565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561289b57601960169054906101000a900460ff1661289a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289190614675565b60405180910390fd5b5b60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612939575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612941575f80fd5b601960149054906101000a900460ff161561296857612961848484613576565b9050613073565b601c54821115806129bf5750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6129fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f5906146dd565b60405180910390fd5b600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612a615750600860149054906101000a900460ff165b15612afb57601d54612ab98360035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461374090919063ffffffff16565b1115612afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af190614745565b60405180910390fd5b5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b655750601960149054906101000a900460ff16155b8015612b7d5750601960159054906101000a900460ff165b8015612bc85750601e5460035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b15612bd657612bd56130c3565b5b612c5d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276d9092919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612d3d5750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612d475782612d53565b612d5285858561379d565b5b9050612da58160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461374090919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612ef757601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968660035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b8152600401612ecd929190614763565b5f604051808303815f87803b158015612ee4575f80fd5b505af1925050508015612ef5575060015b505b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661300857601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968560035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b8152600401612fde929190614763565b5f604051808303815f87803b158015612ff5575f80fd5b505af1925050508015613006575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130659190613d5a565b60405180910390a360019150505b9392505050565b5f6130bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061276d565b905092915050565b6001601960146101000a81548160ff0219169083151502179055505f60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f61315b600261314d606461313f6012548761393e90919063ffffffff16565b6139b590919063ffffffff16565b6139b590919063ffffffff16565b90505f613171828461307a90919063ffffffff16565b905061317c816139fe565b5f4790505f6131a9606461319b6011548561393e90919063ffffffff16565b6139b590919063ffffffff16565b90505f6131d460646131c66013548661393e90919063ffffffff16565b6139b590919063ffffffff16565b90505f613212600261320460646131f66012548961393e90919063ffffffff16565b6139b590919063ffffffff16565b6139b590919063ffffffff16565b90505f8411156132825760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015613280573d5f803e3d5ffd5b505b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b1580156132e9575f80fd5b505af1935050505080156132fb575060015b505f86111561330f5761330e8682613c13565b5b505050505050505f601960146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156133bb575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6133c3575f80fd5b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080156134ab57601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96835f6040518363ffffffff1660e01b81526004016134799291906147c3565b5f604051808303815f87803b158015613490575f80fd5b505af11580156134a2573d5f803e3d5ffd5b50505050613572565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b8152600401613544929190614763565b5f604051808303815f87803b15801561355b575f80fd5b505af115801561356d573d5f803e3d5ffd5b505050505b5050565b5f6135fe826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276d9092919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061368f8260035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461374090919063ffffffff16565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161372d9190613d5a565b60405180910390a3600190509392505050565b5f80828461374e91906147ea565b905083811015613793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378a90614867565b60405180910390fd5b8091505092915050565b5f808373ffffffffffffffffffffffffffffffffffffffff1660165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146137fb57600f546137ff565b6010545b90505f613828606461381a848761393e90919063ffffffff16565b6139b590919063ffffffff16565b905061387a8160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461374090919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139189190613d5a565b60405180910390a3613933818561307a90919063ffffffff16565b925050509392505050565b5f80830361394e575f90506139af565b5f828461395b9190614885565b905082848261396a91906148f3565b146139aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139a190614993565b60405180910390fd5b809150505b92915050565b5f6139f683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ce1565b905092915050565b5f600267ffffffffffffffff811115613a1a57613a19614237565b5b604051908082528060200260200182016040528015613a485781602001602082028036833780820191505090505b50905030815f81518110613a5f57613a5e614510565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b2791906149c5565b81600181518110613b3b57613b3a614510565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b7f3083610de0565b5060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613be2959493929190614aa7565b5f604051808303815f87803b158015613bf9575f80fd5b505af1158015613c0b573d5f803e3d5ffd5b505050505050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613c9996959493929190614aff565b60606040518083038185885af1158015613cb5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613cda9190614b5e565b5050505050565b5f8083118290613d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d1e9190613e55565b60405180910390fd5b505f8385613d3591906148f3565b9050809150509392505050565b5f819050919050565b613d5481613d42565b82525050565b5f602082019050613d6d5f830184613d4b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613d9c82613d73565b9050919050565b613dac81613d92565b82525050565b5f602082019050613dc55f830184613da3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613e02578082015181840152602081019050613de7565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613e2782613dcb565b613e318185613dd5565b9350613e41818560208601613de5565b613e4a81613e0d565b840191505092915050565b5f6020820190508181035f830152613e6d8184613e1d565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b613e8f81613d92565b8114613e99575f80fd5b50565b5f81359050613eaa81613e86565b92915050565b613eb981613d42565b8114613ec3575f80fd5b50565b5f81359050613ed481613eb0565b92915050565b5f8060408385031215613ef057613eef613e7e565b5b5f613efd85828601613e9c565b9250506020613f0e85828601613ec6565b9150509250929050565b5f8115159050919050565b613f2c81613f18565b82525050565b5f602082019050613f455f830184613f23565b92915050565b5f613f5582613d73565b9050919050565b613f6581613f4b565b8114613f6f575f80fd5b50565b5f81359050613f8081613f5c565b92915050565b5f60208284031215613f9b57613f9a613e7e565b5b5f613fa884828501613f72565b91505092915050565b5f805f60608486031215613fc857613fc7613e7e565b5b5f613fd586828701613e9c565b9350506020613fe686828701613e9c565b9250506040613ff786828701613ec6565b9150509250925092565b5f6020828403121561401657614015613e7e565b5b5f61402384828501613e9c565b91505092915050565b5f806040838503121561404257614041613e7e565b5b5f61404f85828601613ec6565b925050602061406085828601613ec6565b9150509250929050565b5f805f6060848603121561408157614080613e7e565b5b5f61408e86828701613ec6565b935050602061409f86828701613ec6565b92505060406140b086828701613ec6565b9150509250925092565b5f60ff82169050919050565b6140cf816140ba565b82525050565b5f6020820190506140e85f8301846140c6565b92915050565b6140f781613f18565b8114614101575f80fd5b50565b5f81359050614112816140ee565b92915050565b5f806040838503121561412e5761412d613e7e565b5b5f61413b85828601614104565b925050602061414c85828601613ec6565b9150509250929050565b5f819050919050565b5f61417961417461416f84613d73565b614156565b613d73565b9050919050565b5f61418a8261415f565b9050919050565b5f61419b82614180565b9050919050565b6141ab81614191565b82525050565b5f6020820190506141c45f8301846141a2565b92915050565b5f602082840312156141df576141de613e7e565b5b5f6141ec84828501613ec6565b91505092915050565b5f806040838503121561420b5761420a613e7e565b5b5f61421885828601613e9c565b925050602061422985828601614104565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61426d82613e0d565b810181811067ffffffffffffffff8211171561428c5761428b614237565b5b80604052505050565b5f61429e613e75565b90506142aa8282614264565b919050565b5f67ffffffffffffffff8211156142c9576142c8614237565b5b602082029050602081019050919050565b5f80fd5b5f6142f06142eb846142af565b614295565b90508083825260208201905060208402830185811115614313576143126142da565b5b835b8181101561433c57806143288882613e9c565b845260208401935050602081019050614315565b5050509392505050565b5f82601f83011261435a57614359614233565b5b813561436a8482602086016142de565b91505092915050565b5f6020828403121561438857614387613e7e565b5b5f82013567ffffffffffffffff8111156143a5576143a4613e82565b5b6143b184828501614346565b91505092915050565b5f80604083850312156143d0576143cf613e7e565b5b5f6143dd85828601613e9c565b92505060206143ee85828601613e9c565b9150509250929050565b5f6144028261415f565b9050919050565b5f614413826143f8565b9050919050565b61442381614409565b82525050565b5f60208201905061443c5f83018461441a565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614476602083613dd5565b915061448182614442565b602082019050919050565b5f6020820190508181035f8301526144a38161446a565b9050919050565b5f6040820190506144bd5f830185613d4b565b6144ca6020830184613d4b565b9392505050565b5f815190506144df81613eb0565b92915050565b5f602082840312156144fa576144f9613e7e565b5b5f614507848285016144d1565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614597602683613dd5565b91506145a28261453d565b604082019050919050565b5f6020820190508181035f8301526145c48161458b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61460282613d42565b915061460d83613d42565b9250828203905081811115614625576146246145cb565b5b92915050565b7f686f6c6420757220686f7273657320626967206775792e0000000000000000005f82015250565b5f61465f601783613dd5565b915061466a8261462b565b602082019050919050565b5f6020820190508181035f83015261468c81614653565b9050919050565b7f74780000000000000000000000000000000000000000000000000000000000005f82015250565b5f6146c7600283613dd5565b91506146d282614693565b602082019050919050565b5f6020820190508181035f8301526146f4816146bb565b9050919050565b7f77616c6c657400000000000000000000000000000000000000000000000000005f82015250565b5f61472f600683613dd5565b915061473a826146fb565b602082019050919050565b5f6020820190508181035f83015261475c81614723565b9050919050565b5f6040820190506147765f830185613da3565b6147836020830184613d4b565b9392505050565b5f819050919050565b5f6147ad6147a86147a38461478a565b614156565b613d42565b9050919050565b6147bd81614793565b82525050565b5f6040820190506147d65f830185613da3565b6147e360208301846147b4565b9392505050565b5f6147f482613d42565b91506147ff83613d42565b9250828201905080821115614817576148166145cb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614851601b83613dd5565b915061485c8261481d565b602082019050919050565b5f6020820190508181035f83015261487e81614845565b9050919050565b5f61488f82613d42565b915061489a83613d42565b92508282026148a881613d42565b915082820484148315176148bf576148be6145cb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6148fd82613d42565b915061490883613d42565b925082614918576149176148c6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61497d602183613dd5565b915061498882614923565b604082019050919050565b5f6020820190508181035f8301526149aa81614971565b9050919050565b5f815190506149bf81613e86565b92915050565b5f602082840312156149da576149d9613e7e565b5b5f6149e7848285016149b1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614a2281613d92565b82525050565b5f614a338383614a19565b60208301905092915050565b5f602082019050919050565b5f614a55826149f0565b614a5f81856149fa565b9350614a6a83614a0a565b805f5b83811015614a9a578151614a818882614a28565b9750614a8c83614a3f565b925050600181019050614a6d565b5085935050505092915050565b5f60a082019050614aba5f830188613d4b565b614ac760208301876147b4565b8181036040830152614ad98186614a4b565b9050614ae86060830185613da3565b614af56080830184613d4b565b9695505050505050565b5f60c082019050614b125f830189613da3565b614b1f6020830188613d4b565b614b2c60408301876147b4565b614b3960608301866147b4565b614b466080830185613da3565b614b5360a0830184613d4b565b979650505050505050565b5f805f60608486031215614b7557614b74613e7e565b5b5f614b82868287016144d1565b9350506020614b93868287016144d1565b9250506040614ba4868287016144d1565b915050925092509256fea264697066735822122099443fca33098a3143e0030ff01b3c8d43dc09e4acac675a0028bb833ee79e5064736f6c63430008170033

Deployed Bytecode Sourcemap

14425:11912:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16345:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14510:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20411:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20839:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20141:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18584:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21353:366;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19266:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19991:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15511:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19056:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17850:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17684:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20235:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18849:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15243:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15349:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15664:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15478:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15941:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16032:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19857:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21063:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15439:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25636:74;;;;;;;;;;;;;:::i;:::-;;20583:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6505:148;;;;;;;;;;;;;:::i;:::-;;16241:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15624:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26084:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18194:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15162:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26250:84;;;;;;;;;;;;;:::i;:::-;;25959:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25718:233;;;;;;;;;;;;;:::i;:::-;;20497:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15294:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6291:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15826:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20321:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18310:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15738:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21193:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17337:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18715:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15407:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16077:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15764:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15587:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17555:115;;;;;;;;;;;;;:::i;:::-;;15547:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18091:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20694:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6661:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19717:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15707:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16291:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18440:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15988:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16345:52;;;;:::o;14510:64::-;;;;;;;;;;;;;:::o;20411:80::-;20459:13;20483:5;;;;;;;;;;;;;;;;;20476:12;;20411:80;:::o;20839:216::-;20914:4;20966:6;20931:11;:23;20943:10;20931:23;;;;;;;;;;;;;;;:32;20955:7;20931:32;;;;;;;;;;;;;;;:41;;;;21009:7;20988:37;;20997:10;20988:37;;;21018:6;20988:37;;;;;;:::i;:::-;;;;;;;;21043:4;21036:11;;20839:216;;;;:::o;20141:88::-;20196:7;20214:12;;20207:19;;20141:88;:::o;18584:123::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18686:12:::1;18666:9;;:33;;;;;;;;;;;;;;;;;;18584:123:::0;:::o;21353:366::-;21453:4;21508:17;21473:11;:19;21485:6;21473:19;;;;;;;;;;;;;;;:31;21493:10;21473:31;;;;;;;;;;;;;;;;:52;21470:186;;21575:69;21611:6;21575:69;;;;;;;;;;;;;;;;;:11;:19;21587:6;21575:19;;;;;;;;;;;;;;;:31;21595:10;21575:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;21541:11;:19;21553:6;21541:19;;;;;;;;;;;;;;;:31;21561:10;21541:31;;;;;;;;;;;;;;;:103;;;;21470:186;21675:36;21685:6;21693:9;21704:6;21675:9;:36::i;:::-;21668:43;;21353:366;;;;;:::o;19266:90::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19343:5:::1;19328:4;:12;19333:6;19328:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;19266:90:::0;:::o;19991:142::-;20044:7;20071:54;20109:15;20119:4;;;;;;;;;;;20109:9;:15::i;:::-;20071:33;20088:15;20098:4;;;;;;;;;;;20088:9;:15::i;:::-;20071:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;20064:61;;19991:142;:::o;15511:27::-;;;;:::o;19056:202::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19169:15:::1;;;;;;;;;;;:39;;;19209:12;19223:18;19169:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19056:202:::0;;:::o;17850:233::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17990:12:::1;17974:13;:28;;;;18027:8;18013:11;:22;;;;18060:15;18046:11;:29;;;;17850:233:::0;;;:::o;17684:153::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17789:9:::1;17780:6;:18;;;;17819:10;17809:7;:20;;;;17684:153:::0;;:::o;20235:80::-;20287:5;14742:2;20296:16;;20235:80;:::o;18849:199::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18983:14:::1;18958:21;;:39;;;;;;;;;;;;;;;;;;19024:16;19008:13;:32;;;;18849:199:::0;;:::o;15243:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;15349:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;15664:34::-;;;;:::o;15478:26::-;;;;:::o;15941:40::-;;;;;;;;;;;;;:::o;16032:38::-;;;;;;;;;;;;;:::o;19857:115::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19958:6:::1;19937:18;:27;;;;19857:115:::0;:::o;21063:122::-;21118:4;21142:35;21150:7;21159:17;21142:7;:35::i;:::-;21135:42;;21063:122;;;:::o;15439:30::-;;;;;;;;;;;;;:::o;25636:74::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25692:10:::1;:8;:10::i;:::-;25636:74::o:0;20583:105::-;20649:7;20667:9;:18;20677:7;20667:18;;;;;;;;;;;;;;;;20660:25;;20583:105;;;:::o;6505:148::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6612:1:::1;6575:40;;6596:6;::::0;::::1;;;;;;;;6575:40;;;;;;;;;;;;6643:1;6626:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6505:148::o:0;16241:43::-;;;;:::o;15624:31::-;;;;:::o;26084:158::-;26161:7;26188:15;;;;;;;;;;;:33;;;26222:11;26188:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26181:53;;26084:158;;;:::o;18194:104::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18282:8:::1;18269:9;:21;;;;18194:104:::0;:::o;15162:26::-;;;;;;;;;;;;;:::o;26250:84::-;26289:15;;;;;;;;;;;:25;;;26315:10;26289:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26250:84::o;25959:117::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26034:15:::1;;;;;;;;;;;:23;;;26058:9;26034:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25959:117:::0;:::o;25718:233::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25773:26:::1;25802:21;25773:50;;25858:1;25837:18;:22;25834:110;;;25893:9;;;;;;;;;;;25885:27;;:47;25913:18;25885:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25834:110;25762:189;25718:233::o:0;20497:80::-;20549:7;20567;:5;:7::i;:::-;20560:14;;20497:80;:::o;15294:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;6291:79::-;6329:7;6356:6;;;;;;;;;;;6349:13;;6291:79;:::o;15826:78::-;;;;;;;;;;;;;:::o;20321:84::-;20371:13;20395:7;;;;;;;;;;;;;;;;;20388:14;;20321:84;:::o;18310:122::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18418:6:::1;18396:11;:19;18408:6;18396:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18310:122:::0;;:::o;15738:19::-;;;;;;;;;;;;;:::o;21193:152::-;21273:4;21297:40;21307:10;21319:9;21330:6;21297:9;:40::i;:::-;21290:47;;21193:152;;;;:::o;17337:166::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17413:6:::1;17408:88;17429:5;:12;17425:1;:16;17408:88;;;17480:4;17463;:14;17468:5;17474:1;17468:8;;;;;;;;:::i;:::-;;;;;;;;17463:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;17443:3;;;;;;;17408:88;;;;17337:166:::0;:::o;18715:121::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18814:14:::1;18801:10;;:27;;;;;;;;;;;;;;;;;;18715:121:::0;:::o;15407:25::-;;;;:::o;16077:37::-;;;;:::o;15764:22::-;;;;;;;;;;;;;:::o;15587:30::-;;;;:::o;17555:115::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17621:12:::1;17608:10;:25;;;;17658:4;17644:11;;:18;;;;;;;;;;;;;;;;;;17555:115::o:0;15547:33::-;;;;:::o;18091:95::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18170:8:::1;18162:5;:16;;;;18091:95:::0;:::o;20694:133::-;20778:7;20796:11;:19;20808:6;20796:19;;;;;;;;;;;;;;;:28;20816:7;20796:28;;;;;;;;;;;;;;;;20789:35;;20694:133;;;;:::o;6661:244::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6770:1:::1;6750:22;;:8;:22;;::::0;6742:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6860:8;6831:38;;6852:6;::::0;::::1;;;;;;;;6831:38;;;;;;;;;;;;6889:8;6880:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6661:244:::0;:::o;19717:132::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19805:36:::1;19826:6;19834;19805:20;:36::i;:::-;19717:132:::0;;:::o;15707:24::-;;;;;;;;;;;;;:::o;16291:47::-;;;;:::o;18440:136::-;6428:12;:10;:12::i;:::-;6418:22;;:6;;;;;;;;;;:22;;;6410:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18562:6:::1;18536:15;:23;18552:6;18536:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18440:136:::0;;:::o;15988:31::-;;;;;;;;;;;;;:::o;5755:98::-;5808:7;5835:10;5828:17;;5755:98;:::o;3821:192::-;3907:7;3940:1;3935;:6;;3943:12;3927:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3967:9;3983:1;3979;:5;;;;:::i;:::-;3967:17;;4004:1;3997:8;;;3821:192;;;;;:::o;21727:1432::-;21815:4;21845:7;:5;:7::i;:::-;21836:16;;:6;:16;;;;:39;;;;;21868:7;:5;:7::i;:::-;21856:19;;:9;:19;;;;21836:39;21832:92;;;21885:11;;;;;;;;;;;21877:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21832:92;21986:4;:12;21991:6;21986:12;;;;;;;;;;;;;;;;;;;;;;;;;21985:13;:33;;;;;22003:4;:15;22008:9;22003:15;;;;;;;;;;;;;;;;;;;;;;;;;22002:16;21985:33;21977:42;;;;;;22035:16;;;;;;;;;;;22032:73;;;22061:41;22076:6;22084:9;22095:6;22061:14;:41::i;:::-;22054:48;;;;22032:73;22135:5;;22125:6;:15;;:42;;;;22144:15;:23;22160:6;22144:23;;;;;;;;;;;;;;;;;;;;;;;;;22125:42;22117:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22191:15;:26;22207:9;22191:26;;;;;;;;;;;;;;;;;;;;;;;;;22190:27;:38;;;;;22221:7;;;;;;;;;;;22190:38;22187:143;;;22298:9;;22262:32;22287:6;22262:9;:20;22272:9;22262:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:45;;22254:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22187:143;22359:4;;;;;;;;;;;22345:18;;:10;:18;;;;:39;;;;;22368:16;;;;;;;;;;;22367:17;22345:39;:64;;;;;22388:21;;;;;;;;;;;22345:64;:109;;;;;22441:13;;22413:9;:24;22431:4;22413:24;;;;;;;;;;;;;;;;:41;;22345:109;22342:128;;;22457:10;:8;:10::i;:::-;22342:128;22502:53;22524:6;22502:53;;;;;;;;;;;;;;;;;:9;:17;22512:6;22502:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22482:9;:17;22492:6;22482:17;;;;;;;;;;;;;;;:73;;;;22576:19;22599:11;:19;22611:6;22599:19;;;;;;;;;;;;;;;;;;;;;;;;;22598:20;:47;;;;;22623:11;:22;22635:9;22623:22;;;;;;;;;;;;;;;;;;;;;;;;;22622:23;22598:47;:93;;22685:6;22598:93;;;22648:34;22656:6;22664:9;22675:6;22648:7;:34::i;:::-;22598:93;22576:115;;22725:37;22750:11;22725:9;:20;22735:9;22725:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;22702:9;:20;22712:9;22702:20;;;;;;;;;;;;;;;:60;;;;22808:16;:24;22825:6;22808:24;;;;;;;;;;;;;;;;;;;;;;;;;22804:123;;22853:15;;;;;;;;;;;:24;;;22878:6;22886:9;:17;22896:6;22886:17;;;;;;;;;;;;;;;;22853:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22849:67;22804:123;22943:16;:27;22960:9;22943:27;;;;;;;;;;;;;;;;;;;;;;;;;22939:133;;22991:15;;;;;;;;;;;:24;;;23016:9;23027;:20;23037:9;23027:20;;;;;;;;;;;;;;;;22991:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22987:73;22939:133;23106:9;23089:40;;23098:6;23089:40;;;23117:11;23089:40;;;;;;:::i;:::-;;;;;;;;23147:4;23140:11;;;21727:1432;;;;;;:::o;3679:136::-;3737:7;3764:43;3768:1;3771;3764:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3757:50;;3679:136;;;;:::o;24709:919::-;16174:4;16155:16;;:23;;;;;;;;;;;;;;;;;;24767:20:::1;24790:9;:24;24808:4;24790:24;;;;;;;;;;;;;;;;24767:47;;24826:26;24855:45;24898:1;24855:38;24889:3;24855:29;24872:11;;24855:12;:16;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;:42;;:45;;;;:::i;:::-;24826:74;;24916:20;24939:36;24956:18;24939:12;:16;;:36;;;;:::i;:::-;24916:59;;24988:30;25005:12;24988:16;:30::i;:::-;25031:23;25057:21;25031:47;;25089:18;25110:43;25149:3;25110:34;25130:13;;25110:15;:19;;:34;;;;:::i;:::-;:38;;:43;;;;:::i;:::-;25089:64;;25164:17;25184:41;25221:3;25184:32;25204:11;;25184:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;25164:61;;25236:23;25262:48;25308:1;25262:41;25299:3;25262:32;25282:11;;25262:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;:45;;:48;;;;:::i;:::-;25236:74;;25351:1;25333:15;:19;25329:89;;;25376:9;;;;;;;;;;;25368:27;;:38;25396:9;25368:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25329:89;25442:15;;;;;;;;;;;:23;;;25473:10;25442:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;25438:60:::0;25543:1:::1;25522:18;:22;25518:103;;;25560:49;25573:18;25593:15;25560:12;:49::i;:::-;25518:103;24750:878;;;;;;;16220:5:::0;16201:16;;:24;;;;;;;;;;;;;;;;;;24709:919::o;19364:345::-;19469:4;19451:23;;:6;:23;;;;:41;;;;;19488:4;;;;;;;;;;;19478:14;;:6;:14;;;;19451:41;19443:50;;;;;;19531:6;19504:16;:24;19521:6;19504:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19551:6;19548:154;;;19573:15;;;;;;;;;;;:24;;;19598:6;19606:1;19573:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19548:154;;;19639:15;;;;;;;;;;;:24;;;19664:6;19672:9;:17;19682:6;19672:17;;;;;;;;;;;;;;;;19639:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19548:154;19364:345;;:::o;23171:330::-;23264:4;23301:53;23323:6;23301:53;;;;;;;;;;;;;;;;;:9;:17;23311:6;23301:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23281:9;:17;23291:6;23281:17;;;;;;;;;;;;;;;:73;;;;23388:32;23413:6;23388:9;:20;23398:9;23388:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23365:9;:20;23375:9;23365:20;;;;;;;;;;;;;;;:55;;;;23453:9;23436:35;;23445:6;23436:35;;;23464:6;23436:35;;;;;;:::i;:::-;;;;;;;;23489:4;23482:11;;23171:330;;;;;:::o;3492:181::-;3550:7;3570:9;3586:1;3582;:5;;;;:::i;:::-;3570:17;;3611:1;3606;:6;;3598:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3664:1;3657:8;;;3492:181;;;;:::o;23515:427::-;23601:7;23631:21;23663:9;23655:17;;:4;;;;;;;;;;;:17;;;:36;;23685:6;;23655:36;;;23675:7;;23655:36;23631:60;;23702:17;23722:34;23752:3;23722:25;23733:13;23722:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23702:54;;23796:39;23825:9;23796;:24;23814:4;23796:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;23769:9;:24;23787:4;23769:24;;;;;;;;;;;;;;;:66;;;;23876:4;23851:42;;23860:6;23851:42;;;23883:9;23851:42;;;;;;:::i;:::-;;;;;;;;23913:21;23924:9;23913:6;:10;;:21;;;;:::i;:::-;23906:28;;;;23515:427;;;;;:::o;4019:250::-;4077:7;4106:1;4101;:6;4097:47;;4131:1;4124:8;;;;4097:47;4156:9;4172:1;4168;:5;;;;:::i;:::-;4156:17;;4201:1;4196;4192;:5;;;;:::i;:::-;:10;4184:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4260:1;4253:8;;;4019:250;;;;;:::o;4275:132::-;4333:7;4360:39;4364:1;4367;4360:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4353:46;;4275:132;;;;:::o;23954:460::-;24022:21;24060:1;24046:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24022:40;;24091:4;24073;24078:1;24073:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24117:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24107:4;24112:1;24107:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24143:35;24159:4;24166:11;24143:7;:35::i;:::-;;24191:6;;;;;;;;;;;:57;;;24263:11;24289:1;24333:4;24360;24380:15;24191:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24009:405;23954:460;:::o;24422:279::-;24503:6;;;;;;;;;;;:22;;;24533:9;24566:4;24586:11;24612:1;24628;24644:8;;;;;;;;;;;24667:15;24503:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24422:279;;:::o;4413:345::-;4499:7;4598:1;4594;:5;4601:12;4586:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4625:9;4641:1;4637;:5;;;;:::i;:::-;4625:17;;4749:1;4742:8;;;4413:345;;;;;:::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:246::-;1389:1;1399:113;1413:6;1410:1;1407:13;1399:113;;;1498:1;1493:3;1489:11;1483:18;1479:1;1474:3;1470:11;1463:39;1435:2;1432:1;1428:10;1423:15;;1399:113;;;1546:1;1537:6;1532:3;1528:16;1521:27;1370:184;1308:246;;;:::o;1560:102::-;1601:6;1652:2;1648:7;1643:2;1636:5;1632:14;1628:28;1618:38;;1560:102;;;:::o;1668:377::-;1756:3;1784:39;1817:5;1784:39;:::i;:::-;1839:71;1903:6;1898:3;1839:71;:::i;:::-;1832:78;;1919:65;1977:6;1972:3;1965:4;1958:5;1954:16;1919:65;:::i;:::-;2009:29;2031:6;2009:29;:::i;:::-;2004:3;2000:39;1993:46;;1760:285;1668:377;;;;:::o;2051:313::-;2164:4;2202:2;2191:9;2187:18;2179:26;;2251:9;2245:4;2241:20;2237:1;2226:9;2222:17;2215:47;2279:78;2352:4;2343:6;2279:78;:::i;:::-;2271:86;;2051:313;;;;:::o;2370:75::-;2403:6;2436:2;2430:9;2420:19;;2370:75;:::o;2451:117::-;2560:1;2557;2550:12;2574:117;2683:1;2680;2673:12;2697:122;2770:24;2788:5;2770:24;:::i;:::-;2763:5;2760:35;2750:63;;2809:1;2806;2799:12;2750:63;2697:122;:::o;2825:139::-;2871:5;2909:6;2896:20;2887:29;;2925:33;2952:5;2925:33;:::i;:::-;2825:139;;;;:::o;2970:122::-;3043:24;3061:5;3043:24;:::i;:::-;3036:5;3033:35;3023:63;;3082:1;3079;3072:12;3023:63;2970:122;:::o;3098:139::-;3144:5;3182:6;3169:20;3160:29;;3198:33;3225:5;3198:33;:::i;:::-;3098:139;;;;:::o;3243:474::-;3311:6;3319;3368:2;3356:9;3347:7;3343:23;3339:32;3336:119;;;3374:79;;:::i;:::-;3336:119;3494:1;3519:53;3564:7;3555:6;3544:9;3540:22;3519:53;:::i;:::-;3509:63;;3465:117;3621:2;3647:53;3692:7;3683:6;3672:9;3668:22;3647:53;:::i;:::-;3637:63;;3592:118;3243:474;;;;;:::o;3723:90::-;3757:7;3800:5;3793:13;3786:21;3775:32;;3723:90;;;:::o;3819:109::-;3900:21;3915:5;3900:21;:::i;:::-;3895:3;3888:34;3819:109;;:::o;3934:210::-;4021:4;4059:2;4048:9;4044:18;4036:26;;4072:65;4134:1;4123:9;4119:17;4110:6;4072:65;:::i;:::-;3934:210;;;;:::o;4150:104::-;4195:7;4224:24;4242:5;4224:24;:::i;:::-;4213:35;;4150:104;;;:::o;4260:138::-;4341:32;4367:5;4341:32;:::i;:::-;4334:5;4331:43;4321:71;;4388:1;4385;4378:12;4321:71;4260:138;:::o;4404:155::-;4458:5;4496:6;4483:20;4474:29;;4512:41;4547:5;4512:41;:::i;:::-;4404:155;;;;:::o;4565:345::-;4632:6;4681:2;4669:9;4660:7;4656:23;4652:32;4649:119;;;4687:79;;:::i;:::-;4649:119;4807:1;4832:61;4885:7;4876:6;4865:9;4861:22;4832:61;:::i;:::-;4822:71;;4778:125;4565:345;;;;:::o;4916:619::-;4993:6;5001;5009;5058:2;5046:9;5037:7;5033:23;5029:32;5026:119;;;5064:79;;:::i;:::-;5026:119;5184:1;5209:53;5254:7;5245:6;5234:9;5230:22;5209:53;:::i;:::-;5199:63;;5155:117;5311:2;5337:53;5382:7;5373:6;5362:9;5358:22;5337:53;:::i;:::-;5327:63;;5282:118;5439:2;5465:53;5510:7;5501:6;5490:9;5486:22;5465:53;:::i;:::-;5455:63;;5410:118;4916:619;;;;;:::o;5541:329::-;5600:6;5649:2;5637:9;5628:7;5624:23;5620:32;5617:119;;;5655:79;;:::i;:::-;5617:119;5775:1;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5746:117;5541:329;;;;:::o;5876:474::-;5944:6;5952;6001:2;5989:9;5980:7;5976:23;5972:32;5969:119;;;6007:79;;:::i;:::-;5969:119;6127:1;6152:53;6197:7;6188:6;6177:9;6173:22;6152:53;:::i;:::-;6142:63;;6098:117;6254:2;6280:53;6325:7;6316:6;6305:9;6301:22;6280:53;:::i;:::-;6270:63;;6225:118;5876:474;;;;;:::o;6356:619::-;6433:6;6441;6449;6498:2;6486:9;6477:7;6473:23;6469:32;6466:119;;;6504:79;;:::i;:::-;6466:119;6624:1;6649:53;6694:7;6685:6;6674:9;6670:22;6649:53;:::i;:::-;6639:63;;6595:117;6751:2;6777:53;6822:7;6813:6;6802:9;6798:22;6777:53;:::i;:::-;6767:63;;6722:118;6879:2;6905:53;6950:7;6941:6;6930:9;6926:22;6905:53;:::i;:::-;6895:63;;6850:118;6356:619;;;;;:::o;6981:86::-;7016:7;7056:4;7049:5;7045:16;7034:27;;6981:86;;;:::o;7073:112::-;7156:22;7172:5;7156:22;:::i;:::-;7151:3;7144:35;7073:112;;:::o;7191:214::-;7280:4;7318:2;7307:9;7303:18;7295:26;;7331:67;7395:1;7384:9;7380:17;7371:6;7331:67;:::i;:::-;7191:214;;;;:::o;7411:116::-;7481:21;7496:5;7481:21;:::i;:::-;7474:5;7471:32;7461:60;;7517:1;7514;7507:12;7461:60;7411:116;:::o;7533:133::-;7576:5;7614:6;7601:20;7592:29;;7630:30;7654:5;7630:30;:::i;:::-;7533:133;;;;:::o;7672:468::-;7737:6;7745;7794:2;7782:9;7773:7;7769:23;7765:32;7762:119;;;7800:79;;:::i;:::-;7762:119;7920:1;7945:50;7987:7;7978:6;7967:9;7963:22;7945:50;:::i;:::-;7935:60;;7891:114;8044:2;8070:53;8115:7;8106:6;8095:9;8091:22;8070:53;:::i;:::-;8060:63;;8015:118;7672:468;;;;;:::o;8146:60::-;8174:3;8195:5;8188:12;;8146:60;;;:::o;8212:142::-;8262:9;8295:53;8313:34;8322:24;8340:5;8322:24;:::i;:::-;8313:34;:::i;:::-;8295:53;:::i;:::-;8282:66;;8212:142;;;:::o;8360:134::-;8418:9;8451:37;8482:5;8451:37;:::i;:::-;8438:50;;8360:134;;;:::o;8500:166::-;8582:9;8615:45;8654:5;8615:45;:::i;:::-;8602:58;;8500:166;;;:::o;8672:195::-;8791:69;8854:5;8791:69;:::i;:::-;8786:3;8779:82;8672:195;;:::o;8873:286::-;8998:4;9036:2;9025:9;9021:18;9013:26;;9049:103;9149:1;9138:9;9134:17;9125:6;9049:103;:::i;:::-;8873:286;;;;:::o;9165:329::-;9224:6;9273:2;9261:9;9252:7;9248:23;9244:32;9241:119;;;9279:79;;:::i;:::-;9241:119;9399:1;9424:53;9469:7;9460:6;9449:9;9445:22;9424:53;:::i;:::-;9414:63;;9370:117;9165:329;;;;:::o;9500:468::-;9565:6;9573;9622:2;9610:9;9601:7;9597:23;9593:32;9590:119;;;9628:79;;:::i;:::-;9590:119;9748:1;9773:53;9818:7;9809:6;9798:9;9794:22;9773:53;:::i;:::-;9763:63;;9719:117;9875:2;9901:50;9943:7;9934:6;9923:9;9919:22;9901:50;:::i;:::-;9891:60;;9846:115;9500:468;;;;;:::o;9974:117::-;10083:1;10080;10073:12;10097:180;10145:77;10142:1;10135:88;10242:4;10239:1;10232:15;10266:4;10263:1;10256:15;10283:281;10366:27;10388:4;10366:27;:::i;:::-;10358:6;10354:40;10496:6;10484:10;10481:22;10460:18;10448:10;10445:34;10442:62;10439:88;;;10507:18;;:::i;:::-;10439:88;10547:10;10543:2;10536:22;10326:238;10283:281;;:::o;10570:129::-;10604:6;10631:20;;:::i;:::-;10621:30;;10660:33;10688:4;10680:6;10660:33;:::i;:::-;10570:129;;;:::o;10705:311::-;10782:4;10872:18;10864:6;10861:30;10858:56;;;10894:18;;:::i;:::-;10858:56;10944:4;10936:6;10932:17;10924:25;;11004:4;10998;10994:15;10986:23;;10705:311;;;:::o;11022:117::-;11131:1;11128;11121:12;11162:710;11258:5;11283:81;11299:64;11356:6;11299:64;:::i;:::-;11283:81;:::i;:::-;11274:90;;11384:5;11413:6;11406:5;11399:21;11447:4;11440:5;11436:16;11429:23;;11500:4;11492:6;11488:17;11480:6;11476:30;11529:3;11521:6;11518:15;11515:122;;;11548:79;;:::i;:::-;11515:122;11663:6;11646:220;11680:6;11675:3;11672:15;11646:220;;;11755:3;11784:37;11817:3;11805:10;11784:37;:::i;:::-;11779:3;11772:50;11851:4;11846:3;11842:14;11835:21;;11722:144;11706:4;11701:3;11697:14;11690:21;;11646:220;;;11650:21;11264:608;;11162:710;;;;;:::o;11895:370::-;11966:5;12015:3;12008:4;12000:6;11996:17;11992:27;11982:122;;12023:79;;:::i;:::-;11982:122;12140:6;12127:20;12165:94;12255:3;12247:6;12240:4;12232:6;12228:17;12165:94;:::i;:::-;12156:103;;11972:293;11895:370;;;;:::o;12271:539::-;12355:6;12404:2;12392:9;12383:7;12379:23;12375:32;12372:119;;;12410:79;;:::i;:::-;12372:119;12558:1;12547:9;12543:17;12530:31;12588:18;12580:6;12577:30;12574:117;;;12610:79;;:::i;:::-;12574:117;12715:78;12785:7;12776:6;12765:9;12761:22;12715:78;:::i;:::-;12705:88;;12501:302;12271:539;;;;:::o;12816:474::-;12884:6;12892;12941:2;12929:9;12920:7;12916:23;12912:32;12909:119;;;12947:79;;:::i;:::-;12909:119;13067:1;13092:53;13137:7;13128:6;13117:9;13113:22;13092:53;:::i;:::-;13082:63;;13038:117;13194:2;13220:53;13265:7;13256:6;13245:9;13241:22;13220:53;:::i;:::-;13210:63;;13165:118;12816:474;;;;;:::o;13296:126::-;13346:9;13379:37;13410:5;13379:37;:::i;:::-;13366:50;;13296:126;;;:::o;13428:144::-;13496:9;13529:37;13560:5;13529:37;:::i;:::-;13516:50;;13428:144;;;:::o;13578:167::-;13683:55;13732:5;13683:55;:::i;:::-;13678:3;13671:68;13578:167;;:::o;13751:258::-;13862:4;13900:2;13889:9;13885:18;13877:26;;13913:89;13999:1;13988:9;13984:17;13975:6;13913:89;:::i;:::-;13751:258;;;;:::o;14015:182::-;14155:34;14151:1;14143:6;14139:14;14132:58;14015:182;:::o;14203:366::-;14345:3;14366:67;14430:2;14425:3;14366:67;:::i;:::-;14359:74;;14442:93;14531:3;14442:93;:::i;:::-;14560:2;14555:3;14551:12;14544:19;;14203:366;;;:::o;14575:419::-;14741:4;14779:2;14768:9;14764:18;14756:26;;14828:9;14822:4;14818:20;14814:1;14803:9;14799:17;14792:47;14856:131;14982:4;14856:131;:::i;:::-;14848:139;;14575:419;;;:::o;15000:332::-;15121:4;15159:2;15148:9;15144:18;15136:26;;15172:71;15240:1;15229:9;15225:17;15216:6;15172:71;:::i;:::-;15253:72;15321:2;15310:9;15306:18;15297:6;15253:72;:::i;:::-;15000:332;;;;;:::o;15338:143::-;15395:5;15426:6;15420:13;15411:22;;15442:33;15469:5;15442:33;:::i;:::-;15338:143;;;;:::o;15487:351::-;15557:6;15606:2;15594:9;15585:7;15581:23;15577:32;15574:119;;;15612:79;;:::i;:::-;15574:119;15732:1;15757:64;15813:7;15804:6;15793:9;15789:22;15757:64;:::i;:::-;15747:74;;15703:128;15487:351;;;;:::o;15844:180::-;15892:77;15889:1;15882:88;15989:4;15986:1;15979:15;16013:4;16010:1;16003:15;16030:225;16170:34;16166:1;16158:6;16154:14;16147:58;16239:8;16234:2;16226:6;16222:15;16215:33;16030:225;:::o;16261:366::-;16403:3;16424:67;16488:2;16483:3;16424:67;:::i;:::-;16417:74;;16500:93;16589:3;16500:93;:::i;:::-;16618:2;16613:3;16609:12;16602:19;;16261:366;;;:::o;16633:419::-;16799:4;16837:2;16826:9;16822:18;16814:26;;16886:9;16880:4;16876:20;16872:1;16861:9;16857:17;16850:47;16914:131;17040:4;16914:131;:::i;:::-;16906:139;;16633:419;;;:::o;17058:180::-;17106:77;17103:1;17096:88;17203:4;17200:1;17193:15;17227:4;17224:1;17217:15;17244:194;17284:4;17304:20;17322:1;17304:20;:::i;:::-;17299:25;;17338:20;17356:1;17338:20;:::i;:::-;17333:25;;17382:1;17379;17375:9;17367:17;;17406:1;17400:4;17397:11;17394:37;;;17411:18;;:::i;:::-;17394:37;17244:194;;;;:::o;17444:173::-;17584:25;17580:1;17572:6;17568:14;17561:49;17444:173;:::o;17623:366::-;17765:3;17786:67;17850:2;17845:3;17786:67;:::i;:::-;17779:74;;17862:93;17951:3;17862:93;:::i;:::-;17980:2;17975:3;17971:12;17964:19;;17623:366;;;:::o;17995:419::-;18161:4;18199:2;18188:9;18184:18;18176:26;;18248:9;18242:4;18238:20;18234:1;18223:9;18219:17;18212:47;18276:131;18402:4;18276:131;:::i;:::-;18268:139;;17995:419;;;:::o;18420:152::-;18560:4;18556:1;18548:6;18544:14;18537:28;18420:152;:::o;18578:365::-;18720:3;18741:66;18805:1;18800:3;18741:66;:::i;:::-;18734:73;;18816:93;18905:3;18816:93;:::i;:::-;18934:2;18929:3;18925:12;18918:19;;18578:365;;;:::o;18949:419::-;19115:4;19153:2;19142:9;19138:18;19130:26;;19202:9;19196:4;19192:20;19188:1;19177:9;19173:17;19166:47;19230:131;19356:4;19230:131;:::i;:::-;19222:139;;18949:419;;;:::o;19374:156::-;19514:8;19510:1;19502:6;19498:14;19491:32;19374:156;:::o;19536:365::-;19678:3;19699:66;19763:1;19758:3;19699:66;:::i;:::-;19692:73;;19774:93;19863:3;19774:93;:::i;:::-;19892:2;19887:3;19883:12;19876:19;;19536:365;;;:::o;19907:419::-;20073:4;20111:2;20100:9;20096:18;20088:26;;20160:9;20154:4;20150:20;20146:1;20135:9;20131:17;20124:47;20188:131;20314:4;20188:131;:::i;:::-;20180:139;;19907:419;;;:::o;20332:332::-;20453:4;20491:2;20480:9;20476:18;20468:26;;20504:71;20572:1;20561:9;20557:17;20548:6;20504:71;:::i;:::-;20585:72;20653:2;20642:9;20638:18;20629:6;20585:72;:::i;:::-;20332:332;;;;;:::o;20670:85::-;20715:7;20744:5;20733:16;;20670:85;;;:::o;20761:158::-;20819:9;20852:61;20870:42;20879:32;20905:5;20879:32;:::i;:::-;20870:42;:::i;:::-;20852:61;:::i;:::-;20839:74;;20761:158;;;:::o;20925:147::-;21020:45;21059:5;21020:45;:::i;:::-;21015:3;21008:58;20925:147;;:::o;21078:348::-;21207:4;21245:2;21234:9;21230:18;21222:26;;21258:71;21326:1;21315:9;21311:17;21302:6;21258:71;:::i;:::-;21339:80;21415:2;21404:9;21400:18;21391:6;21339:80;:::i;:::-;21078:348;;;;;:::o;21432:191::-;21472:3;21491:20;21509:1;21491:20;:::i;:::-;21486:25;;21525:20;21543:1;21525:20;:::i;:::-;21520:25;;21568:1;21565;21561:9;21554:16;;21589:3;21586:1;21583:10;21580:36;;;21596:18;;:::i;:::-;21580:36;21432:191;;;;:::o;21629:177::-;21769:29;21765:1;21757:6;21753:14;21746:53;21629:177;:::o;21812:366::-;21954:3;21975:67;22039:2;22034:3;21975:67;:::i;:::-;21968:74;;22051:93;22140:3;22051:93;:::i;:::-;22169:2;22164:3;22160:12;22153:19;;21812:366;;;:::o;22184:419::-;22350:4;22388:2;22377:9;22373:18;22365:26;;22437:9;22431:4;22427:20;22423:1;22412:9;22408:17;22401:47;22465:131;22591:4;22465:131;:::i;:::-;22457:139;;22184:419;;;:::o;22609:410::-;22649:7;22672:20;22690:1;22672:20;:::i;:::-;22667:25;;22706:20;22724:1;22706:20;:::i;:::-;22701:25;;22761:1;22758;22754:9;22783:30;22801:11;22783:30;:::i;:::-;22772:41;;22962:1;22953:7;22949:15;22946:1;22943:22;22923:1;22916:9;22896:83;22873:139;;22992:18;;:::i;:::-;22873:139;22657:362;22609:410;;;;:::o;23025:180::-;23073:77;23070:1;23063:88;23170:4;23167:1;23160:15;23194:4;23191:1;23184:15;23211:185;23251:1;23268:20;23286:1;23268:20;:::i;:::-;23263:25;;23302:20;23320:1;23302:20;:::i;:::-;23297:25;;23341:1;23331:35;;23346:18;;:::i;:::-;23331:35;23388:1;23385;23381:9;23376:14;;23211:185;;;;:::o;23402:220::-;23542:34;23538:1;23530:6;23526:14;23519:58;23611:3;23606:2;23598:6;23594:15;23587:28;23402:220;:::o;23628:366::-;23770:3;23791:67;23855:2;23850:3;23791:67;:::i;:::-;23784:74;;23867:93;23956:3;23867:93;:::i;:::-;23985:2;23980:3;23976:12;23969:19;;23628:366;;;:::o;24000:419::-;24166:4;24204:2;24193:9;24189:18;24181:26;;24253:9;24247:4;24243:20;24239:1;24228:9;24224:17;24217:47;24281:131;24407:4;24281:131;:::i;:::-;24273:139;;24000:419;;;:::o;24425:143::-;24482:5;24513:6;24507:13;24498:22;;24529:33;24556:5;24529:33;:::i;:::-;24425:143;;;;:::o;24574:351::-;24644:6;24693:2;24681:9;24672:7;24668:23;24664:32;24661:119;;;24699:79;;:::i;:::-;24661:119;24819:1;24844:64;24900:7;24891:6;24880:9;24876:22;24844:64;:::i;:::-;24834:74;;24790:128;24574:351;;;;:::o;24931:114::-;24998:6;25032:5;25026:12;25016:22;;24931:114;;;:::o;25051:184::-;25150:11;25184:6;25179:3;25172:19;25224:4;25219:3;25215:14;25200:29;;25051:184;;;;:::o;25241:132::-;25308:4;25331:3;25323:11;;25361:4;25356:3;25352:14;25344:22;;25241:132;;;:::o;25379:108::-;25456:24;25474:5;25456:24;:::i;:::-;25451:3;25444:37;25379:108;;:::o;25493:179::-;25562:10;25583:46;25625:3;25617:6;25583:46;:::i;:::-;25661:4;25656:3;25652:14;25638:28;;25493:179;;;;:::o;25678:113::-;25748:4;25780;25775:3;25771:14;25763:22;;25678:113;;;:::o;25827:732::-;25946:3;25975:54;26023:5;25975:54;:::i;:::-;26045:86;26124:6;26119:3;26045:86;:::i;:::-;26038:93;;26155:56;26205:5;26155:56;:::i;:::-;26234:7;26265:1;26250:284;26275:6;26272:1;26269:13;26250:284;;;26351:6;26345:13;26378:63;26437:3;26422:13;26378:63;:::i;:::-;26371:70;;26464:60;26517:6;26464:60;:::i;:::-;26454:70;;26310:224;26297:1;26294;26290:9;26285:14;;26250:284;;;26254:14;26550:3;26543:10;;25951:608;;;25827:732;;;;:::o;26565:831::-;26828:4;26866:3;26855:9;26851:19;26843:27;;26880:71;26948:1;26937:9;26933:17;26924:6;26880:71;:::i;:::-;26961:80;27037:2;27026:9;27022:18;27013:6;26961:80;:::i;:::-;27088:9;27082:4;27078:20;27073:2;27062:9;27058:18;27051:48;27116:108;27219:4;27210:6;27116:108;:::i;:::-;27108:116;;27234:72;27302:2;27291:9;27287:18;27278:6;27234:72;:::i;:::-;27316:73;27384:3;27373:9;27369:19;27360:6;27316:73;:::i;:::-;26565:831;;;;;;;;:::o;27402:807::-;27651:4;27689:3;27678:9;27674:19;27666:27;;27703:71;27771:1;27760:9;27756:17;27747:6;27703:71;:::i;:::-;27784:72;27852:2;27841:9;27837:18;27828:6;27784:72;:::i;:::-;27866:80;27942:2;27931:9;27927:18;27918:6;27866:80;:::i;:::-;27956;28032:2;28021:9;28017:18;28008:6;27956:80;:::i;:::-;28046:73;28114:3;28103:9;28099:19;28090:6;28046:73;:::i;:::-;28129;28197:3;28186:9;28182:19;28173:6;28129:73;:::i;:::-;27402:807;;;;;;;;;:::o;28215:663::-;28303:6;28311;28319;28368:2;28356:9;28347:7;28343:23;28339:32;28336:119;;;28374:79;;:::i;:::-;28336:119;28494:1;28519:64;28575:7;28566:6;28555:9;28551:22;28519:64;:::i;:::-;28509:74;;28465:128;28632:2;28658:64;28714:7;28705:6;28694:9;28690:22;28658:64;:::i;:::-;28648:74;;28603:129;28771:2;28797:64;28853:7;28844:6;28833:9;28829:22;28797:64;:::i;:::-;28787:74;;28742:129;28215:663;;;;;:::o

Swarm Source

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