ETH Price: $2,628.69 (+0.58%)

Token

FifaInu (FIFAINU)
 

Overview

Max Total Supply

1,000,000,000 FIFAINU

Holders

24

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
13,101.234301844 FIFAINU

Value
$0.00
0x4ab1c955618a4eff0c869e8ba49ac83ec1b0a57c
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
FifaInu

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 *
*/

/**
 *TG:https://t.me/FifaInuERC
*/

/**
 *Website:https://www.fifainu.club/
*/

/**
 *
*/

/**
 *
*/

/**
 *
*/

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

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

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

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address _owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

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

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

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

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

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

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

    event OwnershipTransferred(address owner);
}

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

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

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

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

contract FifaInu is IBEP20, Auth {
    using SafeMath for uint256;

    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address BUSD = 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56;

    string constant _name = "FifaInu";
    string constant _symbol = "FIFAINU";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**9 * (10**_decimals);

    //max wallet holding of 3% supply
    uint256 public _maxWalletToken = (_totalSupply * 3) / 100;

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

    // diff pairs which will be taxed
    mapping(address => bool) pairs;
    mapping(address => bool) isFeeExempt;
    //whitelist CEX which list us to hold more than max wallet
    mapping(address => bool) isMaxWalletExempt;

    // this fee is what is used after contract sells
    uint256 public marketingAmount = 3;
    uint256 public devAmount = 2;
    uint256 public totalAmountDivider = 5;
    bool public feesOn = true;
    bool public antisnipe = true;
    bool public tradingEnabled = false;

    //buying fee
    uint256 public totalFee = 6;
    // selling fee
    uint256 public totalSellFee = 6;
    uint256 public totalTransferFee = 5;
    uint256 feeDenominator = 100;

    address public marketingAmountReceiver;
    address public projectMaintenanceReceiver;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    bool public swapEnabled = true;
    uint256 public swapThreshold = (_totalSupply * 8) / 1000; // 0.2% of supply
    //burn is always less than swap threshold.
    uint256 public taxBurnAmount = swapThreshold.div(10); // 0.02% of the supply

    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() Auth(msg.sender) {
        launchedAt = block.timestamp;

        marketingAmountReceiver = 0x77E38E37F843dfE2E5BC8724F2Cf0AF90cB88Fe2;
        projectMaintenanceReceiver = 0x1f83C942BFb6fb5ea3908aC4579fD97d30C262d9;

        //Testnet: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1
        //Mainet: 0x10ED43C718714eb63d5aA57B78B54704E256024E
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        // exempted from tax
        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingAmountReceiver] = true;
        isFeeExempt[projectMaintenanceReceiver] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[address(this)] = true;

        // exempted for max wallet
        isMaxWalletExempt[msg.sender] = true;
        isMaxWalletExempt[marketingAmountReceiver] = true;
        isMaxWalletExempt[projectMaintenanceReceiver] = true;
        isMaxWalletExempt[DEAD] = true;
        isMaxWalletExempt[address(this)] = true;
        isMaxWalletExempt[pair] = true;

        // add to pairs for taxes.
        pairs[pair] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

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

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

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

    function getOwner() external view override returns (address) {
        return owner;
    }

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

    function allowance(address holder, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

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

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

        if (!authorizations[sender]) {
            require(tradingEnabled, "Trading not open yet");
        }

        // max wallet code
        if (!isMaxWalletExempt[recipient]) {
            uint256 heldTokens = balanceOf(recipient);
            require(
                (heldTokens + amount) <= _maxWalletToken,
                "Max wallet reached."
            );
        }

        if (shouldSwapBack()) {
            swapBack();
            //burn extra tax
            uint256 taxUnsold = balanceOf(address(this));
            if (taxUnsold > taxBurnAmount) {
                _basicTransfer(address(this), DEAD, taxBurnAmount);
            }
        }

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

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

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

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

    function takeFee(
        address sender,
        uint256 amount,
        address recipient
    ) internal returns (uint256) {
        uint256 feeAmount;

        if (antisnipe) {
            feeAmount = amount.mul(99).div(100);
        } else {
            //buying
            if (pairs[sender]) {
                feeAmount = amount.mul(totalFee).div(feeDenominator);
            }
            //selling
            else if (pairs[recipient]) {
                feeAmount = amount.mul(totalSellFee).div(feeDenominator);
            }
            // transfer 1% tax
            else {
                feeAmount = amount.mul(totalTransferFee).div(feeDenominator);
            }
        }

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

        return amount.sub(feeAmount);
    }

    /**
     * Only swaps back if these conditions are met, during sells and when the
     * threshold is reached or when the time has reached for the swap.
     */
    function shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold.mul(2);
    }

    /**
     * Swaps the tax collected for fees sent to marketing and dev. The swap only swaps the threshold amount.
     */
    function swapBack() internal swapping {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

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

        uint256 amountBNB = address(this).balance;
        uint256 amountBNBMarketing = amountBNB.mul(marketingAmount).div(
            totalAmountDivider
        );
        (bool tmpSuccess, ) = payable(marketingAmountReceiver).call{
            value: amountBNBMarketing
        }("");
        (bool tmpSuccess2, ) = payable(projectMaintenanceReceiver).call{
            value: amountBNB.sub(amountBNBMarketing)
        }("");
        // suppresses warning
        tmpSuccess2 = false;
        tmpSuccess = false;
    }

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

    function addPairTax(address pairAddress, bool taxed) external authorized {
        pairs[pairAddress] = taxed;
    }

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

    /**
     * Setup the fee recevers for marketing and dev
     */
    function setFeeReceivers(
        address _marketingAmountReceiver,
        address _projectMaintenanceReceiver
    ) external onlyOwner {
        marketingAmountReceiver = _marketingAmountReceiver;
        projectMaintenanceReceiver = _projectMaintenanceReceiver;
    }

    /**
     * Sets if tokens collected in tax should be sold for marketing and dev fees, 
     and burn amount to burn extra tax. Amounts are in token amounts without decimals.
     */
    function setSwapBackSettings(
        bool _enabled,
        uint256 _amount,
        uint256 _taxBurnAmount
    ) external authorized {
        require(
            _amount > _taxBurnAmount,
            "Swap threshold must be more than amount burned"
        );
        swapEnabled = _enabled;
        swapThreshold = _amount * 10**9;
        taxBurnAmount = _taxBurnAmount * 10**9;
    }

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

    function setMaxWalletPercent(uint256 percent) external onlyOwner {
        //prevent hp
        require(percent >= 1, "Max wallet can only be more than 1%");
        _maxWalletToken = _totalSupply.mul(percent).div(100);
    }

    function setFeesOn(bool _feesOn) external onlyOwner {
        feesOn = _feesOn;
    }

    function setFees(
        uint256 _totalFee,
        uint256 _totalSellFee,
        uint256 _totalTransferFee
    ) external onlyOwner {
        require(_totalFee < feeDenominator / 5);
        require(_totalSellFee < feeDenominator / 5);
        require(_totalTransferFee < feeDenominator / 10);
        totalFee = _totalFee;
        totalSellFee = _totalSellFee;
        totalTransferFee = _totalTransferFee;
    }

    function setTradingEnabled() external onlyOwner {
        tradingEnabled = true;
    }

    function removeAntiSnipe() external onlyOwner {
        antisnipe = false;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pairAddress","type":"address"},{"internalType":"bool","name":"taxed","type":"bool"}],"name":"addPairTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antisnipe","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAmountReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectMaintenanceReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAntiSnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAmountReceiver","type":"address"},{"internalType":"address","name":"_projectMaintenanceReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalFee","type":"uint256"},{"internalType":"uint256","name":"_totalSellFee","type":"uint256"},{"internalType":"uint256","name":"_totalTransferFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_feesOn","type":"bool"}],"name":"setFeesOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_taxBurnAmount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTradingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxBurnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAmountDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e9e7cea3dedca5984780bafc599bd69add087d56600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000143919062000e6d565b633b9aca0062000154919062000ebe565b600655606460036006546200016a919062000ebe565b62000176919062000f4e565b6007556003600d556002600e556005600f556001601060006101000a81548160ff0219169083151502179055506001601060016101000a81548160ff0219169083151502179055506000601060026101000a81548160ff02191690831515021790555060066011556006601255600560135560646014556001601a60006101000a81548160ff0219169083151502179055506103e860086006546200021c919062000ebe565b62000228919062000f4e565b601b5562000248600a601b5462000c1960201b6200197f1790919060201c565b601c553480156200025857600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050426019819055507377e38e37f843dfe2e5bc8724f2cf0af90cb88fe2601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731f83c942bfb6fb5ea3908ac4579fd97d30c262d9601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000466573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048c919062000ff0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620004ea92919062001033565b6020604051808303816000875af11580156200050a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000530919062000ff0565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600654600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405162000c0b919062001071565b60405180910390a362001156565b600062000c6383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c6b60201b60201c565b905092915050565b6000808311829062000cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cac919062001132565b60405180910390fd5b506000838562000cc6919062000f4e565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d615780860481111562000d395762000d3862000cd3565b5b600185161562000d495780820291505b808102905062000d598562000d02565b945062000d19565b94509492505050565b60008262000d7c576001905062000e4f565b8162000d8c576000905062000e4f565b816001811462000da5576002811462000db05762000de6565b600191505062000e4f565b60ff84111562000dc55762000dc462000cd3565b5b8360020a91508482111562000ddf5762000dde62000cd3565b5b5062000e4f565b5060208310610133831016604e8410600b841016171562000e205782820a90508381111562000e1a5762000e1962000cd3565b5b62000e4f565b62000e2f848484600162000d0f565b9250905081840481111562000e495762000e4862000cd3565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000e7a8262000e56565b915062000e878362000e60565b925062000eb67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d6a565b905092915050565b600062000ecb8262000e56565b915062000ed88362000e56565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f145762000f1362000cd3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f5b8262000e56565b915062000f688362000e56565b92508262000f7b5762000f7a62000f1f565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fb88262000f8b565b9050919050565b62000fca8162000fab565b811462000fd657600080fd5b50565b60008151905062000fea8162000fbf565b92915050565b60006020828403121562001009576200100862000f86565b5b6000620010198482850162000fd9565b91505092915050565b6200102d8162000fab565b82525050565b60006040820190506200104a600083018562001022565b62001059602083018462001022565b9392505050565b6200106b8162000e56565b82525050565b600060208201905062001088600083018462001060565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015620010ca578082015181840152602081019050620010ad565b83811115620010da576000848401525b50505050565b6000601f19601f8301169050919050565b6000620010fe826200108e565b6200110a818562001099565b93506200111c818560208601620010aa565b6200112781620010e0565b840191505092915050565b600060208201905081810360008301526200114e8184620010f1565b905092915050565b61358a80620011666000396000f3fe60806040526004361061026b5760003560e01c806378109e5411610144578063bf56b371116100b6578063dd62ed3e1161007a578063dd62ed3e1461090d578063e156afd51461094a578063f0b37c0414610961578063f2fde38b1461098a578063f887ea40146109b3578063fe9fbb80146109de57610272565b8063bf56b3711461083c578063c04a78ad14610867578063cd653ee614610890578063cec10c11146108bb578063d0889358146108e457610272565b806395d89b411161010857806395d89b411461072c5780639d9241ec14610757578063a4b45c0014610782578063a8aa1b31146107ab578063a9059cbb146107d6578063b6a5d7de1461081357610272565b806378109e541461065757806382bf293c14610682578063882cfb3f146106ab578063893d20e8146106d657806391917d741461070157610272565b80632f54bf6e116101dd578063532ce9fd116101a1578063532ce9fd1461054757806357dbb86914610572578063658d4b7f1461059d578063675ef65c146105c65780636ddd1713146105ef57806370a082311461061a57610272565b80632f54bf6e14610472578063313ce567146104af578063360bfd54146104da57806339bb668a146105055780634ada218b1461051c57610272565b806318160ddd1161022f57806318160ddd1461035e5780631df4ccfc1461038957806323b872dd146103b457806326c97eed146103f15780632b112e491461041c5780632b3459641461044757610272565b80630445b6671461027757806306fdde03146102a2578063095ea7b3146102cd57806309f19ed21461030a5780630e2249321461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a1b565b604051610299919061288f565b60405180910390f35b3480156102ae57600080fd5b506102b7610a21565b6040516102c49190612943565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef91906129f4565b610a5e565b6040516103019190612a4f565b60405180910390f35b34801561031657600080fd5b50610331600480360381019061032c9190612a96565b610b50565b005b34801561033f57600080fd5b50610348610bf3565b604051610355919061288f565b60405180910390f35b34801561036a57600080fd5b50610373610bf9565b604051610380919061288f565b60405180910390f35b34801561039557600080fd5b5061039e610c03565b6040516103ab919061288f565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190612ad6565b610c09565b6040516103e89190612a4f565b60405180910390f35b3480156103fd57600080fd5b50610406610e09565b604051610413919061288f565b60405180910390f35b34801561042857600080fd5b50610431610e0f565b60405161043e919061288f565b60405180910390f35b34801561045357600080fd5b5061045c610e91565b604051610469919061288f565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190612b29565b610e97565b6040516104a69190612a4f565b60405180910390f35b3480156104bb57600080fd5b506104c4610ef0565b6040516104d19190612b72565b60405180910390f35b3480156104e657600080fd5b506104ef610ef9565b6040516104fc919061288f565b60405180910390f35b34801561051157600080fd5b5061051a610eff565b005b34801561052857600080fd5b50610531610f64565b60405161053e9190612a4f565b60405180910390f35b34801561055357600080fd5b5061055c610f77565b6040516105699190612b9c565b60405180910390f35b34801561057e57600080fd5b50610587610f9d565b6040516105949190612b9c565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190612a96565b610fc3565b005b3480156105d257600080fd5b506105ed60048036038101906105e89190612bb7565b611066565b005b3480156105fb57600080fd5b506106046110cb565b6040516106119190612a4f565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190612b29565b6110de565b60405161064e919061288f565b60405180910390f35b34801561066357600080fd5b5061066c611127565b604051610679919061288f565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a49190612be4565b61112d565b005b3480156106b757600080fd5b506106c06111ea565b6040516106cd9190612a4f565b60405180910390f35b3480156106e257600080fd5b506106eb6111fd565b6040516106f89190612b9c565b60405180910390f35b34801561070d57600080fd5b50610716611226565b604051610723919061288f565b60405180910390f35b34801561073857600080fd5b5061074161122c565b60405161074e9190612943565b60405180910390f35b34801561076357600080fd5b5061076c611269565b604051610779919061288f565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190612c11565b61126f565b005b3480156107b757600080fd5b506107c061133d565b6040516107cd9190612b9c565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f891906129f4565b611363565b60405161080a9190612a4f565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190612b29565b611378565b005b34801561084857600080fd5b5061085161141a565b60405161085e919061288f565b60405180910390f35b34801561087357600080fd5b5061088e60048036038101906108899190612a96565b611420565b005b34801561089c57600080fd5b506108a56114c3565b6040516108b29190612a4f565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190612c51565b6114d6565b005b3480156108f057600080fd5b5061090b60048036038101906109069190612ca4565b611586565b005b34801561091957600080fd5b50610934600480360381019061092f9190612c11565b61165b565b604051610941919061288f565b60405180910390f35b34801561095657600080fd5b5061095f6116e2565b005b34801561096d57600080fd5b5061098860048036038101906109839190612b29565b611747565b005b34801561099657600080fd5b506109b160048036038101906109ac9190612d35565b6117ea565b005b3480156109bf57600080fd5b506109c8611903565b6040516109d59190612dc1565b60405180910390f35b3480156109ea57600080fd5b50610a056004803603810190610a009190612b29565b611929565b604051610a129190612a4f565b60405180910390f35b601b5481565b60606040518060400160405280600781526020017f46696661496e7500000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b3e919061288f565b60405180910390a36001905092915050565b610b5933611929565b610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612e28565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6000600654905090565b60115481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610df557610d74826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c99092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e00848484611a2d565b90509392505050565b600f5481565b6000610e8c610e3f600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110de565b610e7e610e6d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110de565b600654611e5990919063ffffffff16565b611e5990919063ffffffff16565b905090565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600d5481565b610f0833610e97565b610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e90612e94565b60405180910390fd5b6000601060016101000a81548160ff021916908315150217905550565b601060029054906101000a900460ff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fcc33611929565b61100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290612e28565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61106f33610e97565b6110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590612e94565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b601a60009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b61113633610e97565b611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90612e94565b60405180910390fd5b60018110156111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090612f26565b60405180910390fd5b6111e160646111d383600654611ea390919063ffffffff16565b61197f90919063ffffffff16565b60078190555050565b601060019054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601c5481565b60606040518060400160405280600781526020017f46494641494e5500000000000000000000000000000000000000000000000000815250905090565b60125481565b61127833610e97565b6112b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ae90612e94565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611370338484611a2d565b905092915050565b61138133610e97565b6113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612e94565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60195481565b61142933611929565b611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90612e28565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601060009054906101000a900460ff1681565b6114df33610e97565b61151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590612e94565b60405180910390fd5b600560145461152d9190612fa4565b831061153857600080fd5b60056014546115479190612fa4565b821061155257600080fd5b600a6014546115619190612fa4565b811061156c57600080fd5b826011819055508160128190555080601381905550505050565b61158f33611929565b6115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590612e28565b60405180910390fd5b808211611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790613047565b60405180910390fd5b82601a60006101000a81548160ff021916908315150217905550633b9aca008261163a9190613067565b601b81905550633b9aca00816116509190613067565b601c81905550505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116eb33610e97565b61172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190612e94565b60405180910390fd5b6001601060026101000a81548160ff021916908315150217905550565b61175033610e97565b61178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178690612e94565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117f333610e97565b611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990612e94565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118f891906130e2565b60405180910390a150565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006119c183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f1e565b905092915050565b6000838311158290611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a089190612943565b60405180910390fd5b5060008385611a2091906130fd565b9050809150509392505050565b6000601d60009054906101000a900460ff1615611a5657611a4f848484611f81565b9050611e52565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611af757601060029054906101000a900460ff16611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed9061317d565b60405180910390fd5b5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ba7576000611b53846110de565b90506007548382611b64919061319d565b1115611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c9061323f565b60405180910390fd5b505b611baf612154565b15611c0657611bbc61223e565b6000611bc7306110de565b9050601c54811115611c0457611c0230600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601c54611f81565b505b505b611c8f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c99092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d3a5750601060009054906101000a900460ff165b611d445782611d50565b611d4f858486612589565b5b9050611da481600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281890919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e44919061288f565b60405180910390a360019150505b9392505050565b6000611e9b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119c9565b905092915050565b600080831415611eb65760009050611f18565b60008284611ec49190613067565b9050828482611ed39190612fa4565b14611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a906132d1565b60405180910390fd5b809150505b92915050565b60008083118290611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c9190612943565b60405180910390fd5b5060008385611f749190612fa4565b9050809150509392505050565b600061200c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c99092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120a182600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281890919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612141919061288f565b60405180910390a3600190509392505050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121c15750601d60009054906101000a900460ff16155b80156121d95750601a60009054906101000a900460ff165b801561223957506121f66002601b54611ea390919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612276576122756132f1565b5b6040519080825280602002602001820160405280156122a45781602001602082028036833780820191505090505b50905030816000815181106122bc576122bb613320565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061232d5761232c613320565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947601b5460008430426040518663ffffffff1660e01b81526004016123cd959493929190613448565b600060405180830381600087803b1580156123e757600080fd5b505af11580156123fb573d6000803e3d6000fd5b505050506000479050600061242f600f54612421600d5485611ea390919063ffffffff16565b61197f90919063ffffffff16565b90506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612479906134d3565b60006040518083038185875af1925050503d80600081146124b6576040519150601f19603f3d011682016040523d82523d6000602084013e6124bb565b606091505b505090506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661250d8486611e5990919063ffffffff16565b604051612519906134d3565b60006040518083038185875af1925050503d8060008114612556576040519150601f19603f3d011682016040523d82523d6000602084013e61255b565b606091505b50509050600090506000915050505050506000601d60006101000a81548160ff021916908315150217905550565b600080601060019054906101000a900460ff16156125cf576125c860646125ba606387611ea390919063ffffffff16565b61197f90919063ffffffff16565b9050612701565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126515761264a60145461263c60115487611ea390919063ffffffff16565b61197f90919063ffffffff16565b9050612700565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126d3576126cc6014546126be60125487611ea390919063ffffffff16565b61197f90919063ffffffff16565b90506126ff565b6126fc6014546126ee60135487611ea390919063ffffffff16565b61197f90919063ffffffff16565b90505b5b5b61275381600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281890919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127f3919061288f565b60405180910390a361280e8185611e5990919063ffffffff16565b9150509392505050565b6000808284612827919061319d565b90508381101561286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286390613534565b60405180910390fd5b8091505092915050565b6000819050919050565b61288981612876565b82525050565b60006020820190506128a46000830184612880565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128e45780820151818401526020810190506128c9565b838111156128f3576000848401525b50505050565b6000601f19601f8301169050919050565b6000612915826128aa565b61291f81856128b5565b935061292f8185602086016128c6565b612938816128f9565b840191505092915050565b6000602082019050818103600083015261295d818461290a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129958261296a565b9050919050565b6129a58161298a565b81146129b057600080fd5b50565b6000813590506129c28161299c565b92915050565b6129d181612876565b81146129dc57600080fd5b50565b6000813590506129ee816129c8565b92915050565b60008060408385031215612a0b57612a0a612965565b5b6000612a19858286016129b3565b9250506020612a2a858286016129df565b9150509250929050565b60008115159050919050565b612a4981612a34565b82525050565b6000602082019050612a646000830184612a40565b92915050565b612a7381612a34565b8114612a7e57600080fd5b50565b600081359050612a9081612a6a565b92915050565b60008060408385031215612aad57612aac612965565b5b6000612abb858286016129b3565b9250506020612acc85828601612a81565b9150509250929050565b600080600060608486031215612aef57612aee612965565b5b6000612afd868287016129b3565b9350506020612b0e868287016129b3565b9250506040612b1f868287016129df565b9150509250925092565b600060208284031215612b3f57612b3e612965565b5b6000612b4d848285016129b3565b91505092915050565b600060ff82169050919050565b612b6c81612b56565b82525050565b6000602082019050612b876000830184612b63565b92915050565b612b968161298a565b82525050565b6000602082019050612bb16000830184612b8d565b92915050565b600060208284031215612bcd57612bcc612965565b5b6000612bdb84828501612a81565b91505092915050565b600060208284031215612bfa57612bf9612965565b5b6000612c08848285016129df565b91505092915050565b60008060408385031215612c2857612c27612965565b5b6000612c36858286016129b3565b9250506020612c47858286016129b3565b9150509250929050565b600080600060608486031215612c6a57612c69612965565b5b6000612c78868287016129df565b9350506020612c89868287016129df565b9250506040612c9a868287016129df565b9150509250925092565b600080600060608486031215612cbd57612cbc612965565b5b6000612ccb86828701612a81565b9350506020612cdc868287016129df565b9250506040612ced868287016129df565b9150509250925092565b6000612d028261296a565b9050919050565b612d1281612cf7565b8114612d1d57600080fd5b50565b600081359050612d2f81612d09565b92915050565b600060208284031215612d4b57612d4a612965565b5b6000612d5984828501612d20565b91505092915050565b6000819050919050565b6000612d87612d82612d7d8461296a565b612d62565b61296a565b9050919050565b6000612d9982612d6c565b9050919050565b6000612dab82612d8e565b9050919050565b612dbb81612da0565b82525050565b6000602082019050612dd66000830184612db2565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000612e12600b836128b5565b9150612e1d82612ddc565b602082019050919050565b60006020820190508181036000830152612e4181612e05565b9050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612e7e6006836128b5565b9150612e8982612e48565b602082019050919050565b60006020820190508181036000830152612ead81612e71565b9050919050565b7f4d61782077616c6c65742063616e206f6e6c79206265206d6f7265207468616e60008201527f2031250000000000000000000000000000000000000000000000000000000000602082015250565b6000612f106023836128b5565b9150612f1b82612eb4565b604082019050919050565b60006020820190508181036000830152612f3f81612f03565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612faf82612876565b9150612fba83612876565b925082612fca57612fc9612f46565b5b828204905092915050565b7f53776170207468726573686f6c64206d757374206265206d6f7265207468616e60008201527f20616d6f756e74206275726e6564000000000000000000000000000000000000602082015250565b6000613031602e836128b5565b915061303c82612fd5565b604082019050919050565b6000602082019050818103600083015261306081613024565b9050919050565b600061307282612876565b915061307d83612876565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130b6576130b5612f75565b5b828202905092915050565b60006130cc82612d8e565b9050919050565b6130dc816130c1565b82525050565b60006020820190506130f760008301846130d3565b92915050565b600061310882612876565b915061311383612876565b92508282101561312657613125612f75565b5b828203905092915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006131676014836128b5565b915061317282613131565b602082019050919050565b600060208201905081810360008301526131968161315a565b9050919050565b60006131a882612876565b91506131b383612876565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131e8576131e7612f75565b5b828201905092915050565b7f4d61782077616c6c657420726561636865642e00000000000000000000000000600082015250565b60006132296013836128b5565b9150613234826131f3565b602082019050919050565b600060208201905081810360008301526132588161321c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006132bb6021836128b5565b91506132c68261325f565b604082019050919050565b600060208201905081810360008301526132ea816132ae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061337461336f61336a8461334f565b612d62565b612876565b9050919050565b61338481613359565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133bf8161298a565b82525050565b60006133d183836133b6565b60208301905092915050565b6000602082019050919050565b60006133f58261338a565b6133ff8185613395565b935061340a836133a6565b8060005b8381101561343b57815161342288826133c5565b975061342d836133dd565b92505060018101905061340e565b5085935050505092915050565b600060a08201905061345d6000830188612880565b61346a602083018761337b565b818103604083015261347c81866133ea565b905061348b6060830185612b8d565b6134986080830184612880565b9695505050505050565b600081905092915050565b50565b60006134bd6000836134a2565b91506134c8826134ad565b600082019050919050565b60006134de826134b0565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061351e601b836128b5565b9150613529826134e8565b602082019050919050565b6000602082019050818103600083015261354d81613511565b905091905056fea2646970667358221220a4b4672bbc8cb6e093a872d1c826b533488a0d43fbda212ed39aa108981322ab64736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c806378109e5411610144578063bf56b371116100b6578063dd62ed3e1161007a578063dd62ed3e1461090d578063e156afd51461094a578063f0b37c0414610961578063f2fde38b1461098a578063f887ea40146109b3578063fe9fbb80146109de57610272565b8063bf56b3711461083c578063c04a78ad14610867578063cd653ee614610890578063cec10c11146108bb578063d0889358146108e457610272565b806395d89b411161010857806395d89b411461072c5780639d9241ec14610757578063a4b45c0014610782578063a8aa1b31146107ab578063a9059cbb146107d6578063b6a5d7de1461081357610272565b806378109e541461065757806382bf293c14610682578063882cfb3f146106ab578063893d20e8146106d657806391917d741461070157610272565b80632f54bf6e116101dd578063532ce9fd116101a1578063532ce9fd1461054757806357dbb86914610572578063658d4b7f1461059d578063675ef65c146105c65780636ddd1713146105ef57806370a082311461061a57610272565b80632f54bf6e14610472578063313ce567146104af578063360bfd54146104da57806339bb668a146105055780634ada218b1461051c57610272565b806318160ddd1161022f57806318160ddd1461035e5780631df4ccfc1461038957806323b872dd146103b457806326c97eed146103f15780632b112e491461041c5780632b3459641461044757610272565b80630445b6671461027757806306fdde03146102a2578063095ea7b3146102cd57806309f19ed21461030a5780630e2249321461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a1b565b604051610299919061288f565b60405180910390f35b3480156102ae57600080fd5b506102b7610a21565b6040516102c49190612943565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef91906129f4565b610a5e565b6040516103019190612a4f565b60405180910390f35b34801561031657600080fd5b50610331600480360381019061032c9190612a96565b610b50565b005b34801561033f57600080fd5b50610348610bf3565b604051610355919061288f565b60405180910390f35b34801561036a57600080fd5b50610373610bf9565b604051610380919061288f565b60405180910390f35b34801561039557600080fd5b5061039e610c03565b6040516103ab919061288f565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190612ad6565b610c09565b6040516103e89190612a4f565b60405180910390f35b3480156103fd57600080fd5b50610406610e09565b604051610413919061288f565b60405180910390f35b34801561042857600080fd5b50610431610e0f565b60405161043e919061288f565b60405180910390f35b34801561045357600080fd5b5061045c610e91565b604051610469919061288f565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190612b29565b610e97565b6040516104a69190612a4f565b60405180910390f35b3480156104bb57600080fd5b506104c4610ef0565b6040516104d19190612b72565b60405180910390f35b3480156104e657600080fd5b506104ef610ef9565b6040516104fc919061288f565b60405180910390f35b34801561051157600080fd5b5061051a610eff565b005b34801561052857600080fd5b50610531610f64565b60405161053e9190612a4f565b60405180910390f35b34801561055357600080fd5b5061055c610f77565b6040516105699190612b9c565b60405180910390f35b34801561057e57600080fd5b50610587610f9d565b6040516105949190612b9c565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190612a96565b610fc3565b005b3480156105d257600080fd5b506105ed60048036038101906105e89190612bb7565b611066565b005b3480156105fb57600080fd5b506106046110cb565b6040516106119190612a4f565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190612b29565b6110de565b60405161064e919061288f565b60405180910390f35b34801561066357600080fd5b5061066c611127565b604051610679919061288f565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a49190612be4565b61112d565b005b3480156106b757600080fd5b506106c06111ea565b6040516106cd9190612a4f565b60405180910390f35b3480156106e257600080fd5b506106eb6111fd565b6040516106f89190612b9c565b60405180910390f35b34801561070d57600080fd5b50610716611226565b604051610723919061288f565b60405180910390f35b34801561073857600080fd5b5061074161122c565b60405161074e9190612943565b60405180910390f35b34801561076357600080fd5b5061076c611269565b604051610779919061288f565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190612c11565b61126f565b005b3480156107b757600080fd5b506107c061133d565b6040516107cd9190612b9c565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f891906129f4565b611363565b60405161080a9190612a4f565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190612b29565b611378565b005b34801561084857600080fd5b5061085161141a565b60405161085e919061288f565b60405180910390f35b34801561087357600080fd5b5061088e60048036038101906108899190612a96565b611420565b005b34801561089c57600080fd5b506108a56114c3565b6040516108b29190612a4f565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190612c51565b6114d6565b005b3480156108f057600080fd5b5061090b60048036038101906109069190612ca4565b611586565b005b34801561091957600080fd5b50610934600480360381019061092f9190612c11565b61165b565b604051610941919061288f565b60405180910390f35b34801561095657600080fd5b5061095f6116e2565b005b34801561096d57600080fd5b5061098860048036038101906109839190612b29565b611747565b005b34801561099657600080fd5b506109b160048036038101906109ac9190612d35565b6117ea565b005b3480156109bf57600080fd5b506109c8611903565b6040516109d59190612dc1565b60405180910390f35b3480156109ea57600080fd5b50610a056004803603810190610a009190612b29565b611929565b604051610a129190612a4f565b60405180910390f35b601b5481565b60606040518060400160405280600781526020017f46696661496e7500000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b3e919061288f565b60405180910390a36001905092915050565b610b5933611929565b610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612e28565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6000600654905090565b60115481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610df557610d74826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c99092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e00848484611a2d565b90509392505050565b600f5481565b6000610e8c610e3f600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110de565b610e7e610e6d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110de565b600654611e5990919063ffffffff16565b611e5990919063ffffffff16565b905090565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600d5481565b610f0833610e97565b610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e90612e94565b60405180910390fd5b6000601060016101000a81548160ff021916908315150217905550565b601060029054906101000a900460ff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fcc33611929565b61100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290612e28565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61106f33610e97565b6110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590612e94565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b601a60009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b61113633610e97565b611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90612e94565b60405180910390fd5b60018110156111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090612f26565b60405180910390fd5b6111e160646111d383600654611ea390919063ffffffff16565b61197f90919063ffffffff16565b60078190555050565b601060019054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601c5481565b60606040518060400160405280600781526020017f46494641494e5500000000000000000000000000000000000000000000000000815250905090565b60125481565b61127833610e97565b6112b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ae90612e94565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611370338484611a2d565b905092915050565b61138133610e97565b6113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612e94565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60195481565b61142933611929565b611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90612e28565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601060009054906101000a900460ff1681565b6114df33610e97565b61151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590612e94565b60405180910390fd5b600560145461152d9190612fa4565b831061153857600080fd5b60056014546115479190612fa4565b821061155257600080fd5b600a6014546115619190612fa4565b811061156c57600080fd5b826011819055508160128190555080601381905550505050565b61158f33611929565b6115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590612e28565b60405180910390fd5b808211611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790613047565b60405180910390fd5b82601a60006101000a81548160ff021916908315150217905550633b9aca008261163a9190613067565b601b81905550633b9aca00816116509190613067565b601c81905550505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116eb33610e97565b61172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190612e94565b60405180910390fd5b6001601060026101000a81548160ff021916908315150217905550565b61175033610e97565b61178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178690612e94565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117f333610e97565b611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990612e94565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118f891906130e2565b60405180910390a150565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006119c183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f1e565b905092915050565b6000838311158290611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a089190612943565b60405180910390fd5b5060008385611a2091906130fd565b9050809150509392505050565b6000601d60009054906101000a900460ff1615611a5657611a4f848484611f81565b9050611e52565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611af757601060029054906101000a900460ff16611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed9061317d565b60405180910390fd5b5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ba7576000611b53846110de565b90506007548382611b64919061319d565b1115611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c9061323f565b60405180910390fd5b505b611baf612154565b15611c0657611bbc61223e565b6000611bc7306110de565b9050601c54811115611c0457611c0230600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601c54611f81565b505b505b611c8f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c99092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d3a5750601060009054906101000a900460ff165b611d445782611d50565b611d4f858486612589565b5b9050611da481600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281890919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e44919061288f565b60405180910390a360019150505b9392505050565b6000611e9b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119c9565b905092915050565b600080831415611eb65760009050611f18565b60008284611ec49190613067565b9050828482611ed39190612fa4565b14611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a906132d1565b60405180910390fd5b809150505b92915050565b60008083118290611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c9190612943565b60405180910390fd5b5060008385611f749190612fa4565b9050809150509392505050565b600061200c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c99092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120a182600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281890919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612141919061288f565b60405180910390a3600190509392505050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121c15750601d60009054906101000a900460ff16155b80156121d95750601a60009054906101000a900460ff165b801561223957506121f66002601b54611ea390919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612276576122756132f1565b5b6040519080825280602002602001820160405280156122a45781602001602082028036833780820191505090505b50905030816000815181106122bc576122bb613320565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061232d5761232c613320565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947601b5460008430426040518663ffffffff1660e01b81526004016123cd959493929190613448565b600060405180830381600087803b1580156123e757600080fd5b505af11580156123fb573d6000803e3d6000fd5b505050506000479050600061242f600f54612421600d5485611ea390919063ffffffff16565b61197f90919063ffffffff16565b90506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612479906134d3565b60006040518083038185875af1925050503d80600081146124b6576040519150601f19603f3d011682016040523d82523d6000602084013e6124bb565b606091505b505090506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661250d8486611e5990919063ffffffff16565b604051612519906134d3565b60006040518083038185875af1925050503d8060008114612556576040519150601f19603f3d011682016040523d82523d6000602084013e61255b565b606091505b50509050600090506000915050505050506000601d60006101000a81548160ff021916908315150217905550565b600080601060019054906101000a900460ff16156125cf576125c860646125ba606387611ea390919063ffffffff16565b61197f90919063ffffffff16565b9050612701565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126515761264a60145461263c60115487611ea390919063ffffffff16565b61197f90919063ffffffff16565b9050612700565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126d3576126cc6014546126be60125487611ea390919063ffffffff16565b61197f90919063ffffffff16565b90506126ff565b6126fc6014546126ee60135487611ea390919063ffffffff16565b61197f90919063ffffffff16565b90505b5b5b61275381600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281890919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127f3919061288f565b60405180910390a361280e8185611e5990919063ffffffff16565b9150509392505050565b6000808284612827919061319d565b90508381101561286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286390613534565b60405180910390fd5b8091505092915050565b6000819050919050565b61288981612876565b82525050565b60006020820190506128a46000830184612880565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128e45780820151818401526020810190506128c9565b838111156128f3576000848401525b50505050565b6000601f19601f8301169050919050565b6000612915826128aa565b61291f81856128b5565b935061292f8185602086016128c6565b612938816128f9565b840191505092915050565b6000602082019050818103600083015261295d818461290a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129958261296a565b9050919050565b6129a58161298a565b81146129b057600080fd5b50565b6000813590506129c28161299c565b92915050565b6129d181612876565b81146129dc57600080fd5b50565b6000813590506129ee816129c8565b92915050565b60008060408385031215612a0b57612a0a612965565b5b6000612a19858286016129b3565b9250506020612a2a858286016129df565b9150509250929050565b60008115159050919050565b612a4981612a34565b82525050565b6000602082019050612a646000830184612a40565b92915050565b612a7381612a34565b8114612a7e57600080fd5b50565b600081359050612a9081612a6a565b92915050565b60008060408385031215612aad57612aac612965565b5b6000612abb858286016129b3565b9250506020612acc85828601612a81565b9150509250929050565b600080600060608486031215612aef57612aee612965565b5b6000612afd868287016129b3565b9350506020612b0e868287016129b3565b9250506040612b1f868287016129df565b9150509250925092565b600060208284031215612b3f57612b3e612965565b5b6000612b4d848285016129b3565b91505092915050565b600060ff82169050919050565b612b6c81612b56565b82525050565b6000602082019050612b876000830184612b63565b92915050565b612b968161298a565b82525050565b6000602082019050612bb16000830184612b8d565b92915050565b600060208284031215612bcd57612bcc612965565b5b6000612bdb84828501612a81565b91505092915050565b600060208284031215612bfa57612bf9612965565b5b6000612c08848285016129df565b91505092915050565b60008060408385031215612c2857612c27612965565b5b6000612c36858286016129b3565b9250506020612c47858286016129b3565b9150509250929050565b600080600060608486031215612c6a57612c69612965565b5b6000612c78868287016129df565b9350506020612c89868287016129df565b9250506040612c9a868287016129df565b9150509250925092565b600080600060608486031215612cbd57612cbc612965565b5b6000612ccb86828701612a81565b9350506020612cdc868287016129df565b9250506040612ced868287016129df565b9150509250925092565b6000612d028261296a565b9050919050565b612d1281612cf7565b8114612d1d57600080fd5b50565b600081359050612d2f81612d09565b92915050565b600060208284031215612d4b57612d4a612965565b5b6000612d5984828501612d20565b91505092915050565b6000819050919050565b6000612d87612d82612d7d8461296a565b612d62565b61296a565b9050919050565b6000612d9982612d6c565b9050919050565b6000612dab82612d8e565b9050919050565b612dbb81612da0565b82525050565b6000602082019050612dd66000830184612db2565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000612e12600b836128b5565b9150612e1d82612ddc565b602082019050919050565b60006020820190508181036000830152612e4181612e05565b9050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612e7e6006836128b5565b9150612e8982612e48565b602082019050919050565b60006020820190508181036000830152612ead81612e71565b9050919050565b7f4d61782077616c6c65742063616e206f6e6c79206265206d6f7265207468616e60008201527f2031250000000000000000000000000000000000000000000000000000000000602082015250565b6000612f106023836128b5565b9150612f1b82612eb4565b604082019050919050565b60006020820190508181036000830152612f3f81612f03565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612faf82612876565b9150612fba83612876565b925082612fca57612fc9612f46565b5b828204905092915050565b7f53776170207468726573686f6c64206d757374206265206d6f7265207468616e60008201527f20616d6f756e74206275726e6564000000000000000000000000000000000000602082015250565b6000613031602e836128b5565b915061303c82612fd5565b604082019050919050565b6000602082019050818103600083015261306081613024565b9050919050565b600061307282612876565b915061307d83612876565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130b6576130b5612f75565b5b828202905092915050565b60006130cc82612d8e565b9050919050565b6130dc816130c1565b82525050565b60006020820190506130f760008301846130d3565b92915050565b600061310882612876565b915061311383612876565b92508282101561312657613125612f75565b5b828203905092915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006131676014836128b5565b915061317282613131565b602082019050919050565b600060208201905081810360008301526131968161315a565b9050919050565b60006131a882612876565b91506131b383612876565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131e8576131e7612f75565b5b828201905092915050565b7f4d61782077616c6c657420726561636865642e00000000000000000000000000600082015250565b60006132296013836128b5565b9150613234826131f3565b602082019050919050565b600060208201905081810360008301526132588161321c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006132bb6021836128b5565b91506132c68261325f565b604082019050919050565b600060208201905081810360008301526132ea816132ae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061337461336f61336a8461334f565b612d62565b612876565b9050919050565b61338481613359565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133bf8161298a565b82525050565b60006133d183836133b6565b60208301905092915050565b6000602082019050919050565b60006133f58261338a565b6133ff8185613395565b935061340a836133a6565b8060005b8381101561343b57815161342288826133c5565b975061342d836133dd565b92505060018101905061340e565b5085935050505092915050565b600060a08201905061345d6000830188612880565b61346a602083018761337b565b818103604083015261347c81866133ea565b905061348b6060830185612b8d565b6134986080830184612880565b9695505050505050565b600081905092915050565b50565b60006134bd6000836134a2565b91506134c8826134ad565b600082019050919050565b60006134de826134b0565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061351e601b836128b5565b9150613529826134e8565b602082019050919050565b6000602082019050818103600083015261354d81613511565b905091905056fea2646970667358221220a4b4672bbc8cb6e093a872d1c826b533488a0d43fbda212ed39aa108981322ab64736f6c634300080a0033

Deployed Bytecode Sourcemap

5014:11721:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6674:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8741:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9266:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14393:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6370:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8423:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6278:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9718:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6106:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15637:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6071:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3731:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8533:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6030:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16650:82;;;;;;;;;;;;;:::i;:::-;;6217:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6449:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6494:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14265:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16024:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6637:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8943:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5564:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15787:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6182:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8843:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6803:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8635:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6332:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14753:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6575:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9522:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3404:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6603:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14519:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6150:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16119:427;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15227:402;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9070:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16554:88;;;;;;;;;;;;;:::i;:::-;;3574:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4131:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6544:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3905:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6674:56;;;;:::o;8741:94::-;8789:13;8822:5;;;;;;;;;;;;;;;;;8815:12;;8741:94;:::o;9266:248::-;9368:4;9425:6;9390:11;:23;9402:10;9390:23;;;;;;;;;;;;;;;:32;9414:7;9390:32;;;;;;;;;;;;;;;:41;;;;9468:7;9447:37;;9456:10;9447:37;;;9477:6;9447:37;;;;;;:::i;:::-;;;;;;;;9502:4;9495:11;;9266:248;;;;:::o;14393:118::-;3280:24;3293:10;3280:12;:24::i;:::-;3272:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14498:5:::1;14477;:18;14483:11;14477:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;14393:118:::0;;:::o;6370:35::-;;;;:::o;8423:102::-;8478:7;8505:12;;8498:19;;8423:102;:::o;6278:27::-;;;;:::o;9718:422::-;9852:4;9908:17;9873:11;:19;9885:6;9873:19;;;;;;;;;;;;;;;:31;9893:10;9873:31;;;;;;;;;;;;;;;;:52;9869:206;;9976:87;10030:6;9976:87;;;;;;;;;;;;;;;;;:11;:19;9988:6;9976:19;;;;;;;;;;;;;;;:31;9996:10;9976:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;9942:11;:19;9954:6;9942:19;;;;;;;;;;;;;;;:31;9962:10;9942:31;;;;;;;;;;;;;;;:121;;;;9869:206;10092:40;10106:6;10114:9;10125:6;10092:13;:40::i;:::-;10085:47;;9718:422;;;;;:::o;6106:37::-;;;;:::o;15637:142::-;15690:7;15717:54;15755:15;15765:4;;;;;;;;;;;15755:9;:15::i;:::-;15717:33;15734:15;15744:4;;;;;;;;;;;15734:9;:15::i;:::-;15717:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15710:61;;15637:142;:::o;6071:28::-;;;;:::o;3731:103::-;3786:4;3821:5;;;;;;;;;;;3810:16;;:7;:16;;;3803:23;;3731:103;;;:::o;8533:94::-;8585:5;5456:1;8603:16;;8533:94;:::o;6030:34::-;;;;:::o;16650:82::-;3102:19;3110:10;3102:7;:19::i;:::-;3094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16719:5:::1;16707:9;;:17;;;;;;;;;;;;;;;;;;16650:82::o:0;6217:34::-;;;;;;;;;;;;;:::o;6449:38::-;;;;;;;;;;;;;:::o;6494:41::-;;;;;;;;;;;;;:::o;14265:120::-;3280:24;3293:10;3280:12;:24::i;:::-;3272:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14371:6:::1;14349:11;:19;14361:6;14349:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14265:120:::0;;:::o;16024:87::-;3102:19;3110:10;3102:7;:19::i;:::-;3094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16096:7:::1;16087:6;;:16;;;;;;;;;;;;;;;;;;16024:87:::0;:::o;6637:30::-;;;;;;;;;;;;;:::o;8943:119::-;9009:7;9036:9;:18;9046:7;9036:18;;;;;;;;;;;;;;;;9029:25;;8943:119;;;:::o;5564:57::-;;;;:::o;15787:229::-;3102:19;3110:10;3102:7;:19::i;:::-;3094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15904:1:::1;15893:7;:12;;15885:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15974:34;16004:3;15974:25;15991:7;15974:12;;:16;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;15956:15;:52;;;;15787:229:::0;:::o;6182:28::-;;;;;;;;;;;;;:::o;8843:92::-;8895:7;8922:5;;;;;;;;;;;8915:12;;8843:92;:::o;6803:52::-;;;;:::o;8635:98::-;8685:13;8718:7;;;;;;;;;;;;;;;;;8711:14;;8635:98;:::o;6332:31::-;;;;:::o;14753:276::-;3102:19;3110:10;3102:7;:19::i;:::-;3094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14930:24:::1;14904:23;;:50;;;;;;;;;;;;;;;;;;14994:27;14965:26;;:56;;;;;;;;;;;;;;;;;;14753:276:::0;;:::o;6575:19::-;;;;;;;;;;;;;:::o;9522:188::-;9629:4;9658:44;9672:10;9684:9;9695:6;9658:13;:44::i;:::-;9651:51;;9522:188;;;;:::o;3404:94::-;3102:19;3110:10;3102:7;:19::i;:::-;3094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3486:4:::1;3464:14:::0;:19:::1;3479:3;3464:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3404:94:::0;:::o;6603:25::-;;;;:::o;14519:155::-;3280:24;3293:10;3280:12;:24::i;:::-;3272:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14660:6:::1;14632:17;:25;14650:6;14632:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14519:155:::0;;:::o;6150:25::-;;;;;;;;;;;;;:::o;16119:427::-;3102:19;3110:10;3102:7;:19::i;:::-;3094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16306:1:::1;16289:14;;:18;;;;:::i;:::-;16277:9;:30;16269:39;;;::::0;::::1;;16360:1;16343:14;;:18;;;;:::i;:::-;16327:13;:34;16319:43;;;::::0;::::1;;16418:2;16401:14;;:19;;;;:::i;:::-;16381:17;:39;16373:48;;;::::0;::::1;;16443:9;16432:8;:20;;;;16478:13;16463:12;:28;;;;16521:17;16502:16;:36;;;;16119:427:::0;;;:::o;15227:402::-;3280:24;3293:10;3280:12;:24::i;:::-;3272:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15409:14:::1;15399:7;:24;15377:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;15522:8;15508:11;;:22;;;;;;;;;;;;;;;;;;15567:5;15557:7;:15;;;;:::i;:::-;15541:13;:31;;;;15616:5;15599:14;:22;;;;:::i;:::-;15583:13;:38;;;;15227:402:::0;;;:::o;9070:188::-;9190:7;9222:11;:19;9234:6;9222:19;;;;;;;;;;;;;;;:28;9242:7;9222:28;;;;;;;;;;;;;;;;9215:35;;9070:188;;;;:::o;16554:88::-;3102:19;3110:10;3102:7;:19::i;:::-;3094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16630:4:::1;16613:14;;:21;;;;;;;;;;;;;;;;;;16554:88::o:0;3574:97::-;3102:19;3110:10;3102:7;:19::i;:::-;3094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3658:5:::1;3636:14;:19;3651:3;3636:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3574:97:::0;:::o;4131:173::-;3102:19;3110:10;3102:7;:19::i;:::-;3094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4215:3:::1;4207:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4251:4;4229:14:::0;:19:::1;4244:3;4229:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4271:25;4292:3;4271:25;;;;;;:::i;:::-;;;;;;;;4131:173:::0;:::o;6544:24::-;;;;;;;;;;;;;:::o;3905:107::-;3961:4;3985:14;:19;4000:3;3985:19;;;;;;;;;;;;;;;;;;;;;;;;;3978:26;;3905:107;;;:::o;1058:132::-;1116:7;1143:39;1147:1;1150;1143:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1136:46;;1058:132;;;;:::o;566:226::-;686:7;719:1;714;:6;;722:12;706:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;746:9;762:1;758;:5;;;;:::i;:::-;746:17;;783:1;776:8;;;566:226;;;;;:::o;10148:1368::-;10274:4;10295:6;;;;;;;;;;;10291:87;;;10325:41;10340:6;10348:9;10359:6;10325:14;:41::i;:::-;10318:48;;;;10291:87;10395:14;:22;10410:6;10395:22;;;;;;;;;;;;;;;;;;;;;;;;;10390:103;;10442:14;;;;;;;;;;;10434:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10390:103;10538:17;:28;10556:9;10538:28;;;;;;;;;;;;;;;;;;;;;;;;;10533:239;;10583:18;10604:20;10614:9;10604;:20::i;:::-;10583:41;;10690:15;;10679:6;10666:10;:19;;;;:::i;:::-;10665:40;;10639:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;10568:204;10533:239;10788:16;:14;:16::i;:::-;10784:278;;;10821:10;:8;:10::i;:::-;10876:17;10896:24;10914:4;10896:9;:24::i;:::-;10876:44;;10951:13;;10939:9;:25;10935:116;;;10985:50;11008:4;11015;;;;;;;;;;;11021:13;;10985:14;:50::i;:::-;;10935:116;10806:256;10784:278;11121:90;11157:6;11121:90;;;;;;;;;;;;;;;;;:9;:17;11131:6;11121:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;11101:9;:17;11111:6;11101:17;;;;;;;;;;;;;;;:110;;;;11224:22;11250:11;:19;11262:6;11250:19;;;;;;;;;;;;;;;;;;;;;;;;;11249:20;:30;;;;;11273:6;;;;;;;;;;;11249:30;:102;;11345:6;11249:102;;;11295:34;11303:6;11311;11319:9;11295:7;:34::i;:::-;11249:102;11224:127;;11385:40;11410:14;11385:9;:20;11395:9;11385:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11362:9;:20;11372:9;11362:20;;;;;;;;;;;;;;;:63;;;;11460:9;11443:43;;11452:6;11443:43;;;11471:14;11443:43;;;;;;:::i;:::-;;;;;;;;11504:4;11497:11;;;10148:1368;;;;;;:::o;422:136::-;480:7;507:43;511:1;514;507:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;500:50;;422:136;;;;:::o;800:250::-;858:7;887:1;882;:6;878:47;;;912:1;905:8;;;;878:47;937:9;953:1;949;:5;;;;:::i;:::-;937:17;;982:1;977;973;:5;;;;:::i;:::-;:10;965:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1041:1;1034:8;;;800:250;;;;;:::o;1198:379::-;1318:7;1417:1;1413;:5;1420:12;1405:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1444:9;1460:1;1456;:5;;;;:::i;:::-;1444:17;;1568:1;1561:8;;;1198:379;;;;;:::o;11524:401::-;11651:4;11688:90;11724:6;11688:90;;;;;;;;;;;;;;;;;:9;:17;11698:6;11688:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;11668:9;:17;11678:6;11668:17;;;;;;;;;;;;;;;:110;;;;11812:32;11837:6;11812:9;:20;11822:9;11812:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11789:9;:20;11799:9;11789:20;;;;;;;;;;;;;;;:55;;;;11877:9;11860:35;;11869:6;11860:35;;;11888:6;11860:35;;;;;;:::i;:::-;;;;;;;;11913:4;11906:11;;11524:401;;;;;:::o;13003:229::-;13052:4;13103;;;;;;;;;;;13089:18;;:10;:18;;;;:42;;;;;13125:6;;;;;;;;;;;13124:7;13089:42;:70;;;;;13148:11;;;;;;;;;;;13089:70;:135;;;;;13204:20;13222:1;13204:13;;:17;;:20;;;;:::i;:::-;13176:9;:24;13194:4;13176:24;;;;;;;;;;;;;;;;:48;;13089:135;13069:155;;13003:229;:::o;13368:889::-;6945:4;6936:6;;:13;;;;;;;;;;;;;;;;;;13417:21:::1;13455:1;13441:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13417:40;;13486:4;13468;13473:1;13468:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13512:4;;;;;;;;;;;13502;13507:1;13502:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;13529:6;;;;;;;;;;;:57;;;13601:13;;13629:1;13645:4;13672;13692:15;13529:189;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13731:17;13751:21;13731:41;;13783:26;13812:78;13861:18;;13812:30;13826:15;;13812:9;:13;;:30;;;;:::i;:::-;:34;;:78;;;;:::i;:::-;13783:107;;13902:15;13931:23;;;;;;;;;;;13923:37;;13982:18;13923:92;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13901:114;;;14027:16;14057:26;;;;;;;;;;;14049:40;;14111:33;14125:18;14111:9;:13;;:33;;;;:::i;:::-;14049:110;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14026:133;;;14215:5;14201:19;;14244:5;14231:18;;13406:851;;;;;6981:5:::0;6972:6;;:14;;;;;;;;;;;;;;;;;;13368:889::o;11933:893::-;12053:7;12073:17;12107:9;;;;;;;;;;;12103:538;;;12145:23;12164:3;12145:14;12156:2;12145:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;12133:35;;12103:538;;;12227:5;:13;12233:6;12227:13;;;;;;;;;;;;;;;;;;;;;;;;;12223:407;;;12273:40;12298:14;;12273:20;12284:8;;12273:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;12261:52;;12223:407;;;12375:5;:16;12381:9;12375:16;;;;;;;;;;;;;;;;;;;;;;;;;12371:259;;;12424:44;12453:14;;12424:24;12435:12;;12424:6;:10;;:24;;;;:::i;:::-;:28;;:44;;;;:::i;:::-;12412:56;;12371:259;;;12566:48;12599:14;;12566:28;12577:16;;12566:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;12554:60;;12371:259;12223:407;12103:538;12680:39;12709:9;12680;:24;12698:4;12680:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;12653:9;:24;12671:4;12653:24;;;;;;;;;;;;;;;:66;;;;12760:4;12735:42;;12744:6;12735:42;;;12767:9;12735:42;;;;;;:::i;:::-;;;;;;;;12797:21;12808:9;12797:6;:10;;:21;;;;:::i;:::-;12790:28;;;11933:893;;;;;:::o;233:181::-;291:7;311:9;327:1;323;:5;;;;:::i;:::-;311:17;;352:1;347;:6;;339:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;405:1;398:8;;;233:181;;;;:::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;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:116::-;3916:21;3931:5;3916:21;:::i;:::-;3909:5;3906:32;3896:60;;3952:1;3949;3942:12;3896:60;3846:116;:::o;3968:133::-;4011:5;4049:6;4036:20;4027:29;;4065:30;4089:5;4065:30;:::i;:::-;3968:133;;;;:::o;4107:468::-;4172:6;4180;4229:2;4217:9;4208:7;4204:23;4200:32;4197:119;;;4235:79;;:::i;:::-;4197:119;4355:1;4380:53;4425:7;4416:6;4405:9;4401:22;4380:53;:::i;:::-;4370:63;;4326:117;4482:2;4508:50;4550:7;4541:6;4530:9;4526:22;4508:50;:::i;:::-;4498:60;;4453:115;4107:468;;;;;:::o;4581:619::-;4658:6;4666;4674;4723:2;4711:9;4702:7;4698:23;4694:32;4691:119;;;4729:79;;:::i;:::-;4691:119;4849:1;4874:53;4919:7;4910:6;4899:9;4895:22;4874:53;:::i;:::-;4864:63;;4820:117;4976:2;5002:53;5047:7;5038:6;5027:9;5023:22;5002:53;:::i;:::-;4992:63;;4947:118;5104:2;5130:53;5175:7;5166:6;5155:9;5151:22;5130:53;:::i;:::-;5120:63;;5075:118;4581:619;;;;;:::o;5206:329::-;5265:6;5314:2;5302:9;5293:7;5289:23;5285:32;5282:119;;;5320:79;;:::i;:::-;5282:119;5440:1;5465:53;5510:7;5501:6;5490:9;5486:22;5465:53;:::i;:::-;5455:63;;5411:117;5206:329;;;;:::o;5541:86::-;5576:7;5616:4;5609:5;5605:16;5594:27;;5541:86;;;:::o;5633:112::-;5716:22;5732:5;5716:22;:::i;:::-;5711:3;5704:35;5633:112;;:::o;5751:214::-;5840:4;5878:2;5867:9;5863:18;5855:26;;5891:67;5955:1;5944:9;5940:17;5931:6;5891:67;:::i;:::-;5751:214;;;;:::o;5971:118::-;6058:24;6076:5;6058:24;:::i;:::-;6053:3;6046:37;5971:118;;:::o;6095:222::-;6188:4;6226:2;6215:9;6211:18;6203:26;;6239:71;6307:1;6296:9;6292:17;6283:6;6239:71;:::i;:::-;6095:222;;;;:::o;6323:323::-;6379:6;6428:2;6416:9;6407:7;6403:23;6399:32;6396:119;;;6434:79;;:::i;:::-;6396:119;6554:1;6579:50;6621:7;6612:6;6601:9;6597:22;6579:50;:::i;:::-;6569:60;;6525:114;6323:323;;;;:::o;6652:329::-;6711:6;6760:2;6748:9;6739:7;6735:23;6731:32;6728:119;;;6766:79;;:::i;:::-;6728:119;6886:1;6911:53;6956:7;6947:6;6936:9;6932:22;6911:53;:::i;:::-;6901:63;;6857:117;6652:329;;;;:::o;6987:474::-;7055:6;7063;7112:2;7100:9;7091:7;7087:23;7083:32;7080:119;;;7118:79;;:::i;:::-;7080:119;7238:1;7263:53;7308:7;7299:6;7288:9;7284:22;7263:53;:::i;:::-;7253:63;;7209:117;7365:2;7391:53;7436:7;7427:6;7416:9;7412:22;7391:53;:::i;:::-;7381:63;;7336:118;6987:474;;;;;:::o;7467:619::-;7544:6;7552;7560;7609:2;7597:9;7588:7;7584:23;7580:32;7577:119;;;7615:79;;:::i;:::-;7577:119;7735:1;7760:53;7805:7;7796:6;7785:9;7781:22;7760:53;:::i;:::-;7750:63;;7706:117;7862:2;7888:53;7933:7;7924:6;7913:9;7909:22;7888:53;:::i;:::-;7878:63;;7833:118;7990:2;8016:53;8061:7;8052:6;8041:9;8037:22;8016:53;:::i;:::-;8006:63;;7961:118;7467:619;;;;;:::o;8092:613::-;8166:6;8174;8182;8231:2;8219:9;8210:7;8206:23;8202:32;8199:119;;;8237:79;;:::i;:::-;8199:119;8357:1;8382:50;8424:7;8415:6;8404:9;8400:22;8382:50;:::i;:::-;8372:60;;8328:114;8481:2;8507:53;8552:7;8543:6;8532:9;8528:22;8507:53;:::i;:::-;8497:63;;8452:118;8609:2;8635:53;8680:7;8671:6;8660:9;8656:22;8635:53;:::i;:::-;8625:63;;8580:118;8092:613;;;;;:::o;8711:104::-;8756:7;8785:24;8803:5;8785:24;:::i;:::-;8774:35;;8711:104;;;:::o;8821:138::-;8902:32;8928:5;8902:32;:::i;:::-;8895:5;8892:43;8882:71;;8949:1;8946;8939:12;8882:71;8821:138;:::o;8965:155::-;9019:5;9057:6;9044:20;9035:29;;9073:41;9108:5;9073:41;:::i;:::-;8965:155;;;;:::o;9126:345::-;9193:6;9242:2;9230:9;9221:7;9217:23;9213:32;9210:119;;;9248:79;;:::i;:::-;9210:119;9368:1;9393:61;9446:7;9437:6;9426:9;9422:22;9393:61;:::i;:::-;9383:71;;9339:125;9126:345;;;;:::o;9477:60::-;9505:3;9526:5;9519:12;;9477:60;;;:::o;9543:142::-;9593:9;9626:53;9644:34;9653:24;9671:5;9653:24;:::i;:::-;9644:34;:::i;:::-;9626:53;:::i;:::-;9613:66;;9543:142;;;:::o;9691:126::-;9741:9;9774:37;9805:5;9774:37;:::i;:::-;9761:50;;9691:126;;;:::o;9823:144::-;9891:9;9924:37;9955:5;9924:37;:::i;:::-;9911:50;;9823:144;;;:::o;9973:167::-;10078:55;10127:5;10078:55;:::i;:::-;10073:3;10066:68;9973:167;;:::o;10146:258::-;10257:4;10295:2;10284:9;10280:18;10272:26;;10308:89;10394:1;10383:9;10379:17;10370:6;10308:89;:::i;:::-;10146:258;;;;:::o;10410:161::-;10550:13;10546:1;10538:6;10534:14;10527:37;10410:161;:::o;10577:366::-;10719:3;10740:67;10804:2;10799:3;10740:67;:::i;:::-;10733:74;;10816:93;10905:3;10816:93;:::i;:::-;10934:2;10929:3;10925:12;10918:19;;10577:366;;;:::o;10949:419::-;11115:4;11153:2;11142:9;11138:18;11130:26;;11202:9;11196:4;11192:20;11188:1;11177:9;11173:17;11166:47;11230:131;11356:4;11230:131;:::i;:::-;11222:139;;10949:419;;;:::o;11374:156::-;11514:8;11510:1;11502:6;11498:14;11491:32;11374:156;:::o;11536:365::-;11678:3;11699:66;11763:1;11758:3;11699:66;:::i;:::-;11692:73;;11774:93;11863:3;11774:93;:::i;:::-;11892:2;11887:3;11883:12;11876:19;;11536:365;;;:::o;11907:419::-;12073:4;12111:2;12100:9;12096:18;12088:26;;12160:9;12154:4;12150:20;12146:1;12135:9;12131:17;12124:47;12188:131;12314:4;12188:131;:::i;:::-;12180:139;;11907:419;;;:::o;12332:222::-;12472:34;12468:1;12460:6;12456:14;12449:58;12541:5;12536:2;12528:6;12524:15;12517:30;12332:222;:::o;12560:366::-;12702:3;12723:67;12787:2;12782:3;12723:67;:::i;:::-;12716:74;;12799:93;12888:3;12799:93;:::i;:::-;12917:2;12912:3;12908:12;12901:19;;12560:366;;;:::o;12932:419::-;13098:4;13136:2;13125:9;13121:18;13113:26;;13185:9;13179:4;13175:20;13171:1;13160:9;13156:17;13149:47;13213:131;13339:4;13213:131;:::i;:::-;13205:139;;12932:419;;;:::o;13357:180::-;13405:77;13402:1;13395:88;13502:4;13499:1;13492:15;13526:4;13523:1;13516:15;13543:180;13591:77;13588:1;13581:88;13688:4;13685:1;13678:15;13712:4;13709:1;13702:15;13729:185;13769:1;13786:20;13804:1;13786:20;:::i;:::-;13781:25;;13820:20;13838:1;13820:20;:::i;:::-;13815:25;;13859:1;13849:35;;13864:18;;:::i;:::-;13849:35;13906:1;13903;13899:9;13894:14;;13729:185;;;;:::o;13920:233::-;14060:34;14056:1;14048:6;14044:14;14037:58;14129:16;14124:2;14116:6;14112:15;14105:41;13920:233;:::o;14159:366::-;14301:3;14322:67;14386:2;14381:3;14322:67;:::i;:::-;14315:74;;14398:93;14487:3;14398:93;:::i;:::-;14516:2;14511:3;14507:12;14500:19;;14159:366;;;:::o;14531:419::-;14697:4;14735:2;14724:9;14720:18;14712:26;;14784:9;14778:4;14774:20;14770:1;14759:9;14755:17;14748:47;14812:131;14938:4;14812:131;:::i;:::-;14804:139;;14531:419;;;:::o;14956:348::-;14996:7;15019:20;15037:1;15019:20;:::i;:::-;15014:25;;15053:20;15071:1;15053:20;:::i;:::-;15048:25;;15241:1;15173:66;15169:74;15166:1;15163:81;15158:1;15151:9;15144:17;15140:105;15137:131;;;15248:18;;:::i;:::-;15137:131;15296:1;15293;15289:9;15278:20;;14956:348;;;;:::o;15310:134::-;15368:9;15401:37;15432:5;15401:37;:::i;:::-;15388:50;;15310:134;;;:::o;15450:147::-;15545:45;15584:5;15545:45;:::i;:::-;15540:3;15533:58;15450:147;;:::o;15603:238::-;15704:4;15742:2;15731:9;15727:18;15719:26;;15755:79;15831:1;15820:9;15816:17;15807:6;15755:79;:::i;:::-;15603:238;;;;:::o;15847:191::-;15887:4;15907:20;15925:1;15907:20;:::i;:::-;15902:25;;15941:20;15959:1;15941:20;:::i;:::-;15936:25;;15980:1;15977;15974:8;15971:34;;;15985:18;;:::i;:::-;15971:34;16030:1;16027;16023:9;16015:17;;15847:191;;;;:::o;16044:170::-;16184:22;16180:1;16172:6;16168:14;16161:46;16044:170;:::o;16220:366::-;16362:3;16383:67;16447:2;16442:3;16383:67;:::i;:::-;16376:74;;16459:93;16548:3;16459:93;:::i;:::-;16577:2;16572:3;16568:12;16561:19;;16220:366;;;:::o;16592:419::-;16758:4;16796:2;16785:9;16781:18;16773:26;;16845:9;16839:4;16835:20;16831:1;16820:9;16816:17;16809:47;16873:131;16999:4;16873:131;:::i;:::-;16865:139;;16592:419;;;:::o;17017:305::-;17057:3;17076:20;17094:1;17076:20;:::i;:::-;17071:25;;17110:20;17128:1;17110:20;:::i;:::-;17105:25;;17264:1;17196:66;17192:74;17189:1;17186:81;17183:107;;;17270:18;;:::i;:::-;17183:107;17314:1;17311;17307:9;17300:16;;17017:305;;;;:::o;17328:169::-;17468:21;17464:1;17456:6;17452:14;17445:45;17328:169;:::o;17503:366::-;17645:3;17666:67;17730:2;17725:3;17666:67;:::i;:::-;17659:74;;17742:93;17831:3;17742:93;:::i;:::-;17860:2;17855:3;17851:12;17844:19;;17503:366;;;:::o;17875:419::-;18041:4;18079:2;18068:9;18064:18;18056:26;;18128:9;18122:4;18118:20;18114:1;18103:9;18099:17;18092:47;18156:131;18282:4;18156:131;:::i;:::-;18148:139;;17875:419;;;:::o;18300:220::-;18440:34;18436:1;18428:6;18424:14;18417:58;18509:3;18504:2;18496:6;18492:15;18485:28;18300:220;:::o;18526:366::-;18668:3;18689:67;18753:2;18748:3;18689:67;:::i;:::-;18682:74;;18765:93;18854:3;18765:93;:::i;:::-;18883:2;18878:3;18874:12;18867:19;;18526:366;;;:::o;18898:419::-;19064:4;19102:2;19091:9;19087:18;19079:26;;19151:9;19145:4;19141:20;19137:1;19126:9;19122:17;19115:47;19179:131;19305:4;19179:131;:::i;:::-;19171:139;;18898:419;;;:::o;19323:180::-;19371:77;19368:1;19361:88;19468:4;19465:1;19458:15;19492:4;19489:1;19482:15;19509:180;19557:77;19554:1;19547:88;19654:4;19651:1;19644:15;19678:4;19675:1;19668:15;19695:85;19740:7;19769:5;19758:16;;19695:85;;;:::o;19786:158::-;19844:9;19877:61;19895:42;19904:32;19930:5;19904:32;:::i;:::-;19895:42;:::i;:::-;19877:61;:::i;:::-;19864:74;;19786:158;;;:::o;19950:147::-;20045:45;20084:5;20045:45;:::i;:::-;20040:3;20033:58;19950:147;;:::o;20103:114::-;20170:6;20204:5;20198:12;20188:22;;20103:114;;;:::o;20223:184::-;20322:11;20356:6;20351:3;20344:19;20396:4;20391:3;20387:14;20372:29;;20223:184;;;;:::o;20413:132::-;20480:4;20503:3;20495:11;;20533:4;20528:3;20524:14;20516:22;;20413:132;;;:::o;20551:108::-;20628:24;20646:5;20628:24;:::i;:::-;20623:3;20616:37;20551:108;;:::o;20665:179::-;20734:10;20755:46;20797:3;20789:6;20755:46;:::i;:::-;20833:4;20828:3;20824:14;20810:28;;20665:179;;;;:::o;20850:113::-;20920:4;20952;20947:3;20943:14;20935:22;;20850:113;;;:::o;20999:732::-;21118:3;21147:54;21195:5;21147:54;:::i;:::-;21217:86;21296:6;21291:3;21217:86;:::i;:::-;21210:93;;21327:56;21377:5;21327:56;:::i;:::-;21406:7;21437:1;21422:284;21447:6;21444:1;21441:13;21422:284;;;21523:6;21517:13;21550:63;21609:3;21594:13;21550:63;:::i;:::-;21543:70;;21636:60;21689:6;21636:60;:::i;:::-;21626:70;;21482:224;21469:1;21466;21462:9;21457:14;;21422:284;;;21426:14;21722:3;21715:10;;21123:608;;;20999:732;;;;:::o;21737:831::-;22000:4;22038:3;22027:9;22023:19;22015:27;;22052:71;22120:1;22109:9;22105:17;22096:6;22052:71;:::i;:::-;22133:80;22209:2;22198:9;22194:18;22185:6;22133:80;:::i;:::-;22260:9;22254:4;22250:20;22245:2;22234:9;22230:18;22223:48;22288:108;22391:4;22382:6;22288:108;:::i;:::-;22280:116;;22406:72;22474:2;22463:9;22459:18;22450:6;22406:72;:::i;:::-;22488:73;22556:3;22545:9;22541:19;22532:6;22488:73;:::i;:::-;21737:831;;;;;;;;:::o;22574:147::-;22675:11;22712:3;22697:18;;22574:147;;;;:::o;22727:114::-;;:::o;22847:398::-;23006:3;23027:83;23108:1;23103:3;23027:83;:::i;:::-;23020:90;;23119:93;23208:3;23119:93;:::i;:::-;23237:1;23232:3;23228:11;23221:18;;22847:398;;;:::o;23251:379::-;23435:3;23457:147;23600:3;23457:147;:::i;:::-;23450:154;;23621:3;23614:10;;23251:379;;;:::o;23636:177::-;23776:29;23772:1;23764:6;23760:14;23753:53;23636:177;:::o;23819:366::-;23961:3;23982:67;24046:2;24041:3;23982:67;:::i;:::-;23975:74;;24058:93;24147:3;24058:93;:::i;:::-;24176:2;24171:3;24167:12;24160:19;;23819:366;;;:::o;24191:419::-;24357:4;24395:2;24384:9;24380:18;24372:26;;24444:9;24438:4;24434:20;24430:1;24419:9;24415:17;24408:47;24472:131;24598:4;24472:131;:::i;:::-;24464:139;;24191:419;;;:::o

Swarm Source

ipfs://a4b4672bbc8cb6e093a872d1c826b533488a0d43fbda212ed39aa108981322ab
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.