ETH Price: $2,896.82 (-0.32%)
Gas: 6 Gwei

Token

BANCACY (BNY)
 

Overview

Max Total Supply

789,577,233.69037963411353829 BNY

Holders

503 (0.00%)

Total Transfers

-

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$1,831,693.61

Circulating Supply Market Cap

$311,726.08

Other Info

Token Contract (WITH 18 Decimals)

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

OVERVIEW

A Smart Money protocol with an inbuilt solution for liquidity & volatility.

Profitability / Loss

Since Initial Offer Price
:$0.00 15.99%

Market

Volume (24H):$0.00
Market Capitalization:$311,726.08
Circulating Supply:134,373,899.00 BNY
Market Data Source: Coinmarketcap

IEO Information

IEO Address :0x86149c67e57c749d0a12e6d6c2bf1b616619bb29  
IEO Start Date :Jul 9, 2019  
IEO End Date :Sep 9, 2019  
IEO Price :$0.002  
Country :Israel  
Raised :6000 ETH  

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BNY

Compiler Version
v0.5.11+commit.c082d0b4

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-09-24
*/

pragma solidity 0.5.11;

library AddressCalc {


    function futureAddressCalc(address payable _origin, uint _nonce) internal pure  returns (address) {

        if(_nonce == 0x00) return address(uint160(uint256((keccak256(abi.encodePacked(byte(0xd6),
         byte(0x94), _origin, byte(0x80)))))));

        if(_nonce <= 0x7f) return address(uint160(uint256((keccak256(abi.encodePacked(byte(0xd6),
         byte(0x94), _origin, byte(uint8(_nonce))))))));

        if(_nonce <= 0xff) return address(uint160(uint256((keccak256(abi.encodePacked(byte(0xd7),
         byte(0x94), _origin, byte(0x81), uint8(_nonce)))))));

        if(_nonce <= 0xffff) return address(uint160(uint256((keccak256(abi.encodePacked(byte(0xd8),
         byte(0x94), _origin, byte(0x82), uint16(_nonce)))))));

        if(_nonce <= 0xffffff) return address(uint160(uint256((keccak256(abi.encodePacked(byte(0xd9),
         byte(0x94), _origin, byte(0x83), uint24(_nonce)))))));

		return address(uint160(uint256((keccak256(abi.encodePacked(byte(0xda), byte(0x94), _origin, byte(0x84), uint32(_nonce)))))));
    }

}


