ETH Price: $2,911.57 (+0.06%)
Gas: 3 Gwei

Contract

0xBE1fa1303e2979Ab4d4e5dF3D1c6e3656ACAb027
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Dripto (DRYP) (@$0.0003)

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Value
Approve196038962024-04-07 12:43:4734 days ago1712493827IN
Dripto: DRYP Token
0 ETH0.0003975215.92723852
Approve194099452024-03-11 6:03:5962 days ago1710137039IN
Dripto: DRYP Token
0 ETH0.0011024644.17103968
Approve191670982024-02-06 5:23:5996 days ago1707197039IN
Dripto: DRYP Token
0 ETH0.0004328716.04946218
Approve191670962024-02-06 5:23:3596 days ago1707197015IN
Dripto: DRYP Token
0 ETH0.0004143916.59519469
Increase Allowan...189107852024-01-01 6:23:23132 days ago1704090203IN
Dripto: DRYP Token
0 ETH0.000453499.52853911
Approve188978922023-12-30 10:58:23133 days ago1703933903IN
Dripto: DRYP Token
0 ETH0.0008138117.22169406
Transfer188908132023-12-29 11:02:47134 days ago1703847767IN
Dripto: DRYP Token
0 ETH0.0014567621.0111346
Approve186655382023-11-27 21:04:35166 days ago1701119075IN
Dripto: DRYP Token
0 ETH0.0016689435.31783765
Approve186306762023-11-22 23:52:11171 days ago1700697131IN
Dripto: DRYP Token
0 ETH0.0008105932.46149627
Approve186306752023-11-22 23:51:59171 days ago1700697119IN
Dripto: DRYP Token
0 ETH0.0007368229.50728725
Approve183089772023-10-08 23:15:47216 days ago1696806947IN
Dripto: DRYP Token
0 ETH0.000133615.35072119
Approve183046552023-10-08 8:44:47217 days ago1696754687IN
Dripto: DRYP Token
0 ETH0.000159556.38946093
Approve182984792023-10-07 12:02:23217 days ago1696680143IN
Dripto: DRYP Token
0 ETH0.000150426.02395413
Approve182148832023-09-25 19:27:59229 days ago1695670079IN
Dripto: DRYP Token
0 ETH0.0006858727.46695534
Approve180669702023-09-05 1:22:35250 days ago1693876955IN
Dripto: DRYP Token
0 ETH0.0003246213
Approve180669012023-09-05 1:08:47250 days ago1693876127IN
Dripto: DRYP Token
0 ETH0.0003909915.65812648
Approve179802942023-08-23 22:08:35262 days ago1692828515IN
Dripto: DRYP Token
0 ETH0.0012542326.73872418
Transfer178565512023-08-06 14:35:59279 days ago1691332559IN
Dripto: DRYP Token
0 ETH0.0013981520.11010422
Approve178073262023-07-30 17:27:11286 days ago1690738031IN
Dripto: DRYP Token
0 ETH0.0008603818.32350395
Approve177705792023-07-25 14:02:47291 days ago1690293767IN
Dripto: DRYP Token
0 ETH0.0029346862.18202068
Approve176801592023-07-12 21:30:47304 days ago1689197447IN
Dripto: DRYP Token
0 ETH0.0005774823.18189843
Approve176374012023-07-06 21:13:23310 days ago1688678003IN
Dripto: DRYP Token
0 ETH0.001519232.14906943
Approve175570472023-06-25 14:19:47321 days ago1687702787IN
Dripto: DRYP Token
0 ETH0.0003760215.05848369
Approve175551472023-06-25 7:55:59322 days ago1687679759IN
Dripto: DRYP Token
0 ETH0.0004067916.29862422
Approve175551092023-06-25 7:48:11322 days ago1687679291IN
Dripto: DRYP Token
0 ETH0.0003202612.85648371
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
177706022023-07-25 14:07:23291 days ago1690294043
Dripto: DRYP Token
0.00006534 ETH
177706022023-07-25 14:07:23291 days ago1690294043
Dripto: DRYP Token
0.00117624 ETH
177706022023-07-25 14:07:23291 days ago1690294043
Dripto: DRYP Token
0.0011893 ETH
177706022023-07-25 14:07:23291 days ago1690294043
Dripto: DRYP Token
0.00243089 ETH
175488832023-06-24 10:47:23322 days ago1687603643
Dripto: DRYP Token
0.00016246 ETH
175488832023-06-24 10:47:23322 days ago1687603643
Dripto: DRYP Token
0.00292435 ETH
175488832023-06-24 10:47:23322 days ago1687603643
Dripto: DRYP Token
0.00295684 ETH
175488832023-06-24 10:47:23322 days ago1687603643
Dripto: DRYP Token
0.00604365 ETH
172899432023-05-19 0:17:35359 days ago1684455455
Dripto: DRYP Token
0.00010784 ETH
172899432023-05-19 0:17:35359 days ago1684455455
Dripto: DRYP Token
0.00194121 ETH
172899432023-05-19 0:17:35359 days ago1684455455
Dripto: DRYP Token
0.00196278 ETH
172899432023-05-19 0:17:35359 days ago1684455455
Dripto: DRYP Token
0.00401185 ETH
169364312023-03-30 0:14:23409 days ago1680135263
Dripto: DRYP Token
0.00028188 ETH
169364312023-03-30 0:14:23409 days ago1680135263
Dripto: DRYP Token
0.00507387 ETH
169364312023-03-30 0:14:23409 days ago1680135263
Dripto: DRYP Token
0.00513024 ETH
169364312023-03-30 0:14:23409 days ago1680135263
Dripto: DRYP Token
0.010486 ETH
169354462023-03-29 20:55:47409 days ago1680123347
Dripto: DRYP Token
0.00014492 ETH
169354462023-03-29 20:55:47409 days ago1680123347
Dripto: DRYP Token
0.00260865 ETH
169354462023-03-29 20:55:47409 days ago1680123347
Dripto: DRYP Token
0.00263764 ETH
169354462023-03-29 20:55:47409 days ago1680123347
Dripto: DRYP Token
0.00539122 ETH
169337872023-03-29 15:17:47409 days ago1680103067
Dripto: DRYP Token
0.00036144 ETH
169337872023-03-29 15:17:47409 days ago1680103067
Dripto: DRYP Token
0.00650597 ETH
169337872023-03-29 15:17:47409 days ago1680103067
Dripto: DRYP Token
0.00657826 ETH
169337872023-03-29 15:17:47409 days ago1680103067
Dripto: DRYP Token
0.01344568 ETH
169337842023-03-29 15:17:11409 days ago1680103031
Dripto: DRYP Token
0.0003715 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Dripto

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-10
*/

