Contract 0xefa645af8ed503ac944c38965729454341917b9c

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xcbfae3168bed941b6b8ef2e4837ec9d2e3094b3343149078b9bc47e1bde85276Proto Fees Token201438742022-09-22 17:30:0271 days 11 hrs ago0xd4df4d5c3a3afb6c0e65478c080f952b9a67eb38 IN  0xefa645af8ed503ac944c38965729454341917b9c0 AVAX0.003146702 26
0x7888e19f858c0a25d94b7a076b6610764f53094b58aac2722211056e0c13e8f1Updatefee Manage...200165362022-09-19 0:57:1875 days 4 hrs ago0xd4df4d5c3a3afb6c0e65478c080f952b9a67eb38 IN  0xefa645af8ed503ac944c38965729454341917b9c0 AVAX0.000754702 26
0x8fd0e522e3ac916becd628fdcea29d4765a31cd2da4c097f9b820125308476e60x60806040200151132022-09-18 23:55:5475 days 5 hrs ago0xd4df4d5c3a3afb6c0e65478c080f952b9a67eb38 IN  Create: NeFiProtoStarDrops0 AVAX0.099198425
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NeFiProtoStarDrops

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2022-09-18
*/

/**
 *Submitted for verification at testnet.snowtrace.io on 2022-09-15
*/

/**
 *Submitted for verification at snowtrace.io on 2022-09-14
*/

/**
 *Submitted for verification at testnet.snowtrace.io on 2022-09-13
*/

/**
 *Submitted for verification at snowtrace.io on 2022-09-04
*/

/**
 *Submitted for verification at snowtrace.io on 2022-08-30
*/

/**
 *Submitted for verification at snowtrace.io on 2022-08-30
*/

//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor() {
        _transferOwnership(_msgSender());
    }
    
    function owner() public view virtual returns (address) {
        return _owner;
    }
    
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
library NeFiLib {
	using SafeMath for uint256;
		
		function addressInList(address[] memory _list, address _account) internal pure returns (bool){
			for(uint i=0;i<_list.length;i++){
				if(_account == _list[i]){
					return true;
				}
			}
			return false;
		}
		
		function isInList(address[] memory _list, address _account) internal pure returns (uint256){
			for(uint i=0;i<_list.length;i++){
				if(_account == _list[i]){
					return i;
				}
			}
		}
		function safeDiv(uint256 _x,uint256 _y) internal view returns(uint256){
			uint256 Zero = 0;
			if(_y == Zero || _x == Zero || _x > _y){
				return (Zero);
			}
			uint i;
			while(_y >_x){
				i++;
				_y -= _x;
				
			}
			return i;
		}
		
		function getAllMultiple(uint256 _x,uint256 _y)internal pure returns(uint256,uint256){
			uint256 Zero = 0;
			if (_y == Zero || _x == Zero || _x > _y){
				return (Zero,_y);
			}
			uint256 z = _y;
			uint256 i = 0;
			while(z >= _x){
				i++;
				z -=_x;
							
			}
			return (i,z);
		}
		function getRemainder(uint256 _x,uint256 _y)internal pure returns(uint256){
			(uint256 mult,uint256 rem) =  getAllMultiple(_x,_y);
			return rem;
		}
		function getMultiple(uint256 _x,uint256 _y)internal pure returns(uint256){
			(uint256 mult,uint256 rem) = getAllMultiple(_x,_y);
			return mult;
		}
		function doMultiple(uint256 _x,uint256 _y)internal pure returns(uint256){
			uint256 Zero = 0;
			if (_y == Zero || _x == Zero || _x > _y){
				return Zero;
			}
			uint256 _z = _y;
			uint256 One = 1;
			while(_x > One){
				_z += _y;
				_x.sub(One); 		
			}
			return _z;
		}
		function doAllMultiple(uint256 _x,uint256 _y,uint256 _z) internal pure returns(uint256,uint256,uint256,uint256){
		//doAllMultiple(uint256 _x,uint256 _y,uint256 _z) (MAXinterval,total,fee)
			uint256 Zero = 0;
			if (_y == Zero || _x == Zero || _x > _y){
				return (_x,Zero,Zero,_y);
			}
			uint256 i = 0;
			uint256 _k = _y;
			uint256 One = 1;
			uint256 _w = 0;
			while(_y > _z && _x!=0){
				i++;
				_k -= _z;
				_w += _z;
				_x-=One;	
			}
			return (_x,i,_w,_k);//(multiplierRemainder,multiplier,newtotal,remainder)
		}
		function getDecimals(uint256 _x) internal view returns(uint256){
				uint256 i;
			while(_x >0){
				_x = _x/(10);
				i++;
			}
			return i;
		}
		function safeMuls(uint256 _x,uint256 _y) internal view returns (uint256){
			uint256 dec1 = getDecimals(_x);
			uint256 dec2 = getDecimals(_y);
			if(dec1 > dec2){
				return (_x*_y)/(10**dec1);
			}
			return (_x*_y)/(10**dec2);
		}
		function findInList(address[] memory _ls,address _account) internal pure returns(uint){
			for(uint i = 0;i<_ls.length;i++){
				if(_ls[i] == _account){
					return i;
				}
			}
		}
		function isLower(uint256 _x,uint256 _y) internal pure returns(bool){
			if(_x<_y){
				return true;
			}
			return false;
		}
		function isHigher(uint256 _x,uint256 _y) internal pure returns(bool){
			if(_x>_y){
				return true;
			}
			return false;
		}
		function isEqual(uint256 _x,uint256 _y) internal pure returns(bool){
			if(isLower(_x,_y)==false && isHigher(_x,_y) ==false){
				return true;
			}
			return false;
		}
		function getLower(uint256 _x,uint256 _y) internal pure returns(uint256){
			if(isEqual(_x,_y)==true || isLower(_x,_y) == true){
				return _x;
			}
			return _y;
		}
		function getHigher(uint256 _x,uint256 _y) internal pure returns(uint256){
			if(isEqual(_x,_y)==true || isHigher(_x,_y) == true){
				return _x;
			}
			return _y;
		}
}
pragma solidity ^0.8.0;
/**
 * @dev Collection of functions related to the address type
 */
library Address {
    
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
    
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
// File: @openzeppelin/contracts/utils/Address.sol
// OpenZeppelin Contracts v4.4.1 (utils/Address.sol)
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
interface IERC20 {
    
    function totalSupply() external view returns (uint256);
    
    function balanceOf(address account) external view returns (uint256);
    
    function transfer(address recipient, uint256 amount) external returns (bool);
    
    function allowance(address owner, address spender) external view returns (uint256);
    
    function approve(address spender, uint256 amount) external returns (bool);
    
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.0;
library SafeERC20 {
    using Address for address;
    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }
    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }
    
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }
    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }
    
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            // Return data is optional
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}
// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
interface IERC20Metadata is IERC20 {
    
    function name() external view returns (string memory);
    
    function symbol() external view returns (string memory);
    
    function decimals() external view returns (uint8);
}
// File: @openzeppelin/contracts/token/ERC20/ERC20.sol
// OpenZeppelin Contracts v4.4.1 (token/ERC20/ERC20.sol)
pragma solidity ^0.8.0;
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
    
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }
        return true;
    }
    
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }
        return true;
    }
    
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(sender, recipient, amount);
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        _afterTokenTransfer(sender, recipient, amount);
    }
    
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }
    
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }
    
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract nebulaMath is Context {
	function EXTisInList(address[] memory _list, address _account) external virtual view returns (uint256);
	function EXTgetDecimals(uint256 _x) external virtual view returns (uint256);
	function EXTelimZero(uint256 _y) external virtual view returns(uint256);
	function EXTdecPercentage(uint256 _x,uint256 perc) external virtual view returns(uint,uint256,uint256);
	function EXTsafeDiv(uint256 _x,uint256 _y) external virtual view returns(uint256,uint256);
	function EXTgetAllMultiple(uint256 _x,uint256 _y)external virtual view returns (uint256,uint256);
	function EXTgetRemainder(uint256 _x,uint256 _y)external virtual view returns(uint256);
	function EXTgetMultiple(uint256 _x,uint256 _y)external virtual view returns (uint256);
	function EXTdoMultiple(uint256 _x,uint256 _y)external virtual view returns (uint256);
	function EXTdoAllMultiple2(uint256 _x,uint256 x_2,uint256 _y,uint256 _z) external virtual view returns (uint256,uint256,uint256);
	function EXTdoAllMultiple(uint256 _x,uint256 _y,uint256 _z) external virtual view returns (uint256,uint256,uint256,uint256);
	function EXTsafeMuls(uint256 _x,uint256 _y)external virtual view returns (uint256);
	function EXTfindInList(address[] memory _ls,address _account)external virtual view returns (uint);
	function EXTisLower(uint256 _x,uint256 _y)external virtual view returns (bool);
	function EXTisHigher(uint256 _x,uint256 _y)external virtual view returns (bool);
	function EXTisEqual(uint256 _x,uint256 _y)external virtual view returns (bool);
	function EXTgetLower(uint256 _x,uint256 _y)external virtual view returns (uint256);
	function EXTgetHigher(uint256 _x,uint256 _y)external virtual view returns (uint256);
}
abstract contract feeManager is Context {
    function isInsolvent(address _account,string memory _name) external virtual view returns(bool);
    function simpleQuery(address _account) external virtual returns(uint256);
    function createProtos(address _account,string memory _name) external virtual;
    function collapseProto(address _account,string memory _name) external virtual;
    function payFee(uint256 _intervals,address _account) payable virtual external;
    function changeName(string memory _name,string memory new_name) external virtual;
    function getTotalfees(address _account) external virtual returns(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256);
    function MGRrecPayFees(address _account,uint256 _intervals,uint256 _x) virtual  external;
    function addProto(address _account,string memory _name)  virtual external;
    function getPeriodInfo() external  virtual returns (uint256,uint256,uint256);
    function getAccountsLength() external virtual view returns(uint256);
    function getFeesPaid(address _account) external virtual view returns(uint256);
    function accountExists(address _account) external virtual view returns (bool);
    function recieverFeeTok(address _account,uint256 _amount) virtual payable external;
    function recieverAvax(address _account,uint256 _amount) virtual payable external;
    function updateRefund(address _account,uint256 _amount,bool _bool,bool _isAvax) virtual  external;
    function EXTnameExists(address _account, string memory _name) external virtual view returns(bool);
    function getProtoTotalPayable(address _account,uint256 _x) external virtual view returns(uint256);
    function getTotalPayable(address _account) external virtual view returns(uint256);
    function payFeeToken(address _account, uint256 _intervals, uint256 _x,uint256 _amount) payable virtual external;
    function payFeeAvax(address _account,uint256 _intervals, uint256 _x) payable virtual external;
   }