/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be 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;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract BNY   {
    using SafeMath for uint256;
    using AddressCalc for address payable;
    event Deposit(
        address indexed _investor,
        uint256 _investmentValue,
        uint256 _ID,
        uint256 _unlocktime,
        string _investmentTerm
    );
    event PassiveDeposit(
        address indexed _investor2,
        uint256 _investmentValue2,
        uint256 _ID2,
        uint256 _unlocktime2,
        uint256 _dailyIncome,
        uint256 _investmentTime
    );
    event Spent(
        address indexed _acclaimer,
        uint256 indexed _amout
    );
    event PassiveSpent(
        address indexed _acclaimer2,
        uint256 indexed _amout2
    );
    event Transfer(
        address indexed _from,
        address indexed _to,
        uint256 _value
    );
    event Approval(
        address indexed _owner,
        address indexed _spender,
        uint256 _value
    );
    string constant public name = "BANCACY";
    string constant public symbol = "BNY";
    string constant public standard = "BNY Token";
    uint256 constant public decimals = 18 ;
    uint256 private _totalSupply;
    uint256 public totalInvestmentAfterInterest;
    uint256 public investorIndex = 1;
    uint256 public passiveInvestorIndex = 1;
    uint256 constant public interestRate = 16;
    uint256 constant public multiplicationForMidTerm  = 5;
    uint256 constant public multiplicationForLongTerm = 20;
    uint256 public minForPassive = 1200000 * (10 ** uint256(decimals));
    uint256 public tokensForSale = 534600000 * (10 ** uint256(decimals));
    uint256 public tokensSold = 1 * (10 ** uint256(decimals));
    uint256 constant public tokensPerWei = 54000;
  	uint256 constant public Percent = 1000000000;
    uint256 constant internal secondsInDay = 86400;
    uint256 constant internal secondsInWeek = 604800;
    uint256 constant internal secondsInMonth = 2419200;
    uint256 constant internal secondsInQuarter = 7257600;
	uint256 constant internal daysInYear = 365;
    uint256 internal _startSupply = 455400000 * (10 ** uint256(decimals));
    address payable public fundsWallet;
    address public XBNY;
    address public BNY_DATA;

	enum TermData {DEFAULT, ONE, TWO, THREE}

    mapping(uint256 => Investment) private investors;
    mapping(uint256 => PassiveIncome) private passiveInvestors;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    struct Investment {
        address investorAddress;
        uint256 investedAmount;
        uint256 investmentUnlocktime;
        bool spent;
        string term;
    }
    struct PassiveIncome {
        address investorAddress2;
        uint256 investedAmount2;
        uint256 dailyPassiveIncome;
        uint256 investmentTimeStamp;
        uint256 investmentUnlocktime2;
        uint256 day;
        bool spent2;
    }
    constructor (address payable _fundsWallet)  public {
        _totalSupply = _startSupply;
        fundsWallet = _fundsWallet;
        _balances[fundsWallet] = _startSupply;
        _balances[address(1)] = 0;
        emit Transfer(
            address(1),
            fundsWallet,
            _startSupply
        );
        XBNY = _msgSender().futureAddressCalc(1);
        BNY_DATA = _msgSender().futureAddressCalc(2);
    }
    function () external payable{
        require(tokensSold < tokensForSale, "All tokens are sold");
        require(msg.value > 0, "Value must be > 0");
        uint256 eth = msg.value;
        uint256 tokens = eth.mul(tokensPerWei);
        uint256 bounosTokens = getDiscountOnBuy(tokens);
		uint256 totalTokens = bounosTokens.add(tokens);
        require(totalTokens <= (tokensForSale).sub(tokensSold), "All tokens are sold");
        fundsWallet.transfer(msg.value);
        tokensSold = tokensSold.add((totalTokens));
        _totalSupply = _totalSupply.add((totalTokens));
        _balances[_msgSender()] = _balances[_msgSender()].add((totalTokens));
        emit Transfer(
            address(0),
            _msgSender(),
            totalTokens
        );
    }
    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }
    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) public returns (bool) {
        _approve(_msgSender(), spender, value);
        return true;
    }
    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20};
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `value`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
	/**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }
	/**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }
	/**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
	/**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
	/**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }
	/**
	* @dev Destroys `amount` tokens from the caller.
	*
	* See {ERC20-_burn}.
	*/
    function burn(uint256 amount) public {
        _burn(_msgSender(), amount);
    }
    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
	function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }
    function makeInvestment(uint256 _unlockTime, uint256 _amount, uint term123) external returns (uint256) {
        require(_balances[_msgSender()] >= _amount, "You dont have sufficent amount of tokens");
        require(_amount > 0, "Investment amount should be bigger than 0");
        require(_unlockTime >= secondsInWeek && (_unlockTime.mod(secondsInWeek)) == 0, "Wrong investment time");
        // Term time is currently in weeks
        uint256 termAfter = (_unlockTime.div(secondsInWeek));
        uint256 currentInvestor = investorIndex;

        /*
        The termAfter in weeks is more than or equal to 1 (week).
        The user must have typed (in weeks) a figure (as termAfter) less than or equal to 48 (when comparing termAfter in weeks). Taken from the UI in (weeks), calculated into (seconds).
        The user has selected "weeks" / "short term" (1) in the UI.
        Previous check: The unlock time is a factor of weeks (in require).
        */
        if((termAfter >= 1) &&
		(termAfter <= 48) &&
		(term123 == uint(TermData.ONE)))
        {
            investorIndex++;
            totalInvestmentAfterInterest = _amount.add(getInterestRate(_amount, termAfter));
            investors[currentInvestor] = Investment(
                _msgSender(),
                totalInvestmentAfterInterest,
                block.timestamp.add(_unlockTime),
                false,
                "short"
            );
            emit Deposit(_msgSender(),
                _amount,
                currentInvestor,
                block.timestamp.add(_unlockTime),
                "SHORT-TERM"
            );
            emit Transfer(
                _msgSender(),
                address(1),
                _amount
            );
            emit Transfer(
                address(1),
                address(1),
                totalInvestmentAfterInterest.sub(_amount)
            );
            _balances[_msgSender()] = _balances[_msgSender()].sub(_amount);
            _balances[address(1)] = _balances[address(1)].add(totalInvestmentAfterInterest);
            _totalSupply = _totalSupply.sub(_amount);
            return (currentInvestor);
        }
        // Recalculate the original termAfter (set in weeks) from unlocktime (in seconds) (instead as whole months, in seconds) for multiplier.
        termAfter = (_unlockTime.div(secondsInMonth));
        /*
        The unlock time in seconds is more than or equal to 1 month in seconds.
        The user has selected "months" / "mid term" (2) in the UI.
        The user must have typed (in months) a figure (as termAfter) less than or equal to 1 year / 12 (when comparing termAfter in months). Taken from the UI in (months), calculated into seconds.
        The unlock time (in seconds) is a factor of whole months (in seconds).
        */
        if((_unlockTime >= secondsInMonth) &&
		(term123 == uint(TermData.TWO)) &&
		(termAfter <= 12 ) &&
		(_unlockTime.mod(secondsInMonth)) == 0) {
            investorIndex++;
            totalInvestmentAfterInterest = _amount.add(getInterestRate(_amount, multiplicationForMidTerm).mul(termAfter));
            investors[currentInvestor] = Investment(
                _msgSender(),
                totalInvestmentAfterInterest,
                block.timestamp.add(_unlockTime),
                false,
                "mid"
            );
            emit Deposit(
                _msgSender(),
                _amount,
                currentInvestor,
                block.timestamp.add(_unlockTime),
                "MID-TERM"
            );
            emit Transfer(
                _msgSender(),
                address(1),
                _amount
            );
            emit Transfer(
                address(1),
                address(1),
                totalInvestmentAfterInterest.sub(_amount)
            );
            _balances[_msgSender()] = _balances[_msgSender()].sub(_amount);
            _balances[address(1)] = _balances[address(1)].add(totalInvestmentAfterInterest);
            _totalSupply = _totalSupply.sub(_amount);
            return (currentInvestor);
        }


        // Recalculate the original termAfter (reset as months) from unlocktime (in seconds) (instead as whole quarters, in seconds) for the multiplier.
        termAfter = (_unlockTime.div(secondsInQuarter));
        /*
        The unlock time in seconds is more than or equal to 1 quarter in seconds.
        The user has selected "quarters" / "long term" (3) in the UI.
        The user must have typed a figure less than or equal to 3 years / 12 (when comparing termAfter in quarters). Taken from the UI in (quarters), calculated into seconds.
        The unlock time (in seconds) is a factor of whole quarters (in seconds).
        */
        if((_unlockTime >= secondsInQuarter) &&
		(term123 == uint(TermData.THREE)) &&
		(termAfter <= 12 ) &&
		(_unlockTime.mod(secondsInQuarter) == 0)) {
            investorIndex++;
            totalInvestmentAfterInterest = _amount.add(getInterestRate(_amount, multiplicationForLongTerm).mul(termAfter));
            investors[currentInvestor] = Investment(
                _msgSender(),
                totalInvestmentAfterInterest,
                block.timestamp.add(_unlockTime),
                false,
                "long"
            );
            emit Deposit(
                _msgSender(),
                _amount,
                currentInvestor,
                block.timestamp.add(_unlockTime),
                "LONG-TERM"
            );
            emit Transfer(
                _msgSender(),
                address(1),
                _amount
            );
            emit Transfer(
                address(1),
                address(1),
                totalInvestmentAfterInterest.sub(_amount)
            );
            _balances[_msgSender()] = _balances[_msgSender()].sub(_amount);
            _balances[address(1)] = _balances[address(1)].add(totalInvestmentAfterInterest);
            _totalSupply = _totalSupply.sub(_amount);
            return (currentInvestor);
        }
    }
    function releaseInvestment(uint256 _investmentId) external returns (bool success) {
        require(investors[_investmentId].investorAddress == _msgSender(), "Only the investor can claim the investment");
        require(investors[_investmentId].spent == false, "The investment is already spent");
        require(investors[_investmentId].investmentUnlocktime < block.timestamp, "Unlock time for the investment did not pass");
        investors[_investmentId].spent = true;
        _totalSupply = _totalSupply.add(investors[_investmentId].investedAmount);
        _balances[address(1)] = _balances[address(1)].sub(investors[_investmentId].investedAmount);
        _balances[_msgSender()] = _balances[_msgSender()].add(investors[_investmentId].investedAmount);
        emit Transfer(
            address(1),
            _msgSender(),
            investors[_investmentId].investedAmount
        );
        emit Spent(
            _msgSender(),
            investors[_investmentId].investedAmount
        );
        return true;
    }
    function makePassiveIncomeInvestment(uint256 _amount) external returns (uint256) {
        require(_balances[_msgSender()] >= _amount, "You  have insufficent amount of tokens");
        require(_amount >= minForPassive, "Investment amount should be bigger than 1.2M");
        uint256 interestOnInvestment = getInterestRate(_amount, 75).div(daysInYear);
        uint256 currentInvestor = passiveInvestorIndex;
        passiveInvestorIndex++;
        passiveInvestors[currentInvestor] = PassiveIncome(
            _msgSender(),
            _amount,
            interestOnInvestment,
            block.timestamp,
            block.timestamp.add(secondsInDay * daysInYear),
            1,
            false
        );
        emit Transfer(
            _msgSender(),
            address(1),
            _amount
        );
        emit Transfer(
            address(1),
            address(1),
            interestOnInvestment.mul(daysInYear)
        );
        emit PassiveDeposit(
            _msgSender(),
            _amount,
            currentInvestor,
            block.timestamp.add((secondsInDay * daysInYear)),
            passiveInvestors[currentInvestor].dailyPassiveIncome,
            passiveInvestors[currentInvestor].investmentTimeStamp
        );
        _balances[_msgSender()] = _balances[_msgSender()].sub(_amount);
        _balances[address(1)] = _balances[address(1)].add((interestOnInvestment.mul(daysInYear)).add(_amount));
        _totalSupply = _totalSupply.sub(_amount);
        return (currentInvestor);
    }
    function releasePassiveIncome(uint256 _passiveIncomeID) external returns (bool success) {
        require(passiveInvestors[_passiveIncomeID].investorAddress2 == _msgSender(), "Only the investor can claim the investment");
        require(passiveInvestors[_passiveIncomeID].spent2 == false, "The investment is already claimed");
        require(passiveInvestors[_passiveIncomeID].investmentTimeStamp.add((
        secondsInDay * passiveInvestors[_passiveIncomeID].day)) < block.timestamp,
        "Unlock time for the investment did not pass");
        require(passiveInvestors[_passiveIncomeID].day < 366, "The investment is already claimed");
        uint256 totalReward = 0;
        uint256 numberOfDaysHeld = (block.timestamp - passiveInvestors[_passiveIncomeID].investmentTimeStamp) / secondsInDay;
        if(numberOfDaysHeld > daysInYear){
            passiveInvestors[_passiveIncomeID].spent2 = true;
            numberOfDaysHeld = daysInYear;
            totalReward = passiveInvestors[_passiveIncomeID].investedAmount2;
        }
        uint numberOfDaysOwed = numberOfDaysHeld - (passiveInvestors[_passiveIncomeID].day - 1);
        uint totalDailyPassiveIncome = passiveInvestors[_passiveIncomeID].dailyPassiveIncome * numberOfDaysOwed;
        passiveInvestors[_passiveIncomeID].day = numberOfDaysHeld.add(1);
        totalReward = totalReward.add(totalDailyPassiveIncome);
        if(totalReward > 0){
            _totalSupply = _totalSupply.add(totalReward);
            _balances[address(1)] = _balances[address(1)].sub(totalReward);
            _balances[_msgSender()] = _balances[_msgSender()].add(totalReward);
            emit Transfer(
                address(1),
                _msgSender(),
                totalReward
            );
            emit PassiveSpent(
                _msgSender(),
                totalReward
            );
            return true;
        }
        else{
            revert(
                "There is no total reward earned."
            );
        }
    }
    function BNY_AssetSolidification(address _user, uint256 _value) external returns (bool success) {
        require(_msgSender() == BNY_DATA, "No Permission");
        require(_balances[_user] >= _value, "User have incufficent balance");
        _balances[_user] = _balances[_user].sub(_value);
        _totalSupply = _totalSupply.sub(_value);
        emit Transfer(
            _user,
            address(2),
            _value
        );
        return true;
    }
    function BNY_AssetDesolidification(address _user,uint256 _value) external returns (bool success) {
        require(_msgSender() == BNY_DATA, "No Permission");
        _balances[_user] = _balances[_user].add(_value);
        _totalSupply = _totalSupply.add(_value);
        emit Transfer(
            address(2),
            _user,
            _value
        );
        return true;
    }
    function getBalanceOf(address _user) external view returns (uint256 balance) {
        require(_msgSender() == BNY_DATA, "No Permission");
        return _balances[_user];
    }
    function getPassiveDetails (uint _passiveIncomeID) external view returns (
        address investorAddress2,
        uint256 investedAmount2,
        uint256 dailyPassiveIncome,
        uint256 investmentTimeStamp,
        uint256 investmentUnlocktime2,
        uint256 day,
        bool spent2
    ){
        return(
            passiveInvestors[_passiveIncomeID].investorAddress2,
            passiveInvestors[_passiveIncomeID].investedAmount2,
            passiveInvestors[_passiveIncomeID].dailyPassiveIncome,
            passiveInvestors[_passiveIncomeID].investmentTimeStamp,
            passiveInvestors[_passiveIncomeID].investmentUnlocktime2,
            passiveInvestors[_passiveIncomeID].day,
            passiveInvestors[_passiveIncomeID].spent2
        );
    }
    function getPassiveIncomeDay(uint256 _passiveIncomeID) external view returns (uint256) {
        return(passiveInvestors[_passiveIncomeID].day);
    }
    function getPassiveIncomeStatus(uint256 _passiveIncomeID) external view returns (bool) {
        return (passiveInvestors[_passiveIncomeID].spent2);
    }
    function getPassiveInvestmentTerm(uint256 _passiveIncomeID) external view returns (uint256){
        return (passiveInvestors[_passiveIncomeID].investmentUnlocktime2);
    }
    function getPassiveNumberOfDays (uint _passiveIncomeID) external view returns (uint256){
        return (block.timestamp - passiveInvestors[_passiveIncomeID].investmentTimeStamp) / secondsInDay;
    }
    function getPassiveInvestmentTimeStamp(uint256 _passiveIncomeID) external view returns (uint256){
        return (passiveInvestors[_passiveIncomeID].investmentTimeStamp);
    }
    function getInvestmentStatus(uint256 _ID) external view returns (bool){
        return (investors[_ID].spent);
    }
    function getInvestmentTerm(uint256 _ID) external view returns (uint256){
        return (investors[_ID].investmentUnlocktime);
    }
    function getDiscountOnBuy(uint256 _tokensAmount) public view returns (uint256 discount) {
        uint256 tokensSoldADJ = tokensSold.mul(1000000000);
        uint256 discountPercentage = tokensSoldADJ.div(tokensForSale);
        uint256 adjustedDiscount = (Percent.sub(discountPercentage)).mul(2500);
        uint256 DiscountofTokens = (adjustedDiscount.mul(_tokensAmount));
        return((DiscountofTokens).div(10000000000000));
    }
    function getBlockTimestamp () external view returns (uint blockTimestamp){
        return block.timestamp;
    }
    function getInterestRate(uint256 _investment, uint _term) public view returns (uint256 rate) {
        require(_investment < _totalSupply, "The investment is too large");
        uint256 totalinvestments = _balances[address(1)].mul(Percent);
        uint256 investmentsPercentage = totalinvestments.div(_totalSupply);
        uint256 adjustedinterestrate = (Percent.sub(investmentsPercentage)).mul(interestRate);
        uint256 interestoninvestment = (adjustedinterestrate.mul(_investment)).div(10000000000000);
        return (interestoninvestment.mul(_term));
    }
    function getSimulatedDailyIncome (uint _passiveIncomeID) external view returns (
        uint _numberOfDaysHeld,
        uint _numberOfDaysOwed,
        uint _totalDailyPassiveIncome,
        uint _dailyPassiveIncome,
        uint _totalReward,
        uint _day,
        bool _spent
    ){
        _spent = false;
        _numberOfDaysHeld = (block.timestamp - passiveInvestors[_passiveIncomeID].investmentTimeStamp) / secondsInDay;
        if(_numberOfDaysHeld > daysInYear){
            _numberOfDaysHeld = daysInYear;
            _totalReward = passiveInvestors[_passiveIncomeID].investedAmount2;
            _spent = true;
        }
        _numberOfDaysOwed = _numberOfDaysHeld - (passiveInvestors[_passiveIncomeID].day - 1);
        _totalDailyPassiveIncome = passiveInvestors[_passiveIncomeID].dailyPassiveIncome * _numberOfDaysOwed;
        _day = _numberOfDaysHeld.add(1);
        _totalReward = _totalReward.add(_totalDailyPassiveIncome);
        _dailyPassiveIncome = passiveInvestors[_passiveIncomeID].dailyPassiveIncome;
        return (
            _numberOfDaysHeld,
            _numberOfDaysOwed,
            _totalDailyPassiveIncome,
            _dailyPassiveIncome,
            _totalReward,
            _day,
            _spent
        );
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"passiveInvestorIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"BNY_AssetDesolidification","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_passiveIncomeID","type":"uint256"}],"name":"getPassiveInvestmentTerm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensForSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_passiveIncomeID","type":"uint256"}],"name":"getSimulatedDailyIncome","outputs":[{"internalType":"uint256","name":"_numberOfDaysHeld","type":"uint256"},{"internalType":"uint256","name":"_numberOfDaysOwed","type":"uint256"},{"internalType":"uint256","name":"_totalDailyPassiveIncome","type":"uint256"},{"internalType":"uint256","name":"_dailyPassiveIncome","type":"uint256"},{"internalType":"uint256","name":"_totalReward","type":"uint256"},{"internalType":"uint256","name":"_day","type":"uint256"},{"internalType":"bool","name":"_spent","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minForPassive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundsWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensPerWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplicationForMidTerm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"BNY_AssetSolidification","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"BNY_DATA","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_passiveIncomeID","type":"uint256"}],"name":"getPassiveIncomeDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"makePassiveIncomeInvestment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_unlockTime","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"term123","type":"uint256"}],"name":"makeInvestment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"standard","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"interestRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_passiveIncomeID","type":"uint256"}],"name":"getPassiveInvestmentTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_investmentId","type":"uint256"}],"name":"releaseInvestment","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getBalanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplicationForLongTerm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"XBNY","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_ID","type":"uint256"}],"name":"getInvestmentTerm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_investment","type":"uint256"},{"internalType":"uint256","name":"_term","type":"uint256"}],"name":"getInterestRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokensAmount","type":"uint256"}],"name":"getDiscountOnBuy","outputs":[{"internalType":"uint256","name":"discount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_passiveIncomeID","type":"uint256"}],"name":"getPassiveDetails","outputs":[{"internalType":"address","name":"investorAddress2","type":"address"},{"internalType":"uint256","name":"investedAmount2","type":"uint256"},{"internalType":"uint256","name":"dailyPassiveIncome","type":"uint256"},{"internalType":"uint256","name":"investmentTimeStamp","type":"uint256"},{"internalType":"uint256","name":"investmentUnlocktime2","type":"uint256"},{"internalType":"uint256","name":"day","type":"uint256"},{"internalType":"bool","name":"spent2","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_passiveIncomeID","type":"uint256"}],"name":"getPassiveIncomeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"investorIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_ID","type":"uint256"}],"name":"getInvestmentStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalInvestmentAfterInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_passiveIncomeID","type":"uint256"}],"name":"getPassiveNumberOfDays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_passiveIncomeID","type":"uint256"}],"name":"releasePassiveIncome","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_fundsWallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_investor","type":"address"},{"indexed":false,"internalType":"uint256","name":"_investmentValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_ID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_unlocktime","type":"uint256"},{"indexed":false,"internalType":"string","name":"_investmentTerm","type":"string"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_investor2","type":"address"},{"indexed":false,"internalType":"uint256","name":"_investmentValue2","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_ID2","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_unlocktime2","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_dailyIncome","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_investmentTime","type":"uint256"}],"name":"PassiveDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_acclaimer","type":"address"},{"indexed":true,"internalType":"uint256","name":"_amout","type":"uint256"}],"name":"Spent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_acclaimer2","type":"address"},{"indexed":true,"internalType":"uint256","name":"_amout2","type":"uint256"}],"name":"PassiveSpent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"}]

