Contract Address :
0x4a3bF437Ea8301084cBC6fD9c76c6B3A9dB1Cf68
Overview
- Balance
- 0 Merkle
- Tokens
-
Fetching tokens... Error trying to fetch balances.
More Info
QR Code
- Contract name:
- BigTycoon
- Optimization enabled
- true
- Compiler version
- v0.8.10+commit.fc410830
- Optimization runs
- 200
- EVM Version
- default
- Verified at
- 2023-12-21T07:52:48.330282Z
Contract source code
/** *Submitted for verification at testnet.bscscan.com on 2023-12-05 */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } pragma solidity ^0.8.0; abstract contract IBigTycoon { struct Stake { uint amount; uint share; uint duration; uint startTimestamp; uint endTimestamp; bool isWithdrawled; } struct GrowthLevelStake { address user; uint vAmount; uint vShare; uint growthShare; uint duration; uint startTimestamp; uint endTimestamp; uint level; } struct User { uint userId; address referrer; uint partnerCount; uint directBusiness; uint totalStakeUSD; mapping(uint=>uint) directCountWithTime; mapping(address=>TokenInfo) tokeninfo; Migration migration; } struct TokenInfo{ uint levelBonus; uint totalTokenStake; uint totalStakeUSD; uint avlStakingReward; uint avlGrowthStakingReward; uint stakingCheckpoint; uint growthCheckpoint; Stake[] stakes; GrowthLevelStake[] growthLevelStakes; } struct Migration{ uint unstake; } } pragma solidity ^0.8.0; abstract contract Pausable is Context { event Paused(address account); event Unpaused(address account); bool private _paused; modifier whenNotPaused() { _requireNotPaused(); _; } modifier whenPaused() { _requirePaused(); _; } function paused() public view virtual returns (bool) { return _paused; } function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } pragma solidity ^0.8.0; contract Initializable { bool private _initialized; bool private _initializing; modifier initializer() { require(_initializing || !_initialized, "Initializable: contract is already initialized"); bool isTopLevelCall = !_initializing; if (isTopLevelCall) { _initializing = true; _initialized = true; } _; if (isTopLevelCall) { _initializing = false; } } } pragma solidity ^0.8.0; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function ownable(address _newowner) internal { _transferOwnership(_newowner); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } pragma solidity ^0.8.0; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } pragma solidity ^0.8.0; contract BigTycoon is IBigTycoon, Initializable, Ownable, Pausable { address public oprator; address public BTYC; uint public TIME_STEP; uint256 public lastUserId; uint public PERCENT_DIVIDER; uint public LASTLEVEL; uint public deployTime; address[] public tokens; uint public cronUserIndex; uint public perCronUsers; uint public lastCronTime; mapping(address=>uint) public IT_FEE; mapping(address=>uint) public ADMIN_FEE; mapping(address=>bool) public restakeTokens; mapping(address=>uint) public tokenprice; mapping(uint => uint) public packages; mapping(uint8 => uint) public levelBonusShares; mapping(uint => uint) public growthLevelBonusShares; mapping(address => User) public users; mapping(uint256 => address) public idToAddress; mapping(uint256 => mapping(uint256 => uint)) public stakingRewards; mapping(address =>uint) public migOldStakingBonus; mapping(address =>uint) public migOldGrowthStakingBonus; mapping(address =>uint) public oldStakingBonus; mapping(address =>uint) public oldGrowthStakingBonus; mapping(address =>uint) public migrateStakingBonus; mapping(address =>uint) public migrateGrowthStakingBonus; mapping(address=>bool) public joiningTokens; address public stakingV2; event Registration(address indexed user, address indexed referrer, uint256 userId, uint256 referrerId); event Staked(address indexed user, address token, uint package, uint amount, uint duration, uint share, uint price ,uint transactionType); event LevelIncome(uint randId, address token, address indexed sender, address receiver, uint level, uint grossAmount,uint IT_deduct,uint admin_deduct,uint amount); event GrowthLvlStake(uint randId, address token, address indexed sender, address receiver, uint level, uint amount, uint share, uint duration, uint growthShare); event ClaimStakingReward(address token, address indexed user, uint grossAmount,uint IT_deduct,uint admin_deduct,uint amount); event GrowthClaimReward(address token,address indexed user, uint grossAmount,uint IT_deduct,uint admin_deduct,uint amount); event WithdrawStakedToken(address token,address indexed user, uint amount); event Owner_Registration( string uId, address indexed user,address referrer, uint256 userId, uint256 referrerId); event Owner_Staked(uint randId,address indexed user, address token, uint package, uint amount, uint duration, uint share, uint startTime,uint endTime,uint transactionType); event Owner_UnStaked(address indexed user, uint unstake); event FeeWithdrawed(address token ,address to ,uint IT_FEE,uint ADMIN_FEE); event MigrateStakingBonus(address _user,uint totalAmount); event MigrateGrowthStakingBonus(address _sender,address _reciver,uint level, uint totalAmount); event RankAndRewardClaim(address indexed user,address _token, uint grossAmount ,uint IT_deduct,uint admin_deduct,uint amount ); event NewTokenListed(address token , uint priceInUsd); event UpdateJoiningTokenStatus(address token , bool status); event UpdateRestakeTokenStatus(address token , bool status); modifier onlyOprator { require(_msgSender()==oprator,"caller is not oprator!"); _; } function initialize( address _btycToken, address _owner, address _firstAddress, uint _btycprice ) external initializer { levelBonusShares[1] = 150; levelBonusShares[2] = 70; levelBonusShares[3] = 50; levelBonusShares[4] = 30; levelBonusShares[5] = 20; levelBonusShares[6] = 10; levelBonusShares[7] = 10; levelBonusShares[8] = 10; levelBonusShares[9] = 10; levelBonusShares[10] = 10; growthLevelBonusShares[1] = 500; growthLevelBonusShares[2] = 200; growthLevelBonusShares[3] = 100; growthLevelBonusShares[4] = 50; growthLevelBonusShares[5] = 50; growthLevelBonusShares[6] = 30; growthLevelBonusShares[7] = 30; growthLevelBonusShares[8] = 20; growthLevelBonusShares[9] = 10; growthLevelBonusShares[10] = 10; cronUserIndex = 1; perCronUsers = 30; packages[1] = 25 * 1e18; packages[2] = 50 * 1e18; packages[3] = 100 * 1e18; packages[4] = 500 * 1e18; packages[5] = 1000 * 1e18; packages[6] = 10000 * 1e18; packages[7] = 100000 * 1e18; stakingRewards[1][12] = 30; stakingRewards[1][24] = 40; stakingRewards[1][36] = 50; stakingRewards[2][12] = 40; stakingRewards[2][24] = 50; stakingRewards[2][36] = 60; stakingRewards[3][12] = 50; stakingRewards[3][24] = 60; stakingRewards[3][36] = 70; stakingRewards[4][12] = 60; stakingRewards[4][24] = 70; stakingRewards[4][36] = 80; stakingRewards[5][12] = 70; stakingRewards[5][24] = 80; stakingRewards[5][36] = 90; stakingRewards[6][12] = 80; stakingRewards[6][24] = 90; stakingRewards[6][36] = 100; stakingRewards[7][12] = 90; stakingRewards[7][24] = 100; stakingRewards[7][36] = 110; TIME_STEP = 30 days; PERCENT_DIVIDER = 1000; LASTLEVEL = 10; ownable(_owner); BTYC = _btycToken; tokens.push(BTYC); restakeTokens[BTYC]=true; tokenprice[BTYC]=_btycprice; users[_firstAddress].userId = 1; idToAddress[1] = _firstAddress; lastUserId = 2; deployTime = block.timestamp; emit Registration(_firstAddress, address(0), 1, 0); } function registration( address userAddress, address referrerAddress ) internal { require(!isUserExists(userAddress), "BigTycoon: User Exists!"); require( isUserExists(referrerAddress), "BigTycoon: Referrer not Exists!" ); users[userAddress].userId = lastUserId; idToAddress[lastUserId] = userAddress; users[userAddress].referrer = referrerAddress; lastUserId++; users[referrerAddress].partnerCount++; users[referrerAddress].directCountWithTime[users[referrerAddress].partnerCount] = block.timestamp; emit Registration( userAddress, referrerAddress, users[userAddress].userId, users[referrerAddress].userId ); } function stakeWithRefferal( address token, uint package, uint256 duration, address referrer ) external virtual whenNotPaused { // require(package>=packages[1],"Minimum $25 "); require(joiningTokens[token] && tokenprice[token]!=0 ,"invalid token"); uint packageId = getPackageReturnShare(package); require(packageId>0,"Invalid package!"); uint amount = ((package * 1e18) / tokenprice[token]); require( IERC20(token).allowance(_msgSender(), address(this)) >= amount, "BigTycoon: ERC20 allowance exceed!" ); require( IERC20(token).balanceOf(_msgSender()) >= amount, "BigTycoon: ERC20 low balance!" ); require( stakingRewards[packageId][duration] != 0, "BigTycoon : package or duration is invalid!" ); IERC20(token).transferFrom(_msgSender(), address(this), amount); if (!isUserExists(_msgSender())) { registration(_msgSender(), referrer); } users[users[_msgSender()].referrer].directBusiness += package; users[_msgSender()].tokeninfo[token].stakes.push( Stake( amount, stakingRewards[packageId][duration], duration, block.timestamp, block.timestamp + (duration * TIME_STEP), false ) ); users[_msgSender()].totalStakeUSD += package; users[_msgSender()].tokeninfo[token].totalStakeUSD += package; users[_msgSender()].tokeninfo[token].totalTokenStake += amount; emit Staked(_msgSender(), token, package, amount, duration, stakingRewards[packageId][duration], tokenprice[token],0); sendLevelAndGrowthBonus( token, amount, users[_msgSender()].referrer, stakingRewards[packageId][duration], duration ); } function stake( address token, uint package, uint256 duration ) external virtual whenNotPaused { require(restakeTokens[token] && tokenprice[token]!=0 ,"invalid token"); require(isUserExists(_msgSender()),"user not exist"); uint packageId = getPackageReturnShare(package); require(packageId>0,"Invalid package!"); uint amount = (package * 1e18) / tokenprice[token]; require( IERC20(token).allowance(_msgSender(), address(this)) >= amount, "BigTycoon: ERC20 allowance exceed!" ); require( IERC20(token).balanceOf(_msgSender()) >= amount, "BigTycoon: ERC20 low balance!" ); require( stakingRewards[packageId][duration] != 0, "BigTycoon : package or duration is invalid!" ); IERC20(token).transferFrom(_msgSender(), address(this), amount); users[users[_msgSender()].referrer].directBusiness += package; users[_msgSender()].tokeninfo[token].stakes.push( Stake( amount, stakingRewards[packageId][duration], duration, block.timestamp, block.timestamp + (duration * TIME_STEP), false ) ); users[_msgSender()].totalStakeUSD += package; users[_msgSender()].tokeninfo[token].totalStakeUSD += package; users[_msgSender()].tokeninfo[token].totalTokenStake += amount; emit Staked(_msgSender(),token, package, amount, duration,stakingRewards[packageId][duration], tokenprice[token],1); sendLevelAndGrowthBonus( token, amount, users[_msgSender()].referrer, stakingRewards[packageId][duration], duration ); } function getStakingReward( address _token, address staker ) public view returns (uint256 _21_level, uint _10_level, uint totalAmount ) { TokenInfo storage tokeninfo = users[staker].tokeninfo[_token]; for (uint i = 0; i < tokeninfo.stakes.length; i++) { Stake memory stake_ = tokeninfo.stakes[i]; uint256 finish = stake_.endTimestamp; if (users[staker].tokeninfo[_token].stakingCheckpoint < finish) { uint256 share = (stake_.amount * stake_.share) /PERCENT_DIVIDER; uint256 from = stake_.startTimestamp > users[staker].tokeninfo[_token].stakingCheckpoint? stake_.startTimestamp: users[staker].tokeninfo[_token].stakingCheckpoint; uint256 to = finish < block.timestamp? finish: block.timestamp; if (from < to) { totalAmount = totalAmount +(share * (to - from)) /(TIME_STEP); } if(stake_.startTimestamp>=deployTime) { _21_level += (share * (to - from)) /(TIME_STEP); } else { _10_level += (share * (to - from)) /(TIME_STEP); } } } return (_21_level, _10_level,totalAmount); } function getStakingTotalReward( address _token, address staker ) public view returns ( uint totalAmount ) { TokenInfo storage tokeninfo = users[staker].tokeninfo[_token]; for (uint i = 0; i < tokeninfo.stakes.length; i++) { Stake memory stake_ = tokeninfo.stakes[i]; uint256 finish = stake_.endTimestamp; if (users[staker].tokeninfo[_token].stakingCheckpoint < finish) { uint256 share = (stake_.amount * stake_.share) /PERCENT_DIVIDER; uint256 from = stake_.startTimestamp > users[staker].tokeninfo[_token].stakingCheckpoint? stake_.startTimestamp: users[staker].tokeninfo[_token].stakingCheckpoint; uint256 to = finish < block.timestamp? finish: block.timestamp; if (from < to) { totalAmount = totalAmount +(share * (to - from)) /(TIME_STEP); } } } return (totalAmount+users[staker].tokeninfo[_token].avlStakingReward); } function withdrawStakedToken(address _token) external whenNotPaused { require(getAvailableForWithdraw(_token,_msgSender())>0,"invalid"); uint total; TokenInfo storage tokeninfo = users[_msgSender()].tokeninfo[_token]; for (uint i = 0; i < tokeninfo.stakes.length; i++) { Stake memory stake_ = tokeninfo.stakes[i]; uint256 finish = stake_.startTimestamp+(stake_.duration * TIME_STEP); if (block.timestamp >= finish && stake_.isWithdrawled == false) { total += stake_.amount; users[_msgSender()].tokeninfo[_token].stakes[i].isWithdrawled = true; } } if(_token==BTYC) { users[_msgSender()].migration.unstake=0; } IERC20(_token).transfer(_msgSender(), total); emit WithdrawStakedToken(_token,_msgSender(),total); } function getAvailableForWithdraw( address _token, address staker ) public view returns (uint ) { uint total; TokenInfo storage tokeninfo = users[staker].tokeninfo[_token]; for (uint i = 0; i < tokeninfo.stakes.length; i++) { Stake memory stake_ = tokeninfo.stakes[i]; uint256 finish = stake_.startTimestamp+(stake_.duration * TIME_STEP); if (block.timestamp >= finish && stake_.isWithdrawled == false) { total += stake_.amount; } } if(_token==BTYC) { uint unstake = users[staker].migration.unstake; return total>= unstake?total-unstake:0; } else { return total; } } function isUserExists(address user) public view returns (bool) { return (users[user].userId != 0); } function sendLevelAndGrowthBonus( address token, uint256 amount, address referrer, uint share, uint duration ) internal { for (uint8 i = 1; i <= LASTLEVEL; i++) { if (referrer != address(0)) { uint _levelBonus = (amount * levelBonusShares[i]) /PERCENT_DIVIDER; uint itfee = (_levelBonus * 5) / 100; uint adminfee = ((_levelBonus-itfee) * 5) / 100; IT_FEE[token] += itfee; ADMIN_FEE[token] += adminfee; users[referrer].tokeninfo[token].levelBonus += (_levelBonus - (itfee+adminfee)); IERC20(token).transfer(referrer, (_levelBonus - (itfee+adminfee))); // IERC20(BTYC).transfer(feeTo, fee); users[referrer].tokeninfo[token].growthLevelStakes.push( GrowthLevelStake( _msgSender(), amount, share, growthLevelBonusShares[i], duration, block.timestamp, block.timestamp + (duration * TIME_STEP), i ) ); emit GrowthLvlStake( 0, token, _msgSender(), referrer, i, amount, share, duration, growthLevelBonusShares[i] ); emit LevelIncome( 0, token, _msgSender(), referrer, i, _levelBonus, itfee, adminfee, (_levelBonus - (itfee+adminfee)) ); if (users[referrer].referrer == address(0)) break; referrer = users[referrer].referrer; } } } function claim(address _token) external whenNotPaused { updateIncome(_msgSender(), _token ); // uint stke_amount = getStakingReward(_token,_msgSender()); // uint growth_amount = getGrowthReward(_token,_msgSender()); uint stke_amount= users[_msgSender()].tokeninfo[_token].avlStakingReward; uint growth_amount= users[_msgSender()].tokeninfo[_token].avlGrowthStakingReward; require(stke_amount>0||growth_amount>0,"invalid"); uint amount = growth_amount+stke_amount; uint itfee1 = (stke_amount * 5) / 100; uint adminfee1 = ((stke_amount-itfee1) * 5) / 100; uint itfee2 = (growth_amount * 5) / 100; uint adminfee2 = ((growth_amount-itfee2) * 5) / 100; uint itfee =(itfee1+itfee2); uint adminfee=(adminfee1+adminfee2); IT_FEE[_token] += (itfee1+itfee2); ADMIN_FEE[_token] += (adminfee1+adminfee2); IERC20(_token).transfer(_msgSender(), amount-(itfee+adminfee)); users[_msgSender()].tokeninfo[_token].avlStakingReward = 0; users[_msgSender()].tokeninfo[_token].avlGrowthStakingReward = 0; if(stke_amount>0) emit ClaimStakingReward(_token,_msgSender(), stke_amount,itfee1 ,adminfee1,stke_amount-(itfee1+adminfee1)); if(growth_amount>0) emit GrowthClaimReward(_token,_msgSender(), growth_amount,itfee2,adminfee2,growth_amount-(itfee2+adminfee2)); } function updateIncome(address _user,address _token ) public { (uint256 _21_level, uint _10_level, uint amount) = getStakingReward(_token,_user); users[_user].tokeninfo[_token].avlStakingReward += amount; users[_user].tokeninfo[_token].stakingCheckpoint = block.timestamp; address referrer = users[_user].referrer; for (uint8 i = 1; i <= LASTLEVEL; i++) { if (referrer != address(0)) { // User storage user = users[referrer]; uint reqDirect = i * 2; bool cond = i < 5 ? users[referrer].partnerCount >= reqDirect : 10<=users[referrer].partnerCount; uint direct = i < 5 ?reqDirect:10; uint reqBusiness = direct * 100*1e18; if(cond && reqBusiness <= users[referrer].directBusiness) { uint256 _share = ((_10_level*growthLevelBonusShares[i]) / PERCENT_DIVIDER); uint256 __share = ((_21_level*growthLevelBonusShares[i]) / PERCENT_DIVIDER); users[referrer].tokeninfo[_token].avlGrowthStakingReward +=(_share+__share); } if (users[referrer].referrer == address(0)) break; referrer = users[referrer].referrer; } } } function updateUsersStakingIncome(uint _perCronUsers) public { uint count = (cronUserIndex+_perCronUsers)>lastUserId?lastUserId:(cronUserIndex+_perCronUsers); for(uint i=cronUserIndex;i <=count; i++) { for(uint j=0;j<tokens.length;j++) { if(users[idToAddress[i]].tokeninfo[tokens[j]].stakes.length>0) updateIncome(idToAddress[i],tokens[j]); } } if(count==lastUserId) { cronUserIndex =1; } else { cronUserIndex =count; } lastCronTime = block.timestamp; } function getStakingLength(address token,address staker) external view returns (uint) { return users[staker].tokeninfo[token].stakes.length; } function getGrowthStakingLength(address token,address user) external view returns (uint) { return users[user].tokeninfo[token].growthLevelStakes.length; } function getStakingDetails( address token, address staker, uint index ) external view returns (Stake memory) { return users[staker].tokeninfo[token].stakes[index]; } function getGrowthStakingDetails( address token, address user, uint index ) external view returns (GrowthLevelStake memory) { return users[user].tokeninfo[token].growthLevelStakes[index]; } function getCheckpoints(address _token , address _user) external view returns(uint stakeCheckpoint) { stakeCheckpoint= users[_user].tokeninfo[_token].stakingCheckpoint; } function getPackageReturnShare(uint packageInUSD) public view returns (uint ) { if(packages[1]<=packageInUSD && packages[2]>packageInUSD ) { return 1; } else if(packages[2]<=packageInUSD && packages[3]>packageInUSD ) { return 2; } else if(packages[3]<=packageInUSD && packages[4]>packageInUSD ) { return 3; } else if(packages[4]<=packageInUSD && packages[5]>packageInUSD ) { return 4; } else if(packages[5]<=packageInUSD && packages[6]>packageInUSD ) { return 5; } else if(packages[6]<=packageInUSD && packages[7]>packageInUSD ) { return 6; } else if(packages[7]<=packageInUSD) { return 7; } else { return 0; } } function withdrawToken( address _token, address _to, uint _amount ) external onlyOwner { IERC20(_token).transfer(_to, _amount); } function withdrawFee(address token,address _to ) external onlyOwner{ IERC20(token).transfer(_to, IT_FEE[token]+ADMIN_FEE[token]); IT_FEE[token] = 0; ADMIN_FEE[token] = 0; emit FeeWithdrawed(token ,_to ,IT_FEE[token],ADMIN_FEE[token]); } function changeLastLevel(uint newLevel) external onlyOwner{ LASTLEVEL = newLevel; } function setShareLevelBonus(uint8 _level,uint share ) external onlyOwner { levelBonusShares[_level] = share; } function setShareGrowthLevelBonus(uint _level,uint share ) external onlyOwner { growthLevelBonusShares[_level] = share; } function changePercentDivider(uint newDivider) external onlyOwner { PERCENT_DIVIDER = newDivider; } function changeTimestep(uint newTimeStep) external onlyOwner{ TIME_STEP =newTimeStep; } function Pause() external onlyOwner { _pause(); } function UnPause() external onlyOwner { _unpause(); } function updateTokenPriceInUsd(address _token,uint _price) external onlyOprator { require(isTokenExist(_token),"token not added!"); tokenprice[_token] =_price; } function updateCronPerUser(uint _numberOfUser) external onlyOprator { perCronUsers = _numberOfUser; } function getAvlReward(address _user, address _token) external view returns (uint avlStaking, uint avlGrowth) { avlStaking = users[_user].tokeninfo[_token].avlStakingReward; avlGrowth = users[_user].tokeninfo[_token].avlGrowthStakingReward; } function changeOpratorwallet(address _newWallet) external onlyOwner{ oprator =_newWallet; } function owner_premigrationIncome(address _user) public view returns(uint totalIncome) { TokenInfo storage tokeninfo = users[_user].tokeninfo[BTYC]; for (uint i = 0; i < tokeninfo.stakes.length; i++) { Stake memory stake_ = tokeninfo.stakes[i]; uint256 finish = stake_.endTimestamp; // if (users[_user].tokeninfo[BTYC].stakingCheckpoint < finish) { uint256 share = (stake_.amount * stake_.share) /PERCENT_DIVIDER; uint256 from = stake_.startTimestamp; uint256 to = finish < block.timestamp? finish: block.timestamp; if (from < to) { totalIncome = totalIncome +(share * (to - from)) /(TIME_STEP); } // } } return totalIncome; } function updateUsersStakingIncome(uint _cronUserIndex,uint _perCronUsers) public { uint count = (_cronUserIndex+_perCronUsers)>lastUserId?lastUserId:(_cronUserIndex+_perCronUsers); for(uint i=_cronUserIndex;i <=count; i++) { for(uint j=0;j<tokens.length;j++) { if(users[idToAddress[i]].tokeninfo[tokens[j]].stakes.length>0) updateIncome(idToAddress[i],tokens[j]); } } } function getTokenInfoByUser(address _user, address _token) external view returns( uint levelBonus,uint totalTokenStake,uint totalStakeUSD) { levelBonus = users[_user].tokeninfo[_token].levelBonus; totalTokenStake = users[_user].tokeninfo[_token].totalTokenStake; totalStakeUSD = users[_user].tokeninfo[_token].totalStakeUSD; } function claimRankAndReward(address _token,address[] calldata _users, uint[] calldata amounts) external onlyOprator { for(uint i=0;i<_users.length;i++){ uint amount =amounts[i]; uint itfee = amount*5/100; uint adminfee = ((amount-itfee)*5)/100; IT_FEE[_token] += itfee; ADMIN_FEE[_token] += adminfee; IERC20(_token).transfer(_users[i], (amount-(itfee+adminfee))); emit RankAndRewardClaim(_users[i], _token, amount , itfee, adminfee, (amount-(itfee+adminfee)) ); } } function tokensLength() external view returns(uint) { return tokens.length; } function isTokenExist(address _token) public view returns(bool isExist) { for(uint i=0;i<tokens.length;i++){ if(tokens[i]==_token){ isExist = true; } } } function addTokenWithPrice(address _token,uint _priceInUSDT) external onlyOprator { require(!isTokenExist(_token),"token already added!"); require(_priceInUSDT!=0, "price not be zero"); tokens.push(_token); tokenprice[_token] =_priceInUSDT; emit NewTokenListed(_token,_priceInUSDT); } function updateJoiningToken(address _token ,bool _isActive) external onlyOprator { require(isTokenExist(_token),"token not added!"); joiningTokens[_token] = _isActive; emit UpdateJoiningTokenStatus(_token , _isActive); } function updateRestakeToken(address _token ,bool _isActive) external onlyOprator { require(isTokenExist(_token),"token not added!"); restakeTokens[_token] = _isActive; emit UpdateRestakeTokenStatus(_token , _isActive); } function getUserInfo(address _user) external view returns(address refferal, uint totalStakeUSD) { return (users[_user].referrer,users[_user].totalStakeUSD); } function setStakingV2Address(address _stakingV2) external onlyOprator { stakingV2 = _stakingV2; } function registrationExt(address _user, address _refferal) external { require(stakingV2 == _msgSender(),"Forbidden"); registration(_user,_refferal); } function getUserRefferal(address _user) external view returns(address) { return (users[_user].referrer); } function getPartnerCount(address _user) external view returns(uint) { return (users[_user].partnerCount); } function getDirectBusiness(address _user) external view returns(uint) { return (users[_user].directBusiness); } }
Contract ABI
[{"type":"event","name":"ClaimStakingReward","inputs":[{"type":"address","name":"token","internalType":"address","indexed":false},{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint256","name":"grossAmount","internalType":"uint256","indexed":false},{"type":"uint256","name":"IT_deduct","internalType":"uint256","indexed":false},{"type":"uint256","name":"admin_deduct","internalType":"uint256","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"FeeWithdrawed","inputs":[{"type":"address","name":"token","internalType":"address","indexed":false},{"type":"address","name":"to","internalType":"address","indexed":false},{"type":"uint256","name":"IT_FEE","internalType":"uint256","indexed":false},{"type":"uint256","name":"ADMIN_FEE","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"GrowthClaimReward","inputs":[{"type":"address","name":"token","internalType":"address","indexed":false},{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint256","name":"grossAmount","internalType":"uint256","indexed":false},{"type":"uint256","name":"IT_deduct","internalType":"uint256","indexed":false},{"type":"uint256","name":"admin_deduct","internalType":"uint256","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"GrowthLvlStake","inputs":[{"type":"uint256","name":"randId","internalType":"uint256","indexed":false},{"type":"address","name":"token","internalType":"address","indexed":false},{"type":"address","name":"sender","internalType":"address","indexed":true},{"type":"address","name":"receiver","internalType":"address","indexed":false},{"type":"uint256","name":"level","internalType":"uint256","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false},{"type":"uint256","name":"share","internalType":"uint256","indexed":false},{"type":"uint256","name":"duration","internalType":"uint256","indexed":false},{"type":"uint256","name":"growthShare","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"LevelIncome","inputs":[{"type":"uint256","name":"randId","internalType":"uint256","indexed":false},{"type":"address","name":"token","internalType":"address","indexed":false},{"type":"address","name":"sender","internalType":"address","indexed":true},{"type":"address","name":"receiver","internalType":"address","indexed":false},{"type":"uint256","name":"level","internalType":"uint256","indexed":false},{"type":"uint256","name":"grossAmount","internalType":"uint256","indexed":false},{"type":"uint256","name":"IT_deduct","internalType":"uint256","indexed":false},{"type":"uint256","name":"admin_deduct","internalType":"uint256","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"MigrateGrowthStakingBonus","inputs":[{"type":"address","name":"_sender","internalType":"address","indexed":false},{"type":"address","name":"_reciver","internalType":"address","indexed":false},{"type":"uint256","name":"level","internalType":"uint256","indexed":false},{"type":"uint256","name":"totalAmount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"MigrateStakingBonus","inputs":[{"type":"address","name":"_user","internalType":"address","indexed":false},{"type":"uint256","name":"totalAmount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"NewTokenListed","inputs":[{"type":"address","name":"token","internalType":"address","indexed":false},{"type":"uint256","name":"priceInUsd","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Owner_Registration","inputs":[{"type":"string","name":"uId","internalType":"string","indexed":false},{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"address","name":"referrer","internalType":"address","indexed":false},{"type":"uint256","name":"userId","internalType":"uint256","indexed":false},{"type":"uint256","name":"referrerId","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Owner_Staked","inputs":[{"type":"uint256","name":"randId","internalType":"uint256","indexed":false},{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"address","name":"token","internalType":"address","indexed":false},{"type":"uint256","name":"package","internalType":"uint256","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false},{"type":"uint256","name":"duration","internalType":"uint256","indexed":false},{"type":"uint256","name":"share","internalType":"uint256","indexed":false},{"type":"uint256","name":"startTime","internalType":"uint256","indexed":false},{"type":"uint256","name":"endTime","internalType":"uint256","indexed":false},{"type":"uint256","name":"transactionType","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Owner_UnStaked","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint256","name":"unstake","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"type":"address","name":"account","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"RankAndRewardClaim","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"address","name":"_token","internalType":"address","indexed":false},{"type":"uint256","name":"grossAmount","internalType":"uint256","indexed":false},{"type":"uint256","name":"IT_deduct","internalType":"uint256","indexed":false},{"type":"uint256","name":"admin_deduct","internalType":"uint256","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Registration","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"address","name":"referrer","internalType":"address","indexed":true},{"type":"uint256","name":"userId","internalType":"uint256","indexed":false},{"type":"uint256","name":"referrerId","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Staked","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"address","name":"token","internalType":"address","indexed":false},{"type":"uint256","name":"package","internalType":"uint256","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false},{"type":"uint256","name":"duration","internalType":"uint256","indexed":false},{"type":"uint256","name":"share","internalType":"uint256","indexed":false},{"type":"uint256","name":"price","internalType":"uint256","indexed":false},{"type":"uint256","name":"transactionType","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"type":"address","name":"account","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"UpdateJoiningTokenStatus","inputs":[{"type":"address","name":"token","internalType":"address","indexed":false},{"type":"bool","name":"status","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"UpdateRestakeTokenStatus","inputs":[{"type":"address","name":"token","internalType":"address","indexed":false},{"type":"bool","name":"status","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"WithdrawStakedToken","inputs":[{"type":"address","name":"token","internalType":"address","indexed":false},{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"ADMIN_FEE","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"BTYC","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"IT_FEE","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"LASTLEVEL","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENT_DIVIDER","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"Pause","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"TIME_STEP","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"UnPause","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"addTokenWithPrice","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"uint256","name":"_priceInUSDT","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeLastLevel","inputs":[{"type":"uint256","name":"newLevel","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeOpratorwallet","inputs":[{"type":"address","name":"_newWallet","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changePercentDivider","inputs":[{"type":"uint256","name":"newDivider","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeTimestep","inputs":[{"type":"uint256","name":"newTimeStep","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"claim","inputs":[{"type":"address","name":"_token","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"claimRankAndReward","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"address[]","name":"_users","internalType":"address[]"},{"type":"uint256[]","name":"amounts","internalType":"uint256[]"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"cronUserIndex","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"deployTime","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getAvailableForWithdraw","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"address","name":"staker","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"avlStaking","internalType":"uint256"},{"type":"uint256","name":"avlGrowth","internalType":"uint256"}],"name":"getAvlReward","inputs":[{"type":"address","name":"_user","internalType":"address"},{"type":"address","name":"_token","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"stakeCheckpoint","internalType":"uint256"}],"name":"getCheckpoints","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"address","name":"_user","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getDirectBusiness","inputs":[{"type":"address","name":"_user","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"tuple","name":"","internalType":"struct IBigTycoon.GrowthLevelStake","components":[{"type":"address","name":"user","internalType":"address"},{"type":"uint256","name":"vAmount","internalType":"uint256"},{"type":"uint256","name":"vShare","internalType":"uint256"},{"type":"uint256","name":"growthShare","internalType":"uint256"},{"type":"uint256","name":"duration","internalType":"uint256"},{"type":"uint256","name":"startTimestamp","internalType":"uint256"},{"type":"uint256","name":"endTimestamp","internalType":"uint256"},{"type":"uint256","name":"level","internalType":"uint256"}]}],"name":"getGrowthStakingDetails","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"address","name":"user","internalType":"address"},{"type":"uint256","name":"index","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getGrowthStakingLength","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"address","name":"user","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getPackageReturnShare","inputs":[{"type":"uint256","name":"packageInUSD","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getPartnerCount","inputs":[{"type":"address","name":"_user","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"tuple","name":"","internalType":"struct IBigTycoon.Stake","components":[{"type":"uint256","name":"amount","internalType":"uint256"},{"type":"uint256","name":"share","internalType":"uint256"},{"type":"uint256","name":"duration","internalType":"uint256"},{"type":"uint256","name":"startTimestamp","internalType":"uint256"},{"type":"uint256","name":"endTimestamp","internalType":"uint256"},{"type":"bool","name":"isWithdrawled","internalType":"bool"}]}],"name":"getStakingDetails","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"address","name":"staker","internalType":"address"},{"type":"uint256","name":"index","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getStakingLength","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"address","name":"staker","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"_21_level","internalType":"uint256"},{"type":"uint256","name":"_10_level","internalType":"uint256"},{"type":"uint256","name":"totalAmount","internalType":"uint256"}],"name":"getStakingReward","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"address","name":"staker","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"totalAmount","internalType":"uint256"}],"name":"getStakingTotalReward","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"address","name":"staker","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"levelBonus","internalType":"uint256"},{"type":"uint256","name":"totalTokenStake","internalType":"uint256"},{"type":"uint256","name":"totalStakeUSD","internalType":"uint256"}],"name":"getTokenInfoByUser","inputs":[{"type":"address","name":"_user","internalType":"address"},{"type":"address","name":"_token","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"refferal","internalType":"address"},{"type":"uint256","name":"totalStakeUSD","internalType":"uint256"}],"name":"getUserInfo","inputs":[{"type":"address","name":"_user","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getUserRefferal","inputs":[{"type":"address","name":"_user","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"growthLevelBonusShares","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"idToAddress","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"initialize","inputs":[{"type":"address","name":"_btycToken","internalType":"address"},{"type":"address","name":"_owner","internalType":"address"},{"type":"address","name":"_firstAddress","internalType":"address"},{"type":"uint256","name":"_btycprice","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"isExist","internalType":"bool"}],"name":"isTokenExist","inputs":[{"type":"address","name":"_token","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isUserExists","inputs":[{"type":"address","name":"user","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"joiningTokens","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"lastCronTime","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"lastUserId","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"levelBonusShares","inputs":[{"type":"uint8","name":"","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"migOldGrowthStakingBonus","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"migOldStakingBonus","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"migrateGrowthStakingBonus","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"migrateStakingBonus","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"oldGrowthStakingBonus","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"oldStakingBonus","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"oprator","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"totalIncome","internalType":"uint256"}],"name":"owner_premigrationIncome","inputs":[{"type":"address","name":"_user","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"packages","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"paused","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"perCronUsers","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"registrationExt","inputs":[{"type":"address","name":"_user","internalType":"address"},{"type":"address","name":"_refferal","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"restakeTokens","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setShareGrowthLevelBonus","inputs":[{"type":"uint256","name":"_level","internalType":"uint256"},{"type":"uint256","name":"share","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setShareLevelBonus","inputs":[{"type":"uint8","name":"_level","internalType":"uint8"},{"type":"uint256","name":"share","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setStakingV2Address","inputs":[{"type":"address","name":"_stakingV2","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"stake","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"uint256","name":"package","internalType":"uint256"},{"type":"uint256","name":"duration","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"stakeWithRefferal","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"uint256","name":"package","internalType":"uint256"},{"type":"uint256","name":"duration","internalType":"uint256"},{"type":"address","name":"referrer","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"stakingRewards","inputs":[{"type":"uint256","name":"","internalType":"uint256"},{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"stakingV2","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokenprice","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"tokens","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokensLength","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateCronPerUser","inputs":[{"type":"uint256","name":"_numberOfUser","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateIncome","inputs":[{"type":"address","name":"_user","internalType":"address"},{"type":"address","name":"_token","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateJoiningToken","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"bool","name":"_isActive","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateRestakeToken","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"bool","name":"_isActive","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateTokenPriceInUsd","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"uint256","name":"_price","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateUsersStakingIncome","inputs":[{"type":"uint256","name":"_cronUserIndex","internalType":"uint256"},{"type":"uint256","name":"_perCronUsers","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateUsersStakingIncome","inputs":[{"type":"uint256","name":"_perCronUsers","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"userId","internalType":"uint256"},{"type":"address","name":"referrer","internalType":"address"},{"type":"uint256","name":"partnerCount","internalType":"uint256"},{"type":"uint256","name":"directBusiness","internalType":"uint256"},{"type":"uint256","name":"totalStakeUSD","internalType":"uint256"},{"type":"tuple","name":"migration","internalType":"struct IBigTycoon.Migration","components":[{"type":"uint256","name":"unstake","internalType":"uint256"}]}],"name":"users","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdrawFee","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"address","name":"_to","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdrawStakedToken","inputs":[{"type":"address","name":"_token","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdrawToken","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_amount","internalType":"uint256"}]}]
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106104695760003560e01c80637cae3b371161024c578063cf244a8911610146578063f0103da0116100c3578063f5a32a3a11610087578063f5a32a3a14610ce2578063f71b007b14610cf5578063fad1bd5214610d21578063fbc87ddf14610d4d578063fd6be80e14610dc557600080fd5b8063f0103da014610c73578063f0f119b514610c86578063f2facf4c14610ca9578063f2fde38b14610cbc578063f59df0eb14610ccf57600080fd5b8063d4b64e151161010a578063d4b64e1514610c1c578063d92fc67b14610c25578063df66af8b14610c2d578063eadaf35814610c40578063f00b82db14610c6057600080fd5b8063cf244a8914610bb0578063cf756fdf14610bc3578063d04fa3d614610bd6578063d0f601cc14610be9578063d13b6ff114610c0957600080fd5b8063a87430ba116101d4578063baf0921a11610198578063baf0921a14610aed578063c216212a14610b00578063c3bad87f14610b20578063c879c6d814610b7d578063cae6065714610b9057600080fd5b8063a87430ba14610979578063aa07d75214610a09578063b1a4286514610a6e578063b285730914610aaf578063b98953b514610ac257600080fd5b806389b3d17b1161021b57806389b3d17b146108c85780638da5cb5b146108db57806390a2a85e146108f2578063a4deb91d14610905578063a5009a4f1461091857600080fd5b80637cae3b37146108765780637dbbb8f61461087f5780637dfa351c1461089257806388611736146108b557600080fd5b80633f4b0a73116103685780636386c1c7116102e5578063715018a6116102a9578063715018a6146107f157806373b636de146107f95780637629dcb51461083a578063781e76bb1461085a5780637a40624b1461086d57600080fd5b80636386c1c71461075a578063668efbc0146107b057806368c9fb18146107c357806368e0f2cd146107d65780636985a022146107e957600080fd5b8063509222cd1161032c578063509222cd146106ca5780635519eaed146106f557806355e0c7071461071557806359663121146107355780635c975abb1461074857600080fd5b80633f4b0a731461063d5780633fab7e6d1461065d5780633fc422e51461068c578063438cd2d3146106af5780634f64b2be146106b757600080fd5b80632a2d0c47116103f6578063348d4487116103ba578063348d4487146105e55780633739037f146105ee5780633747a1a2146105f757806339dea4e81461060a5780633c7429421461061d57600080fd5b80632a2d0c471461055f5780632bd12f93146105a05780632dd4f9b0146105c057806332bc298c146105c957806333dd1c9d146105d257600080fd5b806317576b401161043d57806317576b40146104bc5780631ddfae76146104ef5780631e83409a14610530578063214c49571461054357806329fc7bd81461055657600080fd5b8062ce83f71461046e57806301e33667146104835780630c51b88f1461049657806314389ef1146104a9575b600080fd5b61048161047c366004614bb6565b610de5565b005b610481610491366004614be0565b610e62565b6104816104a4366004614c1c565b610ee3565b6104816104b7366004614c5d565b6114d0565b6104dc6104ca366004614c94565b600d6020526000908152604090205481565b6040519081526020015b60405180910390f35b6104dc6104fd366004614cb6565b6001600160a01b039081166000908152601360209081526040808320949093168252600690930190925290206005015490565b61048161053e366004614c94565b61158c565b610481610551366004614cb6565b611914565b6104dc60055481565b61058861056d366004614ce9565b6014602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016104e6565b6104dc6105ae366004614c94565b601b6020526000908152604090205481565b6104dc60065481565b6104dc60035481565b6104816105e0366004614bb6565b611968565b6104dc60045481565b6104dc600a5481565b610481610605366004614ce9565b611ab9565b600254610588906001600160a01b031681565b6104dc61062b366004614c94565b60176020526000908152604090205481565b6104dc61064b366004614d13565b60116020526000908152604090205481565b61058861066b366004614c94565b6001600160a01b039081166000908152601360205260409020600101541690565b61069f61069a366004614c94565b611ac6565b60405190151581526020016104e6565b610481611b29565b6105886106c5366004614ce9565b611b3b565b61069f6106d8366004614c94565b6001600160a01b0316600090815260136020526040902054151590565b6104dc610703366004614c94565b601a6020526000908152604090205481565b6104dc610723366004614c94565b60166020526000908152604090205481565b610481610743366004614c94565b611b65565b600054600160b01b900460ff1661069f565b610791610768366004614c94565b6001600160a01b0390811660009081526013602052604090206001810154600490910154911691565b604080516001600160a01b0390931683526020830191909152016104e6565b6104816107be366004614c5d565b611bba565b6104dc6107d1366004614cb6565b611c6e565b6104816107e4366004614d7a565b611dd7565b61048161202b565b61048161203b565b6104dc610807366004614cb6565b6001600160a01b038082166000908152601360209081526040808320938616835260069093019052206008015492915050565b6104dc610848366004614ce9565b60126020526000908152604090205481565b610481610868366004614cb6565b61204d565b6104dc60075481565b6104dc60095481565b61048161088d366004614c94565b612308565b61069f6108a0366004614c94565b600e6020526000908152604090205460ff1681565b601d54610588906001600160a01b031681565b6104816108d6366004614c94565b612332565b6000546201000090046001600160a01b0316610588565b6104dc610900366004614c94565b6125d5565b610481610913366004614ce9565b612711565b61092b610926366004614be0565b61271e565b6040516104e69190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a0830151151560a083015292915050565b6109d3610987366004614c94565b601360209081526000918252604091829020805460018201546002830154600384015460048501548751968701909752600790940154855291946001600160a01b039091169391929186565b604080519687526001600160a01b03909516602087015293850192909252606084015260808301525160a082015260c0016104e6565b610a53610a17366004614cb6565b6001600160a01b039182166000908152601360209081526040808320939094168252600690920190915220805460018201546002909201549092565b604080519384526020840192909252908201526060016104e6565b6104dc610a7c366004614cb6565b6001600160a01b038082166000908152601360209081526040808320938616835260069093019052206007015492915050565b610481610abd366004614dfb565b6127fa565b6104dc610ad0366004614dfb565b601560209081526000928352604080842090915290825290205481565b610481610afb366004614ce9565b61291a565b6104dc610b0e366004614ce9565b60106020526000908152604090205481565b610b68610b2e366004614cb6565b6001600160a01b03918216600090815260136020908152604080832093909416825260069092019091522060038101546004909101549091565b604080519283526020830191909152016104e6565b610481610b8b366004614cb6565b612952565b6104dc610b9e366004614c94565b60186020526000908152604090205481565b610481610bbe366004614ce9565b612a6e565b610481610bd1366004614e1d565b612ba1565b610481610be4366004614ce9565b6134bb565b6104dc610bf7366004614c94565b600c6020526000908152604090205481565b600154610588906001600160a01b031681565b6104dc600b5481565b6008546104dc565b610481610c3b366004614e68565b6134c8565b6104dc610c4e366004614c94565b60196020526000908152604090205481565b6104dc610c6e366004614cb6565b613a7f565b610481610c81366004614eae565b613c91565b61069f610c94366004614c94565b601c6020526000908152604090205460ff1681565b6104dc610cb7366004614ce9565b613caf565b610481610cca366004614c94565b613fa4565b610a53610cdd366004614cb6565b61401d565b610481610cf0366004614dfb565b6142a9565b6104dc610d03366004614c94565b6001600160a01b031660009081526013602052604090206002015490565b6104dc610d2f366004614c94565b6001600160a01b031660009081526013602052604090206003015490565b610d60610d5b366004614be0565b6142c3565b6040516104e6919081516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0828101519082015260c0808301519082015260e091820151918101919091526101000190565b6104dc610dd3366004614c94565b600f6020526000908152604090205481565b6001546001600160a01b0316336001600160a01b031614610e215760405162461bcd60e51b8152600401610e1890614eca565b60405180910390fd5b610e2a82611ac6565b610e465760405162461bcd60e51b8152600401610e1890614efa565b6001600160a01b039091166000908152600f6020526040902055565b610e6a6143ce565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edd9190614f24565b50505050565b610eeb61442f565b6001600160a01b0383166000908152600e602052604090205460ff168015610f2a57506001600160a01b0383166000908152600f602052604090205415155b610f665760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b2103a37b5b2b760991b6044820152606401610e18565b610f6f336106d8565b610fac5760405162461bcd60e51b815260206004820152600e60248201526d1d5cd95c881b9bdd08195e1a5cdd60921b6044820152606401610e18565b6000610fb783613caf565b905060008111610ffc5760405162461bcd60e51b815260206004820152601060248201526f496e76616c6964207061636b6167652160801b6044820152606401610e18565b6001600160a01b0384166000908152600f602052604081205461102785670de0b6b3a7640000614f57565b6110319190614f76565b9050806001600160a01b03861663dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa15801561108e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b29190614f98565b10156110d05760405162461bcd60e51b8152600401610e1890614fb1565b806001600160a01b0386166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111499190614f98565b10156111975760405162461bcd60e51b815260206004820152601d60248201527f4269675479636f6f6e3a204552433230206c6f772062616c616e6365210000006044820152606401610e18565b60008281526015602090815260408083208684529091529020546111cd5760405162461bcd60e51b8152600401610e1890614ff3565b6001600160a01b0385166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018490526064016020604051808303816000875af1158015611230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112549190614f24565b5033600090815260136020526040808220600101546001600160a01b031682528120600301805486929061128990849061503e565b90915550503360009081526013602090815260408083206001600160a01b03891684526006018252808320815160c08101835285815286855260158452828520888652845293829020549284019290925282018590524260608301526003546007909101919060808201906112fe9087614f57565b611308904261503e565b81526000602091820181905283546001808201865594825282822084516006909202019081558383015194810194909455604080840151600286015560608401516003860155608084015160048087019190915560a0909401516005909501805460ff191695151595909517909455338152601390915291822001805486929061139390849061503e565b90915550503360009081526013602090815260408083206001600160a01b0389168452600601909152812060020180548692906113d190849061503e565b90915550503360009081526013602090815260408083206001600160a01b03891684526006019091528120600101805483929061140f90849061503e565b909155505060008281526015602090815260408083208684528252808320546001600160a01b0389168452600f9092529182902054915133927fdb28ad832b2e8b0aa95810734d683d9e33982f24542db740566af451b4ec41419261147f928a928a9288928b9290600190615056565b60405180910390a23360009081526013602090815260408083206001015485845260158352818420878552909252909120546114c991879184916001600160a01b0316908761447c565b5050505050565b6001546001600160a01b0316336001600160a01b0316146115035760405162461bcd60e51b8152600401610e1890614eca565b61150c82611ac6565b6115285760405162461bcd60e51b8152600401610e1890614efa565b6001600160a01b0382166000818152601c6020908152604091829020805460ff19168515159081179091558251938452908301527f53c744ffd9f7766cd679e63ff8a91cc72541d3e07e2a2cd9e7476bb0ee9447ed91015b60405180910390a15050565b61159461442f565b61159e338261204d565b3360009081526013602090815260408083206001600160a01b038516845260060190915290206003810154600490910154811515806115dd5750600081115b6116135760405162461bcd60e51b81526020600482015260076024820152661a5b9d985b1a5960ca1b6044820152606401610e18565b600061161f838361503e565b905060006064611630856005614f57565b61163a9190614f76565b90506000606461164a8387615091565b611655906005614f57565b61165f9190614f76565b905060006064611670866005614f57565b61167a9190614f76565b90506000606461168a8388615091565b611695906005614f57565b61169f9190614f76565b905060006116ad838661503e565b905060006116bb838661503e565b90506116c7848761503e565b6001600160a01b038b166000908152600c6020526040812080549091906116ef90849061503e565b909155506116ff9050838661503e565b6001600160a01b038b166000908152600d60205260408120805490919061172790849061503e565b90915550506001600160a01b038a1663a9059cbb33611746848661503e565b611750908b615091565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561179b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bf9190614f24565b506000601381336001600160a01b03166001600160a01b0316815260200190815260200160002060060160008c6001600160a01b03166001600160a01b03168152602001908152602001600020600301819055506000601360006118203390565b6001600160a01b03908116825260208083019390935260409182016000908120918f168152600690910190925290206004015588156118ae57337f78f76566f381396b199969691716f0103efadf405913a5d46f5308607563b70d8b8b8989611889818361503e565b8f6118949190615091565b6040516118a59594939291906150a8565b60405180910390a25b871561190857337f6e24fdc16d1eac78e366c2d6a84e72fca98fd0c40f3f85a5a17abc134ee2df758b8a87876118e4818361503e565b6118ee908f615091565b6040516118ff9594939291906150a8565b60405180910390a25b50505050505050505050565b601d546001600160a01b0316331461195a5760405162461bcd60e51b81526020600482015260096024820152682337b93134b23232b760b91b6044820152606401610e18565b6119648282614881565b5050565b6001546001600160a01b0316336001600160a01b03161461199b5760405162461bcd60e51b8152600401610e1890614eca565b6119a482611ac6565b156119e85760405162461bcd60e51b8152602060048201526014602482015273746f6b656e20616c72656164792061646465642160601b6044820152606401610e18565b80611a295760405162461bcd60e51b81526020600482015260116024820152707072696365206e6f74206265207a65726f60781b6044820152606401610e18565b60088054600181019091557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b0384169081179091556000818152600f6020908152604091829020849055815192835282018390527fd24dba6e4fae88a5488ca22030b9b4d977553fe82b37a075795aa7456c2a574e9101611580565b611ac16143ce565b600355565b6000805b600854811015611b2357826001600160a01b031660088281548110611af157611af16150d6565b6000918252602090912001546001600160a01b03161415611b1157600191505b80611b1b816150ec565b915050611aca565b50919050565b611b316143ce565b611b39614a5c565b565b60088181548110611b4b57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001546001600160a01b0316336001600160a01b031614611b985760405162461bcd60e51b8152600401610e1890614eca565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316336001600160a01b031614611bed5760405162461bcd60e51b8152600401610e1890614eca565b611bf682611ac6565b611c125760405162461bcd60e51b8152600401610e1890614efa565b6001600160a01b0382166000818152600e6020908152604091829020805460ff19168515159081179091558251938452908301527fd3be7276fbc47d8f1994209609d2cd24927e63b9307c661092f231d50bd0af159101611580565b6001600160a01b0380821660009081526013602090815260408083209386168352600690930190529081208190815b6007820154811015611d77576000826007018281548110611cc057611cc06150d6565b600091825260208083206040805160c081018252600690940290910180548452600181015492840192909252600282015490830181905260038083015460608501526004830154608085015260059092015460ff16151560a08401529054919350611d2b9190614f57565b8260600151611d3a919061503e565b9050804210158015611d4e575060a0820151155b15611d62578151611d5f908661503e565b94505b50508080611d6f906150ec565b915050611c9d565b506002546001600160a01b0386811691161415611dcd576001600160a01b03841660009081526013602052604090206007015480831015611db9576000611dc3565b611dc38184615091565b9350505050611dd1565b5090505b92915050565b6001546001600160a01b0316336001600160a01b031614611e0a5760405162461bcd60e51b8152600401610e1890614eca565b60005b83811015612023576000838383818110611e2957611e296150d6565b90506020020135905060006064826005611e439190614f57565b611e4d9190614f76565b905060006064611e5d8385615091565b611e68906005614f57565b611e729190614f76565b6001600160a01b038a166000908152600c6020526040812080549293508492909190611e9f90849061503e565b90915550506001600160a01b0389166000908152600d602052604081208054839290611ecc90849061503e565b90915550506001600160a01b03891663a9059cbb898987818110611ef257611ef26150d6565b9050602002016020810190611f079190614c94565b611f11848661503e565b611f1b9087615091565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8a9190614f24565b50878785818110611f9d57611f9d6150d6565b9050602002016020810190611fb29190614c94565b6001600160a01b03167f94c36c83f40b3d2b970251af2346eb7e6dd6cd7ac44a7dba51420265f79ef5ce8a858585611fea818361503e565b611ff4908a615091565b6040516120059594939291906150a8565b60405180910390a2505050808061201b906150ec565b915050611e0d565b505050505050565b6120336143ce565b611b39614ab1565b6120436143ce565b611b396000614af4565b600080600061205c848661401d565b6001600160a01b038089166000908152601360209081526040808320938b16835260069093019052908120600301805494975092955090935083926120a290849061503e565b90915550506001600160a01b0380861660008181526013602081815260408084208a8716855260068101835290842042600590910155939092529052600190810154909116905b6006548160ff16116122ff576001600160a01b038216156122ed576000612111826002615107565b60ff169050600060058360ff1610612148576001600160a01b038416600090815260136020526040902060020154600a1115612168565b6001600160a01b0384166000908152601360205260409020600201548211155b9050600060058460ff161061217e57600a612180565b825b9050600061218f826064614f57565b6121a190670de0b6b3a7640000614f57565b90508280156121cb57506001600160a01b0386166000908152601360205260409020600301548111155b1561229c5760055460ff86166000908152601260205260408120549091906121f3908b614f57565b6121fd9190614f76565b60055460ff881660009081526012602052604081205492935091612221908d614f57565b61222b9190614f76565b9050612237818361503e565b601360008a6001600160a01b03166001600160a01b0316815260200190815260200160002060060160008e6001600160a01b03166001600160a01b031681526020019081526020016000206004016000828254612294919061503e565b909155505050505b6001600160a01b03868116600090815260136020526040902060010154166122c757505050506122ff565b5050506001600160a01b0392831660009081526013602052604090206001015490921691505b806122f781615130565b9150506120e9565b50505050505050565b6123106143ce565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b61233a61442f565b60006123468233611c6e565b1161237d5760405162461bcd60e51b81526020600482015260076024820152661a5b9d985b1a5960ca1b6044820152606401610e18565b3360009081526013602090815260408083206001600160a01b03851684526006019091528120815b60078201548110156124e05760008260070182815481106123c8576123c86150d6565b600091825260208083206040805160c081018252600690940290910180548452600181015492840192909252600282015490830181905260038083015460608501526004830154608085015260059092015460ff16151560a084015290549193506124339190614f57565b8260600151612442919061503e565b9050804210158015612456575060a0820151155b156124cb578151612467908661503e565b3360009081526013602090815260408083206001600160a01b038b16845260060190915290206007018054919650600191859081106124a8576124a86150d6565b60009182526020909120600690910201600501805460ff19169115159190911790555b505080806124d8906150ec565b9150506123a5565b506002546001600160a01b038481169116141561250b57336000908152601360205260408120600701555b6001600160a01b03831663a9059cbb336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af1158015612568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258c9190614f24565b50604080516001600160a01b038516815260208101849052815133927f28674840c187e0789426d5b1af693ee214412d1e2ae0ba83accef4e7c8c96603928290030190a2505050565b6001600160a01b038082166000908152601360209081526040808320600254909416835260069093019052908120815b600782015481101561270a576000826007018281548110612628576126286150d6565b600091825260208083206040805160c0810182526006909402909101805480855260018201549385018490526002820154928501929092526003810154606085015260048101546080850181905260059182015460ff16151560a0860152905493955093929161269791614f57565b6126a19190614f76565b606084015190915060004284106126b857426126ba565b835b9050808210156126f2576003546126d18383615091565b6126db9085614f57565b6126e59190614f76565b6126ef908961503e565b97505b50505050508080612702906150ec565b915050612605565b5050919050565b6127196143ce565b600655565b6127596040518060c0016040528060008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6001600160a01b03808416600090815260136020908152604080832093881683526006909301905220600701805483908110612797576127976150d6565b60009182526020918290206040805160c081018252600690930290910180548352600181015493830193909352600283015490820152600382015460608201526004820154608082015260059091015460ff16151560a082015290509392505050565b60045460009061280a838561503e565b1161281e57612819828461503e565b612822565b6004545b9050825b818111610edd5760005b600854811015612907576000828152601460209081526040808320546001600160a01b0316835260139091528120600880546006909201918391908590811061287b5761287b6150d6565b60009182526020808320909101546001600160a01b0316835282019290925260400190206007015411156128f557600082815260146020526040902054600880546128f5926001600160a01b03169190849081106128db576128db6150d6565b6000918252602090912001546001600160a01b031661204d565b806128ff816150ec565b915050612830565b5080612912816150ec565b915050612826565b6001546001600160a01b0316336001600160a01b03161461294d5760405162461bcd60e51b8152600401610e1890614eca565b600a55565b61295a6143ce565b6001600160a01b0382166000818152600d6020908152604080832054600c9092529091205463a9059cbb918491612991919061503e565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156129dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a009190614f24565b506001600160a01b038281166000818152600c60209081526040808320839055600d825280832083905580519384529385169083015291810182905260608101919091527f873666a30a1f766901a00b3c07ee4356750f84e91c232c997928c77a57e6d43c90608001611580565b600060045482600954612a81919061503e565b11612a995781600954612a94919061503e565b612a9d565b6004545b6009549091505b818111612b7e5760005b600854811015612b6b576000828152601460209081526040808320546001600160a01b03168352601390915281206008805460069092019183919085908110612af957612af96150d6565b60009182526020808320909101546001600160a01b031683528201929092526040019020600701541115612b595760008281526014602052604090205460088054612b59926001600160a01b03169190849081106128db576128db6150d6565b80612b63816150ec565b915050612aae565b5080612b76816150ec565b915050612aa4565b50600454811415612b93576001600955612b99565b60098190555b505042600b55565b600054610100900460ff1680612bba575060005460ff16155b612c1d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e18565b600054610100900460ff16158015612c3f576000805461ffff19166101011790555b60967f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b5525560467f08037d7b151cc412d25674a4e66b334d9ae9d2e5517a7feaae5cdb828bf1c62881905560327f9bfbaa59f8e10e7868f8b402de9d605a390c45ddaebd8c9de3c6f31e733c87ff819055601e7f251164fe1d8864fe5e86082eae9c288bc2b58695a4d28538dfe86e9e4f17558581905560147fc550213cee30afd5e67ccba7be3d381bbc169034ae08eb3ec9168caca9fe55e7819055600a7ffb9ce45064c7e7d9bf9deb4750ba7c94ab3d6e7418c5d76bf69966d39a9d42f68190557f98ae0176de2844d118e1a6decfe92f97691bedbc578c71fc8d5c4374be77e50c8190557f5fae251ae169e8e40026ce4ce85a026bc3adcccdc8459be361195e4cd924077f8190557ff53d7d0eac8d4a28c5e36c803b226f3ef35ce8ff0302108a97c0d862a51c6fa38190557f28819bbfa35988de500160af3ee4d060ea4da2d0fc4b680f9032b1bba4c6604b8190556101f47f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a35560c87f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b25560647f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a8190557fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe0538590557f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f267468590557f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e48490557f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc8490557f855d8d6df66418fea944661cfca175a2245b01f09908f1f662c4fa2b3cbf9299929092557fb9bfc87ab6d50430c17fad3d76aa4e9fce5cb9f8a8035e5ad64505fa1e31bdb98190557f4d862627e71449ad0902e42fb445c6fefb557d066705175da90fdc325bd76e4e819055600160095582815568015af1d78b58c400007f8c6065603763fec3f5742441d3833f3f43b982453612d76adb39a885e3006b5f556802b5e3af16b18800007f853b2fefe141400fef543280f93d98bd49996069f632d0d20236afeeed8e46a25568056bc75e2d631000007fb3edd0d534d647cffdae9f1294f11ad21f3fcf2814bea44c92bbb8d384a57d9e55681b1ae4d6e2ef5000007f1588ac671d87f82adc0e6ae8ab009c0de98f92a20243897597e566bc59b9c12655683635c9adc5dea000007f61a7346ab5ebdac457db2a901eaf1b805239b6049a1b2f34bab85e2e274f39cb5569021e19e0c9bab24000007f20edfb71820f6f00f6a84ccfefb91587cd9f849f8349b0a3182a4795899d9cd95569152d02c7e14af68000007f4ef6145e44e4298293af15ae5f84f922a836b1d6db608fd5008f32a528b312a9557fe705c58fd1995ee4a36467226106b1b10b2ddf2efa5d03f1e254ded20029bbc59290925560287f0302f3a23b14d81a4c7c901648b5d846398e3b84fabedfe91906702d3858186a8190557fea5ea5abc60390e95fc3fb2c3f78db86cdc9b41207ebdef2e48aac788994630a8490557f84d5968eb9536299e6c73ea638f3a77d804bc4a436e2d23f5a40312690eb555a557f08c13f14c1e57d77e88a9340872a791da41b5101feca35708b24d4138c8a8ee9839055603c7fc812ba074bfdbe84a3838c063e151564a713c957f66bab431c7e3aa1b52914bb8190557f705bdc002f804baaef61852d201da4b0ae68713448dd4c2ca372e199ebe1c9d8939093557f769e53747987760006d3e7abb7b7e59e3ba065b9ea33dd42a390bbbda857d4498390557f141f841db954875cdc3f0ff02cf49863a127514ead368c771b5795e9e28be3d58490557f88c79cd5e106b45bd0cece96320ffd188f965f7f81971e7adc85b22659de6135929092557f1ae4a6551b01f33f78cf262637616be0d64ff837f9b585bdcd2660d7d6a6eaff83905560507f8a2ede3749740092139e277323a629c0c4f67f50e2e114c5c8c3bd69898401388190557f1c05f254aa278213bb0565e66d7dc191c066ecc51fdd75cde4b8b86719ac760c939093557fa563942bcf3118f9aca25323795a9e108af42ec46a165e69f46a5bb67672ec5a839055605a7fe437f8545759f66120d6a7c0c300027f66b89ea54d4156358c94617de0f9ca868190557f4cba84800023c2b36e751de44359798fe35ab9baec04b579fcdfda80cc7809c3939093557f2ae286484f456280783bd3176459be4509534bba87bc2a8b63675714844bad998390557f81315bb9775b35459b9a2f019649811caca3f549aa7145d41a7dfced8998cc0c8290557fadb02964df4fdcd9e4d7ef71626ed59f216e32517fcaeb461435d4cca30fc501929092557f6f917d758d9bed7f5bbf5cbaa6d94d82a16d3d5d7b956f98e8fa548f4d26e8b45560246000527f5d0f48e37dc1225cdee8d6f2a0315d796f55423522fe638d7d95421802dfc006602052606e7f5be08a70be20a6dd761ca609e81ff8e919c398a1a6d53e056e0aa7db227c5d6a5562278d006003556103e860055560065561339b84614011565b600280546001600160a01b038781166001600160a01b0319928316811784556008805460018181019092557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180548516909217909155835482166000908152600e60209081526040808320805460ff191685179055865485168352600f825280832089905593891680835260138252848320849055838352601482527fb6c61a840592cc84133e4b25bd509abf4659307c57b160799b38490a5aa48f2c805490961681179095556004959095554260075582519182529381018490527f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a910160405180910390a380156114c9576000805461ff00191690555050505050565b6134c36143ce565b600555565b6134d061442f565b6001600160a01b0384166000908152601c602052604090205460ff16801561350f57506001600160a01b0384166000908152600f602052604090205415155b61354b5760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b2103a37b5b2b760991b6044820152606401610e18565b600061355684613caf565b90506000811161359b5760405162461bcd60e51b815260206004820152601060248201526f496e76616c6964207061636b6167652160801b6044820152606401610e18565b6001600160a01b0385166000908152600f60205260408120546135c686670de0b6b3a7640000614f57565b6135d09190614f76565b9050806001600160a01b03871663dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa15801561362d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136519190614f98565b101561366f5760405162461bcd60e51b8152600401610e1890614fb1565b806001600160a01b0387166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156136c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e89190614f98565b10156137365760405162461bcd60e51b815260206004820152601d60248201527f4269675479636f6f6e3a204552433230206c6f772062616c616e6365210000006044820152606401610e18565b600082815260156020908152604080832087845290915290205461376c5760405162461bcd60e51b8152600401610e1890614ff3565b6001600160a01b0386166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018490526064016020604051808303816000875af11580156137cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f39190614f24565b506137fd336106d8565b61380b5761380b3384614881565b33600090815260136020526040808220600101546001600160a01b031682528120600301805487929061383f90849061503e565b90915550503360009081526013602090815260408083206001600160a01b038a1684526006018252808320815160c08101835285815286855260158452828520898652845293829020549284019290925282018690524260608301526003546007909101919060808201906138b49088614f57565b6138be904261503e565b81526000602091820181905283546001808201865594825282822084516006909202019081558383015194810194909455604080840151600286015560608401516003860155608084015160048087019190915560a0909401516005909501805460ff191695151595909517909455338152601390915291822001805487929061394990849061503e565b90915550503360009081526013602090815260408083206001600160a01b038a1684526006019091528120600201805487929061398790849061503e565b90915550503360009081526013602090815260408083206001600160a01b038a168452600601909152812060010180548392906139c590849061503e565b909155505060008281526015602090815260408083208784528252808320546001600160a01b038a168452600f90925280832054905133937fdb28ad832b2e8b0aa95810734d683d9e33982f24542db740566af451b4ec414193613a35938c938c9389938d939092909190615056565b60405180910390a233600090815260136020908152604080832060010154858452601583528184208885529092529091205461202391889184916001600160a01b0316908861447c565b6001600160a01b038082166000908152601360209081526040808320938616835260069093019052908120815b6007820154811015613c51576000826007018281548110613acf57613acf6150d6565b600091825260208083206040805160c0810182526006948502909201805483526001810154838501526002810154838301526003810154606084015260048101546080840181905260059182015460ff16151560a08501526001600160a01b03808d16885260138652838820908e168852909501909352909320015491925090811115613c3c576005546020830151835160009291613b6d91614f57565b613b779190614f76565b6001600160a01b038089166000908152601360209081526040808320938d16835260069093019052908120600501546060860151929350909111613be7576001600160a01b038089166000908152601360209081526040808320938d168352600690930190522060050154613bed565b83606001515b90506000428410613bfe5742613c00565b835b905080821015613c3857600354613c178383615091565b613c219085614f57565b613c2b9190614f76565b613c35908961503e565b97505b5050505b50508080613c49906150ec565b915050613aac565b506001600160a01b0380841660009081526013602090815260408083209388168352600690930190522060030154613c89908361503e565b949350505050565b613c996143ce565b60ff909116600090815260116020526040902055565b6001600090815260106020527f8c6065603763fec3f5742441d3833f3f43b982453612d76adb39a885e3006b5f548210801590613d165750600260005260106020527f853b2fefe141400fef543280f93d98bd49996069f632d0d20236afeeed8e46a25482105b15613d2357506001919050565b600260005260106020527f853b2fefe141400fef543280f93d98bd49996069f632d0d20236afeeed8e46a2548210801590613d885750600360005260106020527fb3edd0d534d647cffdae9f1294f11ad21f3fcf2814bea44c92bbb8d384a57d9e5482105b15613d9557506002919050565b600360005260106020527fb3edd0d534d647cffdae9f1294f11ad21f3fcf2814bea44c92bbb8d384a57d9e548210801590613dfa5750600460005260106020527f1588ac671d87f82adc0e6ae8ab009c0de98f92a20243897597e566bc59b9c1265482105b15613e0757506003919050565b600460005260106020527f1588ac671d87f82adc0e6ae8ab009c0de98f92a20243897597e566bc59b9c126548210801590613e6c5750600560005260106020527f61a7346ab5ebdac457db2a901eaf1b805239b6049a1b2f34bab85e2e274f39cb5482105b15613e7957506004919050565b600560005260106020527f61a7346ab5ebdac457db2a901eaf1b805239b6049a1b2f34bab85e2e274f39cb548210801590613ede5750600660005260106020527f20edfb71820f6f00f6a84ccfefb91587cd9f849f8349b0a3182a4795899d9cd95482105b15613eeb57506005919050565b600660005260106020527f20edfb71820f6f00f6a84ccfefb91587cd9f849f8349b0a3182a4795899d9cd9548210801590613f505750600760005260106020527f4ef6145e44e4298293af15ae5f84f922a836b1d6db608fd5008f32a528b312a95482105b15613f5d57506006919050565b600760005260106020527f4ef6145e44e4298293af15ae5f84f922a836b1d6db608fd5008f32a528b312a9548210613f9757506007919050565b506000919050565b919050565b613fac6143ce565b6001600160a01b0381166140115760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e18565b61401a81614af4565b50565b6001600160a01b03808216600090815260136020908152604080832093861683526006909301905290812081908190815b60078201548110156142a0576000826007018281548110614071576140716150d6565b90600052602060002090600602016040518060c001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900460ff161515151581525050905060008160800151905080601360008a6001600160a01b03166001600160a01b0316815260200190815260200160002060060160008b6001600160a01b03166001600160a01b0316815260200190815260200160002060050154101561428b57600554602083015183516000929161414f91614f57565b6141599190614f76565b6001600160a01b03808b166000908152601360209081526040808320938f168352600690930190529081206005015460608601519293509091116141c9576001600160a01b03808b166000908152601360209081526040808320938f1683526006909301905220600501546141cf565b83606001515b905060004284106141e057426141e2565b835b90508082101561421a576003546141f98383615091565b6142039085614f57565b61420d9190614f76565b614217908961503e565b97505b600754856060015110614259576003546142348383615091565b61423e9085614f57565b6142489190614f76565b614252908b61503e565b9950614287565b6003546142668383615091565b6142709085614f57565b61427a9190614f76565b614284908a61503e565b98505b5050505b50508080614298906150ec565b91505061404e565b50509250925092565b6142b16143ce565b60009182526012602052604090912055565b61431460405180610100016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b03808416600090815260136020908152604080832093881683526006909301905220600801805483908110614352576143526150d6565b60009182526020918290206040805161010081018252600890930290910180546001600160a01b031683526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260079091015460e082015290509392505050565b6000546001600160a01b0362010000909104163314611b395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e18565b600054600160b01b900460ff1615611b395760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610e18565b60015b6006548160ff1611612023576001600160a01b0384161561486f5760055460ff82166000908152601160205260408120549091906144bd9088614f57565b6144c79190614f76565b9050600060646144d8836005614f57565b6144e29190614f76565b9050600060646144f28385615091565b6144fd906005614f57565b6145079190614f76565b6001600160a01b038a166000908152600c602052604081208054929350849290919061453490849061503e565b90915550506001600160a01b0389166000908152600d60205260408120805483929061456190849061503e565b909155506145719050818361503e565b61457b9084615091565b6001600160a01b038089166000908152601360209081526040808320938e1683526006909301905290812080549091906145b690849061503e565b90915550506001600160a01b03891663a9059cbb886145d5848661503e565b6145df9087615091565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561462a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061464e9190614f24565b506001600160a01b038781166000908152601360209081526040808320938d168352600690930181528282208351610100810185523381528083018d90528085018b905260ff89168452601290925292909120546060820152608081018790524260a082015260035460089092019160c08201906146cc9089614f57565b6146d6904261503e565b815260ff8716602091820152825460018082018555600094855293829020835160089092020180546001600160a01b0319166001600160a01b03909216919091178155908201519281019290925560408101516002830155606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155336001600160a01b03167ffe883be18162536a5aded817e29ca2d76bf91b2c48e273443be5a6d2764641de60008b8a888d8c8c601260008e60ff168152602001908152602001600020546040516147be989796959493929190615150565b60405180910390a2337f313de240b9d2462f717199a2ec91deeac21938e080b8d92eb44672cebaa971ff60008b8a888888886147fa818361503e565b614804908d615091565b604051614818989796959493929190615150565b60405180910390a26001600160a01b038781166000908152601360205260409020600101541661484a57505050612023565b5050506001600160a01b03938416600090815260136020526040902060010154909316925b8061487981615130565b91505061447f565b6001600160a01b038216600090815260136020526040902054156148e75760405162461bcd60e51b815260206004820152601760248201527f4269675479636f6f6e3a205573657220457869737473210000000000000000006044820152606401610e18565b6001600160a01b03811660009081526013602052604090205461494c5760405162461bcd60e51b815260206004820152601f60248201527f4269675479636f6f6e3a205265666572726572206e6f742045786973747321006044820152606401610e18565b600480546001600160a01b03848116600081815260136020818152604080842087815596845260148252832080546001600160a01b031990811686179091559383525260019093018054909116918516919091179055815491906149af836150ec565b90915550506001600160a01b03811660009081526013602052604081206002018054916149db836150ec565b90915550506001600160a01b038181166000818152601360208181526040808420600281015485526005810183528185204290559588168085529282528084205493859052945485519384529083015291927f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a910160405180910390a35050565b614a64614b4f565b6000805460ff60b01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b614ab961442f565b6000805460ff60b01b1916600160b01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614a943390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054600160b01b900460ff16611b395760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610e18565b80356001600160a01b0381168114613f9f57600080fd5b60008060408385031215614bc957600080fd5b614bd283614b9f565b946020939093013593505050565b600080600060608486031215614bf557600080fd5b614bfe84614b9f565b9250614c0c60208501614b9f565b9150604084013590509250925092565b600080600060608486031215614c3157600080fd5b614c3a84614b9f565b95602085013595506040909401359392505050565b801515811461401a57600080fd5b60008060408385031215614c7057600080fd5b614c7983614b9f565b91506020830135614c8981614c4f565b809150509250929050565b600060208284031215614ca657600080fd5b614caf82614b9f565b9392505050565b60008060408385031215614cc957600080fd5b614cd283614b9f565b9150614ce060208401614b9f565b90509250929050565b600060208284031215614cfb57600080fd5b5035919050565b803560ff81168114613f9f57600080fd5b600060208284031215614d2557600080fd5b614caf82614d02565b60008083601f840112614d4057600080fd5b50813567ffffffffffffffff811115614d5857600080fd5b6020830191508360208260051b8501011115614d7357600080fd5b9250929050565b600080600080600060608688031215614d9257600080fd5b614d9b86614b9f565b9450602086013567ffffffffffffffff80821115614db857600080fd5b614dc489838a01614d2e565b90965094506040880135915080821115614ddd57600080fd5b50614dea88828901614d2e565b969995985093965092949392505050565b60008060408385031215614e0e57600080fd5b50508035926020909101359150565b60008060008060808587031215614e3357600080fd5b614e3c85614b9f565b9350614e4a60208601614b9f565b9250614e5860408601614b9f565b9396929550929360600135925050565b60008060008060808587031215614e7e57600080fd5b614e8785614b9f565b93506020850135925060408501359150614ea360608601614b9f565b905092959194509250565b60008060408385031215614ec157600080fd5b614bd283614d02565b60208082526016908201527563616c6c6572206973206e6f74206f707261746f722160501b604082015260600190565b60208082526010908201526f746f6b656e206e6f742061646465642160801b604082015260600190565b600060208284031215614f3657600080fd5b8151614caf81614c4f565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615614f7157614f71614f41565b500290565b600082614f9357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215614faa57600080fd5b5051919050565b60208082526022908201527f4269675479636f6f6e3a20455243323020616c6c6f77616e6365206578636565604082015261642160f01b606082015260800190565b6020808252602b908201527f4269675479636f6f6e203a207061636b616765206f72206475726174696f6e2060408201526a697320696e76616c69642160a81b606082015260800190565b6000821982111561505157615051614f41565b500190565b6001600160a01b03979097168752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b6000828210156150a3576150a3614f41565b500390565b6001600160a01b03959095168552602085019390935260408401919091526060830152608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561510057615100614f41565b5060010190565b600060ff821660ff84168160ff048111821515161561512857615128614f41565b029392505050565b600060ff821660ff81141561514757615147614f41565b60010192915050565b9788526001600160a01b03968716602089015294909516604087015260ff929092166060860152608085015260a084015260c083019190915260e0820152610100019056fea264697066735822122020edc78f27f879a1cdc5f79d2c4cb1fffe99bf25c180e667ec6e6ba6c4c4fdf564736f6c634300080a0033