Contract 0x5bcf1f407c0fc922074283b4e11daaf539f6644d

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x6f9fe93d49b43b395739f3c33ec07cc476dfe5eba8d395a1047e946a67e841fc94683452021-07-25 14:56:1627 mins ago0x7e3e4a9d8625f9b23fa02a0707626c41aaf0f93f IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00072371
0x862ac1c3f70d635e131197d05200bc6b6f276e769c4da33b0e716a4fcbe52f2794675162021-07-25 14:10:431 hr 12 mins ago0x7963690adf37643a56ef85c02a2f0ac302e314c8 IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00249269
0x09151838ec7a8a547d5b3a9cb092b6e6494457474f24a8acb203c51a598afd9594666532021-07-25 13:26:521 hr 56 mins ago0x03cd4191fe7db66c96a7453a10631983e443f87a IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00066971
0x4bba6f7297851cc5a6abaef901f39f4bb067e04f0d085d005991e720cfeae14394666222021-07-25 13:25:191 hr 57 mins ago0x03cd4191fe7db66c96a7453a10631983e443f87a IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00249275
0xb5589969fc94f2164d3008eb80bf94d9f02a0344450893339c40d2fc2a70f3d894659152021-07-25 12:49:472 hrs 33 mins ago0xf52a29137b63eb6f7a839d952c475bec0993c7d5 IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00072371
0x2cd0d256e5d3791807a47a4e09bef88b5f94d86aec67349a73cfbe06f4bc679f94649542021-07-25 12:01:273 hrs 21 mins ago0x4a959c7bb6bc9983d9ebd42ecf7dabdeda6d34fe IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00072371
0x2d15d2b906c5cceeb7abb61a3ed5994502113ff0a123aa8e81de69faeaa1459f94635702021-07-25 10:52:104 hrs 31 mins ago0x00ecb72a184e736b9e4e240e360dba4ae5ad6cf7 IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00072371
0x372180853a4509182a8eafa22dd078140344224b7223fe2bcb18d9227e8e864694634742021-07-25 10:47:224 hrs 35 mins ago0x79be01e629bcbc5c30f89c61178f22677e6a22ff IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00235424
0x974c78c7fed6e703db9069eb609c2841691829637a6134dbb9ac78c47ffae1e194634662021-07-25 10:46:584 hrs 36 mins ago0x79be01e629bcbc5c30f89c61178f22677e6a22ff IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.000126975
0xac61a68a0402e45e0dc0a050dc1f0b30849beb77a84a238eab6f6481e77dac7094634612021-07-25 10:46:434 hrs 36 mins ago0x79be01e629bcbc5c30f89c61178f22677e6a22ff IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00072371
0xaaced29863ffa34acb8f9032a45ea14eb9af948e8be7f611cb0e29f15bcca35694633532021-07-25 10:41:184 hrs 42 mins ago0x3ede30b148501afce5ea45b2f8decc64c4ba900d IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.000126975
0x2fb4a16950911d818b991205c95040e760cc84df795e1a69157ba8ecb9b9720294633512021-07-25 10:41:124 hrs 42 mins ago0x3ede30b148501afce5ea45b2f8decc64c4ba900d IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00066971
0xf3018acfabc67b4dc206c924da6b98007311724d23bae1ce60bfdfedf885848894633322021-07-25 10:40:154 hrs 43 mins ago0x3ede30b148501afce5ea45b2f8decc64c4ba900d IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00249257
0x899c1f17c5171f56f939666f25a5ef63d820b69a5573d485583815f620e1944094633282021-07-25 10:40:034 hrs 43 mins ago0x3ede30b148501afce5ea45b2f8decc64c4ba900d IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00249263
0xa0136da3bf5e06178754da3be4f242de02fa845895c9b96c2671e5236b7a758d94629902021-07-25 10:23:095 hrs ago0x79e448f746ea50f84d1ba93c3515a895f762f5f4 IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00225824
0x0ce6410091ceb5b95f9528fa116687ce14474d104078cd6aa0608619741dc8a894629742021-07-25 10:22:215 hrs ago0x79e448f746ea50f84d1ba93c3515a895f762f5f4 IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00072371
0x7eab5be66e68457a3fea0cf56ce50242bd3a63e4589beb4fec3989ad41f0a18694628382021-07-25 10:15:335 hrs 7 mins ago0x45a7b34f597450abcf3320904bfa5763b98734f1 IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00249263
0x5d72a48980cbff2d45767aedbc02b860f91ea404b18a22a7346b096f0dccd7f894623982021-07-25 9:52:515 hrs 30 mins ago0x45a7b34f597450abcf3320904bfa5763b98734f1 IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00264269
0x60aa6cea69205b893c21e6988cc2e2d69b38cb207535fb8e2486ac2bc77114a494621612021-07-25 9:41:005 hrs 42 mins ago0x45a7b34f597450abcf3320904bfa5763b98734f1 IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.0023543
0x95b41429247f56efe8286e8148620516962e5e11cd76fded99e4066676bfd3e394621272021-07-25 9:39:185 hrs 44 mins ago0x45a7b34f597450abcf3320904bfa5763b98734f1 IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00066971
0x98700758f9cadc64404986b53d97d07b4dbee7380aec2bb9f39e1ff5bb96522e94613162021-07-25 8:58:346 hrs 24 mins ago0x14f1986737170868ed3d26f282976731be27051e IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00264275
0xa29fdbb02ff609b301cd6340bf07b0c805ec0bf96bf7f48e06ca780654bb4f8794613002021-07-25 8:57:426 hrs 25 mins ago0x14f1986737170868ed3d26f282976731be27051e IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.0023543
0x330cf7a6ec7eea766f006887419672c184f8b9c945a58a9a7c68a880217a82f894612952021-07-25 8:57:276 hrs 25 mins ago0x14f1986737170868ed3d26f282976731be27051e IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.000126975
0xfafa64228ccd37005e87e05e50bd0d149641882f5fafb9370297589e1d755ea694612712021-07-25 8:56:156 hrs 27 mins ago0x14f1986737170868ed3d26f282976731be27051e IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.000126975
0x555ba5f5a30f83892a702ae42e85b8053a7dfd728e778472d5522947e88d7ebb94612682021-07-25 8:56:066 hrs 27 mins ago0x14f1986737170868ed3d26f282976731be27051e IN  0x5bcf1f407c0fc922074283b4e11daaf539f6644d0 BNB0.00072371
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FEGstake

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-08
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.7.5;



abstract contract ReentrancyGuard {

    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {

        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;

        _;

        _status = _NOT_ENTERED;
    }
}

// ----------------------------------------------------------------------------
// SafeMath library
// ----------------------------------------------------------------------------


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;
    }
    
    function ceil(uint a, uint m) internal pure returns (uint r) {
        return (a + m - 1) / m * m;
    }
}

// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
    address payable public owner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    constructor() {
        owner = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address payable _newOwner) public onlyOwner {
        require(_newOwner != address(0), "ERC20: sending to the zero address");
        owner = _newOwner;
        emit OwnershipTransferred(msg.sender, _newOwner);
    }
}

// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// ----------------------------------------------------------------------------
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address tokenOwner) external view returns (uint256 balance);
    function allowance(address tokenOwner, address spender) external view returns (uint256 remaining);
    function transfer(address to, uint256 tokens) external returns (bool success);
    function approve(address spender, uint256 tokens) external returns (bool success);
    function transferFrom(address from, address to, uint256 tokens) external returns (bool success);
    function burnTokens(uint256 _amount) external;
    
    function calculateFeesBeforeSend(
        address sender,
        address recipient,
        uint256 amount
    ) external view returns (uint256, uint256);
    
    
    event Transfer(address indexed from, address indexed to, uint256 tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint256 tokens);
}

interface regreward {
    function distributeAll() external;
}

// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and assisted
// token transfers
// ----------------------------------------------------------------------------

library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

contract WhitelistAdminRole is Owned  {
    using Roles for Roles.Role;

    event WhitelistAdminAdded(address indexed account);
    event WhitelistAdminRemoved(address indexed account);

    Roles.Role private _whitelistAdmins;

   constructor () {
        _addWhitelistAdmin(msg.sender);
    }
    
    modifier onlyWhitelistAdmin() {
        require(isWhitelistAdmin(msg.sender), "WhitelistAdminRole: caller does not have the WhitelistAdmin role");
        _;
    }

    function isWhitelistAdmin(address account) public view returns (bool) {
        return _whitelistAdmins.has(account);
    }
    function addWhitelistAdmin(address account) public onlyWhitelistAdmin {
        _addWhitelistAdmin(account);
    }

    function renounceWhitelistAdmin() public {
        _removeWhitelistAdmin(msg.sender);
    }

    function _addWhitelistAdmin(address account) internal {
        _whitelistAdmins.add(account);
        emit WhitelistAdminAdded(account);
    } 

    function _removeWhitelistAdmin(address account) internal {
        _whitelistAdmins.remove(account);
        emit WhitelistAdminRemoved(account);
    }
}
contract FEGstake is Owned, ReentrancyGuard, WhitelistAdminRole {
    using SafeMath for uint256;
    
    address public FEG   = 0xacFC95585D80Ab62f67A14C566C1b7a49Fe91167;
    address public fBNB   = 0x87b1AccE6a1958E522233A737313C086551a5c76;
    address public regrewardContract;
    
    uint256 public totalStakes = 0;
    bool public perform = true; //if true then distribution of rewards from the pool to stakers via the withdraw function is enabled
    uint256 public txFee = 20; // FEG has 2% TX fee, deduct this fee from total stake to not break math
    uint256 public txFee1 = 11; // fBNB has 1% TX fee, 0.1% was also added this fee from total stake to not break math
    
    uint256 public totalDividends = 0;
    uint256 private scaledRemainder = 0;
    uint256 private scaling = uint256(10) ** 12;
    uint public round = 1;
 
    mapping(address => uint) public farmTime; // period that your sake it locked to keep it for farming
    uint public lock = 0; // no locktime
    
    struct USER{
        uint256 stakedTokens;
        uint256 lastDividends;
        uint256 fromTotalDividend;
        uint round;
        uint256 remainder;
    }
    
    address[] internal stakeholders;
    mapping(address => USER) stakers;
    mapping (uint => uint256) public payouts;                   // keeps record of each payout
    
    event STAKED(address staker, uint256 tokens);
    event EARNED(address staker, uint256 tokens);
    event UNSTAKED(address staker, uint256 tokens);
    event PAYOUT(uint256 round, uint256 tokens, address sender);
    event CLAIMEDREWARD(address staker, uint256 reward);
    
    
    function isStakeholder(address _address)
       public
       view
       returns(bool)
   {
       for (uint256 s = 0; s < stakeholders.length; s += 1){
           if (_address == stakeholders[s]) return (true);
       }
       return (false);
   }
   
   function addStakeholder(address _stakeholder)
       public
   {
       (bool _isStakeholder) = isStakeholder(_stakeholder);
       if(!_isStakeholder) {
           stakeholders.push(_stakeholder);
           farmTime[msg.sender] =  block.timestamp;
       }
   }
   
   // ------------------------------------------------------------------------
    // Token holders can stake their tokens using this function
    // @param tokens number of tokens to stake
    // ------------------------------------------------------------------------
    function STAKE(uint256 tokens) external nonReentrant { 
        require(IERC20(FEG).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from user for locking");
        
            uint256 transferTxFee = (onePercent(tokens).mul(txFee)).div(10);
            uint256 tokensToStake = (tokens.sub(transferTxFee));
        
            
            // add pending rewards to remainder to be claimed by user later, if there is any existing stake
            uint256 owing = pendingReward(msg.sender);
            stakers[msg.sender].remainder += owing;
            
            stakers[msg.sender].stakedTokens = tokensToStake.add(stakers[msg.sender].stakedTokens);
            stakers[msg.sender].lastDividends = owing;
            stakers[msg.sender].fromTotalDividend= totalDividends;
            stakers[msg.sender].round =  round;
            
            
            totalStakes = totalStakes.add(tokensToStake);
            
            addStakeholder(msg.sender);
            
            emit STAKED(msg.sender, tokens);
        
    }
    
    // ------------------------------------------------------------------------
    // Owners can send the funds to be distributed to stakers using this function
    // @param tokens number of tokens to distribute
    // ------------------------------------------------------------------------
    function ADDFUNDS(uint256 tokens) external onlyWhitelistAdmin{ //can only be called by regrewardContract
        uint256 transferTxFee = (onePercent(tokens).mul(txFee1)).div(10);
        uint256 tokens_ = (tokens.sub(transferTxFee));
        
        _addPayout(tokens_);
    }
    
    function ADDFUNDS1(uint256 tokens) external{
        require(IERC20(fBNB).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from funder account");
        uint256 transferTxFee = (onePercent(tokens).mul(txFee1)).div(10);
        uint256 tokens_ = (tokens.sub(transferTxFee));
        
        _addPayout(tokens_);
    }
    
    
    
    
    function DisributeTxFunds() external { // Distribute tx fees collected for conversion into rewards
        
        uint256 transferToAmount = (IERC20(FEG).balanceOf(address(this))).sub(totalStakes);
        require(IERC20(FEG).transfer(address(owner), transferToAmount), "Error in un-staking tokens");
    }
    
    
    // ------------------------------------------------------------------------
    // Private function to register payouts
    // ------------------------------------------------------------------------
    function _addPayout(uint256 tokens_) private{
        // divide the funds among the currently staked tokens
        // scale the deposit and add the previous remainder
        uint256 available = (tokens_.mul(scaling)).add(scaledRemainder); 
        uint256 dividendPerToken = available.div(totalStakes);
        scaledRemainder = available.mod(totalStakes);
        
        totalDividends = totalDividends.add(dividendPerToken);
        payouts[round] = payouts[round - 1].add(dividendPerToken);
        
        emit PAYOUT(round, tokens_, msg.sender);
        round++;
    }
    
    // ------------------------------------------------------------------------
    // Stakers can claim their pending rewards using this function
    // ------------------------------------------------------------------------
    function CLAIMREWARD() public nonReentrant{
        
        if(totalDividends > stakers[msg.sender].fromTotalDividend){
            uint256 owing = pendingReward(msg.sender);
        
            owing = owing.add(stakers[msg.sender].remainder);
            stakers[msg.sender].remainder = 0;
        
            require(IERC20(fBNB).transfer(msg.sender,owing), "ERROR: error in sending reward from contract");
        
            emit CLAIMEDREWARD(msg.sender, owing);
        
            stakers[msg.sender].lastDividends = owing; // unscaled
            stakers[msg.sender].round = round; // update the round
            stakers[msg.sender].fromTotalDividend = totalDividends; // scaled
        }
    }
    
    // ------------------------------------------------------------------------
    // Get the pending rewards of the staker
    // @param _staker the address of the staker
    // ------------------------------------------------------------------------    
    function pendingReward(address staker) private returns (uint256) {
        require(staker != address(0), "ERC20: sending to the zero address");
        
        uint stakersRound = stakers[staker].round;
        uint256 amount =  ((totalDividends.sub(payouts[stakersRound - 1])).mul(stakers[staker].stakedTokens)).div(scaling);
        stakers[staker].remainder += ((totalDividends.sub(payouts[stakersRound - 1])).mul(stakers[staker].stakedTokens)) % scaling ;
        return amount;
    }
    
    function getPendingReward(address staker) public view returns(uint256 _pendingReward) {
        require(staker != address(0), "ERC20: sending to the zero address");
         uint stakersRound = stakers[staker].round;
         
        uint256 amount =  ((totalDividends.sub(payouts[stakersRound - 1])).mul(stakers[staker].stakedTokens)).div(scaling);
        amount += ((totalDividends.sub(payouts[stakersRound - 1])).mul(stakers[staker].stakedTokens)) % scaling ;
        return (amount.add(stakers[staker].remainder));
    }
    
    // ------------------------------------------------------------------------
    // Stakers can un stake the staked tokens using this function
    // @param tokens the number of tokens to withdraw
    // ------------------------------------------------------------------------
    function WITHDRAW(uint256 tokens) external nonReentrant{
        require(stakers[msg.sender].stakedTokens >= tokens && tokens > 0, "Invalid token amount to withdraw");
        
        totalStakes = totalStakes.sub(tokens);
        
        // add pending rewards to remainder to be claimed by user later, if there is any existing stake
        uint256 owing = pendingReward(msg.sender);
        stakers[msg.sender].remainder += owing;
                
        stakers[msg.sender].stakedTokens = stakers[msg.sender].stakedTokens.sub(tokens);
        stakers[msg.sender].lastDividends = owing;
        stakers[msg.sender].fromTotalDividend= totalDividends;
        stakers[msg.sender].round =  round;
        
        
        require(IERC20(FEG).transfer(msg.sender, tokens), "Error in un-staking tokens");
        emit UNSTAKED(msg.sender, tokens);
        
        if(perform==true) {
        regreward(regrewardContract).distributeAll();
        }
    }
    
    // ------------------------------------------------------------------------
    // Private function to calculate 1% percentage
    // ------------------------------------------------------------------------
    function onePercent(uint256 _tokens) private pure returns (uint256){
        uint256 roundValue = _tokens.ceil(100);
        uint onePercentofTokens = roundValue.mul(100).div(100 * 10**uint(2));
        return onePercentofTokens;
    }
    
    // ------------------------------------------------------------------------
    // Get the number of tokens staked by a staker
    // @param _staker the address of the staker
    // ------------------------------------------------------------------------
    function yourStakedFEG(address staker) public view returns(uint256 stakedFEG){
        require(staker != address(0), "ERC20: sending to the zero address");
        
        return stakers[staker].stakedTokens;
    }
    
    // ------------------------------------------------------------------------
    // Get the FEG balance of the token holder
    // @param user the address of the token holder
    // ------------------------------------------------------------------------
    function yourFEGBalance(address user) external view returns(uint256 FEGBalance){
        require(user != address(0), "ERC20: sending to the zero address");
        return IERC20(FEG).balanceOf(user);
    }
    
    function emergencySaveLostTokens(address _token) public onlyOwner {
        require(IERC20(_token).transfer(owner, IERC20(_token).balanceOf(address(this))), "Error in retrieving tokens");
        owner.transfer(address(this).balance);
    }
    
    function changeregrewardContract(address _regrewardContract) external onlyOwner{
        require(address(_regrewardContract) != address(0), "setting 0 to contract");
        regrewardContract = _regrewardContract;
    }
   
   function changePerform(bool _bool) external onlyOwner{
        perform = _bool;
    }
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"CLAIMEDREWARD","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"EARNED","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"round","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"PAYOUT","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"STAKED","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"UNSTAKED","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistAdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistAdminRemoved","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ADDFUNDS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ADDFUNDS1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"CLAIMREWARD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DisributeTxFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"FEG","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"STAKE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"WITHDRAW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"addStakeholder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addWhitelistAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"changePerform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_regrewardContract","type":"address"}],"name":"changeregrewardContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"emergencySaveLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fBNB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"farmTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getPendingReward","outputs":[{"internalType":"uint256","name":"_pendingReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isStakeholder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelistAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"payouts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"perform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"regrewardContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceWhitelistAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"round","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"txFee1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"yourFEGBalance","outputs":[{"internalType":"uint256","name":"FEGBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"yourStakedFEG","outputs":[{"internalType":"uint256","name":"stakedFEG","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600380546001600160a01b031990811673acfc95585d80ab62f67a14c566c1b7a49fe9116717909155600480549091167387b1acce6a1958e522233a737313c086551a5c76179055600060068190556007805460ff191660019081179091556014600855600b6009819055600a83905582905564e8d4a51000600c55600d55600f553480156200009357600080fd5b50600080546001600160a01b0319163390811790915560018055620000b890620000be565b620001fd565b620000d98160026200011060201b6200153b1790919060201c565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b6200011c828262000194565b156200016f576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620001dd5760405162461bcd60e51b815260040180806020018281038252602281526020018062001fb46022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b611da7806200020d6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80638da5cb5b1161010f578063c3f344a8116100a2578063e5c42fd111610071578063e5c42fd114610476578063ef037b901461049c578063f2fde38b146104c2578063f83d08ba146104e8576101e5565b8063c3f344a814610423578063ca84d59114610449578063cf82046114610466578063e3307c8b1461046e576101e5565b8063b53d6c24116100de578063b53d6c24146103d0578063b6ee290a146103ed578063bb5f747b146103f5578063bf9befb11461041b576101e5565b80638da5cb5b1461039c578063997664d7146103a4578063b0684318146103ac578063b147f40c146103b4576101e5565b80634baf782e116101875780634f49e655116101565780634f49e655146103325780637362d9c8146103515780637a75572c146103775780638ade8d8c14610394576101e5565b80634baf782e146102d65780634bc76334146102de5780634c5a628c146103045780634df9d6ba1461030c576101e5565b806320068139116101c3578063200681391461024e57806329652e86146102765780632c75bcda1461029357806348510671146102b0576101e5565b8063063731bb146101ea578063093a9fbc14610222578063146ca53114610246575b600080fd5b6102106004803603602081101561020057600080fd5b50356001600160a01b03166104f0565b60408051918252519081900360200190f35b61022a6105b8565b604080516001600160a01b039092168252519081900360200190f35b6102106105c7565b6102746004803603602081101561026457600080fd5b50356001600160a01b03166105cd565b005b6102106004803603602081101561028c57600080fd5b503561076f565b610274600480360360208110156102a957600080fd5b5035610781565b610210600480360360208110156102c657600080fd5b50356001600160a01b0316610a44565b610274610aa7565b610274600480360360208110156102f457600080fd5b50356001600160a01b0316610c87565b610274610d13565b6102106004803603602081101561032257600080fd5b50356001600160a01b0316610d1e565b6102746004803603602081101561034857600080fd5b50351515610e41565b6102746004803603602081101561036757600080fd5b50356001600160a01b0316610e6b565b6102746004803603602081101561038d57600080fd5b5035610ebb565b61022a610fb1565b61022a610fc0565b610210610fcf565b610274610fd5565b6103bc611137565b604080519115158252519081900360200190f35b610274600480360360208110156103e657600080fd5b5035611140565b610210611184565b6103bc6004803603602081101561040b57600080fd5b50356001600160a01b031661118a565b61021061119d565b6102106004803603602081101561043957600080fd5b50356001600160a01b03166111a3565b6102746004803603602081101561045f57600080fd5b50356111b5565b6102106113b4565b61022a6113ba565b6102746004803603602081101561048c57600080fd5b50356001600160a01b03166113c9565b6103bc600480360360208110156104b257600080fd5b50356001600160a01b0316611439565b610274600480360360208110156104d857600080fd5b50356001600160a01b031661148e565b610210611535565b60006001600160a01b0382166105375760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b600354604080516370a0823160e01b81526001600160a01b038581166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561058457600080fd5b505afa158015610598573d6000803e3d6000fd5b505050506040513d60208110156105ae57600080fd5b505190505b919050565b6003546001600160a01b031681565b600d5481565b6000546001600160a01b031633146105e457600080fd5b600054604080516370a0823160e01b815230600482015290516001600160a01b038085169363a9059cbb9391169184916370a08231916024808301926020929190829003018186803b15801561063957600080fd5b505afa15801561064d573d6000803e3d6000fd5b505050506040513d602081101561066357600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b5051610731576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e2072657472696576696e6720746f6b656e73000000000000604482015290519081900360640190fd5b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561076b573d6000803e3d6000fd5b5050565b60126020526000908152604090205481565b600260015414156107d9576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001553360009081526011602052604090205481118015906107fd5750600081115b61084e576040805162461bcd60e51b815260206004820181905260248201527f496e76616c696420746f6b656e20616d6f756e7420746f207769746864726177604482015290519081900360640190fd5b60065461085b90826115bc565b600655600061086933611605565b336000908152601160205260409020600481018054830190555490915061089090836115bc565b33600081815260116020908152604080832094855560018501869055600a546002860155600d546003958601559354845163a9059cbb60e01b815260048101949094526024840187905293516001600160a01b039094169363a9059cbb93604480820194918390030190829087803b15801561090b57600080fd5b505af115801561091f573d6000803e3d6000fd5b505050506040513d602081101561093557600080fd5b5051610988576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e20756e2d7374616b696e6720746f6b656e73000000000000604482015290519081900360640190fd5b604080513381526020810184905281517f4c48d8823de8aa74e6ea4bed3a0c422e95a3d1e10f8f3e47dc7e2fe779be9514929181900390910190a160075460ff16151560011415610a3c57600560009054906101000a90046001600160a01b03166001600160a01b031663436596c46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b505050505b505060018055565b60006001600160a01b038216610a8b5760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b506001600160a01b031660009081526011602052604090205490565b60026001541415610aff576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260018190553360009081526011602052604090200154600a541115610c81576000610b2b33611605565b33600090815260116020526040902060040154909150610b4c908290611713565b33600081815260116020908152604080832060049081018490558054825163a9059cbb60e01b8152918201959095526024810186905290519495506001600160a01b039093169363a9059cbb93604480820194918390030190829087803b158015610bb657600080fd5b505af1158015610bca573d6000803e3d6000fd5b505050506040513d6020811015610be057600080fd5b5051610c1d5760405162461bcd60e51b815260040180806020018281038252602c815260200180611c50602c913960400191505060405180910390fd5b604080513381526020810183905281517f8a0128b5f12decc7d739e546c0521c3388920368915393f80120bc5b408c7c9e929181900390910190a13360009081526011602052604090206001810191909155600d546003820155600a546002909101555b60018055565b6000546001600160a01b03163314610c9e57600080fd5b6001600160a01b038116610cf1576040805162461bcd60e51b81526020600482015260156024820152741cd95d1d1a5b99c80c081d1bc818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b610d1c3361176d565b565b60006001600160a01b038216610d655760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b6001600160a01b03821660009081526011602090815260408083206003810154600c54915460001982018652601290945291842054600a54929493610dbe93610db892610db291906115bc565b906117af565b90611808565b600c546001600160a01b03861660009081526011602090815260408083205460001988018452601290925290912054600a549394509192610e0392610db291906115bc565b81610e0a57fe5b6001600160a01b0386166000908152601160205260409020600401549190069190910190610e39908290611713565b949350505050565b6000546001600160a01b03163314610e5857600080fd5b6007805460ff1916911515919091179055565b610e743361118a565b610eaf5760405162461bcd60e51b8152600401808060200182810382526040815260200180611d026040913960400191505060405180910390fd5b610eb88161184a565b50565b60048054604080516323b872dd60e01b8152339381019390935230602484015260448301849052516001600160a01b03909116916323b872dd9160648083019260209291908290030181600087803b158015610f1657600080fd5b505af1158015610f2a573d6000803e3d6000fd5b505050506040513d6020811015610f4057600080fd5b5051610f7d5760405162461bcd60e51b8152600401808060200182810382526030815260200180611d426030913960400191505060405180910390fd5b6000610f93600a610db8600954610db28661188c565b90506000610fa183836115bc565b9050610fac816118af565b505050565b6005546001600160a01b031681565b6000546001600160a01b031681565b600a5481565b600654600354604080516370a0823160e01b8152306004820152905160009361105e9390926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561102c57600080fd5b505afa158015611040573d6000803e3d6000fd5b505050506040513d602081101561105657600080fd5b5051906115bc565b600354600080546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101869052905194955092169263a9059cbb926044808201936020939283900390910190829087803b1580156110ba57600080fd5b505af11580156110ce573d6000803e3d6000fd5b505050506040513d60208110156110e457600080fd5b5051610eb8576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e20756e2d7374616b696e6720746f6b656e73000000000000604482015290519081900360640190fd5b60075460ff1681565b6111493361118a565b610f7d5760405162461bcd60e51b8152600401808060200182810382526040815260200180611d026040913960400191505060405180910390fd5b60095481565b600061119760028361199a565b92915050565b60065481565b600e6020526000908152604090205481565b6002600154141561120d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600155600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b505050506040513d602081101561129657600080fd5b50516112d35760405162461bcd60e51b8152600401808060200182810382526032815260200180611c1e6032913960400191505060405180910390fd5b60006112e9600a610db8600854610db28661188c565b905060006112f783836115bc565b9050600061130433611605565b336000908152601160205260409020600481018054830190555490915061132c908390611713565b33600090815260116020526040902090815560018101829055600a546002820155600d546003909101556006546113639083611713565b60065561136f336113c9565b604080513381526020810186905281517f4031c63bb53dc5dfada7ef8d75bef8c44d0283658c1585fc74107ed5b75e97c8929181900390910190a15050600180555050565b60085481565b6004546001600160a01b031681565b60006113d482611439565b90508061076b5760108054600181019091557f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0384166001600160a01b0319909116179055336000908152600e602052604090204290555050565b6000805b601054811015611485576010818154811061145457fe5b6000918252602090912001546001600160a01b038481169116141561147d5760019150506105b3565b60010161143d565b50600092915050565b6000546001600160a01b031633146114a557600080fd5b6001600160a01b0381166114ea5760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600f5481565b611545828261199a565b15611597576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006115fe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a01565b9392505050565b60006001600160a01b03821661164c5760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b6001600160a01b03821660009081526011602090815260408083206003810154600c54915460001982018652601290945291842054600a5492949361169993610db892610db291906115bc565b600c546001600160a01b03861660009081526011602090815260408083205460001988018452601290925290912054600a5493945091926116de92610db291906115bc565b816116e557fe5b6001600160a01b03959095166000908152601160205260409020600401805491909506019093555090919050565b6000828201838110156115fe576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b611778600282611a98565b6040516001600160a01b038216907f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16590600090a250565b6000826117be57506000611197565b828202828482816117cb57fe5b04146115fe5760405162461bcd60e51b8152600401808060200182810382526021815260200180611cbf6021913960400191505060405180910390fd5b60006115fe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611aff565b61185560028261153b565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b60008061189a836064611b64565b90506000610e39612710610db88460646117af565b60006118d2600b546118cc600c54856117af90919063ffffffff16565b90611713565b905060006118eb6006548361180890919063ffffffff16565b905061190260065483611b7e90919063ffffffff16565b600b55600a546119129082611713565b600a55600d54600019016000908152601260205260409020546119359082611713565b600d805460009081526012602090815260409182902093909355905481519081529182018590523382820152517fddf8c05dcee82ec75482e095e6c06768c848d5a7df7147686033433d141328b69181900360600190a15050600d8054600101905550565b60006001600160a01b0382166119e15760405162461bcd60e51b8152600401808060200182810382526022815260200180611ce06022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b60008184841115611a905760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a55578181015183820152602001611a3d565b50505050905090810190601f168015611a825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b611aa2828261199a565b611add5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c7c6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60008183611b4e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611a55578181015183820152602001611a3d565b506000838581611b5a57fe5b0495945050505050565b6000818260018486010381611b7557fe5b04029392505050565b60006115fe83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525060008183611c0a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611a55578181015183820152602001611a3d565b50828481611c1457fe5b0694935050505056fe546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d207573657220666f72206c6f636b696e674552524f523a206572726f7220696e2073656e64696e67207265776172642066726f6d20636f6e7472616374526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a2073656e64696e6720746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c65546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2066756e646572206163636f756e74a26469706673582212204ac75a9d4d758622df110227b0d9bd56d283a8df5424f0bbbb3780915ce8eac364736f6c63430007050033526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373

Deployed ByteCode Sourcemap

9565:11281:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20049:208;;;;;;;;;;;;;;;;-1:-1:-1;20049:208:0;-1:-1:-1;;;;;20049:208:0;;:::i;:::-;;;;;;;;;;;;;;;;9675:65;;;:::i;:::-;;;;-1:-1:-1;;;;;9675:65:0;;;;;;;;;;;;;;10399:21;;;:::i;20269:243::-;;;;;;;;;;;;;;;;-1:-1:-1;20269:243:0;-1:-1:-1;;;;;20269:243:0;;:::i;:::-;;10839:40;;;;;;;;;;;;;;;;-1:-1:-1;10839:40:0;;:::i;17839:977::-;;;;;;;;;;;;;;;;-1:-1:-1;17839:977:0;;:::i;19556:219::-;;;;;;;;;;;;;;;;-1:-1:-1;19556:219:0;-1:-1:-1;;;;;19556:219:0;;:::i;15504:725::-;;;:::i;20524:222::-;;;;;;;;;;;;;;;;-1:-1:-1;20524:222:0;-1:-1:-1;;;;;20524:222:0;;:::i;9150:93::-;;;:::i;17010:533::-;;;;;;;;;;;;;;;;-1:-1:-1;17010:533:0;-1:-1:-1;;;;;17010:533:0;;:::i;20756:87::-;;;;;;;;;;;;;;;;-1:-1:-1;20756:87:0;;;;:::i;9026:116::-;;;;;;;;;;;;;;;;-1:-1:-1;9026:116:0;-1:-1:-1;;;;;9026:116:0;;:::i;13751:354::-;;;;;;;;;;;;;;;;-1:-1:-1;13751:354:0;;:::i;9820:32::-;;;:::i;5729:28::-;;;:::i;10267:33::-;;;:::i;14135:312::-;;;:::i;9902:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;13457:282;;;;;;;;;;;;;;;;-1:-1:-1;13457:282:0;;:::i;10141:26::-;;;:::i;8895:125::-;;;;;;;;;;;;;;;;-1:-1:-1;8895:125:0;-1:-1:-1;;;;;8895:125:0;;:::i;9865:30::-;;;:::i;10430:40::-;;;;;;;;;;;;;;;;-1:-1:-1;10430:40:0;-1:-1:-1;;;;;10430:40:0;;:::i;12056:1091::-;;;;;;;;;;;;;;;;-1:-1:-1;12056:1091:0;;:::i;10036:25::-;;;:::i;9747:66::-;;;:::i;11500:271::-;;;;;;;;;;;;;;;;-1:-1:-1;11500:271:0;-1:-1:-1;;;;;11500:271:0;;:::i;11232:258::-;;;;;;;;;;;;;;;;-1:-1:-1;11232:258:0;-1:-1:-1;;;;;11232:258:0;;:::i;5990:247::-;;;;;;;;;;;;;;;;-1:-1:-1;5990:247:0;-1:-1:-1;;;;;5990:247:0;;:::i;10535:20::-;;;:::i;20049:208::-;20109:18;-1:-1:-1;;;;;20147:18:0;;20139:65;;;;-1:-1:-1;;;20139:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20229:3;;20222:27;;;-1:-1:-1;;;20222:27:0;;-1:-1:-1;;;;;20222:27:0;;;;;;;;;20229:3;;;;;20222:21;;:27;;;;;;;;;;;;;;20229:3;20222:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20222:27:0;;-1:-1:-1;20049:208:0;;;;:::o;9675:65::-;;;-1:-1:-1;;;;;9675:65:0;;:::o;10399:21::-;;;;:::o;20269:243::-;5956:5;;-1:-1:-1;;;;;5956:5:0;5942:10;:19;5934:28;;;;;;20378:5:::1;::::0;20385:39:::1;::::0;;-1:-1:-1;;;20385:39:0;;20418:4:::1;20385:39;::::0;::::1;::::0;;;-1:-1:-1;;;;;20354:23:0;;::::1;::::0;::::1;::::0;20378:5;::::1;::::0;20354:23;;20385:24:::1;::::0;:39;;;;;::::1;::::0;;;;;;;;20354:23;20385:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20385:39:0;20354:71:::1;::::0;;-1:-1:-1;;;;;;20354:71:0::1;::::0;;;;;;-1:-1:-1;;;;;20354:71:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;20385:39:::1;::::0;20354:71;;;;;;;-1:-1:-1;20354:71:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20354:71:0;20346:110:::1;;;::::0;;-1:-1:-1;;;20346:110:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20467:5;::::0;;:37:::1;::::0;-1:-1:-1;;;;;20467:5:0;;::::1;::::0;20482:21:::1;20467:37:::0;::::1;;;::::0;20482:21;;20467:37;:5;:37;20482:21;20467:5;:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20269:243:::0;:::o;10839:40::-;;;;;;;;;;;;;:::o;17839:977::-;197:1;348:7;;:19;;340:63;;;;;-1:-1:-1;;;340:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:1;416:7;:18;17921:10:::1;17913:19;::::0;;;:7:::1;:19;::::0;;;;:32;:42;-1:-1:-1;17913:42:0;::::1;::::0;:56:::1;;;17968:1;17959:6;:10;17913:56;17905:101;;;::::0;;-1:-1:-1;;;17905:101:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18041:11;::::0;:23:::1;::::0;18057:6;18041:15:::1;:23::i;:::-;18027:11;:37:::0;18190:13:::1;18206:25;18220:10;18206:13;:25::i;:::-;18250:10;18242:19;::::0;;;:7:::1;:19;::::0;;;;:29:::1;::::0;::::1;:38:::0;;;::::1;::::0;;18344:32;18190:41;;-1:-1:-1;18344:44:0::1;::::0;18381:6;18344:36:::1;:44::i;:::-;18317:10;18309:19;::::0;;;:7:::1;:19;::::0;;;;;;;:79;;;18399:33:::1;::::0;::::1;:41:::0;;;18490:14:::1;::::0;18451:37:::1;::::0;::::1;:53:::0;18544:5:::1;::::0;18515:25:::1;::::0;;::::1;:34:::0;18595:3;;18588:40;;-1:-1:-1;;;18588:40:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;-1:-1:-1;;;;;18595:3:0;;::::1;::::0;18588:20:::1;::::0;:40;;;;;;;;;;;;;18595:3;18588:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;18588:40:0;18580:79:::1;;;::::0;;-1:-1:-1;;;18580:79:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18675:28;::::0;;18684:10:::1;18675:28:::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;18727:7;::::0;::::1;;:13;;:7:::0;:13:::1;18724:85;;;18763:17;;;;;;;;;-1:-1:-1::0;;;;;18763:17:0::1;-1:-1:-1::0;;;;;18753:42:0::1;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18724:85;-1:-1:-1::0;;153:1:0;461:22;;17839:977::o;19556:219::-;19615:17;-1:-1:-1;;;;;19652:20:0;;19644:67;;;;-1:-1:-1;;;19644:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19739:15:0;;;;;:7;:15;;;;;:28;;19556:219::o;15504:725::-;197:1;348:7;;:19;;340:63;;;;;-1:-1:-1;;;340:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:1;416:7;:18;;;15595:10:::1;15587:19;::::0;;;:7:::1;:19;::::0;;;;:37:::1;::::0;15570:14:::1;::::0;:54:::1;15567:655;;;15640:13;15656:25;15670:10;15656:13;:25::i;:::-;15732:10;15724:19;::::0;;;:7:::1;:19;::::0;;;;:29:::1;;::::0;15640:41;;-1:-1:-1;15714:40:0::1;::::0;15640:41;;15714:9:::1;:40::i;:::-;15777:10;15801:1;15769:19:::0;;;:7:::1;:19;::::0;;;;;;;:29:::1;::::0;;::::1;:33:::0;;;15842:4;;15835:39;;-1:-1:-1;;;15835:39:0;;;;::::1;::::0;;;;;;;;;;;;;;-1:-1:-1;;;;;;15842:4:0;;::::1;::::0;15835:21:::1;::::0;:39;;;;;;;;;;;;;15842:4;15835:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15835:39:0;15827:96:::1;;;;-1:-1:-1::0;;;15827:96:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15953:32;::::0;;15967:10:::1;15953:32:::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;16018:10;16010:19;::::0;;;:7:::1;:19;::::0;;;;:33:::1;::::0;::::1;:41:::0;;;;16106:5:::1;::::0;16078:25:::1;::::0;::::1;:33:::0;16186:14:::1;::::0;16146:37:::1;::::0;;::::1;:54:::0;15567:655:::1;153:1:::0;461:22;;15504:725::o;20524:222::-;5956:5;;-1:-1:-1;;;;;5956:5:0;5942:10;:19;5934:28;;;;;;-1:-1:-1;;;;;20622:41:0;::::1;20614:75;;;::::0;;-1:-1:-1;;;20614:75:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;20614:75:0;;;;;;;;;;;;;::::1;;20700:17;:38:::0;;-1:-1:-1;;;;;;20700:38:0::1;-1:-1:-1::0;;;;;20700:38:0;;;::::1;::::0;;;::::1;::::0;;20524:222::o;9150:93::-;9202:33;9224:10;9202:21;:33::i;:::-;9150:93::o;17010:533::-;17072:22;-1:-1:-1;;;;;17115:20:0;;17107:67;;;;-1:-1:-1;;;17107:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17206:15:0;;17186:17;17206:15;;;:7;:15;;;;;;;;:21;;;;17355:7;;17320:28;;-1:-1:-1;;17296:16:0;;17288:25;;:7;:25;;;;;;;17269:14;;17206:21;;17186:17;17267:96;;17268:81;;17269:45;;:14;:18;:45::i;:::-;17268:51;;:81::i;:::-;17267:87;;:96::i;:::-;17470:7;;-1:-1:-1;;;;;17437:15:0;;;;;;:7;:15;;;;;;;;:28;-1:-1:-1;;17413:16:0;;17405:25;;:7;:25;;;;;;;17386:14;;17249:114;;-1:-1:-1;17470:7:0;;17385:81;;17386:45;;:14;:18;:45::i;17385:81::-;17384:93;;;;;-1:-1:-1;;;;;17508:15:0;;;;;;:7;:15;;;;;:25;;;17384:93;;;17374:103;;;;;17497:37;;17374:103;;17497:10;:37::i;:::-;17489:46;17010:533;-1:-1:-1;;;;17010:533:0:o;20756:87::-;5956:5;;-1:-1:-1;;;;;5956:5:0;5942:10;:19;5934:28;;;;;;20820:7:::1;:15:::0;;-1:-1:-1;;20820:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20756:87::o;9026:116::-;8770:28;8787:10;8770:16;:28::i;:::-;8762:105;;;;-1:-1:-1;;;8762:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9107:27:::1;9126:7;9107:18;:27::i;:::-;9026:116:::0;:::o;13751:354::-;13820:4;;;13813:60;;;-1:-1:-1;;;13813:60:0;;13839:10;13813:60;;;;;;;13859:4;13813:60;;;;;;;;;;;-1:-1:-1;;;;;13820:4:0;;;;13813:25;;:60;;;;;;;;;;;;;;13820:4;;13813:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13813:60:0;13805:121;;;;-1:-1:-1;;;13805:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13937:21;13961:40;13998:2;13962:30;13985:6;;13962:18;13973:6;13962:10;:18::i;13961:40::-;13937:64;-1:-1:-1;14012:15:0;14031:25;:6;13937:64;14031:10;:25::i;:::-;14012:45;;14078:19;14089:7;14078:10;:19::i;:::-;13751:354;;;:::o;9820:32::-;;;-1:-1:-1;;;;;9820:32:0;;:::o;5729:28::-;;;-1:-1:-1;;;;;5729:28:0;;:::o;10267:33::-;;;;:::o;14135:312::-;14323:11;;14288:3;;14281:36;;;-1:-1:-1;;;14281:36:0;;14311:4;14281:36;;;;;;14253:24;;14280:55;;14323:11;;-1:-1:-1;;;;;14288:3:0;;;;14281:21;;:36;;;;;;;;;;;;;;;14288:3;14281:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14281:36:0;;14280:42;:55::i;:::-;14361:3;;;14383:5;;14354:54;;;-1:-1:-1;;;14354:54:0;;-1:-1:-1;;;;;14383:5:0;;;14354:54;;;;;;;;;;;;14253:82;;-1:-1:-1;14361:3:0;;;14354:20;;:54;;;;;;;;;;;;;;;;;14361:3;14354:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14354:54:0;14346:93;;;;;-1:-1:-1;;;14346:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9902:26;;;;;;:::o;13457:282::-;8770:28;8787:10;8770:16;:28::i;:::-;8762:105;;;;-1:-1:-1;;;8762:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10141:26;;;;:::o;8895:125::-;8959:4;8983:29;:16;9004:7;8983:20;:29::i;:::-;8976:36;8895:125;-1:-1:-1;;8895:125:0:o;9865:30::-;;;;:::o;10430:40::-;;;;;;;;;;;;;:::o;12056:1091::-;197:1;348:7;;:19;;340:63;;;;;-1:-1:-1;;;340:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:1;416:7;:18;12136:3:::1;::::0;12129:59:::1;::::0;;-1:-1:-1;;;12129:59:0;;12154:10:::1;12129:59;::::0;::::1;::::0;12174:4:::1;12129:59:::0;;;;;;;;;;;;-1:-1:-1;;;;;12136:3:0;;::::1;::::0;12129:24:::1;::::0;:59;;;;;::::1;::::0;;;;;;;;;12136:3:::1;::::0;12129:59;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12129:59:0;12121:122:::1;;;;-1:-1:-1::0;;;12121:122:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12268:21;12292:39;12328:2;12293:29;12316:5;;12293:18;12304:6;12293:10;:18::i;12292:39::-;12268:63:::0;-1:-1:-1;12346:21:0::1;12371:25;:6:::0;12268:63;12371:10:::1;:25::i;:::-;12346:51;;12545:13;12561:25;12575:10;12561:13;:25::i;:::-;12609:10;12601:19;::::0;;;:7:::1;:19;::::0;;;;:29:::1;::::0;::::1;:38:::0;;;::::1;::::0;;12721:32;12545:41;;-1:-1:-1;12703:51:0::1;::::0;:13;;:17:::1;:51::i;:::-;12676:10;12668:19;::::0;;;:7:::1;:19;::::0;;;;:86;;;12769:33:::1;::::0;::::1;:41:::0;;;12864:14:::1;::::0;12825:37:::1;::::0;::::1;:53:::0;12922:5:::1;::::0;12893:25:::1;::::0;;::::1;:34:::0;12984:11:::1;::::0;:30:::1;::::0;13000:13;12984:15:::1;:30::i;:::-;12970:11;:44:::0;13043:26:::1;13058:10;13043:14;:26::i;:::-;13103;::::0;;13110:10:::1;13103:26:::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;;153:1:0;461:22;;-1:-1:-1;;12056:1091:0:o;10036:25::-;;;;:::o;9747:66::-;;;-1:-1:-1;;;;;9747:66:0;;:::o;11500:271::-;11576:19;11599:27;11613:12;11599:13;:27::i;:::-;11575:51;;11640:14;11636:129;;11670:12;:31;;;;;;;;;;;;-1:-1:-1;;;;;11670:31:0;;-1:-1:-1;;;;;;11670:31:0;;;;;;11724:10;-1:-1:-1;11715:20:0;;;:8;11670:31;11715:20;;;;11739:15;11715:39;;11500:271;;:::o;11232:258::-;11317:4;;11337:123;11361:12;:19;11357:23;;11337:123;;;11419:12;11432:1;11419:15;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11407:27:0;;;11419:15;;11407:27;11403:46;;;11444:4;11436:13;;;;;11403:46;11387:1;11382:6;11337:123;;;-1:-1:-1;11477:5:0;;11232:258;-1:-1:-1;;11232:258:0:o;5990:247::-;5956:5;;-1:-1:-1;;;;;5956:5:0;5942:10;:19;5934:28;;;;;;-1:-1:-1;;;;;6080:23:0;::::1;6072:70;;;;-1:-1:-1::0;;;6072:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6153:5;:17:::0;;-1:-1:-1;;;;;;6153:17:0::1;-1:-1:-1::0;;;;;6153:17:0;::::1;::::0;;::::1;::::0;;6186:43:::1;::::0;6153:17;;6207:10:::1;::::0;6186:43:::1;::::0;6153:5;6186:43:::1;5990:247:::0;:::o;10535:20::-;;;;:::o;7817:178::-;7895:18;7899:4;7905:7;7895:3;:18::i;:::-;7894:19;7886:63;;;;;-1:-1:-1;;;7886:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7960:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;7960:27:0;7983:4;7960:27;;;7817:178::o;1412:136::-;1470:7;1497:43;1501:1;1504;1497:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1490:50;1412:136;-1:-1:-1;;;1412:136:0:o;16502:496::-;16558:7;-1:-1:-1;;;;;16586:20:0;;16578:67;;;;-1:-1:-1;;;16578:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16686:15:0;;16666:17;16686:15;;;:7;:15;;;;;;;;:21;;;;16824:7;;16789:28;;-1:-1:-1;;16765:16:0;;16757:25;;:7;:25;;;;;;;16738:14;;16686:21;;16666:17;16736:96;;16737:81;;16738:45;;:14;:18;:45::i;16736:96::-;16958:7;;-1:-1:-1;;;;;16925:15:0;;;;;;:7;:15;;;;;;;;:28;-1:-1:-1;;16901:16:0;;16893:25;;:7;:25;;;;;;;16874:14;;16718:114;;-1:-1:-1;16958:7:0;;16873:81;;16874:45;;:14;:18;:45::i;16873:81::-;16872:93;;;;;-1:-1:-1;;;;;16843:15:0;;;;;;;;:7;:15;;;;;:25;;:122;;16872:93;;;;16843:122;;;;-1:-1:-1;16984:6:0;;16502:496;-1:-1:-1;16502:496:0:o;948:181::-;1006:7;1038:5;;;1062:6;;;;1054:46;;;;;-1:-1:-1;;;1054:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9406:154;9474:32;:16;9498:7;9474:23;:32::i;:::-;9522:30;;-1:-1:-1;;;;;9522:30:0;;;;;;;;9406:154;:::o;2302:471::-;2360:7;2605:6;2601:47;;-1:-1:-1;2635:1:0;2628:8;;2601:47;2672:5;;;2676:1;2672;:5;:1;2696:5;;;;;:10;2688:56;;;;-1:-1:-1;;;2688:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3249:132;3307:7;3334:39;3338:1;3341;3334:39;;;;;;;;;;;;;;;;;:3;:39::i;9251:146::-;9316:29;:16;9337:7;9316:20;:29::i;:::-;9361:28;;-1:-1:-1;;;;;9361:28:0;;;;;;;;9251:146;:::o;19042:239::-;19101:7;;19141:17;:7;19154:3;19141:12;:17::i;:::-;19120:38;-1:-1:-1;19169:23:0;19195:42;19219:17;19195:19;19120:38;19225:11;19195:14;:19::i;14672:590::-;14851:17;14871:43;14898:15;;14872:20;14884:7;;14872;:11;;:20;;;;:::i;:::-;14871:26;;:43::i;:::-;14851:63;;14926:24;14953:26;14967:11;;14953:9;:13;;:26;;;;:::i;:::-;14926:53;;15008:26;15022:11;;15008:9;:13;;:26;;;;:::i;:::-;14990:15;:44;15072:14;;:36;;15091:16;15072:18;:36::i;:::-;15055:14;:53;15144:5;;-1:-1:-1;;15144:9:0;15136:18;;;;:7;:18;;;;;;:40;;15159:16;15136:22;:40::i;:::-;15127:5;;;15119:14;;;;:7;:14;;;;;;;;;:57;;;;15209:5;;15202:34;;;;;;;;;;;15225:10;15202:34;;;;;;;;;;;;;;-1:-1:-1;;15247:5:0;:7;;;;;;-1:-1:-1;14672:590:0:o;8194:203::-;8266:4;-1:-1:-1;;;;;8291:21:0;;8283:68;;;;-1:-1:-1;;;8283:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8369:20:0;:11;:20;;;;;;;;;;;;;;;8194:203::o;1851:192::-;1937:7;1973:12;1965:6;;;;1957:29;;;;-1:-1:-1;;;1957:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2009:5:0;;;1851:192::o;8003:183::-;8083:18;8087:4;8093:7;8083:3;:18::i;:::-;8075:64;;;;-1:-1:-1;;;8075:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8150:20:0;8173:5;8150:20;;;;;;;;;;;:28;;-1:-1:-1;;8150:28:0;;;8003:183::o;3877:278::-;3963:7;3998:12;3991:5;3983:28;;;;-1:-1:-1;;;3983:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4022:9;4038:1;4034;:5;;;;;;;3877:278;-1:-1:-1;;;;;3877:278:0:o;5413:106::-;5466:6;5510:1;5506;5501;5497;5493;:5;:9;5492:15;;;;;;:19;;5413:106;-1:-1:-1;;;5413:106:0:o;4620:130::-;4678:7;4705:37;4709:1;4712;4705:37;;;;;;;;;;;;;;;;;5321:7;5357:12;5349:6;5341:29;;;;-1:-1:-1;;;5341:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5392:1;5388;:5;;;;;;;5235:166;-1:-1:-1;;;;5235:166:0:o

Swarm Source

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