6080604052600160025560016003556012600a0a62124f80026004556012600a0a631fdd5940026005556012600a0a6001026006556012600a0a631b24da40026007553480156200004f57600080fd5b50604051620066a9380380620066a9833981810160405260208110156200007557600080fd5b810190808051906020019092919050505060075460008190555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600754600d6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040518082815260200191505060405180910390a36200024860016200021e6200030f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200031760201b620050091790919060201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002c860026200029e6200030f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200031760201b620050091790919060201c565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000b7f565b600033905090565b600080821415620004735760d660f81b609460f81b84608060f81b60405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001019450505050506040516020818303038152906040528051906020012060001c905062000b79565b607f8211620005cc5760d660f81b609460f81b848460f81b60405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001019450505050506040516020818303038152906040528051906020012060001c905062000b79565b60ff8211620007375760d760f81b609460f81b84608160f81b8560405160200180867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018260ff1660ff1660f81b8152600101955050505050506040516020818303038152906040528051906020012060001c905062000b79565b61ffff8211620008a55760d860f81b609460f81b84608260f81b8560405160200180867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018261ffff1661ffff1660f01b8152600201955050505050506040516020818303038152906040528051906020012060001c905062000b79565b62ffffff821162000a165760d960f81b609460f81b84608360f81b8560405160200180867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018262ffffff1662ffffff1660e81b8152600301955050505050506040516020818303038152906040528051906020012060001c905062000b79565b60da60f81b609460f81b84608460f81b8560405160200180867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018263ffffffff1663ffffffff1660e01b8152600401955050505050506040516020818303038152906040528051906020012060001c90505b92915050565b615b1a8062000b8f6000396000f3fe60806040526004361061027d5760003560e01c806370a082311161014f578063aebef5ff116100c1578063e04a42aa1161007a578063e04a42aa14611386578063e23e3229146113d9578063e2adc73414611404578063e546c0ca14611457578063fa52b0e014611482578063ffabca94146114d15761027d565b8063aebef5ff1461110a578063b57ad64e14611161578063c6dfa13f146111b0578063c7c3c87114611209578063d69a298614611258578063dd62ed3e146113015761027d565b806395d89b411161011357806395d89b4114610ed95780639b88bf2814610f695780639b96eece14610f945780639e08107d14610ff9578063a457c2d714611024578063a9059cbb146110975761027d565b806370a0823114610d7c578063796b89b914610de15780637c3a00fd14610e0c5780638185de3c14610e37578063886a53ab14610e865761027d565b8063230f3833116101f357806342966c68116101ac57806342966c6814610b855780634965d5d814610bc0578063518ab2a814610c0f5780635576422c14610c3a5780635856832014610c895780635a3b7e4214610cec5761027d565b8063230f38331461095f57806323b872dd1461098a578063286807e014610a1d57806330a7a10414610a90578063313ce56714610ae75780633950935114610b125761027d565b806312aef8c31161024557806312aef8c3146107df57806318160ddd1461080a5780631c6fcf7c146108355780631f005e8c146108b25780632194f3a2146108dd57806322d60d17146109345761027d565b8063014a8231146105ef57806306fdde031461061a578063095ea7b3146106aa5780630a7529d81461071d5780630a8d51c714610790575b600554600654106102f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c6c20746f6b656e732061726520736f6c640000000000000000000000000081525060200191505060405180910390fd5b6000341161036c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f56616c7565206d757374206265203e203000000000000000000000000000000081525060200191505060405180910390fd5b6000349050600061038861d2f08361152490919063ffffffff16565b90506000610395826115aa565b905060006103ac838361164b90919063ffffffff16565b90506103c56006546005546116d390919063ffffffff16565b81111561043a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c6c20746f6b656e732061726520736f6c640000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156104a2573d6000803e3d6000fd5b506104b88160065461164b90919063ffffffff16565b6006819055506104d38160005461164b90919063ffffffff16565b60008190555061053281600d60006104e961171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d600061053e61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061058461171d565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505050005b3480156105fb57600080fd5b50610604611725565b6040518082815260200191505060405180910390f35b34801561062657600080fd5b5061062f61172b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066f578082015181840152602081019050610654565b50505050905090810190601f16801561069c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106b657600080fd5b50610703600480360360408110156106cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611764565b604051808215151515815260200191505060405180910390f35b34801561072957600080fd5b506107766004803603604081101561074057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611782565b604051808215151515815260200191505060405180910390f35b34801561079c57600080fd5b506107c9600480360360208110156107b357600080fd5b810190808035906020019092919050505061196e565b6040518082815260200191505060405180910390f35b3480156107eb57600080fd5b506107f461198e565b6040518082815260200191505060405180910390f35b34801561081657600080fd5b5061081f611994565b6040518082815260200191505060405180910390f35b34801561084157600080fd5b5061086e6004803603602081101561085857600080fd5b810190808035906020019092919050505061199d565b604051808881526020018781526020018681526020018581526020018481526020018381526020018215151515815260200197505050505050505060405180910390f35b3480156108be57600080fd5b506108c7611a9c565b6040518082815260200191505060405180910390f35b3480156108e957600080fd5b506108f2611aa2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561094057600080fd5b50610949611ac8565b6040518082815260200191505060405180910390f35b34801561096b57600080fd5b50610974611ace565b6040518082815260200191505060405180910390f35b34801561099657600080fd5b50610a03600480360360608110156109ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ad3565b604051808215151515815260200191505060405180910390f35b348015610a2957600080fd5b50610a7660048036036040811015610a4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bac565b604051808215151515815260200191505060405180910390f35b348015610a9c57600080fd5b50610aa5611e4d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610af357600080fd5b50610afc611e73565b6040518082815260200191505060405180910390f35b348015610b1e57600080fd5b50610b6b60048036036040811015610b3557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e78565b604051808215151515815260200191505060405180910390f35b348015610b9157600080fd5b50610bbe60048036036020811015610ba857600080fd5b8101908080359060200190929190505050611f2b565b005b348015610bcc57600080fd5b50610bf960048036036020811015610be357600080fd5b8101908080359060200190929190505050611f3f565b6040518082815260200191505060405180910390f35b348015610c1b57600080fd5b50610c24611f5f565b6040518082815260200191505060405180910390f35b348015610c4657600080fd5b50610c7360048036036020811015610c5d57600080fd5b8101908080359060200190929190505050611f65565b6040518082815260200191505060405180910390f35b348015610c9557600080fd5b50610cd660048036036060811015610cac57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506124e0565b6040518082815260200191505060405180910390f35b348015610cf857600080fd5b50610d01613505565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d41578082015181840152602081019050610d26565b50505050905090810190601f168015610d6e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d8857600080fd5b50610dcb60048036036020811015610d9f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061353e565b6040518082815260200191505060405180910390f35b348015610ded57600080fd5b50610df6613587565b6040518082815260200191505060405180910390f35b348015610e1857600080fd5b50610e2161358f565b6040518082815260200191505060405180910390f35b348015610e4357600080fd5b50610e7060048036036020811015610e5a57600080fd5b8101908080359060200190929190505050613594565b6040518082815260200191505060405180910390f35b348015610e9257600080fd5b50610ebf60048036036020811015610ea957600080fd5b81019080803590602001909291905050506135b4565b604051808215151515815260200191505060405180910390f35b348015610ee557600080fd5b50610eee613a35565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f2e578082015181840152602081019050610f13565b50505050905090810190601f168015610f5b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f7557600080fd5b50610f7e613a6e565b6040518082815260200191505060405180910390f35b348015610fa057600080fd5b50610fe360048036036020811015610fb757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a76565b6040518082815260200191505060405180910390f35b34801561100557600080fd5b5061100e613b89565b6040518082815260200191505060405180910390f35b34801561103057600080fd5b5061107d6004803603604081101561104757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b8e565b604051808215151515815260200191505060405180910390f35b3480156110a357600080fd5b506110f0600480360360408110156110ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613c5b565b604051808215151515815260200191505060405180910390f35b34801561111657600080fd5b5061111f613c79565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561116d57600080fd5b5061119a6004803603602081101561118457600080fd5b8101908080359060200190929190505050613c9f565b6040518082815260200191505060405180910390f35b3480156111bc57600080fd5b506111f3600480360360408110156111d357600080fd5b810190808035906020019092919080359060200190929190505050613cbf565b6040518082815260200191505060405180910390f35b34801561121557600080fd5b506112426004803603602081101561122c57600080fd5b81019080803590602001909291905050506115aa565b6040518082815260200191505060405180910390f35b34801561126457600080fd5b506112916004803603602081101561127b57600080fd5b8101908080359060200190929190505050613e27565b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018381526020018215151515815260200197505050505050505060405180910390f35b34801561130d57600080fd5b506113706004803603604081101561132457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f19565b6040518082815260200191505060405180910390f35b34801561139257600080fd5b506113bf600480360360208110156113a957600080fd5b8101908080359060200190929190505050613fa0565b604051808215151515815260200191505060405180910390f35b3480156113e557600080fd5b506113ee613fcd565b6040518082815260200191505060405180910390f35b34801561141057600080fd5b5061143d6004803603602081101561142757600080fd5b8101908080359060200190929190505050613fd3565b604051808215151515815260200191505060405180910390f35b34801561146357600080fd5b5061146c614000565b6040518082815260200191505060405180910390f35b34801561148e57600080fd5b506114bb600480360360208110156114a557600080fd5b8101908080359060200190929190505050614006565b6040518082815260200191505060405180910390f35b3480156114dd57600080fd5b5061150a600480360360208110156114f457600080fd5b8101908080359060200190929190505050614034565b604051808215151515815260200191505060405180910390f35b60008083141561153757600090506115a4565b600082840290508284828161154857fe5b041461159f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159ba6021913960400191505060405180910390fd5b809150505b92915050565b6000806115c6633b9aca0060065461152490919063ffffffff16565b905060006115df6005548361461e90919063ffffffff16565b9050600061160e6109c461160084633b9aca006116d390919063ffffffff16565b61152490919063ffffffff16565b90506000611625868361152490919063ffffffff16565b90506116406509184e72a0008261461e90919063ffffffff16565b945050505050919050565b6000808284019050838110156116c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061171583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614668565b905092915050565b600033905090565b60035481565b6040518060400160405280600781526020017f42414e434143590000000000000000000000000000000000000000000000000081525081565b600061177861177161171d565b8484614728565b6001905092915050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c561171d565b73ffffffffffffffffffffffffffffffffffffffff161461184e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4e6f205065726d697373696f6e0000000000000000000000000000000000000081525060200191505060405180910390fd5b6118a082600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118f88260005461164b90919063ffffffff16565b6000819055508273ffffffffffffffffffffffffffffffffffffffff16600273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600c6000838152602001908152602001600020600401549050919050565b60055481565b60008054905090565b600080600080600080600080905062015180600c60008a8152602001908152602001600020600301544203816119cf57fe5b04965061016d8711156119ff5761016d9650600c6000898152602001908152602001600020600101549250600190505b6001600c60008a815260200190815260200160002060050154038703955085600c60008a815260200190815260200160002060020154029450611a4c60018861164b90919063ffffffff16565b9150611a61858461164b90919063ffffffff16565b9250600c6000898152602001908152602001600020600201549350868686868686869650965096509650965096509650919395979092949650565b60045481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61d2f081565b600581565b6000611ae084848461491f565b611ba184611aec61171d565b611b9c856040518060600160405280602881526020016159db60289139600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611b5261171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546146689092919063ffffffff16565b614728565b600190509392505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611bef61171d565b73ffffffffffffffffffffffffffffffffffffffff1614611c78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4e6f205065726d697373696f6e0000000000000000000000000000000000000081525060200191505060405180910390fd5b81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611d2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f55736572206861766520696e637566666963656e742062616c616e636500000081525060200191505060405180910390fd5b611d7f82600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dd7826000546116d390919063ffffffff16565b600081905550600273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601281565b6000611f21611e8561171d565b84611f1c85600e6000611e9661171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b614728565b6001905092915050565b611f3c611f3661171d565b82614bd9565b50565b6000600c6000838152602001908152602001600020600501549050919050565b60065481565b600081600d6000611f7461171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612006576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061596a6026913960400191505060405180910390fd5b600454821015612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615a95602c913960400191505060405180910390fd5b600061208261016d61207485604b613cbf565b61461e90919063ffffffff16565b9050600060035490506003600081548092919060010191905055506040518060e001604052806120b061171d565b73ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018381526020014281526020016120f761016d62015180024261164b90919063ffffffff16565b81526020016001815260200160001515815250600c600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff021916908315150217905550905050600173ffffffffffffffffffffffffffffffffffffffff166121d961171d565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3600173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61228c61016d8661152490919063ffffffff16565b6040518082815260200191505060405180910390a36122a961171d565b73ffffffffffffffffffffffffffffffffffffffff167f1e05593c042a009a22fee915b0caedc0b76f69240c310d199e12de1ee1d513ca85836122fc61016d62015180024261164b90919063ffffffff16565b600c600087815260200190815260200160002060020154600c600088815260200190815260200160002060030154604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a26123b484600d600061236b61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d60006123c061171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124776124288561241a61016d8661152490919063ffffffff16565b61164b90919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124d0846000546116d390919063ffffffff16565b6000819055508092505050919050565b600082600d60006124ef61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612581576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615a036028913960400191505060405180910390fd5b600083116125da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806159416029913960400191505060405180910390fd5b62093a8084101580156126025750600061260062093a8086614d9390919063ffffffff16565b145b612674576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f57726f6e6720696e766573746d656e742074696d65000000000000000000000081525060200191505060405180910390fd5b600061268c62093a808661461e90919063ffffffff16565b905060006002549050600182101580156126a7575060308211155b80156126be5750600160038111156126bb57fe5b84145b15612b2e576002600081548092919060010191905055506126f16126e28684613cbf565b8661164b90919063ffffffff16565b6001819055506040518060a0016040528061270a61171d565b73ffffffffffffffffffffffffffffffffffffffff1681526020016001548152602001612740884261164b90919063ffffffff16565b81526020016000151581526020016040518060400160405280600581526020017f73686f7274000000000000000000000000000000000000000000000000000000815250815250600b600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055506080820151816004019080519060200190612831929190614f64565b5090505061283d61171d565b73ffffffffffffffffffffffffffffffffffffffff167f7e93f8be26fa1ac0d2690bbb8b57b3f13e751c3bdf3e76110413b95db2ca058c86836128898a4261164b90919063ffffffff16565b60405180848152602001838152602001828152602001806020018281038252600a8152602001807f53484f52542d5445524d0000000000000000000000000000000000000000000081525060200194505050505060405180910390a2600173ffffffffffffffffffffffffffffffffffffffff1661290561171d565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6129b8886001546116d390919063ffffffff16565b6040518082815260200191505060405180910390a3612a2685600d60006129dd61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d6000612a3261171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ac5600154600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b1e856000546116d390919063ffffffff16565b60008190555080925050506134fe565b612b446224ea008761461e90919063ffffffff16565b91506224ea008610158015612b64575060026003811115612b6157fe5b84145b8015612b715750600c8211155b8015612b9257506000612b906224ea0088614d9390919063ffffffff16565b145b1561301557600260008154809291906001019190505550612bd8612bc983612bbb886005613cbf565b61152490919063ffffffff16565b8661164b90919063ffffffff16565b6001819055506040518060a00160405280612bf161171d565b73ffffffffffffffffffffffffffffffffffffffff1681526020016001548152602001612c27884261164b90919063ffffffff16565b81526020016000151581526020016040518060400160405280600381526020017f6d69640000000000000000000000000000000000000000000000000000000000815250815250600b600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055506080820151816004019080519060200190612d18929190614f64565b50905050612d2461171d565b73ffffffffffffffffffffffffffffffffffffffff167f7e93f8be26fa1ac0d2690bbb8b57b3f13e751c3bdf3e76110413b95db2ca058c8683612d708a4261164b90919063ffffffff16565b6040518084815260200183815260200182815260200180602001828103825260088152602001807f4d49442d5445524d00000000000000000000000000000000000000000000000081525060200194505050505060405180910390a2600173ffffffffffffffffffffffffffffffffffffffff16612dec61171d565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612e9f886001546116d390919063ffffffff16565b6040518082815260200191505060405180910390a3612f0d85600d6000612ec461171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d6000612f1961171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fac600154600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613005856000546116d390919063ffffffff16565b60008190555080925050506134fe565b61302b626ebe008761461e90919063ffffffff16565b9150626ebe00861015801561304a575060038081111561304757fe5b84145b80156130575750600c8211155b801561307857506000613076626ebe0088614d9390919063ffffffff16565b145b156134fb576002600081548092919060010191905055506130be6130af836130a1886014613cbf565b61152490919063ffffffff16565b8661164b90919063ffffffff16565b6001819055506040518060a001604052806130d761171d565b73ffffffffffffffffffffffffffffffffffffffff168152602001600154815260200161310d884261164b90919063ffffffff16565b81526020016000151581526020016040518060400160405280600481526020017f6c6f6e6700000000000000000000000000000000000000000000000000000000815250815250600b600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555060808201518160040190805190602001906131fe929190614f64565b5090505061320a61171d565b73ffffffffffffffffffffffffffffffffffffffff167f7e93f8be26fa1ac0d2690bbb8b57b3f13e751c3bdf3e76110413b95db2ca058c86836132568a4261164b90919063ffffffff16565b6040518084815260200183815260200182815260200180602001828103825260098152602001807f4c4f4e472d5445524d000000000000000000000000000000000000000000000081525060200194505050505060405180910390a2600173ffffffffffffffffffffffffffffffffffffffff166132d261171d565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613385886001546116d390919063ffffffff16565b6040518082815260200191505060405180910390a36133f385600d60006133aa61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d60006133ff61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613492600154600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134eb856000546116d390919063ffffffff16565b60008190555080925050506134fe565b50505b9392505050565b6040518060400160405280600981526020017f424e5920546f6b656e000000000000000000000000000000000000000000000081525081565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600042905090565b601081565b6000600c6000838152602001908152602001600020600301549050919050565b60006135be61171d565b73ffffffffffffffffffffffffffffffffffffffff16600b600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615990602a913960400191505060405180910390fd5b60001515600b600084815260200190815260200160002060030160009054906101000a900460ff16151514613714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f54686520696e766573746d656e7420697320616c7265616479207370656e740081525060200191505060405180910390fd5b42600b60008481526020019081526020016000206002015410613782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615916602b913960400191505060405180910390fd5b6001600b600084815260200190815260200160002060030160006101000a81548160ff0219169083151502179055506137dc600b60008481526020019081526020016000206001015460005461164b90919063ffffffff16565b60008190555061384b600b600084815260200190815260200160002060010154600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fe600b600084815260200190815260200160002060010154600d60006138b561171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d600061390a61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061395061171d565b73ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b6000868152602001908152602001600020600101546040518082815260200191505060405180910390a3600b6000838152602001908152602001600020600101546139ea61171d565b73ffffffffffffffffffffffffffffffffffffffff167fd3eec71143c45f28685b24760ea218d476917aa0ac0392a55e5304cef40bd2b660405160405180910390a360019050919050565b6040518060400160405280600381526020017f424e59000000000000000000000000000000000000000000000000000000000081525081565b633b9aca0081565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613ab961171d565b73ffffffffffffffffffffffffffffffffffffffff1614613b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4e6f205065726d697373696f6e0000000000000000000000000000000000000081525060200191505060405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601481565b6000613c51613b9b61171d565b84613c4c85604051806060016040528060258152602001615ac160259139600e6000613bc561171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546146689092919063ffffffff16565b614728565b6001905092915050565b6000613c6f613c6861171d565b848461491f565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b6000838152602001908152602001600020600201549050919050565b600080548310613d37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520696e766573746d656e7420697320746f6f206c61726765000000000081525060200191505060405180910390fd5b6000613d90633b9aca00600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461152490919063ffffffff16565b90506000613da96000548361461e90919063ffffffff16565b90506000613dd76010613dc984633b9aca006116d390919063ffffffff16565b61152490919063ffffffff16565b90506000613e066509184e72a000613df8898561152490919063ffffffff16565b61461e90919063ffffffff16565b9050613e1b868261152490919063ffffffff16565b94505050505092915050565b6000806000806000806000600c600089815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60008a815260200190815260200160002060010154600c60008b815260200190815260200160002060020154600c60008c815260200190815260200160002060030154600c60008d815260200190815260200160002060040154600c60008e815260200190815260200160002060050154600c60008f815260200190815260200160002060060160009054906101000a900460ff169650965096509650965096509650919395979092949650565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600c600083815260200190815260200160002060060160009054906101000a900460ff169050919050565b60025481565b6000600b600083815260200190815260200160002060030160009054906101000a900460ff169050919050565b60015481565b600062015180600c60008481526020019081526020016000206003015442038161402c57fe5b049050919050565b600061403e61171d565b73ffffffffffffffffffffffffffffffffffffffff16600c600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146140f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615990602a913960400191505060405180910390fd5b60001515600c600084815260200190815260200160002060060160009054906101000a900460ff16151514614177576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806158cf6021913960400191505060405180910390fd5b426141bc600c6000858152602001908152602001600020600501546201518002600c60008681526020019081526020016000206003015461164b90919063ffffffff16565b10614212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615916602b913960400191505060405180910390fd5b61016e600c60008481526020019081526020016000206005015410614282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806158cf6021913960400191505060405180910390fd5b6000809050600062015180600c6000868152602001908152602001600020600301544203816142ad57fe5b04905061016d811115614308576001600c600086815260200190815260200160002060060160006101000a81548160ff02191690831515021790555061016d9050600c60008581526020019081526020016000206001015491505b60006001600c6000878152602001908152602001600020600501540382039050600081600c60008881526020019081526020016000206002015402905061435960018461164b90919063ffffffff16565b600c600088815260200190815260200160002060050181905550614386818561164b90919063ffffffff16565b935060008411156145ab576143a68460005461164b90919063ffffffff16565b6000819055506143ff84600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061449c84600d600061445361171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d60006144a861171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144ee61171d565b73ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a38361455c61171d565b73ffffffffffffffffffffffffffffffffffffffff167f1ecbcbca3558b6aacfb8dac9579c76a3e2901314a1239e731b4a6fde434e5e4060405160405180910390a36001945050505050614619565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5468657265206973206e6f20746f74616c20726577617264206561726e65642e81525060200191505060405180910390fd5b919050565b600061466083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614ddd565b905092915050565b6000838311158290614715576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156146da5780820151818401526020810190506146bf565b50505050905090810190601f1680156147075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156147ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615a716024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614834576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806158ad6022913960400191505060405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156149a5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615a4c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614a2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806158686023913960400191505060405180910390fd5b614a97816040518060600160405280602681526020016158f060269139600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546146689092919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b2c81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615a2b6021913960400191505060405180910390fd5b614ccb8160405180606001604052806022815260200161588b60229139600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546146689092919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d23816000546116d390919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000614dd583836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614ea3565b905092915050565b60008083118290614e89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614e4e578082015181840152602081019050614e33565b50505050905090810190601f168015614e7b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614e9557fe5b049050809150509392505050565b6000808314158290614f50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614f15578082015181840152602081019050614efa565b50505050905090810190601f168015614f425780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50828481614f5a57fe5b0690509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614fa557805160ff1916838001178555614fd3565b82800160010185558215614fd3579182015b82811115614fd2578251825591602001919060010190614fb7565b5b509050614fe09190614fe4565b5090565b61500691905b80821115615002576000816000905550600101614fea565b5090565b90565b6000808214156151635760d660f81b609460f81b84608060f81b60405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001019450505050506040516020818303038152906040528051906020012060001c9050615861565b607f82116152ba5760d660f81b609460f81b848460f81b60405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001019450505050506040516020818303038152906040528051906020012060001c9050615861565b60ff82116154235760d760f81b609460f81b84608160f81b8560405160200180867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018260ff1660ff1660f81b8152600101955050505050506040516020818303038152906040528051906020012060001c9050615861565b61ffff821161558f5760d860f81b609460f81b84608260f81b8560405160200180867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018261ffff1661ffff1660f01b8152600201955050505050506040516020818303038152906040528051906020012060001c9050615861565b62ffffff82116156fe5760d960f81b609460f81b84608360f81b8560405160200180867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018262ffffff1662ffffff1660e81b8152600301955050505050506040516020818303038152906040528051906020012060001c9050615861565b60da60f81b609460f81b84608460f81b8560405160200180867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018263ffffffff1663ffffffff1660e01b8152600401955050505050506040516020818303038152906040528051906020012060001c90505b9291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737354686520696e766573746d656e7420697320616c726561647920636c61696d656445524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365556e6c6f636b2074696d6520666f722074686520696e766573746d656e7420646964206e6f742070617373496e766573746d656e7420616d6f756e742073686f756c6420626520626967676572207468616e2030596f7520206861766520696e737566666963656e7420616d6f756e74206f6620746f6b656e734f6e6c792074686520696e766573746f722063616e20636c61696d2074686520696e766573746d656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365596f7520646f6e74206861766520737566666963656e7420616d6f756e74206f6620746f6b656e7345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373496e766573746d656e7420616d6f756e742073686f756c6420626520626967676572207468616e20312e324d45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820383338b062b55e702bc5bcdef169f2a945abaedb96d288d88ad22d5c1d70ba7964736f6c634300050b003200000000000000000000000042963c37e9172db6cb9114389a2a89da188b2464

