Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- Fountain
- Optimization enabled
- false
- Compiler version
- v0.8.19+commit.7dd6d404
- EVM Version
- default
- Verified at
- 2024-08-04T19:31:50.731959Z
Contract source code
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, 'SafeMath: addition overflow');
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, 'SafeMath: subtraction overflow');
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, 'SafeMath: multiplication overflow');
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, 'SafeMath: division by zero');
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, 'SafeMath: modulo by zero');
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
function min(uint256 x, uint256 y) internal pure returns (uint256 z) {
z = x < y ? x : y;
}
function sqrt(uint256 y) internal pure returns (uint256 z) {
if (y > 3) {
z = y;
uint256 x = y / 2 + 1;
while (x < z) {
z = x;
x = (y / x + x) / 2;
}
} else if (y != 0) {
z = 1;
}
}
}
library Address {
error AddressInsufficientBalance(address account);
error AddressEmptyCode(address target);
error FailedInnerCall();
function sendValue(address payable recipient, uint256 amount) internal {
if (address(this).balance < amount) {
revert AddressInsufficientBalance(address(this));
}
(bool success, ) = recipient.call{value: amount}("");
if (!success) {
revert FailedInnerCall();
}
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
if (address(this).balance < value) {
revert AddressInsufficientBalance(address(this));
}
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata);
}
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata);
}
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata);
}
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata
) internal view returns (bytes memory) {
if (!success) {
_revert(returndata);
} else {
if (returndata.length == 0 && target.code.length == 0) {
revert AddressEmptyCode(target);
}
return returndata;
}
}
function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {
if (!success) {
_revert(returndata);
} else {
return returndata;
}
}
function _revert(bytes memory returndata) private pure {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert FailedInnerCall();
}
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address _owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval( address indexed owner, address indexed spender, uint256 value );
}
library SafeERC20 {
using Address for address;
/**
* @dev An operation with an ERC-20 token failed.
*/
error SafeERC20FailedOperation(address token);
/**
* @dev Indicates a failed `decreaseAllowance` request.
*/
error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);
/**
* @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*/
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));
}
/**
* @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the
* calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.
*/
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));
}
/**
* @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*/
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 oldAllowance = token.allowance(address(this), spender);
forceApprove(token, spender, oldAllowance + value);
}
/**
* @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no
* value, non-reverting calls are assumed to be successful.
*/
function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {
unchecked {
uint256 currentAllowance = token.allowance(address(this), spender);
if (currentAllowance < requestedDecrease) {
revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);
}
forceApprove(token, spender, currentAllowance - requestedDecrease);
}
}
/**
* @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,
* non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval
* to be set to zero before setting it to a non-zero value, such as USDT.
*/
function forceApprove(IERC20 token, address spender, uint256 value) internal {
bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));
if (!_callOptionalReturnBool(token, approvalCall)) {
_callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));
_callOptionalReturn(token, approvalCall);
}
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
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);
if (returndata.length != 0 && !abi.decode(returndata, (bool))) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*
* This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.
*/
function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {
// 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 cannot use {Address-functionCall} here since this should return false
// and not revert is the subcall reverts.
(bool success, bytes memory returndata) = address(token).call(data);
return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0;
}
}
interface FarmToken is IERC20 {
function mint(address to, uint256 amount) external;
}
abstract contract Auth { address internal owner; mapping(address => bool) internal authorizations;
constructor(address _owner) { owner = _owner; authorizations[_owner] = true; }
modifier onlyOwner() { require(isOwner(msg.sender), "You Arent That Special"); _; }
modifier authorized() { require(isAuthorized(msg.sender), "You Make Me Laugh"); _; }
function authorize(address adr) public onlyOwner { authorizations[adr] = true; }
function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; }
function isOwner(address account) public view returns (bool) { return account == owner; }
function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; }
function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); }
event OwnershipTransferred(address owner);
}
contract Fountain is Auth {
using SafeMath for uint256;
FarmToken public farmToken;
IERC20 public refToken;
address TOKEN = 0xC6B28B2E3Bf9fF26299D540a4D654F7ade4dFdB0;
address referralToken = 0xD1fcD37A275Fd04197a40dBE481766a4e891C4C4;
uint256 public DAILY_INTEREST = 10; // 1% interest in basis points (1% = 10 / 1000)
uint256 public constant PERCENTS_DIVIDER = 1000;
uint256 public constant WITHDRAWAL_TAX = 150; // 15% tax
uint256 public constant COMPOUND_TAX = 50; // 5% tax
uint256 public constant DEPOSIT_TAX = 100; // 10% tax
uint256 public MIN_INVEST_LIMIT = 10 * 1e18;
uint256 public constant WALLET_DEPOSIT_LIMIT = 40000 * 1e18;
uint256 public constant MAX_PAYOUT_MULTIPLIER = 3; // 3x initial deposit
uint256 public constant REFERRAL = 50; // 5% referral reward
uint256 public MIN_REF_TOKEN_AMOUNT = 250000; // 100k token per level
uint256 public constant IRS_TAX_LEVEL_1 = 40000 * 1e18; // 80k tokens
uint256 public constant IRS_TAX_LEVEL_2 = 60000 * 1e18; // 90k tokens
uint256 public constant IRS_TAX_LEVEL_3 = 80000 * 1e18; // 100k tokens
uint256 public constant IRS_TAX_LEVEL_4 = 100000 * 1e18; // 110k tokens
uint256 public totalStaked;
uint256 public totalUsers;
uint256 public totalRefBonus;
uint256 public totalWithdrawn;
bool public contractStarted;
bool public blacklistActive = true;
mapping(address => bool) public blacklisted;
address private growth;
address private trash;
uint256 public userCount;
struct User {
uint256 initialDeposit;
uint256 userDeposit;
uint256 lastDepositTime;
uint256 totalWithdrawn;
address referrer;
uint256 referrals;
uint256 referralReward;
}
mapping(address => User) public users;
event ReferralRewardSkipped(address indexed referrer, address indexed user, uint256 amount, string reason);
constructor() Auth(msg.sender) {
farmToken = FarmToken(TOKEN);
refToken = IERC20(referralToken);
growth = 0xC6B28B2E3Bf9fF26299D540a4D654F7ade4dFdB0;
trash = 0x000000000000000000000000000000000000dEaD;
contractStarted = true;
}
function isContract(address addr) internal view returns (bool) {
uint size;
assembly { size := extcodesize(addr) }
return size > 0;
}
function setBlacklist(address wallet, bool status) external onlyOwner {
blacklisted[wallet] = status;
}
function deposit(uint256 amount, address ref) public {
require(contractStarted, "Contract not started yet");
require(!blacklisted[msg.sender], "Address is blacklisted");
require(amount >= MIN_INVEST_LIMIT, "Minimum investment not met");
User storage user = users[msg.sender];
// Compound existing interest
compoundInterest(user);
if (user.initialDeposit == 0) {
userCount++;
}
require(user.initialDeposit.add(amount) <= WALLET_DEPOSIT_LIMIT, "Max deposit limit reached");
uint256 tax = amount.mul(DEPOSIT_TAX).div(PERCENTS_DIVIDER);
uint256 amountAfterTax = amount.sub(tax);
farmToken.transferFrom(address(msg.sender), address(this), amount);
user.userDeposit = user.userDeposit.add(amount);
user.initialDeposit = user.initialDeposit.add(amount);
user.lastDepositTime = block.timestamp;
totalStaked = totalStaked.add(amountAfterTax);
farmToken.mint(address(this), amount.mul(2).add(tax));
// Distribute the deposit tax
farmToken.transfer(growth, tax.mul(20).div(100));
farmToken.transfer(trash, tax.mul(80).div(100));
if (user.referrer == address(0)) {
require(ref == address(0) || users[ref].initialDeposit > 0, "Referrer must be a valid user");
if (ref != msg.sender) {
user.referrer = ref;
}
address upline1 = user.referrer;
if (upline1 != address(0)) {
users[upline1].referrals = users[upline1].referrals.add(1);
}
}
if (user.referrer != address(0)) {
address upline = user.referrer;
if (upline != address(0)) {
uint256 refTokenBalance = refToken.balanceOf(upline);
if (refTokenBalance >= MIN_REF_TOKEN_AMOUNT) {
uint256 refRewards = amount.mul(REFERRAL).div(PERCENTS_DIVIDER);
farmToken.mint(address(this), refRewards);
farmToken.transfer(upline, refRewards);
users[upline].referralReward = users[upline].referralReward.add(refRewards);
totalRefBonus = totalRefBonus.add(refRewards);
} else {
emit ReferralRewardSkipped(upline, msg.sender, amount, "Insufficient refToken balance");
}
}
}
}
function compoundInterest(User storage user) internal {
uint256 interest = calculateInterest(user.initialDeposit, user.userDeposit, user.lastDepositTime, user.totalWithdrawn);
if (interest > 0) {
uint256 compoundTax = interest.mul(COMPOUND_TAX).div(PERCENTS_DIVIDER);
user.userDeposit = user.userDeposit.add(interest);
user.lastDepositTime = block.timestamp;
// Mint half of the interest amount
farmToken.mint(address(this), compoundTax);
// Transfer the compound tax
farmToken.transfer(growth, compoundTax.mul(10).div(100)); // 25% to growth
farmToken.transfer(trash, compoundTax.mul(90).div(100)); // 75% to trash
}
}
function withdraw() public {
require(contractStarted, "Contract not started yet");
require(!blacklisted[msg.sender], "Address is blacklisted");
User storage user = users[msg.sender];
uint256 interest = calculateInterest(user.initialDeposit, user.userDeposit, user.lastDepositTime, user.totalWithdrawn);
require(interest > 0, "No interest accumulated");
uint256 maxPayout = user.initialDeposit.mul(MAX_PAYOUT_MULTIPLIER);
require(user.totalWithdrawn.add(interest) <= maxPayout, "Exceeds max payout");
// Apply withdrawal tax
uint256 withdrawalTax = interest.mul(WITHDRAWAL_TAX).div(PERCENTS_DIVIDER);
// Calculate payout before IRS tax
uint256 preTaxPayout = interest.sub(withdrawalTax);
// Apply IRS tax
uint256 irsTax = 0;
uint256 totalClaimed = user.totalWithdrawn.add(interest);
if (totalClaimed < IRS_TAX_LEVEL_1) {
irsTax = 0;
} else if (totalClaimed < IRS_TAX_LEVEL_2) {
irsTax = preTaxPayout.mul(10).div(100);
} else if (totalClaimed < IRS_TAX_LEVEL_3) {
irsTax = preTaxPayout.mul(20).div(100);
} else if (totalClaimed < IRS_TAX_LEVEL_4) {
irsTax = preTaxPayout.mul(30).div(100);
} else {
irsTax = preTaxPayout.mul(40).div(100);
}
uint256 totalTax = withdrawalTax.add(irsTax);
uint256 payout = interest.sub(totalTax);
user.totalWithdrawn = user.totalWithdrawn.add(interest);
user.lastDepositTime = block.timestamp;
farmToken.transfer(msg.sender, payout);
farmToken.transfer(growth, totalTax.mul(20).div(100));
farmToken.transfer(trash, totalTax.mul(80).div(100));
}
function compound() public {
require(contractStarted, "Contract not started yet");
require(!blacklisted[msg.sender], "Address is blacklisted");
User storage user = users[msg.sender];
uint256 interest = calculateInterest(user.initialDeposit, user.userDeposit, user.lastDepositTime, user.totalWithdrawn);
require(interest > 0, "No interest accumulated");
uint256 tax = interest.mul(COMPOUND_TAX).div(PERCENTS_DIVIDER);
user.userDeposit = user.userDeposit.add(interest);
user.lastDepositTime = block.timestamp;
farmToken.mint(address(this), tax);
farmToken.transfer(growth, tax.mul(10).div(100));
farmToken.transfer(trash, tax.mul(90).div(100));
}
function getUserInfo(address _adr) public view returns (
uint256 _initialDeposit,
uint256 _userDeposit,
uint256 _referralReward,
uint256 _lastDepositTime,
uint256 _totalWithdrawn,
address _referrer,
uint256 _referrals) {
_initialDeposit = users[_adr].initialDeposit;
_userDeposit = users[_adr].userDeposit;
_referralReward = users[_adr].referralReward;
_lastDepositTime = users[_adr].lastDepositTime;
_totalWithdrawn = users[_adr].totalWithdrawn;
_referrer = users[_adr].referrer;
_referrals = users[_adr].referrals;
}
function calculateInterest(uint256 _initialDeposit, uint256 _userDeposit, uint256 _lastDepositTime, uint256 _totalWithdrawn) public view returns (uint256) {
uint256 maxPayout = _initialDeposit.mul(MAX_PAYOUT_MULTIPLIER);
uint256 remainingPayout = maxPayout.sub(_totalWithdrawn);
uint256 duration = block.timestamp.sub(_lastDepositTime);
uint256 dailyInterest = _userDeposit.mul(DAILY_INTEREST).div(PERCENTS_DIVIDER);
uint256 interest = dailyInterest.mul(duration).div(1 days);
if (interest > remainingPayout) {
interest = remainingPayout;
}
return interest;
}
function getAvailableEarnings(address userAddress) public view returns (uint256) {
User storage user = users[userAddress];
uint256 interest = calculateInterest(user.initialDeposit, user.userDeposit, user.lastDepositTime, user.totalWithdrawn);
return interest;
}
function getSiteInfo() public view returns (uint256 _totalStaked, uint256 _totalRefBonus, uint256 _totalUsers) {
_totalUsers = userCount;
return (totalStaked, totalRefBonus, _totalUsers);
}
function getUserCount() public view returns (uint256) {
return userCount;
}
function getBalance() public view returns (uint256) {
return farmToken.balanceOf(address(this));
}
function changeGrowth(address newGrowth) external onlyOwner {
growth = newGrowth;
}
function newDaily (uint256 _newDaily) external onlyOwner {
DAILY_INTEREST = _newDaily;
}
function newMinRefToken (uint256 _newMin) external onlyOwner {
MIN_REF_TOKEN_AMOUNT = _newMin;
}
function newMINInvest (uint256 _newInvestMIn) external onlyOwner{
MIN_INVEST_LIMIT = _newInvestMIn;
}
function changeReferrer(address newReferrer) public {
require(contractStarted, "Contract not started yet");
require(!blacklisted[msg.sender], "Address is blacklisted");
require(newReferrer != msg.sender, "Cannot refer yourself");
require(newReferrer == address(0) || users[newReferrer].initialDeposit > 0, "Referrer must be a valid user");
User storage user = users[msg.sender];
// Only proceed if the new referrer is different
if (user.referrer != newReferrer) {
// Reduce the referral count for the current referrer
if (user.referrer != address(0)) {
users[user.referrer].referrals = users[user.referrer].referrals.sub(1);
}
// Update the new referrer
user.referrer = newReferrer;
// Increment referrals count for the new referrer
if (newReferrer != address(0)) {
users[newReferrer].referrals = users[newReferrer].referrals.add(1);
}
}
}
}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"ReferralRewardSkipped","inputs":[{"type":"address","name":"referrer","internalType":"address","indexed":true},{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false},{"type":"string","name":"reason","internalType":"string","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"COMPOUND_TAX","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"DAILY_INTEREST","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"DEPOSIT_TAX","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"IRS_TAX_LEVEL_1","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"IRS_TAX_LEVEL_2","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"IRS_TAX_LEVEL_3","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"IRS_TAX_LEVEL_4","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MAX_PAYOUT_MULTIPLIER","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MIN_INVEST_LIMIT","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MIN_REF_TOKEN_AMOUNT","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENTS_DIVIDER","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"REFERRAL","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"WALLET_DEPOSIT_LIMIT","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"WITHDRAWAL_TAX","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"authorize","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"blacklistActive","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"blacklisted","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"calculateInterest","inputs":[{"type":"uint256","name":"_initialDeposit","internalType":"uint256"},{"type":"uint256","name":"_userDeposit","internalType":"uint256"},{"type":"uint256","name":"_lastDepositTime","internalType":"uint256"},{"type":"uint256","name":"_totalWithdrawn","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeGrowth","inputs":[{"type":"address","name":"newGrowth","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeReferrer","inputs":[{"type":"address","name":"newReferrer","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"compound","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"contractStarted","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"deposit","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"},{"type":"address","name":"ref","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract FarmToken"}],"name":"farmToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getAvailableEarnings","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getBalance","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"_totalStaked","internalType":"uint256"},{"type":"uint256","name":"_totalRefBonus","internalType":"uint256"},{"type":"uint256","name":"_totalUsers","internalType":"uint256"}],"name":"getSiteInfo","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserCount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"_initialDeposit","internalType":"uint256"},{"type":"uint256","name":"_userDeposit","internalType":"uint256"},{"type":"uint256","name":"_referralReward","internalType":"uint256"},{"type":"uint256","name":"_lastDepositTime","internalType":"uint256"},{"type":"uint256","name":"_totalWithdrawn","internalType":"uint256"},{"type":"address","name":"_referrer","internalType":"address"},{"type":"uint256","name":"_referrals","internalType":"uint256"}],"name":"getUserInfo","inputs":[{"type":"address","name":"_adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isAuthorized","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isOwner","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"newDaily","inputs":[{"type":"uint256","name":"_newDaily","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"newMINInvest","inputs":[{"type":"uint256","name":"_newInvestMIn","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"newMinRefToken","inputs":[{"type":"uint256","name":"_newMin","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IERC20"}],"name":"refToken","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setBlacklist","inputs":[{"type":"address","name":"wallet","internalType":"address"},{"type":"bool","name":"status","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalRefBonus","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalStaked","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalUsers","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalWithdrawn","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"adr","internalType":"address payable"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unauthorize","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"userCount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"initialDeposit","internalType":"uint256"},{"type":"uint256","name":"userDeposit","internalType":"uint256"},{"type":"uint256","name":"lastDepositTime","internalType":"uint256"},{"type":"uint256","name":"totalWithdrawn","internalType":"uint256"},{"type":"address","name":"referrer","internalType":"address"},{"type":"uint256","name":"referrals","internalType":"uint256"},{"type":"uint256","name":"referralReward","internalType":"uint256"}],"name":"users","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdraw","inputs":[]}]
Contract Creation Code
0x608060405273c6b28b2e3bf9ff26299d540a4d654f7ade4dfdb0600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d1fcd37a275fd04197a40dbe481766a4e891c4c4600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a600655678ac7230489e800006007556203d0906008556001600d60016101000a81548160ff0219169083151502179055503480156100ed57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c6b28b2e3bf9ff26299d540a4d654f7ade4dfdb0600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60006101000a81548160ff02191690831515021790555061411d8061030f6000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80638b3915531161015c578063c63568c7116100ce578063e889795911610087578063e88979591461076c578063f0b37c041461078a578063f2fde38b146107a6578063f6546372146107c2578063f69e2046146107e0578063fe9fbb80146107ea5761027f565b8063c63568c7146106aa578063cd329fc3146106c8578063d054ac9c146106e6578063d48db82714610704578063d4e144a614610720578063dbac26e91461073c5761027f565b8063b6a5d7de11610120578063b6a5d7de146105fa578063b6e6fcf614610616578063b8fd179414610634578063bd97ce3a14610652578063bff1f9e11461066e578063c2442f931461068c5761027f565b80638b3915531461054e5780639fd37a881461056c578063a87430ba1461058a578063ae5a97aa146105c0578063b5cb15f7146105dc5761027f565b8063333f57b3116101f55780636386c1c7116101b95780636386c1c71461046057806364c03a5e1461049657806369b11dd5146104c65780636e553f65146104e4578063724dfc9214610500578063817b1cd2146105305761027f565b8063333f57b3146103dc5780633ccfd60b146103fa57806340572b7d146104045780634b319713146104225780634ce87053146104405761027f565b80631848b8dc116102475780631848b8dc146103185780631855fac8146103365780631cff0825146103545780632363c24814610372578063267edd2f1461038e5780632f54bf6e146103ac5761027f565b806301c234a8146102845780630420c98e146102a257806307973ccf146102c057806312065fe0146102de578063153b0d1e146102fc575b600080fd5b61028c61081a565b60405161029991906133a3565b60405180910390f35b6102aa610820565b6040516102b791906133a3565b60405180910390f35b6102c8610825565b6040516102d591906133a3565b60405180910390f35b6102e661082b565b6040516102f391906133a3565b60405180910390f35b61031660048036038101906103119190613459565b6108ce565b005b610320610971565b60405161032d91906133a3565b60405180910390f35b61033e61097f565b60405161034b91906133a3565b60405180910390f35b61035c61098d565b60405161036991906134f8565b60405180910390f35b61038c6004803603810190610387919061353f565b6109b3565b005b610396610a05565b6040516103a391906133a3565b60405180910390f35b6103c660048036038101906103c1919061356c565b610a0b565b6040516103d391906135a8565b60405180910390f35b6103e4610a64565b6040516103f191906135a8565b60405180910390f35b610402610a77565b005b61040c6110a9565b60405161041991906133a3565b60405180910390f35b61042a6110b7565b60405161043791906133a3565b60405180910390f35b6104486110bd565b604051610457939291906135c3565b60405180910390f35b61047a6004803603810190610475919061356c565b6110d6565b60405161048d9796959493929190613609565b60405180910390f35b6104b060048036038101906104ab919061356c565b6112ef565b6040516104bd91906133a3565b60405180910390f35b6104ce61135d565b6040516104db91906133a3565b60405180910390f35b6104fe60048036038101906104f99190613678565b611363565b005b61051a600480360381019061051591906136b8565b611f94565b60405161052791906133a3565b60405180910390f35b610538612050565b60405161054591906133a3565b60405180910390f35b610556612056565b60405161056391906133a3565b60405180910390f35b61057461205b565b60405161058191906133a3565b60405180910390f35b6105a4600480360381019061059f919061356c565b612069565b6040516105b7979695949392919061371f565b60405180910390f35b6105da60048036038101906105d5919061353f565b6120cb565b005b6105e461211d565b6040516105f191906133a3565b60405180910390f35b610614600480360381019061060f919061356c565b612127565b005b61061e6121c9565b60405161062b91906135a8565b60405180910390f35b61063c6121dc565b60405161064991906133a3565b60405180910390f35b61066c6004803603810190610667919061356c565b6121e1565b005b6106766126d7565b60405161068391906133a3565b60405180910390f35b6106946126dd565b6040516106a191906137af565b60405180910390f35b6106b2612703565b6040516106bf91906133a3565b60405180910390f35b6106d0612708565b6040516106dd91906133a3565b60405180910390f35b6106ee61270e565b6040516106fb91906133a3565b60405180910390f35b61071e6004803603810190610719919061356c565b612714565b005b61073a6004803603810190610735919061353f565b6127a0565b005b6107566004803603810190610751919061356c565b6127f2565b60405161076391906135a8565b60405180910390f35b610774612812565b60405161078191906133a3565b60405180910390f35b6107a4600480360381019061079f919061356c565b612820565b005b6107c060048036038101906107bb9190613808565b6128c3565b005b6107ca6129dc565b6040516107d791906133a3565b60405180910390f35b6107e86129e1565b005b61080460048036038101906107ff919061356c565b612e1d565b60405161081191906135a8565b60405180910390f35b6103e881565b609681565b60115481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108889190613835565b602060405180830381865afa1580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190613865565b905090565b6108d733610a0b565b610916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090d906138ef565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b690878678326eac900000081565b690878678326eac900000081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109bc33610a0b565b6109fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f2906138ef565b60405180910390fd5b8060078190555050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600d60009054906101000a900460ff1681565b600d60009054906101000a900460ff16610ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abd9061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4a906139c7565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000610bb48260000154836001015484600201548560030154611f94565b905060008111610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090613a33565b60405180910390fd5b6000610c1360038460000154612e7390919063ffffffff16565b905080610c2d838560030154612eed90919063ffffffff16565b1115610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6590613a9f565b60405180910390fd5b6000610c986103e8610c8a609686612e7390919063ffffffff16565b612f4b90919063ffffffff16565b90506000610caf8285612f9590919063ffffffff16565b9050600080610ccb868860030154612eed90919063ffffffff16565b9050690878678326eac9000000811015610ce85760009150610dd5565b690cb49b44ba602d800000811015610d2857610d216064610d13600a86612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9150610dd4565b6910f0cf064dd592000000811015610d6857610d616064610d53601486612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9150610dd3565b69152d02c7e14af6800000811015610da857610da16064610d93601e86612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9150610dd2565b610dcf6064610dc1602886612e7390919063ffffffff16565b612f4b90919063ffffffff16565b91505b5b5b5b6000610dea8386612eed90919063ffffffff16565b90506000610e018289612f9590919063ffffffff16565b9050610e1a888a60030154612eed90919063ffffffff16565b8960030181905550428960020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e88929190613abf565b6020604051808303816000875af1158015610ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecb9190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f546064610f46601488612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610f71929190613abf565b6020604051808303816000875af1158015610f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb49190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661103d606461102f605088612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b815260040161105a929190613abf565b6020604051808303816000875af1158015611079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109d9190613afd565b50505050505050505050565b69152d02c7e14af680000081565b600c5481565b60008060006011549050600954600b5492509250909192565b6000806000806000806000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549650601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549550601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601549450601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549350601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549250601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501549050919395979092949650565b600080601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006113518260000154836001015484600201548560030154611f94565b90508092505050919050565b600b5481565b600d60009054906101000a900460ff166113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a99061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561143f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611436906139c7565b60405180910390fd5b600754821015611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b90613b76565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506114d081612fdf565b60008160000154036114f557601160008154809291906114ef90613bc5565b91905055505b690878678326eac9000000611517848360000154612eed90919063ffffffff16565b1115611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613c59565b60405180910390fd5b60006115826103e8611574606487612e7390919063ffffffff16565b612f4b90919063ffffffff16565b905060006115998286612f9590919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b81526004016115fa93929190613c79565b6020604051808303816000875af1158015611619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163d9190613afd565b50611655858460010154612eed90919063ffffffff16565b8360010181905550611674858460000154612eed90919063ffffffff16565b836000018190555042836002018190555061169a81600954612eed90919063ffffffff16565b600981905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930611705856116f760028b612e7390919063ffffffff16565b612eed90919063ffffffff16565b6040518363ffffffff1660e01b8152600401611722929190613abf565b600060405180830381600087803b15801561173c57600080fd5b505af1158015611750573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117dc60646117ce601488612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b81526004016117f9929190613abf565b6020604051808303816000875af1158015611818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183c9190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118c560646118b7605088612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b81526004016118e2929190613abf565b6020604051808303816000875af1158015611901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119259190613afd565b50600073ffffffffffffffffffffffffffffffffffffffff168360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611bad57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806119fb57506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190613cfc565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611ab157838360040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611bab57611b646001601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612eed90919063ffffffff16565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b505b600073ffffffffffffffffffffffffffffffffffffffff168360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f8d5760008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f8b576000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401611cbf9190613835565b602060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d009190613865565b90506008548110611f23576000611d356103e8611d2760328b612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401611d94929190613abf565b600060405180830381600087803b158015611dae57600080fd5b505af1158015611dc2573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611e23929190613abf565b6020604051808303816000875af1158015611e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e669190613afd565b50611ebc81601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154612eed90919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550611f1781600b54612eed90919063ffffffff16565b600b8190555050611f89565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f09bc325309846b49b3ad70b1f1c9e2a493283014af4b43dba3335ce4670d76b589604051611f809190613d68565b60405180910390a35b505b505b5050505050565b600080611fab600387612e7390919063ffffffff16565b90506000611fc28483612f9590919063ffffffff16565b90506000611fd98642612f9590919063ffffffff16565b905060006120066103e8611ff86006548b612e7390919063ffffffff16565b612f4b90919063ffffffff16565b90506000612032620151806120248585612e7390919063ffffffff16565b612f4b90919063ffffffff16565b905083811115612040578390505b8095505050505050949350505050565b60095481565b603281565b6910f0cf064dd59200000081565b60126020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060050154908060060154905087565b6120d433610a0b565b612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a906138ef565b60405180910390fd5b8060068190555050565b6000601154905090565b61213033610a0b565b61216f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612166906138ef565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60019054906101000a900460ff1681565b606481565b600d60009054906101000a900460ff16612230576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122279061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b4906139c7565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290613de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806123a857506000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b6123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123de90613cfc565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508173ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d357600073ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125be576125536001601260008460040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612f9590919063ffffffff16565b601260008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b818160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146126d25761268b6001601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612eed90919063ffffffff16565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b5b5050565b600a5481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603281565b60075481565b60085481565b61271d33610a0b565b61275c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612753906138ef565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6127a933610a0b565b6127e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127df906138ef565b60405180910390fd5b8060088190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b690cb49b44ba602d80000081565b61282933610a0b565b612868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f906138ef565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6128cc33610a0b565b61290b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612902906138ef565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516129d19190613e23565b60405180910390a150565b600381565b600d60009054906101000a900460ff16612a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a279061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab4906139c7565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000612b1e8260000154836001015484600201548560030154611f94565b905060008111612b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5a90613a33565b60405180910390fd5b6000612b8d6103e8612b7f603285612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9050612ba6828460010154612eed90919063ffffffff16565b8360010181905550428360020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401612c14929190613abf565b600060405180830381600087803b158015612c2e57600080fd5b505af1158015612c42573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612cce6064612cc0600a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401612ceb929190613abf565b6020604051808303816000875af1158015612d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2e9190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612db76064612da9605a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401612dd4929190613abf565b6020604051808303816000875af1158015612df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e179190613afd565b50505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000808303612e855760009050612ee7565b60008284612e939190613e3e565b9050828482612ea29190613eaf565b14612ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed990613f52565b60405180910390fd5b809150505b92915050565b6000808284612efc9190613f72565b905083811015612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3890613ff2565b60405180910390fd5b8091505092915050565b6000612f8d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132c3565b905092915050565b6000612fd783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613326565b905092915050565b6000612ffd8260000154836001015484600201548560030154611f94565b905060008111156132bf5760006130326103e8613024603285612e7390919063ffffffff16565b612f4b90919063ffffffff16565b905061304b828460010154612eed90919063ffffffff16565b8360010181905550428360020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b81526004016130b9929190613abf565b600060405180830381600087803b1580156130d357600080fd5b505af11580156130e7573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166131736064613165600a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401613190929190613abf565b6020604051808303816000875af11580156131af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d39190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661325c606461324e605a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401613279929190613abf565b6020604051808303816000875af1158015613298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132bc9190613afd565b50505b5050565b6000808311829061330a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133019190614091565b60405180910390fd5b50600083856133199190613eaf565b9050809150509392505050565b600083831115829061336e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133659190614091565b60405180910390fd5b506000838561337d91906140b3565b9050809150509392505050565b6000819050919050565b61339d8161338a565b82525050565b60006020820190506133b86000830184613394565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133ee826133c3565b9050919050565b6133fe816133e3565b811461340957600080fd5b50565b60008135905061341b816133f5565b92915050565b60008115159050919050565b61343681613421565b811461344157600080fd5b50565b6000813590506134538161342d565b92915050565b600080604083850312156134705761346f6133be565b5b600061347e8582860161340c565b925050602061348f85828601613444565b9150509250929050565b6000819050919050565b60006134be6134b96134b4846133c3565b613499565b6133c3565b9050919050565b60006134d0826134a3565b9050919050565b60006134e2826134c5565b9050919050565b6134f2816134d7565b82525050565b600060208201905061350d60008301846134e9565b92915050565b61351c8161338a565b811461352757600080fd5b50565b60008135905061353981613513565b92915050565b600060208284031215613555576135546133be565b5b60006135638482850161352a565b91505092915050565b600060208284031215613582576135816133be565b5b60006135908482850161340c565b91505092915050565b6135a281613421565b82525050565b60006020820190506135bd6000830184613599565b92915050565b60006060820190506135d86000830186613394565b6135e56020830185613394565b6135f26040830184613394565b949350505050565b613603816133e3565b82525050565b600060e08201905061361e600083018a613394565b61362b6020830189613394565b6136386040830188613394565b6136456060830187613394565b6136526080830186613394565b61365f60a08301856135fa565b61366c60c0830184613394565b98975050505050505050565b6000806040838503121561368f5761368e6133be565b5b600061369d8582860161352a565b92505060206136ae8582860161340c565b9150509250929050565b600080600080608085870312156136d2576136d16133be565b5b60006136e08782880161352a565b94505060206136f18782880161352a565b93505060406137028782880161352a565b92505060606137138782880161352a565b91505092959194509250565b600060e082019050613734600083018a613394565b6137416020830189613394565b61374e6040830188613394565b61375b6060830187613394565b61376860808301866135fa565b61377560a0830185613394565b61378260c0830184613394565b98975050505050505050565b6000613799826134c5565b9050919050565b6137a98161378e565b82525050565b60006020820190506137c460008301846137a0565b92915050565b60006137d5826133c3565b9050919050565b6137e5816137ca565b81146137f057600080fd5b50565b600081359050613802816137dc565b92915050565b60006020828403121561381e5761381d6133be565b5b600061382c848285016137f3565b91505092915050565b600060208201905061384a60008301846135fa565b92915050565b60008151905061385f81613513565b92915050565b60006020828403121561387b5761387a6133be565b5b600061388984828501613850565b91505092915050565b600082825260208201905092915050565b7f596f75204172656e742054686174205370656369616c00000000000000000000600082015250565b60006138d9601683613892565b91506138e4826138a3565b602082019050919050565b60006020820190508181036000830152613908816138cc565b9050919050565b7f436f6e7472616374206e6f742073746172746564207965740000000000000000600082015250565b6000613945601883613892565b91506139508261390f565b602082019050919050565b6000602082019050818103600083015261397481613938565b9050919050565b7f4164647265737320697320626c61636b6c697374656400000000000000000000600082015250565b60006139b1601683613892565b91506139bc8261397b565b602082019050919050565b600060208201905081810360008301526139e0816139a4565b9050919050565b7f4e6f20696e74657265737420616363756d756c61746564000000000000000000600082015250565b6000613a1d601783613892565b9150613a28826139e7565b602082019050919050565b60006020820190508181036000830152613a4c81613a10565b9050919050565b7f45786365656473206d6178207061796f75740000000000000000000000000000600082015250565b6000613a89601283613892565b9150613a9482613a53565b602082019050919050565b60006020820190508181036000830152613ab881613a7c565b9050919050565b6000604082019050613ad460008301856135fa565b613ae16020830184613394565b9392505050565b600081519050613af78161342d565b92915050565b600060208284031215613b1357613b126133be565b5b6000613b2184828501613ae8565b91505092915050565b7f4d696e696d756d20696e766573746d656e74206e6f74206d6574000000000000600082015250565b6000613b60601a83613892565b9150613b6b82613b2a565b602082019050919050565b60006020820190508181036000830152613b8f81613b53565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd08261338a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c0257613c01613b96565b5b600182019050919050565b7f4d6178206465706f736974206c696d6974207265616368656400000000000000600082015250565b6000613c43601983613892565b9150613c4e82613c0d565b602082019050919050565b60006020820190508181036000830152613c7281613c36565b9050919050565b6000606082019050613c8e60008301866135fa565b613c9b60208301856135fa565b613ca86040830184613394565b949350505050565b7f5265666572726572206d75737420626520612076616c69642075736572000000600082015250565b6000613ce6601d83613892565b9150613cf182613cb0565b602082019050919050565b60006020820190508181036000830152613d1581613cd9565b9050919050565b7f496e73756666696369656e7420726566546f6b656e2062616c616e6365000000600082015250565b6000613d52601d83613892565b9150613d5d82613d1c565b602082019050919050565b6000604082019050613d7d6000830184613394565b8181036020830152613d8e81613d45565b905092915050565b7f43616e6e6f7420726566657220796f757273656c660000000000000000000000600082015250565b6000613dcc601583613892565b9150613dd782613d96565b602082019050919050565b60006020820190508181036000830152613dfb81613dbf565b9050919050565b6000613e0d826134c5565b9050919050565b613e1d81613e02565b82525050565b6000602082019050613e386000830184613e14565b92915050565b6000613e498261338a565b9150613e548361338a565b9250828202613e628161338a565b91508282048414831517613e7957613e78613b96565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eba8261338a565b9150613ec58361338a565b925082613ed557613ed4613e80565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f3c602183613892565b9150613f4782613ee0565b604082019050919050565b60006020820190508181036000830152613f6b81613f2f565b9050919050565b6000613f7d8261338a565b9150613f888361338a565b9250828201905080821115613fa057613f9f613b96565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613fdc601b83613892565b9150613fe782613fa6565b602082019050919050565b6000602082019050818103600083015261400b81613fcf565b9050919050565b600081519050919050565b60005b8381101561403b578082015181840152602081019050614020565b60008484015250505050565b6000601f19601f8301169050919050565b600061406382614012565b61406d8185613892565b935061407d81856020860161401d565b61408681614047565b840191505092915050565b600060208201905081810360008301526140ab8184614058565b905092915050565b60006140be8261338a565b91506140c98361338a565b92508282039050818111156140e1576140e0613b96565b5b9291505056fea2646970667358221220ae4ba78bff6d67ad8c89df7a16069c260b28a2549c5e51e6b5df1d5987e09c2864736f6c63430008130033
Deployed ByteCode
0x608060405234801561001057600080fd5b506004361061027f5760003560e01c80638b3915531161015c578063c63568c7116100ce578063e889795911610087578063e88979591461076c578063f0b37c041461078a578063f2fde38b146107a6578063f6546372146107c2578063f69e2046146107e0578063fe9fbb80146107ea5761027f565b8063c63568c7146106aa578063cd329fc3146106c8578063d054ac9c146106e6578063d48db82714610704578063d4e144a614610720578063dbac26e91461073c5761027f565b8063b6a5d7de11610120578063b6a5d7de146105fa578063b6e6fcf614610616578063b8fd179414610634578063bd97ce3a14610652578063bff1f9e11461066e578063c2442f931461068c5761027f565b80638b3915531461054e5780639fd37a881461056c578063a87430ba1461058a578063ae5a97aa146105c0578063b5cb15f7146105dc5761027f565b8063333f57b3116101f55780636386c1c7116101b95780636386c1c71461046057806364c03a5e1461049657806369b11dd5146104c65780636e553f65146104e4578063724dfc9214610500578063817b1cd2146105305761027f565b8063333f57b3146103dc5780633ccfd60b146103fa57806340572b7d146104045780634b319713146104225780634ce87053146104405761027f565b80631848b8dc116102475780631848b8dc146103185780631855fac8146103365780631cff0825146103545780632363c24814610372578063267edd2f1461038e5780632f54bf6e146103ac5761027f565b806301c234a8146102845780630420c98e146102a257806307973ccf146102c057806312065fe0146102de578063153b0d1e146102fc575b600080fd5b61028c61081a565b60405161029991906133a3565b60405180910390f35b6102aa610820565b6040516102b791906133a3565b60405180910390f35b6102c8610825565b6040516102d591906133a3565b60405180910390f35b6102e661082b565b6040516102f391906133a3565b60405180910390f35b61031660048036038101906103119190613459565b6108ce565b005b610320610971565b60405161032d91906133a3565b60405180910390f35b61033e61097f565b60405161034b91906133a3565b60405180910390f35b61035c61098d565b60405161036991906134f8565b60405180910390f35b61038c6004803603810190610387919061353f565b6109b3565b005b610396610a05565b6040516103a391906133a3565b60405180910390f35b6103c660048036038101906103c1919061356c565b610a0b565b6040516103d391906135a8565b60405180910390f35b6103e4610a64565b6040516103f191906135a8565b60405180910390f35b610402610a77565b005b61040c6110a9565b60405161041991906133a3565b60405180910390f35b61042a6110b7565b60405161043791906133a3565b60405180910390f35b6104486110bd565b604051610457939291906135c3565b60405180910390f35b61047a6004803603810190610475919061356c565b6110d6565b60405161048d9796959493929190613609565b60405180910390f35b6104b060048036038101906104ab919061356c565b6112ef565b6040516104bd91906133a3565b60405180910390f35b6104ce61135d565b6040516104db91906133a3565b60405180910390f35b6104fe60048036038101906104f99190613678565b611363565b005b61051a600480360381019061051591906136b8565b611f94565b60405161052791906133a3565b60405180910390f35b610538612050565b60405161054591906133a3565b60405180910390f35b610556612056565b60405161056391906133a3565b60405180910390f35b61057461205b565b60405161058191906133a3565b60405180910390f35b6105a4600480360381019061059f919061356c565b612069565b6040516105b7979695949392919061371f565b60405180910390f35b6105da60048036038101906105d5919061353f565b6120cb565b005b6105e461211d565b6040516105f191906133a3565b60405180910390f35b610614600480360381019061060f919061356c565b612127565b005b61061e6121c9565b60405161062b91906135a8565b60405180910390f35b61063c6121dc565b60405161064991906133a3565b60405180910390f35b61066c6004803603810190610667919061356c565b6121e1565b005b6106766126d7565b60405161068391906133a3565b60405180910390f35b6106946126dd565b6040516106a191906137af565b60405180910390f35b6106b2612703565b6040516106bf91906133a3565b60405180910390f35b6106d0612708565b6040516106dd91906133a3565b60405180910390f35b6106ee61270e565b6040516106fb91906133a3565b60405180910390f35b61071e6004803603810190610719919061356c565b612714565b005b61073a6004803603810190610735919061353f565b6127a0565b005b6107566004803603810190610751919061356c565b6127f2565b60405161076391906135a8565b60405180910390f35b610774612812565b60405161078191906133a3565b60405180910390f35b6107a4600480360381019061079f919061356c565b612820565b005b6107c060048036038101906107bb9190613808565b6128c3565b005b6107ca6129dc565b6040516107d791906133a3565b60405180910390f35b6107e86129e1565b005b61080460048036038101906107ff919061356c565b612e1d565b60405161081191906135a8565b60405180910390f35b6103e881565b609681565b60115481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108889190613835565b602060405180830381865afa1580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190613865565b905090565b6108d733610a0b565b610916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090d906138ef565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b690878678326eac900000081565b690878678326eac900000081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109bc33610a0b565b6109fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f2906138ef565b60405180910390fd5b8060078190555050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600d60009054906101000a900460ff1681565b600d60009054906101000a900460ff16610ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abd9061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4a906139c7565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000610bb48260000154836001015484600201548560030154611f94565b905060008111610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090613a33565b60405180910390fd5b6000610c1360038460000154612e7390919063ffffffff16565b905080610c2d838560030154612eed90919063ffffffff16565b1115610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6590613a9f565b60405180910390fd5b6000610c986103e8610c8a609686612e7390919063ffffffff16565b612f4b90919063ffffffff16565b90506000610caf8285612f9590919063ffffffff16565b9050600080610ccb868860030154612eed90919063ffffffff16565b9050690878678326eac9000000811015610ce85760009150610dd5565b690cb49b44ba602d800000811015610d2857610d216064610d13600a86612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9150610dd4565b6910f0cf064dd592000000811015610d6857610d616064610d53601486612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9150610dd3565b69152d02c7e14af6800000811015610da857610da16064610d93601e86612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9150610dd2565b610dcf6064610dc1602886612e7390919063ffffffff16565b612f4b90919063ffffffff16565b91505b5b5b5b6000610dea8386612eed90919063ffffffff16565b90506000610e018289612f9590919063ffffffff16565b9050610e1a888a60030154612eed90919063ffffffff16565b8960030181905550428960020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e88929190613abf565b6020604051808303816000875af1158015610ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecb9190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f546064610f46601488612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610f71929190613abf565b6020604051808303816000875af1158015610f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb49190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661103d606461102f605088612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b815260040161105a929190613abf565b6020604051808303816000875af1158015611079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109d9190613afd565b50505050505050505050565b69152d02c7e14af680000081565b600c5481565b60008060006011549050600954600b5492509250909192565b6000806000806000806000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549650601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549550601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601549450601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549350601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549250601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501549050919395979092949650565b600080601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006113518260000154836001015484600201548560030154611f94565b90508092505050919050565b600b5481565b600d60009054906101000a900460ff166113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a99061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561143f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611436906139c7565b60405180910390fd5b600754821015611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b90613b76565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506114d081612fdf565b60008160000154036114f557601160008154809291906114ef90613bc5565b91905055505b690878678326eac9000000611517848360000154612eed90919063ffffffff16565b1115611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613c59565b60405180910390fd5b60006115826103e8611574606487612e7390919063ffffffff16565b612f4b90919063ffffffff16565b905060006115998286612f9590919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b81526004016115fa93929190613c79565b6020604051808303816000875af1158015611619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163d9190613afd565b50611655858460010154612eed90919063ffffffff16565b8360010181905550611674858460000154612eed90919063ffffffff16565b836000018190555042836002018190555061169a81600954612eed90919063ffffffff16565b600981905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930611705856116f760028b612e7390919063ffffffff16565b612eed90919063ffffffff16565b6040518363ffffffff1660e01b8152600401611722929190613abf565b600060405180830381600087803b15801561173c57600080fd5b505af1158015611750573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117dc60646117ce601488612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b81526004016117f9929190613abf565b6020604051808303816000875af1158015611818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183c9190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118c560646118b7605088612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b81526004016118e2929190613abf565b6020604051808303816000875af1158015611901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119259190613afd565b50600073ffffffffffffffffffffffffffffffffffffffff168360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611bad57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806119fb57506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190613cfc565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611ab157838360040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611bab57611b646001601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612eed90919063ffffffff16565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b505b600073ffffffffffffffffffffffffffffffffffffffff168360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f8d5760008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f8b576000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401611cbf9190613835565b602060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d009190613865565b90506008548110611f23576000611d356103e8611d2760328b612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401611d94929190613abf565b600060405180830381600087803b158015611dae57600080fd5b505af1158015611dc2573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611e23929190613abf565b6020604051808303816000875af1158015611e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e669190613afd565b50611ebc81601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154612eed90919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550611f1781600b54612eed90919063ffffffff16565b600b8190555050611f89565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f09bc325309846b49b3ad70b1f1c9e2a493283014af4b43dba3335ce4670d76b589604051611f809190613d68565b60405180910390a35b505b505b5050505050565b600080611fab600387612e7390919063ffffffff16565b90506000611fc28483612f9590919063ffffffff16565b90506000611fd98642612f9590919063ffffffff16565b905060006120066103e8611ff86006548b612e7390919063ffffffff16565b612f4b90919063ffffffff16565b90506000612032620151806120248585612e7390919063ffffffff16565b612f4b90919063ffffffff16565b905083811115612040578390505b8095505050505050949350505050565b60095481565b603281565b6910f0cf064dd59200000081565b60126020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060050154908060060154905087565b6120d433610a0b565b612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a906138ef565b60405180910390fd5b8060068190555050565b6000601154905090565b61213033610a0b565b61216f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612166906138ef565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60019054906101000a900460ff1681565b606481565b600d60009054906101000a900460ff16612230576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122279061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b4906139c7565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290613de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806123a857506000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b6123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123de90613cfc565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508173ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d357600073ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125be576125536001601260008460040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612f9590919063ffffffff16565b601260008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b818160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146126d25761268b6001601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612eed90919063ffffffff16565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b5b5050565b600a5481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603281565b60075481565b60085481565b61271d33610a0b565b61275c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612753906138ef565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6127a933610a0b565b6127e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127df906138ef565b60405180910390fd5b8060088190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b690cb49b44ba602d80000081565b61282933610a0b565b612868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f906138ef565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6128cc33610a0b565b61290b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612902906138ef565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516129d19190613e23565b60405180910390a150565b600381565b600d60009054906101000a900460ff16612a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a279061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab4906139c7565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000612b1e8260000154836001015484600201548560030154611f94565b905060008111612b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5a90613a33565b60405180910390fd5b6000612b8d6103e8612b7f603285612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9050612ba6828460010154612eed90919063ffffffff16565b8360010181905550428360020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401612c14929190613abf565b600060405180830381600087803b158015612c2e57600080fd5b505af1158015612c42573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612cce6064612cc0600a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401612ceb929190613abf565b6020604051808303816000875af1158015612d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2e9190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612db76064612da9605a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401612dd4929190613abf565b6020604051808303816000875af1158015612df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e179190613afd565b50505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000808303612e855760009050612ee7565b60008284612e939190613e3e565b9050828482612ea29190613eaf565b14612ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed990613f52565b60405180910390fd5b809150505b92915050565b6000808284612efc9190613f72565b905083811015612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3890613ff2565b60405180910390fd5b8091505092915050565b6000612f8d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132c3565b905092915050565b6000612fd783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613326565b905092915050565b6000612ffd8260000154836001015484600201548560030154611f94565b905060008111156132bf5760006130326103e8613024603285612e7390919063ffffffff16565b612f4b90919063ffffffff16565b905061304b828460010154612eed90919063ffffffff16565b8360010181905550428360020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b81526004016130b9929190613abf565b600060405180830381600087803b1580156130d357600080fd5b505af11580156130e7573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166131736064613165600a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401613190929190613abf565b6020604051808303816000875af11580156131af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d39190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661325c606461324e605a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401613279929190613abf565b6020604051808303816000875af1158015613298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132bc9190613afd565b50505b5050565b6000808311829061330a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133019190614091565b60405180910390fd5b50600083856133199190613eaf565b9050809150509392505050565b600083831115829061336e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133659190614091565b60405180910390fd5b506000838561337d91906140b3565b9050809150509392505050565b6000819050919050565b61339d8161338a565b82525050565b60006020820190506133b86000830184613394565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133ee826133c3565b9050919050565b6133fe816133e3565b811461340957600080fd5b50565b60008135905061341b816133f5565b92915050565b60008115159050919050565b61343681613421565b811461344157600080fd5b50565b6000813590506134538161342d565b92915050565b600080604083850312156134705761346f6133be565b5b600061347e8582860161340c565b925050602061348f85828601613444565b9150509250929050565b6000819050919050565b60006134be6134b96134b4846133c3565b613499565b6133c3565b9050919050565b60006134d0826134a3565b9050919050565b60006134e2826134c5565b9050919050565b6134f2816134d7565b82525050565b600060208201905061350d60008301846134e9565b92915050565b61351c8161338a565b811461352757600080fd5b50565b60008135905061353981613513565b92915050565b600060208284031215613555576135546133be565b5b60006135638482850161352a565b91505092915050565b600060208284031215613582576135816133be565b5b60006135908482850161340c565b91505092915050565b6135a281613421565b82525050565b60006020820190506135bd6000830184613599565b92915050565b60006060820190506135d86000830186613394565b6135e56020830185613394565b6135f26040830184613394565b949350505050565b613603816133e3565b82525050565b600060e08201905061361e600083018a613394565b61362b6020830189613394565b6136386040830188613394565b6136456060830187613394565b6136526080830186613394565b61365f60a08301856135fa565b61366c60c0830184613394565b98975050505050505050565b6000806040838503121561368f5761368e6133be565b5b600061369d8582860161352a565b92505060206136ae8582860161340c565b9150509250929050565b600080600080608085870312156136d2576136d16133be565b5b60006136e08782880161352a565b94505060206136f18782880161352a565b93505060406137028782880161352a565b92505060606137138782880161352a565b91505092959194509250565b600060e082019050613734600083018a613394565b6137416020830189613394565b61374e6040830188613394565b61375b6060830187613394565b61376860808301866135fa565b61377560a0830185613394565b61378260c0830184613394565b98975050505050505050565b6000613799826134c5565b9050919050565b6137a98161378e565b82525050565b60006020820190506137c460008301846137a0565b92915050565b60006137d5826133c3565b9050919050565b6137e5816137ca565b81146137f057600080fd5b50565b600081359050613802816137dc565b92915050565b60006020828403121561381e5761381d6133be565b5b600061382c848285016137f3565b91505092915050565b600060208201905061384a60008301846135fa565b92915050565b60008151905061385f81613513565b92915050565b60006020828403121561387b5761387a6133be565b5b600061388984828501613850565b91505092915050565b600082825260208201905092915050565b7f596f75204172656e742054686174205370656369616c00000000000000000000600082015250565b60006138d9601683613892565b91506138e4826138a3565b602082019050919050565b60006020820190508181036000830152613908816138cc565b9050919050565b7f436f6e7472616374206e6f742073746172746564207965740000000000000000600082015250565b6000613945601883613892565b91506139508261390f565b602082019050919050565b6000602082019050818103600083015261397481613938565b9050919050565b7f4164647265737320697320626c61636b6c697374656400000000000000000000600082015250565b60006139b1601683613892565b91506139bc8261397b565b602082019050919050565b600060208201905081810360008301526139e0816139a4565b9050919050565b7f4e6f20696e74657265737420616363756d756c61746564000000000000000000600082015250565b6000613a1d601783613892565b9150613a28826139e7565b602082019050919050565b60006020820190508181036000830152613a4c81613a10565b9050919050565b7f45786365656473206d6178207061796f75740000000000000000000000000000600082015250565b6000613a89601283613892565b9150613a9482613a53565b602082019050919050565b60006020820190508181036000830152613ab881613a7c565b9050919050565b6000604082019050613ad460008301856135fa565b613ae16020830184613394565b9392505050565b600081519050613af78161342d565b92915050565b600060208284031215613b1357613b126133be565b5b6000613b2184828501613ae8565b91505092915050565b7f4d696e696d756d20696e766573746d656e74206e6f74206d6574000000000000600082015250565b6000613b60601a83613892565b9150613b6b82613b2a565b602082019050919050565b60006020820190508181036000830152613b8f81613b53565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd08261338a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c0257613c01613b96565b5b600182019050919050565b7f4d6178206465706f736974206c696d6974207265616368656400000000000000600082015250565b6000613c43601983613892565b9150613c4e82613c0d565b602082019050919050565b60006020820190508181036000830152613c7281613c36565b9050919050565b6000606082019050613c8e60008301866135fa565b613c9b60208301856135fa565b613ca86040830184613394565b949350505050565b7f5265666572726572206d75737420626520612076616c69642075736572000000600082015250565b6000613ce6601d83613892565b9150613cf182613cb0565b602082019050919050565b60006020820190508181036000830152613d1581613cd9565b9050919050565b7f496e73756666696369656e7420726566546f6b656e2062616c616e6365000000600082015250565b6000613d52601d83613892565b9150613d5d82613d1c565b602082019050919050565b6000604082019050613d7d6000830184613394565b8181036020830152613d8e81613d45565b905092915050565b7f43616e6e6f7420726566657220796f757273656c660000000000000000000000600082015250565b6000613dcc601583613892565b9150613dd782613d96565b602082019050919050565b60006020820190508181036000830152613dfb81613dbf565b9050919050565b6000613e0d826134c5565b9050919050565b613e1d81613e02565b82525050565b6000602082019050613e386000830184613e14565b92915050565b6000613e498261338a565b9150613e548361338a565b9250828202613e628161338a565b91508282048414831517613e7957613e78613b96565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eba8261338a565b9150613ec58361338a565b925082613ed557613ed4613e80565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f3c602183613892565b9150613f4782613ee0565b604082019050919050565b60006020820190508181036000830152613f6b81613f2f565b9050919050565b6000613f7d8261338a565b9150613f888361338a565b9250828201905080821115613fa057613f9f613b96565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613fdc601b83613892565b9150613fe782613fa6565b602082019050919050565b6000602082019050818103600083015261400b81613fcf565b9050919050565b600081519050919050565b60005b8381101561403b578082015181840152602081019050614020565b60008484015250505050565b6000601f19601f8301169050919050565b600061406382614012565b61406d8185613892565b935061407d81856020860161401d565b61408681614047565b840191505092915050565b600060208201905081810360008301526140ab8184614058565b905092915050565b60006140be8261338a565b91506140c98361338a565b92508282039050818111156140e1576140e0613b96565b5b9291505056fea2646970667358221220ae4ba78bff6d67ad8c89df7a16069c260b28a2549c5e51e6b5df1d5987e09c2864736f6c63430008130033