Contract 0x48A65135c3a5d4ecC0b357b94db433aC528a26A9

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf8c1ac9fb23c453c74d215d7b59133b66fe506026941f2edec92cffc138f4147Claim Tokens Fro...105947292021-12-05 4:23:3949 mins ago0xec6be5985f8d4c2eb285a4cf9a8d8de42e9ece6b IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.00015817052.25
0x159455c218d3dbd8af188dce72e078d8a7db94dd6d142a0378661874ed05c5b1Claim Tokens Fro...105945332021-12-05 4:13:5159 mins ago0x9ff2b64968b9ea71f0e0e422013e4e423d10aac0 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0002460433.5
0xc58a93c92df409aac2e74e2b92c390d3f2c80c3a0d87e3832d947bd159e0c381Claim Tokens Fro...105944222021-12-05 4:08:181 hr 4 mins ago0x824b30ae369cae203e56b80e229f5ace5f30a34c IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0002184952.5
0x15e1010a8bb3e550e8da983e21422822eed4802b0f8a8fbfcf20c5c17fcb8205Claim Tokens Fro...105943342021-12-05 4:03:541 hr 9 mins ago0x76992d09f272e0b77173f2def0974a593164cac2 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0x7f673418113d0634ff27f6c8066e984ce608ae18c65915c7f662aefe33ec86ffClaim Tokens Fro...105943342021-12-05 4:03:541 hr 9 mins ago0x97429f854220a5e3dae4f0489c4df352e63ff6d6 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.00018980462.7
0x9553f4a7953c29db7280e7ffcb05163bbc13b9ec84fd90d0c7ee552e603e80c9Claim Tokens Fro...105938752021-12-05 3:40:571 hr 32 mins ago0x64bedd4a34599d3ec327a65a6deef0b4a7f47ab7 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0x0789e19562886d6ff4d47862deffbc2278634330979f68bb624858db0d4fba5aClaim Tokens Fro...105937422021-12-05 3:34:181 hr 38 mins ago0xb648892e87f4fe8af20d2ba659499ac6c9e5a761 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0x45078eab16e551a802d5a6f0e0e392c1f418fe4e6bea3d0aaf473344113b3906Claim Tokens Fro...105927562021-12-05 2:45:002 hrs 28 mins ago0xe92d5e359dceccac4a8bddbeb0c46fe667983be8 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0x4e7c8b7154c02f8e4aaab54c77d27662ac3574868f8421c255411ca5a2689a3fClaim Tokens Fro...105922222021-12-05 2:18:182 hrs 54 mins ago0x5f5dbac80a790bb5828cd6e2b93ed5a94c2a9a88 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0xa76340368cfcacdfb7f37499247f4139df83695e299094c57e2211b4695d24ddClaim Tokens Fro...105919342021-12-05 2:03:543 hrs 9 mins ago0x3a62084a308347076b334458069a6b4a300c658a IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0x08a899adcd50dbf3ba3132b3172a12940d32f4be0299886665a3528be424badaClaim Tokens Fro...105919252021-12-05 2:03:273 hrs 9 mins ago0xae5fefb78696dbe13330e4bb18f8e6f97e55e094 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0x1f4165da3db1fbac24f3d7f4887033c1e3826a304817cb15e0a0ce1a33154ee2Claim Tokens Fro...105912132021-12-05 1:27:513 hrs 45 mins ago0xa5572567af0e47015e8581e522284adab3cf6485 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0x2ae8a911a8d9597415ccb513ca10112393687f21e47e2336c581fc5c75c24236Claim Tokens Fro...105909612021-12-05 1:15:153 hrs 57 mins ago0xba7bfd54d4202bf16ca65627d5eeef159bfae431 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001330052.5
0x6f300f199539d617dac0e7d71ea2e1803d488acd16ff486e6e832b4bfd8b41feClaim Tokens Fro...105909062021-12-05 1:12:304 hrs ago0xb3e7c32d363376ff35e1282fd1c98fa91e5e2214 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0xf496ffe2f76957471aca302b3405e094ed302bf71bfbcaf3949064ea9e5074d6Claim Tokens Fro...105908132021-12-05 1:07:514 hrs 5 mins ago0x8964d67cd34c9a71ed6f1ade47503ea6586c4e24 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0xd5e63a3e206297a5b1db7b8c75fc0a4919566e7dcbf2018ed9e93ec91d743f6eClaim Tokens Fro...105908012021-12-05 1:07:154 hrs 5 mins ago0x8286ab6210b77045ec550ef7c975b378599594f7 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0x97c3922b66fce999a4ee7bcb194e6a1c413cb5ee998edf7c289293ca72602524Claim Tokens Fro...105907062021-12-05 1:02:304 hrs 10 mins ago0x7537a2d288e71acdf017b788c23ff7e8b25e7d1a IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.00018980462.7
0xdec099546a40b5b9c8227f211af2705f891bbf1f23c004da16e5c65098536a1bClaim Tokens Fro...105904102021-12-05 0:47:424 hrs 25 mins ago0x1e7cc5f61079f81703682c70c432ed056ca34a79 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0x10b1cef752d0b6b9cbc8b4e8521272b6b467feff5e6ba3c3a7b7bf5b62e954dfClaim Tokens Fro...105901622021-12-05 0:35:184 hrs 37 mins ago0x27b271f3f4ff80040a7a04073ebe35d74918d110 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.00023597462.7
0x2846ae5677685a118e32f792c5e9505e2a00ea75065c180df475391fe57bd977Claim Tokens Fro...105899362021-12-05 0:24:004 hrs 49 mins ago0x7b23bd345186b609a0708882d4d8504c3e99c410 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.00015817052.25
0xf29ee65de56f5a764a363c8c2b36f61664b9ea327f13e8b96bf76ac21cd91e64Claim Tokens Fro...105898822021-12-05 0:21:184 hrs 51 mins ago0x3a7b936604bd1319fd1490590013b9f2586375a0 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0002184652.5
0xe62621a0631c7f25707fabd26bc5dd5cfb5542d03790bbdcf967d09c688c9f8dClaim Tokens Fro...105893832021-12-04 23:56:215 hrs 16 mins ago0x1ea3a3efa766c587c7bce31a3bedb70696dc195f IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
0x3c73db8db1d1c6853953e75d7291c2945841e8eb92a1c18a8bfe12dae1aeed3fClaim Tokens Fro...105891572021-12-04 23:45:035 hrs 28 mins ago0xbb014db9f0947885ee7ba5ecac2820e2b1cb1e25 IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.00015817052.25
0xd58602f8074f34dcbac096da3ec8edaf0622be09d6836e375a2441af3458e853Claim Tokens Fro...105889002021-12-04 23:32:125 hrs 41 mins ago0xef721d6a8f666e3b80bde8ee303ce37982b157de IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.000181022.5
0xca0785046d6998d2bcf7bdba89f6fc25bcbb2dc223330d4f1b9d3a09fa20d1e7Claim Tokens Fro...105885822021-12-04 23:16:185 hrs 56 mins ago0xf3cb57af926f3c7978750416bf4b256e94126d3c IN  0x48a65135c3a5d4ecc0b357b94db433ac528a26a90 HT0.0001757452.5
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xe08d7143abb379965d72e2a1b6a448e22181972fe725d497bbd1b3361d3a17f7105699762021-12-04 7:46:0021 hrs 27 mins ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router2.889552863247674075 HT
0xe08d7143abb379965d72e2a1b6a448e22181972fe725d497bbd1b3361d3a17f7105699762021-12-04 7:46:0021 hrs 27 mins ago Mdex: Router 0x48a65135c3a5d4ecc0b357b94db433ac528a26a92.889552863247674075 HT
0xe08d7143abb379965d72e2a1b6a448e22181972fe725d497bbd1b3361d3a17f7105699762021-12-04 7:46:0021 hrs 27 mins ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router2.896416456414463667 HT
0xe08d7143abb379965d72e2a1b6a448e22181972fe725d497bbd1b3361d3a17f7105699762021-12-04 7:46:0021 hrs 27 mins ago Mdex: Router 0x48a65135c3a5d4ecc0b357b94db433ac528a26a92.896416456414463667 HT
0xc9d3e99601e5e9bbc4607e848c6bf22e3a7ee49141434a9cfa31ffdb69dbb7c1105693142021-12-04 7:12:5422 hrs ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router2.981458154589832461 HT
0xc9d3e99601e5e9bbc4607e848c6bf22e3a7ee49141434a9cfa31ffdb69dbb7c1105693142021-12-04 7:12:5422 hrs ago Mdex: Router 0x48a65135c3a5d4ecc0b357b94db433ac528a26a92.981458154589832461 HT
0xdd6514c898d561381f36201d3ca59e20774453474c4260ffd05e544c32ffbe39105686542021-12-04 6:39:5422 hrs 33 mins ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router3.002713991451780135 HT
0xdd6514c898d561381f36201d3ca59e20774453474c4260ffd05e544c32ffbe39105686542021-12-04 6:39:5422 hrs 33 mins ago Mdex: Router 0x48a65135c3a5d4ecc0b357b94db433ac528a26a93.002713991451780135 HT
0xa767b4c4297ad2a0c243a1a7a408a5a5e39cd0a1ec219da527b8e0cee0d35bce105677242021-12-04 5:53:2423 hrs 19 mins ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router2.750807594376572918 HT
0xa767b4c4297ad2a0c243a1a7a408a5a5e39cd0a1ec219da527b8e0cee0d35bce105677242021-12-04 5:53:2423 hrs 19 mins ago Mdex: Router 0x48a65135c3a5d4ecc0b357b94db433ac528a26a92.750807594376572918 HT
0xcffda66b172b2cb611fa75969f8403971d39131e35259f6422c8e2e13c40c1ad105646382021-12-04 3:19:061 day 1 hr ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router2.805643735909197242 HT
0xcffda66b172b2cb611fa75969f8403971d39131e35259f6422c8e2e13c40c1ad105646382021-12-04 3:19:061 day 1 hr ago Mdex: Router 0x48a65135c3a5d4ecc0b357b94db433ac528a26a92.805643735909197242 HT
0x3ada588a5ab34488c9f129553979262ab7f7c7946a7dbca2119538d0357e4629105635602021-12-04 2:25:121 day 2 hrs ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router2.956990662616033323 HT
0x3ada588a5ab34488c9f129553979262ab7f7c7946a7dbca2119538d0357e4629105635602021-12-04 2:25:121 day 2 hrs ago Mdex: Router 0x48a65135c3a5d4ecc0b357b94db433ac528a26a92.956990662616033323 HT
0xd9e221c5d61c718f6b4d4a9fca11b4ee4aceeca413f4445197c506e7ee0a6ec1105631222021-12-04 2:03:181 day 3 hrs ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router2.955499446997373706 HT
0xd9e221c5d61c718f6b4d4a9fca11b4ee4aceeca413f4445197c506e7ee0a6ec1105631222021-12-04 2:03:181 day 3 hrs ago Mdex: Router 0x48a65135c3a5d4ecc0b357b94db433ac528a26a92.955499446997373706 HT
0x652c24ba8122982e6c08f257f2b9b2f60b3ef68b8236f7e93c8bf1c5495047ad105364282021-12-03 3:48:362 days 1 hr ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router2.985975603306169391 HT
0x652c24ba8122982e6c08f257f2b9b2f60b3ef68b8236f7e93c8bf1c5495047ad105364282021-12-03 3:48:362 days 1 hr ago Mdex: Router 0x48a65135c3a5d4ecc0b357b94db433ac528a26a92.985975603306169391 HT
0xf5bffb737e947e159be4ed4d421db4c99e814b0bf8bf8e0c407222b364c14d0d105049772021-12-02 1:36:033 days 3 hrs ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router2.944388414054607819 HT
0xf5bffb737e947e159be4ed4d421db4c99e814b0bf8bf8e0c407222b364c14d0d105049772021-12-02 1:36:033 days 3 hrs ago Mdex: Router 0x48a65135c3a5d4ecc0b357b94db433ac528a26a92.944388414054607819 HT
0xf63d220060c6c4e6f536ed7e978830b7edd28527ad1e2084ff1417d02eb849eb105030882021-12-02 0:01:363 days 5 hrs ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router2.899052992777452995 HT
0xf63d220060c6c4e6f536ed7e978830b7edd28527ad1e2084ff1417d02eb849eb105030882021-12-02 0:01:363 days 5 hrs ago Mdex: Router 0x48a65135c3a5d4ecc0b357b94db433ac528a26a92.899052992777452995 HT
0x41e1637717eca5adf7c62a3035bb6e8ea92e97b57c7f8eb38287cbffc57f312b105030782021-12-02 0:01:063 days 5 hrs ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router2.899052992777452995 HT
0x41e1637717eca5adf7c62a3035bb6e8ea92e97b57c7f8eb38287cbffc57f312b105030782021-12-02 0:01:063 days 5 hrs ago Mdex: Router 0x48a65135c3a5d4ecc0b357b94db433ac528a26a92.899052992777452995 HT
0xaafdd6d87e0779cd9563c86928625e408515214f351ca42fb37cc54a91c0bc20104837412021-12-01 7:54:153 days 21 hrs ago 0x48a65135c3a5d4ecc0b357b94db433ac528a26a9 Mdex: Router2.736393123759693832 HT
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Bonus

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2021-09-21
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.6.12;