abstract contract ProtoManager is Context {
    function addProto(address _account, string memory _name) external virtual;
    function getProtoAccountsLength() external virtual view returns(uint256);
    function getProtoAddress(uint256 _x) external virtual view returns(address);
    function getProtoStarsLength(address _account) external virtual view returns(uint256);
}
abstract contract dropMGR is Context {
	struct DROPS{
	uint256 amount;
	}
	mapping(address => DROPS) public airdrop;
	address[] public protoOwners;
}
abstract contract overseer is Context {
	 function getMultiplier(uint256 _x) external virtual returns(uint256);
	 function getBoostPerMin(uint256 _x) external virtual view returns(uint256);
	 function getRewardsPerMin() external virtual view returns (uint256);
	 function getCashoutRed(uint256 _x) external virtual view returns (uint256);
	 function getNftTimes(address _account, uint256 _id,uint256 _x) external virtual view returns(uint256);
	 function isStaked(address _account) internal virtual returns(bool);
	 function getNftAmount(address _account, uint256 _id) external view virtual returns(uint256);
	 function getFee() external virtual view returns(uint256);
	 function getModFee(uint256 _val) external virtual view returns(uint256);
	 function getNftPrice(uint _val) external virtual view returns(uint256);
	 function getEm() external virtual view returns (uint256);  
} 
contract NeFiProtoStarDrops is Ownable{
	using SafeMath for uint256;
	struct DROPS{
		uint256 dropped;
		uint256 claimed;
		uint256 transfered;
		uint256 fees;
		uint256 remaining;
	}
	struct TRANSFERS{
		uint256 totalProtos;
		uint256 totalFees;
		uint256 transfered;
		uint256 totalClaims;
		uint256 totalDrops;
	}
	
	mapping(address => DROPS) public airdrop;
	mapping(address => TRANSFERS) public transfers;
	address[] public Managers;
	address[] public protoOwners;
	address[] public transfered; 
	address payable treasury;
	uint256 gracePeriod = 5 days;
	uint256 feePeriod = 31 days;
	uint256 protoLife = 500 days;
	uint256 maxPayPeriods = 12;
	uint256 maxFeePayment = 365 days;
	bool avaxOff = false;
        bool tokOff = false;
        uint256 Zero = uint256(0);
        bool feeMGRpayOff = false;
	uint256 public tokFee = 15*(10**6);
	address oldDrop;
	address Guard;
	ProtoManager public protoMGR;
	feeManager public feeMGR;
	overseer public over;
	IERC20 public feeTok;
	
	modifier managerOnly() {require(NeFiLib.addressInList(Managers,msg.sender)== true); _;}
	constructor(address[] memory addresses){
		feeMGR = feeManager(addresses[0]);
		over = overseer(addresses[1]);
		feeTok = IERC20(addresses[2]);
		treasury = payable(address(owner()));
		Managers.push(owner());


	}
	//toFeeMGR------------------------------------------------------------------------------------------------------------------
	//SpecFeesToken;
	function sendFeeTokenSpec(uint256 _intervals, uint256 _x) payable external{
		require(feeMGRpayOff == false, "sorry feeMGR pay is off currently");
		require(tokOff == false, "sorry Token Payments are currently disabled, please use AVAX");
		(address _account,uint256 needed, uint256 balanceRemainder,uint256 _intervals) = getVars(msg.sender,_intervals);
		(needed,_intervals) = checkAllowance(_account,checkIntervalsSpec(_account,_intervals,_x));
	        feeMGR.payFeeToken(_account,_intervals,_x,needed);
		if(msg.value > 0){
			payable(_account).transfer(msg.value);
		}
	}
    	//SpecFeesAvax
    	function payFeeAvaxSpec(uint256 _intervals,uint256 _x) payable external{
    		require(feeMGRpayOff == false, "sorry feeMGR pay if off currently");
    		require(avaxOff == false, "sorry AVAX Payments are currently disabled, please use USDC");
    		(address _account,uint256 needed, uint256 balanceRemainder,uint256 _intervals) = getVars(msg.sender,_intervals);
		(balanceRemainder,needed,_intervals) = checkAvaxSent(msg.value,checkIntervalsSpec(_account,_intervals,_x));
    		feeMGR.payFeeAvax{ value: needed }(_account,_intervals,_x);
    		if(balanceRemainder > 0){
			payable(_account).transfer(balanceRemainder);
		}
    	}
    	//FeesToken
	function sendFeeToken(uint256 _intervals) payable external {
    		require(feeMGRpayOff == false, "sorry feeMGR pay if off currently");
    		require(tokOff == false, "sorry Token Payments are currently disabled, please use AVAX");
		(address _account,uint256 needed, uint256 balanceRemainder,uint256 _intervals) = getVars(msg.sender,_intervals);
		(needed,_intervals) = checkAllowance(_account,checkIntervals(_account,_intervals));
	        feeMGR.payFeeToken(_account,_intervals,101,needed);
    		if(msg.value > 0){
			payable(_account).transfer(msg.value);
		}
    	}
	//FeesAvax
    	function sendFeeAvax(uint256 _intervals) payable external{
 		require(avaxOff == false, "sorry AVAX Payments are currently disabled, please use USDC");
 		require(avaxOff == false, "sorry AVAX Payments are currently disabled, please use USDC");
		(address _account,uint256 needed, uint256 balanceRemainder,uint256 _intervals) = getVars(msg.sender,_intervals);
		(balanceRemainder,needed,_intervals) = checkAvaxSent(msg.value,checkIntervals(_account,_intervals));
    		feeMGR.payFeeAvax{ value: needed }(_account,_intervals,101);
    		if(balanceRemainder > 0){
			payable(_account).transfer(balanceRemainder);
		}
    	}
    	//InHouse------------------------------------------------------------------------------------------------------------------
	//SpecFeesToken
	function protoFeesTokenSpec(uint256 _intervals,uint256 _x) payable external{
		require(tokOff == false, "sorry Token Payments are currently disabled, please use Avax");
		(address _account,uint256 needed, uint256 balanceRemainder,uint256 _intervals) = getVars(msg.sender,_intervals);
		(needed,_intervals) = checkAllowance(_account,checkIntervalsSpec(_account,_intervals,_x));
	    	feeMGR.MGRrecPayFees(_account,_intervals,_x);
	        feeTok.transferFrom(_account, treasury, needed);
	        if(msg.value > 0){
			payable(_account).transfer(msg.value);
		}
	}
	//FeesAvaxSpec
	function protoFeesAvaxSpec(uint256 _intervals,uint256 _x) payable external{
		require(avaxOff == false, "sorry AVAX Payments are currently disabled, please use USDC");
		(address _account,uint256 needed, uint256 balanceRemainder,uint256 _intervals) = getVars(msg.sender,_intervals);
		(balanceRemainder,needed,_intervals) = checkAvaxSent(msg.value,checkIntervalsSpec(_account,_intervals,_x));
	        feeMGR.MGRrecPayFees(_account,_intervals,_x);
	        treasury.transfer(needed);
	        if(balanceRemainder > 0){
			payable(_account).transfer(balanceRemainder);
		}
	}
	//FeesToken
	function protoFeesToken(uint256 _intervals) payable external{
		require(tokOff == false, "sorry Token Payments are currently disabled, please use AVAX");
		(address _account,uint256 needed, uint256 balanceRemainder,uint256 _intervals) = getVars(msg.sender,_intervals);
		(needed,_intervals) = checkAllowance(_account,checkIntervals(_account,_intervals));
		feeMGR.MGRrecPayFees(_account,_intervals,101);
	        feeTok.transferFrom(_account, treasury, needed);
	        if(msg.value > 0){
			payable(_account).transfer(msg.value);
		}
	}
	//FeesAvax
	function protoFeesAvax(uint256 _intervals) payable external{
		require(avaxOff == false, "sorry AVAX Payments are currently disabled, please use USDC");
		(address _account,uint256 needed, uint256 balanceRemainder,uint256 _intervals) = getVars(msg.sender,_intervals);
		(balanceRemainder,needed,_intervals) = checkAvaxSent(msg.value,checkIntervals(_account,_intervals));
		feeMGR.MGRrecPayFees(_account,_intervals,101);
	        treasury.transfer(needed);
	        if(balanceRemainder > 0){
			payable(_account).transfer(balanceRemainder);
		}
	}
	//ProtoClaim  ------------------------------------------------------------------------------------------------------------------------
	//ProtoClaimToken
    	function createProtoFeeTok(string memory _name) payable external{
    		require(tokOff == false, "sorry Token Payments are currently disabled, please use AVAX");
    		(address _account,uint256 needed, uint256 balanceRemainder,uint256 _intervals) = getVars(msg.sender,1);
		(needed,_intervals) = checkAllowance(_account,_intervals);
		checkProtoCreate(_account,_name);
	        feeTok.transferFrom(_account, treasury, needed);
	        if(msg.value > 0){
			payable(_account).transfer(msg.value);
		}
	}
	//ProtoClaimAvax
	function createProtoAvax(string memory _name) payable external {
		require(avaxOff == false, "sorry AVAX Payments are currently disabled, please use USDC");
		(address _account,uint256 needed, uint256 balanceRemainder,uint256 _intervals) = getVars(msg.sender,1);
		(balanceRemainder,needed,_intervals) = checkAvaxSent(msg.value,_intervals);
		checkProtoCreate(_account,_name);
		payable(treasury).transfer(needed);
		if(balanceRemainder > 0){
			payable(_account).transfer(balanceRemainder);
		}
	}
	//functions --------------------------------------------------------------------------------------------------
	function getVars(address _account,uint256 _intervals) public returns(address,uint256,uint256,uint256){
		return (_account,Zero,Zero,_intervals);
	}
	function checkIntervalsSpec(address _account,uint256 _intervals,uint256 _x) public returns(uint256){
		getInList(_account);
		if(getFeesPaid(_account)>0){
			uint256 payables = getTotalPayableSpec(_account,_x);
			require(payables >0,"you have no more fees to pay for this Proto");
			if(_intervals>payables){
				_intervals = payables;
			}
		}
		return _intervals;
	}
	function checkIntervals(address _account,uint256 _intervals) public returns(uint256){
		getInList(_account);
		if(getFeesPaid(_account)>0){
			uint256 payables = getTotalPayable(_account);
			require(payables >0,"you have no more fees to pay for this Proto");
			if(_intervals>payables){
				_intervals = payables;
			}
		}
		return _intervals;
	}
	function checkAvaxSent(uint256 _sent,uint256 _intervals) public returns(uint256,uint256,uint256){
		require(_intervals >0, "Doesnt Look Like you opted to pay any fees at this time");
		uint256 _needed = uint256(over.getFee()).mul(_intervals);
		require(_sent >= _needed, "Doesnt Look Like you sent enough to pay the fees at this time");
		uint256 _balanceRemainder = _sent.sub(_needed);
		return (_balanceRemainder,_needed,_intervals);
	}
	function checkProtoCreate(address _account,string memory _name) internal {
		require(getDropped(_account)>0,"you dont have any protos dropped to your account");
		require(getRemaining(_account)>0,"you have already claimed all of your protos");
		require(feeMGR.EXTnameExists(_account,_name)==false,"you have already used that name, please choose another");
		require(bytes(_name).length>3 ,"name is too small, under 32 characters but more than 3 please");
		require(bytes(_name).length<32 ,"name is too big, over 3 characters but under than 32 please");
		feeMGR.addProto(_account,_name);
		updateClaimed(_account);
	}
	function checkAllowance(address _account,uint256 _intervals) public returns (uint256,uint256) {
		require(_intervals >0, "Doesnt Look Like you opted to pay any fees at this time");
		uint256 _needed = tokFee.mul(_intervals);
		require(_needed <= feeTok.allowance(_account, address(this)), "Check the token allowance");
		require(_needed <= feeTok.allowance(_account, treasury), "Check the token allowance");
		require(_needed <= feeTok.balanceOf(_account), "you do not hold enough to pay the fees");
		return (_needed,_intervals);
	}
	function isFreeClaim(address _account) internal returns(bool){
		if(getClaimed(_account)<getFeesPaid(_account)){
			return true;
		}
		return false;
	}
	function getInList(address _account) internal{
		if(NeFiLib.addressInList(protoOwners,_account) ==false){
			protoOwners.push(_account);
		}
	}
	function getTotalPayableSpec(address _account,uint256 _x) internal returns(uint256){
		return feeMGR.getProtoTotalPayable(_account,_x);
	}
	function getTotalPayable(address _account) internal returns(uint256){
		return feeMGR.getTotalPayable(_account);
	}
	function getFeesPaid(address _account) internal returns(uint256){
		airdrop[_account].fees = feeMGR.getFeesPaid(_account);	
		return airdrop[_account].fees;
	}

	function getDropped(address _account) internal returns(uint256){
		return airdrop[_account].dropped;
	}
	function getClaimed(address _account) internal returns(uint256){
		return airdrop[_account].claimed;
	}
	function getRemaining(address _account) internal returns(uint256){
		airdrop[_account].remaining = airdrop[_account].dropped - airdrop[_account].claimed;
		return airdrop[_account].remaining;
	}
	function updateDropped(address _account) internal returns(uint256){
		airdrop[_account].transfered;
	}
	function updateClaimed(address _account) internal{
		airdrop[_account].claimed +=1;
	}
	function EXTgetdropped(address _account) external returns(uint256){
		return airdrop[_account].transfered;
	}
	function EXTgetClaimed(address _account) external returns(uint256){
		return airdrop[_account].claimed;
	}
	function EXTgetRemaining(address _account) external returns(uint256){
		airdrop[_account].remaining = airdrop[_account].dropped - airdrop[_account].claimed;
		return airdrop[_account].remaining;
	}
	function EXTupdateDropped(address _account) external  returns(uint256)  {
		airdrop[_account].transfered +=1;
	}
	function EXTupdateClaimed(address _account) external  returns(uint256) {
		airdrop[_account].claimed +=1;
	}
	function addAirDrops(address[] memory _accounts,uint256[] memory _amounts,bool _neg,bool subTrans) external managerOnly() {
		for(uint i=0;i<_accounts.length;i++){
			DROPS storage drop = airdrop[_accounts[i]];
			if(_neg == false){
				drop.dropped += _amounts[i];
			}else{
				if(drop.dropped != 0){
						drop.dropped -= _amounts[i];
				}
			}
			if(subTrans==true){
				drop.dropped -= drop.transfered;
			}
		}
		
	}
	function createForAllFees(address[] memory adds,uint256[] memory strucNum) external onlyOwner{
		for(uint i=0;i<adds.length;i++){
			airdrop[adds[i]].fees = strucNum[i];
			feeMGR.MGRrecPayFees(adds[i],strucNum[i],101);
			
		}
	}
	function createForAllclaimed(address[] memory adds,uint256[] memory strucNum) external  onlyOwner{
		for(uint i=0;i<adds.length;i++){
			airdrop[adds[i]].claimed = strucNum[i];
		}
	}
	function createForAlltransfered(address[] memory adds,uint256[] memory strucNum) external onlyOwner{
		for(uint i=0;i<adds.length;i++){
			airdrop[adds[i]].transfered =strucNum[i];
		}
	}
	function createForAlldropped (address[] memory adds,uint256[] memory strucNum) external onlyOwner{
		for(uint i=0;i<adds.length;i++){
			airdrop[adds[i]].dropped = strucNum[i];
		}
	}
	function createForAlladd(address[] memory adds,string[] memory names) external  onlyOwner{
		for(uint i=0;i<adds.length;i++){
			feeMGR.addProto(adds[i],names[i]);
			updateClaimed(adds[i]);
		}	
	}
	function justDropped (address[] memory _accounts,uint256[] memory _x) internal  {
		address _account;
		uint j = 0;
		uint k = 0;
		for(uint j = 0;j<_accounts.length;j++){
			_account = _accounts[j];
			airdrop[_account].dropped = _x[j];
		}
	}
	function justfees (address[] memory _accounts,uint256[] memory _x) internal {
		address _account;
		uint j = 0;
		uint k = 0;
		for(uint j = 0;j<_accounts.length;j++){
			_account = _accounts[j];
			airdrop[_account].dropped = _x[j];
		}
	}
	function MGRMAkeDrops(address[] memory _accounts,uint256[] memory _x) external onlyOwner{
		INTMGRMAkeDrops(_accounts,_x);
	}
	function INTMGRMAkeDrops(address[] memory _accounts,uint256[] memory _x) internal  {
		address _account;
		uint j = 0;
		uint k = 0;
		for(uint j = 0;j<_accounts.length;j++){
			_account = _accounts[j];
			airdrop[_account].dropped = _x[k];
			k +=1;
			airdrop[_account].claimed = _x[k];
			k +=1;
			airdrop[_account].transfered =_x[k];
			k +=1;
			airdrop[_account].fees= _x[k];
		}
	}
	function MGRMathDrops(address[] memory _accounts,uint256[] memory _x,bool[] memory _maths) external onlyOwner{
		address _account;
		uint j = 0;
		uint k = 0;
		for(uint j = 0;j<_accounts.length;j++){
			_account = _accounts[j];
			if(_maths[j] == true){
				airdrop[_account].dropped += _x[k];
				k +=1;
				airdrop[_account].claimed += _x[k];
				k +=1;
				airdrop[_account].transfered +=_x[k];
				k +=1;
				airdrop[_account].fees += _x[k];
			}else{
				airdrop[_account].dropped -= _x[k];
				k +=1;
				airdrop[_account].claimed -= _x[k];
				k +=1;
				airdrop[_account].transfered -=_x[k];
				k +=1;
				airdrop[_account].fees -= _x[k];
			}
		}
		if(NeFiLib.addressInList(transfered,_account) == false){
			protoOwners.push(_account);
			transfered.push(_account);
		}
	}
	function removeManagers(address newVal) external managerOnly() {
    		if(NeFiLib.addressInList(Managers,newVal) ==true){
    			uint _i = NeFiLib.isInList(Managers,newVal);
    			uint len = Managers.length-1;
    			Managers.push();
    			for(uint i=_i;i<len;i++){
    				uint _i_ = i +1;
    				Managers[i] = Managers[_i_];
    			}
    			Managers.pop();
        	}
    	}
    	function changeFeeTokenPrice(uint256 _tokFee) external onlyOwner{
    		tokFee = _tokFee;
        }
    	function turnfeeMGRpayOff(bool _feeOff) external onlyOwner{
    		feeMGRpayOff = _feeOff;
        }
    	function turnFeeTokOff(bool _tokOff) external onlyOwner{
    		tokOff = _tokOff;
        }
    	function changeturnAvaxOff(bool _avaxOff) external onlyOwner{
    		avaxOff = _avaxOff;
        }
    	function changeTreasury(address _account) external onlyOwner{
    		treasury = payable(_account);
        }
        function changeGuard(address _account) external onlyOwner{
    		Guard = _account;
        }
	function transferOut(address payable _to,uint256 _amount) payable external  onlyOwner{
		_to.transfer(_amount);
	}
	function sendTokenOut(address _to,address _token, uint256 _amount) external onlyOwner{
		IERC20 newtok = IERC20(_token);
		feeTok.transferFrom(address(this), _to, _amount);
	}
	function transferAllOut(address payable _to,uint256 _amount) payable external onlyOwner{
		_to.transfer(address(this).balance);
	}
	function sendAllTokenOut(address payable _to,address _token) external onlyOwner{
		IERC20 newtok = IERC20(_token);
		feeTok.transferFrom(address(this), _to, feeTok.balanceOf(address(this)));
	}
	function updateManagers(address newVal) external  onlyOwner{
    		if(NeFiLib.addressInList(Managers,newVal) ==false){
        		Managers.push(newVal); //token swap address
        	}
    	}

    	
    	 function updatefeeManager(address newVal) external onlyOwner{
    		feeMGR = feeManager(newVal);
    	}
    	
	function updateFeeToken(address newVal) external onlyOwner{
    		feeTok = IERC20(newVal);
    	}
    	function updateOverseer(address newVal) external onlyOwner{
    		over = overseer(newVal);
	}
    	receive() external payable onlyOwner{
            payable(msg.sender).transfer(msg.value);
        }
        fallback() external payable {}
	
}

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"EXTgetClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"EXTgetRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"EXTgetdropped","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"EXTupdateClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"EXTupdateDropped","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"uint256[]","name":"_x","type":"uint256[]"}],"name":"MGRMAkeDrops","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"uint256[]","name":"_x","type":"uint256[]"},{"internalType":"bool[]","name":"_maths","type":"bool[]"}],"name":"MGRMathDrops","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"Managers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"},{"internalType":"bool","name":"_neg","type":"bool"},{"internalType":"bool","name":"subTrans","type":"bool"}],"name":"addAirDrops","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"airdrop","outputs":[{"internalType":"uint256","name":"dropped","type":"uint256"},{"internalType":"uint256","name":"claimed","type":"uint256"},{"internalType":"uint256","name":"transfered","type":"uint256"},{"internalType":"uint256","name":"fees","type":"uint256"},{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokFee","type":"uint256"}],"name":"changeFeeTokenPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"changeGuard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"changeTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_avaxOff","type":"bool"}],"name":"changeturnAvaxOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_intervals","type":"uint256"}],"name":"checkAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sent","type":"uint256"},{"internalType":"uint256","name":"_intervals","type":"uint256"}],"name":"checkAvaxSent","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_intervals","type":"uint256"}],"name":"checkIntervals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_intervals","type":"uint256"},{"internalType":"uint256","name":"_x","type":"uint256"}],"name":"checkIntervalsSpec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"adds","type":"address[]"},{"internalType":"uint256[]","name":"strucNum","type":"uint256[]"}],"name":"createForAllFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"adds","type":"address[]"},{"internalType":"string[]","name":"names","type":"string[]"}],"name":"createForAlladd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"adds","type":"address[]"},{"internalType":"uint256[]","name":"strucNum","type":"uint256[]"}],"name":"createForAllclaimed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"adds","type":"address[]"},{"internalType":"uint256[]","name":"strucNum","type":"uint256[]"}],"name":"createForAlldropped","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"adds","type":"address[]"},{"internalType":"uint256[]","name":"strucNum","type":"uint256[]"}],"name":"createForAlltransfered","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"createProtoAvax","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"createProtoFeeTok","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"feeMGR","outputs":[{"internalType":"contract feeManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTok","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_intervals","type":"uint256"}],"name":"getVars","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"over","outputs":[{"internalType":"contract overseer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_intervals","type":"uint256"},{"internalType":"uint256","name":"_x","type":"uint256"}],"name":"payFeeAvaxSpec","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_intervals","type":"uint256"}],"name":"protoFeesAvax","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_intervals","type":"uint256"},{"internalType":"uint256","name":"_x","type":"uint256"}],"name":"protoFeesAvaxSpec","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_intervals","type":"uint256"}],"name":"protoFeesToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_intervals","type":"uint256"},{"internalType":"uint256","name":"_x","type":"uint256"}],"name":"protoFeesTokenSpec","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"protoMGR","outputs":[{"internalType":"contract ProtoManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"protoOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newVal","type":"address"}],"name":"removeManagers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_to","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"sendAllTokenOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_intervals","type":"uint256"}],"name":"sendFeeAvax","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_intervals","type":"uint256"}],"name":"sendFeeToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_intervals","type":"uint256"},{"internalType":"uint256","name":"_x","type":"uint256"}],"name":"sendFeeTokenSpec","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sendTokenOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAllOut","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferOut","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"transfered","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"transfers","outputs":[{"internalType":"uint256","name":"totalProtos","type":"uint256"},{"internalType":"uint256","name":"totalFees","type":"uint256"},{"internalType":"uint256","name":"transfered","type":"uint256"},{"internalType":"uint256","name":"totalClaims","type":"uint256"},{"internalType":"uint256","name":"totalDrops","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_tokOff","type":"bool"}],"name":"turnFeeTokOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_feeOff","type":"bool"}],"name":"turnfeeMGRpayOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVal","type":"address"}],"name":"updateFeeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVal","type":"address"}],"name":"updateManagers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVal","type":"address"}],"name":"updateOverseer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVal","type":"address"}],"name":"updatefeeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620697806007556228de806008556302932e00600955600c600a8190556301e13380600b55805461ffff191690556000600d55600e805460ff1916905562e4e1c0600f553480156200005557600080fd5b506040516200445338038062004453833981016040819052620000789162000221565b62000083336200019e565b80600081518110620000995762000099620002f3565b6020026020010151601360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600181518110620000dd57620000dd620002f3565b6020026020010151601460006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600281518110620001215762000121620002f3565b6020908102919091010151601580546001600160a01b039283166001600160a01b03199182161790915560008054600680548416919094169081179093556003805460018101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805490911690911790555062000309565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200021c57600080fd5b919050565b600060208083850312156200023557600080fd5b82516001600160401b03808211156200024d57600080fd5b818501915085601f8301126200026257600080fd5b815181811115620002775762000277620001ee565b8060051b604051601f19603f830116810181811085821117156200029f576200029f620001ee565b604052918252848201925083810185019188831115620002be57600080fd5b938501935b82851015620002e757620002d78562000204565b84529385019392850192620002c3565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b61413a80620003196000396000f3fe60806040526004361061033f5760003560e01c8063a345dae0116101ae578063c8a2e22a116100eb578063df19f79b1161008f578063ee7d4db51161006c578063ee7d4db514610a77578063f2fde38b14610a97578063f8bf13c414610ab7578063fa044f4b14610ad757005b8063df19f79b14610a3b578063e5b369e014610a51578063ea2b10d014610a6457005b8063d490cc07116100c8578063d490cc07146109b3578063d5df9018146109d3578063dbadca11146109e6578063dd9d86f814610a0657005b8063c8a2e22a14610945578063cdfa9ae414610980578063d11895c31461099357005b8063bdff43ee11610152578063c5313e761161012f578063c5313e76146108c5578063c6232dba146108e5578063c633b48314610905578063c89245d51461092557005b8063bdff43ee1461083b578063c25993fa14610885578063c2e61068146108a557005b8063b2659b7a1161018b578063b2659b7a146107bb578063b71877ea146107db578063b9cc5231146107fb578063bc3fcabd1461081b57005b8063a345dae014610768578063a3e65b0f1461077b578063b14f2a391461079b57005b806365e778c41161027c57806376890c58116102205780637eaef50c116101fd5780637eaef50c146106ea5780638da5cb5b1461070a5780639382a990146107285780639becaaef1461074857005b806376890c581461069757806376df77e3146106aa57806379860cad146106ca57005b80636ccc8d03116102595780636ccc8d031461062f578063715018a61461064257806373f92c4f14610657578063761733461461067757005b806365e778c4146105dc578063661b4b72146105fc5780636aa089261461060f57005b80633cd7bc95116102e357806344bdd277116102c057806344bdd277146105765780634c8d13411461059657806351844bf5146105a957806353c2df5e146105c957005b80633cd7bc95146105015780633daba0d714610521578063439a851e1461055657005b8063273acc361161031c578063273acc361461047657806335cb8b6f14610489578063382d5d4c146104a95780633a98424c146104c957005b8063063f7dd1146103a557806319931415146103f257806321860a051461040557005b366103a3576000546001600160a01b031633146103775760405162461bcd60e51b815260040161036e9061377a565b60405180910390fd5b60405133903480156108fc02916000818181858888f193505050501580156103a3573d6000803e3d6000fd5b005b3480156103b157600080fd5b506103df6103c03660046137c4565b6001600160a01b03166000908152600160208190526040909120015490565b6040519081526020015b60405180910390f35b6103a3610400366004613898565b610b10565b34801561041157600080fd5b5061044e6104203660046137c4565b6001602081905260009182526040909120805491810154600282015460038301546004909301549192909185565b604080519586526020860194909452928401919091526060830152608082015260a0016103e9565b6103a36104843660046138d5565b610c30565b34801561049557600080fd5b506103a36104a43660046139ea565b610d94565b3480156104b557600080fd5b506103a36104c43660046139ea565b610e35565b3480156104d557600080fd5b506012546104e9906001600160a01b031681565b6040516001600160a01b0390911681526020016103e9565b34801561050d57600080fd5b506103a361051c366004613a5c565b610f87565b34801561052d57600080fd5b5061054161053c366004613a79565b610fcb565b604080519283526020830191909152016103e9565b34801561056257600080fd5b506015546104e9906001600160a01b031681565b34801561058257600080fd5b506103df610591366004613a79565b611256565b6103a36105a4366004613aa5565b6112b6565b3480156105b557600080fd5b506103a36105c4366004613abe565b6113ea565b6103a36105d7366004613898565b6114ee565b3480156105e857600080fd5b506103a36105f7366004613aa5565b611585565b6103a361060a366004613aa5565b6115b4565b34801561061b57600080fd5b506103a361062a3660046137c4565b6116a9565b6103a361063d366004613a79565b6118df565b34801561064e57600080fd5b506103a361193e565b34801561066357600080fd5b506103a3610672366004613b93565b611974565b34801561068357600080fd5b506103a3610692366004613bd4565b611a15565b6103a36106a5366004613a79565b611b1f565b3480156106b657600080fd5b506103df6106c53660046137c4565b611b7f565b3480156106d657600080fd5b506103a36106e53660046139ea565b611bb6565b3480156106f657600080fd5b506014546104e9906001600160a01b031681565b34801561071657600080fd5b506000546001600160a01b03166104e9565b34801561073457600080fd5b506103a3610743366004613a5c565b611bee565b34801561075457600080fd5b506103a3610763366004613c0d565b611c2b565b6103a3610776366004613aa5565b611da2565b34801561078757600080fd5b506103a36107963660046139ea565b611ec3565b3480156107a757600080fd5b506103a36107b63660046137c4565b611f6b565b3480156107c757600080fd5b506103a36107d63660046139ea565b611fb7565b3480156107e757600080fd5b506103a36107f63660046137c4565b61205f565b34801561080757600080fd5b506104e9610816366004613aa5565b6120ab565b34801561082757600080fd5b506103a36108363660046137c4565b6120d5565b34801561084757600080fd5b5061044e6108563660046137c4565b600260208190526000918252604090912080546001820154928201546003830154600490930154919392909185565b34801561089157600080fd5b506103df6108a0366004613c96565b612121565b3480156108b157600080fd5b506104e96108c0366004613aa5565b612181565b3480156108d157600080fd5b506013546104e9906001600160a01b031681565b3480156108f157600080fd5b506103df6109003660046137c4565b612191565b34801561091157600080fd5b506103df6109203660046137c4565b6121bc565b34801561093157600080fd5b506103a36109403660046137c4565b612209565b34801561095157600080fd5b506109656109603660046138d5565b612255565b604080519384526020840192909252908201526060016103e9565b6103a361098e3660046138d5565b61238c565b34801561099f57600080fd5b506103a36109ae3660046137c4565b6124ad565b3480156109bf57600080fd5b506103a36109ce3660046137c4565b6124f9565b6103a36109e1366004613aa5565b6125de565b3480156109f257600080fd5b506104e9610a01366004613aa5565b6126ff565b348015610a1257600080fd5b50610a2b610a21366004613a79565b600d549192829190565b6040516103e99493929190613ccb565b348015610a4757600080fd5b506103df600f5481565b6103a3610a5f3660046138d5565b61270f565b6103a3610a723660046138d5565b612843565b348015610a8357600080fd5b506103a3610a92366004613a5c565b612a0d565b348015610aa357600080fd5b506103a3610ab23660046137c4565b612a4a565b348015610ac357600080fd5b506103a3610ad2366004613cf1565b612ae2565b348015610ae357600080fd5b506103df610af23660046137c4565b6001600160a01b031660009081526001602052604090206002015490565b600c54610100900460ff1615610b385760405162461bcd60e51b815260040161036e90613dd8565b600080600080610b4e336001600d549192829190565b9350935093509350610b608482610fcb565b9093509050610b6f8486612f72565b6015546006546040516323b872dd60e01b81526001600160a01b03928316926323b872dd92610ba8928992909116908890600401613e35565b6020604051808303816000875af1158015610bc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610beb9190613e59565b503415610c29576040516001600160a01b038516903480156108fc02916000818181858888f19350505050158015610c27573d6000803e3d6000fd5b505b5050505050565b600e5460ff1615610c8d5760405162461bcd60e51b815260206004820152602160248201527f736f727279206665654d475220706179206973206f66662063757272656e746c6044820152607960f81b606482015260840161036e565b600c54610100900460ff1615610cb55760405162461bcd60e51b815260040161036e90613dd8565b600080600080610cca3387600d549192829190565b9350935093509350610ce18461053c868489612121565b60135460405163bd52416360e01b81529295509092506001600160a01b03169063bd52416390610d1b90879085908a908990600401613ccb565b600060405180830381600087803b158015610d3557600080fd5b505af1158015610d49573d6000803e3d6000fd5b505050506000341115610c27576040516001600160a01b038516903480156108fc02916000818181858888f19350505050158015610d8b573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b03163314610dbe5760405162461bcd60e51b815260040161036e9061377a565b60005b8251811015610e3057818181518110610ddc57610ddc613e76565b602002602001015160016000858481518110610dfa57610dfa613e76565b6020908102919091018101516001600160a01b031682528101919091526040016000205580610e2881613ea2565b915050610dc1565b505050565b6000546001600160a01b03163314610e5f5760405162461bcd60e51b815260040161036e9061377a565b60005b8251811015610e3057818181518110610e7d57610e7d613e76565b602002602001015160016000858481518110610e9b57610e9b613e76565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060030181905550601360009054906101000a90046001600160a01b03166001600160a01b03166311cf4093848381518110610f0057610f00613e76565b6020026020010151848481518110610f1a57610f1a613e76565b602002602001015160656040518463ffffffff1660e01b8152600401610f4293929190613ebb565b600060405180830381600087803b158015610f5c57600080fd5b505af1158015610f70573d6000803e3d6000fd5b505050508080610f7f90613ea2565b915050610e62565b6000546001600160a01b03163314610fb15760405162461bcd60e51b815260040161036e9061377a565b600c80549115156101000261ff0019909216919091179055565b60008060008311610fee5760405162461bcd60e51b815260040161036e90613edc565b600f54600090610ffe9085613297565b601554604051636eb1769f60e11b81526001600160a01b03888116600483015230602483015292935091169063dd62ed3e90604401602060405180830381865afa158015611050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110749190613f39565b8111156110bf5760405162461bcd60e51b8152602060048201526019602482015278436865636b2074686520746f6b656e20616c6c6f77616e636560381b604482015260640161036e565b601554600654604051636eb1769f60e11b81526001600160a01b038881166004830152918216602482015291169063dd62ed3e90604401602060405180830381865afa158015611113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111379190613f39565b8111156111825760405162461bcd60e51b8152602060048201526019602482015278436865636b2074686520746f6b656e20616c6c6f77616e636560381b604482015260640161036e565b6015546040516370a0823160e01b81526001600160a01b038781166004830152909116906370a0823190602401602060405180830381865afa1580156111cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f09190613f39565b81111561124e5760405162461bcd60e51b815260206004820152602660248201527f796f7520646f206e6f7420686f6c6420656e6f75676820746f2070617920746860448201526565206665657360d01b606482015260840161036e565b949293505050565b6000611261836132aa565b600061126c84613365565b11156112ad57600061127d846133f7565b90506000811161129f5760405162461bcd60e51b815260040161036e90613f52565b808311156112ab578092505b505b50805b92915050565b600c5460ff16156112d95760405162461bcd60e51b815260040161036e90613f9d565b6000806000806112ee3386600d549192829190565b9350935093509350611304346109608684611256565b6013546040516311cf409360e01b815292965092945092506001600160a01b03909116906311cf4093906113419087908590606590600401613ebb565b600060405180830381600087803b15801561135b57600080fd5b505af115801561136f573d6000803e3d6000fd5b50506006546040516001600160a01b03909116925085156108fc02915085906000818181858888f193505050501580156113ad573d6000803e3d6000fd5b508115610c29576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015610c27573d6000803e3d6000fd5b6000546001600160a01b031633146114145760405162461bcd60e51b815260040161036e9061377a565b60005b8251811015610e305760135483516001600160a01b039091169063fecdb2c19085908490811061144957611449613e76565b602002602001015184848151811061146357611463613e76565b60200260200101516040518363ffffffff1660e01b8152600401611488929190613ffa565b600060405180830381600087803b1580156114a257600080fd5b505af11580156114b6573d6000803e3d6000fd5b505050506114dc8382815181106114cf576114cf613e76565b6020026020010151613466565b806114e681613ea2565b915050611417565b600c5460ff16156115115760405162461bcd60e51b815260040161036e90613f9d565b600080600080611527336001600d549192829190565b93509350935093506115393482612255565b909450909250905061154b8486612f72565b6006546040516001600160a01b039091169084156108fc029085906000818181858888f193505050501580156113ad573d6000803e3d6000fd5b6000546001600160a01b031633146115af5760405162461bcd60e51b815260040161036e9061377a565b600f55565b600c54610100900460ff16156115dc5760405162461bcd60e51b815260040161036e90613dd8565b6000806000806115f13386600d549192829190565b93509350935093506116078461053c8684611256565b6013546040516311cf409360e01b81529295509092506001600160a01b0316906311cf4093906116409087908590606590600401613ebb565b600060405180830381600087803b15801561165a57600080fd5b505af115801561166e573d6000803e3d6000fd5b50506015546006546040516323b872dd60e01b81526001600160a01b0392831694506323b872dd9350610ba892899216908890600401613e35565b61170d600380548060200260200160405190810160405280929190818152602001828054801561170257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116e4575b50505050503361349b565b151560011461171b57600080fd5b61177f600380548060200260200160405190810160405280929190818152602001828054801561177457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611756575b50505050508261349b565b15156001036118dc5760006117ee60038054806020026020016040519081016040528092919081815260200182805480156117e357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117c5575b505050505083613500565b6003549091506000906118039060019061405f565b6003805460010181556000529050815b818110156118a5576000611828826001614076565b90506003818154811061183d5761183d613e76565b600091825260209091200154600380546001600160a01b03909216918490811061186957611869613e76565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055508061189d81613ea2565b915050611813565b5060038054806118b7576118b761408e565b600082815260209020810160001990810180546001600160a01b031916905501905550505b50565b6000546001600160a01b031633146119095760405162461bcd60e51b815260040161036e9061377a565b6040516001600160a01b038316904780156108fc02916000818181858888f19350505050158015610e30573d6000803e3d6000fd5b6000546001600160a01b031633146119685760405162461bcd60e51b815260040161036e9061377a565b611972600061355f565b565b6000546001600160a01b0316331461199e5760405162461bcd60e51b815260040161036e9061377a565b6015546040516323b872dd60e01b815283916001600160a01b0316906323b872dd906119d290309088908790600401613e35565b6020604051808303816000875af11580156119f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c299190613e59565b6000546001600160a01b03163314611a3f5760405162461bcd60e51b815260040161036e9061377a565b6015546040516370a0823160e01b8152306004820181905283926001600160a01b0316916323b872dd9190869084906370a0823190602401602060405180830381865afa158015611a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab89190613f39565b6040518463ffffffff1660e01b8152600401611ad693929190613e35565b6020604051808303816000875af1158015611af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b199190613e59565b50505050565b6000546001600160a01b03163314611b495760405162461bcd60e51b815260040161036e9061377a565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610e30573d6000803e3d6000fd5b6001600160a01b0381166000908152600160208190526040822060020180548390611bab908490614076565b909155509092915050565b6000546001600160a01b03163314611be05760405162461bcd60e51b815260040161036e9061377a565b611bea82826135af565b5050565b6000546001600160a01b03163314611c185760405162461bcd60e51b815260040161036e9061377a565b600e805460ff1916911515919091179055565b611c8d6003805480602002602001604051908101604052809291908181526020018280548015611702576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116116e45750505050503361349b565b1515600114611c9b57600080fd5b60005b8451811015610c2957600060016000878481518110611cbf57611cbf613e76565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002090508315156000151503611d2d57848281518110611d0757611d07613e76565b6020026020010151816000016000828254611d229190614076565b90915550611d679050565b805415611d6757848281518110611d4657611d46613e76565b6020026020010151816000016000828254611d61919061405f565b90915550505b821515600103611d8f578060020154816000016000828254611d89919061405f565b90915550505b5080611d9a81613ea2565b915050611c9e565b600e5460ff1615611dc55760405162461bcd60e51b815260040161036e906140a4565b600c54610100900460ff1615611ded5760405162461bcd60e51b815260040161036e90613dd8565b600080600080611e023386600d549192829190565b9350935093509350611e188461053c8684611256565b60135460405163bd52416360e01b81529295509092506001600160a01b03169063bd52416390611e5390879085906065908990600401613ccb565b600060405180830381600087803b158015611e6d57600080fd5b505af1158015611e81573d6000803e3d6000fd5b505050506000341115610c29576040516001600160a01b038516903480156108fc02916000818181858888f19350505050158015610c27573d6000803e3d6000fd5b6000546001600160a01b03163314611eed5760405162461bcd60e51b815260040161036e9061377a565b60005b8251811015610e3057818181518110611f0b57611f0b613e76565b602002602001015160016000858481518110611f2957611f29613e76565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600201819055508080611f6390613ea2565b915050611ef0565b6000546001600160a01b03163314611f955760405162461bcd60e51b815260040161036e9061377a565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611fe15760405162461bcd60e51b815260040161036e9061377a565b60005b8251811015610e3057818181518110611fff57611fff613e76565b60200260200101516001600085848151811061201d5761201d613e76565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060010181905550808061205790613ea2565b915050611fe4565b6000546001600160a01b031633146120895760405162461bcd60e51b815260040161036e9061377a565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106120bb57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146120ff5760405162461bcd60e51b815260040161036e9061377a565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b600061212c846132aa565b600061213785613365565b111561217957600061214985846136f8565b90506000811161216b5760405162461bcd60e51b815260040161036e90613f52565b80841115612177578093505b505b509092915050565b600581815481106120bb57600080fd5b6001600160a01b03811660009081526001602081905260408220810180548390611bab908490614076565b6001600160a01b038116600090815260016020819052604082209081015490546121e6919061405f565b6001600160a01b0390921660009081526001602052604090206004018290555090565b6000546001600160a01b031633146122335760405162461bcd60e51b815260040161036e9061377a565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008084116122795760405162461bcd60e51b815260040161036e90613edc565b60006122fc85601460009054906101000a90046001600160a01b03166001600160a01b031663ced72f876040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f69190613f39565b90613297565b9050808610156123745760405162461bcd60e51b815260206004820152603d60248201527f446f65736e74204c6f6f6b204c696b6520796f752073656e7420656e6f75676860448201527f20746f2070617920746865206665657320617420746869732074696d65000000606482015260840161036e565b6000612380878361376e565b97919650909350505050565b600e5460ff16156123af5760405162461bcd60e51b815260040161036e906140a4565b600c5460ff16156123d25760405162461bcd60e51b815260040161036e90613f9d565b6000806000806123e73387600d549192829190565b93509350935093506123fe34610960868489612121565b60135460405163032c3b7960e51b815292965092945092506001600160a01b03909116906365876f2090859061243c90889086908b90600401613ebb565b6000604051808303818588803b15801561245557600080fd5b505af1158015612469573d6000803e3d6000fd5b50505050506000821115610c27576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015610d8b573d6000803e3d6000fd5b6000546001600160a01b031633146124d75760405162461bcd60e51b815260040161036e9061377a565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146125235760405162461bcd60e51b815260040161036e9061377a565b6125856003805480602002602001604051908101604052809291908181526020018280548015611774576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116117565750505050508261349b565b15156000036118dc57600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0383166001600160a01b031990911617905550565b600c5460ff16156126015760405162461bcd60e51b815260040161036e90613f9d565b600c5460ff16156126245760405162461bcd60e51b815260040161036e90613f9d565b6000806000806126393386600d549192829190565b935093509350935061264f346109608684611256565b60135460405163032c3b7960e51b815292965092945092506001600160a01b03909116906365876f2090859061268e9088908690606590600401613ebb565b6000604051808303818588803b1580156126a757600080fd5b505af11580156126bb573d6000803e3d6000fd5b50505050506000821115610c29576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015610c27573d6000803e3d6000fd5b600481815481106120bb57600080fd5b600c5460ff16156127325760405162461bcd60e51b815260040161036e90613f9d565b6000806000806127473387600d549192829190565b935093509350935061275e34610960868489612121565b6013546040516311cf409360e01b815292965092945092506001600160a01b03909116906311cf40939061279a90879085908a90600401613ebb565b600060405180830381600087803b1580156127b457600080fd5b505af11580156127c8573d6000803e3d6000fd5b50506006546040516001600160a01b03909116925085156108fc02915085906000818181858888f19350505050158015612806573d6000803e3d6000fd5b508115610c27576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015610d8b573d6000803e3d6000fd5b600c54610100900460ff16156128c15760405162461bcd60e51b815260206004820152603c60248201527f736f72727920546f6b656e205061796d656e7473206172652063757272656e7460448201527f6c792064697361626c65642c20706c6561736520757365204176617800000000606482015260840161036e565b6000806000806128d63387600d549192829190565b93509350935093506128ed8461053c868489612121565b6013546040516311cf409360e01b81529295509092506001600160a01b0316906311cf40939061292590879085908a90600401613ebb565b600060405180830381600087803b15801561293f57600080fd5b505af1158015612953573d6000803e3d6000fd5b50506015546006546040516323b872dd60e01b81526001600160a01b0392831694506323b872dd935061298e92899216908890600401613e35565b6020604051808303816000875af11580156129ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d19190613e59565b503415610c27576040516001600160a01b038516903480156108fc02916000818181858888f19350505050158015610d8b573d6000803e3d6000fd5b6000546001600160a01b03163314612a375760405162461bcd60e51b815260040161036e9061377a565b600c805460ff1916911515919091179055565b6000546001600160a01b03163314612a745760405162461bcd60e51b815260040161036e9061377a565b6001600160a01b038116612ad95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161036e565b6118dc8161355f565b6000546001600160a01b03163314612b0c5760405162461bcd60e51b815260040161036e9061377a565b60008080805b8651811015612e7957868181518110612b2d57612b2d613e76565b60200260200101519350848181518110612b4957612b49613e76565b602002602001015115156001151503612ce457858281518110612b6e57612b6e613e76565b602002602001015160016000866001600160a01b03166001600160a01b031681526020019081526020016000206000016000828254612bad9190614076565b90915550612bbe9050600183614076565b9150858281518110612bd257612bd2613e76565b602002602001015160016000866001600160a01b03166001600160a01b031681526020019081526020016000206001016000828254612c119190614076565b90915550612c229050600183614076565b9150858281518110612c3657612c36613e76565b602002602001015160016000866001600160a01b03166001600160a01b031681526020019081526020016000206002016000828254612c759190614076565b90915550612c869050600183614076565b9150858281518110612c9a57612c9a613e76565b602002602001015160016000866001600160a01b03166001600160a01b031681526020019081526020016000206003016000828254612cd99190614076565b90915550612e679050565b858281518110612cf657612cf6613e76565b602002602001015160016000866001600160a01b03166001600160a01b031681526020019081526020016000206000016000828254612d35919061405f565b90915550612d469050600183614076565b9150858281518110612d5a57612d5a613e76565b602002602001015160016000866001600160a01b03166001600160a01b031681526020019081526020016000206001016000828254612d99919061405f565b90915550612daa9050600183614076565b9150858281518110612dbe57612dbe613e76565b602002602001015160016000866001600160a01b03166001600160a01b031681526020019081526020016000206002016000828254612dfd919061405f565b90915550612e0e9050600183614076565b9150858281518110612e2257612e22613e76565b602002602001015160016000866001600160a01b03166001600160a01b031681526020019081526020016000206003016000828254612e61919061405f565b90915550505b80612e7181613ea2565b915050612b12565b50612ede6005805480602002602001604051908101604052809291908181526020018280548015612ed357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612eb5575b50505050508461349b565b1515600003610c27576004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0386166001600160a01b031991821681179092556005805493840181556000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09092018054909216179055505050505050565b6001600160a01b03821660009081526001602052604081205411612ff15760405162461bcd60e51b815260206004820152603060248201527f796f7520646f6e74206861766520616e792070726f746f732064726f7070656460448201526f081d1bc81e5bdd5c881858d8dbdd5b9d60821b606482015260840161036e565b6000612ffc836121bc565b1161305d5760405162461bcd60e51b815260206004820152602b60248201527f796f75206861766520616c726561647920636c61696d656420616c6c206f662060448201526a796f75722070726f746f7360a81b606482015260840161036e565b601354604051633a13933360e21b81526001600160a01b039091169063e84e4ccc9061308f9085908590600401613ffa565b602060405180830381865afa1580156130ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d09190613e59565b1561313c5760405162461bcd60e51b815260206004820152603660248201527f796f75206861766520616c726561647920757365642074686174206e616d652c60448201527510383632b0b9b29031b437b7b9b29030b737ba3432b960511b606482015260840161036e565b60038151116131b35760405162461bcd60e51b815260206004820152603d60248201527f6e616d6520697320746f6f20736d616c6c2c20756e646572203332206368617260448201527f61637465727320627574206d6f7265207468616e203320706c65617365000000606482015260840161036e565b602081511061322a5760405162461bcd60e51b815260206004820152603b60248201527f6e616d6520697320746f6f206269672c206f766572203320636861726163746560448201527f72732062757420756e646572207468616e20333220706c656173650000000000606482015260840161036e565b60135460405163fecdb2c160e01b81526001600160a01b039091169063fecdb2c19061325c9085908590600401613ffa565b600060405180830381600087803b15801561327657600080fd5b505af115801561328a573d6000803e3d6000fd5b50505050611bea82613466565b60006132a382846140e5565b9392505050565b61330c6004805480602002602001604051908101604052809291908181526020018280548015611774576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116117565750505050508261349b565b15156000036118dc57600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0383166001600160a01b031990911617905550565b601354604051632e8b8d4360e21b81526001600160a01b038381166004830152600092169063ba2e350c90602401602060405180830381865afa1580156133b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d49190613f39565b6001600160a01b0390921660009081526001602052604090206003018290555090565b60135460405163e0bf364760e01b81526001600160a01b038381166004830152600092169063e0bf364790602401602060405180830381865afa158015613442573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b09190613f39565b6001600160a01b038116600090815260016020819052604082208101805491929091613493908490614076565b909155505050565b6000805b83518110156134f6578381815181106134ba576134ba613e76565b60200260200101516001600160a01b0316836001600160a01b0316036134e45760019150506112b0565b806134ee81613ea2565b91505061349f565b5060009392505050565b6000805b83518110156135585783818151811061351f5761351f613e76565b60200260200101516001600160a01b0316836001600160a01b0316036135465790506112b0565b8061355081613ea2565b915050613504565b5092915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008080805b8551811015610c27578581815181106135d0576135d0613e76565b602002602001015193508482815181106135ec576135ec613e76565b6020908102919091018101516001600160a01b0386166000908152600192839052604090205561361c9083614076565b915084828151811061363057613630613e76565b6020908102919091018101516001600160a01b0386166000908152600192839052604090208201556136629083614076565b915084828151811061367657613676613e76565b6020908102919091018101516001600160a01b038616600090815260019283905260409020600201556136a99083614076565b91508482815181106136bd576136bd613e76565b6020908102919091018101516001600160a01b03861660009081526001909252604090912060030155806136f081613ea2565b9150506135b5565b601354604051637ebcf69f60e01b81526001600160a01b038481166004830152602482018490526000921690637ebcf69f90604401602060405180830381865afa15801561374a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a39190613f39565b60006132a3828461405f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b03811681146118dc57600080fd5b6000602082840312156137d657600080fd5b81356132a3816137af565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613820576138206137e1565b604052919050565b600082601f83011261383957600080fd5b813567ffffffffffffffff811115613853576138536137e1565b613866601f8201601f19166020016137f7565b81815284602083860101111561387b57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156138aa57600080fd5b813567ffffffffffffffff8111156138c157600080fd5b6138cd84828501613828565b949350505050565b600080604083850312156138e857600080fd5b50508035926020909101359150565b600067ffffffffffffffff821115613911576139116137e1565b5060051b60200190565b600082601f83011261392c57600080fd5b8135602061394161393c836138f7565b6137f7565b82815260059290921b8401810191818101908684111561396057600080fd5b8286015b84811015613984578035613977816137af565b8352918301918301613964565b509695505050505050565b600082601f8301126139a057600080fd5b813560206139b061393c836138f7565b82815260059290921b840181019181810190868411156139cf57600080fd5b8286015b8481101561398457803583529183019183016139d3565b600080604083850312156139fd57600080fd5b823567ffffffffffffffff80821115613a1557600080fd5b613a218683870161391b565b93506020850135915080821115613a3757600080fd5b50613a448582860161398f565b9150509250929050565b80151581146118dc57600080fd5b600060208284031215613a6e57600080fd5b81356132a381613a4e565b60008060408385031215613a8c57600080fd5b8235613a97816137af565b946020939093013593505050565b600060208284031215613ab757600080fd5b5035919050565b60008060408385031215613ad157600080fd5b823567ffffffffffffffff80821115613ae957600080fd5b613af58683870161391b565b9350602091508185013581811115613b0c57600080fd5b8501601f81018713613b1d57600080fd5b8035613b2b61393c826138f7565b81815260059190911b82018401908481019089831115613b4a57600080fd5b8584015b83811015613b8257803586811115613b665760008081fd5b613b748c8983890101613828565b845250918601918601613b4e565b508096505050505050509250929050565b600080600060608486031215613ba857600080fd5b8335613bb3816137af565b92506020840135613bc3816137af565b929592945050506040919091013590565b60008060408385031215613be757600080fd5b8235613bf2816137af565b91506020830135613c02816137af565b809150509250929050565b60008060008060808587031215613c2357600080fd5b843567ffffffffffffffff80821115613c3b57600080fd5b613c478883890161391b565b95506020870135915080821115613c5d57600080fd5b50613c6a8782880161398f565b9350506040850135613c7b81613a4e565b91506060850135613c8b81613a4e565b939692955090935050565b600080600060608486031215613cab57600080fd5b8335613cb6816137af565b95602085013595506040909401359392505050565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b600080600060608486031215613d0657600080fd5b833567ffffffffffffffff80821115613d1e57600080fd5b613d2a8783880161391b565b9450602091508186013581811115613d4157600080fd5b613d4d8882890161398f565b945050604086013581811115613d6257600080fd5b86019050601f81018713613d7557600080fd5b8035613d8361393c826138f7565b81815260059190911b82018301908381019089831115613da257600080fd5b928401925b82841015613dc9578335613dba81613a4e565b82529284019290840190613da7565b80955050505050509250925092565b6020808252603c908201527f736f72727920546f6b656e205061796d656e7473206172652063757272656e7460408201527f6c792064697361626c65642c20706c6561736520757365204156415800000000606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215613e6b57600080fd5b81516132a381613a4e565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613eb457613eb4613e8c565b5060010190565b6001600160a01b039390931683526020830191909152604082015260600190565b60208082526037908201527f446f65736e74204c6f6f6b204c696b6520796f75206f7074656420746f20706160408201527f7920616e79206665657320617420746869732074696d65000000000000000000606082015260800190565b600060208284031215613f4b57600080fd5b5051919050565b6020808252602b908201527f796f752068617665206e6f206d6f7265206665657320746f2070617920666f7260408201526a20746869732050726f746f60a81b606082015260800190565b6020808252603b908201527f736f7272792041564158205061796d656e7473206172652063757272656e746c60408201527f792064697361626c65642c20706c656173652075736520555344430000000000606082015260800190565b60018060a01b038316815260006020604081840152835180604085015260005b818110156140365785810183015185820160600152820161401a565b81811115614048576000606083870101525b50601f01601f191692909201606001949350505050565b60008282101561407157614071613e8c565b500390565b6000821982111561408957614089613e8c565b500190565b634e487b7160e01b600052603160045260246000fd5b60208082526021908201527f736f727279206665654d475220706179206966206f66662063757272656e746c6040820152607960f81b606082015260800190565b60008160001904831182151516156140ff576140ff613e8c565b50029056fea26469706673582212202d3250ac47b5c8359fa3f1a0f9667569808c2dd016f3307c77f188d6b73f7dc964736f6c634300080d003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000ead38e0c642ae78b2c86398ba5a0cfc99deccae0000000000000000000000000dfd6fa1d4ec0888480aa4ac21ec82e98b0f5708e000000000000000000000000b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e

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

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000ead38e0c642ae78b2c86398ba5a0cfc99deccae0000000000000000000000000dfd6fa1d4ec0888480aa4ac21ec82e98b0f5708e000000000000000000000000b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e