Deployed Bytecode

0x60806040526004361061027d5760003560e01c806370a082311161014f578063aebef5ff116100c1578063e04a42aa1161007a578063e04a42aa14611386578063e23e3229146113d9578063e2adc73414611404578063e546c0ca14611457578063fa52b0e014611482578063ffabca94146114d15761027d565b8063aebef5ff1461110a578063b57ad64e14611161578063c6dfa13f146111b0578063c7c3c87114611209578063d69a298614611258578063dd62ed3e146113015761027d565b806395d89b411161011357806395d89b4114610ed95780639b88bf2814610f695780639b96eece14610f945780639e08107d14610ff9578063a457c2d714611024578063a9059cbb146110975761027d565b806370a0823114610d7c578063796b89b914610de15780637c3a00fd14610e0c5780638185de3c14610e37578063886a53ab14610e865761027d565b8063230f3833116101f357806342966c68116101ac57806342966c6814610b855780634965d5d814610bc0578063518ab2a814610c0f5780635576422c14610c3a5780635856832014610c895780635a3b7e4214610cec5761027d565b8063230f38331461095f57806323b872dd1461098a578063286807e014610a1d57806330a7a10414610a90578063313ce56714610ae75780633950935114610b125761027d565b806312aef8c31161024557806312aef8c3146107df57806318160ddd1461080a5780631c6fcf7c146108355780631f005e8c146108b25780632194f3a2146108dd57806322d60d17146109345761027d565b8063014a8231146105ef57806306fdde031461061a578063095ea7b3146106aa5780630a7529d81461071d5780630a8d51c714610790575b600554600654106102f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c6c20746f6b656e732061726520736f6c640000000000000000000000000081525060200191505060405180910390fd5b6000341161036c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f56616c7565206d757374206265203e203000000000000000000000000000000081525060200191505060405180910390fd5b6000349050600061038861d2f08361152490919063ffffffff16565b90506000610395826115aa565b905060006103ac838361164b90919063ffffffff16565b90506103c56006546005546116d390919063ffffffff16565b81111561043a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c6c20746f6b656e732061726520736f6c640000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156104a2573d6000803e3d6000fd5b506104b88160065461164b90919063ffffffff16565b6006819055506104d38160005461164b90919063ffffffff16565b60008190555061053281600d60006104e961171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d600061053e61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061058461171d565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505050005b3480156105fb57600080fd5b50610604611725565b6040518082815260200191505060405180910390f35b34801561062657600080fd5b5061062f61172b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066f578082015181840152602081019050610654565b50505050905090810190601f16801561069c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106b657600080fd5b50610703600480360360408110156106cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611764565b604051808215151515815260200191505060405180910390f35b34801561072957600080fd5b506107766004803603604081101561074057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611782565b604051808215151515815260200191505060405180910390f35b34801561079c57600080fd5b506107c9600480360360208110156107b357600080fd5b810190808035906020019092919050505061196e565b6040518082815260200191505060405180910390f35b3480156107eb57600080fd5b506107f461198e565b6040518082815260200191505060405180910390f35b34801561081657600080fd5b5061081f611994565b6040518082815260200191505060405180910390f35b34801561084157600080fd5b5061086e6004803603602081101561085857600080fd5b810190808035906020019092919050505061199d565b604051808881526020018781526020018681526020018581526020018481526020018381526020018215151515815260200197505050505050505060405180910390f35b3480156108be57600080fd5b506108c7611a9c565b6040518082815260200191505060405180910390f35b3480156108e957600080fd5b506108f2611aa2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561094057600080fd5b50610949611ac8565b6040518082815260200191505060405180910390f35b34801561096b57600080fd5b50610974611ace565b6040518082815260200191505060405180910390f35b34801561099657600080fd5b50610a03600480360360608110156109ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ad3565b604051808215151515815260200191505060405180910390f35b348015610a2957600080fd5b50610a7660048036036040811015610a4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bac565b604051808215151515815260200191505060405180910390f35b348015610a9c57600080fd5b50610aa5611e4d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610af357600080fd5b50610afc611e73565b6040518082815260200191505060405180910390f35b348015610b1e57600080fd5b50610b6b60048036036040811015610b3557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e78565b604051808215151515815260200191505060405180910390f35b348015610b9157600080fd5b50610bbe60048036036020811015610ba857600080fd5b8101908080359060200190929190505050611f2b565b005b348015610bcc57600080fd5b50610bf960048036036020811015610be357600080fd5b8101908080359060200190929190505050611f3f565b6040518082815260200191505060405180910390f35b348015610c1b57600080fd5b50610c24611f5f565b6040518082815260200191505060405180910390f35b348015610c4657600080fd5b50610c7360048036036020811015610c5d57600080fd5b8101908080359060200190929190505050611f65565b6040518082815260200191505060405180910390f35b348015610c9557600080fd5b50610cd660048036036060811015610cac57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506124e0565b6040518082815260200191505060405180910390f35b348015610cf857600080fd5b50610d01613505565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d41578082015181840152602081019050610d26565b50505050905090810190601f168015610d6e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d8857600080fd5b50610dcb60048036036020811015610d9f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061353e565b6040518082815260200191505060405180910390f35b348015610ded57600080fd5b50610df6613587565b6040518082815260200191505060405180910390f35b348015610e1857600080fd5b50610e2161358f565b6040518082815260200191505060405180910390f35b348015610e4357600080fd5b50610e7060048036036020811015610e5a57600080fd5b8101908080359060200190929190505050613594565b6040518082815260200191505060405180910390f35b348015610e9257600080fd5b50610ebf60048036036020811015610ea957600080fd5b81019080803590602001909291905050506135b4565b604051808215151515815260200191505060405180910390f35b348015610ee557600080fd5b50610eee613a35565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f2e578082015181840152602081019050610f13565b50505050905090810190601f168015610f5b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f7557600080fd5b50610f7e613a6e565b6040518082815260200191505060405180910390f35b348015610fa057600080fd5b50610fe360048036036020811015610fb757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a76565b6040518082815260200191505060405180910390f35b34801561100557600080fd5b5061100e613b89565b6040518082815260200191505060405180910390f35b34801561103057600080fd5b5061107d6004803603604081101561104757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b8e565b604051808215151515815260200191505060405180910390f35b3480156110a357600080fd5b506110f0600480360360408110156110ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613c5b565b604051808215151515815260200191505060405180910390f35b34801561111657600080fd5b5061111f613c79565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561116d57600080fd5b5061119a6004803603602081101561118457600080fd5b8101908080359060200190929190505050613c9f565b6040518082815260200191505060405180910390f35b3480156111bc57600080fd5b506111f3600480360360408110156111d357600080fd5b810190808035906020019092919080359060200190929190505050613cbf565b6040518082815260200191505060405180910390f35b34801561121557600080fd5b506112426004803603602081101561122c57600080fd5b81019080803590602001909291905050506115aa565b6040518082815260200191505060405180910390f35b34801561126457600080fd5b506112916004803603602081101561127b57600080fd5b8101908080359060200190929190505050613e27565b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018381526020018215151515815260200197505050505050505060405180910390f35b34801561130d57600080fd5b506113706004803603604081101561132457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f19565b6040518082815260200191505060405180910390f35b34801561139257600080fd5b506113bf600480360360208110156113a957600080fd5b8101908080359060200190929190505050613fa0565b604051808215151515815260200191505060405180910390f35b3480156113e557600080fd5b506113ee613fcd565b6040518082815260200191505060405180910390f35b34801561141057600080fd5b5061143d6004803603602081101561142757600080fd5b8101908080359060200190929190505050613fd3565b604051808215151515815260200191505060405180910390f35b34801561146357600080fd5b5061146c614000565b6040518082815260200191505060405180910390f35b34801561148e57600080fd5b506114bb600480360360208110156114a557600080fd5b8101908080359060200190929190505050614006565b6040518082815260200191505060405180910390f35b3480156114dd57600080fd5b5061150a600480360360208110156114f457600080fd5b8101908080359060200190929190505050614034565b604051808215151515815260200191505060405180910390f35b60008083141561153757600090506115a4565b600082840290508284828161154857fe5b041461159f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159ba6021913960400191505060405180910390fd5b809150505b92915050565b6000806115c6633b9aca0060065461152490919063ffffffff16565b905060006115df6005548361461e90919063ffffffff16565b9050600061160e6109c461160084633b9aca006116d390919063ffffffff16565b61152490919063ffffffff16565b90506000611625868361152490919063ffffffff16565b90506116406509184e72a0008261461e90919063ffffffff16565b945050505050919050565b6000808284019050838110156116c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061171583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614668565b905092915050565b600033905090565b60035481565b6040518060400160405280600781526020017f42414e434143590000000000000000000000000000000000000000000000000081525081565b600061177861177161171d565b8484614728565b6001905092915050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c561171d565b73ffffffffffffffffffffffffffffffffffffffff161461184e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4e6f205065726d697373696f6e0000000000000000000000000000000000000081525060200191505060405180910390fd5b6118a082600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118f88260005461164b90919063ffffffff16565b6000819055508273ffffffffffffffffffffffffffffffffffffffff16600273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600c6000838152602001908152602001600020600401549050919050565b60055481565b60008054905090565b600080600080600080600080905062015180600c60008a8152602001908152602001600020600301544203816119cf57fe5b04965061016d8711156119ff5761016d9650600c6000898152602001908152602001600020600101549250600190505b6001600c60008a815260200190815260200160002060050154038703955085600c60008a815260200190815260200160002060020154029450611a4c60018861164b90919063ffffffff16565b9150611a61858461164b90919063ffffffff16565b9250600c6000898152602001908152602001600020600201549350868686868686869650965096509650965096509650919395979092949650565b60045481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61d2f081565b600581565b6000611ae084848461491f565b611ba184611aec61171d565b611b9c856040518060600160405280602881526020016159db60289139600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611b5261171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546146689092919063ffffffff16565b614728565b600190509392505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611bef61171d565b73ffffffffffffffffffffffffffffffffffffffff1614611c78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4e6f205065726d697373696f6e0000000000000000000000000000000000000081525060200191505060405180910390fd5b81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611d2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f55736572206861766520696e637566666963656e742062616c616e636500000081525060200191505060405180910390fd5b611d7f82600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dd7826000546116d390919063ffffffff16565b600081905550600273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601281565b6000611f21611e8561171d565b84611f1c85600e6000611e9661171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b614728565b6001905092915050565b611f3c611f3661171d565b82614bd9565b50565b6000600c6000838152602001908152602001600020600501549050919050565b60065481565b600081600d6000611f7461171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612006576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061596a6026913960400191505060405180910390fd5b600454821015612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615a95602c913960400191505060405180910390fd5b600061208261016d61207485604b613cbf565b61461e90919063ffffffff16565b9050600060035490506003600081548092919060010191905055506040518060e001604052806120b061171d565b73ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018381526020014281526020016120f761016d62015180024261164b90919063ffffffff16565b81526020016001815260200160001515815250600c600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff021916908315150217905550905050600173ffffffffffffffffffffffffffffffffffffffff166121d961171d565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3600173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61228c61016d8661152490919063ffffffff16565b6040518082815260200191505060405180910390a36122a961171d565b73ffffffffffffffffffffffffffffffffffffffff167f1e05593c042a009a22fee915b0caedc0b76f69240c310d199e12de1ee1d513ca85836122fc61016d62015180024261164b90919063ffffffff16565b600c600087815260200190815260200160002060020154600c600088815260200190815260200160002060030154604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a26123b484600d600061236b61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d60006123c061171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124776124288561241a61016d8661152490919063ffffffff16565b61164b90919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124d0846000546116d390919063ffffffff16565b6000819055508092505050919050565b600082600d60006124ef61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612581576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615a036028913960400191505060405180910390fd5b600083116125da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806159416029913960400191505060405180910390fd5b62093a8084101580156126025750600061260062093a8086614d9390919063ffffffff16565b145b612674576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f57726f6e6720696e766573746d656e742074696d65000000000000000000000081525060200191505060405180910390fd5b600061268c62093a808661461e90919063ffffffff16565b905060006002549050600182101580156126a7575060308211155b80156126be5750600160038111156126bb57fe5b84145b15612b2e576002600081548092919060010191905055506126f16126e28684613cbf565b8661164b90919063ffffffff16565b6001819055506040518060a0016040528061270a61171d565b73ffffffffffffffffffffffffffffffffffffffff1681526020016001548152602001612740884261164b90919063ffffffff16565b81526020016000151581526020016040518060400160405280600581526020017f73686f7274000000000000000000000000000000000000000000000000000000815250815250600b600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055506080820151816004019080519060200190612831929190614f64565b5090505061283d61171d565b73ffffffffffffffffffffffffffffffffffffffff167f7e93f8be26fa1ac0d2690bbb8b57b3f13e751c3bdf3e76110413b95db2ca058c86836128898a4261164b90919063ffffffff16565b60405180848152602001838152602001828152602001806020018281038252600a8152602001807f53484f52542d5445524d0000000000000000000000000000000000000000000081525060200194505050505060405180910390a2600173ffffffffffffffffffffffffffffffffffffffff1661290561171d565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6129b8886001546116d390919063ffffffff16565b6040518082815260200191505060405180910390a3612a2685600d60006129dd61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d6000612a3261171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ac5600154600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b1e856000546116d390919063ffffffff16565b60008190555080925050506134fe565b612b446224ea008761461e90919063ffffffff16565b91506224ea008610158015612b64575060026003811115612b6157fe5b84145b8015612b715750600c8211155b8015612b9257506000612b906224ea0088614d9390919063ffffffff16565b145b1561301557600260008154809291906001019190505550612bd8612bc983612bbb886005613cbf565b61152490919063ffffffff16565b8661164b90919063ffffffff16565b6001819055506040518060a00160405280612bf161171d565b73ffffffffffffffffffffffffffffffffffffffff1681526020016001548152602001612c27884261164b90919063ffffffff16565b81526020016000151581526020016040518060400160405280600381526020017f6d69640000000000000000000000000000000000000000000000000000000000815250815250600b600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055506080820151816004019080519060200190612d18929190614f64565b50905050612d2461171d565b73ffffffffffffffffffffffffffffffffffffffff167f7e93f8be26fa1ac0d2690bbb8b57b3f13e751c3bdf3e76110413b95db2ca058c8683612d708a4261164b90919063ffffffff16565b6040518084815260200183815260200182815260200180602001828103825260088152602001807f4d49442d5445524d00000000000000000000000000000000000000000000000081525060200194505050505060405180910390a2600173ffffffffffffffffffffffffffffffffffffffff16612dec61171d565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612e9f886001546116d390919063ffffffff16565b6040518082815260200191505060405180910390a3612f0d85600d6000612ec461171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d6000612f1961171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fac600154600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613005856000546116d390919063ffffffff16565b60008190555080925050506134fe565b61302b626ebe008761461e90919063ffffffff16565b9150626ebe00861015801561304a575060038081111561304757fe5b84145b80156130575750600c8211155b801561307857506000613076626ebe0088614d9390919063ffffffff16565b145b156134fb576002600081548092919060010191905055506130be6130af836130a1886014613cbf565b61152490919063ffffffff16565b8661164b90919063ffffffff16565b6001819055506040518060a001604052806130d761171d565b73ffffffffffffffffffffffffffffffffffffffff168152602001600154815260200161310d884261164b90919063ffffffff16565b81526020016000151581526020016040518060400160405280600481526020017f6c6f6e6700000000000000000000000000000000000000000000000000000000815250815250600b600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555060808201518160040190805190602001906131fe929190614f64565b5090505061320a61171d565b73ffffffffffffffffffffffffffffffffffffffff167f7e93f8be26fa1ac0d2690bbb8b57b3f13e751c3bdf3e76110413b95db2ca058c86836132568a4261164b90919063ffffffff16565b6040518084815260200183815260200182815260200180602001828103825260098152602001807f4c4f4e472d5445524d000000000000000000000000000000000000000000000081525060200194505050505060405180910390a2600173ffffffffffffffffffffffffffffffffffffffff166132d261171d565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613385886001546116d390919063ffffffff16565b6040518082815260200191505060405180910390a36133f385600d60006133aa61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d60006133ff61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613492600154600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134eb856000546116d390919063ffffffff16565b60008190555080925050506134fe565b50505b9392505050565b6040518060400160405280600981526020017f424e5920546f6b656e000000000000000000000000000000000000000000000081525081565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600042905090565b601081565b6000600c6000838152602001908152602001600020600301549050919050565b60006135be61171d565b73ffffffffffffffffffffffffffffffffffffffff16600b600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615990602a913960400191505060405180910390fd5b60001515600b600084815260200190815260200160002060030160009054906101000a900460ff16151514613714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f54686520696e766573746d656e7420697320616c7265616479207370656e740081525060200191505060405180910390fd5b42600b60008481526020019081526020016000206002015410613782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615916602b913960400191505060405180910390fd5b6001600b600084815260200190815260200160002060030160006101000a81548160ff0219169083151502179055506137dc600b60008481526020019081526020016000206001015460005461164b90919063ffffffff16565b60008190555061384b600b600084815260200190815260200160002060010154600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fe600b600084815260200190815260200160002060010154600d60006138b561171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d600061390a61171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061395061171d565b73ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b6000868152602001908152602001600020600101546040518082815260200191505060405180910390a3600b6000838152602001908152602001600020600101546139ea61171d565b73ffffffffffffffffffffffffffffffffffffffff167fd3eec71143c45f28685b24760ea218d476917aa0ac0392a55e5304cef40bd2b660405160405180910390a360019050919050565b6040518060400160405280600381526020017f424e59000000000000000000000000000000000000000000000000000000000081525081565b633b9aca0081565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613ab961171d565b73ffffffffffffffffffffffffffffffffffffffff1614613b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4e6f205065726d697373696f6e0000000000000000000000000000000000000081525060200191505060405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601481565b6000613c51613b9b61171d565b84613c4c85604051806060016040528060258152602001615ac160259139600e6000613bc561171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546146689092919063ffffffff16565b614728565b6001905092915050565b6000613c6f613c6861171d565b848461491f565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b6000838152602001908152602001600020600201549050919050565b600080548310613d37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520696e766573746d656e7420697320746f6f206c61726765000000000081525060200191505060405180910390fd5b6000613d90633b9aca00600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461152490919063ffffffff16565b90506000613da96000548361461e90919063ffffffff16565b90506000613dd76010613dc984633b9aca006116d390919063ffffffff16565b61152490919063ffffffff16565b90506000613e066509184e72a000613df8898561152490919063ffffffff16565b61461e90919063ffffffff16565b9050613e1b868261152490919063ffffffff16565b94505050505092915050565b6000806000806000806000600c600089815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60008a815260200190815260200160002060010154600c60008b815260200190815260200160002060020154600c60008c815260200190815260200160002060030154600c60008d815260200190815260200160002060040154600c60008e815260200190815260200160002060050154600c60008f815260200190815260200160002060060160009054906101000a900460ff169650965096509650965096509650919395979092949650565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600c600083815260200190815260200160002060060160009054906101000a900460ff169050919050565b60025481565b6000600b600083815260200190815260200160002060030160009054906101000a900460ff169050919050565b60015481565b600062015180600c60008481526020019081526020016000206003015442038161402c57fe5b049050919050565b600061403e61171d565b73ffffffffffffffffffffffffffffffffffffffff16600c600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146140f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615990602a913960400191505060405180910390fd5b60001515600c600084815260200190815260200160002060060160009054906101000a900460ff16151514614177576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806158cf6021913960400191505060405180910390fd5b426141bc600c6000858152602001908152602001600020600501546201518002600c60008681526020019081526020016000206003015461164b90919063ffffffff16565b10614212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615916602b913960400191505060405180910390fd5b61016e600c60008481526020019081526020016000206005015410614282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806158cf6021913960400191505060405180910390fd5b6000809050600062015180600c6000868152602001908152602001600020600301544203816142ad57fe5b04905061016d811115614308576001600c600086815260200190815260200160002060060160006101000a81548160ff02191690831515021790555061016d9050600c60008581526020019081526020016000206001015491505b60006001600c6000878152602001908152602001600020600501540382039050600081600c60008881526020019081526020016000206002015402905061435960018461164b90919063ffffffff16565b600c600088815260200190815260200160002060050181905550614386818561164b90919063ffffffff16565b935060008411156145ab576143a68460005461164b90919063ffffffff16565b6000819055506143ff84600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d390919063ffffffff16565b600d6000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061449c84600d600061445361171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d60006144a861171d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144ee61171d565b73ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a38361455c61171d565b73ffffffffffffffffffffffffffffffffffffffff167f1ecbcbca3558b6aacfb8dac9579c76a3e2901314a1239e731b4a6fde434e5e4060405160405180910390a36001945050505050614619565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5468657265206973206e6f20746f74616c20726577617264206561726e65642e81525060200191505060405180910390fd5b919050565b600061466083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614ddd565b905092915050565b6000838311158290614715576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156146da5780820151818401526020810190506146bf565b50505050905090810190601f1680156147075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156147ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615a716024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614834576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806158ad6022913960400191505060405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156149a5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615a4c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614a2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806158686023913960400191505060405180910390fd5b614a97816040518060600160405280602681526020016158f060269139600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546146689092919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b2c81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461164b90919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615a2b6021913960400191505060405180910390fd5b614ccb8160405180606001604052806022815260200161588b60229139600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546146689092919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d23816000546116d390919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000614dd583836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614ea3565b905092915050565b60008083118290614e89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614e4e578082015181840152602081019050614e33565b50505050905090810190601f168015614e7b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614e9557fe5b049050809150509392505050565b6000808314158290614f50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614f15578082015181840152602081019050614efa565b50505050905090810190601f168015614f425780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50828481614f5a57fe5b0690509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614fa557805160ff1916838001178555614fd3565b82800160010185558215614fd3579182015b82811115614fd2578251825591602001919060010190614fb7565b5b509050614fe09190614fe4565b5090565b61500691905b80821115615002576000816000905550600101614fea565b5090565b90565b6000808214156151635760d660f81b609460f81b84608060f81b60405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001019450505050506040516020818303038152906040528051906020012060001c9050615861565b607f82116152ba5760d660f81b609460f81b848460f81b60405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001019450505050506040516020818303038152906040528051906020012060001c9050615861565b60ff82116154235760d760f81b609460f81b84608160f81b8560405160200180867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018260ff1660ff1660f81b8152600101955050505050506040516020818303038152906040528051906020012060001c9050615861565b61ffff821161558f5760d860f81b609460f81b84608260f81b8560405160200180867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018261ffff1661ffff1660f01b8152600201955050505050506040516020818303038152906040528051906020012060001c9050615861565b62ffffff82116156fe5760d960f81b609460f81b84608360f81b8560405160200180867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018262ffffff1662ffffff1660e81b8152600301955050505050506040516020818303038152906040528051906020012060001c9050615861565b60da60f81b609460f81b84608460f81b8560405160200180867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018263ffffffff1663ffffffff1660e01b8152600401955050505050506040516020818303038152906040528051906020012060001c90505b9291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737354686520696e766573746d656e7420697320616c726561647920636c61696d656445524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365556e6c6f636b2074696d6520666f722074686520696e766573746d656e7420646964206e6f742070617373496e766573746d656e7420616d6f756e742073686f756c6420626520626967676572207468616e2030596f7520206861766520696e737566666963656e7420616d6f756e74206f6620746f6b656e734f6e6c792074686520696e766573746f722063616e20636c61696d2074686520696e766573746d656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365596f7520646f6e74206861766520737566666963656e7420616d6f756e74206f6620746f6b656e7345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373496e766573746d656e7420616d6f756e742073686f756c6420626520626967676572207468616e20312e324d45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820383338b062b55e702bc5bcdef169f2a945abaedb96d288d88ad22d5c1d70ba7964736f6c634300050b0032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000042963c37e9172db6cb9114389a2a89da188b2464