/*
 * DRIPTO | $DRYP 
 * The 1st shop-to-earn token and crypto e-commerce platform
 * TG: https://t.me/driptotoken
 * Website: https://dripto.com
 * All Links: https://linktr.ee/dripto
 
#  ██████╗ ██████╗ ██╗██████╗ ████████╗ ██████╗ 
#  ██╔══██╗██╔══██╗██║██╔══██╗╚══██╔══╝██╔═══██╗
#  ██║  ██║██████╔╝██║██████╔╝   ██║   ██║   ██║
#  ██║  ██║██╔══██╗██║██╔═══╝    ██║   ██║   ██║
#  ██████╔╝██║  ██║██║██║        ██║   ╚██████╔╝
#  ╚═════╝ ╚═╝  ╚═╝╚═╝╚═╝        ╚═╝    ╚═════╝                                                                                           
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.13;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        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 IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(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 addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function removeLiquidityETH(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external returns (uint amountToken, uint amountETH);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IDexFactory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    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);
}

contract Dripto is Context, IERC20, Ownable {
    
    string constant private _name = "Dripto";
    string constant private _symbol = "DRYP";
    uint8 constant private _decimals = 18;

    address public constant  deadAddress = 0x000000000000000000000000000000000000dEaD;
    address payable public autoLiquidityReceiver = payable(0x7576E8a7ff15977b6c36aa869Fdf04D8Fb71E98f); // LP Address
    address payable public marketingWalletAddress = payable(0xeEBE80A2d80d4e54500c5AE081BD052E0ff9E6D7); // Marketing Address
    address payable public operationsWalletAddress = payable(0x5b7f00DF069Cb67189B57ff44693AeE455738E0d); // operations Address
    
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isEarlyBuyer;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public buyTax = 70;
    uint256 public sellTax = 90;

    uint256 public lpShare = 10;
    uint256 public marketingShare = 40;
    uint256 public operationsShare = 40;

    uint256 constant private _totalSupply = 150 * 10**6 * 10**_decimals;
    uint256 public swapThreshold = 10000 * 10**_decimals; 
    uint256 public maxTxAmount = 1 * 10**6 * 10**_decimals;
    uint256 public walletMax = 3 * 10**6 * 10**_decimals;

    IDexRouter public dexRouter;
    address public lpPair;
    
    bool private isInSwap;
    bool public swapEnabled = true;
    bool public swapByLimitOnly = false;
    bool public launched = false;
    bool public checkWalletLimit = true;
    bool public snipeBlockExpired = false;

    uint256 public launchBlock = 0;
    uint256 public snipeBlockAmount = 0;

    event SwapSettingsUpdated(bool swapEnabled_, uint256 swapThreshold_, bool swapByLimitOnly_);
    event SwapTokensForETH(uint256 amountIn, address[] path);
    event AccountWhitelisted(address account, bool feeExempt, bool walletLimitExempt, bool txLimitExempt);
    event RouterVersionChanged(address newRouterAddress);
    event TaxesChanged(uint256 newBuyTax, uint256 newSellTax);
    event TaxDistributionChanged(uint256 newLpShare, uint256 newMarketingShare, uint256 newOperationsShare);
    event MarketingWalletChanged(address marketingWalletAddress_);
    event OperationsWalletChanged(address operationsWalletAddress_);
    event AutoLiquidityReceiverChanged(address autoLiquidityReceiver_);
    event EarlyBuyerUpdated(address account, bool isEarlyBuyer_);
    event MarketPairUpdated(address account, bool isMarketPair_);
    event WalletLimitChanged(uint256 walletMax_);
    event MaxTxAmountChanged(uint256 maxTxAmount_);
    event MaxWalletCheckChanged(bool checkWalletLimit_);

    modifier lockTheSwap {
        isInSwap = true;
        _;
        isInSwap = false;
    }
    
    constructor () {
        
        dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH());

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(marketingWalletAddress)] = true;
        isExcludedFromFee[address(operationsWalletAddress)] = true;

        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(marketingWalletAddress)] = true;
        isTxLimitExempt[address(operationsWalletAddress)] = true;
        isTxLimitExempt[address(autoLiquidityReceiver)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(lpPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[address(marketingWalletAddress)] = true;
        isWalletLimitExempt[address(operationsWalletAddress)] = true;
        isWalletLimitExempt[address(autoLiquidityReceiver)] = true;
        
        isMarketPair[address(lpPair)] = true;

        allowances[address(this)][address(dexRouter)] = _totalSupply;
        balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

     //to receive ETH from dexRouter when swapping
    receive() external payable {}

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _totalSupply;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(deadAddress);
    }

    function balanceOf(address account) public view override returns (uint256) {
        return balances[account];
    }

    function allowance(address owner_, address spender) public view override returns (uint256) {
        return allowances[owner_][spender];
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner_, address spender, uint256 amount) private {
        require(owner_ != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        allowances[owner_][spender] = amount;
        emit Approval(owner_, spender, amount);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), allowances[sender][_msgSender()] - amount);
        return true;
    }
    
    function updateRouter(address newRouterAddress) public onlyOwner returns(address newPairAddress) {
        IDexRouter dexRouter_ = IDexRouter(newRouterAddress); 
        newPairAddress = IDexFactory(dexRouter_.factory()).getPair(address(this), dexRouter_.WETH());

        if(newPairAddress == address(0)) { //Create If Doesnt exist
            newPairAddress = IDexFactory(dexRouter_.factory()).
                                createPair(address(this), dexRouter_.WETH());
        }

        lpPair = newPairAddress; //Set new pair address
        dexRouter = dexRouter_; //Set new router address

        isWalletLimitExempt[address(lpPair)] = true;
        isMarketPair[address(lpPair)] = true;
        emit RouterVersionChanged(newRouterAddress);
    }

    function launch(uint256 snipeBlockAmount_) public onlyOwner {
        launched = true;
        launchBlock = block.number;
        snipeBlockAmount = snipeBlockAmount_;
    }

    function setLaunchStatus(bool launched_) public onlyOwner {
        launched = launched_;
    }

    function setIsEarlyBuyer(address account, bool isEarlyBuyer_) public onlyOwner {
        isEarlyBuyer[account] = isEarlyBuyer_;
        emit EarlyBuyerUpdated(account, isEarlyBuyer_);
    }

    function setMarketPairStatus(address account, bool isMarketPair_) public onlyOwner {
        isMarketPair[account] = isMarketPair_;
        emit MarketPairUpdated(account, isMarketPair_);
    }
    
    function setTaxes(uint256 newBuyTax, uint256 newSellTax) external onlyOwner {
        require(newBuyTax <= 300, "Cannot exceed 30%");
        require(newSellTax <= 300, "Cannot exceed 30%");
        buyTax = newBuyTax;
        sellTax = newSellTax;
        emit TaxesChanged(newBuyTax, newSellTax);
    }

    function setTaxDistribution(uint256 newLpShare, uint256 newMarketingShare, uint256 newOperationsShare) external onlyOwner {
        lpShare = newLpShare;
        marketingShare = newMarketingShare;
        operationsShare = newOperationsShare;
        emit TaxDistributionChanged(newLpShare, newMarketingShare, newOperationsShare);
    }

    function setMaxTxAmount(uint256 maxTxAmount_) external onlyOwner {
        maxTxAmount = maxTxAmount_;
        emit MaxTxAmountChanged(maxTxAmount_);
    }

    function setWalletLimit(uint256 walletMax_) external onlyOwner {
        walletMax  = walletMax_;
        emit WalletLimitChanged(walletMax_);
    }

    function enableDisableWalletLimit(bool checkWalletLimit_) external onlyOwner {
        checkWalletLimit = checkWalletLimit_;
        emit MaxWalletCheckChanged(checkWalletLimit_);
    }

    function whitelistAccount(address account, bool feeExempt, bool walletLimitExempt, bool txLimitExempt) public onlyOwner {
        isExcludedFromFee[account] = feeExempt;
        isWalletLimitExempt[account] = walletLimitExempt;
        isTxLimitExempt[account] = txLimitExempt;
        emit AccountWhitelisted(account, feeExempt, walletLimitExempt, txLimitExempt);
    }

    function updateSwapSettings(bool swapEnabled_, uint256 swapThreshold_, bool swapByLimitOnly_) public onlyOwner {
        swapEnabled = swapEnabled_;
        swapThreshold = swapThreshold_;
        swapByLimitOnly = swapByLimitOnly_;
        emit SwapSettingsUpdated(swapEnabled_, swapThreshold_, swapByLimitOnly_);
    }

    function setMarketingWalletAddress(address marketingWalletAddress_) external onlyOwner {
        require(marketingWalletAddress_ != address(0), "New address cannot be zero address");
        marketingWalletAddress = payable(marketingWalletAddress_);
        emit MarketingWalletChanged(marketingWalletAddress_);
    }

    function setOperationsWalletAddress(address operationsWalletAddress_) external onlyOwner {
        require(operationsWalletAddress_ != address(0), "New address cannot be zero address");
        operationsWalletAddress = payable(operationsWalletAddress_);
        emit OperationsWalletChanged(operationsWalletAddress_);
    }

    function setAutoLiquidityReceiver(address autoLiquidityReceiver_) external onlyOwner {
        require(autoLiquidityReceiver_ != address(0), "New address cannot be zero address");
        autoLiquidityReceiver = payable(autoLiquidityReceiver_);
        emit AutoLiquidityReceiverChanged(autoLiquidityReceiver_);
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        bool success;
        (success,) = address(recipient).call{value: amount}("");
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        if(isInSwap) { 
            return _basicTransfer(sender, recipient, amount); 
        } else {
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(recipient != address(0), "ERC20: transfer to the zero address");
            require(!isEarlyBuyer[sender] && !isEarlyBuyer[recipient], "To/from address is blacklisted!");

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(launched, "Not Launched.");
                if(isMarketPair[sender] || isMarketPair[recipient]) {
                    require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
                if(!snipeBlockExpired) {
                    checkIfBot(sender, recipient);
                }
            }

            bool isTaxFree = ((!isMarketPair[sender] && !isMarketPair[recipient]) || 
                                isExcludedFromFee[sender] || isExcludedFromFee[recipient]);

            if (!isTaxFree && !isMarketPair[sender] && swapEnabled && !isInSwap) 
            {
                uint256 contractTokenBalance = balanceOf(address(this));
                bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;
                if(overMinimumTokenBalance) {
                    if(swapByLimitOnly)
                        contractTokenBalance = swapThreshold;
                    swapAndLiquify(contractTokenBalance);    
                }
            }

            balances[sender] = balances[sender] - amount;

            uint256 finalAmount = isTaxFree ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require((balanceOf(recipient) + finalAmount) <= walletMax);

            balances[recipient] = balances[recipient] + finalAmount;

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function checkIfBot(address sender, address recipient) private {
        if((block.number - launchBlock) > snipeBlockAmount) {
            snipeBlockExpired = true;
        } else if(sender != owner() && recipient != owner()) {
            if(!isMarketPair[sender] && sender != address(this)) {
                isEarlyBuyer[sender] = true;
            }
            if(!isMarketPair[recipient] && recipient != address(this)) {
                isEarlyBuyer[recipient] = true;
            }
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balances[sender] = balances[sender] - amount;
        balances[recipient] = balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        uint256 totalShares = lpShare + marketingShare + operationsShare;
        uint256 tokensForLP = ((tAmount * lpShare) / totalShares) / 2;
        uint256 tokensForSwap = tAmount - tokensForLP;

        swapTokensForEth(tokensForSwap);
        
        uint256 amountReceived = address(this).balance;

        uint256 bnbShares = totalShares - (lpShare / 2);
        
        uint256 bnbForLiquidity = ((amountReceived * lpShare) / bnbShares) / 2;
        uint256 bnbForOperations = (amountReceived * operationsShare) / bnbShares;
        uint256 bnbForMarketing = amountReceived - bnbForLiquidity - bnbForOperations;

        if(bnbForMarketing > 0) {
            transferToAddressETH(marketingWalletAddress, bnbForMarketing);
        }

        if(bnbForOperations > 0) {
            transferToAddressETH(operationsWalletAddress, bnbForOperations);
        }

        if(bnbForLiquidity > 0 && tokensForLP > 0) {
            addLiquidity(tokensForLP, bnbForLiquidity);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            autoLiquidityReceiver,
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = (amount * buyTax) / 1000;   
        address feeReceiver = address(this);

        if(isEarlyBuyer[sender] || isEarlyBuyer[recipient]) {
            feeAmount = (amount * 990) / 1000; 
            feeReceiver = operationsWalletAddress;
        } else if(isMarketPair[recipient]) {
            feeAmount = (amount * sellTax) / 1000;   
        }
        
        if(feeAmount > 0) {
            balances[feeReceiver] = balances[feeReceiver] + feeAmount;
            emit Transfer(sender, feeReceiver, feeAmount);
        }

        return amount - feeAmount;
    }
    
    function airdropToWallets(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "arrays must be the same length");
        require(wallets.length < 600, "Can only airdrop 600 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input.
        for(uint256 i = 0; i < wallets.length; i++){
            _basicTransfer(msg.sender, wallets[i], amountsInTokens[i]);
        }
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"feeExempt","type":"bool"},{"indexed":false,"internalType":"bool","name":"walletLimitExempt","type":"bool"},{"indexed":false,"internalType":"bool","name":"txLimitExempt","type":"bool"}],"name":"AccountWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"autoLiquidityReceiver_","type":"address"}],"name":"AutoLiquidityReceiverChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isEarlyBuyer_","type":"bool"}],"name":"EarlyBuyerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isMarketPair_","type":"bool"}],"name":"MarketPairUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWalletAddress_","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTxAmount_","type":"uint256"}],"name":"MaxTxAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"checkWalletLimit_","type":"bool"}],"name":"MaxWalletCheckChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operationsWalletAddress_","type":"address"}],"name":"OperationsWalletChanged","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":false,"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"RouterVersionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"swapEnabled_","type":"bool"},{"indexed":false,"internalType":"uint256","name":"swapThreshold_","type":"uint256"},{"indexed":false,"internalType":"bool","name":"swapByLimitOnly_","type":"bool"}],"name":"SwapSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newLpShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newOperationsShare","type":"uint256"}],"name":"TaxDistributionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"TaxesChanged","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletMax_","type":"uint256"}],"name":"WalletLimitChanged","type":"event"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"checkWalletLimit_","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isEarlyBuyer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","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":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"snipeBlockAmount_","type":"uint256"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","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":"operationsShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"autoLiquidityReceiver_","type":"address"}],"name":"setAutoLiquidityReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isEarlyBuyer_","type":"bool"}],"name":"setIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"launched_","type":"bool"}],"name":"setLaunchStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isMarketPair_","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWalletAddress_","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount_","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operationsWalletAddress_","type":"address"}],"name":"setOperationsWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLpShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newOperationsShare","type":"uint256"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"walletMax_","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipeBlockAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snipeBlockExpired","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"updateRouter","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled_","type":"bool"},{"internalType":"uint256","name":"swapThreshold_","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly_","type":"bool"}],"name":"updateSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"feeExempt","type":"bool"},{"internalType":"bool","name":"walletLimitExempt","type":"bool"},{"internalType":"bool","name":"txLimitExempt","type":"bool"}],"name":"whitelistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737576e8a7ff15977b6c36aa869fdf04d8fb71e98f600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073eebe80a2d80d4e54500c5ae081bd052e0ff9e6d7600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735b7f00df069cb67189b57ff44693aee455738e0d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506046600b55605a600c55600a600d556028600e556028600f556012600a6200012c919062000fb0565b6127106200013b919062001001565b6010556012600a6200014e919062000fb0565b620f42406200015e919062001001565b6011556012600a62000171919062000fb0565b622dc6c062000181919062001001565b6012556001601460156101000a81548160ff0219169083151502179055506000601460166101000a81548160ff0219169083151502179055506000601460176101000a81548160ff0219169083151502179055506001601460186101000a81548160ff0219169083151502179055506000601460196101000a81548160ff021916908315150217905550600060155560006016553480156200022257600080fd5b5060006200023562000de560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000396573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bc9190620010cc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000446573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046c9190620010cc565b6040518363ffffffff1660e01b81526004016200048b9291906200110f565b6020604051808303816000875af1158015620004ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d19190620010cc565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660006200052762000ded60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000620006da62000ded60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006200090762000ded60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506012600a62000c22919062000fb0565b6308f0d18062000c33919062001001565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506012600a62000ce5919062000fb0565b6308f0d18062000cf6919062001001565b6004600062000d0a62000de560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000d5862000de560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a62000db7919062000fb0565b6308f0d18062000dc8919062001001565b60405162000dd791906200114d565b60405180910390a36200116a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ea45780860481111562000e7c5762000e7b62000e16565b5b600185161562000e8c5780820291505b808102905062000e9c8562000e45565b945062000e5c565b94509492505050565b60008262000ebf576001905062000f92565b8162000ecf576000905062000f92565b816001811462000ee8576002811462000ef35762000f29565b600191505062000f92565b60ff84111562000f085762000f0762000e16565b5b8360020a91508482111562000f225762000f2162000e16565b5b5062000f92565b5060208310610133831016604e8410600b841016171562000f635782820a90508381111562000f5d5762000f5c62000e16565b5b62000f92565b62000f72848484600162000e52565b9250905081840481111562000f8c5762000f8b62000e16565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000fbd8262000f99565b915062000fca8362000fa3565b925062000ff97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ead565b905092915050565b60006200100e8262000f99565b91506200101b8362000f99565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001057576200105662000e16565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010948262001067565b9050919050565b620010a68162001087565b8114620010b257600080fd5b50565b600081519050620010c6816200109b565b92915050565b600060208284031215620010e557620010e462001062565b5b6000620010f584828501620010b5565b91505092915050565b620011098162001087565b82525050565b6000604082019050620011266000830185620010fe565b620011356020830184620010fe565b9392505050565b620011478162000f99565b82525050565b60006020820190506200116460008301846200113c565b92915050565b615b16806200117a6000396000f3fe60806040526004361061037a5760003560e01c80638c06f391116101d1578063ca33e64c11610102578063e932ec9a116100a0578063f1d5f5171161006f578063f1d5f51714610d27578063f2fde38b14610d50578063f872858a14610d79578063fe31452414610da457610381565b8063e932ec9a14610c81578063ebc38ab014610caa578063ec28438a14610cd5578063f0ed555b14610cfe57610381565b8063d158272d116100dc578063d158272d14610bc3578063dd4f618014610bee578063dd62ed3e14610c19578063e227cf9514610c5657610381565b8063ca33e64c14610b42578063cc1776d314610b6d578063d00efb2f14610b9857610381565b8063a457c2d71161016f578063c135cc5c11610149578063c135cc5c14610a76578063c647b20e14610a9f578063c851cc3214610ac8578063c867d60b14610b0557610381565b8063a457c2d7146109d3578063a9059cbb14610a10578063baa16dc314610a4d57610381565b80638e3657aa116101ab5780638e3657aa14610915578063916d69431461094057806395d89b411461097d5780639c74aedb146109a857610381565b80638c06f391146108965780638c0b5e22146108bf5780638da5cb5b146108ea57610381565b806339509351116102ab5780636ddd1713116102495780638091f3bf116102235780638091f3bf146107dc578063844d591c1461080757806385b12c7c146108305780638b42507f1461085957610381565b80636ddd17131461075d57806370a0823114610788578063715018a6146107c557610381565b80634cb80fd5116102855780634cb80fd5146106a35780634f7041a5146106cc5780635342acb4146106f7578063552a37841461073457610381565b806339509351146105fe5780633ecad2711461063b578063452ed4f11461067857610381565b806318160ddd116103185780632563ae83116102f25780632563ae831461055457806327c8f8351461057d5780632b112e49146105a8578063313ce567146105d357610381565b806318160ddd146104c35780632307b441146104ee57806323b872dd1461051757610381565b806309218ee71161035457806309218ee714610407578063095ea7b3146104325780631136f62c1461046f578063174e078b1461049857610381565b80630445b6671461038657806306fdde03146103b15780630758d924146103dc57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610dcf565b6040516103a89190614452565b60405180910390f35b3480156103bd57600080fd5b506103c6610dd5565b6040516103d39190614506565b60405180910390f35b3480156103e857600080fd5b506103f1610e12565b6040516103fe91906145a7565b60405180910390f35b34801561041357600080fd5b5061041c610e38565b6040516104299190614452565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190614640565b610e3e565b604051610466919061469b565b60405180910390f35b34801561047b57600080fd5b50610496600480360381019061049191906146b6565b610e5c565b005b3480156104a457600080fd5b506104ad610fdb565b6040516104ba9190614452565b60405180910390f35b3480156104cf57600080fd5b506104d8610fe1565b6040516104e59190614452565b60405180910390f35b3480156104fa57600080fd5b50610515600480360381019061051091906148ee565b611005565b005b34801561052357600080fd5b5061053e60048036038101906105399190614966565b611187565b60405161054b919061469b565b60405180910390f35b34801561056057600080fd5b5061057b600480360381019061057691906149e5565b611240565b005b34801561058957600080fd5b50610592611329565b60405161059f9190614a21565b60405180910390f35b3480156105b457600080fd5b506105bd61132f565b6040516105ca9190614452565b60405180910390f35b3480156105df57600080fd5b506105e8611368565b6040516105f59190614a58565b60405180910390f35b34801561060a57600080fd5b5061062560048036038101906106209190614640565b611371565b604051610632919061469b565b60405180910390f35b34801561064757600080fd5b50610662600480360381019061065d91906146b6565b61141d565b60405161066f919061469b565b60405180910390f35b34801561068457600080fd5b5061068d61143d565b60405161069a9190614a21565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c591906146b6565b611463565b005b3480156106d857600080fd5b506106e16115e2565b6040516106ee9190614452565b60405180910390f35b34801561070357600080fd5b5061071e600480360381019061071991906146b6565b6115e8565b60405161072b919061469b565b60405180910390f35b34801561074057600080fd5b5061075b600480360381019061075691906146b6565b611608565b005b34801561076957600080fd5b50610772611787565b60405161077f919061469b565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa91906146b6565b61179a565b6040516107bc9190614452565b60405180910390f35b3480156107d157600080fd5b506107da6117e3565b005b3480156107e857600080fd5b506107f1611936565b6040516107fe919061469b565b60405180910390f35b34801561081357600080fd5b5061082e60048036038101906108299190614a73565b611949565b005b34801561083c57600080fd5b5061085760048036038101906108529190614ab3565b611a72565b005b34801561086557600080fd5b50610880600480360381019061087b91906146b6565b611b33565b60405161088d919061469b565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190614ae0565b611b53565b005b3480156108cb57600080fd5b506108d4611c3d565b6040516108e19190614452565b60405180910390f35b3480156108f657600080fd5b506108ff611c43565b60405161090c9190614a21565b60405180910390f35b34801561092157600080fd5b5061092a611c6c565b604051610937919061469b565b60405180910390f35b34801561094c57600080fd5b50610967600480360381019061096291906146b6565b611c7f565b604051610974919061469b565b60405180910390f35b34801561098957600080fd5b50610992611c9f565b60405161099f9190614506565b60405180910390f35b3480156109b457600080fd5b506109bd611cdc565b6040516109ca9190614b54565b60405180910390f35b3480156109df57600080fd5b506109fa60048036038101906109f59190614640565b611d02565b604051610a07919061469b565b60405180910390f35b348015610a1c57600080fd5b50610a376004803603810190610a329190614640565b611dae565b604051610a44919061469b565b60405180910390f35b348015610a5957600080fd5b50610a746004803603810190610a6f9190614a73565b611dcd565b005b348015610a8257600080fd5b50610a9d6004803603810190610a9891906149e5565b611ef6565b005b348015610aab57600080fd5b50610ac66004803603810190610ac19190614b6f565b611fa8565b005b348015610ad457600080fd5b50610aef6004803603810190610aea91906146b6565b612112565b604051610afc9190614a21565b60405180910390f35b348015610b1157600080fd5b50610b2c6004803603810190610b2791906146b6565b61264c565b604051610b39919061469b565b60405180910390f35b348015610b4e57600080fd5b50610b5761266c565b604051610b649190614b54565b60405180910390f35b348015610b7957600080fd5b50610b82612692565b604051610b8f9190614452565b60405180910390f35b348015610ba457600080fd5b50610bad612698565b604051610bba9190614452565b60405180910390f35b348015610bcf57600080fd5b50610bd861269e565b604051610be59190614b54565b60405180910390f35b348015610bfa57600080fd5b50610c036126c4565b604051610c109190614452565b60405180910390f35b348015610c2557600080fd5b50610c406004803603810190610c3b9190614baf565b6126ca565b604051610c4d9190614452565b60405180910390f35b348015610c6257600080fd5b50610c6b612751565b604051610c78919061469b565b60405180910390f35b348015610c8d57600080fd5b50610ca86004803603810190610ca39190614bef565b612764565b005b348015610cb657600080fd5b50610cbf612874565b604051610ccc9190614452565b60405180910390f35b348015610ce157600080fd5b50610cfc6004803603810190610cf79190614ab3565b61287a565b005b348015610d0a57600080fd5b50610d256004803603810190610d209190614c42565b612950565b005b348015610d3357600080fd5b50610d4e6004803603810190610d499190614ab3565b612b2d565b005b348015610d5c57600080fd5b50610d776004803603810190610d7291906146b6565b612c03565b005b348015610d8557600080fd5b50610d8e612dc4565b604051610d9b919061469b565b60405180910390f35b348015610db057600080fd5b50610db9612dd7565b604051610dc69190614452565b60405180910390f35b60105481565b60606040518060400160405280600681526020017f44726970746f0000000000000000000000000000000000000000000000000000815250905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6000610e52610e4b612ddd565b8484612de5565b6001905092915050565b610e64612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee890614cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5790614d87565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4e25f95b69ee5871f8ec400ed0eb429017888b12be11fe3d20d8c365b977103b81604051610fd09190614a21565b60405180910390a150565b60165481565b60006012600a610ff19190614f09565b6308f0d1806110009190614f54565b905090565b61100d612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109190614cf5565b60405180910390fd5b80518251146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590614ffa565b60405180910390fd5b610258825110611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111a9061508c565b60405180910390fd5b60005b82518110156111825761116e33848381518110611146576111456150ac565b5b6020026020010151848481518110611161576111606150ac565b5b6020026020010151612fae565b50808061117a906150db565b915050611126565b505050565b600061119484848461313c565b50611235846111a1612ddd565b84600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111eb612ddd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112309190615123565b612de5565b600190509392505050565b611248612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90614cf5565b60405180910390fd5b80601460186101000a81548160ff0219169083151502179055507fd77f03fb55ba6b94fd92cce5c4299c19942acdde281980bdcd02f132dd27fd348160405161131e919061469b565b60405180910390a150565b61dead81565b600061133c61dead61179a565b6012600a61134a9190614f09565b6308f0d1806113599190614f54565b6113639190615123565b905090565b60006012905090565b600061141361137e612ddd565b84846005600061138c612ddd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461140e9190615157565b612de5565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61146b612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90614cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90614d87565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b816040516115d79190614a21565b60405180910390a150565b600b5481565b60066020528060005260406000206000915054906101000a900460ff1681565b611610612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169490614cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361170c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170390614d87565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5ad06f46cd61f5643aac67ef701d1ab75b4200e38bf76ef4a74b5328cfb26e318160405161177c9190614a21565b60405180910390a150565b601460159054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117eb612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90614cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601460179054906101000a900460ff1681565b611951612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590614cf5565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f160ff69a72bc70f3e792a86c87d27070e421562197f032d96bcab11c5010222e8282604051611a669291906151ad565b60405180910390a15050565b611a7a612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe90614cf5565b60405180910390fd5b6001601460176101000a81548160ff021916908315150217905550436015819055508060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b611b5b612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf90614cf5565b60405180910390fd5b82600d8190555081600e8190555080600f819055507f182101bc4f3117ca4bac06c236d9b9d22164fd259705bb944f9c4580cdba1d9b838383604051611c30939291906151d6565b60405180910390a1505050565b60115481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601460169054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600481526020017f4452595000000000000000000000000000000000000000000000000000000000815250905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611da4611d0f612ddd565b848460056000611d1d612ddd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d9f9190615123565b612de5565b6001905092915050565b6000611dc2611dbb612ddd565b848461313c565b506001905092915050565b611dd5612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5990614cf5565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f0861ffea819c7470cbefb1765bce78388684cd327b561fd217484236b4cbb2d38282604051611eea9291906151ad565b60405180910390a15050565b611efe612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8290614cf5565b60405180910390fd5b80601460176101000a81548160ff02191690831515021790555050565b611fb0612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461203d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203490614cf5565b60405180910390fd5b61012c821115612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990615259565b60405180910390fd5b61012c8111156120c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120be90615259565b60405180910390fd5b81600b8190555080600c819055507f5eee0b95930ee59011f34615b0b7dc6cc58c01d1f07d04a01a3a1e70d2554cf08282604051612106929190615279565b60405180910390a15050565b600061211c612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a090614cf5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221d91906152b7565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a891906152b7565b6040518363ffffffff1660e01b81526004016122c59291906152e4565b602060405180830381865afa1580156122e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230691906152b7565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612499578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ab91906152b7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243691906152b7565b6040518363ffffffff1660e01b81526004016124539291906152e4565b6020604051808303816000875af1158015612472573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249691906152b7565b91505b81601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f267352536b1d9b9f4a233ca70670294dd64e12064915564aad906bc177663d998360405161263e9190614a21565b60405180910390a150919050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60155481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460199054906101000a900460ff1681565b61276c612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f090614cf5565b60405180910390fd5b82601460156101000a81548160ff0219169083151502179055508160108190555080601460166101000a81548160ff0219169083151502179055507f11208aed08835f646702af16c636fb4351554fa2f623991905cadb0293a88afc8383836040516128679392919061530d565b60405180910390a1505050565b600d5481565b612882612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461290f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290690614cf5565b60405180910390fd5b806011819055507fcff95ed354a1a3fcbabf882bfa4a9319f55569c324478c800820398451df1871816040516129459190614452565b60405180910390a150565b612958612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129dc90614cf5565b60405180910390fd5b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f12d9c9f75d95e930caf8a1f18460585ce2349b367898dbf23e394afef2d35d9584848484604051612b1f9493929190615344565b60405180910390a150505050565b612b35612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb990614cf5565b60405180910390fd5b806012819055507f7872485612198920508f0a96f4e47084f84df76e33b2b1d76ceff0dc83499aa681604051612bf89190614452565b60405180910390a150565b612c0b612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8f90614cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfe906153fb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601460189054906101000a900460ff1681565b60125481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4b9061548d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eba9061551f565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612fa19190614452565b60405180910390a3505050565b600081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ffb9190615123565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130899190615157565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131299190614452565b60405180910390a3600190509392505050565b600060148054906101000a900460ff16156131635761315c848484612fae565b905061397a565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036131d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c9906155b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323890615643565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132e55750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331b906156af565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133c85750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561352857601460179054906101000a900460ff1661341c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134139061571b565b60405180910390fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134bd5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561350857601154821115613507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134fe906157ad565b60405180910390fd5b5b601460199054906101000a900460ff16613527576135268484613981565b5b5b6000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135ce5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806136225750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806136765750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050801580156136d05750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136e85750601460159054906101000a900460ff165b80156136ff575060148054906101000a900460ff16155b1561374957600061370f3061179a565b905060006010548210159050801561374657601460169054906101000a900460ff161561373c5760105491505b61374582613c01565b5b50505b82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137949190615123565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000816137ee576137e9868686613db3565b6137f0565b835b9050601460189054906101000a900460ff1680156138585750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613880576012548161386a8761179a565b6138749190615157565b111561387f57600080fd5b5b80600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138cb9190615157565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161396b9190614452565b60405180910390a36001925050505b9392505050565b601654601554436139929190615123565b11156139b8576001601460196101000a81548160ff021916908315150217905550613bfd565b6139c0611c43565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015613a2e57506139fe611c43565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15613bfc57600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613ab957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613b17576001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613b9d57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15613bfb576001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5050565b60016014806101000a81548160ff0219169083151502179055506000600f54600e54600d54613c309190615157565b613c3a9190615157565b90506000600282600d5485613c4f9190614f54565b613c5991906157fc565b613c6391906157fc565b905060008184613c739190615123565b9050613c7e8161404a565b600047905060006002600d54613c9491906157fc565b85613c9f9190615123565b90506000600282600d5485613cb49190614f54565b613cbe91906157fc565b613cc891906157fc565b9050600082600f5485613cdb9190614f54565b613ce591906157fc565b90506000818386613cf69190615123565b613d009190615123565b90506000811115613d3857613d37600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826142c6565b5b6000821115613d6e57613d6d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836142c6565b5b600083118015613d7e5750600087115b15613d8e57613d8d8784614339565b5b505050505050505060006014806101000a81548160ff02191690831515021790555050565b6000806103e8600b5484613dc79190614f54565b613dd191906157fc565b90506000309050600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613e795750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613ec5576103e86103de85613e8f9190614f54565b613e9991906157fc565b9150600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613f36565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f35576103e8600c5485613f289190614f54565b613f3291906157fc565b91505b5b60008211156140335781600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f8a9190615157565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161402a9190614452565b60405180910390a35b818461403f9190615123565b925050509392505050565b6000600267ffffffffffffffff811115614067576140666146e8565b5b6040519080825280602002602001820160405280156140955781602001602082028036833780820191505090505b50905030816000815181106140ad576140ac6150ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614154573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061417891906152b7565b8160018151811061418c5761418b6150ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141f330601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612de5565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614257959493929190615926565b600060405180830381600087803b15801561427157600080fd5b505af1158015614285573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516142ba929190615980565b60405180910390a15050565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516142ec906159e1565b60006040518083038185875af1925050503d8060008114614329576040519150601f19603f3d011682016040523d82523d6000602084013e61432e565b606091505b505080915050505050565b61436630601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612de5565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016143ef96959493929190615a17565b60606040518083038185885af115801561440d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144329190615a8d565b5050505050565b6000819050919050565b61444c81614439565b82525050565b60006020820190506144676000830184614443565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144a757808201518184015260208101905061448c565b838111156144b6576000848401525b50505050565b6000601f19601f8301169050919050565b60006144d88261446d565b6144e28185614478565b93506144f2818560208601614489565b6144fb816144bc565b840191505092915050565b6000602082019050818103600083015261452081846144cd565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061456d61456861456384614528565b614548565b614528565b9050919050565b600061457f82614552565b9050919050565b600061459182614574565b9050919050565b6145a181614586565b82525050565b60006020820190506145bc6000830184614598565b92915050565b6000604051905090565b600080fd5b600080fd5b60006145e182614528565b9050919050565b6145f1816145d6565b81146145fc57600080fd5b50565b60008135905061460e816145e8565b92915050565b61461d81614439565b811461462857600080fd5b50565b60008135905061463a81614614565b92915050565b60008060408385031215614657576146566145cc565b5b6000614665858286016145ff565b92505060206146768582860161462b565b9150509250929050565b60008115159050919050565b61469581614680565b82525050565b60006020820190506146b0600083018461468c565b92915050565b6000602082840312156146cc576146cb6145cc565b5b60006146da848285016145ff565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614720826144bc565b810181811067ffffffffffffffff8211171561473f5761473e6146e8565b5b80604052505050565b60006147526145c2565b905061475e8282614717565b919050565b600067ffffffffffffffff82111561477e5761477d6146e8565b5b602082029050602081019050919050565b600080fd5b60006147a76147a284614763565b614748565b905080838252602082019050602084028301858111156147ca576147c961478f565b5b835b818110156147f357806147df88826145ff565b8452602084019350506020810190506147cc565b5050509392505050565b600082601f830112614812576148116146e3565b5b8135614822848260208601614794565b91505092915050565b600067ffffffffffffffff821115614846576148456146e8565b5b602082029050602081019050919050565b600061486a6148658461482b565b614748565b9050808382526020820190506020840283018581111561488d5761488c61478f565b5b835b818110156148b657806148a2888261462b565b84526020840193505060208101905061488f565b5050509392505050565b600082601f8301126148d5576148d46146e3565b5b81356148e5848260208601614857565b91505092915050565b60008060408385031215614905576149046145cc565b5b600083013567ffffffffffffffff811115614923576149226145d1565b5b61492f858286016147fd565b925050602083013567ffffffffffffffff8111156149505761494f6145d1565b5b61495c858286016148c0565b9150509250929050565b60008060006060848603121561497f5761497e6145cc565b5b600061498d868287016145ff565b935050602061499e868287016145ff565b92505060406149af8682870161462b565b9150509250925092565b6149c281614680565b81146149cd57600080fd5b50565b6000813590506149df816149b9565b92915050565b6000602082840312156149fb576149fa6145cc565b5b6000614a09848285016149d0565b91505092915050565b614a1b816145d6565b82525050565b6000602082019050614a366000830184614a12565b92915050565b600060ff82169050919050565b614a5281614a3c565b82525050565b6000602082019050614a6d6000830184614a49565b92915050565b60008060408385031215614a8a57614a896145cc565b5b6000614a98858286016145ff565b9250506020614aa9858286016149d0565b9150509250929050565b600060208284031215614ac957614ac86145cc565b5b6000614ad78482850161462b565b91505092915050565b600080600060608486031215614af957614af86145cc565b5b6000614b078682870161462b565b9350506020614b188682870161462b565b9250506040614b298682870161462b565b9150509250925092565b6000614b3e82614528565b9050919050565b614b4e81614b33565b82525050565b6000602082019050614b696000830184614b45565b92915050565b60008060408385031215614b8657614b856145cc565b5b6000614b948582860161462b565b9250506020614ba58582860161462b565b9150509250929050565b60008060408385031215614bc657614bc56145cc565b5b6000614bd4858286016145ff565b9250506020614be5858286016145ff565b9150509250929050565b600080600060608486031215614c0857614c076145cc565b5b6000614c16868287016149d0565b9350506020614c278682870161462b565b9250506040614c38868287016149d0565b9150509250925092565b60008060008060808587031215614c5c57614c5b6145cc565b5b6000614c6a878288016145ff565b9450506020614c7b878288016149d0565b9350506040614c8c878288016149d0565b9250506060614c9d878288016149d0565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614cdf602083614478565b9150614cea82614ca9565b602082019050919050565b60006020820190508181036000830152614d0e81614cd2565b9050919050565b7f4e657720616464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d71602283614478565b9150614d7c82614d15565b604082019050919050565b60006020820190508181036000830152614da081614d64565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614e2d57808604811115614e0957614e08614da7565b5b6001851615614e185780820291505b8081029050614e2685614dd6565b9450614ded565b94509492505050565b600082614e465760019050614f02565b81614e545760009050614f02565b8160018114614e6a5760028114614e7457614ea3565b6001915050614f02565b60ff841115614e8657614e85614da7565b5b8360020a915084821115614e9d57614e9c614da7565b5b50614f02565b5060208310610133831016604e8410600b8410161715614ed85782820a905083811115614ed357614ed2614da7565b5b614f02565b614ee58484846001614de3565b92509050818404811115614efc57614efb614da7565b5b81810290505b9392505050565b6000614f1482614439565b9150614f1f83614a3c565b9250614f4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614e36565b905092915050565b6000614f5f82614439565b9150614f6a83614439565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fa357614fa2614da7565b5b828202905092915050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614fe4601e83614478565b9150614fef82614fae565b602082019050919050565b6000602082019050818103600083015261501381614fd7565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000615076603683614478565b91506150818261501a565b604082019050919050565b600060208201905081810360008301526150a581615069565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006150e682614439565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361511857615117614da7565b5b600182019050919050565b600061512e82614439565b915061513983614439565b92508282101561514c5761514b614da7565b5b828203905092915050565b600061516282614439565b915061516d83614439565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156151a2576151a1614da7565b5b828201905092915050565b60006040820190506151c26000830185614a12565b6151cf602083018461468c565b9392505050565b60006060820190506151eb6000830186614443565b6151f86020830185614443565b6152056040830184614443565b949350505050565b7f43616e6e6f742065786365656420333025000000000000000000000000000000600082015250565b6000615243601183614478565b915061524e8261520d565b602082019050919050565b6000602082019050818103600083015261527281615236565b9050919050565b600060408201905061528e6000830185614443565b61529b6020830184614443565b9392505050565b6000815190506152b1816145e8565b92915050565b6000602082840312156152cd576152cc6145cc565b5b60006152db848285016152a2565b91505092915050565b60006040820190506152f96000830185614a12565b6153066020830184614a12565b9392505050565b6000606082019050615322600083018661468c565b61532f6020830185614443565b61533c604083018461468c565b949350505050565b60006080820190506153596000830187614a12565b615366602083018661468c565b615373604083018561468c565b615380606083018461468c565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006153e5602683614478565b91506153f082615389565b604082019050919050565b60006020820190508181036000830152615414816153d8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615477602483614478565b91506154828261541b565b604082019050919050565b600060208201905081810360008301526154a68161546a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615509602283614478565b9150615514826154ad565b604082019050919050565b60006020820190508181036000830152615538816154fc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061559b602583614478565b91506155a68261553f565b604082019050919050565b600060208201905081810360008301526155ca8161558e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061562d602383614478565b9150615638826155d1565b604082019050919050565b6000602082019050818103600083015261565c81615620565b9050919050565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b6000615699601f83614478565b91506156a482615663565b602082019050919050565b600060208201905081810360008301526156c88161568c565b9050919050565b7f4e6f74204c61756e636865642e00000000000000000000000000000000000000600082015250565b6000615705600d83614478565b9150615710826156cf565b602082019050919050565b60006020820190508181036000830152615734816156f8565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000615797602883614478565b91506157a28261573b565b604082019050919050565b600060208201905081810360008301526157c68161578a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061580782614439565b915061581283614439565b925082615822576158216157cd565b5b828204905092915050565b6000819050919050565b600061585261584d6158488461582d565b614548565b614439565b9050919050565b61586281615837565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61589d816145d6565b82525050565b60006158af8383615894565b60208301905092915050565b6000602082019050919050565b60006158d382615868565b6158dd8185615873565b93506158e883615884565b8060005b8381101561591957815161590088826158a3565b975061590b836158bb565b9250506001810190506158ec565b5085935050505092915050565b600060a08201905061593b6000830188614443565b6159486020830187615859565b818103604083015261595a81866158c8565b90506159696060830185614a12565b6159766080830184614443565b9695505050505050565b60006040820190506159956000830185614443565b81810360208301526159a781846158c8565b90509392505050565b600081905092915050565b50565b60006159cb6000836159b0565b91506159d6826159bb565b600082019050919050565b60006159ec826159be565b9150819050919050565b6000615a0182614574565b9050919050565b615a11816159f6565b82525050565b600060c082019050615a2c6000830189614a12565b615a396020830188614443565b615a466040830187615859565b615a536060830186615859565b615a606080830185615a08565b615a6d60a0830184614443565b979650505050505050565b600081519050615a8781614614565b92915050565b600080600060608486031215615aa657615aa56145cc565b5b6000615ab486828701615a78565b9350506020615ac586828701615a78565b9250506040615ad686828701615a78565b915050925092509256fea26469706673582212202751e568f8dbf868784b35efa779c03d27abd83f500c2f10ee6d9aafeb49a58c64736f6c634300080d0033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c80638c06f391116101d1578063ca33e64c11610102578063e932ec9a116100a0578063f1d5f5171161006f578063f1d5f51714610d27578063f2fde38b14610d50578063f872858a14610d79578063fe31452414610da457610381565b8063e932ec9a14610c81578063ebc38ab014610caa578063ec28438a14610cd5578063f0ed555b14610cfe57610381565b8063d158272d116100dc578063d158272d14610bc3578063dd4f618014610bee578063dd62ed3e14610c19578063e227cf9514610c5657610381565b8063ca33e64c14610b42578063cc1776d314610b6d578063d00efb2f14610b9857610381565b8063a457c2d71161016f578063c135cc5c11610149578063c135cc5c14610a76578063c647b20e14610a9f578063c851cc3214610ac8578063c867d60b14610b0557610381565b8063a457c2d7146109d3578063a9059cbb14610a10578063baa16dc314610a4d57610381565b80638e3657aa116101ab5780638e3657aa14610915578063916d69431461094057806395d89b411461097d5780639c74aedb146109a857610381565b80638c06f391146108965780638c0b5e22146108bf5780638da5cb5b146108ea57610381565b806339509351116102ab5780636ddd1713116102495780638091f3bf116102235780638091f3bf146107dc578063844d591c1461080757806385b12c7c146108305780638b42507f1461085957610381565b80636ddd17131461075d57806370a0823114610788578063715018a6146107c557610381565b80634cb80fd5116102855780634cb80fd5146106a35780634f7041a5146106cc5780635342acb4146106f7578063552a37841461073457610381565b806339509351146105fe5780633ecad2711461063b578063452ed4f11461067857610381565b806318160ddd116103185780632563ae83116102f25780632563ae831461055457806327c8f8351461057d5780632b112e49146105a8578063313ce567146105d357610381565b806318160ddd146104c35780632307b441146104ee57806323b872dd1461051757610381565b806309218ee71161035457806309218ee714610407578063095ea7b3146104325780631136f62c1461046f578063174e078b1461049857610381565b80630445b6671461038657806306fdde03146103b15780630758d924146103dc57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610dcf565b6040516103a89190614452565b60405180910390f35b3480156103bd57600080fd5b506103c6610dd5565b6040516103d39190614506565b60405180910390f35b3480156103e857600080fd5b506103f1610e12565b6040516103fe91906145a7565b60405180910390f35b34801561041357600080fd5b5061041c610e38565b6040516104299190614452565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190614640565b610e3e565b604051610466919061469b565b60405180910390f35b34801561047b57600080fd5b50610496600480360381019061049191906146b6565b610e5c565b005b3480156104a457600080fd5b506104ad610fdb565b6040516104ba9190614452565b60405180910390f35b3480156104cf57600080fd5b506104d8610fe1565b6040516104e59190614452565b60405180910390f35b3480156104fa57600080fd5b50610515600480360381019061051091906148ee565b611005565b005b34801561052357600080fd5b5061053e60048036038101906105399190614966565b611187565b60405161054b919061469b565b60405180910390f35b34801561056057600080fd5b5061057b600480360381019061057691906149e5565b611240565b005b34801561058957600080fd5b50610592611329565b60405161059f9190614a21565b60405180910390f35b3480156105b457600080fd5b506105bd61132f565b6040516105ca9190614452565b60405180910390f35b3480156105df57600080fd5b506105e8611368565b6040516105f59190614a58565b60405180910390f35b34801561060a57600080fd5b5061062560048036038101906106209190614640565b611371565b604051610632919061469b565b60405180910390f35b34801561064757600080fd5b50610662600480360381019061065d91906146b6565b61141d565b60405161066f919061469b565b60405180910390f35b34801561068457600080fd5b5061068d61143d565b60405161069a9190614a21565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c591906146b6565b611463565b005b3480156106d857600080fd5b506106e16115e2565b6040516106ee9190614452565b60405180910390f35b34801561070357600080fd5b5061071e600480360381019061071991906146b6565b6115e8565b60405161072b919061469b565b60405180910390f35b34801561074057600080fd5b5061075b600480360381019061075691906146b6565b611608565b005b34801561076957600080fd5b50610772611787565b60405161077f919061469b565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa91906146b6565b61179a565b6040516107bc9190614452565b60405180910390f35b3480156107d157600080fd5b506107da6117e3565b005b3480156107e857600080fd5b506107f1611936565b6040516107fe919061469b565b60405180910390f35b34801561081357600080fd5b5061082e60048036038101906108299190614a73565b611949565b005b34801561083c57600080fd5b5061085760048036038101906108529190614ab3565b611a72565b005b34801561086557600080fd5b50610880600480360381019061087b91906146b6565b611b33565b60405161088d919061469b565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190614ae0565b611b53565b005b3480156108cb57600080fd5b506108d4611c3d565b6040516108e19190614452565b60405180910390f35b3480156108f657600080fd5b506108ff611c43565b60405161090c9190614a21565b60405180910390f35b34801561092157600080fd5b5061092a611c6c565b604051610937919061469b565b60405180910390f35b34801561094c57600080fd5b50610967600480360381019061096291906146b6565b611c7f565b604051610974919061469b565b60405180910390f35b34801561098957600080fd5b50610992611c9f565b60405161099f9190614506565b60405180910390f35b3480156109b457600080fd5b506109bd611cdc565b6040516109ca9190614b54565b60405180910390f35b3480156109df57600080fd5b506109fa60048036038101906109f59190614640565b611d02565b604051610a07919061469b565b60405180910390f35b348015610a1c57600080fd5b50610a376004803603810190610a329190614640565b611dae565b604051610a44919061469b565b60405180910390f35b348015610a5957600080fd5b50610a746004803603810190610a6f9190614a73565b611dcd565b005b348015610a8257600080fd5b50610a9d6004803603810190610a9891906149e5565b611ef6565b005b348015610aab57600080fd5b50610ac66004803603810190610ac19190614b6f565b611fa8565b005b348015610ad457600080fd5b50610aef6004803603810190610aea91906146b6565b612112565b604051610afc9190614a21565b60405180910390f35b348015610b1157600080fd5b50610b2c6004803603810190610b2791906146b6565b61264c565b604051610b39919061469b565b60405180910390f35b348015610b4e57600080fd5b50610b5761266c565b604051610b649190614b54565b60405180910390f35b348015610b7957600080fd5b50610b82612692565b604051610b8f9190614452565b60405180910390f35b348015610ba457600080fd5b50610bad612698565b604051610bba9190614452565b60405180910390f35b348015610bcf57600080fd5b50610bd861269e565b604051610be59190614b54565b60405180910390f35b348015610bfa57600080fd5b50610c036126c4565b604051610c109190614452565b60405180910390f35b348015610c2557600080fd5b50610c406004803603810190610c3b9190614baf565b6126ca565b604051610c4d9190614452565b60405180910390f35b348015610c6257600080fd5b50610c6b612751565b604051610c78919061469b565b60405180910390f35b348015610c8d57600080fd5b50610ca86004803603810190610ca39190614bef565b612764565b005b348015610cb657600080fd5b50610cbf612874565b604051610ccc9190614452565b60405180910390f35b348015610ce157600080fd5b50610cfc6004803603810190610cf79190614ab3565b61287a565b005b348015610d0a57600080fd5b50610d256004803603810190610d209190614c42565b612950565b005b348015610d3357600080fd5b50610d4e6004803603810190610d499190614ab3565b612b2d565b005b348015610d5c57600080fd5b50610d776004803603810190610d7291906146b6565b612c03565b005b348015610d8557600080fd5b50610d8e612dc4565b604051610d9b919061469b565b60405180910390f35b348015610db057600080fd5b50610db9612dd7565b604051610dc69190614452565b60405180910390f35b60105481565b60606040518060400160405280600681526020017f44726970746f0000000000000000000000000000000000000000000000000000815250905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6000610e52610e4b612ddd565b8484612de5565b6001905092915050565b610e64612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee890614cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5790614d87565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4e25f95b69ee5871f8ec400ed0eb429017888b12be11fe3d20d8c365b977103b81604051610fd09190614a21565b60405180910390a150565b60165481565b60006012600a610ff19190614f09565b6308f0d1806110009190614f54565b905090565b61100d612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109190614cf5565b60405180910390fd5b80518251146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590614ffa565b60405180910390fd5b610258825110611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111a9061508c565b60405180910390fd5b60005b82518110156111825761116e33848381518110611146576111456150ac565b5b6020026020010151848481518110611161576111606150ac565b5b6020026020010151612fae565b50808061117a906150db565b915050611126565b505050565b600061119484848461313c565b50611235846111a1612ddd565b84600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111eb612ddd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112309190615123565b612de5565b600190509392505050565b611248612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90614cf5565b60405180910390fd5b80601460186101000a81548160ff0219169083151502179055507fd77f03fb55ba6b94fd92cce5c4299c19942acdde281980bdcd02f132dd27fd348160405161131e919061469b565b60405180910390a150565b61dead81565b600061133c61dead61179a565b6012600a61134a9190614f09565b6308f0d1806113599190614f54565b6113639190615123565b905090565b60006012905090565b600061141361137e612ddd565b84846005600061138c612ddd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461140e9190615157565b612de5565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61146b612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90614cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90614d87565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b816040516115d79190614a21565b60405180910390a150565b600b5481565b60066020528060005260406000206000915054906101000a900460ff1681565b611610612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169490614cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361170c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170390614d87565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5ad06f46cd61f5643aac67ef701d1ab75b4200e38bf76ef4a74b5328cfb26e318160405161177c9190614a21565b60405180910390a150565b601460159054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117eb612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90614cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601460179054906101000a900460ff1681565b611951612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590614cf5565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f160ff69a72bc70f3e792a86c87d27070e421562197f032d96bcab11c5010222e8282604051611a669291906151ad565b60405180910390a15050565b611a7a612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe90614cf5565b60405180910390fd5b6001601460176101000a81548160ff021916908315150217905550436015819055508060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b611b5b612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf90614cf5565b60405180910390fd5b82600d8190555081600e8190555080600f819055507f182101bc4f3117ca4bac06c236d9b9d22164fd259705bb944f9c4580cdba1d9b838383604051611c30939291906151d6565b60405180910390a1505050565b60115481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601460169054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600481526020017f4452595000000000000000000000000000000000000000000000000000000000815250905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611da4611d0f612ddd565b848460056000611d1d612ddd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d9f9190615123565b612de5565b6001905092915050565b6000611dc2611dbb612ddd565b848461313c565b506001905092915050565b611dd5612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5990614cf5565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f0861ffea819c7470cbefb1765bce78388684cd327b561fd217484236b4cbb2d38282604051611eea9291906151ad565b60405180910390a15050565b611efe612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8290614cf5565b60405180910390fd5b80601460176101000a81548160ff02191690831515021790555050565b611fb0612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461203d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203490614cf5565b60405180910390fd5b61012c821115612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990615259565b60405180910390fd5b61012c8111156120c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120be90615259565b60405180910390fd5b81600b8190555080600c819055507f5eee0b95930ee59011f34615b0b7dc6cc58c01d1f07d04a01a3a1e70d2554cf08282604051612106929190615279565b60405180910390a15050565b600061211c612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a090614cf5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221d91906152b7565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a891906152b7565b6040518363ffffffff1660e01b81526004016122c59291906152e4565b602060405180830381865afa1580156122e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230691906152b7565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612499578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ab91906152b7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243691906152b7565b6040518363ffffffff1660e01b81526004016124539291906152e4565b6020604051808303816000875af1158015612472573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249691906152b7565b91505b81601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f267352536b1d9b9f4a233ca70670294dd64e12064915564aad906bc177663d998360405161263e9190614a21565b60405180910390a150919050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60155481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460199054906101000a900460ff1681565b61276c612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f090614cf5565b60405180910390fd5b82601460156101000a81548160ff0219169083151502179055508160108190555080601460166101000a81548160ff0219169083151502179055507f11208aed08835f646702af16c636fb4351554fa2f623991905cadb0293a88afc8383836040516128679392919061530d565b60405180910390a1505050565b600d5481565b612882612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461290f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290690614cf5565b60405180910390fd5b806011819055507fcff95ed354a1a3fcbabf882bfa4a9319f55569c324478c800820398451df1871816040516129459190614452565b60405180910390a150565b612958612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129dc90614cf5565b60405180910390fd5b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f12d9c9f75d95e930caf8a1f18460585ce2349b367898dbf23e394afef2d35d9584848484604051612b1f9493929190615344565b60405180910390a150505050565b612b35612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb990614cf5565b60405180910390fd5b806012819055507f7872485612198920508f0a96f4e47084f84df76e33b2b1d76ceff0dc83499aa681604051612bf89190614452565b60405180910390a150565b612c0b612ddd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8f90614cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfe906153fb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601460189054906101000a900460ff1681565b60125481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4b9061548d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eba9061551f565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612fa19190614452565b60405180910390a3505050565b600081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ffb9190615123565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130899190615157565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131299190614452565b60405180910390a3600190509392505050565b600060148054906101000a900460ff16156131635761315c848484612fae565b905061397a565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036131d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c9906155b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323890615643565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132e55750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331b906156af565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133c85750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561352857601460179054906101000a900460ff1661341c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134139061571b565b60405180910390fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134bd5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561350857601154821115613507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134fe906157ad565b60405180910390fd5b5b601460199054906101000a900460ff16613527576135268484613981565b5b5b6000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135ce5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806136225750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806136765750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050801580156136d05750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136e85750601460159054906101000a900460ff165b80156136ff575060148054906101000a900460ff16155b1561374957600061370f3061179a565b905060006010548210159050801561374657601460169054906101000a900460ff161561373c5760105491505b61374582613c01565b5b50505b82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137949190615123565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000816137ee576137e9868686613db3565b6137f0565b835b9050601460189054906101000a900460ff1680156138585750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613880576012548161386a8761179a565b6138749190615157565b111561387f57600080fd5b5b80600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138cb9190615157565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161396b9190614452565b60405180910390a36001925050505b9392505050565b601654601554436139929190615123565b11156139b8576001601460196101000a81548160ff021916908315150217905550613bfd565b6139c0611c43565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015613a2e57506139fe611c43565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15613bfc57600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613ab957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613b17576001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613b9d57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15613bfb576001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5050565b60016014806101000a81548160ff0219169083151502179055506000600f54600e54600d54613c309190615157565b613c3a9190615157565b90506000600282600d5485613c4f9190614f54565b613c5991906157fc565b613c6391906157fc565b905060008184613c739190615123565b9050613c7e8161404a565b600047905060006002600d54613c9491906157fc565b85613c9f9190615123565b90506000600282600d5485613cb49190614f54565b613cbe91906157fc565b613cc891906157fc565b9050600082600f5485613cdb9190614f54565b613ce591906157fc565b90506000818386613cf69190615123565b613d009190615123565b90506000811115613d3857613d37600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826142c6565b5b6000821115613d6e57613d6d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836142c6565b5b600083118015613d7e5750600087115b15613d8e57613d8d8784614339565b5b505050505050505060006014806101000a81548160ff02191690831515021790555050565b6000806103e8600b5484613dc79190614f54565b613dd191906157fc565b90506000309050600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613e795750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613ec5576103e86103de85613e8f9190614f54565b613e9991906157fc565b9150600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613f36565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f35576103e8600c5485613f289190614f54565b613f3291906157fc565b91505b5b60008211156140335781600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f8a9190615157565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161402a9190614452565b60405180910390a35b818461403f9190615123565b925050509392505050565b6000600267ffffffffffffffff811115614067576140666146e8565b5b6040519080825280602002602001820160405280156140955781602001602082028036833780820191505090505b50905030816000815181106140ad576140ac6150ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614154573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061417891906152b7565b8160018151811061418c5761418b6150ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141f330601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612de5565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614257959493929190615926565b600060405180830381600087803b15801561427157600080fd5b505af1158015614285573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516142ba929190615980565b60405180910390a15050565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516142ec906159e1565b60006040518083038185875af1925050503d8060008114614329576040519150601f19603f3d011682016040523d82523d6000602084013e61432e565b606091505b505080915050505050565b61436630601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612de5565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016143ef96959493929190615a17565b60606040518083038185885af115801561440d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144329190615a8d565b5050505050565b6000819050919050565b61444c81614439565b82525050565b60006020820190506144676000830184614443565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144a757808201518184015260208101905061448c565b838111156144b6576000848401525b50505050565b6000601f19601f8301169050919050565b60006144d88261446d565b6144e28185614478565b93506144f2818560208601614489565b6144fb816144bc565b840191505092915050565b6000602082019050818103600083015261452081846144cd565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061456d61456861456384614528565b614548565b614528565b9050919050565b600061457f82614552565b9050919050565b600061459182614574565b9050919050565b6145a181614586565b82525050565b60006020820190506145bc6000830184614598565b92915050565b6000604051905090565b600080fd5b600080fd5b60006145e182614528565b9050919050565b6145f1816145d6565b81146145fc57600080fd5b50565b60008135905061460e816145e8565b92915050565b61461d81614439565b811461462857600080fd5b50565b60008135905061463a81614614565b92915050565b60008060408385031215614657576146566145cc565b5b6000614665858286016145ff565b92505060206146768582860161462b565b9150509250929050565b60008115159050919050565b61469581614680565b82525050565b60006020820190506146b0600083018461468c565b92915050565b6000602082840312156146cc576146cb6145cc565b5b60006146da848285016145ff565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614720826144bc565b810181811067ffffffffffffffff8211171561473f5761473e6146e8565b5b80604052505050565b60006147526145c2565b905061475e8282614717565b919050565b600067ffffffffffffffff82111561477e5761477d6146e8565b5b602082029050602081019050919050565b600080fd5b60006147a76147a284614763565b614748565b905080838252602082019050602084028301858111156147ca576147c961478f565b5b835b818110156147f357806147df88826145ff565b8452602084019350506020810190506147cc565b5050509392505050565b600082601f830112614812576148116146e3565b5b8135614822848260208601614794565b91505092915050565b600067ffffffffffffffff821115614846576148456146e8565b5b602082029050602081019050919050565b600061486a6148658461482b565b614748565b9050808382526020820190506020840283018581111561488d5761488c61478f565b5b835b818110156148b657806148a2888261462b565b84526020840193505060208101905061488f565b5050509392505050565b600082601f8301126148d5576148d46146e3565b5b81356148e5848260208601614857565b91505092915050565b60008060408385031215614905576149046145cc565b5b600083013567ffffffffffffffff811115614923576149226145d1565b5b61492f858286016147fd565b925050602083013567ffffffffffffffff8111156149505761494f6145d1565b5b61495c858286016148c0565b9150509250929050565b60008060006060848603121561497f5761497e6145cc565b5b600061498d868287016145ff565b935050602061499e868287016145ff565b92505060406149af8682870161462b565b9150509250925092565b6149c281614680565b81146149cd57600080fd5b50565b6000813590506149df816149b9565b92915050565b6000602082840312156149fb576149fa6145cc565b5b6000614a09848285016149d0565b91505092915050565b614a1b816145d6565b82525050565b6000602082019050614a366000830184614a12565b92915050565b600060ff82169050919050565b614a5281614a3c565b82525050565b6000602082019050614a6d6000830184614a49565b92915050565b60008060408385031215614a8a57614a896145cc565b5b6000614a98858286016145ff565b9250506020614aa9858286016149d0565b9150509250929050565b600060208284031215614ac957614ac86145cc565b5b6000614ad78482850161462b565b91505092915050565b600080600060608486031215614af957614af86145cc565b5b6000614b078682870161462b565b9350506020614b188682870161462b565b9250506040614b298682870161462b565b9150509250925092565b6000614b3e82614528565b9050919050565b614b4e81614b33565b82525050565b6000602082019050614b696000830184614b45565b92915050565b60008060408385031215614b8657614b856145cc565b5b6000614b948582860161462b565b9250506020614ba58582860161462b565b9150509250929050565b60008060408385031215614bc657614bc56145cc565b5b6000614bd4858286016145ff565b9250506020614be5858286016145ff565b9150509250929050565b600080600060608486031215614c0857614c076145cc565b5b6000614c16868287016149d0565b9350506020614c278682870161462b565b9250506040614c38868287016149d0565b9150509250925092565b60008060008060808587031215614c5c57614c5b6145cc565b5b6000614c6a878288016145ff565b9450506020614c7b878288016149d0565b9350506040614c8c878288016149d0565b9250506060614c9d878288016149d0565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614cdf602083614478565b9150614cea82614ca9565b602082019050919050565b60006020820190508181036000830152614d0e81614cd2565b9050919050565b7f4e657720616464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d71602283614478565b9150614d7c82614d15565b604082019050919050565b60006020820190508181036000830152614da081614d64565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614e2d57808604811115614e0957614e08614da7565b5b6001851615614e185780820291505b8081029050614e2685614dd6565b9450614ded565b94509492505050565b600082614e465760019050614f02565b81614e545760009050614f02565b8160018114614e6a5760028114614e7457614ea3565b6001915050614f02565b60ff841115614e8657614e85614da7565b5b8360020a915084821115614e9d57614e9c614da7565b5b50614f02565b5060208310610133831016604e8410600b8410161715614ed85782820a905083811115614ed357614ed2614da7565b5b614f02565b614ee58484846001614de3565b92509050818404811115614efc57614efb614da7565b5b81810290505b9392505050565b6000614f1482614439565b9150614f1f83614a3c565b9250614f4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614e36565b905092915050565b6000614f5f82614439565b9150614f6a83614439565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fa357614fa2614da7565b5b828202905092915050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614fe4601e83614478565b9150614fef82614fae565b602082019050919050565b6000602082019050818103600083015261501381614fd7565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000615076603683614478565b91506150818261501a565b604082019050919050565b600060208201905081810360008301526150a581615069565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006150e682614439565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361511857615117614da7565b5b600182019050919050565b600061512e82614439565b915061513983614439565b92508282101561514c5761514b614da7565b5b828203905092915050565b600061516282614439565b915061516d83614439565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156151a2576151a1614da7565b5b828201905092915050565b60006040820190506151c26000830185614a12565b6151cf602083018461468c565b9392505050565b60006060820190506151eb6000830186614443565b6151f86020830185614443565b6152056040830184614443565b949350505050565b7f43616e6e6f742065786365656420333025000000000000000000000000000000600082015250565b6000615243601183614478565b915061524e8261520d565b602082019050919050565b6000602082019050818103600083015261527281615236565b9050919050565b600060408201905061528e6000830185614443565b61529b6020830184614443565b9392505050565b6000815190506152b1816145e8565b92915050565b6000602082840312156152cd576152cc6145cc565b5b60006152db848285016152a2565b91505092915050565b60006040820190506152f96000830185614a12565b6153066020830184614a12565b9392505050565b6000606082019050615322600083018661468c565b61532f6020830185614443565b61533c604083018461468c565b949350505050565b60006080820190506153596000830187614a12565b615366602083018661468c565b615373604083018561468c565b615380606083018461468c565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006153e5602683614478565b91506153f082615389565b604082019050919050565b60006020820190508181036000830152615414816153d8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615477602483614478565b91506154828261541b565b604082019050919050565b600060208201905081810360008301526154a68161546a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615509602283614478565b9150615514826154ad565b604082019050919050565b60006020820190508181036000830152615538816154fc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061559b602583614478565b91506155a68261553f565b604082019050919050565b600060208201905081810360008301526155ca8161558e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061562d602383614478565b9150615638826155d1565b604082019050919050565b6000602082019050818103600083015261565c81615620565b9050919050565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b6000615699601f83614478565b91506156a482615663565b602082019050919050565b600060208201905081810360008301526156c88161568c565b9050919050565b7f4e6f74204c61756e636865642e00000000000000000000000000000000000000600082015250565b6000615705600d83614478565b9150615710826156cf565b602082019050919050565b60006020820190508181036000830152615734816156f8565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000615797602883614478565b91506157a28261573b565b604082019050919050565b600060208201905081810360008301526157c68161578a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061580782614439565b915061581283614439565b925082615822576158216157cd565b5b828204905092915050565b6000819050919050565b600061585261584d6158488461582d565b614548565b614439565b9050919050565b61586281615837565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61589d816145d6565b82525050565b60006158af8383615894565b60208301905092915050565b6000602082019050919050565b60006158d382615868565b6158dd8185615873565b93506158e883615884565b8060005b8381101561591957815161590088826158a3565b975061590b836158bb565b9250506001810190506158ec565b5085935050505092915050565b600060a08201905061593b6000830188614443565b6159486020830187615859565b818103604083015261595a81866158c8565b90506159696060830185614a12565b6159766080830184614443565b9695505050505050565b60006040820190506159956000830185614443565b81810360208301526159a781846158c8565b90509392505050565b600081905092915050565b50565b60006159cb6000836159b0565b91506159d6826159bb565b600082019050919050565b60006159ec826159be565b9150819050919050565b6000615a0182614574565b9050919050565b615a11816159f6565b82525050565b600060c082019050615a2c6000830189614a12565b615a396020830188614443565b615a466040830187615859565b615a536060830186615859565b615a606080830185615a08565b615a6d60a0830184614443565b979650505050505050565b600081519050615a8781614614565b92915050565b600080600060608486031215615aa657615aa56145cc565b5b6000615ab486828701615a78565b9350506020615ac586828701615a78565b9250506040615ad686828701615a78565b915050925092509256fea26469706673582212202751e568f8dbf868784b35efa779c03d27abd83f500c2f10ee6d9aafeb49a58c64736f6c634300080d0033

Deployed Bytecode Sourcemap

4313:17703:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5651:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8762:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5833:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5492:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10016:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14698:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6168:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9039:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21466:541;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10708:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13457:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4510:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9151:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8948:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9562:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5169:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5867:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14369:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5389:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5112:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15034:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5929:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9284:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2022:148;;;;;;;;;;;;;:::i;:::-;;6008:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12256:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11765:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5273:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12782:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5711:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1801:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5966:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5221:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8853:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4844:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9784:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10533:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12056:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11951:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12464:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10985:772;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5328:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4598:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5422:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6131:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4717:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5533:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9410:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6085:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14036:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5458:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13132:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13653:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13298:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2178:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6043:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5772:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5651;;;;:::o;8762:83::-;8799:13;8832:5;;;;;;;;;;;;;;;;;8825:12;;8762:83;:::o;5833:27::-;;;;;;;;;;;;;:::o;5492:34::-;;;;:::o;10016:161::-;10091:4;10108:39;10117:12;:10;:12::i;:::-;10131:7;10140:6;10108:8;:39::i;:::-;10165:4;10158:11;;10016:161;;;;:::o;14698:328::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14842:1:::1;14806:38;;:24;:38;;::::0;14798:85:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14928:24;14894:23;;:59;;;;;;;;;;;;;;;;;;14969:49;14993:24;14969:49;;;;;;:::i;:::-;;;;;;;;14698:328:::0;:::o;6168:35::-;;;;:::o;9039:100::-;9092:7;4499:2;5631;:13;;;;:::i;:::-;5617:11;:27;;;;:::i;:::-;9112:19;;9039:100;:::o;21466:541::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21608:15:::1;:22;21590:7;:14;:40;21582:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21701:3;21684:7;:14;:20;21676:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;21876:9;21872:128;21895:7;:14;21891:1;:18;21872:128;;;21930:58;21945:10;21957:7;21965:1;21957:10;;;;;;;;:::i;:::-;;;;;;;;21969:15;21985:1;21969:18;;;;;;;;:::i;:::-;;;;;;;;21930:14;:58::i;:::-;;21911:3;;;;;:::i;:::-;;;;21872:128;;;;21466:541:::0;;:::o;10708:265::-;10806:4;10823:36;10833:6;10841:9;10852:6;10823:9;:36::i;:::-;;10870:73;10879:6;10887:12;:10;:12::i;:::-;10936:6;10901:10;:18;10912:6;10901:18;;;;;;;;;;;;;;;:32;10920:12;:10;:12::i;:::-;10901:32;;;;;;;;;;;;;;;;:41;;;;:::i;:::-;10870:8;:73::i;:::-;10961:4;10954:11;;10708:265;;;;;:::o;13457:188::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13564:17:::1;13545:16;;:36;;;;;;;;;;;;;;;;;;13597:40;13619:17;13597:40;;;;;;:::i;:::-;;;;;;;;13457:188:::0;:::o;4510:81::-;4549:42;4510:81;:::o;9151:125::-;9204:7;9246:22;4549:42;9246:9;:22::i;:::-;4499:2;5631;:13;;;;:::i;:::-;5617:11;:27;;;;:::i;:::-;9231:37;;;;:::i;:::-;9224:44;;9151:125;:::o;8948:83::-;8989:5;4499:2;9007:16;;8948:83;:::o;9562:214::-;9650:4;9667:79;9676:12;:10;:12::i;:::-;9690:7;9735:10;9699;:24;9710:12;:10;:12::i;:::-;9699:24;;;;;;;;;;;;;;;:33;9724:7;9699:33;;;;;;;;;;;;;;;;:46;;;;:::i;:::-;9667:8;:79::i;:::-;9764:4;9757:11;;9562:214;;;;:::o;5169:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;5867:21::-;;;;;;;;;;;;;:::o;14369:321::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14510:1:::1;14475:37;;:23;:37;;::::0;14467:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14595:23;14562:22;;:57;;;;;;;;;;;;;;;;;;14635:47;14658:23;14635:47;;;;;;:::i;:::-;;;;;;;;14369:321:::0;:::o;5389:26::-;;;;:::o;5112:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;15034:321::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15172:1:::1;15138:36;;:22;:36;;::::0;15130:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15256:22;15224:21;;:55;;;;;;;;;;;;;;;;;;15295:52;15324:22;15295:52;;;;;;:::i;:::-;;;;;;;;15034:321:::0;:::o;5929:30::-;;;;;;;;;;;;;:::o;9284:118::-;9350:7;9377:8;:17;9386:7;9377:17;;;;;;;;;;;;;;;;9370:24;;9284:118;;;:::o;2022:148::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2129:1:::1;2092:40;;2113:6;::::0;::::1;;;;;;;;2092:40;;;;;;;;;;;;2160:1;2143:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2022:148::o:0;6008:28::-;;;;;;;;;;;;;:::o;12256:196::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12374:13:::1;12350:12;:21;12363:7;12350:21;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;12403:41;12421:7;12430:13;12403:41;;;;;;;:::i;:::-;;;;;;;;12256:196:::0;;:::o;11765:178::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11847:4:::1;11836:8;;:15;;;;;;;;;;;;;;;;;;11876:12;11862:11;:26;;;;11918:17;11899:16;:36;;;;11765:178:::0;:::o;5273:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;12782:342::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12925:10:::1;12915:7;:20;;;;12963:17;12946:14;:34;;;;13009:18;12991:15;:36;;;;13043:73;13066:10;13078:17;13097:18;13043:73;;;;;;;;:::i;:::-;;;;;;;;12782:342:::0;;;:::o;5711:54::-;;;;:::o;1801:79::-;1839:7;1866:6;;;;;;;;;;;1859:13;;1801:79;:::o;5966:35::-;;;;;;;;;;;;;:::o;5221:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;8853:87::-;8892:13;8925:7;;;;;;;;;;;;;;;;;8918:14;;8853:87;:::o;4844:100::-;;;;;;;;;;;;;:::o;9784:224::-;9877:4;9894:84;9903:12;:10;:12::i;:::-;9917:7;9962:15;9926:10;:24;9937:12;:10;:12::i;:::-;9926:24;;;;;;;;;;;;;;;:33;9951:7;9926:33;;;;;;;;;;;;;;;;:51;;;;:::i;:::-;9894:8;:84::i;:::-;9996:4;9989:11;;9784:224;;;;:::o;10533:167::-;10611:4;10628:42;10638:12;:10;:12::i;:::-;10652:9;10663:6;10628:9;:42::i;:::-;;10688:4;10681:11;;10533:167;;;;:::o;12056:192::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12170:13:::1;12146:12;:21;12159:7;12146:21;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;12199:41;12217:7;12226:13;12199:41;;;;;;;:::i;:::-;;;;;;;;12056:192:::0;;:::o;11951:97::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12031:9:::1;12020:8;;:20;;;;;;;;;;;;;;;;;;11951:97:::0;:::o;12464:310::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12572:3:::1;12559:9;:16;;12551:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12630:3;12616:10;:17;;12608:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12675:9;12666:6;:18;;;;12705:10;12695:7;:20;;;;12731:35;12744:9;12755:10;12731:35;;;;;;;:::i;:::-;;;;;;;;12464:310:::0;;:::o;10985:772::-;11058:22;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11093:21:::1;11128:16;11093:52;;11186:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11174:41;;;11224:4;11231:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11174:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11157:92;;11291:1;11265:28;;:14;:28;;::::0;11262:214:::1;;11364:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11352:78;;;11439:4;11446:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11352:112;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11335:129;;11262:214;11497:14;11488:6;;:23;;;;;;;;;;;;;;;;;;11557:10;11545:9;;:22;;;;;;;;;;;;;;;;;;11644:4;11605:19;:36;11633:6;;;;;;;;;;;11605:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;11691:4;11659:12;:29;11680:6;;;;;;;;;;;11659:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;11711:38;11732:16;11711:38;;;;;;:::i;:::-;;;;;;;;11082:675;10985:772:::0;;;:::o;5328:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;4598:98::-;;;;;;;;;;;;;:::o;5422:27::-;;;;:::o;6131:30::-;;;;:::o;4717:99::-;;;;;;;;;;;;;:::o;5533:35::-;;;;:::o;9410:144::-;9492:7;9519:10;:18;9530:6;9519:18;;;;;;;;;;;;;;;:27;9538:7;9519:27;;;;;;;;;;;;;;;;9512:34;;9410:144;;;;:::o;6085:37::-;;;;;;;;;;;;;:::o;14036:325::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14172:12:::1;14158:11;;:26;;;;;;;;;;;;;;;;;;14211:14;14195:13;:30;;;;14254:16;14236:15;;:34;;;;;;;;;;;;;;;;;;14286:67;14306:12;14320:14;14336:16;14286:67;;;;;;;;:::i;:::-;;;;;;;;14036:325:::0;;;:::o;5458:27::-;;;;:::o;13132:158::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13222:12:::1;13208:11;:26;;;;13250:32;13269:12;13250:32;;;;;;:::i;:::-;;;;;;;;13132:158:::0;:::o;13653:375::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13813:9:::1;13784:17;:26;13802:7;13784:26;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13864:17;13833:19;:28;13853:7;13833:28;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;13919:13;13892:15;:24;13908:7;13892:24;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;13948:72;13967:7;13976:9;13987:17;14006:13;13948:72;;;;;;;;;:::i;:::-;;;;;;;;13653:375:::0;;;;:::o;13298:151::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13385:10:::1;13372:9;:23;;;;13411:30;13430:10;13411:30;;;;;;:::i;:::-;;;;;;;;13298:151:::0;:::o;2178:244::-;1945:12;:10;:12::i;:::-;1935:22;;:6;;;;;;;;;;:22;;;1927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2287:1:::1;2267:22;;:8;:22;;::::0;2259:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2377:8;2348:38;;2369:6;::::0;::::1;;;;;;;;2348:38;;;;;;;;;;;;2406:8;2397:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2178:244:::0;:::o;6043:35::-;;;;;;;;;;;;;:::o;5772:52::-;;;;:::o;1118:115::-;1171:15;1214:10;1199:26;;1118:115;:::o;10185:340::-;10297:1;10279:20;;:6;:20;;;10271:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10378:1;10359:21;;:7;:21;;;10351:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10462:6;10432:10;:18;10443:6;10432:18;;;;;;;;;;;;;;;:27;10451:7;10432:27;;;;;;;;;;;;;;;:36;;;;10501:7;10484:33;;10493:6;10484:33;;;10510:6;10484:33;;;;;;:::i;:::-;;;;;;;;10185:340;;;:::o;18177:296::-;18270:4;18325:6;18306:8;:16;18315:6;18306:16;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;18287:8;:16;18296:6;18287:16;;;;;;;;;;;;;;;:44;;;;18386:6;18364:8;:19;18373:9;18364:19;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;18342:8;:19;18351:9;18342:19;;;;;;;;;;;;;;;:50;;;;18425:9;18408:35;;18417:6;18408:35;;;18436:6;18408:35;;;;;;:::i;:::-;;;;;;;;18461:4;18454:11;;18177:296;;;;;:::o;15549:2097::-;15636:4;15656:8;;;;;;;;;;15653:1986;;;15689:41;15704:6;15712:9;15723:6;15689:14;:41::i;:::-;15682:48;;;;15653:1986;15790:1;15772:20;;:6;:20;;;15764:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15878:1;15857:23;;:9;:23;;;15849:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15944:12;:20;15957:6;15944:20;;;;;;;;;;;;;;;;;;;;;;;;;15943:21;:49;;;;;15969:12;:23;15982:9;15969:23;;;;;;;;;;;;;;;;;;;;;;;;;15968:24;15943:49;15935:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;16049:15;:23;16065:6;16049:23;;;;;;;;;;;;;;;;;;;;;;;;;16048:24;:55;;;;;16077:15;:26;16093:9;16077:26;;;;;;;;;;;;;;;;;;;;;;;;;16076:27;16048:55;16045:429;;;16132:8;;;;;;;;;;;16124:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;16180:12;:20;16193:6;16180:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;16204:12;:23;16217:9;16204:23;;;;;;;;;;;;;;;;;;;;;;;;;16180:47;16177:169;;;16270:11;;16260:6;:21;;16252:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16177:169;16368:17;;;;;;;;;;;16364:95;;16410:29;16421:6;16429:9;16410:10;:29::i;:::-;16364:95;16045:429;16490:14;16510:12;:20;16523:6;16510:20;;;;;;;;;;;;;;;;;;;;;;;;;16509:21;:49;;;;;16535:12;:23;16548:9;16535:23;;;;;;;;;;;;;;;;;;;;;;;;;16534:24;16509:49;16508:114;;;;16597:17;:25;16615:6;16597:25;;;;;;;;;;;;;;;;;;;;;;;;;16508:114;:146;;;;16626:17;:28;16644:9;16626:28;;;;;;;;;;;;;;;;;;;;;;;;;16508:146;16490:165;;16677:9;16676:10;:35;;;;;16691:12;:20;16704:6;16691:20;;;;;;;;;;;;;;;;;;;;;;;;;16690:21;16676:35;:50;;;;;16715:11;;;;;;;;;;;16676:50;:63;;;;;16731:8;;;;;;;;;;16730:9;16676:63;16672:493;;;16774:28;16805:24;16823:4;16805:9;:24::i;:::-;16774:55;;16848:28;16903:13;;16879:20;:37;;16848:68;;16938:23;16935:215;;;16989:15;;;;;;;;;;;16986:81;;;17054:13;;17031:36;;16986:81;17090:36;17105:20;17090:14;:36::i;:::-;16935:215;16755:410;;16672:493;17219:6;17200:8;:16;17209:6;17200:16;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;17181:8;:16;17190:6;17181:16;;;;;;;;;;;;;;;:44;;;;17242:19;17264:9;:55;;17285:34;17293:6;17301:9;17312:6;17285:7;:34::i;:::-;17264:55;;;17276:6;17264:55;17242:77;;17339:16;;;;;;;;;;;:51;;;;;17360:19;:30;17380:9;17360:30;;;;;;;;;;;;;;;;;;;;;;;;;17359:31;17339:51;17336:131;;;17457:9;;17441:11;17418:20;17428:9;17418;:20::i;:::-;:34;;;;:::i;:::-;17417:49;;17409:58;;;;;;17336:131;17528:11;17506:8;:19;17515:9;17506:19;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;17484:8;:19;17493:9;17484:19;;;;;;;;;;;;;;;:55;;;;17578:9;17561:40;;17570:6;17561:40;;;17589:11;17561:40;;;;;;:::i;:::-;;;;;;;;17623:4;17616:11;;;;15549:2097;;;;;;:::o;17654:515::-;17762:16;;17747:11;;17732:12;:26;;;;:::i;:::-;17731:47;17728:434;;;17815:4;17795:17;;:24;;;;;;;;;;;;;;;;;;17728:434;;;17850:7;:5;:7::i;:::-;17840:17;;:6;:17;;;;:41;;;;;17874:7;:5;:7::i;:::-;17861:20;;:9;:20;;;;17840:41;17837:325;;;17902:12;:20;17915:6;17902:20;;;;;;;;;;;;;;;;;;;;;;;;;17901:21;:48;;;;;17944:4;17926:23;;:6;:23;;;;17901:48;17898:115;;;17993:4;17970:12;:20;17983:6;17970:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;17898:115;18031:12;:23;18044:9;18031:23;;;;;;;;;;;;;;;;;;;;;;;;;18030:24;:54;;;;;18079:4;18058:26;;:9;:26;;;;18030:54;18027:124;;;18131:4;18105:12;:23;18118:9;18105:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;18027:124;17837:325;17728:434;17654:515;;:::o;18481:1081::-;7266:4;7255:8;;:15;;;;;;;;;;;;;;;;;;18553:19:::1;18602:15;;18585:14;;18575:7;;:24;;;;:::i;:::-;:42;;;;:::i;:::-;18553:64;;18628:19;18688:1;18673:11;18662:7;;18652;:17;;;;:::i;:::-;18651:33;;;;:::i;:::-;18650:39;;;;:::i;:::-;18628:61;;18700:21;18734:11;18724:7;:21;;;;:::i;:::-;18700:45;;18758:31;18775:13;18758:16;:31::i;:::-;18810:22;18835:21;18810:46;;18869:17;18914:1;18904:7;;:11;;;;:::i;:::-;18889;:27;;;;:::i;:::-;18869:47;;18937:23;19006:1;18993:9;18982:7;;18965:14;:24;;;;:::i;:::-;18964:38;;;;:::i;:::-;18963:44;;;;:::i;:::-;18937:70;;19018:24;19082:9;19063:15;;19046:14;:32;;;;:::i;:::-;19045:46;;;;:::i;:::-;19018:73;;19102:23;19163:16;19145:15;19128:14;:32;;;;:::i;:::-;:51;;;;:::i;:::-;19102:77;;19213:1;19195:15;:19;19192:112;;;19231:61;19252:22;;;;;;;;;;;19276:15;19231:20;:61::i;:::-;19192:112;19338:1;19319:16;:20;19316:115;;;19356:63;19377:23;;;;;;;;;;;19402:16;19356:20;:63::i;:::-;19316:115;19464:1;19446:15;:19;:38;;;;;19483:1;19469:11;:15;19446:38;19443:112;;;19501:42;19514:11;19527:15;19501:12;:42::i;:::-;19443:112;18542:1020;;;;;;;;7304:5:::0;7293:8;;:16;;;;;;;;;;;;;;;;;;18481:1081;:::o;20749:705::-;20835:7;20855:17;20895:4;20885:6;;20876;:15;;;;:::i;:::-;20875:24;;;;:::i;:::-;20855:44;;20913:19;20943:4;20913:35;;20964:12;:20;20977:6;20964:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;20988:12;:23;21001:9;20988:23;;;;;;;;;;;;;;;;;;;;;;;;;20964:47;20961:266;;;21057:4;21050:3;21041:6;:12;;;;:::i;:::-;21040:21;;;;:::i;:::-;21028:33;;21091:23;;;;;;;;;;;21077:37;;20961:266;;;21135:12;:23;21148:9;21135:23;;;;;;;;;;;;;;;;;;;;;;;;;21132:95;;;21208:4;21197:7;;21188:6;:16;;;;:::i;:::-;21187:25;;;;:::i;:::-;21175:37;;21132:95;20961:266;21262:1;21250:9;:13;21247:162;;;21328:9;21304:8;:21;21313:11;21304:21;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;21280:8;:21;21289:11;21280:21;;;;;;;;;;;;;;;:57;;;;21374:11;21357:40;;21366:6;21357:40;;;21387:9;21357:40;;;;;;:::i;:::-;;;;;;;;21247:162;21437:9;21428:6;:18;;;;:::i;:::-;21421:25;;;;20749:705;;;;;:::o;19570:648::-;19696:21;19734:1;19720:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19696:40;;19765:4;19747;19752:1;19747:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19791:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19781:4;19786:1;19781:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;19820:56;19837:4;19852:9;;;;;;;;;;;19864:11;19820:8;:56::i;:::-;19915:9;;;;;;;;;;;:60;;;19990:11;20016:1;20060:4;20087;20123:15;19915:234;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20175:35;20192:11;20205:4;20175:35;;;;;;;:::i;:::-;;;;;;;;19625:593;19570:648;:::o;15363:178::-;15455:12;15499:9;15491:23;;15522:6;15491:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15478:55;;;;;15444:97;15363:178;;:::o;20226:515::-;20374:56;20391:4;20406:9;;;;;;;;;;;20418:11;20374:8;:56::i;:::-;20473:9;;;;;;;;;;;:25;;;20506:9;20539:4;20559:11;20585:1;20628;20671:21;;;;;;;;;;;20707:15;20473:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20226:515;;:::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:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:126::-;1869:7;1909:42;1902:5;1898:54;1887:65;;1832:126;;;:::o;1964:60::-;1992:3;2013:5;2006:12;;1964:60;;;:::o;2030:142::-;2080:9;2113:53;2131:34;2140:24;2158:5;2140:24;:::i;:::-;2131:34;:::i;:::-;2113:53;:::i;:::-;2100:66;;2030:142;;;:::o;2178:126::-;2228:9;2261:37;2292:5;2261:37;:::i;:::-;2248:50;;2178:126;;;:::o;2310:144::-;2378:9;2411:37;2442:5;2411:37;:::i;:::-;2398:50;;2310:144;;;:::o;2460:167::-;2565:55;2614:5;2565:55;:::i;:::-;2560:3;2553:68;2460:167;;:::o;2633:258::-;2744:4;2782:2;2771:9;2767:18;2759:26;;2795:89;2881:1;2870:9;2866:17;2857:6;2795:89;:::i;:::-;2633:258;;;;:::o;2897:75::-;2930:6;2963:2;2957:9;2947:19;;2897:75;:::o;2978:117::-;3087:1;3084;3077:12;3101:117;3210:1;3207;3200:12;3224:96;3261:7;3290:24;3308:5;3290:24;:::i;:::-;3279:35;;3224:96;;;:::o;3326:122::-;3399:24;3417:5;3399:24;:::i;:::-;3392:5;3389:35;3379:63;;3438:1;3435;3428:12;3379:63;3326:122;:::o;3454:139::-;3500:5;3538:6;3525:20;3516:29;;3554:33;3581:5;3554:33;:::i;:::-;3454:139;;;;:::o;3599:122::-;3672:24;3690:5;3672:24;:::i;:::-;3665:5;3662:35;3652:63;;3711:1;3708;3701:12;3652:63;3599:122;:::o;3727:139::-;3773:5;3811:6;3798:20;3789:29;;3827:33;3854:5;3827:33;:::i;:::-;3727:139;;;;:::o;3872:474::-;3940:6;3948;3997:2;3985:9;3976:7;3972:23;3968:32;3965:119;;;4003:79;;:::i;:::-;3965:119;4123:1;4148:53;4193:7;4184:6;4173:9;4169:22;4148:53;:::i;:::-;4138:63;;4094:117;4250:2;4276:53;4321:7;4312:6;4301:9;4297:22;4276:53;:::i;:::-;4266:63;;4221:118;3872:474;;;;;:::o;4352:90::-;4386:7;4429:5;4422:13;4415:21;4404:32;;4352:90;;;:::o;4448:109::-;4529:21;4544:5;4529:21;:::i;:::-;4524:3;4517:34;4448:109;;:::o;4563:210::-;4650:4;4688:2;4677:9;4673:18;4665:26;;4701:65;4763:1;4752:9;4748:17;4739:6;4701:65;:::i;:::-;4563:210;;;;:::o;4779:329::-;4838:6;4887:2;4875:9;4866:7;4862:23;4858:32;4855:119;;;4893:79;;:::i;:::-;4855:119;5013:1;5038:53;5083:7;5074:6;5063:9;5059:22;5038:53;:::i;:::-;5028:63;;4984:117;4779:329;;;;:::o;5114:117::-;5223:1;5220;5213:12;5237:180;5285:77;5282:1;5275:88;5382:4;5379:1;5372:15;5406:4;5403:1;5396:15;5423:281;5506:27;5528:4;5506:27;:::i;:::-;5498:6;5494:40;5636:6;5624:10;5621:22;5600:18;5588:10;5585:34;5582:62;5579:88;;;5647:18;;:::i;:::-;5579:88;5687:10;5683:2;5676:22;5466:238;5423:281;;:::o;5710:129::-;5744:6;5771:20;;:::i;:::-;5761:30;;5800:33;5828:4;5820:6;5800:33;:::i;:::-;5710:129;;;:::o;5845:311::-;5922:4;6012:18;6004:6;6001:30;5998:56;;;6034:18;;:::i;:::-;5998:56;6084:4;6076:6;6072:17;6064:25;;6144:4;6138;6134:15;6126:23;;5845:311;;;:::o;6162:117::-;6271:1;6268;6261:12;6302:710;6398:5;6423:81;6439:64;6496:6;6439:64;:::i;:::-;6423:81;:::i;:::-;6414:90;;6524:5;6553:6;6546:5;6539:21;6587:4;6580:5;6576:16;6569:23;;6640:4;6632:6;6628:17;6620:6;6616:30;6669:3;6661:6;6658:15;6655:122;;;6688:79;;:::i;:::-;6655:122;6803:6;6786:220;6820:6;6815:3;6812:15;6786:220;;;6895:3;6924:37;6957:3;6945:10;6924:37;:::i;:::-;6919:3;6912:50;6991:4;6986:3;6982:14;6975:21;;6862:144;6846:4;6841:3;6837:14;6830:21;;6786:220;;;6790:21;6404:608;;6302:710;;;;;:::o;7035:370::-;7106:5;7155:3;7148:4;7140:6;7136:17;7132:27;7122:122;;7163:79;;:::i;:::-;7122:122;7280:6;7267:20;7305:94;7395:3;7387:6;7380:4;7372:6;7368:17;7305:94;:::i;:::-;7296:103;;7112:293;7035:370;;;;:::o;7411:311::-;7488:4;7578:18;7570:6;7567:30;7564:56;;;7600:18;;:::i;:::-;7564:56;7650:4;7642:6;7638:17;7630:25;;7710:4;7704;7700:15;7692:23;;7411:311;;;:::o;7745:710::-;7841:5;7866:81;7882:64;7939:6;7882:64;:::i;:::-;7866:81;:::i;:::-;7857:90;;7967:5;7996:6;7989:5;7982:21;8030:4;8023:5;8019:16;8012:23;;8083:4;8075:6;8071:17;8063:6;8059:30;8112:3;8104:6;8101:15;8098:122;;;8131:79;;:::i;:::-;8098:122;8246:6;8229:220;8263:6;8258:3;8255:15;8229:220;;;8338:3;8367:37;8400:3;8388:10;8367:37;:::i;:::-;8362:3;8355:50;8434:4;8429:3;8425:14;8418:21;;8305:144;8289:4;8284:3;8280:14;8273:21;;8229:220;;;8233:21;7847:608;;7745:710;;;;;:::o;8478:370::-;8549:5;8598:3;8591:4;8583:6;8579:17;8575:27;8565:122;;8606:79;;:::i;:::-;8565:122;8723:6;8710:20;8748:94;8838:3;8830:6;8823:4;8815:6;8811:17;8748:94;:::i;:::-;8739:103;;8555:293;8478:370;;;;:::o;8854:894::-;8972:6;8980;9029:2;9017:9;9008:7;9004:23;9000:32;8997:119;;;9035:79;;:::i;:::-;8997:119;9183:1;9172:9;9168:17;9155:31;9213:18;9205:6;9202:30;9199:117;;;9235:79;;:::i;:::-;9199:117;9340:78;9410:7;9401:6;9390:9;9386:22;9340:78;:::i;:::-;9330:88;;9126:302;9495:2;9484:9;9480:18;9467:32;9526:18;9518:6;9515:30;9512:117;;;9548:79;;:::i;:::-;9512:117;9653:78;9723:7;9714:6;9703:9;9699:22;9653:78;:::i;:::-;9643:88;;9438:303;8854:894;;;;;:::o;9754:619::-;9831:6;9839;9847;9896:2;9884:9;9875:7;9871:23;9867:32;9864:119;;;9902:79;;:::i;:::-;9864:119;10022:1;10047:53;10092:7;10083:6;10072:9;10068:22;10047:53;:::i;:::-;10037:63;;9993:117;10149:2;10175:53;10220:7;10211:6;10200:9;10196:22;10175:53;:::i;:::-;10165:63;;10120:118;10277:2;10303:53;10348:7;10339:6;10328:9;10324:22;10303:53;:::i;:::-;10293:63;;10248:118;9754:619;;;;;:::o;10379:116::-;10449:21;10464:5;10449:21;:::i;:::-;10442:5;10439:32;10429:60;;10485:1;10482;10475:12;10429:60;10379:116;:::o;10501:133::-;10544:5;10582:6;10569:20;10560:29;;10598:30;10622:5;10598:30;:::i;:::-;10501:133;;;;:::o;10640:323::-;10696:6;10745:2;10733:9;10724:7;10720:23;10716:32;10713:119;;;10751:79;;:::i;:::-;10713:119;10871:1;10896:50;10938:7;10929:6;10918:9;10914:22;10896:50;:::i;:::-;10886:60;;10842:114;10640:323;;;;:::o;10969:118::-;11056:24;11074:5;11056:24;:::i;:::-;11051:3;11044:37;10969:118;;:::o;11093:222::-;11186:4;11224:2;11213:9;11209:18;11201:26;;11237:71;11305:1;11294:9;11290:17;11281:6;11237:71;:::i;:::-;11093:222;;;;:::o;11321:86::-;11356:7;11396:4;11389:5;11385:16;11374:27;;11321:86;;;:::o;11413:112::-;11496:22;11512:5;11496:22;:::i;:::-;11491:3;11484:35;11413:112;;:::o;11531:214::-;11620:4;11658:2;11647:9;11643:18;11635:26;;11671:67;11735:1;11724:9;11720:17;11711:6;11671:67;:::i;:::-;11531:214;;;;:::o;11751:468::-;11816:6;11824;11873:2;11861:9;11852:7;11848:23;11844:32;11841:119;;;11879:79;;:::i;:::-;11841:119;11999:1;12024:53;12069:7;12060:6;12049:9;12045:22;12024:53;:::i;:::-;12014:63;;11970:117;12126:2;12152:50;12194:7;12185:6;12174:9;12170:22;12152:50;:::i;:::-;12142:60;;12097:115;11751:468;;;;;:::o;12225:329::-;12284:6;12333:2;12321:9;12312:7;12308:23;12304:32;12301:119;;;12339:79;;:::i;:::-;12301:119;12459:1;12484:53;12529:7;12520:6;12509:9;12505:22;12484:53;:::i;:::-;12474:63;;12430:117;12225:329;;;;:::o;12560:619::-;12637:6;12645;12653;12702:2;12690:9;12681:7;12677:23;12673:32;12670:119;;;12708:79;;:::i;:::-;12670:119;12828:1;12853:53;12898:7;12889:6;12878:9;12874:22;12853:53;:::i;:::-;12843:63;;12799:117;12955:2;12981:53;13026:7;13017:6;13006:9;13002:22;12981:53;:::i;:::-;12971:63;;12926:118;13083:2;13109:53;13154:7;13145:6;13134:9;13130:22;13109:53;:::i;:::-;13099:63;;13054:118;12560:619;;;;;:::o;13185:104::-;13230:7;13259:24;13277:5;13259:24;:::i;:::-;13248:35;;13185:104;;;:::o;13295:142::-;13398:32;13424:5;13398:32;:::i;:::-;13393:3;13386:45;13295:142;;:::o;13443:254::-;13552:4;13590:2;13579:9;13575:18;13567:26;;13603:87;13687:1;13676:9;13672:17;13663:6;13603:87;:::i;:::-;13443:254;;;;:::o;13703:474::-;13771:6;13779;13828:2;13816:9;13807:7;13803:23;13799:32;13796:119;;;13834:79;;:::i;:::-;13796:119;13954:1;13979:53;14024:7;14015:6;14004:9;14000:22;13979:53;:::i;:::-;13969:63;;13925:117;14081:2;14107:53;14152:7;14143:6;14132:9;14128:22;14107:53;:::i;:::-;14097:63;;14052:118;13703:474;;;;;:::o;14183:::-;14251:6;14259;14308:2;14296:9;14287:7;14283:23;14279:32;14276:119;;;14314:79;;:::i;:::-;14276:119;14434:1;14459:53;14504:7;14495:6;14484:9;14480:22;14459:53;:::i;:::-;14449:63;;14405:117;14561:2;14587:53;14632:7;14623:6;14612:9;14608:22;14587:53;:::i;:::-;14577:63;;14532:118;14183:474;;;;;:::o;14663:607::-;14734:6;14742;14750;14799:2;14787:9;14778:7;14774:23;14770:32;14767:119;;;14805:79;;:::i;:::-;14767:119;14925:1;14950:50;14992:7;14983:6;14972:9;14968:22;14950:50;:::i;:::-;14940:60;;14896:114;15049:2;15075:53;15120:7;15111:6;15100:9;15096:22;15075:53;:::i;:::-;15065:63;;15020:118;15177:2;15203:50;15245:7;15236:6;15225:9;15221:22;15203:50;:::i;:::-;15193:60;;15148:115;14663:607;;;;;:::o;15276:747::-;15353:6;15361;15369;15377;15426:3;15414:9;15405:7;15401:23;15397:33;15394:120;;;15433:79;;:::i;:::-;15394:120;15553:1;15578:53;15623:7;15614:6;15603:9;15599:22;15578:53;:::i;:::-;15568:63;;15524:117;15680:2;15706:50;15748:7;15739:6;15728:9;15724:22;15706:50;:::i;:::-;15696:60;;15651:115;15805:2;15831:50;15873:7;15864:6;15853:9;15849:22;15831:50;:::i;:::-;15821:60;;15776:115;15930:2;15956:50;15998:7;15989:6;15978:9;15974:22;15956:50;:::i;:::-;15946:60;;15901:115;15276:747;;;;;;;:::o;16029:182::-;16169:34;16165:1;16157:6;16153:14;16146:58;16029:182;:::o;16217:366::-;16359:3;16380:67;16444:2;16439:3;16380:67;:::i;:::-;16373:74;;16456:93;16545:3;16456:93;:::i;:::-;16574:2;16569:3;16565:12;16558:19;;16217:366;;;:::o;16589:419::-;16755:4;16793:2;16782:9;16778:18;16770:26;;16842:9;16836:4;16832:20;16828:1;16817:9;16813:17;16806:47;16870:131;16996:4;16870:131;:::i;:::-;16862:139;;16589:419;;;:::o;17014:221::-;17154:34;17150:1;17142:6;17138:14;17131:58;17223:4;17218:2;17210:6;17206:15;17199:29;17014:221;:::o;17241:366::-;17383:3;17404:67;17468:2;17463:3;17404:67;:::i;:::-;17397:74;;17480:93;17569:3;17480:93;:::i;:::-;17598:2;17593:3;17589:12;17582:19;;17241:366;;;:::o;17613:419::-;17779:4;17817:2;17806:9;17802:18;17794:26;;17866:9;17860:4;17856:20;17852:1;17841:9;17837:17;17830:47;17894:131;18020:4;17894:131;:::i;:::-;17886:139;;17613:419;;;:::o;18038:180::-;18086:77;18083:1;18076:88;18183:4;18180:1;18173:15;18207:4;18204:1;18197:15;18224:102;18266:8;18313:5;18310:1;18306:13;18285:34;;18224:102;;;:::o;18332:848::-;18393:5;18400:4;18424:6;18415:15;;18448:5;18439:14;;18462:712;18483:1;18473:8;18470:15;18462:712;;;18578:4;18573:3;18569:14;18563:4;18560:24;18557:50;;;18587:18;;:::i;:::-;18557:50;18637:1;18627:8;18623:16;18620:451;;;19052:4;19045:5;19041:16;19032:25;;18620:451;19102:4;19096;19092:15;19084:23;;19132:32;19155:8;19132:32;:::i;:::-;19120:44;;18462:712;;;18332:848;;;;;;;:::o;19186:1073::-;19240:5;19431:8;19421:40;;19452:1;19443:10;;19454:5;;19421:40;19480:4;19470:36;;19497:1;19488:10;;19499:5;;19470:36;19566:4;19614:1;19609:27;;;;19650:1;19645:191;;;;19559:277;;19609:27;19627:1;19618:10;;19629:5;;;19645:191;19690:3;19680:8;19677:17;19674:43;;;19697:18;;:::i;:::-;19674:43;19746:8;19743:1;19739:16;19730:25;;19781:3;19774:5;19771:14;19768:40;;;19788:18;;:::i;:::-;19768:40;19821:5;;;19559:277;;19945:2;19935:8;19932:16;19926:3;19920:4;19917:13;19913:36;19895:2;19885:8;19882:16;19877:2;19871:4;19868:12;19864:35;19848:111;19845:246;;;20001:8;19995:4;19991:19;19982:28;;20036:3;20029:5;20026:14;20023:40;;;20043:18;;:::i;:::-;20023:40;20076:5;;19845:246;20116:42;20154:3;20144:8;20138:4;20135:1;20116:42;:::i;:::-;20101:57;;;;20190:4;20185:3;20181:14;20174:5;20171:25;20168:51;;;20199:18;;:::i;:::-;20168:51;20248:4;20241:5;20237:16;20228:25;;19186:1073;;;;;;:::o;20265:281::-;20323:5;20347:23;20365:4;20347:23;:::i;:::-;20339:31;;20391:25;20407:8;20391:25;:::i;:::-;20379:37;;20435:104;20472:66;20462:8;20456:4;20435:104;:::i;:::-;20426:113;;20265:281;;;;:::o;20552:348::-;20592:7;20615:20;20633:1;20615:20;:::i;:::-;20610:25;;20649:20;20667:1;20649:20;:::i;:::-;20644:25;;20837:1;20769:66;20765:74;20762:1;20759:81;20754:1;20747:9;20740:17;20736:105;20733:131;;;20844:18;;:::i;:::-;20733:131;20892:1;20889;20885:9;20874:20;;20552:348;;;;:::o;20906:180::-;21046:32;21042:1;21034:6;21030:14;21023:56;20906:180;:::o;21092:366::-;21234:3;21255:67;21319:2;21314:3;21255:67;:::i;:::-;21248:74;;21331:93;21420:3;21331:93;:::i;:::-;21449:2;21444:3;21440:12;21433:19;;21092:366;;;:::o;21464:419::-;21630:4;21668:2;21657:9;21653:18;21645:26;;21717:9;21711:4;21707:20;21703:1;21692:9;21688:17;21681:47;21745:131;21871:4;21745:131;:::i;:::-;21737:139;;21464:419;;;:::o;21889:241::-;22029:34;22025:1;22017:6;22013:14;22006:58;22098:24;22093:2;22085:6;22081:15;22074:49;21889:241;:::o;22136:366::-;22278:3;22299:67;22363:2;22358:3;22299:67;:::i;:::-;22292:74;;22375:93;22464:3;22375:93;:::i;:::-;22493:2;22488:3;22484:12;22477:19;;22136:366;;;:::o;22508:419::-;22674:4;22712:2;22701:9;22697:18;22689:26;;22761:9;22755:4;22751:20;22747:1;22736:9;22732:17;22725:47;22789:131;22915:4;22789:131;:::i;:::-;22781:139;;22508:419;;;:::o;22933:180::-;22981:77;22978:1;22971:88;23078:4;23075:1;23068:15;23102:4;23099:1;23092:15;23119:233;23158:3;23181:24;23199:5;23181:24;:::i;:::-;23172:33;;23227:66;23220:5;23217:77;23214:103;;23297:18;;:::i;:::-;23214:103;23344:1;23337:5;23333:13;23326:20;;23119:233;;;:::o;23358:191::-;23398:4;23418:20;23436:1;23418:20;:::i;:::-;23413:25;;23452:20;23470:1;23452:20;:::i;:::-;23447:25;;23491:1;23488;23485:8;23482:34;;;23496:18;;:::i;:::-;23482:34;23541:1;23538;23534:9;23526:17;;23358:191;;;;:::o;23555:305::-;23595:3;23614:20;23632:1;23614:20;:::i;:::-;23609:25;;23648:20;23666:1;23648:20;:::i;:::-;23643:25;;23802:1;23734:66;23730:74;23727:1;23724:81;23721:107;;;23808:18;;:::i;:::-;23721:107;23852:1;23849;23845:9;23838:16;;23555:305;;;;:::o;23866:320::-;23981:4;24019:2;24008:9;24004:18;23996:26;;24032:71;24100:1;24089:9;24085:17;24076:6;24032:71;:::i;:::-;24113:66;24175:2;24164:9;24160:18;24151:6;24113:66;:::i;:::-;23866:320;;;;;:::o;24192:442::-;24341:4;24379:2;24368:9;24364:18;24356:26;;24392:71;24460:1;24449:9;24445:17;24436:6;24392:71;:::i;:::-;24473:72;24541:2;24530:9;24526:18;24517:6;24473:72;:::i;:::-;24555;24623:2;24612:9;24608:18;24599:6;24555:72;:::i;:::-;24192:442;;;;;;:::o;24640:167::-;24780:19;24776:1;24768:6;24764:14;24757:43;24640:167;:::o;24813:366::-;24955:3;24976:67;25040:2;25035:3;24976:67;:::i;:::-;24969:74;;25052:93;25141:3;25052:93;:::i;:::-;25170:2;25165:3;25161:12;25154:19;;24813:366;;;:::o;25185:419::-;25351:4;25389:2;25378:9;25374:18;25366:26;;25438:9;25432:4;25428:20;25424:1;25413:9;25409:17;25402:47;25466:131;25592:4;25466:131;:::i;:::-;25458:139;;25185:419;;;:::o;25610:332::-;25731:4;25769:2;25758:9;25754:18;25746:26;;25782:71;25850:1;25839:9;25835:17;25826:6;25782:71;:::i;:::-;25863:72;25931:2;25920:9;25916:18;25907:6;25863:72;:::i;:::-;25610:332;;;;;:::o;25948:143::-;26005:5;26036:6;26030:13;26021:22;;26052:33;26079:5;26052:33;:::i;:::-;25948:143;;;;:::o;26097:351::-;26167:6;26216:2;26204:9;26195:7;26191:23;26187:32;26184:119;;;26222:79;;:::i;:::-;26184:119;26342:1;26367:64;26423:7;26414:6;26403:9;26399:22;26367:64;:::i;:::-;26357:74;;26313:128;26097:351;;;;:::o;26454:332::-;26575:4;26613:2;26602:9;26598:18;26590:26;;26626:71;26694:1;26683:9;26679:17;26670:6;26626:71;:::i;:::-;26707:72;26775:2;26764:9;26760:18;26751:6;26707:72;:::i;:::-;26454:332;;;;;:::o;26792:418::-;26929:4;26967:2;26956:9;26952:18;26944:26;;26980:65;27042:1;27031:9;27027:17;27018:6;26980:65;:::i;:::-;27055:72;27123:2;27112:9;27108:18;27099:6;27055:72;:::i;:::-;27137:66;27199:2;27188:9;27184:18;27175:6;27137:66;:::i;:::-;26792:418;;;;;;:::o;27216:517::-;27375:4;27413:3;27402:9;27398:19;27390:27;;27427:71;27495:1;27484:9;27480:17;27471:6;27427:71;:::i;:::-;27508:66;27570:2;27559:9;27555:18;27546:6;27508:66;:::i;:::-;27584;27646:2;27635:9;27631:18;27622:6;27584:66;:::i;:::-;27660;27722:2;27711:9;27707:18;27698:6;27660:66;:::i;:::-;27216:517;;;;;;;:::o;27739:225::-;27879:34;27875:1;27867:6;27863:14;27856:58;27948:8;27943:2;27935:6;27931:15;27924:33;27739:225;:::o;27970:366::-;28112:3;28133:67;28197:2;28192:3;28133:67;:::i;:::-;28126:74;;28209:93;28298:3;28209:93;:::i;:::-;28327:2;28322:3;28318:12;28311:19;;27970:366;;;:::o;28342:419::-;28508:4;28546:2;28535:9;28531:18;28523:26;;28595:9;28589:4;28585:20;28581:1;28570:9;28566:17;28559:47;28623:131;28749:4;28623:131;:::i;:::-;28615:139;;28342:419;;;:::o;28767:223::-;28907:34;28903:1;28895:6;28891:14;28884:58;28976:6;28971:2;28963:6;28959:15;28952:31;28767:223;:::o;28996:366::-;29138:3;29159:67;29223:2;29218:3;29159:67;:::i;:::-;29152:74;;29235:93;29324:3;29235:93;:::i;:::-;29353:2;29348:3;29344:12;29337:19;;28996:366;;;:::o;29368:419::-;29534:4;29572:2;29561:9;29557:18;29549:26;;29621:9;29615:4;29611:20;29607:1;29596:9;29592:17;29585:47;29649:131;29775:4;29649:131;:::i;:::-;29641:139;;29368:419;;;:::o;29793:221::-;29933:34;29929:1;29921:6;29917:14;29910:58;30002:4;29997:2;29989:6;29985:15;29978:29;29793:221;:::o;30020:366::-;30162:3;30183:67;30247:2;30242:3;30183:67;:::i;:::-;30176:74;;30259:93;30348:3;30259:93;:::i;:::-;30377:2;30372:3;30368:12;30361:19;;30020:366;;;:::o;30392:419::-;30558:4;30596:2;30585:9;30581:18;30573:26;;30645:9;30639:4;30635:20;30631:1;30620:9;30616:17;30609:47;30673:131;30799:4;30673:131;:::i;:::-;30665:139;;30392:419;;;:::o;30817:224::-;30957:34;30953:1;30945:6;30941:14;30934:58;31026:7;31021:2;31013:6;31009:15;31002:32;30817:224;:::o;31047:366::-;31189:3;31210:67;31274:2;31269:3;31210:67;:::i;:::-;31203:74;;31286:93;31375:3;31286:93;:::i;:::-;31404:2;31399:3;31395:12;31388:19;;31047:366;;;:::o;31419:419::-;31585:4;31623:2;31612:9;31608:18;31600:26;;31672:9;31666:4;31662:20;31658:1;31647:9;31643:17;31636:47;31700:131;31826:4;31700:131;:::i;:::-;31692:139;;31419:419;;;:::o;31844:222::-;31984:34;31980:1;31972:6;31968:14;31961:58;32053:5;32048:2;32040:6;32036:15;32029:30;31844:222;:::o;32072:366::-;32214:3;32235:67;32299:2;32294:3;32235:67;:::i;:::-;32228:74;;32311:93;32400:3;32311:93;:::i;:::-;32429:2;32424:3;32420:12;32413:19;;32072:366;;;:::o;32444:419::-;32610:4;32648:2;32637:9;32633:18;32625:26;;32697:9;32691:4;32687:20;32683:1;32672:9;32668:17;32661:47;32725:131;32851:4;32725:131;:::i;:::-;32717:139;;32444:419;;;:::o;32869:181::-;33009:33;33005:1;32997:6;32993:14;32986:57;32869:181;:::o;33056:366::-;33198:3;33219:67;33283:2;33278:3;33219:67;:::i;:::-;33212:74;;33295:93;33384:3;33295:93;:::i;:::-;33413:2;33408:3;33404:12;33397:19;;33056:366;;;:::o;33428:419::-;33594:4;33632:2;33621:9;33617:18;33609:26;;33681:9;33675:4;33671:20;33667:1;33656:9;33652:17;33645:47;33709:131;33835:4;33709:131;:::i;:::-;33701:139;;33428:419;;;:::o;33853:163::-;33993:15;33989:1;33981:6;33977:14;33970:39;33853:163;:::o;34022:366::-;34164:3;34185:67;34249:2;34244:3;34185:67;:::i;:::-;34178:74;;34261:93;34350:3;34261:93;:::i;:::-;34379:2;34374:3;34370:12;34363:19;;34022:366;;;:::o;34394:419::-;34560:4;34598:2;34587:9;34583:18;34575:26;;34647:9;34641:4;34637:20;34633:1;34622:9;34618:17;34611:47;34675:131;34801:4;34675:131;:::i;:::-;34667:139;;34394:419;;;:::o;34819:227::-;34959:34;34955:1;34947:6;34943:14;34936:58;35028:10;35023:2;35015:6;35011:15;35004:35;34819:227;:::o;35052:366::-;35194:3;35215:67;35279:2;35274:3;35215:67;:::i;:::-;35208:74;;35291:93;35380:3;35291:93;:::i;:::-;35409:2;35404:3;35400:12;35393:19;;35052:366;;;:::o;35424:419::-;35590:4;35628:2;35617:9;35613:18;35605:26;;35677:9;35671:4;35667:20;35663:1;35652:9;35648:17;35641:47;35705:131;35831:4;35705:131;:::i;:::-;35697:139;;35424:419;;;:::o;35849:180::-;35897:77;35894:1;35887:88;35994:4;35991:1;35984:15;36018:4;36015:1;36008:15;36035:185;36075:1;36092:20;36110:1;36092:20;:::i;:::-;36087:25;;36126:20;36144:1;36126:20;:::i;:::-;36121:25;;36165:1;36155:35;;36170:18;;:::i;:::-;36155:35;36212:1;36209;36205:9;36200:14;;36035:185;;;;:::o;36226:85::-;36271:7;36300:5;36289:16;;36226:85;;;:::o;36317:158::-;36375:9;36408:61;36426:42;36435:32;36461:5;36435:32;:::i;:::-;36426:42;:::i;:::-;36408:61;:::i;:::-;36395:74;;36317:158;;;:::o;36481:147::-;36576:45;36615:5;36576:45;:::i;:::-;36571:3;36564:58;36481:147;;:::o;36634:114::-;36701:6;36735:5;36729:12;36719:22;;36634:114;;;:::o;36754:184::-;36853:11;36887:6;36882:3;36875:19;36927:4;36922:3;36918:14;36903:29;;36754:184;;;;:::o;36944:132::-;37011:4;37034:3;37026:11;;37064:4;37059:3;37055:14;37047:22;;36944:132;;;:::o;37082:108::-;37159:24;37177:5;37159:24;:::i;:::-;37154:3;37147:37;37082:108;;:::o;37196:179::-;37265:10;37286:46;37328:3;37320:6;37286:46;:::i;:::-;37364:4;37359:3;37355:14;37341:28;;37196:179;;;;:::o;37381:113::-;37451:4;37483;37478:3;37474:14;37466:22;;37381:113;;;:::o;37530:732::-;37649:3;37678:54;37726:5;37678:54;:::i;:::-;37748:86;37827:6;37822:3;37748:86;:::i;:::-;37741:93;;37858:56;37908:5;37858:56;:::i;:::-;37937:7;37968:1;37953:284;37978:6;37975:1;37972:13;37953:284;;;38054:6;38048:13;38081:63;38140:3;38125:13;38081:63;:::i;:::-;38074:70;;38167:60;38220:6;38167:60;:::i;:::-;38157:70;;38013:224;38000:1;37997;37993:9;37988:14;;37953:284;;;37957:14;38253:3;38246:10;;37654:608;;;37530:732;;;;:::o;38268:831::-;38531:4;38569:3;38558:9;38554:19;38546:27;;38583:71;38651:1;38640:9;38636:17;38627:6;38583:71;:::i;:::-;38664:80;38740:2;38729:9;38725:18;38716:6;38664:80;:::i;:::-;38791:9;38785:4;38781:20;38776:2;38765:9;38761:18;38754:48;38819:108;38922:4;38913:6;38819:108;:::i;:::-;38811:116;;38937:72;39005:2;38994:9;38990:18;38981:6;38937:72;:::i;:::-;39019:73;39087:3;39076:9;39072:19;39063:6;39019:73;:::i;:::-;38268:831;;;;;;;;:::o;39105:483::-;39276:4;39314:2;39303:9;39299:18;39291:26;;39327:71;39395:1;39384:9;39380:17;39371:6;39327:71;:::i;:::-;39445:9;39439:4;39435:20;39430:2;39419:9;39415:18;39408:48;39473:108;39576:4;39567:6;39473:108;:::i;:::-;39465:116;;39105:483;;;;;:::o;39594:147::-;39695:11;39732:3;39717:18;;39594:147;;;;:::o;39747:114::-;;:::o;39867:398::-;40026:3;40047:83;40128:1;40123:3;40047:83;:::i;:::-;40040:90;;40139:93;40228:3;40139:93;:::i;:::-;40257:1;40252:3;40248:11;40241:18;;39867:398;;;:::o;40271:379::-;40455:3;40477:147;40620:3;40477:147;:::i;:::-;40470:154;;40641:3;40634:10;;40271:379;;;:::o;40656:134::-;40714:9;40747:37;40778:5;40747:37;:::i;:::-;40734:50;;40656:134;;;:::o;40796:147::-;40891:45;40930:5;40891:45;:::i;:::-;40886:3;40879:58;40796:147;;:::o;40949:823::-;41206:4;41244:3;41233:9;41229:19;41221:27;;41258:71;41326:1;41315:9;41311:17;41302:6;41258:71;:::i;:::-;41339:72;41407:2;41396:9;41392:18;41383:6;41339:72;:::i;:::-;41421:80;41497:2;41486:9;41482:18;41473:6;41421:80;:::i;:::-;41511;41587:2;41576:9;41572:18;41563:6;41511:80;:::i;:::-;41601:81;41677:3;41666:9;41662:19;41653:6;41601:81;:::i;:::-;41692:73;41760:3;41749:9;41745:19;41736:6;41692:73;:::i;:::-;40949:823;;;;;;;;;:::o;41778:143::-;41835:5;41866:6;41860:13;41851:22;;41882:33;41909:5;41882:33;:::i;:::-;41778:143;;;;:::o;41927:663::-;42015:6;42023;42031;42080:2;42068:9;42059:7;42055:23;42051:32;42048:119;;;42086:79;;:::i;:::-;42048:119;42206:1;42231:64;42287:7;42278:6;42267:9;42263:22;42231:64;:::i;:::-;42221:74;;42177:128;42344:2;42370:64;42426:7;42417:6;42406:9;42402:22;42370:64;:::i;:::-;42360:74;;42315:129;42483:2;42509:64;42565:7;42556:6;42545:9;42541:22;42509:64;:::i;:::-;42499:74;;42454:129;41927:663;;;;;:::o

Swarm Source

ipfs://2751e568f8dbf868784b35efa779c03d27abd83f500c2f10ee6d9aafeb49a58c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Dripto is an online resale marketplace where sneakers, streetwear, and luxury goods are purchased and sold exclusively through cryptocurrency. Dripto aims to revolutionize and gamify ecommerce by offering incentives and rewards for DRYP token holders and users of our platform.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.