-----Decoded View---------------
Arg [0] : addresses (address[]): 0xead38e0c642ae78b2c86398ba5a0cfc99deccae0,0xdfd6fa1d4ec0888480aa4ac21ec82e98b0f5708e,0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [2] : 000000000000000000000000ead38e0c642ae78b2c86398ba5a0cfc99deccae0
Arg [3] : 000000000000000000000000dfd6fa1d4ec0888480aa4ac21ec82e98b0f5708e
Arg [4] : 000000000000000000000000b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e


Deployed ByteCode Sourcemap

26436:17961:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;;;;;;;;;;;;;44300:39;26436:17961;;;;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;;;;;;;;;44300:39:::1;::::0;44308:10:::1;::::0;44329:9:::1;44300:39:::0;::::1;;;::::0;::::1;::::0;;;44329:9;44308:10;44300:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;::::0;38186:108;;;;;;;;;;-1:-1:-1;38186:108:0;;;;;:::i;:::-;-1:-1:-1;;;;;38264:17:0;38244:7;38264:17;;;:7;:17;;;;;;;;:25;;;38186:108;;;;909:25:1;;;897:2;882:18;38186:108:0;;;;;;;;33049:512;;;;;;:::i;:::-;;:::i;26773:40::-;;;;;;;;;;-1:-1:-1;26773:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2479:25:1;;;2535:2;2520:18;;2513:34;;;;2563:18;;;2556:34;;;;2621:2;2606:18;;2599:34;2664:3;2649:19;;2642:35;2466:3;2451:19;26773:40:0;2220:463:1;27921:585:0;;;;;;:::i;:::-;;:::i;39794:187::-;;;;;;;;;;-1:-1:-1;39794:187:0;;;;;:::i;:::-;;:::i;39171:236::-;;;;;;;;;;-1:-1:-1;39171:236:0;;;;;:::i;:::-;;:::i;27349:28::-;;;;;;;;;;-1:-1:-1;27349:28:0;;;;-1:-1:-1;;;;;27349:28:0;;;;;;-1:-1:-1;;;;;5323:32:1;;;5305:51;;5293:2;5278:18;27349:28:0;5138:224:1;42660:92:0;;;;;;;;;;-1:-1:-1;42660:92:0;;;;;:::i;:::-;;:::i;36176:540::-;;;;;;;;;;-1:-1:-1;36176:540:0;;;;;:::i;:::-;;:::i;:::-;;;;6230:25:1;;;6286:2;6271:18;;6264:34;;;;6203:18;36176:540:0;6056:248:1;27433:20:0;;;;;;;;;;-1:-1:-1;27433:20:0;;;;-1:-1:-1;;;;;27433:20:0;;;34740:357;;;;;;;;;;-1:-1:-1;34740:357:0;;;;;:::i;:::-;;:::i;32330:555::-;;;;;;:::i;:::-;;:::i;39984:203::-;;;;;;;;;;-1:-1:-1;39984:203:0;;;;;:::i;:::-;;:::i;33583:507::-;;;;;;:::i;:::-;;:::i;42444:101::-;;;;;;;;;;-1:-1:-1;42444:101:0;;;;;:::i;:::-;;:::i;31767:547::-;;;;;;:::i;:::-;;:::i;42047:390::-;;;;;;;;;;-1:-1:-1;42047:390:0;;;;;:::i;:::-;;:::i;43381:132::-;;;;;;:::i;:::-;;:::i;3634:103::-;;;;;;;;;;;;;:::i;43200:178::-;;;;;;;;;;-1:-1:-1;43200:178:0;;;;;:::i;:::-;;:::i;43516:196::-;;;;;;;;;;-1:-1:-1;43516:196:0;;;;;:::i;:::-;;:::i;43081:116::-;;;;;;:::i;:::-;;:::i;38500:114::-;;;;;;;;;;-1:-1:-1;38500:114:0;;;;;:::i;:::-;;:::i;40696:127::-;;;;;;;;;;-1:-1:-1;40696:127:0;;;;;:::i;:::-;;:::i;27409:20::-;;;;;;;;;;-1:-1:-1;27409:20:0;;;;-1:-1:-1;;;;;27409:20:0;;;3403:87;;;;;;;;;;-1:-1:-1;3449:7:0;3476:6;-1:-1:-1;;;;;3476:6:0;3403:87;;42552:101;;;;;;;;;;-1:-1:-1;42552:101:0;;;;;:::i;:::-;;:::i;38730:438::-;;;;;;;;;;-1:-1:-1;38730:438:0;;;;;:::i;:::-;;:::i;29194:580::-;;;;;;:::i;:::-;;:::i;39600:191::-;;;;;;;;;;-1:-1:-1;39600:191:0;;;;;:::i;:::-;;:::i;42865:109::-;;;;;;;;;;-1:-1:-1;42865:109:0;;;;;:::i;:::-;;:::i;39410:187::-;;;;;;;;;;-1:-1:-1;39410:187:0;;;;;:::i;:::-;;:::i;43926:105::-;;;;;;;;;;-1:-1:-1;43926:105:0;;;;;:::i;:::-;;:::i;26867:25::-;;;;;;;;;;-1:-1:-1;26867:25:0;;;;;:::i;:::-;;:::i;44147:95::-;;;;;;;;;;-1:-1:-1;44147:95:0;;;;;:::i;:::-;;:::i;26817:46::-;;;;;;;;;;-1:-1:-1;26817:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34358:379;;;;;;;;;;-1:-1:-1;34358:379:0;;;;;:::i;:::-;;:::i;26928:27::-;;;;;;;;;;-1:-1:-1;26928:27:0;;;;;:::i;:::-;;:::i;27381:24::-;;;;;;;;;;-1:-1:-1;27381:24:0;;;;-1:-1:-1;;;;;27381:24:0;;;38617:110;;;;;;;;;;-1:-1:-1;38617:110:0;;;;;:::i;:::-;;:::i;38297:200::-;;;;;;;;;;-1:-1:-1;38297:200:0;;;;;:::i;:::-;;:::i;44041:99::-;;;;;;;;;;-1:-1:-1;44041:99:0;;;;;:::i;:::-;;:::i;35100:444::-;;;;;;;;;;-1:-1:-1;35100:444:0;;;;;:::i;:::-;;:::i;:::-;;;;11386:25:1;;;11442:2;11427:18;;11420:34;;;;11470:18;;;11463:34;11374:2;11359:18;35100:444:0;11184:319:1;28534:639:0;;;;;;:::i;:::-;;:::i;42984:94::-;;;;;;;;;;-1:-1:-1;42984:94:0;;;;;:::i;:::-;;:::i;43715:194::-;;;;;;;;;;-1:-1:-1;43715:194:0;;;;;:::i;:::-;;:::i;29794:630::-;;;;;;:::i;:::-;;:::i;26896:28::-;;;;;;;;;;-1:-1:-1;26896:28:0;;;;;:::i;:::-;;:::i;34206:149::-;;;;;;;;;;-1:-1:-1;34206:149:0;;;;;:::i;:::-;34329:4;;34320:8;;34329:4;;34339:10;34206:149;;;;;;;;;;;:::i;27275:34::-;;;;;;;;;;;;;;;;31167:583;;;;;;:::i;:::-;;:::i;30575:572::-;;;;;;:::i;:::-;;:::i;42759:99::-;;;;;;;;;;-1:-1:-1;42759:99:0;;;;;:::i;:::-;;:::i;3749:201::-;;;;;;;;;;-1:-1:-1;3749:201:0;;;;;:::i;:::-;;:::i;41232:812::-;;;;;;;;;;-1:-1:-1;41232:812:0;;;;;:::i;:::-;;:::i;38072:111::-;;;;;;;;;;-1:-1:-1;38072:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;38150:17:0;38130:7;38150:17;;;:7;:17;;;;;:28;;;;38072:111;33049:512;33130:6;;;;;;;:15;33122:88;;;;-1:-1:-1;;;33122:88:0;;;;;;;:::i;:::-;33220:16;33237:14;33253:24;33278:18;33300:21;33308:10;33319:1;34329:4;;34320:8;;34329:4;;34339:10;34206:149;33300:21;33219:102;;;;;;;;33348:35;33363:8;33372:10;33348:14;:35::i;:::-;33326:57;;-1:-1:-1;33326:57:0;-1:-1:-1;33388:32:0;33405:8;33414:5;33388:16;:32::i;:::-;33432:6;;33462:8;;33432:47;;-1:-1:-1;;;33432:47:0;;-1:-1:-1;;;;;33432:6:0;;;;:19;;:47;;33452:8;;33462;;;;33472:6;;33432:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;33494:9:0;:13;33491:66;;33514:37;;-1:-1:-1;;;;;33514:26:0;;;33541:9;33514:37;;;;;;;;;33541:9;33514:26;:37;;;;;;;;;;;;;;;;;;;;;33491:66;33113:448;;;;33049:512;:::o;27921:585::-;28008:12;;;;:21;28000:67;;;;-1:-1:-1;;;28000:67:0;;14637:2:1;28000:67:0;;;14619:21:1;14676:2;14656:18;;;14649:30;14715:34;14695:18;;;14688:62;-1:-1:-1;;;14766:18:1;;;14759:31;14807:19;;28000:67:0;14435:397:1;28000:67:0;28080:6;;;;;;;:15;28072:88;;;;-1:-1:-1;;;28072:88:0;;;;;;;:::i;:::-;28166:16;28183:14;28199:24;28224:18;28246:30;28254:10;28265;34329:4;;34320:8;;34329:4;;34339:10;34206:149;28246:30;28165:111;;;;;;;;28303:67;28318:8;28327:42;28346:8;28355:10;28366:2;28327:18;:42::i;28303:67::-;28382:6;;:49;;-1:-1:-1;;;28382:49:0;;28281:89;;-1:-1:-1;28281:89:0;;-1:-1:-1;;;;;;28382:6:0;;:18;;:49;;28401:8;;28281:89;;28421:2;;28281:89;;28382:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28451:1;28439:9;:13;28436:66;;;28459:37;;-1:-1:-1;;;;;28459:26:0;;;28486:9;28459:37;;;;;;;;;28486:9;28459:26;:37;;;;;;;;;;;;;;;;;;;;;27995:511;;;;27921:585;;:::o;39794:187::-;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;39900:6:::1;39896:81;39911:4;:11;39909:1;:13;39896:81;;;39960:8;39969:1;39960:11;;;;;;;;:::i;:::-;;;;;;;39933:7;:16;39941:4;39946:1;39941:7;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;39933:16:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;39933:16:0;:38;39923:3;::::1;::::0;::::1;:::i;:::-;;;;39896:81;;;;39794:187:::0;;:::o;39171:236::-;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;39273:6:::1;39269:134;39284:4;:11;39282:1;:13;39269:134;;;39330:8;39339:1;39330:11;;;;;;;;:::i;:::-;;;;;;;39306:7;:16;39314:4;39319:1;39314:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;39306:16:0::1;-1:-1:-1::0;;;;;39306:16:0::1;;;;;;;;;;;;:21;;:35;;;;39347:6;;;;;;;;;-1:-1:-1::0;;;;;39347:6:0::1;-1:-1:-1::0;;;;;39347:20:0::1;;39368:4;39373:1;39368:7;;;;;;;;:::i;:::-;;;;;;;39376:8;39385:1;39376:11;;;;;;;;:::i;:::-;;;;;;;39388:3;39347:45;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;39296:3;;;;;:::i;:::-;;;;39269:134;;42660:92:::0;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;42724:6:::1;:16:::0;;;::::1;;;;-1:-1:-1::0;;42724:16:0;;::::1;::::0;;;::::1;::::0;;42660:92::o;36176:540::-;36253:7;36261;36295:1;36283:10;:13;36275:81;;;;-1:-1:-1;;;36275:81:0;;;;;;;:::i;:::-;36379:6;;36361:15;;36379:22;;36390:10;36379;:22::i;:::-;36425:6;;:41;;-1:-1:-1;;;36425:41:0;;-1:-1:-1;;;;;16255:15:1;;;36425:41:0;;;16237:34:1;36460:4:0;16287:18:1;;;16280:43;36361:40:0;;-1:-1:-1;36425:6:0;;;:16;;16172:18:1;;36425:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36414:7;:52;;36406:90;;;;-1:-1:-1;;;36406:90:0;;16725:2:1;36406:90:0;;;16707:21:1;16764:2;16744:18;;;16737:30;-1:-1:-1;;;16783:18:1;;;16776:55;16848:18;;36406:90:0;16523:349:1;36406:90:0;36520:6;;36547:8;;36520:36;;-1:-1:-1;;;36520:36:0;;-1:-1:-1;;;;;16255:15:1;;;36520:36:0;;;16237:34:1;36547:8:0;;;16287:18:1;;;16280:43;36520:6:0;;;:16;;16172:18:1;;36520:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36509:7;:47;;36501:85;;;;-1:-1:-1;;;36501:85:0;;16725:2:1;36501:85:0;;;16707:21:1;16764:2;16744:18;;;16737:30;-1:-1:-1;;;16783:18:1;;;16776:55;16848:18;;36501:85:0;16523:349:1;36501:85:0;36610:6;;:26;;-1:-1:-1;;;36610:26:0;;-1:-1:-1;;;;;5323:32:1;;;36610:26:0;;;5305:51:1;36610:6:0;;;;:16;;5278:18:1;;36610:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36599:7;:37;;36591:88;;;;-1:-1:-1;;;36591:88:0;;17396:2:1;36591:88:0;;;17378:21:1;17435:2;17415:18;;;17408:30;17474:34;17454:18;;;17447:62;-1:-1:-1;;;17525:18:1;;;17518:36;17571:19;;36591:88:0;17194:402:1;36591:88:0;36692:7;36700:10;;-1:-1:-1;;;36176:540:0:o;34740:357::-;34816:7;34829:19;34839:8;34829:9;:19::i;:::-;34878:1;34856:21;34868:8;34856:11;:21::i;:::-;:23;34853:218;;;34886:16;34905:25;34921:8;34905:15;:25::i;:::-;34886:44;;34954:1;34944:8;:11;34936:66;;;;-1:-1:-1;;;34936:66:0;;;;;;;:::i;:::-;35022:8;35011:10;:19;35008:58;;;35051:8;35038:21;;35008:58;34880:191;34853:218;-1:-1:-1;35082:10:0;34740:357;;;;;:::o;32330:555::-;32402:7;;;;:16;32394:88;;;;-1:-1:-1;;;32394:88:0;;;;;;;:::i;:::-;32488:16;32505:14;32521:24;32546:18;32568:30;32576:10;32587;34329:4;;34320:8;;34329:4;;34339:10;34206:149;32568:30;32487:111;;;;;;;;32642:60;32656:9;32666:35;32681:8;32690:10;32666:14;:35::i;32642:60::-;32707:6;;:45;;-1:-1:-1;;;32707:45:0;;32603:99;;-1:-1:-1;32603:99:0;;-1:-1:-1;32603:99:0;-1:-1:-1;;;;;;32707:6:0;;;;:20;;:45;;32728:8;;32603:99;;32748:3;;32707:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32764:8:0;;:25;;-1:-1:-1;;;;;32764:8:0;;;;-1:-1:-1;32764:25:0;;;;;-1:-1:-1;32782:6:0;;32764:8;:25;:8;:25;32782:6;32764:8;:25;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32804:20:0;;32801:80;;32831:44;;-1:-1:-1;;;;;32831:26:0;;;:44;;;;;32858:16;;32831:44;;;;32858:16;32831:26;:44;;;;;;;;;;;;;;;;;;;39984:203;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;40082:6:::1;40078:104;40093:4;:11;40091:1;:13;40078:104;;;40115:6;::::0;40131:7;;-1:-1:-1;;;;;40115:6:0;;::::1;::::0;:15:::1;::::0;40131:4;;40136:1;;40131:7;::::1;;;;;:::i;:::-;;;;;;;40139:5;40145:1;40139:8;;;;;;;;:::i;:::-;;;;;;;40115:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;40154:22;40168:4;40173:1;40168:7;;;;;;;;:::i;:::-;;;;;;;40154:13;:22::i;:::-;40105:3:::0;::::1;::::0;::::1;:::i;:::-;;;;40078:104;;33583:507:::0;33659:7;;;;:16;33651:88;;;;-1:-1:-1;;;33651:88:0;;;;;;;:::i;:::-;33745:16;33762:14;33778:24;33803:18;33825:21;33833:10;33844:1;34329:4;;34320:8;;34329:4;;34339:10;34206:149;33825:21;33744:102;;;;;;;;33890:35;33904:9;33914:10;33890:13;:35::i;:::-;33851:74;;-1:-1:-1;33851:74:0;;-1:-1:-1;33851:74:0;-1:-1:-1;33930:32:0;33947:8;33956:5;33930:16;:32::i;:::-;33975:8;;33967:34;;-1:-1:-1;;;;;33975:8:0;;;;33967:34;;;;;33994:6;;33975:8;33967:34;33975:8;33967:34;33994:6;33975:8;33967:34;;;;;;;;;;;;;;;;;;;42444:101;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;42517:6:::1;:16:::0;42444:101::o;31767:547::-;31840:6;;;;;;;:15;31832:88;;;;-1:-1:-1;;;31832:88:0;;;;;;;:::i;:::-;31926:16;31943:14;31959:24;31984:18;32006:30;32014:10;32025;34329:4;;34320:8;;34329:4;;34339:10;34206:149;32006:30;31925:111;;;;;;;;32063:60;32078:8;32087:35;32102:8;32111:10;32087:14;:35::i;32063:60::-;32128:6;;:45;;-1:-1:-1;;;32128:45:0;;32041:82;;-1:-1:-1;32041:82:0;;-1:-1:-1;;;;;;32128:6:0;;:20;;:45;;32149:8;;32041:82;;32169:3;;32128:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32185:6:0;;32215:8;;32185:47;;-1:-1:-1;;;32185:47:0;;-1:-1:-1;;;;;32185:6:0;;;;-1:-1:-1;32185:19:0;;-1:-1:-1;32185:47:0;;32205:8;;32215;;32225:6;;32185:47;;;:::i;42047:390::-;27492:42;27514:8;27492:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27492:42:0;;;;;;;;;;;;;;;;;;;;;27523:10;27492:21;:42::i;:::-;:49;;27537:4;27492:49;27484:58;;;;;;42122:38:::1;42144:8;42122:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;-1:-1:-1;;;;;42122:38:0::1;::::0;;;;;::::1;::::0;::::1;;::::0;;::::1;;;;;;;;;42153:6;42122:21;:38::i;:::-;:45;;42163:4;42122:45:::0;42119:310:::1;;42178:7;42188:33;42205:8;42188:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;-1:-1:-1;;;;;42188:33:0::1;::::0;;;;;::::1;::::0;::::1;;::::0;;::::1;;;;;;;;;42214:6;42188:16;:33::i;:::-;42242:8;:15:::0;42178:43;;-1:-1:-1;42231:8:0::1;::::0;42242:17:::1;::::0;42258:1:::1;::::0;42242:17:::1;:::i;:::-;42269:8;:15:::0;;::::1;;::::0;;-1:-1:-1;42269:15:0;42231:28;-1:-1:-1;42305:2:0;42294:99:::1;42310:3;42308:1;:5;42294:99;;;42329:8;42340:4;:1:::0;42343::::1;42340:4;:::i;:::-;42329:15;;42369:8;42378:3;42369:13;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;42355:8:::1;:11:::0;;-1:-1:-1;;;;;42369:13:0;;::::1;::::0;42364:1;;42355:11;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;:27:::0;;-1:-1:-1;;;;;;42355:27:0::1;-1:-1:-1::0;;;;;42355:27:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;42314:3:0;::::1;::::0;::::1;:::i;:::-;;;;42294:99;;;;42402:8;:14;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;42402:14:0;;;;;-1:-1:-1;;;;;;42402:14:0::1;::::0;;;;;-1:-1:-1;;42119:310:0::1;42047:390:::0;:::o;43381:132::-;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;43473:35:::1;::::0;-1:-1:-1;;;;;43473:12:0;::::1;::::0;43486:21:::1;43473:35:::0;::::1;;;::::0;::::1;::::0;;;43486:21;43473:12;:35;::::1;;;;;;;;;;;;;::::0;::::1;;;;3634:103:::0;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;3699:30:::1;3726:1;3699:18;:30::i;:::-;3634:103::o:0;43200:178::-;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;43325:6:::1;::::0;:48:::1;::::0;-1:-1:-1;;;43325:48:0;;43313:6;;-1:-1:-1;;;;;43325:6:0::1;::::0;:19:::1;::::0;:48:::1;::::0;43353:4:::1;::::0;43360:3;;43365:7;;43325:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;43516:196::-:0;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;43635:6:::1;::::0;43675:31:::1;::::0;-1:-1:-1;;;43675:31:0;;43663:4:::1;43675:31;::::0;::::1;5305:51:1::0;;;43623:6:0;;-1:-1:-1;;;;;43635:6:0::1;::::0;:19:::1;::::0;43663:4;43670:3;;43635:6;;43675:16:::1;::::0;5278:18:1;;43675:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43635:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43595:117;43516:196:::0;;:::o;43081:116::-;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;43171:21:::1;::::0;-1:-1:-1;;;;;43171:12:0;::::1;::::0;:21;::::1;;;::::0;43184:7;;43171:21:::1;::::0;;;43184:7;43171:12;:21;::::1;;;;;;;;;;;;;::::0;::::1;;;;38500:114:::0;-1:-1:-1;;;;;38577:17:0;;38562:7;38577:17;;;38608:1;38577:17;;;;;;;:28;;:32;;38562:7;;38577:32;;38608:1;;38577:32;:::i;:::-;;;;-1:-1:-1;38500:114:0;;;-1:-1:-1;;38500:114:0:o;40696:127::-;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;40789:29:::1;40805:9;40815:2;40789:15;:29::i;:::-;40696:127:::0;;:::o;42552:101::-;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;42619:12:::1;:22:::0;;-1:-1:-1;;42619:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;42552:101::o;38730:438::-;27492:42;27514:8;27492:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27492:42:0;;;;;;;;;;;;;;;;;;;;27523:10;27492:21;:42::i;:::-;:49;;27537:4;27492:49;27484:58;;;;;;38861:6:::1;38857:303;38872:9;:16;38870:1;:18;38857:303;;;38899:18;38920:7;:21;38928:9;38938:1;38928:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;38920:21:0::1;-1:-1:-1::0;;;;;38920:21:0::1;;;;;;;;;;;;38899:42;;38950:4;:13;;38958:5;38950:13;;::::0;38947:140:::1;;38987:8;38996:1;38987:11;;;;;;;;:::i;:::-;;;;;;;38971:4;:12;;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;38947:140:0::1;::::0;-1:-1:-1;38947:140:0::1;;39019:12:::0;;:17;39016:65:::1;;39062:8;39071:1;39062:11;;;;;;;;:::i;:::-;;;;;;;39046:4;:12;;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;39016:65:0::1;39095:14:::0;::::1;;39105:4;39095:14:::0;39092:63:::1;;39133:4;:15;;;39117:4;:12;;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;39092:63:0::1;-1:-1:-1::0;38889:3:0;::::1;::::0;::::1;:::i;:::-;;;;38857:303;;29194:580:::0;29270:12;;;;:21;29262:67;;;;-1:-1:-1;;;29262:67:0;;;;;;;:::i;:::-;29346:6;;;;;;;:15;29338:88;;;;-1:-1:-1;;;29338:88:0;;;;;;;:::i;:::-;29432:16;29449:14;29465:24;29490:18;29512:30;29520:10;29531;34329:4;;34320:8;;34329:4;;34339:10;34206:149;29512:30;29431:111;;;;;;;;29569:60;29584:8;29593:35;29608:8;29617:10;29593:14;:35::i;29569:60::-;29641:6;;:50;;-1:-1:-1;;;29641:50:0;;29547:82;;-1:-1:-1;29547:82:0;;-1:-1:-1;;;;;;29641:6:0;;:18;;:50;;29660:8;;29547:82;;29680:3;;29547:82;;29641:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29715:1;29703:9;:13;29700:66;;;29723:37;;-1:-1:-1;;;;;29723:26:0;;;29750:9;29723:37;;;;;;;;;29750:9;29723:26;:37;;;;;;;;;;;;;;;;;;;39600:191;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;39708:6:::1;39704:83;39719:4;:11;39717:1;:13;39704:83;;;39770:8;39779:1;39770:11;;;;;;;;:::i;:::-;;;;;;;39741:7;:16;39749:4;39754:1;39749:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;39741:16:0::1;-1:-1:-1::0;;;;;39741:16:0::1;;;;;;;;;;;;:27;;:40;;;;39731:3;;;;;:::i;:::-;;;;39704:83;;42865:109:::0;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;42934:8:::1;:28:::0;;-1:-1:-1;;;;;;42934:28:0::1;-1:-1:-1::0;;;;;42934:28:0;;;::::1;::::0;;;::::1;::::0;;42865:109::o;39410:187::-;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;39516:6:::1;39512:81;39527:4;:11;39525:1;:13;39512:81;;;39576:8;39585:1;39576:11;;;;;;;;:::i;:::-;;;;;;;39549:7;:16;39557:4;39562:1;39557:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;39549:16:0::1;-1:-1:-1::0;;;;;39549:16:0::1;;;;;;;;;;;;:24;;:38;;;;39539:3;;;;;:::i;:::-;;;;39512:81;;43926:105:::0;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;43995:6:::1;:27:::0;;-1:-1:-1;;;;;;43995:27:0::1;-1:-1:-1::0;;;;;43995:27:0;;;::::1;::::0;;;::::1;::::0;;43926:105::o;26867:25::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26867:25:0;;-1:-1:-1;26867:25:0;:::o;44147:95::-;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;44214:4:::1;:23:::0;;-1:-1:-1;;;;;;44214:23:0::1;-1:-1:-1::0;;;;;44214:23:0;;;::::1;::::0;;;::::1;::::0;;44147:95::o;34358:379::-;34449:7;34462:19;34472:8;34462:9;:19::i;:::-;34511:1;34489:21;34501:8;34489:11;:21::i;:::-;:23;34486:225;;;34519:16;34538:32;34558:8;34567:2;34538:19;:32::i;:::-;34519:51;;34594:1;34584:8;:11;34576:66;;;;-1:-1:-1;;;34576:66:0;;;;;;;:::i;:::-;34662:8;34651:10;:19;34648:58;;;34691:8;34678:21;;34648:58;34513:198;34486:225;-1:-1:-1;34722:10:0;;34358:379;-1:-1:-1;;34358:379:0:o;26928:27::-;;;;;;;;;;;;38617:110;-1:-1:-1;;;;;38693:17:0;;38679:7;38693:17;;;38721:1;38693:17;;;;;;;:25;;:29;;38679:7;;38693:29;;38721:1;;38693:29;:::i;38297:200::-;-1:-1:-1;;;;;38428:17:0;;38357:7;38428:17;;;:7;:17;;;;;;;:25;;;;38400;;:53;;38428:25;38400:53;:::i;:::-;-1:-1:-1;;;;;38370:17:0;;;;;;;:7;:17;;;;;:27;;:83;;;-1:-1:-1;38370:83:0;38297:200::o;44041:99::-;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;44108:6:::1;:23:::0;;-1:-1:-1;;;;;;44108:23:0::1;-1:-1:-1::0;;;;;44108:23:0;;;::::1;::::0;;;::::1;::::0;;44041:99::o;35100:444::-;35172:7;35180;35188;35221:1;35209:10;:13;35201:81;;;;-1:-1:-1;;;35201:81:0;;;;;;;:::i;:::-;35287:15;35305:38;35332:10;35313:4;;;;;;;;;-1:-1:-1;;;;;35313:4:0;-1:-1:-1;;;;;35313:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35305:26;;:38::i;:::-;35287:56;;35365:7;35356:5;:16;;35348:90;;;;-1:-1:-1;;;35348:90:0;;20951:2:1;35348:90:0;;;20933:21:1;20990:2;20970:18;;;20963:30;21029:34;21009:18;;;21002:62;21100:31;21080:18;;;21073:59;21149:19;;35348:90:0;20749:425:1;35348:90:0;35443:25;35471:18;:5;35481:7;35471:9;:18::i;:::-;35443:46;35520:7;;-1:-1:-1;35100:444:0;;-1:-1:-1;;;;35100:444:0:o;28534:639::-;28622:12;;;;:21;28614:67;;;;-1:-1:-1;;;28614:67:0;;;;;;;:::i;:::-;28698:7;;;;:16;28690:88;;;;-1:-1:-1;;;28690:88:0;;;;;;;:::i;:::-;28788:16;28805:14;28821:24;28846:18;28868:30;28876:10;28887;34329:4;;34320:8;;34329:4;;34339:10;34206:149;28868:30;28787:111;;;;;;;;28942:67;28956:9;28966:42;28985:8;28994:10;29005:2;28966:18;:42::i;28942:67::-;29018:6;;:58;;-1:-1:-1;;;29018:58:0;;28903:106;;-1:-1:-1;28903:106:0;;-1:-1:-1;28903:106:0;-1:-1:-1;;;;;;29018:6:0;;;;:17;;28903:106;;29018:58;;29053:8;;28903:106;;29073:2;;29018:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29107:1;29088:16;:20;29085:80;;;29115:44;;-1:-1:-1;;;;;29115:26:0;;;:44;;;;;29142:16;;29115:44;;;;29142:16;29115:26;:44;;;;;;;;;;;;;;;;;;;42984:94;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;43050:5:::1;:16:::0;;-1:-1:-1;;;;;;43050:16:0::1;-1:-1:-1::0;;;;;43050:16:0;;;::::1;::::0;;;::::1;::::0;;42984:94::o;43715:194::-;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;43786:38:::1;43808:8;43786:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;-1:-1:-1;;;;;43786:38:0::1;::::0;;;;;::::1;::::0;::::1;;::::0;;::::1;;;;;;;;43817:6;43786:21;:38::i;:::-;:46;;43827:5;43786:46:::0;43783:118:::1;;43846:8;:21:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;43846:21:0;;;;;::::1;::::0;;-1:-1:-1;;;;;43846:21:0;::::1;-1:-1:-1::0;;;;;;43846:21:0;;::::1;;::::0;;43715:194;:::o;29794:630::-;29865:7;;;;:16;29857:88;;;;-1:-1:-1;;;29857:88:0;;;;;;;:::i;:::-;29959:7;;;;:16;29951:88;;;;-1:-1:-1;;;29951:88:0;;;;;;;:::i;:::-;30045:16;30062:14;30078:24;30103:18;30125:30;30133:10;30144;34329:4;;34320:8;;34329:4;;34339:10;34206:149;30125:30;30044:111;;;;;;;;30199:60;30213:9;30223:35;30238:8;30247:10;30223:14;:35::i;30199:60::-;30268:6;;:59;;-1:-1:-1;;;30268:59:0;;30160:99;;-1:-1:-1;30160:99:0;;-1:-1:-1;30160:99:0;-1:-1:-1;;;;;;30268:6:0;;;;:17;;30160:99;;30268:59;;30303:8;;30160:99;;30323:3;;30268:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30358:1;30339:16;:20;30336:80;;;30366:44;;-1:-1:-1;;;;;30366:26:0;;;:44;;;;;30393:16;;30366:44;;;;30393:16;30366:26;:44;;;;;;;;;;;;;;;;;;;26896:28;;;;;;;;;;;;31167:583;31254:7;;;;:16;31246:88;;;;-1:-1:-1;;;31246:88:0;;;;;;;:::i;:::-;31340:16;31357:14;31373:24;31398:18;31420:30;31428:10;31439;34329:4;;34320:8;;34329:4;;34339:10;34206:149;31420:30;31339:111;;;;;;;;31494:67;31508:9;31518:42;31537:8;31546:10;31557:2;31518:18;:42::i;31494:67::-;31573:6;;:44;;-1:-1:-1;;;31573:44:0;;31455:106;;-1:-1:-1;31455:106:0;;-1:-1:-1;31455:106:0;-1:-1:-1;;;;;;31573:6:0;;;;:20;;:44;;31594:8;;31455:106;;31614:2;;31573:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31629:8:0;;:25;;-1:-1:-1;;;;;31629:8:0;;;;-1:-1:-1;31629:25:0;;;;;-1:-1:-1;31647:6:0;;31629:8;:25;:8;:25;31647:6;31629:8;:25;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31669:20:0;;31666:80;;31696:44;;-1:-1:-1;;;;;31696:26:0;;;:44;;;;;31723:16;;31696:44;;;;31723:16;31696:26;:44;;;;;;;;;;;;;;;;;;;30575:572;30663:6;;;;;;;:15;30655:88;;;;-1:-1:-1;;;30655:88:0;;21731:2:1;30655:88:0;;;21713:21:1;21770:2;21750:18;;;21743:30;21809:34;21789:18;;;21782:62;21880:30;21860:18;;;21853:58;21928:19;;30655:88:0;21529:424:1;30655:88:0;30749:16;30766:14;30782:24;30807:18;30829:30;30837:10;30848;34329:4;;34320:8;;34329:4;;34339:10;34206:149;30829:30;30748:111;;;;;;;;30886:67;30901:8;30910:42;30929:8;30938:10;30949:2;30910:18;:42::i;30886:67::-;30962:6;;:44;;-1:-1:-1;;;30962:44:0;;30864:89;;-1:-1:-1;30864:89:0;;-1:-1:-1;;;;;;30962:6:0;;:20;;:44;;30983:8;;30864:89;;31003:2;;30962:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31018:6:0;;31048:8;;31018:47;;-1:-1:-1;;;31018:47:0;;-1:-1:-1;;;;;31018:6:0;;;;-1:-1:-1;31018:19:0;;-1:-1:-1;31018:47:0;;31038:8;;31048;;31058:6;;31018:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;31080:9:0;:13;31077:66;;31100:37;;-1:-1:-1;;;;;31100:26:0;;;31127:9;31100:37;;;;;;;;;31127:9;31100:26;:37;;;;;;;;;;;;;;;;;;;42759:99;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;42828:7:::1;:18:::0;;-1:-1:-1;;42828:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;42759:99::o;3749:201::-;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3838:22:0;::::1;3830:73;;;::::0;-1:-1:-1;;;3830:73:0;;22160:2:1;3830:73:0::1;::::0;::::1;22142:21:1::0;22199:2;22179:18;;;22172:30;22238:34;22218:18;;;22211:62;-1:-1:-1;;;22289:18:1;;;22282:36;22335:19;;3830:73:0::1;21958:402:1::0;3830:73:0::1;3914:28;3933:8;3914:18;:28::i;41232:812::-:0;3449:7;3476:6;-1:-1:-1;;;;;3476:6:0;3027:10;3542:23;3534:68;;;;-1:-1:-1;;;3534:68:0;;;;;;;:::i;:::-;41346:16:::1;::::0;;;41397:515:::1;41414:9;:16;41412:1;:18;41397:515;;;41452:9;41462:1;41452:12;;;;;;;;:::i;:::-;;;;;;;41441:23;;41473:6;41480:1;41473:9;;;;;;;;:::i;:::-;;;;;;;:17;;41486:4;41473:17;;::::0;41470:437:::1;;41527:2;41530:1;41527:5;;;;;;;;:::i;:::-;;;;;;;41498:7;:17;41506:8;-1:-1:-1::0;;;;;41498:17:0::1;-1:-1:-1::0;;;;;41498:17:0::1;;;;;;;;;;;;:25;;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;41539:5:0::1;::::0;-1:-1:-1;41543:1:0::1;41539:5:::0;::::1;:::i;:::-;;;41580:2;41583:1;41580:5;;;;;;;;:::i;:::-;;;;;;;41551:7;:17;41559:8;-1:-1:-1::0;;;;;41551:17:0::1;-1:-1:-1::0;;;;;41551:17:0::1;;;;;;;;;;;;:25;;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;41592:5:0::1;::::0;-1:-1:-1;41596:1:0::1;41592:5:::0;::::1;:::i;:::-;;;41635:2;41638:1;41635:5;;;;;;;;:::i;:::-;;;;;;;41604:7;:17;41612:8;-1:-1:-1::0;;;;;41604:17:0::1;-1:-1:-1::0;;;;;41604:17:0::1;;;;;;;;;;;;:28;;;:36;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;41647:5:0::1;::::0;-1:-1:-1;41651:1:0::1;41647:5:::0;::::1;:::i;:::-;;;41685:2;41688:1;41685:5;;;;;;;;:::i;:::-;;;;;;;41659:7;:17;41667:8;-1:-1:-1::0;;;;;41659:17:0::1;-1:-1:-1::0;;;;;41659:17:0::1;;;;;;;;;;;;:22;;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;41470:437:0::1;::::0;-1:-1:-1;41470:437:0::1;;41737:2;41740:1;41737:5;;;;;;;;:::i;:::-;;;;;;;41708:7;:17;41716:8;-1:-1:-1::0;;;;;41708:17:0::1;-1:-1:-1::0;;;;;41708:17:0::1;;;;;;;;;;;;:25;;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;41749:5:0::1;::::0;-1:-1:-1;41753:1:0::1;41749:5:::0;::::1;:::i;:::-;;;41790:2;41793:1;41790:5;;;;;;;;:::i;:::-;;;;;;;41761:7;:17;41769:8;-1:-1:-1::0;;;;;41761:17:0::1;-1:-1:-1::0;;;;;41761:17:0::1;;;;;;;;;;;;:25;;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;41802:5:0::1;::::0;-1:-1:-1;41806:1:0::1;41802:5:::0;::::1;:::i;:::-;;;41845:2;41848:1;41845:5;;;;;;;;:::i;:::-;;;;;;;41814:7;:17;41822:8;-1:-1:-1::0;;;;;41814:17:0::1;-1:-1:-1::0;;;;;41814:17:0::1;;;;;;;;;;;;:28;;;:36;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;41857:5:0::1;::::0;-1:-1:-1;41861:1:0::1;41857:5:::0;::::1;:::i;:::-;;;41895:2;41898:1;41895:5;;;;;;;;:::i;:::-;;;;;;;41869:7;:17;41877:8;-1:-1:-1::0;;;;;41869:17:0::1;-1:-1:-1::0;;;;;41869:17:0::1;;;;;;;;;;;;:22;;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;41470:437:0::1;41431:3:::0;::::1;::::0;::::1;:::i;:::-;;;;41397:515;;;;41919:42;41941:10;41919:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;-1:-1:-1;;;;;41919:42:0::1;::::0;;;;;::::1;::::0;::::1;;::::0;;::::1;;;;;;;;;41952:8;41919:21;:42::i;:::-;:51;;41965:5;41919:51:::0;41916:124:::1;;41977:11;:26:::0;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;41977:26:0;::::1;-1:-1:-1::0;;;;;;41977:26:0;;::::1;::::0;::::1;::::0;;;42009:10:::1;:25:::0;;;;::::1;::::0;;-1:-1:-1;42009:25:0;;;;::::1;::::0;;;;::::1;;::::0;;41341:703:::1;;;41232:812:::0;;;:::o;35547:626::-;-1:-1:-1;;;;;37533:17:0;;35654:1;37533:17;;;:7;:17;;;;;:25;35633:22;35625:82;;;;-1:-1:-1;;;35625:82:0;;22567:2:1;35625:82:0;;;22549:21:1;22606:2;22586:18;;;22579:30;22645:34;22625:18;;;22618:62;-1:-1:-1;;;22696:18:1;;;22689:46;22752:19;;35625:82:0;22365:412:1;35625:82:0;35743:1;35720:22;35733:8;35720:12;:22::i;:::-;:24;35712:79;;;;-1:-1:-1;;;35712:79:0;;22984:2:1;35712:79:0;;;22966:21:1;23023:2;23003:18;;;22996:30;23062:34;23042:18;;;23035:62;-1:-1:-1;;;23113:18:1;;;23106:41;23164:19;;35712:79:0;22782:407:1;35712:79:0;35804:6;;:36;;-1:-1:-1;;;35804:36:0;;-1:-1:-1;;;;;35804:6:0;;;;:20;;:36;;35825:8;;35834:5;;35804:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;35796:109;;;;-1:-1:-1;;;35796:109:0;;23396:2:1;35796:109:0;;;23378:21:1;23435:2;23415:18;;;23408:30;23474:34;23454:18;;;23447:62;-1:-1:-1;;;23525:18:1;;;23518:52;23587:19;;35796:109:0;23194:418:1;35796:109:0;35938:1;35924:5;35918:19;:21;35910:95;;;;-1:-1:-1;;;35910:95:0;;23819:2:1;35910:95:0;;;23801:21:1;23858:2;23838:18;;;23831:30;23897:34;23877:18;;;23870:62;23968:31;23948:18;;;23941:59;24017:19;;35910:95:0;23617:425:1;35910:95:0;36038:2;36024:5;36018:19;:22;36010:94;;;;-1:-1:-1;;;36010:94:0;;24249:2:1;36010:94:0;;;24231:21:1;24288:2;24268:18;;;24261:30;24327:34;24307:18;;;24300:62;24398:29;24378:18;;;24371:57;24445:19;;36010:94:0;24047:423:1;36010:94:0;36109:6;;:31;;-1:-1:-1;;;36109:31:0;;-1:-1:-1;;;;;36109:6:0;;;;:15;;:31;;36125:8;;36134:5;;36109:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36145:23;36159:8;36145:13;:23::i;1857:98::-;1915:7;1942:5;1946:1;1942;:5;:::i;:::-;1935:12;1857:98;-1:-1:-1;;;1857:98:0:o;36878:147::-;36931:43;36953:11;36931:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36931:43:0;;;;;;;;;;;;;;;;;;;;36965:8;36931:21;:43::i;:::-;:51;;36977:5;36931:51;36928:93;;36989:11;:26;;;;;;;-1:-1:-1;36989:26:0;;;;;;;;-1:-1:-1;;;;;36989:26:0;;-1:-1:-1;;;;;;36989:26:0;;;;;;36878:147;:::o;37291:162::-;37385:6;;:28;;-1:-1:-1;;;37385:28:0;;-1:-1:-1;;;;;5323:32:1;;;37385:28:0;;;5305:51:1;37347:7:0;;37385:6;;:18;;5278::1;;37385:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;37360:17:0;;;;;;;:7;:17;;;;;:22;;:53;;;-1:-1:-1;37360:53:0;37291:162::o;37171:117::-;37251:6;;:32;;-1:-1:-1;;;37251:32:0;;-1:-1:-1;;;;;5323:32:1;;;37251::0;;;5305:51:1;37231:7:0;;37251:6;;:22;;5278:18:1;;37251:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;37981:88::-;-1:-1:-1;;;;;38035:17:0;;;;;;38063:1;38035:17;;;;;;;:25;;:29;;38063:1;;38035:25;;:29;;38063:1;;38035:29;:::i;:::-;;;;-1:-1:-1;;;37981:88:0:o;4213:218::-;4301:4;;4312:96;4327:5;:12;4325:1;:14;4312:96;;;4366:5;4372:1;4366:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4354:20:0;:8;-1:-1:-1;;;;;4354:20:0;;4351:51;;4390:4;4383:11;;;;;4351:51;4340:3;;;;:::i;:::-;;;;4312:96;;;-1:-1:-1;4420:5:0;;4213:218;-1:-1:-1;;;4213:218:0:o;4439:195::-;4522:7;;4536:93;4551:5;:12;4549:1;:14;4536:93;;;4590:5;4596:1;4590:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4578:20:0;:8;-1:-1:-1;;;;;4578:20:0;;4575:48;;4614:1;-1:-1:-1;4607:8:0;;4575:48;4564:3;;;;:::i;:::-;;;;4536:93;;;;4439:195;;;;:::o;3962:191::-;4036:16;4055:6;;-1:-1:-1;;;;;4072:17:0;;;-1:-1:-1;;;;;;4072:17:0;;;;;;4105:40;;4055:6;;;;;;;4105:40;;4036:16;4105:40;4025:128;3962:191;:::o;40826:403::-;40914:16;;;;40965:260;40982:9;:16;40980:1;:18;40965:260;;;41020:9;41030:1;41020:12;;;;;;;;:::i;:::-;;;;;;;41009:23;;41066:2;41069:1;41066:5;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;41038:17:0;;;;;;:7;:17;;;;;;;:33;41077:5;;;;:::i;:::-;;;41116:2;41119:1;41116:5;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;41088:17:0;;;;;;:7;:17;;;;;;;:25;;:33;41127:5;;;;:::i;:::-;;;41168:2;41171:1;41168:5;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;41138:17:0;;;;;;:7;:17;;;;;;;:28;;:35;41179:5;;;;:::i;:::-;;;41214:2;41217:1;41214:5;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;41190:17:0;;;;;;:7;:17;;;;;;;:22;;:29;40999:3;;;;:::i;:::-;;;;40965:260;;37028:140;37123:6;;:40;;-1:-1:-1;;;37123:40:0;;-1:-1:-1;;;;;24840:32:1;;;37123:40:0;;;24822:51:1;24889:18;;;24882:34;;;37103:7:0;;37123:6;;:27;;24795:18:1;;37123:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1751:98::-;1809:7;1836:5;1840:1;1836;:5;:::i;14:356:1:-;216:2;198:21;;;235:18;;;228:30;294:34;289:2;274:18;;267:62;361:2;346:18;;14:356::o;375:131::-;-1:-1:-1;;;;;450:31:1;;440:42;;430:70;;496:1;493;486:12;511:247;570:6;623:2;611:9;602:7;598:23;594:32;591:52;;;639:1;636;629:12;591:52;678:9;665:23;697:31;722:5;697:31;:::i;945:127::-;1006:10;1001:3;997:20;994:1;987:31;1037:4;1034:1;1027:15;1061:4;1058:1;1051:15;1077:275;1148:2;1142:9;1213:2;1194:13;;-1:-1:-1;;1190:27:1;1178:40;;1248:18;1233:34;;1269:22;;;1230:62;1227:88;;;1295:18;;:::i;:::-;1331:2;1324:22;1077:275;;-1:-1:-1;1077:275:1:o;1357:531::-;1400:5;1453:3;1446:4;1438:6;1434:17;1430:27;1420:55;;1471:1;1468;1461:12;1420:55;1507:6;1494:20;1533:18;1529:2;1526:26;1523:52;;;1555:18;;:::i;:::-;1599:55;1642:2;1623:13;;-1:-1:-1;;1619:27:1;1648:4;1615:38;1599:55;:::i;:::-;1679:2;1670:7;1663:19;1725:3;1718:4;1713:2;1705:6;1701:15;1697:26;1694:35;1691:55;;;1742:1;1739;1732:12;1691:55;1807:2;1800:4;1792:6;1788:17;1781:4;1772:7;1768:18;1755:55;1855:1;1830:16;;;1848:4;1826:27;1819:38;;;;1834:7;1357:531;-1:-1:-1;;;1357:531:1:o;1893:322::-;1962:6;2015:2;2003:9;1994:7;1990:23;1986:32;1983:52;;;2031:1;2028;2021:12;1983:52;2071:9;2058:23;2104:18;2096:6;2093:30;2090:50;;;2136:1;2133;2126:12;2090:50;2159;2201:7;2192:6;2181:9;2177:22;2159:50;:::i;:::-;2149:60;1893:322;-1:-1:-1;;;;1893:322:1:o;2688:248::-;2756:6;2764;2817:2;2805:9;2796:7;2792:23;2788:32;2785:52;;;2833:1;2830;2823:12;2785:52;-1:-1:-1;;2856:23:1;;;2926:2;2911:18;;;2898:32;;-1:-1:-1;2688:248:1:o;2941:183::-;3001:4;3034:18;3026:6;3023:30;3020:56;;;3056:18;;:::i;:::-;-1:-1:-1;3101:1:1;3097:14;3113:4;3093:25;;2941:183::o;3129:737::-;3183:5;3236:3;3229:4;3221:6;3217:17;3213:27;3203:55;;3254:1;3251;3244:12;3203:55;3290:6;3277:20;3316:4;3340:60;3356:43;3396:2;3356:43;:::i;:::-;3340:60;:::i;:::-;3434:15;;;3520:1;3516:10;;;;3504:23;;3500:32;;;3465:12;;;;3544:15;;;3541:35;;;3572:1;3569;3562:12;3541:35;3608:2;3600:6;3596:15;3620:217;3636:6;3631:3;3628:15;3620:217;;;3716:3;3703:17;3733:31;3758:5;3733:31;:::i;:::-;3777:18;;3815:12;;;;3653;;3620:217;;;-1:-1:-1;3855:5:1;3129:737;-1:-1:-1;;;;;;3129:737:1:o;3871:662::-;3925:5;3978:3;3971:4;3963:6;3959:17;3955:27;3945:55;;3996:1;3993;3986:12;3945:55;4032:6;4019:20;4058:4;4082:60;4098:43;4138:2;4098:43;:::i;4082:60::-;4176:15;;;4262:1;4258:10;;;;4246:23;;4242:32;;;4207:12;;;;4286:15;;;4283:35;;;4314:1;4311;4304:12;4283:35;4350:2;4342:6;4338:15;4362:142;4378:6;4373:3;4370:15;4362:142;;;4444:17;;4432:30;;4482:12;;;;4395;;4362:142;;4538:595;4656:6;4664;4717:2;4705:9;4696:7;4692:23;4688:32;4685:52;;;4733:1;4730;4723:12;4685:52;4773:9;4760:23;4802:18;4843:2;4835:6;4832:14;4829:34;;;4859:1;4856;4849:12;4829:34;4882:61;4935:7;4926:6;4915:9;4911:22;4882:61;:::i;:::-;4872:71;;4996:2;4985:9;4981:18;4968:32;4952:48;;5025:2;5015:8;5012:16;5009:36;;;5041:1;5038;5031:12;5009:36;;5064:63;5119:7;5108:8;5097:9;5093:24;5064:63;:::i;:::-;5054:73;;;4538:595;;;;;:::o;5367:118::-;5453:5;5446:13;5439:21;5432:5;5429:32;5419:60;;5475:1;5472;5465:12;5490:241;5546:6;5599:2;5587:9;5578:7;5574:23;5570:32;5567:52;;;5615:1;5612;5605:12;5567:52;5654:9;5641:23;5673:28;5695:5;5673:28;:::i;5736:315::-;5804:6;5812;5865:2;5853:9;5844:7;5840:23;5836:32;5833:52;;;5881:1;5878;5871:12;5833:52;5920:9;5907:23;5939:31;5964:5;5939:31;:::i;:::-;5989:5;6041:2;6026:18;;;;6013:32;;-1:-1:-1;;;5736:315:1:o;6532:180::-;6591:6;6644:2;6632:9;6623:7;6619:23;6615:32;6612:52;;;6660:1;6657;6650:12;6612:52;-1:-1:-1;6683:23:1;;6532:180;-1:-1:-1;6532:180:1:o;6717:1359::-;6845:6;6853;6906:2;6894:9;6885:7;6881:23;6877:32;6874:52;;;6922:1;6919;6912:12;6874:52;6962:9;6949:23;6991:18;7032:2;7024:6;7021:14;7018:34;;;7048:1;7045;7038:12;7018:34;7071:61;7124:7;7115:6;7104:9;7100:22;7071:61;:::i;:::-;7061:71;;7151:2;7141:12;;7206:2;7195:9;7191:18;7178:32;7235:2;7225:8;7222:16;7219:36;;;7251:1;7248;7241:12;7219:36;7274:24;;7329:4;7321:13;;7317:27;-1:-1:-1;7307:55:1;;7358:1;7355;7348:12;7307:55;7394:2;7381:16;7417:60;7433:43;7473:2;7433:43;:::i;7417:60::-;7511:15;;;7593:1;7589:10;;;;7581:19;;7577:28;;;7542:12;;;;7617:19;;;7614:39;;;7649:1;7646;7639:12;7614:39;7681:2;7677;7673:11;7693:353;7709:6;7704:3;7701:15;7693:353;;;7795:3;7782:17;7831:2;7818:11;7815:19;7812:109;;;7875:1;7904:2;7900;7893:14;7812:109;7946:57;7995:7;7990:2;7976:11;7972:2;7968:20;7964:29;7946:57;:::i;:::-;7934:70;;-1:-1:-1;8024:12:1;;;;7726;;7693:353;;;7697:3;8065:5;8055:15;;;;;;;;6717:1359;;;;;:::o;8409:456::-;8486:6;8494;8502;8555:2;8543:9;8534:7;8530:23;8526:32;8523:52;;;8571:1;8568;8561:12;8523:52;8610:9;8597:23;8629:31;8654:5;8629:31;:::i;:::-;8679:5;-1:-1:-1;8736:2:1;8721:18;;8708:32;8749:33;8708:32;8749:33;:::i;:::-;8409:456;;8801:7;;-1:-1:-1;;;8855:2:1;8840:18;;;;8827:32;;8409:456::o;8870:396::-;8946:6;8954;9007:2;8995:9;8986:7;8982:23;8978:32;8975:52;;;9023:1;9020;9013:12;8975:52;9062:9;9049:23;9081:31;9106:5;9081:31;:::i;:::-;9131:5;-1:-1:-1;9188:2:1;9173:18;;9160:32;9201:33;9160:32;9201:33;:::i;:::-;9253:7;9243:17;;;8870:396;;;;;:::o;9704:860::-;9834:6;9842;9850;9858;9911:3;9899:9;9890:7;9886:23;9882:33;9879:53;;;9928:1;9925;9918:12;9879:53;9968:9;9955:23;9997:18;10038:2;10030:6;10027:14;10024:34;;;10054:1;10051;10044:12;10024:34;10077:61;10130:7;10121:6;10110:9;10106:22;10077:61;:::i;:::-;10067:71;;10191:2;10180:9;10176:18;10163:32;10147:48;;10220:2;10210:8;10207:16;10204:36;;;10236:1;10233;10226:12;10204:36;;10259:63;10314:7;10303:8;10292:9;10288:24;10259:63;:::i;:::-;10249:73;;;10372:2;10361:9;10357:18;10344:32;10385:28;10407:5;10385:28;:::i;:::-;10432:5;-1:-1:-1;10489:2:1;10474:18;;10461:32;10502:30;10461:32;10502:30;:::i;:::-;9704:860;;;;-1:-1:-1;9704:860:1;;-1:-1:-1;;9704:860:1:o;10569:383::-;10646:6;10654;10662;10715:2;10703:9;10694:7;10690:23;10686:32;10683:52;;;10731:1;10728;10721:12;10683:52;10770:9;10757:23;10789:31;10814:5;10789:31;:::i;:::-;10839:5;10891:2;10876:18;;10863:32;;-1:-1:-1;10942:2:1;10927:18;;;10914:32;;10569:383;-1:-1:-1;;;10569:383:1:o;11508:417::-;-1:-1:-1;;;;;11757:32:1;;;;11739:51;;11821:2;11806:18;;11799:34;;;;11864:2;11849:18;;11842:34;11907:2;11892:18;;11885:34;11726:3;11711:19;;11508:417::o;11930:1433::-;12079:6;12087;12095;12148:2;12136:9;12127:7;12123:23;12119:32;12116:52;;;12164:1;12161;12154:12;12116:52;12204:9;12191:23;12233:18;12274:2;12266:6;12263:14;12260:34;;;12290:1;12287;12280:12;12260:34;12313:61;12366:7;12357:6;12346:9;12342:22;12313:61;:::i;:::-;12303:71;;12393:2;12383:12;;12448:2;12437:9;12433:18;12420:32;12477:2;12467:8;12464:16;12461:36;;;12493:1;12490;12483:12;12461:36;12516:63;12571:7;12560:8;12549:9;12545:24;12516:63;:::i;:::-;12506:73;;;12632:2;12621:9;12617:18;12604:32;12661:2;12651:8;12648:16;12645:36;;;12677:1;12674;12667:12;12645:36;12700:24;;;-1:-1:-1;12755:4:1;12747:13;;12743:27;-1:-1:-1;12733:55:1;;12784:1;12781;12774:12;12733:55;12820:2;12807:16;12843:60;12859:43;12899:2;12859:43;:::i;12843:60::-;12937:15;;;13019:1;13015:10;;;;13007:19;;13003:28;;;12968:12;;;;13043:19;;;13040:39;;;13075:1;13072;13065:12;13040:39;13099:11;;;;13119:214;13135:6;13130:3;13127:15;13119:214;;;13215:3;13202:17;13232:28;13254:5;13232:28;:::i;:::-;13273:18;;13152:12;;;;13311;;;;13119:214;;;13352:5;13342:15;;;;;;;11930:1433;;;;;:::o;13368:424::-;13570:2;13552:21;;;13609:2;13589:18;;;13582:30;13648:34;13643:2;13628:18;;13621:62;13719:30;13714:2;13699:18;;13692:58;13782:3;13767:19;;13368:424::o;13797:383::-;-1:-1:-1;;;;;14063:15:1;;;14045:34;;14115:15;;;;14110:2;14095:18;;14088:43;14162:2;14147:18;;14140:34;;;;13995:2;13980:18;;13797:383::o;14185:245::-;14252:6;14305:2;14293:9;14284:7;14280:23;14276:32;14273:52;;;14321:1;14318;14311:12;14273:52;14353:9;14347:16;14372:28;14394:5;14372:28;:::i;14837:127::-;14898:10;14893:3;14889:20;14886:1;14879:31;14929:4;14926:1;14919:15;14953:4;14950:1;14943:15;14969:127;15030:10;15025:3;15021:20;15018:1;15011:31;15061:4;15058:1;15051:15;15085:4;15082:1;15075:15;15101:135;15140:3;15161:17;;;15158:43;;15181:18;;:::i;:::-;-1:-1:-1;15228:1:1;15217:13;;15101:135::o;15241:355::-;-1:-1:-1;;;;;15471:32:1;;;;15453:51;;15535:2;15520:18;;15513:34;;;;15578:2;15563:18;;15556:34;15441:2;15426:18;;15241:355::o;15601:419::-;15803:2;15785:21;;;15842:2;15822:18;;;15815:30;15881:34;15876:2;15861:18;;15854:62;15952:25;15947:2;15932:18;;15925:53;16010:3;15995:19;;15601:419::o;16334:184::-;16404:6;16457:2;16445:9;16436:7;16432:23;16428:32;16425:52;;;16473:1;16470;16463:12;16425:52;-1:-1:-1;16496:16:1;;16334:184;-1:-1:-1;16334:184:1:o;17601:407::-;17803:2;17785:21;;;17842:2;17822:18;;;17815:30;17881:34;17876:2;17861:18;;17854:62;-1:-1:-1;;;17947:2:1;17932:18;;17925:41;17998:3;17983:19;;17601:407::o;18013:423::-;18215:2;18197:21;;;18254:2;18234:18;;;18227:30;18293:34;18288:2;18273:18;;18266:62;18364:29;18359:2;18344:18;;18337:57;18426:3;18411:19;;18013:423::o;18441:694::-;18647:1;18643;18638:3;18634:11;18630:19;18622:6;18618:32;18607:9;18600:51;18581:4;18670:2;18708;18703;18692:9;18688:18;18681:30;18740:6;18734:13;18783:6;18778:2;18767:9;18763:18;18756:34;18808:1;18818:140;18832:6;18829:1;18826:13;18818:140;;;18927:14;;;18923:23;;18917:30;18893:17;;;18912:2;18889:26;18882:66;18847:10;;18818:140;;;18976:6;18973:1;18970:13;18967:91;;;19046:1;19041:2;19032:6;19021:9;19017:22;19013:31;19006:42;18967:91;-1:-1:-1;19119:2:1;19098:15;-1:-1:-1;;19094:29:1;19079:45;;;;19126:2;19075:54;;18441:694;-1:-1:-1;;;;18441:694:1:o;19140:125::-;19180:4;19208:1;19205;19202:8;19199:34;;;19213:18;;:::i;:::-;-1:-1:-1;19250:9:1;;19140:125::o;19270:128::-;19310:3;19341:1;19337:6;19334:1;19331:13;19328:39;;;19347:18;;:::i;:::-;-1:-1:-1;19383:9:1;;19270:128::o;19403:127::-;19464:10;19459:3;19455:20;19452:1;19445:31;19495:4;19492:1;19485:15;19519:4;19516:1;19509:15;19915:397;20117:2;20099:21;;;20156:2;20136:18;;;20129:30;20195:34;20190:2;20175:18;;20168:62;-1:-1:-1;;;20261:2:1;20246:18;;20239:31;20302:3;20287:19;;19915:397::o;24475:168::-;24515:7;24581:1;24577;24573:6;24569:14;24566:1;24563:21;24558:1;24551:9;24544:17;24540:45;24537:71;;;24588:18;;:::i;:::-;-1:-1:-1;24628:9:1;;24475:168::o

Swarm Source

ipfs://2d3250ac47b5c8359fa3f1a0f9667569808c2dd016f3307c77f188d6b73f7dc9
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.