Contract 0x6f2afbf4f5e5e804c5b954889d7bf3768a3c9a45

 
Txn Hash
Block
From
To
Value [Txn Fee]
0x2bb90c8d030f2545aa73ade2b081fe0e6561df0e10aafaef2982d9017ed53e9f83790612021-06-17 15:38:121 hr 6 mins ago0x7263e56f7178e5e6f0b9d86de43d93346225c46e IN  Hope: HOPE Token0 BNB0.00022215
0x00ccc5c9130167be013db91d9854dd96f5bc8d7a530422363fbb61bfdc0ed14783783632021-06-17 15:03:181 hr 41 mins ago0xa334d6154f75d502cda28b331b2e1b9800597169 IN  Hope: HOPE Token0 BNB0.00022215
0xca406162c759d459eb4012baa00ec4b657cfafa43923bd0b678c8710934538f583777282021-06-17 14:31:242 hrs 13 mins ago0xe32bf6c09354d6cf7465eae60f3d68eb69919897 IN  Hope: HOPE Token0 BNB0.00022215
0x380f5218273fe71397462a30be4897987e3da454e101d1d41963b1a7cf77ae1283740612021-06-17 11:25:425 hrs 18 mins ago0xc3a90436132b40dc0ac935964c53fe14e65db16c IN  Hope: HOPE Token0 BNB0.000404932
0x5b21f34ac4f663086a314155d267331b390ff204607c0aa2049695891fcc6d6583740232021-06-17 11:23:485 hrs 20 mins ago0xb14dcf420062a38bf4b232f4388469a6f16993be IN  Hope: HOPE Token0 BNB0.00025906
0xdb6487ac0a70b71e88263fb0d849c1057a41d8f6ad7ffc832bc1698e0d5de85883731912021-06-17 10:41:286 hrs 3 mins ago0x7624f1f1275e7b2226b160daf6e47c70d0735315 IN  Hope: HOPE Token0 BNB0.00022215
0x213a45b2f3675e768919d90ece80a9e8e04fed2cafc55d1cce1d665d57f9b59783730952021-06-17 10:36:406 hrs 7 mins ago0x6e16e5fd794c1aea314965cc8fd436f60381a92c IN  Hope: HOPE Token0 BNB0.00022215
0xfd3bf91a35d27ed4eef0f3095f923de89e8f5d0e725378acc448204c65129e2a83726762021-06-17 10:15:116 hrs 29 mins ago0x37edc0accb41ce58ce08ebf074f9b201104f1e48 IN  Hope: HOPE Token0 BNB0.00022215
0x8ac8b1ec7441f7f04f54fec722b3bd877528fe3ea09483cbaf0805e2d0ff72bd83723982021-06-17 10:01:106 hrs 43 mins ago0x61179529dcb30789843a8f4c3949490cd39a8046 IN  Hope: HOPE Token0 BNB0.00022215
0xe1d4f7b5192792318e32b3c0dbd087c290cb15fe3c33dc9bc540511f7af16f6d83719842021-06-17 9:40:287 hrs 4 mins ago0xf9ff1a50225850db23f887113e1d720adfb636d6 IN  Hope: HOPE Token0 BNB0.00022215
0x14ba9627dfdc77d54241d36b06713a5f7f70b209a8009f4605ba1cf21e581e4a83717992021-06-17 9:31:097 hrs 13 mins ago0xe9d2afff18f08375d5b7a8a804e272b6c81ceb9f IN  Hope: HOPE Token0 BNB0.000313456
0x830a3259f9734e04fe4fa61a580688044ce4b5f3cd3d6869bfd9201d9c0333e783717742021-06-17 9:29:527 hrs 14 mins ago0xc2dff141af2a2f81c24391f2a2d303c317a05956 IN  Hope: HOPE Token0 BNB0.00022215
0xc35e04ddacc3727b6583f9011615e10c12bba720e532216732a4845458057b8483697132021-06-17 7:43:299 hrs 1 min ago0x8e68b9a668a9ddf9d0d616f31faae78a079209f0 IN  Hope: HOPE Token0 BNB0.00022215
0xf1b3fa6b68d842bcf908d8a33a8d04c0f60ea0a5dc6af6dbf76457b4ae8f2e8583662502021-06-17 4:49:1111 hrs 55 mins ago0x4f4e296f5e6349194ae1e0e57a6a976e4a55569a IN  Hope: HOPE Token0 BNB0.00022215
0xf6de2b57987b918045c7d0d935dd47843bef4a392c4b44a39c46d7e47813bbde83650662021-06-17 3:49:5812 hrs 54 mins ago0xdf3e86779b045e8cf6477d010c8a4f98e74e2b64 IN  Hope: HOPE Token0 BNB0.00022215
0xf944ac0060e5d1fbcfc9d9703d0b19c914c1d5a180e76e7a67aaf5e3a61b892783598522021-06-16 23:28:4017 hrs 15 mins ago0x1c0f9a749465d9af03da4dc708b3cfc70fd1f0aa IN  Hope: HOPE Token0 BNB0.00022215
0x86e4e70523a5815620cddf93e3c8f794ca1cc57c4e5a537f9100c10256d6623583595242021-06-16 23:12:1617 hrs 32 mins ago0x3e35db325fcb0a2e0786c8c3a169b68c05f2e8f4 IN  Hope: HOPE Token0 BNB0.00022215
0x4147f85ddb08893f38d067f4a02feb2b03c4eefcb6d7cccb1ed500a577c02f3583575452021-06-16 21:32:3319 hrs 11 mins ago0x3a0ba17db1961432aced0acce4110a0655ea0ecb IN  Hope: HOPE Token0 BNB0.00022215
0xc22c7d8f37980b050175a3f1f0389d676ca67be17c7016de20f88e4b1defd28983559672021-06-16 20:13:3520 hrs 30 mins ago0xf2ca1d624546603d9f6d4f064c647b6d989749b9 IN  Hope: HOPE Token0 BNB0.00022215
0xbf8c5908000659b0666a70ec9bbcc2055a12e0136a386bd554a827a3dfb41ea283559532021-06-16 20:12:5320 hrs 31 mins ago0xf2ca1d624546603d9f6d4f064c647b6d989749b9 IN  Hope: HOPE Token0 BNB0.00022215
0x6222407954549b9cc76078d90de7d35fc36b45f41632fb81f661efc570d8f5ad83552802021-06-16 19:38:4921 hrs 5 mins ago0x65fbc6c66ae9c1a9a0170aefb4e26dbd6016a799 IN  Hope: HOPE Token0 BNB0.00022215
0x255aee149698566d912b7724c9d1e13c8374e23c91b770e2fd9c203884b7e7a183546512021-06-16 19:07:1621 hrs 37 mins ago0x9635339eb953274969ac17cab3b938a4a3a81aaf IN  Hope: HOPE Token0 BNB0.00022215
0x0cda19db0336dd2f8728f608d7ce1fde9aabf40056b7faf2a74711270021a10883522852021-06-16 17:08:2923 hrs 36 mins ago0x20da2e7c6cef1cbd4c6999aff19f118464d5b2fb IN  Hope: HOPE Token0 BNB0.00022215
0x5a916b53e6cbfd566cbd5eae3243c0156d2bb2a07e2be8d1be30f92906d2015883513172021-06-16 16:18:581 day 25 mins ago0x0de136787f60f797e992f2b88d911af4c67967da IN  Hope: HOPE Token0 BNB0.00022215
0xb33b02b3055127a7d0a0b9530b33abcf5e23f002a0fa47b67a95e65d4743df0d83507962021-06-16 15:52:551 day 51 mins ago0x75e18bab0e59a7e14041938aa9c7334ed1abe124 IN  Hope: HOPE Token0 BNB0.000087138
[ Download CSV Export 

OVERVIEW

$HOPE is a charity token with a robust charitable strategy designed to maximize profitability and social impact reach.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Hope

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

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

// File: contracts/@openzeppelin/contracts/access/Roles.sol

pragma solidity ^0.5.0;


/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping(address => bool) bearer;
    }

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    /**
     * @dev Check if an account has this role.
     * @return bool
     */
    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];
    }
}

// File: contracts/@openzeppelin/contracts/GSN/Context.sol

pragma solidity ^0.5.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.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor() internal {}

    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: contracts/@openzeppelin/contracts/math/SafeMath.sol

pragma solidity ^0.5.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.
     * _Available since v2.4.0._
     */
    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.
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage)
        internal
        pure
        returns (uint256)
    {
        // Solidity only automatically asserts when dividing by 0
        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.
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage)
        internal
        pure
        returns (uint256)
    {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: contracts/@openzeppelin/contracts/ownership/Ownable.sol

pragma solidity ^0.5.0;


/**
 * @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.
 *
 * 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(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return _msgSender() == _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 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 onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.5.0;


/**
 * @dev Interface of the BEP20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {BEP20Detailed}.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @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
    );
}

// File: contracts/@openzeppelin/contracts/token/ERC20/IERC20Fee.sol

pragma solidity ^0.5.0;


/**
 * @dev Interface of the BEP20Fee standard.
 */
interface IERC20Fee {
    /**
     * @dev Returns the `_basisPointsRate`
     */
    function basisPointsRate() external view returns (uint256);

    /**
     * @dev Returns the `_minimumFee`
     */
    function minimumFee() external view returns (uint256);

    /**
     * @dev Returns the `_maximumFee`
     */
    function maximumFee() external view returns (uint256);

    /**
     * @dev Returns the `_denominator`
     */
    function denominator() external view returns (uint256);

    /**
     * @dev Returns the special fees parameters for account
     * @param account Account address
     * @return A tuple of (uint256, uint256, uint256, bool) types
     */
    function fees(address account)
        external
        view
        returns (uint256, uint256, uint256, bool);

    /**
     * @dev Returns the `_feesCollector`
     */
    function feesCollector() external view returns (address);

    /**
     * @dev Sets contract fees collector to a new account (`newFeesCollector`).
     * @param newFeesCollector Account address of new fees collector
     * @return A bool value indicating whether the operation succeeded
     */
    function setFeesCollector(address newFeesCollector) external returns (bool);

    /**
     * @dev Sets `_basisPointsRate`, `_minimumFee` and `_maximumFee`
     * @param newBasisPointsRate Value of basis rate
     * @param newMinimumFee Value of minimum fee
     * @param newMaximumFee Value of maximum fee
     * @return A bool value indicating whether the operation succeeded
     */
    function setParams(
        uint256 newBasisPointsRate,
        uint256 newMinimumFee,
        uint256 newMaximumFee
    ) external returns (bool);

    /**
     * @dev Sets `basisPointsRate`, `minimumFee` and `maximumFee`
     * for `account` in `_fees` mapping
     * @param account Account address
     * @param newBasisPoints Value for account basis rate
     * @param newMinFee Value of account minimum fee
     * @param newMaxFee Value of account maximum fee
     * @param state Account special fees state (true/false)
     * @return A bool value indicating whether the operation succeeded
     */
    function setSpecialParams(
        address account,
        uint256 newBasisPoints,
        uint256 newMinFee,
        uint256 newMaxFee,
        bool state
    ) external returns (bool);

    /**
     * @dev Emitted when `_basisPointsRate`, `_minimumFee` and `_maximumFee`
     * parameters have been changed.
     */
    event Params(
        uint256 indexed newBasisPoints,
        uint256 indexed newMinFee,
        uint256 indexed newMaxFee
    );

    /**
     * @dev Emitted when `_basisPointsRate`, `_minimumFee` and `_maximumFee`
     * parameters have been changed for specific account.
     */
    event SpecialParams(
        address indexed account,
        uint256 indexed newBasisPoints,
        uint256 newMinFee,
        uint256 newMaxFee
    );

    /**
     * @dev Emitted when fees are moved to fees collector
     */
    event Fee(address indexed _feesCollector, uint256 indexed fee);

    /**
     * @dev Emitted when `_feesCollector` parameter have been changed
     */
    event FeesCollector(
        address indexed _feesCollector,
        address indexed newFeesCollector
    );
}

// File: contracts/@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol

pragma solidity ^0.5.0;


/**
 * @dev Optional functions from the BEP20 standard.
 */
contract BEP20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of
     * these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name, string memory symbol, uint8 decimals)
        public
    {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei.
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

// File: contracts/@openzeppelin/contracts/token/ERC20/ERC20Fee.sol

pragma solidity ^0.5.0;


/**
 * @dev Implementation of the {IERC20Fee} interface.
 */
contract BEP20Fee is Context, Ownable, IERC20, IERC20Fee, BEP20Detailed {
    using SafeMath for uint256;

    struct SpecialFee {
        uint256 basisPointsRate;
        uint256 minimumFee;
        uint256 maximumFee;
        bool isActive;
    }

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => SpecialFee) private _fees;

    uint256 private _totalSupply;

    // additional variables for use if transaction fees ever became necessary
    uint256 private _basisPointsRate;
    uint256 private _minimumFee;
    uint256 private _maximumFee;
    uint256 private _denominator;
    address private _feesCollector;

    uint256 public availableFee;
    mapping(address => bool) public isInWhiteList;
    bool public isOpened = false;

    /**
     * @dev Sets the values for `name`, `symbol`, `decimals`,
     * `_basisPointsRate`, `_maximumFee`, `_feesCollector`
     * and `_denominator`
     * @param name The name of the token
     * @param symbol The symbol of the token
     * @param decimals The number of decimals the token uses
     * @notice `name`, `symbol`, `decimals` and _denominator
     * values are immutable: they can only be set once during construction
     */
    constructor(string memory name, string memory symbol, uint8 decimals)
        public
        BEP20Detailed(name, symbol, decimals)
    {
        _basisPointsRate = 0;
        _maximumFee = 0;
        _feesCollector = _msgSender();
        _denominator = 10000;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20Fee-basisPointsRate}.
     */
    function basisPointsRate() public view returns (uint256) {
        return _basisPointsRate;
    }

    /**
     * @dev See {IERC20Fee-minimumFee}.
     */
    function minimumFee() public view returns (uint256) {
        return _minimumFee;
    }

    /**
     * @dev See {IERC20Fee-maximumFee}.
     */
    function maximumFee() public view returns (uint256) {
        return _maximumFee;
    }

    /**
     * @dev See {IERC20Fee-denominator}.
     */
    function denominator() public view returns (uint256) {
        return _denominator;
    }

    /**
     * @dev See {IERC20-fees}.
     */
    function fees(address account)
        public
        view
        returns (uint256, uint256, uint256, bool)
    {
        return (
            _fees[account].basisPointsRate,
            _fees[account].minimumFee,
            _fees[account].maximumFee,
            _fees[account].isActive
        );
    }

    /**
     * @dev See {IERC20Fee-feesCollector}.
     */
    function feesCollector() public view returns (address) {
        return _feesCollector;
    }

    /**
     * @dev See {IERC20Fee-setFeesCollector}.
     */
    function setFeesCollector(address newFeesCollector)
        public
        onlyOwner
        returns (bool)
    {
        require(
            newFeesCollector != address(0),
            "SetFeesCollector: new fees collector is the zero address"
        );
        emit FeesCollector(_feesCollector, newFeesCollector);
        _feesCollector = newFeesCollector;
        return true;
    }

    /**
     * @dev See {IERC20Fee-setParams}.
     */
    function setParams(
        uint256 newBasisPoints,
        uint256 newMinFee,
        uint256 newMaxFee
    ) external onlyOwner returns (bool) {
        _basisPointsRate = newBasisPoints;
        _minimumFee = newMinFee;
        _maximumFee = newMaxFee;
        emit Params(newBasisPoints, newMinFee, newMaxFee);
        return true;
    }

    /**
     * @dev See {IERC20Fee-setSpecialParams}.
     */
    function setSpecialParams(
        address account,
        uint256 newBasisPoints,
        uint256 newMinFee,
        uint256 newMaxFee,
        bool state
    ) external onlyOwner returns (bool) {
        SpecialFee memory newSpecialParams = SpecialFee({
            basisPointsRate: newBasisPoints,
            minimumFee: newMinFee,
            maximumFee: newMaxFee,
            isActive: state
        });

        _fees[account] = newSpecialParams;
        emit SpecialParams(account, newBasisPoints, newMinFee, newMaxFee);
        return true;
    }

    /**
     * @dev Calculates fee for a specific`account`
     * @param account Sender account address
     * @param amount Amount of tokens to send
     * @return An uint256 value representing the account fee
     */
    function calculateFee(address account, uint256 amount)
        internal
        view
        returns (uint256)
    {
        (
            uint256 basisPoints,
            uint256 minFee,
            uint256 maxFee,
            bool active
        ) = fees(account);

        if (active) {
            uint256 fee = (amount.mul(basisPoints)).div(_denominator);

            if (fee < minFee) fee = minFee;
            else if (fee > maxFee) fee = maxFee;

            return fee;
        }

        uint256 fee = (amount.mul(_basisPointsRate)).div(_denominator);

        if (fee < _minimumFee) fee = _minimumFee;
        else if (fee > _maximumFee) fee = _maximumFee;

        return fee;
    }

    /**
     * @dev See {IERC20-transfer}.
     * Requirements:
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     * Requirements:
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {BEP20};
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount)
        public
        returns (bool)
    {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "BEP20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     * Emits an {Approval} event indicating the updated allowance.
     * Requirements:
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     * Emits an {Approval} event indicating the updated allowance.
     * Requirements:
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "BEP20: decreased allowance below zero"
            )
        );
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     * Emits a {Transfer} event.
     * Requirements:
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount)
        internal
    {
        require(
            sender != address(0),
            "BEP20Fee: transfer from the zero address"
        );
        require(
            recipient != address(0),
            "BEP20Fee: transfer to the zero address"
        );
        require(
            isOpened == true || isInWhiteList[sender] == true || isInWhiteList[recipient] == true,
            "BEP20Fee: not allowed transfer"
        );

        uint256 fee = calculateFee(sender, amount);

        require(amount >= fee, "BEP20Fee: amount less then fee");

        _balances[sender] = _balances[sender].sub(
            amount,
            "BEP20Fee: transfer amount exceeds balance"
        );

        uint256 sendAmount = amount.sub(fee);

        _balances[recipient] = _balances[recipient].add(sendAmount);
        emit Transfer(sender, recipient, sendAmount);

        if (fee > 0) {
            availableFee = availableFee.add(fee);
            emit Fee(address(0), fee);
        }
    }

    function withdrawFee() external onlyOwner {
        _balances[_msgSender()] = _balances[_msgSender()].add(availableFee);
        availableFee = 0;
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     * Emits a {Transfer} event with `from` set to the zero address.
     * Requirements
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "BEP20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     * Emits a {Transfer} event with `to` set to the zero address.
     * Requirements
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "BEP20: burn from the zero address");

        _balances[account] = _balances[account].sub(
            amount,
            "BEP20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     * Emits an {Approval} event.
     * Requirements:
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     * See {_burn} and {_approve}.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(
            account,
            _msgSender(),
            _allowances[account][_msgSender()].sub(
                amount,
                "BEP20: burn amount exceeds allowance"
            )
        );
    }
}

// File: contracts/StableCoin.sol

pragma solidity ^0.5.0;


contract Hope is BEP20Fee {
    using Roles for Roles.Role;

    Roles.Role private _burners;

    /**
     * @dev Emitted when account get access to {BurnerRole}
     */
    event BurnerAdded(address indexed account);

    /**
     * @dev Emitted when an account loses access to the {BurnerRole}
     */
    event BurnerRemoved(address indexed account);

    /**
     * @dev Throws if caller does not have the {BurnerRole}
     */
    modifier onlyBurner() {
        require(
            isBurner(_msgSender()),
            "BurnerRole: caller does not have the Burner role"
        );
        _;
    }

    /**
     * @dev Sets the values for `name`, `symbol`, `decimals`
     * and gives owner {MinterRole} and {BurnerRole}
     * @param name The name of the token
     * @param symbol The symbol of the token
     * @param decimals The number of decimals the token uses
     * @notice `name`, `symbol` and `decimals`
     * values are immutable: they can only be set once during construction
     */
    constructor(string memory name, string memory symbol, uint8 decimals)
        public
        BEP20Fee(name, symbol, decimals)
    {
        _mint(_msgSender(), (10 ** 9) * (10**uint256(decimals)));
        isInWhiteList[_msgSender()] = true;
        _addBurner(_msgSender());
    }

    /**
     * @dev Give an account access to {BurnerRole}
     * @param account Account address
     */
    function addBurner(address account) external onlyOwner {
        _addBurner(account);
    }

    /**
     * @dev Remove an account's access to {BurnerRole}
     * @param account Account address
     */
    function renounceBurner(address account) external onlyOwner {
        _removeBurner(account);
    }

    /**
     * @dev Check if an account has {BurnerRole}
     * @param account Account address
     * @return bool
     */
    function isBurner(address account) public view returns (bool) {
        return _burners.has(account);
    }

    /**
     * @dev Destroys `amount` of tokens from the caller. See {BEP20-_mint}
     * @param amount Amount to burn
     * @notice Requirements:
     * the caller must have the {BurnerRole}
     * @return bool
     */
    function burn(uint256 amount) external onlyBurner returns (bool) {
        _burn(_msgSender(), amount);
    }

    function _addBurner(address account) internal {
        _burners.add(account);
        emit BurnerAdded(account);
    }

    function _removeBurner(address account) internal {
        _burners.remove(account);
        emit BurnerRemoved(account);
    }

    function openTransfers() external onlyOwner {
        isOpened = true;
    }

    function changeWhiteList(address account, bool value) external onlyOwner {
        isInWhiteList[account] = value;
    }
}

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"BurnerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"BurnerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_feesCollector","type":"address"},{"indexed":true,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"Fee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_feesCollector","type":"address"},{"indexed":true,"internalType":"address","name":"newFeesCollector","type":"address"}],"name":"FeesCollector","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":"newBasisPoints","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newMinFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newMaxFee","type":"uint256"}],"name":"Params","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"newBasisPoints","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMinFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMaxFee","type":"uint256"}],"name":"SpecialParams","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBurner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"availableFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basisPointsRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"changeWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"fees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feesCollector","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBurner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isInWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOpened","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maximumFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"openTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"renounceBurner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newFeesCollector","type":"address"}],"name":"setFeesCollector","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newBasisPoints","type":"uint256"},{"internalType":"uint256","name":"newMinFee","type":"uint256"},{"internalType":"uint256","name":"newMaxFee","type":"uint256"}],"name":"setParams","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"newBasisPoints","type":"uint256"},{"internalType":"uint256","name":"newMinFee","type":"uint256"},{"internalType":"uint256","name":"newMaxFee","type":"uint256"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setSpecialParams","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052600f805460ff191690553480156200001b57600080fd5b506040516200237c3803806200237c833981810160405260608110156200004157600080fd5b81019080805160405193929190846401000000008211156200006257600080fd5b9083019060208201858111156200007857600080fd5b82516401000000008111828201881017156200009357600080fd5b82525081516020918201929091019080838360005b83811015620000c2578181015183820152602001620000a8565b50505050905090810190601f168015620000f05780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011457600080fd5b9083019060208201858111156200012a57600080fd5b82516401000000008111828201881017156200014557600080fd5b82525081516020918201929091019080838360005b83811015620001745781810151838201526020016200015a565b50505050905090810190601f168015620001a25780820380516001836020036101000a031916815260200191505b5060405260200151915083905082828282826000620001c96001600160e01b036200032316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350825162000228906001906020860190620005d7565b5081516200023e906002906020850190620005d7565b506003805460ff191660ff92909216919091179055505060006008819055600a556200026962000323565b600c80546001600160a01b0319166001600160a01b03929092169190911790555050612710600b5550620002bc620002a062000323565b633b9aca0060ff8416600a0a026001600160e01b036200032816565b6001600e6000620002d56001600160e01b036200032316565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200031a6200030b62000323565b6001600160e01b036200042d16565b50505062000679565b335b90565b6001600160a01b03821662000384576040805162461bcd60e51b815260206004820152601f60248201527f42455032303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620003a0816007546200047f60201b620014411790919060201c565b6007556001600160a01b038216600090815260046020908152604090912054620003d5918390620014416200047f821b17901c565b6001600160a01b03831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b62000448816010620004e160201b620018971790919060201c565b6040516001600160a01b038216907f86e57fd2b90329052917118de7c3f521f400d439b9650deaa906a25b08b9456090600090a250565b600082820183811015620004da576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b620004f682826001600160e01b036200056e16565b1562000549576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620005b75760405162461bcd60e51b81526004018080602001828103825260228152602001806200235a6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200061a57805160ff19168380011785556200064a565b828001600101855582156200064a579182015b828111156200064a5782518255916020019190600101906200062d565b50620006589291506200065c565b5090565b6200032591905b8082111562000658576000815560010162000663565b611cd180620006896000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806378c19a431161011a578063a9059cbb116100ad578063dd644f721161007c578063dd644f72146105d0578063e941fa78146105d8578063f2fde38b146105e0578063f44637ba14610606578063faaebd211461062c57610206565b8063a9059cbb1461052e578063cbe66d0a1461055a578063d065a29914610562578063dd62ed3e146105a257610206565b806396bfc229116100e957806396bfc229146104cc57806396ce0795146104f25780639cf160f6146104fa578063a457c2d71461050257610206565b806378c19a43146104905780638da5cb5b146104985780638f32d59b146104bc57806395d89b41146104c457610206565b8063395093511161019d5780635a0ce6761161016c5780635a0ce6761461040b578063660145be14610434578063692aa97e1461045a57806370a0823114610462578063715018a61461048857610206565b8063395093511461036c57806339b417b71461039857806342966c68146103c85780634334614a146103e557610206565b806323b872dd116101d957806323b872dd146102ea578063313ce56714610320578063353907141461033e578063373071f21461034657610206565b806306fdde031461020b578063095ea7b31461028857806318160ddd146102c85780631a7626e7146102e2575b600080fd5b61021361067a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024d578181015183820152602001610235565b50505050905090810190601f16801561027a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b46004803603604081101561029e57600080fd5b506001600160a01b03813516906020013561070f565b604080519115158252519081900360200190f35b6102d061072d565b60408051918252519081900360200190f35b6102d0610733565b6102b46004803603606081101561030057600080fd5b506001600160a01b03813581169160208101359091169060400135610739565b6103286107c6565b6040805160ff9092168252519081900360200190f35b6102d06107cf565b6102b46004803603602081101561035c57600080fd5b50356001600160a01b03166107d5565b6102b46004803603604081101561038257600080fd5b506001600160a01b0381351690602001356108c1565b6103c6600480360360408110156103ae57600080fd5b506001600160a01b0381351690602001351515610915565b005b6102b4600480360360208110156103de57600080fd5b5035610987565b6102b4600480360360208110156103fb57600080fd5b50356001600160a01b03166109e5565b6102b46004803603606081101561042157600080fd5b50803590602081013590604001356109f8565b6103c66004803603602081101561044a57600080fd5b50356001600160a01b0316610a89565b6102b4610adc565b6102d06004803603602081101561047857600080fd5b50356001600160a01b0316610ae5565b6103c6610b00565b6102d0610b91565b6104a0610b97565b604080516001600160a01b039092168252519081900360200190f35b6102b4610ba6565b610213610bca565b6102b4600480360360208110156104e257600080fd5b50356001600160a01b0316610c28565b6102d0610c3d565b6104a0610c43565b6102b46004803603604081101561051857600080fd5b506001600160a01b038135169060200135610c52565b6102b46004803603604081101561054457600080fd5b506001600160a01b038135169060200135610cc0565b6103c6610cd4565b6102b4600480360360a081101561057857600080fd5b506001600160a01b0381351690602081013590604081013590606081013590608001351515610d2a565b6102d0600480360360408110156105b857600080fd5b506001600160a01b0381358116916020013516610e2a565b6102d0610e55565b6103c6610e5b565b6103c6600480360360208110156105f657600080fd5b50356001600160a01b0316610f0a565b6103c66004803603602081101561061c57600080fd5b50356001600160a01b0316610f5a565b6106526004803603602081101561064257600080fd5b50356001600160a01b0316610faa565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b600061072361071c610fde565b8484610fe2565b5060015b92915050565b60075490565b60095490565b60006107468484846110ce565b6107bc84610752610fde565b6107b785604051806060016040528060288152602001611b16602891396001600160a01b038a16600090815260056020526040812090610790610fde565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6113aa16565b610fe2565b5060019392505050565b60035460ff1690565b600a5490565b60006107df610ba6565b61081e576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b6001600160a01b0382166108635760405162461bcd60e51b8152600401808060200182810382526038815260200180611aae6038913960400191505060405180910390fd5b600c546040516001600160a01b038085169216907faa031270faa14f493eb7abc5f320365ba17b6cee9ff519872743406dbbc77c4490600090a350600c80546001600160a01b0319166001600160a01b03831617905560015b919050565b60006107236108ce610fde565b846107b785600560006108df610fde565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61144116565b61091d610ba6565b61095c576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610999610994610fde565b6109e5565b6109d45760405162461bcd60e51b8152600401808060200182810382526030815260200180611ae66030913960400191505060405180910390fd5b6108bc6109df610fde565b836114a2565b600061072760108363ffffffff61159e16565b6000610a02610ba6565b610a41576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b60088490556009839055600a8290556040518290849086907fd16858b87f79d06c5d7f4cdf7f0943a3b343a9eb149c10ec26e7bcaae7f19bc590600090a45060019392505050565b610a91610ba6565b610ad0576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b610ad981611605565b50565b600f5460ff1681565b6001600160a01b031660009081526004602052604090205490565b610b08610ba6565b610b47576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600d5481565b6000546001600160a01b031690565b600080546001600160a01b0316610bbb610fde565b6001600160a01b031614905090565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156107055780601f106106da57610100808354040283529160200191610705565b600e6020526000908152604090205460ff1681565b600b5490565b600c546001600160a01b031690565b6000610723610c5f610fde565b846107b785604051806060016040528060258152602001611bc26025913960056000610c89610fde565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6113aa16565b6000610723610ccd610fde565b84846110ce565b610cdc610ba6565b610d1b576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b600f805460ff19166001179055565b6000610d34610ba6565b610d73576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b610d7b611a13565b50604080516080810182528681526020808201878152828401878152861515606085019081526001600160a01b038c16600081815260068652879020865181559351600185015591516002840155516003909201805460ff191692151592909217909155835188815291820187905283519293899391927f4911f2dd30c062d375fa4a40dff10ef4d0a8f9334fb6752076e27747f3ba2e88929081900390910190a35060019695505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60085490565b610e63610ba6565b610ea2576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b610eda600d5460046000610eb4610fde565b6001600160a01b031681526020810191909152604001600020549063ffffffff61144116565b60046000610ee6610fde565b6001600160a01b031681526020810191909152604001600090812091909155600d55565b610f12610ba6565b610f51576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b610ad98161164d565b610f62610ba6565b610fa1576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b610ad9816116ed565b6001600160a01b03166000908152600660205260409020805460018201546002830154600390930154919390929160ff1690565b3390565b6001600160a01b0383166110275760405162461bcd60e51b8152600401808060200182810382526024815260200180611a646024913960400191505060405180910390fd5b6001600160a01b03821661106c5760405162461bcd60e51b8152600401808060200182810382526022815260200180611c2a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166111135760405162461bcd60e51b8152600401808060200182810382526028815260200180611c756028913960400191505060405180910390fd5b6001600160a01b0382166111585760405162461bcd60e51b8152600401808060200182810382526026815260200180611a3e6026913960400191505060405180910390fd5b600f5460ff1615156001148061118b57506001600160a01b0383166000908152600e602052604090205460ff1615156001145b806111b357506001600160a01b0382166000908152600e602052604090205460ff1615156001145b611204576040805162461bcd60e51b815260206004820152601e60248201527f42455032304665653a206e6f7420616c6c6f776564207472616e736665720000604482015290519081900360640190fd5b60006112108483611735565b905080821015611267576040805162461bcd60e51b815260206004820152601e60248201527f42455032304665653a20616d6f756e74206c657373207468656e206665650000604482015290519081900360640190fd5b6112aa82604051806060016040528060298152602001611c4c602991396001600160a01b038716600090815260046020526040902054919063ffffffff6113aa16565b6001600160a01b0385166000908152600460205260408120919091556112d6838363ffffffff6117ee16565b6001600160a01b038516600090815260046020526040902054909150611302908263ffffffff61144116565b6001600160a01b0380861660008181526004602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a381156113a357600d54611372908363ffffffff61144116565b600d5560405182906000907f7bd3aa7d673767f759ebf216e7f6c12844986c661ae6e0f1d988cf7eb7394d1d908290a35b5050505050565b600081848411156114395760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113fe5781810151838201526020016113e6565b50505050905090810190601f16801561142b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561149b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166114e75760405162461bcd60e51b8152600401808060200182810382526021815260200180611be76021913960400191505060405180910390fd5b61152a81604051806060016040528060228152602001611c08602291396001600160a01b038516600090815260046020526040902054919063ffffffff6113aa16565b6001600160a01b038316600090815260046020526040902055600754611556908263ffffffff6117ee16565b6007556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006001600160a01b0382166115e55760405162461bcd60e51b8152600401808060200182810382526022815260200180611ba06022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61161660108263ffffffff61183016565b6040516001600160a01b038216907f90eabbc0c667db2a5029ed6bc0f5fe9f356d11684a4ca9fcfaec0e53f12b9c8e90600090a250565b6001600160a01b0381166116925760405162461bcd60e51b8152600401808060200182810382526026815260200180611a886026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6116fe60108263ffffffff61189716565b6040516001600160a01b038216907f86e57fd2b90329052917118de7c3f521f400d439b9650deaa906a25b08b9456090600090a250565b600080600080600061174687610faa565b935093509350935080156117a257600b5460009061177a9061176e898863ffffffff61191816565b9063ffffffff61197116565b90508381101561178b575082611796565b828111156117965750815b94506107279350505050565b60006117bf600b5461176e6008548a61191890919063ffffffff16565b90506009548110156117d457506009546117e3565b600a548111156117e35750600a545b979650505050505050565b600061149b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113aa565b61183a828261159e565b6118755760405162461bcd60e51b8152600401808060200182810382526021815260200180611b3e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6118a1828261159e565b156118f3576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60008261192757506000610727565b8282028284828161193457fe5b041461149b5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b5f6021913960400191505060405180910390fd5b600061149b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836119fd5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156113fe5781810151838201526020016113e6565b506000838581611a0957fe5b0495945050505050565b6040518060800160405280600081526020016000815260200160008152602001600015158152509056fe42455032304665653a207472616e7366657220746f20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737353657446656573436f6c6c6563746f723a206e6577206665657320636f6c6c6563746f7220697320746865207a65726f20616464726573734275726e6572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204275726e657220726f6c6542455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f42455032303a206275726e2066726f6d20746865207a65726f206164647265737342455032303a206275726e20616d6f756e7420657863656564732062616c616e636542455032303a20617070726f766520746f20746865207a65726f206164647265737342455032304665653a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032304665653a207472616e736665722066726f6d20746865207a65726f2061646472657373a265627a7a723158204f1ed9641d877c68c9f83b96d07953e2aec35a3a388c84588fb039c1bc6b003e64736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000004486f7065000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004484f504500000000000000000000000000000000000000000000000000000000

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000004486f7065000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004484f504500000000000000000000000000000000000000000000000000000000

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 486f706500000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 484f504500000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

31782:2842:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31782:2842:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17534:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17534:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24935:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24935:152:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;20282:91;;;:::i;:::-;;;;;;;;;;;;;;;;20784:89;;;:::i;25543:426::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25543:426:0;;;;;;;;;;;;;;;;;:::i;18370:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20940:89;;;:::i;21801:400::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21801:400:0;-1:-1:-1;;;;;21801:400:0;;:::i;26346:283::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;26346:283:0;;;;;;;;:::i;34499:122::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;34499:122:0;;;;;;;;;;:::i;:::-;;34026:111;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34026:111:0;;:::i;33681:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33681:109:0;-1:-1:-1;;;;;33681:109:0;;:::i;22267:351::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22267:351:0;;;;;;;;;;;;:::i;33444:101::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33444:101:0;-1:-1:-1;;;;;33444:101:0;;:::i;19450:28::-;;;:::i;20436:110::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20436:110:0;-1:-1:-1;;;;;20436:110:0;;:::i;9581:140::-;;;:::i;19364:27::-;;;:::i;8770:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;8770:79:0;;;;;;;;;;;;;;9136:94;;;:::i;17736:87::-;;;:::i;19398:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19398:45:0;-1:-1:-1;;;;;19398:45:0;;:::i;21097:91::-;;;:::i;21633:95::-;;;:::i;27100:383::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;27100:383:0;;;;;;;;:::i;24417:158::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24417:158:0;;;;;;;;:::i;34413:78::-;;;:::i;22691:574::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;22691:574:0;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24638:166::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24638:166:0;;;;;;;;;;:::i;20618:99::-;;;:::i;29041:155::-;;;:::i;9876:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9876:109:0;-1:-1:-1;;;;;9876:109:0;;:::i;33230:93::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33230:93:0;-1:-1:-1;;;;;33230:93:0;;:::i;21246:317::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21246:317:0;-1:-1:-1;;;;;21246:317:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17534:83;17604:5;17597:12;;;;;;;;-1:-1:-1;;17597:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17571:13;;17597:12;;17604:5;;17597:12;;17604:5;17597:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17534:83;:::o;24935:152::-;25001:4;25018:39;25027:12;:10;:12::i;:::-;25041:7;25050:6;25018:8;:39::i;:::-;-1:-1:-1;25075:4:0;24935:152;;;;;:::o;20282:91::-;20353:12;;20282:91;:::o;20784:89::-;20854:11;;20784:89;:::o;25543:426::-;25650:4;25672:36;25682:6;25690:9;25701:6;25672:9;:36::i;:::-;25719:220;25742:6;25763:12;:10;:12::i;:::-;25790:138;25846:6;25790:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25790:19:0;;;;;;:11;:19;;;;;;25810:12;:10;:12::i;:::-;-1:-1:-1;;;;;25790:33:0;;;;;;;;;;;;-1:-1:-1;25790:33:0;;;:138;;:37;:138;:::i;:::-;25719:8;:220::i;:::-;-1:-1:-1;25957:4:0;25543:426;;;;;:::o;18370:83::-;18436:9;;;;18370:83;:::o;20940:89::-;21010:11;;20940:89;:::o;21801:400::-;21906:4;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21950:30:0;;21928:136;;;;-1:-1:-1;;;21928:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22094:14;;22080:47;;-1:-1:-1;;;;;22080:47:0;;;;22094:14;;22080:47;;22094:14;;22080:47;-1:-1:-1;22138:14:0;:33;;-1:-1:-1;;;;;;22138:33:0;-1:-1:-1;;;;;22138:33:0;;;;;-1:-1:-1;9039:1:0;21801:400;;;:::o;26346:283::-;26444:4;26466:133;26489:12;:10;:12::i;:::-;26516:7;26538:50;26577:10;26538:11;:25;26550:12;:10;:12::i;:::-;-1:-1:-1;;;;;26538:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;26538:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;34499:122::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34583:22:0;;;;;;;;:13;:22;;;;;:30;;-1:-1:-1;;34583:30:0;;;;;;;;;;34499:122::o;34026:111::-;34085:4;32291:22;32300:12;:10;:12::i;:::-;32291:8;:22::i;:::-;32269:120;;;;-1:-1:-1;;;32269:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34102:27;34108:12;:10;:12::i;:::-;34122:6;34102:5;:27::i;33681:109::-;33737:4;33761:21;:8;33774:7;33761:21;:12;:21;:::i;22267:351::-;22410:4;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;22427:16;:33;;;22471:11;:23;;;22505:11;:23;;;22544:44;;22519:9;;22485;;22446:14;;22544:44;;-1:-1:-1;;22544:44:0;-1:-1:-1;22606:4:0;22267:351;;;;;:::o;33444:101::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;33515:22;33529:7;33515:13;:22::i;:::-;33444:101;:::o;19450:28::-;;;;;;:::o;20436:110::-;-1:-1:-1;;;;;20520:18:0;20493:7;20520:18;;;:9;:18;;;;;;;20436:110::o;9581:140::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;9680:1;9664:6;;9643:40;;-1:-1:-1;;;;;9664:6:0;;;;9643:40;;9680:1;;9643:40;9711:1;9694:19;;-1:-1:-1;;;;;;9694:19:0;;;9581:140::o;19364:27::-;;;;:::o;8770:79::-;8808:7;8835:6;-1:-1:-1;;;;;8835:6:0;8770:79;:::o;9136:94::-;9176:4;9216:6;;-1:-1:-1;;;;;9216:6:0;9200:12;:10;:12::i;:::-;-1:-1:-1;;;;;9200:22:0;;9193:29;;9136:94;:::o;17736:87::-;17808:7;17801:14;;;;;;;-1:-1:-1;;17801:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17775:13;;17801:14;;17808:7;;17801:14;;17808:7;17801:14;;;;;;;;;;;;;;;;;;;;;;;;19398:45;;;;;;;;;;;;;;;:::o;21097:91::-;21168:12;;21097:91;:::o;21633:95::-;21706:14;;-1:-1:-1;;;;;21706:14:0;21633:95;:::o;27100:383::-;27203:4;27225:228;27248:12;:10;:12::i;:::-;27275:7;27297:145;27354:15;27297:145;;;;;;;;;;;;;;;;;:11;:25;27309:12;:10;:12::i;:::-;-1:-1:-1;;;;;27297:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;27297:25:0;;;:34;;;;;;;;;;;:145;;:38;:145;:::i;24417:158::-;24486:4;24503:42;24513:12;:10;:12::i;:::-;24527:9;24538:6;24503:9;:42::i;34413:78::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;34468:8;:15;;-1:-1:-1;;34468:15:0;34479:4;34468:15;;;34413:78::o;22691:574::-;22888:4;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;22905:34;;:::i;:::-;-1:-1:-1;22942:171:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23126:14:0;;-1:-1:-1;23126:14:0;;;:5;:14;;;;;:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23126:33:0;;;;;;;;;;;23175:60;;;;;;;;;;;;;22942:171;;;;23126:14;;23175:60;;;;;;;;;;;-1:-1:-1;23253:4:0;;22691:574;-1:-1:-1;;;;;;22691:574:0:o;24638:166::-;-1:-1:-1;;;;;24769:18:0;;;24737:7;24769:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;24638:166::o;20618:99::-;20693:16;;20618:99;:::o;29041:155::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;29120:41;29148:12;;29120:9;:23;29130:12;:10;:12::i;:::-;-1:-1:-1;;;;;29120:23:0;;;;;;;;;;;;-1:-1:-1;29120:23:0;;;:41;:27;:41;:::i;:::-;29094:9;:23;29104:12;:10;:12::i;:::-;-1:-1:-1;;;;;29094:23:0;;;;;;;;;;;;-1:-1:-1;29094:23:0;;;:67;;;;29172:12;:16;29041:155::o;9876:109::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;9949:28;9968:8;9949:18;:28::i;33230:93::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;33296:19;33307:7;33296:10;:19::i;21246:317::-;-1:-1:-1;;;;;21396:14:0;21325:7;21396:14;;;:5;:14;;;;;:30;;21441:25;;;;21481;;;;21521:23;;;;;21396:30;;21441:25;;21481;21521:23;;;21246:317::o;1982:98::-;2062:10;1982:98;:::o;30862:338::-;-1:-1:-1;;;;;30956:19:0;;30948:68;;;;-1:-1:-1;;;30948:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31035:21:0;;31027:68;;;;-1:-1:-1;;;31027:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31108:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;31160:32;;;;;;;;;;;;;;;;;30862:338;;;:::o;27941:1092::-;-1:-1:-1;;;;;28067:20:0;;28045:110;;;;-1:-1:-1;;;28045:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28188:23:0;;28166:111;;;;-1:-1:-1;;;28166:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28310:8;;;;:16;;:8;:16;;:49;;-1:-1:-1;;;;;;28330:21:0;;;;;;:13;:21;;;;;;;;:29;;:21;:29;28310:49;:85;;;-1:-1:-1;;;;;;28363:24:0;;;;;;:13;:24;;;;;;;;:32;;:24;:32;28310:85;28288:165;;;;;-1:-1:-1;;;28288:165:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28466:11;28480:28;28493:6;28501;28480:12;:28::i;:::-;28466:42;;28539:3;28529:6;:13;;28521:56;;;;;-1:-1:-1;;;28521:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28610:111;28646:6;28610:111;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28610:17:0;;;;;;:9;:17;;;;;;;:111;;:21;:111;:::i;:::-;-1:-1:-1;;;;;28590:17:0;;;;;;:9;:17;;;;;:131;;;;28755:15;:6;28766:3;28755:15;:10;:15;:::i;:::-;-1:-1:-1;;;;;28806:20:0;;;;;;:9;:20;;;;;;28734:36;;-1:-1:-1;28806:36:0;;28734;28806;:24;:36;:::i;:::-;-1:-1:-1;;;;;28783:20:0;;;;;;;:9;:20;;;;;;;;;:59;;;;28858:39;;;;;;;28783:20;;28858:39;;;;;;;;;;;;;28914:7;;28910:116;;28953:12;;:21;;28970:3;28953:21;:16;:21;:::i;:::-;28938:12;:36;28994:20;;29010:3;;29006:1;;28994:20;;29006:1;;28994:20;28910:116;27941:1092;;;;;:::o;4110:224::-;4223:7;4264:12;4256:6;;;;4248:29;;;;-1:-1:-1;;;4248:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4248:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4300:5:0;;;4110:224::o;3221:181::-;3279:7;3311:5;;;3335:6;;;;3327:46;;;;;-1:-1:-1;;;3327:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3393:1;3221:181;-1:-1:-1;;;3221:181:0:o;30069:385::-;-1:-1:-1;;;;;30145:21:0;;30137:67;;;;-1:-1:-1;;;30137:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30238:105;30275:6;30238:105;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30238:18:0;;;;;;:9;:18;;;;;;;:105;;:22;:105;:::i;:::-;-1:-1:-1;;;;;30217:18:0;;;;;;:9;:18;;;;;:126;30369:12;;:24;;30386:6;30369:24;:16;:24;:::i;:::-;30354:12;:39;30409:37;;;;;;;;30435:1;;-1:-1:-1;;;;;30409:37:0;;;;;;;;;;;;30069:385;;:::o;874:235::-;973:4;-1:-1:-1;;;;;1003:21:0;;995:68;;;;-1:-1:-1;;;995:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1081:20:0;:11;:20;;;;;;;;;;;;;;;874:235::o;34275:130::-;34335:24;:8;34351:7;34335:24;:15;:24;:::i;:::-;34375:22;;-1:-1:-1;;;;;34375:22:0;;;;;;;;34275:130;:::o;10091:266::-;-1:-1:-1;;;;;10179:22:0;;10157:110;;;;-1:-1:-1;;;10157:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10304:6;;;10283:38;;-1:-1:-1;;;;;10283:38:0;;;;10304:6;;;10283:38;;;10332:6;:17;;-1:-1:-1;;;;;;10332:17:0;-1:-1:-1;;;;;10332:17:0;;;;;;;;;;10091:266::o;34145:122::-;34202:21;:8;34215:7;34202:21;:12;:21;:::i;:::-;34239:20;;-1:-1:-1;;;;;34239:20:0;;;;;;;;34145:122;:::o;23498:722::-;23603:7;23643:19;23677:14;23706;23735:11;23760:13;23765:7;23760:4;:13::i;:::-;23628:145;;;;;;;;23790:6;23786:220;;;23857:12;;23813:11;;23827:43;;23828:23;:6;23839:11;23828:23;:10;:23;:::i;:::-;23827:29;:43;:29;:43;:::i;:::-;23813:57;;23897:6;23891:3;:12;23887:80;;;-1:-1:-1;23911:6:0;23887:80;;;23947:6;23941:3;:12;23937:30;;;-1:-1:-1;23961:6:0;23937:30;23991:3;-1:-1:-1;23984:10:0;;-1:-1:-1;;;;23984:10:0;23786:220;24018:11;24032:48;24067:12;;24033:28;24044:16;;24033:6;:10;;:28;;;;:::i;24032:48::-;24018:62;;24103:11;;24097:3;:17;24093:96;;;-1:-1:-1;24122:11:0;;24093:96;;;24159:11;;24153:3;:17;24149:40;;;-1:-1:-1;24178:11:0;;24149:40;24209:3;23498:722;-1:-1:-1;;;;;;;23498:722:0:o;3661:136::-;3719:7;3746:43;3750:1;3753;3746:43;;;;;;;;;;;;;;;;;:3;:43::i;596:183::-;676:18;680:4;686:7;676:3;:18::i;:::-;668:64;;;;-1:-1:-1;;;668:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;743:20:0;766:5;743:20;;;;;;;;;;;:28;;-1:-1:-1;;743:28:0;;;596:183::o;338:178::-;416:18;420:4;426:7;416:3;:18::i;:::-;415:19;407:63;;;;;-1:-1:-1;;;407:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;481:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;481:27:0;504:4;481:27;;;338:178::o;4569:471::-;4627:7;4872:6;4868:47;;-1:-1:-1;4902:1:0;4895:8;;4868:47;4939:5;;;4943:1;4939;:5;:1;4963:5;;;;;:10;4955:56;;;;-1:-1:-1;;;4955:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5492:132;5550:7;5577:39;5581:1;5584;5577:39;;;;;;;;;;;;;;;;;6243:7;6350:12;6343:5;6335:28;;;;-1:-1:-1;;;6335:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;6335:28:0;;6374:9;6390:1;6386;:5;;;;;;;6130:377;-1:-1:-1;;;;;6130:377:0:o;31782:2842::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://4f1ed9641d877c68c9f83b96d07953e2aec35a3a388c84588fb039c1bc6b003e
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.