-----Decoded View---------------
Arg [0] : _fundsWallet (address): 0x42963C37e9172dB6Cb9114389a2A89Da188b2464

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000042963c37e9172db6cb9114389a2a89da188b2464


Deployed Bytecode Sourcemap

6421:26575:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9889:13;;9876:10;;:26;9868:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9957:1;9945:9;:13;9937:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9991:11;10005:9;9991:23;;10025:14;10042:21;8141:5;10042:3;:7;;:21;;;;:::i;:::-;10025:38;;10074:20;10097:24;10114:6;10097:16;:24::i;:::-;10074:47;;10126:19;10148:24;10165:6;10148:12;:16;;:24;;;;:::i;:::-;10126:46;;10206:31;10226:10;;10207:13;;10206:19;;:31;;;;:::i;:::-;10191:11;:46;;10183:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10272:11;;;;;;;;;;;:20;;:31;10293:9;10272:31;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10272:31:0;10327:29;10343:11;10327:10;;:14;;:29;;;;:::i;:::-;10314:10;:42;;;;10382:31;10400:11;10382:12;;:16;;:31;;;;:::i;:::-;10367:12;:46;;;;10450:42;10479:11;10450:9;:23;10460:12;:10;:12::i;:::-;10450:23;;;;;;;;;;;;;;;;:27;;:42;;;;:::i;:::-;10424:9;:23;10434:12;:10;:12::i;:::-;10424:23;;;;;;;;;;;;;;;:68;;;;10556:12;:10;:12::i;:::-;10508:97;;10539:1;10508:97;;;10583:11;10508:97;;;;;;;;;;;;;;;;;;9829:784;;;;6421:26575;7675:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7675:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7364;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7364:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7364:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11281:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11281:150:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11281:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;28006:397;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28006:397:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28006:397:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;29713:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29713:175:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29713:175:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7963:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7963:68:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10676:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10676:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31699:1294;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31699:1294:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31699:1294:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7890:66;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7890:66:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8549:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8549:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8102:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8102:44:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7769:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7769:53:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11900:304;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11900:304:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11900:304:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27525:475;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27525:475:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27525:475:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8616:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8616:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7506:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7506:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12968:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12968:210:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12968:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15763:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15763:83:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15763:83:0;;;;;;;;;;;;;;;;;:::i;:::-;;29393:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29393:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29393:152:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8038:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8038:57:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23893:1570;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23893:1570:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23893:1570:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16631:6201;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16631:6201:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16631:6201:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7454:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7454:45:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7454:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12454:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12454:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12454:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30998:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30998:114:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7721:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7721:41:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30102:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30102:178:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30102:178:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22838:1049;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22838:1049:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22838:1049:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7410:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7410:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7410:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8152:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8152:44:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28409:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28409:180:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28409:180:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7829:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7829:54:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13681:261;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13681:261:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13681:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10978:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10978:158:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10978:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8590:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8590:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;30410:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30410:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30410:134:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31118:575;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31118:575:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31118:575:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30550:442;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30550:442:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30550:442:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28595:792;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28595:792:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28595:792:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12262:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12262:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12262:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29551:156;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29551:156:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29551:156:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7636:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7636:32:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30286:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30286:118:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30286:118:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7586:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7586:43:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29894:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29894:202:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29894:202:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25469:2050;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25469:2050:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25469:2050:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3280:471;3338:7;3588:1;3583;:6;3579:47;;;3613:1;3606:8;;;;3579:47;3638:9;3654:1;3650;:5;3638:17;;3683:1;3678;3674;:5;;;;;;:10;3666:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3742:1;3735:8;;;3280:471;;;;;:::o;30550:442::-;30620:16;30649:21;30673:26;30688:10;30673;;:14;;:26;;;;:::i;:::-;30649:50;;30710:26;30739:32;30757:13;;30739;:17;;:32;;;;:::i;:::-;30710:61;;30782:24;30809:43;30847:4;30810:31;30822:18;8186:10;30810:11;;:31;;;;:::i;:::-;30809:37;;:43;;;;:::i;:::-;30782:70;;30863:24;30891:35;30912:13;30891:16;:20;;:35;;;;:::i;:::-;30863:64;;30945:38;30968:14;30946:16;30945:22;;:38;;;;:::i;:::-;30938:46;;;;;;30550:442;;;:::o;1950:181::-;2008:7;2028:9;2044:1;2040;:5;2028:17;;2069:1;2064;:6;;2056:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2122:1;2115:8;;;1950:181;;;;:::o;2406:136::-;2464:7;2491:43;2495:1;2498;2491:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2484:50;;2406:136;;;;:::o;16527:98::-;16572:15;16607:10;16600:17;;16527:98;:::o;7675:39::-;;;;:::o;7364:::-;;;;;;;;;;;;;;;;;;;:::o;11281:150::-;11346:4;11363:38;11372:12;:10;:12::i;:::-;11386:7;11395:5;11363:8;:38::i;:::-;11419:4;11412:11;;11281:150;;;;:::o;28006:397::-;28089:12;28138:8;;;;;;;;;;;28122:24;;:12;:10;:12::i;:::-;:24;;;28114:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28194:28;28215:6;28194:9;:16;28204:5;28194:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;28175:9;:16;28185:5;28175:16;;;;;;;;;;;;;;;:47;;;;28248:24;28265:6;28248:12;;:16;;:24;;;;:::i;:::-;28233:12;:39;;;;28336:5;28288:85;;28319:1;28288:85;;;28356:6;28288:85;;;;;;;;;;;;;;;;;;28391:4;28384:11;;28006:397;;;;:::o;29713:175::-;29796:7;29823:16;:34;29840:16;29823:34;;;;;;;;;;;:56;;;29815:65;;29713:175;;;:::o;7963:68::-;;;;:::o;10676:91::-;10720:7;10747:12;;10740:19;;10676:91;:::o;31699:1294::-;31789:22;31822;31855:29;31895:24;31930:17;31958:9;31978:11;32016:5;32007:14;;8244:5;32071:16;:34;32088:16;32071:34;;;;;;;;;;;:54;;;32053:15;:72;32052:89;;;;;;32032:109;;8463:3;32155:17;:30;32152:199;;;8463:3;32201:30;;32261:16;:34;32278:16;32261:34;;;;;;;;;;;:50;;;32246:65;;32335:4;32326:13;;32152:199;32443:1;32402:16;:34;32419:16;32402:34;;;;;;;;;;;:38;;;:42;32381:17;:64;32361:84;;32539:17;32483:16;:34;32500:16;32483:34;;;;;;;;;;;:53;;;:73;32456:100;;32574:24;32596:1;32574:17;:21;;:24;;;;:::i;:::-;32567:31;;32624:42;32641:24;32624:12;:16;;:42;;;;:::i;:::-;32609:57;;32699:16;:34;32716:16;32699:34;;;;;;;;;;;:53;;;32677:75;;32785:17;32817;32849:24;32888:19;32922:12;32949:4;32968:6;32763:222;;;;;;;;;;;;;;31699:1294;;;;;;;;;:::o;7890:66::-;;;;:::o;8549:34::-;;;;;;;;;;;;;:::o;8102:44::-;8141:5;8102:44;:::o;7769:53::-;7821:1;7769:53;:::o;11900:304::-;11989:4;12006:36;12016:6;12024:9;12035:6;12006:9;:36::i;:::-;12053:121;12062:6;12070:12;:10;:12::i;:::-;12084:89;12122:6;12084:89;;;;;;;;;;;;;;;;;:11;:19;12096:6;12084:19;;;;;;;;;;;;;;;:33;12104:12;:10;:12::i;:::-;12084:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12053:8;:121::i;:::-;12192:4;12185:11;;11900:304;;;;;:::o;27525:475::-;27607:12;27656:8;;;;;;;;;;;27640:24;;:12;:10;:12::i;:::-;:24;;;27632:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27721:6;27701:9;:16;27711:5;27701:16;;;;;;;;;;;;;;;;:26;;27693:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27791:28;27812:6;27791:9;:16;27801:5;27791:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;27772:9;:16;27782:5;27772:16;;;;;;;;;;;;;;;:47;;;;27845:24;27862:6;27845:12;;:16;;:24;;;;:::i;:::-;27830:12;:39;;;;27936:1;27885:85;;27908:5;27885:85;;;27953:6;27885:85;;;;;;;;;;;;;;;;;;27988:4;27981:11;;27525:475;;;;:::o;8616:23::-;;;;;;;;;;;;;:::o;7506:37::-;7541:2;7506:37;:::o;12968:210::-;13048:4;13065:83;13074:12;:10;:12::i;:::-;13088:7;13097:50;13136:10;13097:11;:25;13109:12;:10;:12::i;:::-;13097:25;;;;;;;;;;;;;;;:34;13123:7;13097:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;13065:8;:83::i;:::-;13166:4;13159:11;;12968:210;;;;:::o;15763:83::-;15811:27;15817:12;:10;:12::i;:::-;15831:6;15811:5;:27::i;:::-;15763:83;:::o;29393:152::-;29471:7;29498:16;:34;29515:16;29498:34;;;;;;;;;;;:38;;;29491:46;;29393:152;;;:::o;8038:57::-;;;;:::o;23893:1570::-;23965:7;24020;23993:9;:23;24003:12;:10;:12::i;:::-;23993:23;;;;;;;;;;;;;;;;:34;;23985:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24100:13;;24089:7;:24;;24081:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24173:28;24204:44;8463:3;24204:28;24220:7;24229:2;24204:15;:28::i;:::-;:32;;:44;;;;:::i;:::-;24173:75;;24259:23;24285:20;;24259:46;;24316:20;;:22;;;;;;;;;;;;;24385:235;;;;;;;;24413:12;:10;:12::i;:::-;24385:235;;;;;;24440:7;24385:235;;;;24462:20;24385:235;;;;24497:15;24385:235;;;;24527:46;8463:3;8244:5;24547:25;24527:15;:19;;:46;;;;:::i;:::-;24385:235;;;;24588:1;24385:235;;;;24604:5;24385:235;;;;;24349:16;:33;24366:15;24349:33;;;;;;;;;;;:271;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24694:1;24636:93;;24659:12;:10;:12::i;:::-;24636:93;;;24711:7;24636:93;;;;;;;;;;;;;;;;;;24801:1;24745:120;;24776:1;24745:120;;;24818:36;8463:3;24818:20;:24;;:36;;;;:::i;:::-;24745:120;;;;;;;;;;;;;;;;;;24910:12;:10;:12::i;:::-;24881:302;;;24937:7;24959:15;24989:48;8463:3;8244:5;25010:25;24989:15;:19;;:48;;;;:::i;:::-;25052:16;:33;25069:15;25052:33;;;;;;;;;;;:52;;;25119:16;:33;25136:15;25119:33;;;;;;;;;;;:53;;;24881:302;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25220:36;25248:7;25220:9;:23;25230:12;:10;:12::i;:::-;25220:23;;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;25194:9;:23;25204:12;:10;:12::i;:::-;25194:23;;;;;;;;;;;;;;;:62;;;;25291:78;25317:51;25360:7;25318:36;8463:3;25318:20;:24;;:36;;;;:::i;:::-;25317:42;;:51;;;;:::i;:::-;25291:9;:21;25309:1;25291:21;;;;;;;;;;;;;;;;:25;;:78;;;;:::i;:::-;25267:9;:21;25285:1;25267:21;;;;;;;;;;;;;;;:102;;;;25395:25;25412:7;25395:12;;:16;;:25;;;;:::i;:::-;25380:12;:40;;;;25439:15;25431:24;;;;23893:1570;;;:::o;16631:6201::-;16725:7;16780;16753:9;:23;16763:12;:10;:12::i;:::-;16753:23;;;;;;;;;;;;;;;;:34;;16745:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16861:1;16851:7;:11;16843:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8298:6;16927:11;:28;;:69;;;;;16995:1;16960:30;8298:6;16960:11;:15;;:30;;;;:::i;:::-;16959:37;16927:69;16919:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17077:17;17098:30;8298:6;17098:11;:15;;:30;;;;:::i;:::-;17077:52;;17140:23;17166:13;;17140:39;;17633:1;17620:9;:14;;17619:40;;;;;17656:2;17643:9;:15;;17619:40;:78;;;;;17683:12;17678:18;;;;;;;;17667:7;:29;17619:78;17616:1228;;;17723:13;;:15;;;;;;;;;;;;;17784:48;17796:35;17812:7;17821:9;17796:15;:35::i;:::-;17784:7;:11;;:48;;;;:::i;:::-;17753:28;:79;;;;17876:204;;;;;;;;17905:12;:10;:12::i;:::-;17876:204;;;;;;17936:28;;17876:204;;;;17983:32;18003:11;17983:15;:19;;:32;;;;:::i;:::-;17876:204;;;;18034:5;17876:204;;;;;;;;;;;;;;;;;;;;;;;;;;17847:9;:26;17857:15;17847:26;;;;;;;;;;;:233;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;18108:12;:10;:12::i;:::-;18100:177;;;18139:7;18165:15;18199:32;18219:11;18199:15;:19;;:32;;;;:::i;:::-;18100:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18363:1;18297:109;;18324:12;:10;:12::i;:::-;18297:109;;;18384:7;18297:109;;;;;;;;;;;;;;;;;;18490:1;18426:141;;18461:1;18426:141;;;18511:41;18544:7;18511:28;;:32;;:41;;;;:::i;:::-;18426:141;;;;;;;;;;;;;;;;;;18608:36;18636:7;18608:9;:23;18618:12;:10;:12::i;:::-;18608:23;;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;18582:9;:23;18592:12;:10;:12::i;:::-;18582:23;;;;;;;;;;;;;;;:62;;;;18683:55;18709:28;;18683:9;:21;18701:1;18683:21;;;;;;;;;;;;;;;;:25;;:55;;;;:::i;:::-;18659:9;:21;18677:1;18659:21;;;;;;;;;;;;;;;:79;;;;18768:25;18785:7;18768:12;;:16;;:25;;;;:::i;:::-;18753:12;:40;;;;18816:15;18808:24;;;;;;17616:1228;19012:31;8354:7;19012:11;:15;;:31;;;;:::i;:::-;18999:45;;8354:7;19510:11;:29;;19509:69;;;;;19564:12;19559:18;;;;;;;;19548:7;:29;19509:69;:94;;;;;19599:2;19586:9;:15;;19509:94;:139;;;;;19647:1;19611:31;8354:7;19611:11;:15;;:31;;;;:::i;:::-;19610:38;19509:139;19506:1324;;;19665:13;;:15;;;;;;;;;;;;;19726:78;19738:65;19793:9;19738:50;19754:7;7821:1;19738:15;:50::i;:::-;:54;;:65;;;;:::i;:::-;19726:7;:11;;:78;;;;:::i;:::-;19695:28;:109;;;;19848:202;;;;;;;;19877:12;:10;:12::i;:::-;19848:202;;;;;;19908:28;;19848:202;;;;19955:32;19975:11;19955:15;:19;;:32;;;;:::i;:::-;19848:202;;;;20006:5;19848:202;;;;;;;;;;;;;;;;;;;;;;;;;;19819:9;:26;19829:15;19819:26;;;;;;;;;;;:231;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;20096:12;:10;:12::i;:::-;20070:193;;;20127:7;20153:15;20187:32;20207:11;20187:15;:19;;:32;;;;:::i;:::-;20070:193;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20349:1;20283:109;;20310:12;:10;:12::i;:::-;20283:109;;;20370:7;20283:109;;;;;;;;;;;;;;;;;;20476:1;20412:141;;20447:1;20412:141;;;20497:41;20530:7;20497:28;;:32;;:41;;;;:::i;:::-;20412:141;;;;;;;;;;;;;;;;;;20594:36;20622:7;20594:9;:23;20604:12;:10;:12::i;:::-;20594:23;;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;20568:9;:23;20578:12;:10;:12::i;:::-;20568:23;;;;;;;;;;;;;;;:62;;;;20669:55;20695:28;;20669:9;:21;20687:1;20669:21;;;;;;;;;;;;;;;;:25;;:55;;;;:::i;:::-;20645:9;:21;20663:1;20645:21;;;;;;;;;;;;;;;:79;;;;20754:25;20771:7;20754:12;;:16;;:25;;;;:::i;:::-;20739:12;:40;;;;20802:15;20794:24;;;;;;19506:1324;21011:33;8413:7;21011:11;:15;;:33;;;;:::i;:::-;20998:47;;8413:7;21496:11;:31;;21495:73;;;;;21552:14;21547:20;;;;;;;;21536:7;:31;21495:73;:98;;;;;21589:2;21576:9;:15;;21495:98;:145;;;;;21638:1;21601:33;8413:7;21601:11;:15;;:33;;;;:::i;:::-;:38;21495:145;21492:1333;;;21657:13;;:15;;;;;;;;;;;;;21718:79;21730:66;21786:9;21730:51;21746:7;7881:2;21730:15;:51::i;:::-;:55;;:66;;;;:::i;:::-;21718:7;:11;;:79;;;;:::i;:::-;21687:28;:110;;;;21841:203;;;;;;;;21870:12;:10;:12::i;:::-;21841:203;;;;;;21901:28;;21841:203;;;;21948:32;21968:11;21948:15;:19;;:32;;;;:::i;:::-;21841:203;;;;21999:5;21841:203;;;;;;;;;;;;;;;;;;;;;;;;;;21812:9;:26;21822:15;21812:26;;;;;;;;;;;:232;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;22090:12;:10;:12::i;:::-;22064:194;;;22121:7;22147:15;22181:32;22201:11;22181:15;:19;;:32;;;;:::i;:::-;22064:194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22344:1;22278:109;;22305:12;:10;:12::i;:::-;22278:109;;;22365:7;22278:109;;;;;;;;;;;;;;;;;;22471:1;22407:141;;22442:1;22407:141;;;22492:41;22525:7;22492:28;;:32;;:41;;;;:::i;:::-;22407:141;;;;;;;;;;;;;;;;;;22589:36;22617:7;22589:9;:23;22599:12;:10;:12::i;:::-;22589:23;;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;22563:9;:23;22573:12;:10;:12::i;:::-;22563:23;;;;;;;;;;;;;;;:62;;;;22664:55;22690:28;;22664:9;:21;22682:1;22664:21;;;;;;;;;;;;;;;;:25;;:55;;;;:::i;:::-;22640:9;:21;22658:1;22640:21;;;;;;;;;;;;;;;:79;;;;22749:25;22766:7;22749:12;;:16;;:25;;;;:::i;:::-;22734:12;:40;;;;22797:15;22789:24;;;;;;21492:1333;16631:6201;;;;;;;;:::o;7454:45::-;;;;;;;;;;;;;;;;;;;:::o;12454:110::-;12511:7;12538:9;:18;12548:7;12538:18;;;;;;;;;;;;;;;;12531:25;;12454:110;;;:::o;30998:114::-;31051:19;31089:15;31082:22;;30998:114;:::o;7721:41::-;7760:2;7721:41;:::o;30102:178::-;30190:7;30217:16;:34;30234:16;30217:34;;;;;;;;;;;:54;;;30209:63;;30102:178;;;:::o;22838:1049::-;22906:12;22983;:10;:12::i;:::-;22939:56;;:9;:24;22949:13;22939:24;;;;;;;;;;;:40;;;;;;;;;;;;:56;;;22931:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23095:5;23061:39;;:9;:24;23071:13;23061:24;;;;;;;;;;;:30;;;;;;;;;;;;:39;;;23053:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23203:15;23155:9;:24;23165:13;23155:24;;;;;;;;;;;:45;;;:63;23147:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23310:4;23277:9;:24;23287:13;23277:24;;;;;;;;;;;:30;;;:37;;;;;;;;;;;;;;;;;;23340:57;23357:9;:24;23367:13;23357:24;;;;;;;;;;;:39;;;23340:12;;:16;;:57;;;;:::i;:::-;23325:12;:72;;;;23432:66;23458:9;:24;23468:13;23458:24;;;;;;;;;;;:39;;;23432:9;:21;23450:1;23432:21;;;;;;;;;;;;;;;;:25;;:66;;;;:::i;:::-;23408:9;:21;23426:1;23408:21;;;;;;;;;;;;;;;:90;;;;23535:68;23563:9;:24;23573:13;23563:24;;;;;;;;;;;:39;;;23535:9;:23;23545:12;:10;:12::i;:::-;23535:23;;;;;;;;;;;;;;;;:27;;:68;;;;:::i;:::-;23509:9;:23;23519:12;:10;:12::i;:::-;23509:23;;;;;;;;;;;;;;;:94;;;;23667:12;:10;:12::i;:::-;23619:125;;23650:1;23619:125;;;23694:9;:24;23704:13;23694:24;;;;;;;;;;;:39;;;23619:125;;;;;;;;;;;;;;;;;;23807:9;:24;23817:13;23807:24;;;;;;;;;;;:39;;;23780:12;:10;:12::i;:::-;23760:97;;;;;;;;;;;;23875:4;23868:11;;22838:1049;;;:::o;7410:37::-;;;;;;;;;;;;;;;;;;;:::o;8152:44::-;8186:10;8152:44;:::o;28409:180::-;28469:15;28521:8;;;;;;;;;;;28505:24;;:12;:10;:12::i;:::-;:24;;;28497:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28565:9;:16;28575:5;28565:16;;;;;;;;;;;;;;;;28558:23;;28409:180;;;:::o;7829:54::-;7881:2;7829:54;:::o;13681:261::-;13766:4;13783:129;13792:12;:10;:12::i;:::-;13806:7;13815:96;13854:15;13815:96;;;;;;;;;;;;;;;;;:11;:25;13827:12;:10;:12::i;:::-;13815:25;;;;;;;;;;;;;;;:34;13841:7;13815:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;13783:8;:129::i;:::-;13930:4;13923:11;;13681:261;;;;:::o;10978:158::-;11047:4;11064:42;11074:12;:10;:12::i;:::-;11088:9;11099:6;11064:9;:42::i;:::-;11124:4;11117:11;;10978:158;;;;:::o;8590:19::-;;;;;;;;;;;;;:::o;30410:134::-;30473:7;30500:9;:14;30510:3;30500:14;;;;;;;;;;;:35;;;30492:44;;30410:134;;;:::o;31118:575::-;31197:12;31244;;31230:11;:26;31222:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31299:24;31326:34;8186:10;31326:9;:21;31344:1;31326:21;;;;;;;;;;;;;;;;:25;;:34;;;;:::i;:::-;31299:61;;31371:29;31403:34;31424:12;;31403:16;:20;;:34;;;;:::i;:::-;31371:66;;31448:28;31479:54;7760:2;31480:34;31492:21;8186:10;31480:11;;:34;;;;:::i;:::-;31479:40;;:54;;;;:::i;:::-;31448:85;;31544:28;31575:59;31619:14;31576:37;31601:11;31576:20;:24;;:37;;;;:::i;:::-;31575:43;;:59;;;;:::i;:::-;31544:90;;31653:31;31678:5;31653:20;:24;;:31;;;;:::i;:::-;31645:40;;;;;;31118:575;;;;:::o;28595:792::-;28679:24;28714:23;28748:26;28785:27;28823:29;28863:11;28885;28935:16;:34;28952:16;28935:34;;;;;;;;;;;:51;;;;;;;;;;;;29001:16;:34;29018:16;29001:34;;;;;;;;;;;:50;;;29066:16;:34;29083:16;29066:34;;;;;;;;;;;:53;;;29134:16;:34;29151:16;29134:34;;;;;;;;;;;:54;;;29203:16;:34;29220:16;29203:34;;;;;;;;;;;:56;;;29274:16;:34;29291:16;29274:34;;;;;;;;;;;:38;;;29327:16;:34;29344:16;29327:34;;;;;;;;;;;:41;;;;;;;;;;;;28914:465;;;;;;;;;;;;;;28595:792;;;;;;;;;:::o;12262:134::-;12334:7;12361:11;:18;12373:5;12361:18;;;;;;;;;;;;;;;:27;12380:7;12361:27;;;;;;;;;;;;;;;;12354:34;;12262:134;;;;:::o;29551:156::-;29632:4;29657:16;:34;29674:16;29657:34;;;;;;;;;;;:41;;;;;;;;;;;;29649:50;;29551:156;;;:::o;7636:32::-;;;;:::o;30286:118::-;30351:4;30375:9;:14;30385:3;30375:14;;;;;;;;;;;:20;;;;;;;;;;;;30367:29;;30286:118;;;:::o;7586:43::-;;;;:::o;29894:202::-;29973:7;8244:5;30018:16;:34;30035:16;30018:34;;;;;;;;;;;:54;;;30000:15;:72;29999:89;;;;;;29992:96;;29894:202;;;:::o;25469:2050::-;25543:12;25631;:10;:12::i;:::-;25576:67;;:16;:34;25593:16;25576:34;;;;;;;;;;;:51;;;;;;;;;;;;:67;;;25568:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25754:5;25709:50;;:16;:34;25726:16;25709:34;;;;;;;;;;;:41;;;;;;;;;;;;:50;;;25701:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25944:15;25816:125;25901:16;:34;25918:16;25901:34;;;;;;;;;;;:38;;;8244:5;25886:53;25816:16;:34;25833:16;25816:34;;;;;;;;;;;:54;;;:58;;:125;;;;:::i;:::-;:143;25808:208;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26076:3;26035:16;:34;26052:16;26035:34;;;;;;;;;;;:38;;;:44;26027:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26128:19;26150:1;26128:23;;26162:24;8244:5;26208:16;:34;26225:16;26208:34;;;;;;;;;;;:54;;;26190:15;:72;26189:89;;;;;;26162:116;;8463:3;26292:16;:29;26289:231;;;26381:4;26337:16;:34;26354:16;26337:34;;;;;;;;;;;:41;;;:48;;;;;;;;;;;;;;;;;;8463:3;26400:29;;26458:16;:34;26475:16;26458:34;;;;;;;;;;;:50;;;26444:64;;26289:231;26530:21;26615:1;26574:16;:34;26591:16;26574:34;;;;;;;;;;;:38;;;:42;26554:16;:63;26530:87;;26628:28;26715:16;26659;:34;26676:16;26659:34;;;;;;;;;;;:53;;;:72;26628:103;;26783:23;26804:1;26783:16;:20;;:23;;;;:::i;:::-;26742:16;:34;26759:16;26742:34;;;;;;;;;;;:38;;:64;;;;26831:40;26847:23;26831:11;:15;;:40;;;;:::i;:::-;26817:54;;26899:1;26885:11;:15;26882:630;;;26931:29;26948:11;26931:12;;:16;;:29;;;;:::i;:::-;26916:12;:44;;;;26999:38;27025:11;26999:9;:21;27017:1;26999:21;;;;;;;;;;;;;;;;:25;;:38;;;;:::i;:::-;26975:9;:21;26993:1;26975:21;;;;;;;;;;;;;;;:62;;;;27078:40;27106:11;27078:9;:23;27088:12;:10;:12::i;:::-;27078:23;;;;;;;;;;;;;;;;:27;;:40;;;;:::i;:::-;27052:9;:23;27062:12;:10;:12::i;:::-;27052:23;;;;;;;;;;;;;;;:66;;;;27194:12;:10;:12::i;:::-;27138:113;;27173:1;27138:113;;;27225:11;27138:113;;;;;;;;;;;;;;;;;;27333:11;27302:12;:10;:12::i;:::-;27271:88;;;;;;;;;;;;27381:4;27374:11;;;;;;;;26882:630;27426:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25469:2050;;;;:::o;4219:132::-;4277:7;4304:39;4308:1;4311;4304:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4297:46;;4219:132;;;;:::o;2837:192::-;2923:7;2956:1;2951;:6;;2959:12;2943:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2943:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2983:9;2999:1;2995;:5;2983:17;;3020:1;3013:8;;;2837:192;;;;;:::o;15333:335::-;15443:1;15426:19;;:5;:19;;;;15418:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15524:1;15505:21;;:7;:21;;;;15497:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15608:5;15578:11;:18;15590:5;15578:18;;;;;;;;;;;;;;;:27;15597:7;15578:27;;;;;;;;;;;;;;;:35;;;;15645:7;15629:31;;15638:5;15629:31;;;15654:5;15629:31;;;;;;;;;;;;;;;;;;15333:335;;;:::o;14427:471::-;14543:1;14525:20;;:6;:20;;;;14517:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14627:1;14606:23;;:9;:23;;;;14598:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14702;14724:6;14702:71;;;;;;;;;;;;;;;;;:9;:17;14712:6;14702:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;14682:9;:17;14692:6;14682:17;;;;;;;;;;;;;;;:91;;;;14807:32;14832:6;14807:9;:20;14817:9;14807:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14784:9;:20;14794:9;14784:20;;;;;;;;;;;;;;;:55;;;;14872:9;14855:35;;14864:6;14855:35;;;14883:6;14855:35;;;;;;;;;;;;;;;;;;14427:471;;;:::o;16176:348::-;16271:1;16252:21;;:7;:21;;;;16244:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16345:68;16368:6;16345:68;;;;;;;;;;;;;;;;;:9;:18;16355:7;16345:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;16324:9;:18;16334:7;16324:18;;;;;;;;;;;;;;;:89;;;;16439:24;16456:6;16439:12;;:16;;:24;;;;:::i;:::-;16424:12;:39;;;;16505:1;16479:37;;16488:7;16479:37;;;16509:6;16479:37;;;;;;;;;;;;;;;;;;16176:348;;:::o;5641:130::-;5699:7;5726:37;5730:1;5733;5726:37;;;;;;;;;;;;;;;;;:3;:37::i;:::-;5719:44;;5641:130;;;;:::o;4839:345::-;4925:7;5024:1;5020;:5;5027:12;5012:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5012:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5051:9;5067:1;5063;:5;;;;;;5051:17;;5175:1;5168:8;;;4839:345;;;;;:::o;6248:166::-;6334:7;6367:1;6362;:6;;6370:12;6354:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6354:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6405:1;6401;:5;;;;;;6394:12;;6248:166;;;;;:::o;6421:26575::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;58:1049::-;147:7;182:4;172:6;:14;169:137;;;252:4;247:10;;274:4;269:10;;281:7;295:4;290:10;;230:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;230:71:0;;;220:82;;;;;;211:93;;188:118;;;;169:137;332:4;322:6;:14;319:146;;402:4;397:10;;424:4;419:10;;431:7;451:6;440:19;;380:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;380:80:0;;;370:91;;;;;;361:102;;338:127;;;;319:146;491:4;481:6;:14;478:152;;561:4;556:10;;583:4;578:10;;590:7;604:4;599:10;;617:6;539:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;539:86:0;;;529:97;;;;;;520:108;;497:133;;;;478:152;656:6;646;:16;643:155;;728:4;723:10;;750:4;745:10;;757:7;771:4;766:10;;785:6;706:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;706:87:0;;;696:98;;;;;;687:109;;664:134;;;;643:155;824:8;814:6;:18;811:157;;898:4;893:10;;920:4;915:10;;927:7;941:4;936:10;;955:6;876:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;876:87:0;;;866:98;;;;;;857:109;;834:134;;;;811:157;1039:4;1034:10;;1051:4;1046:10;;1058:7;1072:4;1067:10;;1086:6;1017:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1017:77:0;;;1007:88;;;;;;998:99;;975:124;;58:1049;;;;;:::o

Swarm Source

bzzr://383338b062b55e702bc5bcdef169f2a945abaedb96d288d88ad22d5c1d70ba79
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.