interface IERC20 {

    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);
}

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WHT() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract Bonus {
    using SafeMath for uint256;
    
    uint256 public sortSize;
    uint256 public rewardCount;
    mapping (address => address) public _nextCandidate;
    mapping (address => mapping (uint256 => uint256)) private _tradingCount;
    address private constant GUARD = address(0xdEaD);
    
    uint256 public lastTradingTime;
    uint256 public countingStartTime;
    uint256 public constant INITIAL_INTERVAL = 1435 * 60; // 1435 minutes
    uint256 public constant SPRINT_INTERVAL = 5 * 60; // 5 minutes
    uint256 public remainingTime;
    uint256 private countingResetTime;
    address private candidateAddress;
    uint256 public minsalenum = 500 * 10**9 * 10**9; // 500 billion;
    uint256 public minsaleeth = 1 * 10**15;
    address public dev;
    
    uint256 private bonusMultiple = 9;
    mapping (address => uint256) private _nextClaimTime;
    bool claimEnable = false;
    
    IERC20 public tnae;
    IERC20 public usdt = IERC20(0xa71EdC38d189767582C38A3145b5873052c3e47a);
    IUniswapV2Router02 public uniswapV2Router;
    bool rewardSwap = false;
    
    constructor () public {
        uniswapV2Router = IUniswapV2Router02(0xED7d5F38C79115ca12fe6C0041abb22F0A06C300);
        _nextCandidate[GUARD] = GUARD;
        lastTradingTime = block.timestamp;
        countingStartTime = block.timestamp;
        countingResetTime = block.timestamp;
        candidateAddress = msg.sender;
        dev = msg.sender;
    }
    
    function getNextClaimTime(address _getNextClaimTime) public view returns(uint256) {
        return _nextClaimTime[_getNextClaimTime];
    }
    
    function getCurrentMultiple(address _getCurrentMultiple) public view returns(uint256) {
        if(_getCurrentMultiple == candidateAddress){
            return bonusMultiple;
        }else{
            return 1;
        }
    }
    
    function getPartsPerBillion(address _getPartsPerBillion) public view returns(uint256) {
        return tnae.balanceOf(_getPartsPerBillion).mul(10**9).div(tnae.totalSupply());
    }
    
    function getNextClaimValue(address _getNextClaimValue) public view returns(uint256) {
        return usdt.balanceOf(address(this)).div(10**9).mul(getPartsPerBillion(_getNextClaimValue)).mul(getCurrentMultiple(_getNextClaimValue));
    }
    
    function claimTokensFromPool(address claimAddress) public {
        require(block.timestamp > _nextClaimTime[claimAddress], "You have claimed in the last 24 hours");
        require(!claimEnable, "please wait a little while");
        claimEnable = true;
        uint256 claimTokens = getNextClaimValue(claimAddress);
        if(claimTokens > 0){
            usdt.transfer(claimAddress, claimTokens);
            _nextClaimTime[claimAddress] = block.timestamp.add(24*60*60);
        }
        claimEnable = false;
    }
    
    function setTnaeAddress(IERC20 _tnae) public {
        require(msg.sender == dev, "permission denied");
        tnae = _tnae;
    }
    
    function setminsaleinfo(uint256 _minsalenum, uint256 _minsaleeth) public {
        require(msg.sender == dev, "permission denied");
        minsalenum = _minsalenum;
        minsaleeth = _minsaleeth;
    }
    
    function setBonusMultiple(uint256 _bonusMultiple) public {
        require(msg.sender == dev, "permission denied");
        bonusMultiple = _bonusMultiple;
    }
    
    function updateTradingCount(address newTradingAddress) external {
        require(msg.sender == address(tnae), "permission denied");
        if(block.timestamp.sub(countingStartTime, "calc interval") > INITIAL_INTERVAL){
            if(block.timestamp.sub(lastTradingTime, "calc interval") > SPRINT_INTERVAL && block.timestamp.sub(countingStartTime, "calc interval") > INITIAL_INTERVAL.add(SPRINT_INTERVAL)){
                _nextCandidate[GUARD] = GUARD;
                sortSize = 0;
                rewardCount++;
                remainingTime = INITIAL_INTERVAL.add(SPRINT_INTERVAL);
                countingStartTime = block.timestamp;
            }else{
                remainingTime = SPRINT_INTERVAL;
            }
        }else{
            remainingTime = INITIAL_INTERVAL.add(SPRINT_INTERVAL).add(countingStartTime).sub(block.timestamp);
        }
        updateSortList(newTradingAddress);
        candidateAddress = _nextCandidate[GUARD];
        countingResetTime = block.timestamp.add(remainingTime);
        lastTradingTime = block.timestamp;
    }
    
    function swapTradingReward() public {
        if(rewardSwap){
            return;
        }
        rewardSwap = true;
        uint256 tnaeAmount = tnae.balanceOf(address(this));
        if(tnaeAmount < minsalenum){
            rewardSwap = false;
            return;
        }
        tnaeAmount = minsalenum;
        swapTokensForEth(tnaeAmount);
        uint256 ethBalance = address(this).balance;
        if(ethBalance > minsaleeth){
            swapEthForTokens(ethBalance);
        }
        rewardSwap = false;
    }
    
    //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> WHT
        address[] memory path = new address[](2);
        path[0] = address(tnae);
        path[1] = uniswapV2Router.WHT();
        tnae.approve(address(uniswapV2Router), tokenAmount);
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function swapEthForTokens(uint256 _ethBalance) private {
        //swap eth for usdt
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WHT();
        path[1] = address(usdt);
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: _ethBalance}(
            0, // accept any amount of usdt
            path,
            address(this),
            block.timestamp
        );
    }
    
    function updateSortList(address _newBuyAddress) private {
        require(_newBuyAddress != GUARD, "Error: Prohibited address");
        _tradingCount[_newBuyAddress][rewardCount]++;
        (bool _isExistInList, address _preAddress) = isExistInList(_newBuyAddress);
        if (_isExistInList) {
            _nextCandidate[_preAddress] = _nextCandidate[_newBuyAddress];
        }
        address preAddress = findPreAddress(_tradingCount[_newBuyAddress][rewardCount]);
        if(preAddress != address(0)){
            _nextCandidate[_newBuyAddress] = _nextCandidate[preAddress];
            _nextCandidate[preAddress] = _newBuyAddress;
            if(sortSize < 10 && !_isExistInList){
                sortSize++;
            }
        }
    }
    
    function isExistInList(address newBuyAddress) public view returns(bool, address) {
        address findAddress = GUARD;
        for(uint256 i = 0; i <= sortSize; i++){
            if(_nextCandidate[findAddress] == newBuyAddress){
                return (true, findAddress);
            }
            findAddress = _nextCandidate[findAddress];
        }
        return (false, address(0));
    }
    
    function findPreAddress(uint256 tradingCount) public view returns(address) {
        address currentAddress = GUARD;
        for(uint256 j = 0; j <= sortSize; j++){
            address nextAddress = _nextCandidate[currentAddress];
            if(_nextCandidate[GUARD] == GUARD || tradingCount >= _tradingCount[nextAddress][rewardCount]){
                return currentAddress;
            }
            currentAddress = _nextCandidate[currentAddress];
        }
        return address(0);
    }
    
    function getSortList() public view returns(address[] memory){
        address[] memory showSortList = new address[](sortSize);
        address listAddress = _nextCandidate[GUARD];
        for(uint256 k = 0; k < sortSize; k++){
            showSortList[k] = listAddress;
            listAddress = _nextCandidate[listAddress];
        }
        return showSortList;
    }
    
    function getBuyCount(address addrBuy) public view returns(uint256) {
        return getBuyCount(addrBuy, rewardCount);
    }
    
    function getBuyCount(address _addrBuy, uint256 _rewardCount) public view returns(uint256) {
        return _tradingCount[_addrBuy][_rewardCount];
    }
    
    function getCountingResetTime() public view returns(uint256) {
        return countingResetTime;
    }
    
    function getCandidateAddress() public view returns(address) {
        return candidateAddress;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"INITIAL_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SPRINT_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_nextCandidate","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimAddress","type":"address"}],"name":"claimTokensFromPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"countingStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tradingCount","type":"uint256"}],"name":"findPreAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addrBuy","type":"address"},{"internalType":"uint256","name":"_rewardCount","type":"uint256"}],"name":"getBuyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addrBuy","type":"address"}],"name":"getBuyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCandidateAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCountingResetTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_getCurrentMultiple","type":"address"}],"name":"getCurrentMultiple","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_getNextClaimTime","type":"address"}],"name":"getNextClaimTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_getNextClaimValue","type":"address"}],"name":"getNextClaimValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_getPartsPerBillion","type":"address"}],"name":"getPartsPerBillion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSortList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newBuyAddress","type":"address"}],"name":"isExistInList","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTradingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minsaleeth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minsalenum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"remainingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bonusMultiple","type":"uint256"}],"name":"setBonusMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_tnae","type":"address"}],"name":"setTnaeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minsalenum","type":"uint256"},{"internalType":"uint256","name":"_minsaleeth","type":"uint256"}],"name":"setminsaleinfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sortSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTradingReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tnae","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newTradingAddress","type":"address"}],"name":"updateTradingCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdt","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052681b1ae4d6e2ef500000600990815566038d7ea4c68000600a55600c55600e805460ff19169055600f80546001600160a01b03191673a71edc38d189767582c38a3145b5873052c3e47a1790556010805460ff60a01b1916905534801561006a57600080fd5b50601080546001600160a01b031990811673ed7d5f38c79115ca12fe6c0041abb22f0a06c3001790915561dead600081905260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc805483169091179055426004819055600581905560075560088054821633908117909155600b8054909216179055611979806100ff6000396000f3fe6080604052600436106101dc5760003560e01c806351cf4498116101025780639495acf111610095578063b72e75b811610064578063b72e75b814610639578063d489c0bf1461064e578063f1611d2514610681578063fc3f507814610696576101e3565b80639495acf114610553578063a473c46f146105b8578063acc4bd08146105f1578063b1bbdba814610606576101e3565b80637872f2a5116100d15780637872f2a5146104c357806379085425146104f657806391cca3db1461050b57806393c30c0f14610520576101e3565b806351cf449814610433578063577ef77b146104665780635c4380421461047b57806371acd3a7146104ae576101e3565b80633f1e35c41161017a578063444e289311610149578063444e28931461036b57806348deef26146103805780634aa3c92c146103b35780634ba9a7f6146103dd576101e3565b80633f1e35c4146103025780634028b6bd146103175780634222b7131461032c578063442258dd14610356576101e3565b806319104b2f116101b657806319104b2f1461027e578063299f31fc146102a55780632f48ab7d146102d857806330f235cc146102ed576101e3565b806307c1d4c7146101e85780631694505e1461021d578063174b42fd1461024e576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b5061021b6004803603602081101561020b57600080fd5b50356001600160a01b03166106ab565b005b34801561022957600080fd5b506102326108c5565b604080516001600160a01b039092168252519081900360200190f35b34801561025a57600080fd5b5061021b6004803603604081101561027157600080fd5b50803590602001356108d4565b34801561028a57600080fd5b50610293610932565b60408051918252519081900360200190f35b3480156102b157600080fd5b50610293600480360360208110156102c857600080fd5b50356001600160a01b0316610938565b3480156102e457600080fd5b50610232610963565b3480156102f957600080fd5b50610293610972565b34801561030e57600080fd5b50610232610978565b34801561032357600080fd5b5061021b61098c565b34801561033857600080fd5b506102326004803603602081101561034f57600080fd5b5035610a87565b34801561036257600080fd5b50610293610b3f565b34801561037757600080fd5b50610293610b46565b34801561038c57600080fd5b5061021b600480360360208110156103a357600080fd5b50356001600160a01b0316610b4c565b3480156103bf57600080fd5b5061021b600480360360208110156103d657600080fd5b5035610bc7565b3480156103e957600080fd5b506104106004803603602081101561040057600080fd5b50356001600160a01b0316610c1f565b6040805192151583526001600160a01b0390911660208301528051918290030190f35b34801561043f57600080fd5b506102326004803603602081101561045657600080fd5b50356001600160a01b0316610c96565b34801561047257600080fd5b50610293610cb1565b34801561048757600080fd5b506102936004803603602081101561049e57600080fd5b50356001600160a01b0316610cb7565b3480156104ba57600080fd5b50610293610dce565b3480156104cf57600080fd5b5061021b600480360360208110156104e657600080fd5b50356001600160a01b0316610dd4565b34801561050257600080fd5b50610293610f5a565b34801561051757600080fd5b50610232610f60565b34801561052c57600080fd5b506102936004803603602081101561054357600080fd5b50356001600160a01b0316610f6f565b34801561055f57600080fd5b50610568610f8a565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105a457818101518382015260200161058c565b505050509050019250505060405180910390f35b3480156105c457600080fd5b50610293600480360360408110156105db57600080fd5b506001600160a01b038135169060200135611056565b3480156105fd57600080fd5b5061029361107e565b34801561061257600080fd5b506102936004803603602081101561062957600080fd5b50356001600160a01b0316611084565b34801561064557600080fd5b5061029361112b565b34801561065a57600080fd5b506102936004803603602081101561067157600080fd5b50356001600160a01b0316611131565b34801561068d57600080fd5b5061029361113f565b3480156106a257600080fd5b50610232611145565b600e5461010090046001600160a01b03163314610703576040805162461bcd60e51b81526020600482015260116024820152701c195c9b5a5cdcda5bdb8819195b9a5959607a1b604482015290519081900360640190fd5b620150546107436005546040518060400160405280600d81526020016c18d85b18c81a5b9d195c9d985b609a1b815250426111549092919063ffffffff16565b11156108375761012c6107886004546040518060400160405280600d81526020016c18d85b18c81a5b9d195c9d985b609a1b815250426111549092919063ffffffff16565b1180156107d3575061079f6201505461012c6111eb565b60055460408051808201909152600d81526c18d85b18c81a5b9d195c9d985b609a1b60208201526107d1914291611154565b115b1561082b5761dead6000818152600260205260008051602061192483398151915280546001600160a01b0319169092179091558055600180548101905561081f6201505461012c6111eb565b60065542600555610832565b61012c6006555b610869565b6108654261085f60055461085961012c620150546111eb90919063ffffffff16565b906111eb565b9061124c565b6006555b6108728161128e565b61dead600052600260205260008051602061192483398151915254600880546001600160a01b0319166001600160a01b03929092169190911790556006546108bb9042906111eb565b6007555042600455565b6010546001600160a01b031681565b600b546001600160a01b03163314610927576040805162461bcd60e51b81526020600482015260116024820152701c195c9b5a5cdcda5bdb8819195b9a5959607a1b604482015290519081900360640190fd5b600991909155600a55565b60055481565b6008546000906001600160a01b038381169116141561095a5750600c5461095e565b5060015b919050565b600f546001600160a01b031681565b60095481565b600e5461010090046001600160a01b031681565b601054600160a01b900460ff16156109a357610a85565b6010805460ff60a01b1916600160a01b179055600e54604080516370a0823160e01b815230600482015290516000926001600160a01b0361010090910416916370a08231916024808301926020929190829003018186803b158015610a0757600080fd5b505afa158015610a1b573d6000803e3d6000fd5b505050506040513d6020811015610a3157600080fd5b5051600954909150811015610a5357506010805460ff60a01b19169055610a85565b50600954610a608161140f565b600a544790811115610a7557610a7581611644565b50506010805460ff60a01b191690555b565b600061dead815b6000548111610b35576001600160a01b0380831660009081526002602052604081205461dead918290526000805160206119248339815191525490831692161480610afe57506001600160a01b038116600090815260036020908152604080832060015484529091529020548510155b15610b0e5782935050505061095e565b506001600160a01b0391821660009081526002602052604090205490911690600101610a8e565b5060009392505050565b6201505481565b60075490565b600b546001600160a01b03163314610b9f576040805162461bcd60e51b81526020600482015260116024820152701c195c9b5a5cdcda5bdb8819195b9a5959607a1b604482015290519081900360640190fd5b600e80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600b546001600160a01b03163314610c1a576040805162461bcd60e51b81526020600482015260116024820152701c195c9b5a5cdcda5bdb8819195b9a5959607a1b604482015290519081900360640190fd5b600c55565b60008061dead815b6000548111610c87576001600160a01b0382811660009081526002602052604090205481169086161415610c615750600192509050610c91565b6001600160a01b0391821660009081526002602052604090205490911690600101610c27565b5060008092509250505b915091565b6002602052600090815260409020546001600160a01b031681565b60045481565b6000610dc8600e60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0a57600080fd5b505afa158015610d1e573d6000803e3d6000fd5b505050506040513d6020811015610d3457600080fd5b5051600e54604080516370a0823160e01b81526001600160a01b0387811660048301529151610dc293633b9aca009361010090910416916370a08231916024808301926020929190829003018186803b158015610d9057600080fd5b505afa158015610da4573d6000803e3d6000fd5b505050506040513d6020811015610dba57600080fd5b5051906117e2565b9061183b565b92915050565b60005481565b6001600160a01b0381166000908152600d60205260409020544211610e2a5760405162461bcd60e51b81526004018080602001828103825260258152602001806118de6025913960400191505060405180910390fd5b600e5460ff1615610e82576040805162461bcd60e51b815260206004820152601a60248201527f706c6561736520776169742061206c6974746c65207768696c65000000000000604482015290519081900360640190fd5b600e805460ff191660011790556000610e9a82611084565b90508015610f4c57600f546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610ef857600080fd5b505af1158015610f0c573d6000803e3d6000fd5b505050506040513d6020811015610f2257600080fd5b50610f32905042620151806111eb565b6001600160a01b0383166000908152600d60205260409020555b5050600e805460ff19169055565b60015481565b600b546001600160a01b031681565b6001600160a01b03166000908152600d602052604090205490565b60608060005467ffffffffffffffff81118015610fa657600080fd5b50604051908082528060200260200182016040528015610fd0578160200160208202803683370190505b5061dead60009081526002602052600080516020611924833981519152549192506001600160a01b03909116905b60005481101561104e578183828151811061101557fe5b6001600160a01b039283166020918202929092018101919091529281166000908152600290935260409092205490911690600101610ffe565b509091505090565b6001600160a01b03919091166000908152600360209081526040808320938352929052205490565b60065481565b6000610dc861109283610938565b61112561109e85610cb7565b600f54604080516370a0823160e01b8152306004820152905161112592633b9aca00926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156110f357600080fd5b505afa158015611107573d6000803e3d6000fd5b505050506040513d602081101561111d57600080fd5b50519061183b565b906117e2565b600a5481565b6000610dc882600154611056565b61012c81565b6008546001600160a01b031690565b600081848411156111e35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111a8578181015183820152602001611190565b50505050905090810190601f1680156111d55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611245576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600061124583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611154565b6001600160a01b03811661dead14156112ee576040805162461bcd60e51b815260206004820152601960248201527f4572726f723a2050726f68696269746564206164647265737300000000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260036020908152604080832060018054855292528220805490910190558061132483610c1f565b915091508115611364576001600160a01b03808416600090815260026020526040808220548484168352912080546001600160a01b031916919092161790555b6001600160a01b0383166000908152600360209081526040808320600154845290915281205461139390610a87565b90506001600160a01b03811615611409576001600160a01b0381811660008181526002602052604080822080548986168085529284208054919096166001600160a01b0319918216179095559282528254909316909217905554600a1180156113fa575082155b15611409576000805460010190555b50505050565b6040805160028082526060808301845292602083019080368337019050509050600e60019054906101000a90046001600160a01b03168160008151811061145257fe5b6001600160a01b0392831660209182029290920181019190915260105460408051632e5a42c960e11b815290519190931692635cb48592926004808301939192829003018186803b1580156114a657600080fd5b505afa1580156114ba573d6000803e3d6000fd5b505050506040513d60208110156114d057600080fd5b50518151829060019081106114e157fe5b6001600160a01b03928316602091820292909201810191909152600e546010546040805163095ea7b360e01b8152918516600483015260248201879052516101009092049093169263095ea7b39260448083019391928290030181600087803b15801561154d57600080fd5b505af1158015611561573d6000803e3d6000fd5b505050506040513d602081101561157757600080fd5b505060105460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602087810191028083838b5b838110156115ff5781810151838201526020016115e7565b505050509050019650505050505050600060405180830381600087803b15801561162857600080fd5b505af115801561163c573d6000803e3d6000fd5b505050505050565b6040805160028082526060808301845292602083019080368337505060105460408051632e5a42c960e11b815290519394506001600160a01b0390911692635cb4859292506004808301926020929190829003018186803b1580156116a857600080fd5b505afa1580156116bc573d6000803e3d6000fd5b505050506040513d60208110156116d257600080fd5b5051815182906000906116e157fe5b6001600160a01b039283166020918202929092010152600f5482519116908290600190811061170c57fe5b6001600160a01b0392831660209182029290920181019190915260105460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de95978b9795968b969495939460a49091019187810191028083838b5b8381101561179e578181015183820152602001611786565b50505050905001955050505050506000604051808303818588803b1580156117c557600080fd5b505af11580156117d9573d6000803e3d6000fd5b50505050505050565b6000826117f157506000610dc8565b828202828482816117fe57fe5b04146112455760405162461bcd60e51b81526004018080602001828103825260218152602001806119036021913960400191505060405180910390fd5b600061124583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836118c75760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111a8578181015183820152602001611190565b5060008385816118d357fe5b049594505050505056fe596f75206861766520636c61696d656420696e20746865206c61737420323420686f757273536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cca2646970667358221220cd6ed79b165043cd2320c02ab2656ffa4582cce7fd33a0702a71f252b8d71fd264736f6c634300060c0033

