Overview
BNB Balance
0 BNB
BNB Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,052,257 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 44879689 | 2 hrs ago | IN | 0 BNB | 0.00010022 | ||||
Withdraw | 44875542 | 5 hrs ago | IN | 0 BNB | 0.00009887 | ||||
Withdraw | 44872917 | 7 hrs ago | IN | 0 BNB | 0.00049442 | ||||
Deposit | 44872912 | 7 hrs ago | IN | 0 BNB | 0.00041564 | ||||
Withdraw | 44870444 | 9 hrs ago | IN | 0 BNB | 0.00058986 | ||||
Withdraw | 44869724 | 10 hrs ago | IN | 0 BNB | 0.00040886 | ||||
Withdraw | 44869657 | 10 hrs ago | IN | 0 BNB | 0.00054279 | ||||
Withdraw | 44867766 | 11 hrs ago | IN | 0 BNB | 0.00011796 | ||||
Withdraw | 44867730 | 11 hrs ago | IN | 0 BNB | 0.00009887 | ||||
Deposit | 44867718 | 11 hrs ago | IN | 0 BNB | 0.00010022 | ||||
Withdraw | 44867697 | 12 hrs ago | IN | 0 BNB | 0.00013504 | ||||
Deposit | 44867410 | 12 hrs ago | IN | 0 BNB | 0.00041564 | ||||
Withdraw | 44866278 | 13 hrs ago | IN | 0 BNB | 0.00011794 | ||||
Withdraw | 44863114 | 15 hrs ago | IN | 0 BNB | 0.00011794 | ||||
Withdraw | 44862074 | 16 hrs ago | IN | 0 BNB | 0.00011794 | ||||
Withdraw | 44860382 | 18 hrs ago | IN | 0 BNB | 0.00058986 | ||||
Withdraw | 44859048 | 19 hrs ago | IN | 0 BNB | 0.00067518 | ||||
Deposit | 44858769 | 19 hrs ago | IN | 0 BNB | 0.00012451 | ||||
Withdraw | 44858265 | 19 hrs ago | IN | 0 BNB | 0.00011794 | ||||
Withdraw | 44854729 | 22 hrs ago | IN | 0 BNB | 0.00012974 | ||||
Withdraw | 44846236 | 29 hrs ago | IN | 0 BNB | 0.00027018 | ||||
Withdraw | 44846228 | 29 hrs ago | IN | 0 BNB | 0.0005898 | ||||
Withdraw | 44845522 | 30 hrs ago | IN | 0 BNB | 0.00009888 | ||||
Withdraw | 44842775 | 32 hrs ago | IN | 0 BNB | 0.00011796 | ||||
Withdraw | 44842679 | 32 hrs ago | IN | 0 BNB | 0.00013504 |
Loading...
Loading
Contract Name:
MasterChefV2
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 99999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; pragma experimental ABIEncoderV2; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/math/SafeMath.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; import "./interfaces/IBEP20.sol"; import "./SafeBEP20.sol"; import "./interfaces/IMasterChef.sol"; /// @notice The (older) MasterChef contract gives out a constant number of CAKE tokens per block. /// It is the only address with minting rights for CAKE. /// The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token /// that is deposited into the MasterChef V1 (MCV1) contract. /// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive incentives. contract MasterChefV2 is Ownable, ReentrancyGuard { using SafeMath for uint256; using SafeBEP20 for IBEP20; /// @notice Info of each MCV2 user. /// `amount` LP token amount the user has provided. /// `rewardDebt` Used to calculate the correct amount of rewards. See explanation below. /// /// We do some fancy math here. Basically, any point in time, the amount of CAKEs /// entitled to a user but is pending to be distributed is: /// /// pending reward = (user share * pool.accCakePerShare) - user.rewardDebt /// /// Whenever a user deposits or withdraws LP tokens to a pool. Here's what happens: /// 1. The pool's `accCakePerShare` (and `lastRewardBlock`) gets updated. /// 2. User receives the pending reward sent to his/her address. /// 3. User's `amount` gets updated. Pool's `totalBoostedShare` gets updated. /// 4. User's `rewardDebt` gets updated. struct UserInfo { uint256 amount; uint256 rewardDebt; uint256 boostMultiplier; } /// @notice Info of each MCV2 pool. /// `allocPoint` The amount of allocation points assigned to the pool. /// Also known as the amount of "multipliers". Combined with `totalXAllocPoint`, it defines the % of /// CAKE rewards each pool gets. /// `accCakePerShare` Accumulated CAKEs per share, times 1e12. /// `lastRewardBlock` Last block number that pool update action is executed. /// `isRegular` The flag to set pool is regular or special. See below: /// In MasterChef V2 farms are "regular pools". "special pools", which use a different sets of /// `allocPoint` and their own `totalSpecialAllocPoint` are designed to handle the distribution of /// the CAKE rewards to all the PancakeSwap products. /// `totalBoostedShare` The total amount of user shares in each pool. After considering the share boosts. struct PoolInfo { uint256 accCakePerShare; uint256 lastRewardBlock; uint256 allocPoint; uint256 totalBoostedShare; bool isRegular; } /// @notice Address of MCV1 contract. IMasterChef public immutable MASTER_CHEF; /// @notice Address of CAKE contract. IBEP20 public immutable CAKE; /// @notice The only address can withdraw all the burn CAKE. address public burnAdmin; /// @notice The contract handles the share boosts. address public boostContract; /// @notice Info of each MCV2 pool. PoolInfo[] public poolInfo; /// @notice Address of the LP token for each MCV2 pool. IBEP20[] public lpToken; /// @notice Info of each pool user. mapping(uint256 => mapping(address => UserInfo)) public userInfo; /// @notice The whitelist of addresses allowed to deposit in special pools. mapping(address => bool) public whiteList; /// @notice The pool id of the MCV2 mock token pool in MCV1. uint256 public immutable MASTER_PID; /// @notice Total regular allocation points. Must be the sum of all regular pools' allocation points. uint256 public totalRegularAllocPoint; /// @notice Total special allocation points. Must be the sum of all special pools' allocation points. uint256 public totalSpecialAllocPoint; /// @notice 40 cakes per block in MCV1 uint256 public constant MASTERCHEF_CAKE_PER_BLOCK = 40 * 1e18; uint256 public constant ACC_CAKE_PRECISION = 1e18; /// @notice Basic boost factor, none boosted user's boost factor uint256 public constant BOOST_PRECISION = 100 * 1e10; /// @notice Hard limit for maxmium boost factor, it must greater than BOOST_PRECISION uint256 public constant MAX_BOOST_PRECISION = 200 * 1e10; /// @notice total cake rate = toBurn + toRegular + toSpecial uint256 public constant CAKE_RATE_TOTAL_PRECISION = 1e12; /// @notice The last block number of CAKE burn action being executed. /// @notice CAKE distribute % for burn uint256 public cakeRateToBurn = 643750000000; /// @notice CAKE distribute % for regular farm pool uint256 public cakeRateToRegularFarm = 62847222222; /// @notice CAKE distribute % for special pools uint256 public cakeRateToSpecialFarm = 293402777778; uint256 public lastBurnedBlock; event Init(); event AddPool(uint256 indexed pid, uint256 allocPoint, IBEP20 indexed lpToken, bool isRegular); event SetPool(uint256 indexed pid, uint256 allocPoint); event UpdatePool(uint256 indexed pid, uint256 lastRewardBlock, uint256 lpSupply, uint256 accCakePerShare); event Deposit(address indexed user, uint256 indexed pid, uint256 amount); event Withdraw(address indexed user, uint256 indexed pid, uint256 amount); event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount); event UpdateCakeRate(uint256 burnRate, uint256 regularFarmRate, uint256 specialFarmRate); event UpdateBurnAdmin(address indexed oldAdmin, address indexed newAdmin); event UpdateWhiteList(address indexed user, bool isValid); event UpdateBoostContract(address indexed boostContract); event UpdateBoostMultiplier(address indexed user, uint256 pid, uint256 oldMultiplier, uint256 newMultiplier); /// @param _MASTER_CHEF The PancakeSwap MCV1 contract address. /// @param _CAKE The CAKE token contract address. /// @param _MASTER_PID The pool id of the dummy pool on the MCV1. /// @param _burnAdmin The address of burn admin. constructor( IMasterChef _MASTER_CHEF, IBEP20 _CAKE, uint256 _MASTER_PID, address _burnAdmin ) public { MASTER_CHEF = _MASTER_CHEF; CAKE = _CAKE; MASTER_PID = _MASTER_PID; burnAdmin = _burnAdmin; } /** * @dev Throws if caller is not the boost contract. */ modifier onlyBoostContract() { require(boostContract == msg.sender, "Ownable: caller is not the boost contract"); _; } /// @notice Deposits a dummy token to `MASTER_CHEF` MCV1. This is required because MCV1 holds the minting permission of CAKE. /// It will transfer all the `dummyToken` in the tx sender address. /// The allocation point for the dummy pool on MCV1 should be equal to the total amount of allocPoint. /// @param dummyToken The address of the BEP-20 token to be deposited into MCV1. function init(IBEP20 dummyToken) external onlyOwner { uint256 balance = dummyToken.balanceOf(msg.sender); require(balance != 0, "MasterChefV2: Balance must exceed 0"); dummyToken.safeTransferFrom(msg.sender, address(this), balance); dummyToken.approve(address(MASTER_CHEF), balance); MASTER_CHEF.deposit(MASTER_PID, balance); // MCV2 start to earn CAKE reward from current block in MCV1 pool lastBurnedBlock = block.number; emit Init(); } /// @notice Returns the number of MCV2 pools. function poolLength() public view returns (uint256 pools) { pools = poolInfo.length; } /// @notice Add a new pool. Can only be called by the owner. /// DO NOT add the same LP token more than once. Rewards will be messed up if you do. /// @param _allocPoint Number of allocation points for the new pool. /// @param _lpToken Address of the LP BEP-20 token. /// @param _isRegular Whether the pool is regular or special. LP farms are always "regular". "Special" pools are /// @param _withUpdate Whether call "massUpdatePools" operation. /// only for CAKE distributions within PancakeSwap products. function add( uint256 _allocPoint, IBEP20 _lpToken, bool _isRegular, bool _withUpdate ) external onlyOwner { require(_lpToken.balanceOf(address(this)) >= 0, "None BEP20 tokens"); // stake CAKE token will cause staked token and reward token mixed up, // may cause staked tokens withdraw as reward token,never do it. require(_lpToken != CAKE, "CAKE token can't be added to farm pools"); if (_withUpdate) { massUpdatePools(); } if (_isRegular) { totalRegularAllocPoint = totalRegularAllocPoint.add(_allocPoint); } else { totalSpecialAllocPoint = totalSpecialAllocPoint.add(_allocPoint); } lpToken.push(_lpToken); poolInfo.push( PoolInfo({ allocPoint: _allocPoint, lastRewardBlock: block.number, accCakePerShare: 0, isRegular: _isRegular, totalBoostedShare: 0 }) ); emit AddPool(lpToken.length.sub(1), _allocPoint, _lpToken, _isRegular); } /// @notice Update the given pool's CAKE allocation point. Can only be called by the owner. /// @param _pid The id of the pool. See `poolInfo`. /// @param _allocPoint New number of allocation points for the pool. /// @param _withUpdate Whether call "massUpdatePools" operation. function set( uint256 _pid, uint256 _allocPoint, bool _withUpdate ) external onlyOwner { // No matter _withUpdate is true or false, we need to execute updatePool once before set the pool parameters. updatePool(_pid); if (_withUpdate) { massUpdatePools(); } if (poolInfo[_pid].isRegular) { totalRegularAllocPoint = totalRegularAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint); } else { totalSpecialAllocPoint = totalSpecialAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint); } poolInfo[_pid].allocPoint = _allocPoint; emit SetPool(_pid, _allocPoint); } /// @notice View function for checking pending CAKE rewards. /// @param _pid The id of the pool. See `poolInfo`. /// @param _user Address of the user. function pendingCake(uint256 _pid, address _user) external view returns (uint256) { PoolInfo memory pool = poolInfo[_pid]; UserInfo memory user = userInfo[_pid][_user]; uint256 accCakePerShare = pool.accCakePerShare; uint256 lpSupply = pool.totalBoostedShare; if (block.number > pool.lastRewardBlock && lpSupply != 0) { uint256 multiplier = block.number.sub(pool.lastRewardBlock); uint256 cakeReward = multiplier.mul(cakePerBlock(pool.isRegular)).mul(pool.allocPoint).div( (pool.isRegular ? totalRegularAllocPoint : totalSpecialAllocPoint) ); accCakePerShare = accCakePerShare.add(cakeReward.mul(ACC_CAKE_PRECISION).div(lpSupply)); } uint256 boostedAmount = user.amount.mul(getBoostMultiplier(_user, _pid)).div(BOOST_PRECISION); return boostedAmount.mul(accCakePerShare).div(ACC_CAKE_PRECISION).sub(user.rewardDebt); } /// @notice Update cake reward for all the active pools. Be careful of gas spending! function massUpdatePools() public { uint256 length = poolInfo.length; for (uint256 pid = 0; pid < length; ++pid) { PoolInfo memory pool = poolInfo[pid]; if (pool.allocPoint != 0) { updatePool(pid); } } } /// @notice Calculates and returns the `amount` of CAKE per block. /// @param _isRegular If the pool belongs to regular or special. function cakePerBlock(bool _isRegular) public view returns (uint256 amount) { if (_isRegular) { amount = MASTERCHEF_CAKE_PER_BLOCK.mul(cakeRateToRegularFarm).div(CAKE_RATE_TOTAL_PRECISION); } else { amount = MASTERCHEF_CAKE_PER_BLOCK.mul(cakeRateToSpecialFarm).div(CAKE_RATE_TOTAL_PRECISION); } } /// @notice Calculates and returns the `amount` of CAKE per block to burn. function cakePerBlockToBurn() public view returns (uint256 amount) { amount = MASTERCHEF_CAKE_PER_BLOCK.mul(cakeRateToBurn).div(CAKE_RATE_TOTAL_PRECISION); } /// @notice Update reward variables for the given pool. /// @param _pid The id of the pool. See `poolInfo`. /// @return pool Returns the pool that was updated. function updatePool(uint256 _pid) public returns (PoolInfo memory pool) { pool = poolInfo[_pid]; if (block.number > pool.lastRewardBlock) { uint256 lpSupply = pool.totalBoostedShare; uint256 totalAllocPoint = (pool.isRegular ? totalRegularAllocPoint : totalSpecialAllocPoint); if (lpSupply > 0 && totalAllocPoint > 0) { uint256 multiplier = block.number.sub(pool.lastRewardBlock); uint256 cakeReward = multiplier.mul(cakePerBlock(pool.isRegular)).mul(pool.allocPoint).div( totalAllocPoint ); pool.accCakePerShare = pool.accCakePerShare.add((cakeReward.mul(ACC_CAKE_PRECISION).div(lpSupply))); } pool.lastRewardBlock = block.number; poolInfo[_pid] = pool; emit UpdatePool(_pid, pool.lastRewardBlock, lpSupply, pool.accCakePerShare); } } /// @notice Deposit LP tokens to pool. /// @param _pid The id of the pool. See `poolInfo`. /// @param _amount Amount of LP tokens to deposit. function deposit(uint256 _pid, uint256 _amount) external nonReentrant { PoolInfo memory pool = updatePool(_pid); UserInfo storage user = userInfo[_pid][msg.sender]; require( pool.isRegular || whiteList[msg.sender], "MasterChefV2: The address is not available to deposit in this pool" ); uint256 multiplier = getBoostMultiplier(msg.sender, _pid); if (user.amount > 0) { settlePendingCake(msg.sender, _pid, multiplier); } if (_amount > 0) { uint256 before = lpToken[_pid].balanceOf(address(this)); lpToken[_pid].safeTransferFrom(msg.sender, address(this), _amount); _amount = lpToken[_pid].balanceOf(address(this)).sub(before); user.amount = user.amount.add(_amount); // Update total boosted share. pool.totalBoostedShare = pool.totalBoostedShare.add(_amount.mul(multiplier).div(BOOST_PRECISION)); } user.rewardDebt = user.amount.mul(multiplier).div(BOOST_PRECISION).mul(pool.accCakePerShare).div( ACC_CAKE_PRECISION ); poolInfo[_pid] = pool; emit Deposit(msg.sender, _pid, _amount); } /// @notice Withdraw LP tokens from pool. /// @param _pid The id of the pool. See `poolInfo`. /// @param _amount Amount of LP tokens to withdraw. function withdraw(uint256 _pid, uint256 _amount) external nonReentrant { PoolInfo memory pool = updatePool(_pid); UserInfo storage user = userInfo[_pid][msg.sender]; require(user.amount >= _amount, "withdraw: Insufficient"); uint256 multiplier = getBoostMultiplier(msg.sender, _pid); settlePendingCake(msg.sender, _pid, multiplier); if (_amount > 0) { user.amount = user.amount.sub(_amount); lpToken[_pid].safeTransfer(msg.sender, _amount); } user.rewardDebt = user.amount.mul(multiplier).div(BOOST_PRECISION).mul(pool.accCakePerShare).div( ACC_CAKE_PRECISION ); poolInfo[_pid].totalBoostedShare = poolInfo[_pid].totalBoostedShare.sub( _amount.mul(multiplier).div(BOOST_PRECISION) ); emit Withdraw(msg.sender, _pid, _amount); } /// @notice Harvests CAKE from `MASTER_CHEF` MCV1 and pool `MASTER_PID` to MCV2. function harvestFromMasterChef() public { MASTER_CHEF.deposit(MASTER_PID, 0); } /// @notice Withdraw without caring about the rewards. EMERGENCY ONLY. /// @param _pid The id of the pool. See `poolInfo`. function emergencyWithdraw(uint256 _pid) external nonReentrant { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; uint256 amount = user.amount; user.amount = 0; user.rewardDebt = 0; uint256 boostedAmount = amount.mul(getBoostMultiplier(msg.sender, _pid)).div(BOOST_PRECISION); pool.totalBoostedShare = pool.totalBoostedShare > boostedAmount ? pool.totalBoostedShare.sub(boostedAmount) : 0; // Note: transfer can fail or succeed if `amount` is zero. lpToken[_pid].safeTransfer(msg.sender, amount); emit EmergencyWithdraw(msg.sender, _pid, amount); } /// @notice Send CAKE pending for burn to `burnAdmin`. /// @param _withUpdate Whether call "massUpdatePools" operation. function burnCake(bool _withUpdate) public onlyOwner { if (_withUpdate) { massUpdatePools(); } uint256 multiplier = block.number.sub(lastBurnedBlock); uint256 pendingCakeToBurn = multiplier.mul(cakePerBlockToBurn()); // SafeTransfer CAKE _safeTransfer(burnAdmin, pendingCakeToBurn); lastBurnedBlock = block.number; } /// @notice Update the % of CAKE distributions for burn, regular pools and special pools. /// @param _burnRate The % of CAKE to burn each block. /// @param _regularFarmRate The % of CAKE to regular pools each block. /// @param _specialFarmRate The % of CAKE to special pools each block. /// @param _withUpdate Whether call "massUpdatePools" operation. function updateCakeRate( uint256 _burnRate, uint256 _regularFarmRate, uint256 _specialFarmRate, bool _withUpdate ) external onlyOwner { require( _burnRate > 0 && _regularFarmRate > 0 && _specialFarmRate > 0, "MasterChefV2: Cake rate must be greater than 0" ); require( _burnRate.add(_regularFarmRate).add(_specialFarmRate) == CAKE_RATE_TOTAL_PRECISION, "MasterChefV2: Total rate must be 1e12" ); if (_withUpdate) { massUpdatePools(); } // burn cake base on old burn cake rate burnCake(false); cakeRateToBurn = _burnRate; cakeRateToRegularFarm = _regularFarmRate; cakeRateToSpecialFarm = _specialFarmRate; emit UpdateCakeRate(_burnRate, _regularFarmRate, _specialFarmRate); } /// @notice Update burn admin address. /// @param _newAdmin The new burn admin address. function updateBurnAdmin(address _newAdmin) external onlyOwner { require(_newAdmin != address(0), "MasterChefV2: Burn admin address must be valid"); require(_newAdmin != burnAdmin, "MasterChefV2: Burn admin address is the same with current address"); address _oldAdmin = burnAdmin; burnAdmin = _newAdmin; emit UpdateBurnAdmin(_oldAdmin, _newAdmin); } /// @notice Update whitelisted addresses for special pools. /// @param _user The address to be updated. /// @param _isValid The flag for valid or invalid. function updateWhiteList(address _user, bool _isValid) external onlyOwner { require(_user != address(0), "MasterChefV2: The white list address must be valid"); whiteList[_user] = _isValid; emit UpdateWhiteList(_user, _isValid); } /// @notice Update boost contract address and max boost factor. /// @param _newBoostContract The new address for handling all the share boosts. function updateBoostContract(address _newBoostContract) external onlyOwner { require( _newBoostContract != address(0) && _newBoostContract != boostContract, "MasterChefV2: New boost contract address must be valid" ); boostContract = _newBoostContract; emit UpdateBoostContract(_newBoostContract); } /// @notice Update user boost factor. /// @param _user The user address for boost factor updates. /// @param _pid The pool id for the boost factor updates. /// @param _newMultiplier New boost multiplier. function updateBoostMultiplier( address _user, uint256 _pid, uint256 _newMultiplier ) external onlyBoostContract nonReentrant { require(_user != address(0), "MasterChefV2: The user address must be valid"); require(poolInfo[_pid].isRegular, "MasterChefV2: Only regular farm could be boosted"); require( _newMultiplier >= BOOST_PRECISION && _newMultiplier <= MAX_BOOST_PRECISION, "MasterChefV2: Invalid new boost multiplier" ); PoolInfo memory pool = updatePool(_pid); UserInfo storage user = userInfo[_pid][_user]; uint256 prevMultiplier = getBoostMultiplier(_user, _pid); settlePendingCake(_user, _pid, prevMultiplier); user.rewardDebt = user.amount.mul(_newMultiplier).div(BOOST_PRECISION).mul(pool.accCakePerShare).div( ACC_CAKE_PRECISION ); pool.totalBoostedShare = pool.totalBoostedShare.sub(user.amount.mul(prevMultiplier).div(BOOST_PRECISION)).add( user.amount.mul(_newMultiplier).div(BOOST_PRECISION) ); poolInfo[_pid] = pool; userInfo[_pid][_user].boostMultiplier = _newMultiplier; emit UpdateBoostMultiplier(_user, _pid, prevMultiplier, _newMultiplier); } /// @notice Get user boost multiplier for specific pool id. /// @param _user The user address. /// @param _pid The pool id. function getBoostMultiplier(address _user, uint256 _pid) public view returns (uint256) { uint256 multiplier = userInfo[_pid][_user].boostMultiplier; return multiplier > BOOST_PRECISION ? multiplier : BOOST_PRECISION; } /// @notice Settles, distribute the pending CAKE rewards for given user. /// @param _user The user address for settling rewards. /// @param _pid The pool id. /// @param _boostMultiplier The user boost multiplier in specific pool id. function settlePendingCake( address _user, uint256 _pid, uint256 _boostMultiplier ) internal { UserInfo memory user = userInfo[_pid][_user]; uint256 boostedAmount = user.amount.mul(_boostMultiplier).div(BOOST_PRECISION); uint256 accCake = boostedAmount.mul(poolInfo[_pid].accCakePerShare).div(ACC_CAKE_PRECISION); uint256 pending = accCake.sub(user.rewardDebt); // SafeTransfer CAKE _safeTransfer(_user, pending); } /// @notice Safe Transfer CAKE. /// @param _to The CAKE receiver address. /// @param _amount transfer CAKE amounts. function _safeTransfer(address _to, uint256 _amount) internal { if (_amount > 0) { // Check whether MCV2 has enough CAKE. If not, harvest from MCV1. if (CAKE.balanceOf(address(this)) < _amount) { harvestFromMasterChef(); } uint256 balance = CAKE.balanceOf(address(this)); if (balance < _amount) { _amount = balance; } CAKE.safeTransfer(_to, _amount); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; import "../GSN/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () internal { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.4.0; interface IBEP20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the token decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the token symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the token name. */ function name() external view returns (string memory); /** * @dev Returns the bep token owner. */ function getOwner() external view returns (address); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address _owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; import "./interfaces/IBEP20.sol"; import "@openzeppelin/contracts/utils/Address.sol"; import "@openzeppelin/contracts/math/SafeMath.sol"; /** * @title SafeBEP20 * @dev Wrappers around BEP20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeBEP20 for IBEP20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeBEP20 { using SafeMath for uint256; using Address for address; function safeTransfer( IBEP20 token, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transfer.selector, to, value) ); } function safeTransferFrom( IBEP20 token, address from, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IBEP20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IBEP20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeBEP20: approve from non-zero to non-zero allowance" ); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, value) ); } function safeIncreaseAllowance( IBEP20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance) ); } function safeDecreaseAllowance( IBEP20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).sub( value, "SafeBEP20: decreased allowance below zero" ); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance) ); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IBEP20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeBEP20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require( abi.decode(returndata, (bool)), "SafeBEP20: BEP20 operation did not succeed" ); } } }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IMasterChef { function deposit(uint256 _pid, uint256 _amount) external; function withdraw(uint256 _pid, uint256 _amount) external; function enterStaking(uint256 _amount) external; function leaveStaking(uint256 _amount) external; function pendingCake(uint256 _pid, address _user) external view returns (uint256); function userInfo(uint256 _pid, address _user) external view returns (uint256, uint256); function emergencyWithdraw(uint256 _pid) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.2; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
{ "optimizer": { "enabled": true, "runs": 99999 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IMasterChef","name":"_MASTER_CHEF","type":"address"},{"internalType":"contract IBEP20","name":"_CAKE","type":"address"},{"internalType":"uint256","name":"_MASTER_PID","type":"uint256"},{"internalType":"address","name":"_burnAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":true,"internalType":"contract IBEP20","name":"lpToken","type":"address"},{"indexed":false,"internalType":"bool","name":"isRegular","type":"bool"}],"name":"AddPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[],"name":"Init","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"}],"name":"SetPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"boostContract","type":"address"}],"name":"UpdateBoostContract","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldMultiplier","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"UpdateBoostMultiplier","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"UpdateBurnAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"burnRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"regularFarmRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"specialFarmRate","type":"uint256"}],"name":"UpdateCakeRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lpSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accCakePerShare","type":"uint256"}],"name":"UpdatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"isValid","type":"bool"}],"name":"UpdateWhiteList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"ACC_CAKE_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BOOST_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CAKE","outputs":[{"internalType":"contract IBEP20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CAKE_RATE_TOTAL_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MASTERCHEF_CAKE_PER_BLOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MASTER_CHEF","outputs":[{"internalType":"contract IMasterChef","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MASTER_PID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_BOOST_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IBEP20","name":"_lpToken","type":"address"},{"internalType":"bool","name":"_isRegular","type":"bool"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"boostContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"burnCake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isRegular","type":"bool"}],"name":"cakePerBlock","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cakePerBlockToBurn","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cakeRateToBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cakeRateToRegularFarm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cakeRateToSpecialFarm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"getBoostMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvestFromMasterChef","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBEP20","name":"dummyToken","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastBurnedBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lpToken","outputs":[{"internalType":"contract IBEP20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingCake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"uint256","name":"accCakePerShare","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"totalBoostedShare","type":"uint256"},{"internalType":"bool","name":"isRegular","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"pools","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalRegularAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSpecialAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newBoostContract","type":"address"}],"name":"updateBoostContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_newMultiplier","type":"uint256"}],"name":"updateBoostMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"updateBurnAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnRate","type":"uint256"},{"internalType":"uint256","name":"_regularFarmRate","type":"uint256"},{"internalType":"uint256","name":"_specialFarmRate","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"updateCakeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[{"components":[{"internalType":"uint256","name":"accCakePerShare","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"totalBoostedShare","type":"uint256"},{"internalType":"bool","name":"isRegular","type":"bool"}],"internalType":"struct MasterChefV2.PoolInfo","name":"pool","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_isValid","type":"bool"}],"name":"updateWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"boostMultiplier","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e06040526495e27d7580600a55640ea1fc81ce600b556444502b18b2600c553480156200002c57600080fd5b5060405162003cf638038062003cf68339810160408190526200004f91620000f3565b60006200005b620000ef565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018055606093841b6001600160601b03199081166080529290931b90911660a05260c052600280546001600160a01b0319166001600160a01b0390921691909117905562000167565b3390565b6000806000806080858703121562000109578384fd5b845162000116816200014e565b602086015190945062000129816200014e565b60408601516060870151919450925062000143816200014e565b939692955090935050565b6001600160a01b03811681146200016457600080fd5b50565b60805160601c60a05160601c60c051613b2f620001c760003980610f4e5280611307528061166452508061127b5280611ec65280612b215280612bf45280612ca1525080610e675280610f2152806112da52806126be5250613b2f6000f3fe608060405234801561001057600080fd5b50600436106102e95760003560e01c80637398b7ea11610191578063ac1d0609116100e3578063dfcedeee11610097578063e39e132311610071578063e39e13231461052b578063edd8b17014610569578063f2fde38b14610571576102e9565b8063dfcedeee14610546578063e0f91f6c1461054e578063e2bbb15814610556576102e9565b8063c507aeaa116100c8578063c507aeaa14610518578063cc6db2da1461052b578063dc6363df14610533576102e9565b8063ac1d0609146104fd578063c40d337b14610510576102e9565b80638da5cb5b116101455780639dcc1b5f1161011f5780639dcc1b5f146104da5780639dd2fcc3146104e2578063aa47bc8e146104f5576102e9565b80638da5cb5b146104a857806393f1a40b146104b057806399d7e84a146104d2576102e9565b806378db4c341161017657806378db4c341461048557806378ed5d1f1461048d57806381bdf98c146104a0576102e9565b80637398b7ea1461046a578063777a97f814610472576102e9565b806339aae5ba1161024a5780635312ea8e116101fe57806364482f79116101d857806364482f791461044757806369b021281461045a578063715018a614610462576102e9565b80635312ea8e1461042457806361621aaa14610437578063630b5ba11461043f576102e9565b80634ca6ef281161022f5780634ca6ef28146103e75780634f70b15a146103fc57806351eb05a614610404576102e9565b806339aae5ba146103cc578063441a3e70146103d4576102e9565b80631526fe27116102a15780631ce06d57116102865780631ce06d57146103915780631e9b828b14610399578063372c12b1146103ac576102e9565b80631526fe271461035a57806319ab453c1461037e576102e9565b8063081e3eda116102d2578063081e3eda1461032c5780630bb844bc146103345780631175a1dd14610347576102e9565b8063033186e8146102ee578063041a84c914610317575b600080fd5b6103016102fc366004612fdd565b610584565b60405161030e9190613a38565b60405180910390f35b61032a610325366004613008565b6105da565b005b610301610952565b61032a610342366004612f89565b610958565b6103016103553660046130a4565b610acd565b61036d610368366004613074565b610c80565b60405161030e959493929190613a75565b61032a61038c366004612f89565b610cc1565b610301610fdb565b6103016103a736600461303c565b610fe1565b6103bf6103ba366004612f89565b611046565b60405161030e919061323c565b61030161105b565b61032a6103e236600461311a565b611068565b6103ef611279565b60405161030e91906131c4565b61032a61129d565b610417610412366004613074565b611366565b60405161030e91906139fc565b61032a610432366004613074565b611534565b610301611662565b61032a611686565b61032a61045536600461313b565b61171a565b610301611891565b61032a61189b565b610301611966565b61032a61048036600461303c565b611972565b610301611a38565b6103ef61049b366004613074565b611a3e565b6103ef611a72565b6103ef611a8e565b6104c36104be3660046130a4565b611aaa565b60405161030e93929190613a5f565b610301611ad6565b610301611adc565b61032a6104f0366004612f89565b611b0a565b610301611c4b565b61032a61050b366004612fa5565b611c51565b610301611d85565b61032a6105263660046130c8565b611d8b565b610301612164565b61032a610541366004613173565b61216d565b6103ef6122cf565b6103016122eb565b61032a61056436600461311a565b6122f1565b6103ef6126bc565b61032a61057f366004612f89565b6126e0565b600081815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281206002015464e8d4a5100081116105ce5764e8d4a510006105d0565b805b9150505b92915050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136dd565b60405180910390fd5b60026001541415610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906138e5565b600260015573ffffffffffffffffffffffffffffffffffffffff83166106c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613443565b600482815481106106d057fe5b600091825260209091206004600590920201015460ff1661071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613797565b64e8d4a51000811015801561073857506501d1a94a20008111155b61076e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906132f5565b610776612f37565b61077f83611366565b600084815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845290915281209192506107bb8686610584565b90506107c8868683612816565b610808670de0b6b3a76400006107fc856000015161080264e8d4a510006107fc8a89600001546128f390919063ffffffff16565b90612947565b906128f3565b60018301558154610854906108289064e8d4a51000906107fc90886128f3565b835461084e906108439064e8d4a51000906107fc90876128f3565b606087015190612990565b906129d2565b6060840152600480548491908790811061086a57fe5b6000918252602080832084516005939093020191825583810151600183015560408085015160028085019190915560608601516003850155608090950151600490930180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016931515939093179092558883526006815281832073ffffffffffffffffffffffffffffffffffffffff8b1680855291529181902090920186905590517f01abd62439b64f6c5dab6f94d56099495bd0c094f9c21f98f4d3562a21edb4ba9061093e90889085908990613a5f565b60405180910390a250506001805550505050565b60045490565b610960612a11565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146109b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b73ffffffffffffffffffffffffffffffffffffffff8116610a01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906134a0565b60025473ffffffffffffffffffffffffffffffffffffffff82811691161415610a56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061391c565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907fd146fe330fdddf682413850a35b28edfccd4c4b53cfee802fd24950de5be1dbe90600090a35050565b6000610ad7612f37565b60048481548110610ae457fe5b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301939093526002830154908201526003820154606082015260049091015460ff16151560808201529050610b3e612f68565b50600084815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845282529182902082516060808201855282548252600183015482850152600290920154938101939093528351908401519184015190919043118015610bac57508015155b15610c2c576000610bca85602001514361299090919063ffffffff16565b90506000610c058660800151610be257600954610be6565b6008545b6107fc8860400151610802610bfe8b60800151610fe1565b87906128f3565b9050610c27610c20846107fc84670de0b6b3a76400006128f3565b85906129d2565b935050505b6000610c4c64e8d4a510006107fc610c448a8c610584565b8751906128f3565b6020850151909150610c7490610c6e670de0b6b3a76400006107fc85886128f3565b90612990565b98975050505050505050565b60048181548110610c8d57fe5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294509092909160ff1685565b610cc9612a11565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614610d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190610d729033906004016131c4565b60206040518083038186803b158015610d8a57600080fd5b505afa158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc2919061308c565b905080610dfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613298565b610e1d73ffffffffffffffffffffffffffffffffffffffff8316333084612a15565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063095ea7b390610e91907f0000000000000000000000000000000000000000000000000000000000000000908590600401613216565b602060405180830381600087803b158015610eab57600080fd5b505af1158015610ebf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee39190613058565b506040517fe2bbb15800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb15890610f78907f0000000000000000000000000000000000000000000000000000000000000000908590600401613a51565b600060405180830381600087803b158015610f9257600080fd5b505af1158015610fa6573d6000803e3d6000fd5b505043600d5550506040517f57a86f7d14ccde89e22870afe839e3011216827daa9b24e18629f0a1e9d6cc1490600090a15050565b600c5481565b600081156110175761101064e8d4a510006107fc600b5468022b1c8c1227a000006128f390919063ffffffff16565b9050611041565b61103e64e8d4a510006107fc600c5468022b1c8c1227a000006128f390919063ffffffff16565b90505b919050565b60076020526000908152604090205460ff1681565b68022b1c8c1227a0000081565b600260015414156110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906138e5565b60026001556110b2612f37565b6110bb83611366565b60008481526006602090815260408083203384529091529020805491925090831115611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061363a565b600061111f3386610584565b905061112c338683612816565b831561118157815461113e9085612990565b826000018190555061118133856005888154811061115857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169190612ab8565b6111b5670de0b6b3a76400006107fc856000015161080264e8d4a510006107fc8789600001546128f390919063ffffffff16565b60018301556111fd6111d064e8d4a510006107fc87856128f3565b600487815481106111dd57fe5b90600052602060002090600502016003015461299090919063ffffffff16565b6004868154811061120a57fe5b906000526020600020906005020160030181905550843373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568866040516112669190613a38565b60405180910390a3505060018055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6040517fe2bbb15800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb15890611332907f000000000000000000000000000000000000000000000000000000000000000090600090600401613a51565b600060405180830381600087803b15801561134c57600080fd5b505af1158015611360573d6000803e3d6000fd5b50505050565b61136e612f37565b6004828154811061137b57fe5b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301849052600281015491830191909152600381015460608301526004015460ff1615156080820152915043111561104157606081015160808201516000906113ed576009546113f1565b6008545b90506000821180156114035750600081115b1561146957600061142184602001514361299090919063ffffffff16565b90506000611441836107fc8760400151610802610bfe8a60800151610fe1565b905061146461145c856107fc84670de0b6b3a76400006128f3565b8651906129d2565b855250505b436020840152600480548491908690811061148057fe5b6000918252602091829020835160059290920201908155828201516001820155604080840151600283015560608401516003830155608090930151600490910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558401518451915186927f3be3541fc42237d611b30329040bfa4569541d156560acdbbae57640d20b8f46926115259290918791613a5f565b60405180910390a25050919050565b60026001541415611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906138e5565b600260018190555060006004828154811061158857fe5b6000918252602080832085845260068252604080852033808752935284208054858255600182018690556005909402909101945092906115de9064e8d4a51000906107fc906115d79089610584565b85906128f3565b9050808460030154116115f2576000611601565b60038401546116019082612990565b846003018190555061161b33836005888154811061115857fe5b843373ffffffffffffffffffffffffffffffffffffffff167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595846040516112669190613a38565b7f000000000000000000000000000000000000000000000000000000000000000081565b60045460005b818110156117165761169c612f37565b600482815481106116a957fe5b60009182526020918290206040805160a08101825260059093029091018054835260018101549383019390935260028301549082018190526003830154606083015260049092015460ff161515608082015291501561170d5761170b82611366565b505b5060010161168c565b5050565b611722612a11565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b61177f83611366565b50801561178e5761178e611686565b6004838154811061179b57fe5b600091825260209091206004600590920201015460ff16156117f6576117ee8261084e600486815481106117cb57fe5b90600052602060002090600502016002015460085461299090919063ffffffff16565b600855611831565b61182d8261084e6004868154811061180a57fe5b90600052602060002090600502016002015460095461299090919063ffffffff16565b6009555b816004848154811061183f57fe5b906000526020600020906005020160020181905550827fc0cfd54d2de2b55f1e6e108d3ec53ff0a1abe6055401d32c61e9433b747ef9f8836040516118849190613a38565b60405180910390a2505050565b6501d1a94a200081565b6118a3612a11565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146118f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b670de0b6b3a764000081565b61197a612a11565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146119ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b80156119dc576119dc611686565b60006119f3600d544361299090919063ffffffff16565b90506000611a09611a02611adc565b83906128f3565b600254909150611a2f9073ffffffffffffffffffffffffffffffffffffffff1682612adc565b505043600d5550565b600d5481565b60058181548110611a4b57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b600660209081526000928352604080842090915290825290208054600182015460029092015490919083565b60095481565b6000611b0564e8d4a510006107fc600a5468022b1c8c1227a000006128f390919063ffffffff16565b905090565b611b12612a11565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614611b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b73ffffffffffffffffffffffffffffffffffffffff811615801590611ba6575060035473ffffffffffffffffffffffffffffffffffffffff828116911614155b611bdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061399f565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f4c0c07d0b548b824a1b998eb4d11fccf1cfbc1e47edcdb309970ba88315eb30390600090a250565b600b5481565b611c59612a11565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614611cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b73ffffffffffffffffffffffffffffffffffffffff8216611cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906137f4565b73ffffffffffffffffffffffffffffffffffffffff82166000818152600760205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016841515179055517fc551bbb22d0406dbfb8b6b7740cc521bcf44e1106029cf899c19b6a8e4c99d5190611d7990849061323c565b60405180910390a25050565b60085481565b611d93612a11565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614611de7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190611e3c9030906004016131c4565b60206040518083038186803b158015611e5457600080fd5b505afa158015611e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8c919061308c565b1015611ec4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613671565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061373a565b8015611f5857611f58611686565b8115611f7357600854611f6b90856129d2565b600855611f84565b600954611f8090856129d2565b6009555b60058054600180820183557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87169081179091556040805160a081018252600080825243602083019081529282018a8152606083018281528915156080850190815260048054808a018255945293517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9389029384015593517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c830155517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d82015591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19e830155517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19f90910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055915461212591612990565b7f18caa0724a26384928efe604ae6ddc99c242548876259770fc88fcb7e719d8fa8685604051612156929190613a41565b60405180910390a350505050565b64e8d4a5100081565b612175612a11565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146121c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b6000841180156121d95750600083115b80156121e55750600082115b61221b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906134fd565b64e8d4a5100061222f8361084e87876129d2565b14612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613888565b801561227457612274611686565b61227e6000611972565b600a849055600b839055600c8290556040517fae2d2e7d1ae84564fc72227253ce0f36a007209f7fd5ec414dea80e5af2fb5b0906122c190869086908690613a5f565b60405180910390a150505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6002600154141561232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906138e5565b600260015561233b612f37565b61234483611366565b600084815260066020908152604080832033845290915290206080820151919250908061238057503360009081526007602052604090205460ff165b6123b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061355a565b60006123c23386610584565b8254909150156123d7576123d7338683612816565b83156125d3576000600586815481106123ec57fe5b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a082319061244b9030906004016131c4565b60206040518083038186803b15801561246357600080fd5b505afa158015612477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249b919061308c565b90506124da33308760058a815481106124b057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16929190612a15565b61259a81600588815481106124eb57fe5b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a082319061254a9030906004016131c4565b60206040518083038186803b15801561256257600080fd5b505afa158015612576573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6e919061308c565b83549095506125a990866129d2565b83556125cc6125c164e8d4a510006107fc88866128f3565b6060860151906129d2565b6060850152505b612607670de0b6b3a76400006107fc856000015161080264e8d4a510006107fc8789600001546128f390919063ffffffff16565b8260010181905550826004868154811061261d57fe5b6000918252602091829020835160059290920201908155908201516001820155604080830151600283015560608301516003830155608090920151600490910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905551859033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590611266908890613a38565b7f000000000000000000000000000000000000000000000000000000000000000081565b6126e8612a11565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461273c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b73ffffffffffffffffffffffffffffffffffffffff8116612789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906133af565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61281e612f68565b50600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845282528083208151606081018352815480825260018301549482019490945260029091015491810191909152919061288b9064e8d4a51000906107fc90866128f3565b905060006128c3670de0b6b3a76400006107fc600488815481106128ab57fe5b600091825260209091206005909102015485906128f3565b905060006128de84602001518361299090919063ffffffff16565b90506128ea8782612adc565b50505050505050565b600082612902575060006105d4565b8282028284828161290f57fe5b04146105ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906135dd565b600061298983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cc8565b9392505050565b600061298983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d19565b6000828201838110156105ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061340c565b3390565b611360846323b872dd60e01b858585604051602401612a36939291906131e5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612d5f565b612ad78363a9059cbb60e01b8484604051602401612a36929190613216565b505050565b8015611716576040517f70a08231000000000000000000000000000000000000000000000000000000008152819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612b569030906004016131c4565b60206040518083038186803b158015612b6e57600080fd5b505afa158015612b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba6919061308c565b1015612bb457612bb461129d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612c299030906004016131c4565b60206040518083038186803b158015612c4157600080fd5b505afa158015612c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c79919061308c565b905081811015612c87578091505b612ad773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168484612ab8565b60008183612d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9190613247565b506000838581612d0f57fe5b0495945050505050565b60008184841115612d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9190613247565b505050900390565b6060612dc1826040518060400160405280602081526020017f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612e159092919063ffffffff16565b805190915015612ad75780806020019051810190612ddf9190613058565b612ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613352565b6060612e248484600085612e2c565b949350505050565b6060612e3785612f31565b612e6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613851565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051612e9791906131a8565b60006040518083038185875af1925050503d8060008114612ed4576040519150601f19603f3d011682016040523d82523d6000602084013e612ed9565b606091505b50915091508115612eed579150612e249050565b805115612efd5780518082602001fd5b836040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9190613247565b3b151590565b6040518060a00160405280600081526020016000815260200160008152602001600081526020016000151581525090565b60405180606001604052806000815260200160008152602001600081525090565b600060208284031215612f9a578081fd5b81356105ce81613ac6565b60008060408385031215612fb7578081fd5b8235612fc281613ac6565b91506020830135612fd281613aeb565b809150509250929050565b60008060408385031215612fef578182fd5b8235612ffa81613ac6565b946020939093013593505050565b60008060006060848603121561301c578081fd5b833561302781613ac6565b95602085013595506040909401359392505050565b60006020828403121561304d578081fd5b81356105ce81613aeb565b600060208284031215613069578081fd5b81516105ce81613aeb565b600060208284031215613085578081fd5b5035919050565b60006020828403121561309d578081fd5b5051919050565b600080604083850312156130b6578182fd5b823591506020830135612fd281613ac6565b600080600080608085870312156130dd578081fd5b8435935060208501356130ef81613ac6565b925060408501356130ff81613aeb565b9150606085013561310f81613aeb565b939692955090935050565b6000806040838503121561312c578182fd5b50508035926020909101359150565b60008060006060848603121561314f578283fd5b8335925060208401359150604084013561316881613aeb565b809150509250925092565b60008060008060808587031215613188578384fd5b843593506020850135925060408501359150606085013561310f81613aeb565b600082516131ba818460208701613a9a565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b6000602082528251806020840152613266816040850160208701613a9a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526023908201527f4d61737465724368656656323a2042616c616e6365206d75737420657863656560408201527f6420300000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d61737465724368656656323a20496e76616c6964206e657720626f6f73742060408201527f6d756c7469706c69657200000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f5361666542455032303a204245503230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602c908201527f4d61737465724368656656323a2054686520757365722061646472657373206d60408201527f7573742062652076616c69640000000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f4d61737465724368656656323a204275726e2061646d696e206164647265737360408201527f206d7573742062652076616c6964000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f4d61737465724368656656323a2043616b652072617465206d7573742062652060408201527f67726561746572207468616e2030000000000000000000000000000000000000606082015260800190565b60208082526042908201527f4d61737465724368656656323a205468652061646472657373206973206e6f7460408201527f20617661696c61626c6520746f206465706f73697420696e207468697320706f60608201527f6f6c000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526016908201527f77697468647261773a20496e73756666696369656e7400000000000000000000604082015260600190565b60208082526011908201527f4e6f6e6520424550323020746f6b656e73000000000000000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520626f6f737460408201527f20636f6e74726163740000000000000000000000000000000000000000000000606082015260800190565b60208082526027908201527f43414b4520746f6b656e2063616e277420626520616464656420746f2066617260408201527f6d20706f6f6c7300000000000000000000000000000000000000000000000000606082015260800190565b60208082526030908201527f4d61737465724368656656323a204f6e6c7920726567756c6172206661726d2060408201527f636f756c6420626520626f6f7374656400000000000000000000000000000000606082015260800190565b60208082526032908201527f4d61737465724368656656323a20546865207768697465206c6973742061646460408201527f72657373206d7573742062652076616c69640000000000000000000000000000606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526025908201527f4d61737465724368656656323a20546f74616c2072617465206d75737420626560408201527f2031653132000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526041908201527f4d61737465724368656656323a204275726e2061646d696e206164647265737360408201527f206973207468652073616d6520776974682063757272656e742061646472657360608201527f7300000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526036908201527f4d61737465724368656656323a204e657720626f6f737420636f6e747261637460408201527f2061646472657373206d7573742062652076616c696400000000000000000000606082015260800190565b600060a0820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015292915050565b90815260200190565b9182521515602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b9485526020850193909352604084019190915260608301521515608082015260a00190565b60005b83811015613ab5578181015183820152602001613a9d565b838111156113605750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114613ae857600080fd5b50565b8015158114613ae857600080fdfea2646970667358221220ac0ba07a247c72013b8d13fedbac6432b0e00545e01f707d0146ff30f9603d2564736f6c634300060c003300000000000000000000000073feaa1ee314f8c655e354234017be2193c9e24e0000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce82000000000000000000000000000000000000000000000000000000000000020e0000000000000000000000001a5238878b2c138b9dcce2ea6be9cf7e9f12cf6a
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102e95760003560e01c80637398b7ea11610191578063ac1d0609116100e3578063dfcedeee11610097578063e39e132311610071578063e39e13231461052b578063edd8b17014610569578063f2fde38b14610571576102e9565b8063dfcedeee14610546578063e0f91f6c1461054e578063e2bbb15814610556576102e9565b8063c507aeaa116100c8578063c507aeaa14610518578063cc6db2da1461052b578063dc6363df14610533576102e9565b8063ac1d0609146104fd578063c40d337b14610510576102e9565b80638da5cb5b116101455780639dcc1b5f1161011f5780639dcc1b5f146104da5780639dd2fcc3146104e2578063aa47bc8e146104f5576102e9565b80638da5cb5b146104a857806393f1a40b146104b057806399d7e84a146104d2576102e9565b806378db4c341161017657806378db4c341461048557806378ed5d1f1461048d57806381bdf98c146104a0576102e9565b80637398b7ea1461046a578063777a97f814610472576102e9565b806339aae5ba1161024a5780635312ea8e116101fe57806364482f79116101d857806364482f791461044757806369b021281461045a578063715018a614610462576102e9565b80635312ea8e1461042457806361621aaa14610437578063630b5ba11461043f576102e9565b80634ca6ef281161022f5780634ca6ef28146103e75780634f70b15a146103fc57806351eb05a614610404576102e9565b806339aae5ba146103cc578063441a3e70146103d4576102e9565b80631526fe27116102a15780631ce06d57116102865780631ce06d57146103915780631e9b828b14610399578063372c12b1146103ac576102e9565b80631526fe271461035a57806319ab453c1461037e576102e9565b8063081e3eda116102d2578063081e3eda1461032c5780630bb844bc146103345780631175a1dd14610347576102e9565b8063033186e8146102ee578063041a84c914610317575b600080fd5b6103016102fc366004612fdd565b610584565b60405161030e9190613a38565b60405180910390f35b61032a610325366004613008565b6105da565b005b610301610952565b61032a610342366004612f89565b610958565b6103016103553660046130a4565b610acd565b61036d610368366004613074565b610c80565b60405161030e959493929190613a75565b61032a61038c366004612f89565b610cc1565b610301610fdb565b6103016103a736600461303c565b610fe1565b6103bf6103ba366004612f89565b611046565b60405161030e919061323c565b61030161105b565b61032a6103e236600461311a565b611068565b6103ef611279565b60405161030e91906131c4565b61032a61129d565b610417610412366004613074565b611366565b60405161030e91906139fc565b61032a610432366004613074565b611534565b610301611662565b61032a611686565b61032a61045536600461313b565b61171a565b610301611891565b61032a61189b565b610301611966565b61032a61048036600461303c565b611972565b610301611a38565b6103ef61049b366004613074565b611a3e565b6103ef611a72565b6103ef611a8e565b6104c36104be3660046130a4565b611aaa565b60405161030e93929190613a5f565b610301611ad6565b610301611adc565b61032a6104f0366004612f89565b611b0a565b610301611c4b565b61032a61050b366004612fa5565b611c51565b610301611d85565b61032a6105263660046130c8565b611d8b565b610301612164565b61032a610541366004613173565b61216d565b6103ef6122cf565b6103016122eb565b61032a61056436600461311a565b6122f1565b6103ef6126bc565b61032a61057f366004612f89565b6126e0565b600081815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281206002015464e8d4a5100081116105ce5764e8d4a510006105d0565b805b9150505b92915050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136dd565b60405180910390fd5b60026001541415610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906138e5565b600260015573ffffffffffffffffffffffffffffffffffffffff83166106c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613443565b600482815481106106d057fe5b600091825260209091206004600590920201015460ff1661071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613797565b64e8d4a51000811015801561073857506501d1a94a20008111155b61076e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906132f5565b610776612f37565b61077f83611366565b600084815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845290915281209192506107bb8686610584565b90506107c8868683612816565b610808670de0b6b3a76400006107fc856000015161080264e8d4a510006107fc8a89600001546128f390919063ffffffff16565b90612947565b906128f3565b60018301558154610854906108289064e8d4a51000906107fc90886128f3565b835461084e906108439064e8d4a51000906107fc90876128f3565b606087015190612990565b906129d2565b6060840152600480548491908790811061086a57fe5b6000918252602080832084516005939093020191825583810151600183015560408085015160028085019190915560608601516003850155608090950151600490930180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016931515939093179092558883526006815281832073ffffffffffffffffffffffffffffffffffffffff8b1680855291529181902090920186905590517f01abd62439b64f6c5dab6f94d56099495bd0c094f9c21f98f4d3562a21edb4ba9061093e90889085908990613a5f565b60405180910390a250506001805550505050565b60045490565b610960612a11565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146109b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b73ffffffffffffffffffffffffffffffffffffffff8116610a01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906134a0565b60025473ffffffffffffffffffffffffffffffffffffffff82811691161415610a56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061391c565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907fd146fe330fdddf682413850a35b28edfccd4c4b53cfee802fd24950de5be1dbe90600090a35050565b6000610ad7612f37565b60048481548110610ae457fe5b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301939093526002830154908201526003820154606082015260049091015460ff16151560808201529050610b3e612f68565b50600084815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845282529182902082516060808201855282548252600183015482850152600290920154938101939093528351908401519184015190919043118015610bac57508015155b15610c2c576000610bca85602001514361299090919063ffffffff16565b90506000610c058660800151610be257600954610be6565b6008545b6107fc8860400151610802610bfe8b60800151610fe1565b87906128f3565b9050610c27610c20846107fc84670de0b6b3a76400006128f3565b85906129d2565b935050505b6000610c4c64e8d4a510006107fc610c448a8c610584565b8751906128f3565b6020850151909150610c7490610c6e670de0b6b3a76400006107fc85886128f3565b90612990565b98975050505050505050565b60048181548110610c8d57fe5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294509092909160ff1685565b610cc9612a11565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614610d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190610d729033906004016131c4565b60206040518083038186803b158015610d8a57600080fd5b505afa158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc2919061308c565b905080610dfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613298565b610e1d73ffffffffffffffffffffffffffffffffffffffff8316333084612a15565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063095ea7b390610e91907f00000000000000000000000073feaa1ee314f8c655e354234017be2193c9e24e908590600401613216565b602060405180830381600087803b158015610eab57600080fd5b505af1158015610ebf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee39190613058565b506040517fe2bbb15800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000073feaa1ee314f8c655e354234017be2193c9e24e169063e2bbb15890610f78907f000000000000000000000000000000000000000000000000000000000000020e908590600401613a51565b600060405180830381600087803b158015610f9257600080fd5b505af1158015610fa6573d6000803e3d6000fd5b505043600d5550506040517f57a86f7d14ccde89e22870afe839e3011216827daa9b24e18629f0a1e9d6cc1490600090a15050565b600c5481565b600081156110175761101064e8d4a510006107fc600b5468022b1c8c1227a000006128f390919063ffffffff16565b9050611041565b61103e64e8d4a510006107fc600c5468022b1c8c1227a000006128f390919063ffffffff16565b90505b919050565b60076020526000908152604090205460ff1681565b68022b1c8c1227a0000081565b600260015414156110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906138e5565b60026001556110b2612f37565b6110bb83611366565b60008481526006602090815260408083203384529091529020805491925090831115611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061363a565b600061111f3386610584565b905061112c338683612816565b831561118157815461113e9085612990565b826000018190555061118133856005888154811061115857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169190612ab8565b6111b5670de0b6b3a76400006107fc856000015161080264e8d4a510006107fc8789600001546128f390919063ffffffff16565b60018301556111fd6111d064e8d4a510006107fc87856128f3565b600487815481106111dd57fe5b90600052602060002090600502016003015461299090919063ffffffff16565b6004868154811061120a57fe5b906000526020600020906005020160030181905550843373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568866040516112669190613a38565b60405180910390a3505060018055505050565b7f0000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce8281565b6040517fe2bbb15800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000073feaa1ee314f8c655e354234017be2193c9e24e169063e2bbb15890611332907f000000000000000000000000000000000000000000000000000000000000020e90600090600401613a51565b600060405180830381600087803b15801561134c57600080fd5b505af1158015611360573d6000803e3d6000fd5b50505050565b61136e612f37565b6004828154811061137b57fe5b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301849052600281015491830191909152600381015460608301526004015460ff1615156080820152915043111561104157606081015160808201516000906113ed576009546113f1565b6008545b90506000821180156114035750600081115b1561146957600061142184602001514361299090919063ffffffff16565b90506000611441836107fc8760400151610802610bfe8a60800151610fe1565b905061146461145c856107fc84670de0b6b3a76400006128f3565b8651906129d2565b855250505b436020840152600480548491908690811061148057fe5b6000918252602091829020835160059290920201908155828201516001820155604080840151600283015560608401516003830155608090930151600490910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558401518451915186927f3be3541fc42237d611b30329040bfa4569541d156560acdbbae57640d20b8f46926115259290918791613a5f565b60405180910390a25050919050565b60026001541415611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906138e5565b600260018190555060006004828154811061158857fe5b6000918252602080832085845260068252604080852033808752935284208054858255600182018690556005909402909101945092906115de9064e8d4a51000906107fc906115d79089610584565b85906128f3565b9050808460030154116115f2576000611601565b60038401546116019082612990565b846003018190555061161b33836005888154811061115857fe5b843373ffffffffffffffffffffffffffffffffffffffff167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595846040516112669190613a38565b7f000000000000000000000000000000000000000000000000000000000000020e81565b60045460005b818110156117165761169c612f37565b600482815481106116a957fe5b60009182526020918290206040805160a08101825260059093029091018054835260018101549383019390935260028301549082018190526003830154606083015260049092015460ff161515608082015291501561170d5761170b82611366565b505b5060010161168c565b5050565b611722612a11565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b61177f83611366565b50801561178e5761178e611686565b6004838154811061179b57fe5b600091825260209091206004600590920201015460ff16156117f6576117ee8261084e600486815481106117cb57fe5b90600052602060002090600502016002015460085461299090919063ffffffff16565b600855611831565b61182d8261084e6004868154811061180a57fe5b90600052602060002090600502016002015460095461299090919063ffffffff16565b6009555b816004848154811061183f57fe5b906000526020600020906005020160020181905550827fc0cfd54d2de2b55f1e6e108d3ec53ff0a1abe6055401d32c61e9433b747ef9f8836040516118849190613a38565b60405180910390a2505050565b6501d1a94a200081565b6118a3612a11565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146118f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b670de0b6b3a764000081565b61197a612a11565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146119ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b80156119dc576119dc611686565b60006119f3600d544361299090919063ffffffff16565b90506000611a09611a02611adc565b83906128f3565b600254909150611a2f9073ffffffffffffffffffffffffffffffffffffffff1682612adc565b505043600d5550565b600d5481565b60058181548110611a4b57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b600660209081526000928352604080842090915290825290208054600182015460029092015490919083565b60095481565b6000611b0564e8d4a510006107fc600a5468022b1c8c1227a000006128f390919063ffffffff16565b905090565b611b12612a11565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614611b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b73ffffffffffffffffffffffffffffffffffffffff811615801590611ba6575060035473ffffffffffffffffffffffffffffffffffffffff828116911614155b611bdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061399f565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f4c0c07d0b548b824a1b998eb4d11fccf1cfbc1e47edcdb309970ba88315eb30390600090a250565b600b5481565b611c59612a11565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614611cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b73ffffffffffffffffffffffffffffffffffffffff8216611cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906137f4565b73ffffffffffffffffffffffffffffffffffffffff82166000818152600760205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016841515179055517fc551bbb22d0406dbfb8b6b7740cc521bcf44e1106029cf899c19b6a8e4c99d5190611d7990849061323c565b60405180910390a25050565b60085481565b611d93612a11565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614611de7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190611e3c9030906004016131c4565b60206040518083038186803b158015611e5457600080fd5b505afa158015611e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8c919061308c565b1015611ec4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613671565b7f0000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce8273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061373a565b8015611f5857611f58611686565b8115611f7357600854611f6b90856129d2565b600855611f84565b600954611f8090856129d2565b6009555b60058054600180820183557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87169081179091556040805160a081018252600080825243602083019081529282018a8152606083018281528915156080850190815260048054808a018255945293517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9389029384015593517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c830155517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d82015591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19e830155517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19f90910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055915461212591612990565b7f18caa0724a26384928efe604ae6ddc99c242548876259770fc88fcb7e719d8fa8685604051612156929190613a41565b60405180910390a350505050565b64e8d4a5100081565b612175612a11565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146121c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b6000841180156121d95750600083115b80156121e55750600082115b61221b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906134fd565b64e8d4a5100061222f8361084e87876129d2565b14612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613888565b801561227457612274611686565b61227e6000611972565b600a849055600b839055600c8290556040517fae2d2e7d1ae84564fc72227253ce0f36a007209f7fd5ec414dea80e5af2fb5b0906122c190869086908690613a5f565b60405180910390a150505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6002600154141561232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906138e5565b600260015561233b612f37565b61234483611366565b600084815260066020908152604080832033845290915290206080820151919250908061238057503360009081526007602052604090205460ff165b6123b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061355a565b60006123c23386610584565b8254909150156123d7576123d7338683612816565b83156125d3576000600586815481106123ec57fe5b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a082319061244b9030906004016131c4565b60206040518083038186803b15801561246357600080fd5b505afa158015612477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249b919061308c565b90506124da33308760058a815481106124b057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16929190612a15565b61259a81600588815481106124eb57fe5b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a082319061254a9030906004016131c4565b60206040518083038186803b15801561256257600080fd5b505afa158015612576573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6e919061308c565b83549095506125a990866129d2565b83556125cc6125c164e8d4a510006107fc88866128f3565b6060860151906129d2565b6060850152505b612607670de0b6b3a76400006107fc856000015161080264e8d4a510006107fc8789600001546128f390919063ffffffff16565b8260010181905550826004868154811061261d57fe5b6000918252602091829020835160059290920201908155908201516001820155604080830151600283015560608301516003830155608090920151600490910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905551859033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590611266908890613a38565b7f00000000000000000000000073feaa1ee314f8c655e354234017be2193c9e24e81565b6126e8612a11565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461273c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906136a8565b73ffffffffffffffffffffffffffffffffffffffff8116612789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906133af565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61281e612f68565b50600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845282528083208151606081018352815480825260018301549482019490945260029091015491810191909152919061288b9064e8d4a51000906107fc90866128f3565b905060006128c3670de0b6b3a76400006107fc600488815481106128ab57fe5b600091825260209091206005909102015485906128f3565b905060006128de84602001518361299090919063ffffffff16565b90506128ea8782612adc565b50505050505050565b600082612902575060006105d4565b8282028284828161290f57fe5b04146105ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b906135dd565b600061298983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cc8565b9392505050565b600061298983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d19565b6000828201838110156105ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061340c565b3390565b611360846323b872dd60e01b858585604051602401612a36939291906131e5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612d5f565b612ad78363a9059cbb60e01b8484604051602401612a36929190613216565b505050565b8015611716576040517f70a08231000000000000000000000000000000000000000000000000000000008152819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce8216906370a0823190612b569030906004016131c4565b60206040518083038186803b158015612b6e57600080fd5b505afa158015612b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba6919061308c565b1015612bb457612bb461129d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce8216906370a0823190612c299030906004016131c4565b60206040518083038186803b158015612c4157600080fd5b505afa158015612c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c79919061308c565b905081811015612c87578091505b612ad773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce82168484612ab8565b60008183612d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9190613247565b506000838581612d0f57fe5b0495945050505050565b60008184841115612d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9190613247565b505050900390565b6060612dc1826040518060400160405280602081526020017f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612e159092919063ffffffff16565b805190915015612ad75780806020019051810190612ddf9190613058565b612ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613352565b6060612e248484600085612e2c565b949350505050565b6060612e3785612f31565b612e6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90613851565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051612e9791906131a8565b60006040518083038185875af1925050503d8060008114612ed4576040519150601f19603f3d011682016040523d82523d6000602084013e612ed9565b606091505b50915091508115612eed579150612e249050565b805115612efd5780518082602001fd5b836040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9190613247565b3b151590565b6040518060a00160405280600081526020016000815260200160008152602001600081526020016000151581525090565b60405180606001604052806000815260200160008152602001600081525090565b600060208284031215612f9a578081fd5b81356105ce81613ac6565b60008060408385031215612fb7578081fd5b8235612fc281613ac6565b91506020830135612fd281613aeb565b809150509250929050565b60008060408385031215612fef578182fd5b8235612ffa81613ac6565b946020939093013593505050565b60008060006060848603121561301c578081fd5b833561302781613ac6565b95602085013595506040909401359392505050565b60006020828403121561304d578081fd5b81356105ce81613aeb565b600060208284031215613069578081fd5b81516105ce81613aeb565b600060208284031215613085578081fd5b5035919050565b60006020828403121561309d578081fd5b5051919050565b600080604083850312156130b6578182fd5b823591506020830135612fd281613ac6565b600080600080608085870312156130dd578081fd5b8435935060208501356130ef81613ac6565b925060408501356130ff81613aeb565b9150606085013561310f81613aeb565b939692955090935050565b6000806040838503121561312c578182fd5b50508035926020909101359150565b60008060006060848603121561314f578283fd5b8335925060208401359150604084013561316881613aeb565b809150509250925092565b60008060008060808587031215613188578384fd5b843593506020850135925060408501359150606085013561310f81613aeb565b600082516131ba818460208701613a9a565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b6000602082528251806020840152613266816040850160208701613a9a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526023908201527f4d61737465724368656656323a2042616c616e6365206d75737420657863656560408201527f6420300000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d61737465724368656656323a20496e76616c6964206e657720626f6f73742060408201527f6d756c7469706c69657200000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f5361666542455032303a204245503230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602c908201527f4d61737465724368656656323a2054686520757365722061646472657373206d60408201527f7573742062652076616c69640000000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f4d61737465724368656656323a204275726e2061646d696e206164647265737360408201527f206d7573742062652076616c6964000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f4d61737465724368656656323a2043616b652072617465206d7573742062652060408201527f67726561746572207468616e2030000000000000000000000000000000000000606082015260800190565b60208082526042908201527f4d61737465724368656656323a205468652061646472657373206973206e6f7460408201527f20617661696c61626c6520746f206465706f73697420696e207468697320706f60608201527f6f6c000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526016908201527f77697468647261773a20496e73756666696369656e7400000000000000000000604082015260600190565b60208082526011908201527f4e6f6e6520424550323020746f6b656e73000000000000000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520626f6f737460408201527f20636f6e74726163740000000000000000000000000000000000000000000000606082015260800190565b60208082526027908201527f43414b4520746f6b656e2063616e277420626520616464656420746f2066617260408201527f6d20706f6f6c7300000000000000000000000000000000000000000000000000606082015260800190565b60208082526030908201527f4d61737465724368656656323a204f6e6c7920726567756c6172206661726d2060408201527f636f756c6420626520626f6f7374656400000000000000000000000000000000606082015260800190565b60208082526032908201527f4d61737465724368656656323a20546865207768697465206c6973742061646460408201527f72657373206d7573742062652076616c69640000000000000000000000000000606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526025908201527f4d61737465724368656656323a20546f74616c2072617465206d75737420626560408201527f2031653132000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526041908201527f4d61737465724368656656323a204275726e2061646d696e206164647265737360408201527f206973207468652073616d6520776974682063757272656e742061646472657360608201527f7300000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526036908201527f4d61737465724368656656323a204e657720626f6f737420636f6e747261637460408201527f2061646472657373206d7573742062652076616c696400000000000000000000606082015260800190565b600060a0820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015292915050565b90815260200190565b9182521515602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b9485526020850193909352604084019190915260608301521515608082015260a00190565b60005b83811015613ab5578181015183820152602001613a9d565b838111156113605750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114613ae857600080fd5b50565b8015158114613ae857600080fdfea2646970667358221220ac0ba07a247c72013b8d13fedbac6432b0e00545e01f707d0146ff30f9603d2564736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000073feaa1ee314f8c655e354234017be2193c9e24e0000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce82000000000000000000000000000000000000000000000000000000000000020e0000000000000000000000001a5238878b2c138b9dcce2ea6be9cf7e9f12cf6a
-----Decoded View---------------
Arg [0] : _MASTER_CHEF (address): 0x73feaa1eE314F8c655E354234017bE2193C9E24E
Arg [1] : _CAKE (address): 0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82
Arg [2] : _MASTER_PID (uint256): 526
Arg [3] : _burnAdmin (address): 0x1a5238878B2c138B9DCCe2ea6BE9CF7e9F12Cf6a
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000073feaa1ee314f8c655e354234017be2193c9e24e
Arg [1] : 0000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce82
Arg [2] : 000000000000000000000000000000000000000000000000000000000000020e
Arg [3] : 0000000000000000000000001a5238878b2c138b9dcce2ea6be9cf7e9f12cf6a
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.