Deployed ByteCode Sourcemap

12798:8828:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16221:1083;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16221:1083:0;-1:-1:-1;;;;;16221:1083:0;;:::i;:::-;;13835:41;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13835:41:0;;;;;;;;;;;;;;15824:209;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15824:209:0;;;;;;;:::i;13155:32::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14448:233;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14448:233:0;-1:-1:-1;;;;;14448:233:0;;:::i;13757:71::-;;;;;;;;;;;;;:::i;13451:47::-;;;;;;;;;;;;;:::i;13732:18::-;;;;;;;;;;;;;:::i;17316:540::-;;;;;;;;;;;;;:::i;20197:504::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20197:504:0;;:::i;13194:52::-;;;;;;;;;;;;;:::i;21405:104::-;;;;;;;;;;;;;:::i;15678:134::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15678:134:0;-1:-1:-1;;;;;15678:134:0;;:::i;16045:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16045:164:0;;:::i;19782:403::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19782:403:0;-1:-1:-1;;;;;19782:403:0;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;19782:403:0;;;;;;;;;;;;;;;;12922:50;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12922:50:0;-1:-1:-1;;;;;12922:50:0;;:::i;13118:30::-;;;;;;;;;;;;;:::i;14693:182::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14693:182:0;-1:-1:-1;;;;;14693:182:0;;:::i;12859:23::-;;;;;;;;;;;;;:::i;15137:529::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15137:529:0;-1:-1:-1;;;;;15137:529:0;;:::i;12889:26::-;;;;;;;;;;;;;:::i;13566:18::-;;;;;;;;;;;;;:::i;14295:141::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14295:141:0;-1:-1:-1;;;;;14295:141:0;;:::i;20713:377::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21240:153;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21240:153:0;;;;;;;;:::i;13337:28::-;;;;;;;;;;;;;:::i;14887:238::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14887:238:0;-1:-1:-1;;;;;14887:238:0;;:::i;13521:38::-;;;;;;;;;;;;;:::i;21102:126::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21102:126:0;-1:-1:-1;;;;;21102:126:0;;:::i;13269:48::-;;;;;;;;;;;;;:::i;21521:102::-;;;;;;;;;;;;;:::i;16221:1083::-;16326:4;;;;;-1:-1:-1;;;;;16326:4:0;16304:10;:27;16296:57;;;;;-1:-1:-1;;;16296:57:0;;;;;;;;;;;;-1:-1:-1;;;16296:57:0;;;;;;;;;;;;;;;13237:9;16367:55;16387:17;;16367:55;;;;;;;;;;;;;-1:-1:-1;;;16367:55:0;;;:15;:19;;:55;;;;;:::i;:::-;:74;16364:729;;;13311:6;16460:53;16480:15;;16460:53;;;;;;;;;;;;;-1:-1:-1;;;16460:53:0;;;:15;:19;;:53;;;;;:::i;:::-;:71;:170;;;;-1:-1:-1;16593:37:0;13237:9;13311:6;16593:20;:37::i;:::-;16555:17;;16535:55;;;;;;;;;;;;-1:-1:-1;;;16535:55:0;;;;;;:15;;:19;:55::i;:::-;:95;16460:170;16457:497;;;13098:6;16650:21;;;;:14;:21;;-1:-1:-1;;;;;;;;;;;16650:29:0;;-1:-1:-1;;;;;;16650:29:0;;;;;;;16698:12;;16650:29;16729:13;;;;;;16777:37;13237:9;13311:6;16777:20;:37::i;:::-;16761:13;:53;16853:15;16833:17;:35;16457:497;;;13311:6;16907:13;:31;16457:497;16364:729;;;17000:81;17065:15;17000:60;17042:17;;17000:37;13311:6;13237:9;17000:20;;:37;;;;:::i;:::-;:41;;:60::i;:::-;:64;;:81::i;:::-;16984:13;:97;16364:729;17103:33;17118:17;17103:14;:33::i;:::-;13098:6;17166:21;;:14;:21;;-1:-1:-1;;;;;;;;;;;17166:21:0;17147:16;:40;;-1:-1:-1;;;;;;17147:40:0;-1:-1:-1;;;;;17166:21:0;;;;17147:40;;;;;;17238:13;;17218:34;;:15;;:19;:34::i;:::-;17198:17;:54;-1:-1:-1;17281:15:0;17263;:33;16221:1083::o;13835:41::-;;;-1:-1:-1;;;;;13835:41:0;;:::o;15824:209::-;15930:3;;-1:-1:-1;;;;;15930:3:0;15916:10;:17;15908:47;;;;;-1:-1:-1;;;15908:47:0;;;;;;;;;;;;-1:-1:-1;;;15908:47:0;;;;;;;;;;;;;;;15966:10;:24;;;;16001:10;:24;15824:209::o;13155:32::-;;;;:::o;14448:233::-;14571:16;;14525:7;;-1:-1:-1;;;;;14548:39:0;;;14571:16;;14548:39;14545:129;;;-1:-1:-1;14610:13:0;;14603:20;;14545:129;-1:-1:-1;14661:1:0;14545:129;14448:233;;;:::o;13757:71::-;;;-1:-1:-1;;;;;13757:71:0;;:::o;13451:47::-;;;;:::o;13732:18::-;;;;;;-1:-1:-1;;;;;13732:18:0;;:::o;17316:540::-;17366:10;;-1:-1:-1;;;17366:10:0;;;;17363:47;;;17392:7;;17363:47;17420:10;:17;;-1:-1:-1;;;;17420:17:0;-1:-1:-1;;;17420:17:0;;;17469:4;;:29;;;-1:-1:-1;;;17469:29:0;;17492:4;17469:29;;;;;;17420:17;;-1:-1:-1;;;;;17420:17:0;17469:4;;;;;:14;;:29;;;;;;;;;;;;;;:4;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17469:29:0;17525:10;;17469:29;;-1:-1:-1;17512:23:0;;17509:93;;;-1:-1:-1;17551:10:0;:18;;-1:-1:-1;;;;17551:18:0;;;17584:7;;17509:93;-1:-1:-1;17625:10:0;;17646:28;17625:10;17646:16;:28::i;:::-;17754:10;;17706:21;;17741:23;;17738:82;;;17780:28;17797:10;17780:16;:28::i;:::-;-1:-1:-1;;17830:10:0;:18;;-1:-1:-1;;;;17830:18:0;;;17316:540;:::o;20197:504::-;20263:7;13098:6;20263:7;20324:342;20348:8;;20343:1;:13;20324:342;;-1:-1:-1;;;;;20399:30:0;;;20377:19;20399:30;;;:14;:30;;;;;;13098:6;20447:21;;;;-1:-1:-1;;;;;;;;;;;20447:21:0;20399:30;;;;20447:21;:30;;:89;;-1:-1:-1;;;;;;20497:26:0;;;;;;:13;:26;;;;;;;;20524:11;;20497:39;;;;;;;;20481:55;;;20447:89;20444:149;;;20563:14;20556:21;;;;;;;20444:149;-1:-1:-1;;;;;;20624:30:0;;;;;;;:14;:30;;;;;;;;;;;20358:3;20324:342;;;-1:-1:-1;20691:1:0;;20197:504;-1:-1:-1;;;20197:504:0:o;13194:52::-;13237:9;13194:52;:::o;21405:104::-;21484:17;;21405:104;:::o;15678:134::-;15756:3;;-1:-1:-1;;;;;15756:3:0;15742:10;:17;15734:47;;;;;-1:-1:-1;;;15734:47:0;;;;;;;;;;;;-1:-1:-1;;;15734:47:0;;;;;;;;;;;;;;;15792:4;:12;;-1:-1:-1;;;;;15792:12:0;;;;;-1:-1:-1;;;;;;15792:12:0;;;;;;;;;15678:134::o;16045:164::-;16135:3;;-1:-1:-1;;;;;16135:3:0;16121:10;:17;16113:47;;;;;-1:-1:-1;;;16113:47:0;;;;;;;;;;;;-1:-1:-1;;;16113:47:0;;;;;;;;;;;;;;;16171:13;:30;16045:164::o;19782:403::-;19848:4;;13098:6;19848:4;19912:229;19936:8;;19931:1;:13;19912:229;;-1:-1:-1;;;;;19968:27:0;;;;;;;:14;:27;;;;;;;;:44;;;;19965:109;;;-1:-1:-1;20040:4:0;;-1:-1:-1;20046:11:0;-1:-1:-1;20032:26:0;;19965:109;-1:-1:-1;;;;;20102:27:0;;;;;;;:14;:27;;;;;;;;;;;19946:3;19912:229;;;;20159:5;20174:1;20151:26;;;;;19782:403;;;;:::o;12922:50::-;;;;;;;;;;;;-1:-1:-1;;;;;12922:50:0;;:::o;13118:30::-;;;;:::o;14693:182::-;14770:7;14797:70;14848:4;;;;;;;;;-1:-1:-1;;;;;14848:4:0;-1:-1:-1;;;;;14848:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14848:18:0;14797:4;;:35;;;-1:-1:-1;;;14797:35:0;;-1:-1:-1;;;;;14797:35:0;;;;;;;;;:46;;14837:5;;14797:4;;;;;;:14;;:35;;;;;14848:18;;14797:35;;;;;;;:4;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14797:35:0;;:39;:46::i;:::-;:50;;:70::i;:::-;14790:77;14693:182;-1:-1:-1;;14693:182:0:o;12859:23::-;;;;:::o;15137:529::-;-1:-1:-1;;;;;15232:28:0;;;;;;:14;:28;;;;;;15214:15;:46;15206:96;;;;-1:-1:-1;;;15206:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15322:11;;;;15321:12;15313:51;;;;;-1:-1:-1;;;15313:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15375:11;:18;;-1:-1:-1;;15375:18:0;15389:4;15375:18;;;:11;15426:31;15444:12;15426:17;:31::i;:::-;15404:53;-1:-1:-1;15471:15:0;;15468:161;;15502:4;;:40;;;-1:-1:-1;;;15502:40:0;;-1:-1:-1;;;;;15502:40:0;;;;;;;;;;;;;;;:4;;;;;:13;;:40;;;;;;;;;;;;;;:4;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15588:29:0;;-1:-1:-1;15588:15:0;15608:8;15588:19;:29::i;:::-;-1:-1:-1;;;;;15557:28:0;;;;;;:14;:28;;;;;:60;15468:161;-1:-1:-1;;15639:11:0;:19;;-1:-1:-1;;15639:19:0;;;15137:529::o;12889:26::-;;;;:::o;13566:18::-;;;-1:-1:-1;;;;;13566:18:0;;:::o;14295:141::-;-1:-1:-1;;;;;14395:33:0;14368:7;14395:33;;;:14;:33;;;;;;;14295:141::o;20713:377::-;20756:16;20784:29;20830:8;;20816:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20816:23:0;-1:-1:-1;13098:6:0;20850:19;20872:21;;;:14;:21;;-1:-1:-1;;;;;;;;;;;20872:21:0;20784:55;;-1:-1:-1;;;;;;20872:21:0;;;;20904:149;20927:8;;20923:1;:12;20904:149;;;20974:11;20956:12;20969:1;20956:15;;;;;;;;-1:-1:-1;;;;;20956:29:0;;;:15;;;;;;;;;;:29;;;;21014:27;;;;;;;:14;:27;;;;;;;;;;;;;20937:3;20904:149;;;-1:-1:-1;21070:12:0;;-1:-1:-1;;20713:377:0;:::o;21240:153::-;-1:-1:-1;;;;;21348:23:0;;;;21321:7;21348:23;;;:13;:23;;;;;;;;:37;;;;;;;;;21240:153::o;13337:28::-;;;;:::o;14887:238::-;14962:7;14989:128;15078:38;15097:18;15078;:38::i;:::-;14989:84;15034:38;15053:18;15034;:38::i;:::-;14989:4;;:29;;;-1:-1:-1;;;14989:29:0;;15012:4;14989:29;;;;;;:40;;15023:5;;-1:-1:-1;;;;;14989:4:0;;;;:14;;:29;;;;;;;;;;;;;;;:4;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14989:29:0;;:33;:40::i;:::-;:44;;:84::i;13521:38::-;;;;:::o;21102:126::-;21160:7;21187:33;21199:7;21208:11;;21187;:33::i;13269:48::-;13311:6;13269:48;:::o;21521:102::-;21599:16;;-1:-1:-1;;;;;21599:16:0;21521:102;:::o;4381:192::-;4467:7;4503:12;4495:6;;;;4487:29;;;;-1:-1:-1;;;4487:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4539:5:0;;;4381:192::o;3478:181::-;3536:7;3568:5;;;3592:6;;;;3584:46;;;;;-1:-1:-1;;;3584:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3650:1;3478:181;-1:-1:-1;;;3478:181:0:o;3942:136::-;4000:7;4027:43;4031:1;4034;4027:43;;;;;;;;;;;;;;;;;:3;:43::i;19010:760::-;-1:-1:-1;;;;;19085:23:0;;13098:6;19085:23;;19077:61;;;;;-1:-1:-1;;;19077:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19149:29:0;;;;;;:13;:29;;;;;;;;19179:11;;;19149:42;;;;;;:44;;;;;;;:29;19249;19163:14;19249:13;:29::i;:::-;19204:74;;;;19293:14;19289:107;;;-1:-1:-1;;;;;19354:30:0;;;;;;;:14;:30;;;;;;;19324:27;;;;;;;:60;;-1:-1:-1;;;;;;19324:60:0;19354:30;;;;19324:60;;;19289:107;-1:-1:-1;;;;;19442:29:0;;19406:18;19442:29;;;:13;:29;;;;;;;;19472:11;;19442:42;;;;;;;;19427:58;;:14;:58::i;:::-;19406:79;-1:-1:-1;;;;;;19499:24:0;;;19496:267;;-1:-1:-1;;;;;19572:26:0;;;;;;;:14;:26;;;;;;;;19539:30;;;;;;;;;:59;;19572:26;;;;-1:-1:-1;;;;;;19539:59:0;;;;;;;19613:26;;;:43;;;;;;;;;;19674:8;19685:2;-1:-1:-1;19674:32:0;;;;;19692:14;19691:15;19674:32;19671:81;;;19726:8;:10;;;;;;19671:81;19010:760;;;;:::o;17965:572::-;18114:16;;;18128:1;18114:16;;;18090:21;18114:16;;;;;18090:21;18114:16;;;;;;;;;;-1:-1:-1;18114:16:0;18090:40;;18159:4;;;;;;;;;-1:-1:-1;;;;;18159:4:0;18141;18146:1;18141:7;;;;;;;;-1:-1:-1;;;;;18141:23:0;;;:7;;;;;;;;;;:23;;;;18185:15;;:21;;;-1:-1:-1;;;18185:21:0;;;;:15;;;;;:19;;:21;;;;;18141:7;;18185:21;;;;;:15;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18185:21:0;18175:7;;:4;;18180:1;;18175:7;;;;;;-1:-1:-1;;;;;18175:31:0;;;:7;;;;;;;;;;:31;;;;18217:4;;18238:15;;18217:51;;;-1:-1:-1;;;18217:51:0;;18238:15;;;18217:51;;;;;;;;;;;:4;;;;;;;;:12;;:51;;;;;18175:7;;18217:51;;;;;18238:15;18217:4;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18305:15:0;;:224;;-1:-1:-1;;;18305:224:0;;;;;;;;:15;:224;;;;;;18483:4;18305:224;;;;;;18503:15;18305:224;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18305:15:0;;;;:66;;18386:11;;18456:4;;18483;18503:15;18305:224;;;;;;;18217:51;18305:224;;;;;;;;:15;:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17965:572;;:::o;18549:449::-;18668:16;;;18682:1;18668:16;;;18644:21;18668:16;;;;;18644:21;18668:16;;;;;;;;-1:-1:-1;;18705:15:0;;:21;;;-1:-1:-1;;;18705:21:0;;;;18644:40;;-1:-1:-1;;;;;;18705:15:0;;;;:19;;-1:-1:-1;18705:21:0;;;;;;;;;;;;;;:15;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18705:21:0;18695:7;;:4;;18700:1;;18695:7;;;;-1:-1:-1;;;;;18695:31:0;;;:7;;;;;;;;;:31;18755:4;;18737:7;;18755:4;;;18737;;18755;;18737:7;;;;;;-1:-1:-1;;;;;18737:23:0;;;:7;;;;;;;;;;:23;;;;18771:15;;:219;;-1:-1:-1;;;18771:219:0;;:15;:219;;;;;;18944:4;18771:219;;;;;;18964:15;18771:219;;;;;;;;;;;;;;;;;;;;;:15;;;;;:66;;18845:11;;18771:15;;18917:4;;18944;;18964:15;;18771:219;;;;;;;;;;;;;:15;:219;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18549:449;;:::o;4832:471::-;4890:7;5135:6;5131:47;;-1:-1:-1;5165:1:0;5158:8;;5131:47;5202:5;;;5206:1;5202;:5;:1;5226:5;;;;;:10;5218:56;;;;-1:-1:-1;;;5218:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5779:132;5837:7;5864:39;5868:1;5871;5864:39;;;;;;;;;;;;;;;;;6493:7;6528:12;6521:5;6513:28;;;;-1:-1:-1;;;6513:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6552:9;6568:1;6564;:5;;;;;;;6407:278;-1:-1:-1;;;;;6407:278:0:o

Swarm Source

ipfs://cd6ed79b165043cd2320c02ab2656ffa4582cce7fd33a0702a71f252b8d71fd2
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading