Contract Overview
Balance: 0.000000000000008252 Ether
Transactions: 15385 txns
Token Tracker: Mineral (ORE)
 Latest 25 transactions from a total of 15385 transactions

TxHash Age From To Value [TxFee]
0x7153621a55396854e5e888d0b44b1a1068ce3ead94e60dbab04e2ef2d5b073fd95 days 8 hrs ago0x5c5e13a42a8b6f36a942b1f9b9459ad41eefa7f0  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60 Ether0.000100385
0x25e4e1a10be013eabe2b0a64a7781466c3d0cfa376d0d6f1c2479e0c744812b698 days 19 hrs ago0x8b4d3f8963e704c7e42c4e60b624775ef62574b1  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60.0025 Ether0.000631348
0x582a9fd4afb5984f7eed2f5b811cc6daf2390cd7a1054a2abc330bc87e95884298 days 19 hrs ago0x14d77b27a87e86bbde65d86541839121f0c06484  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc63.6 Ether0.002321364
0xc3d753154db88ce8eb51c5b5d0710b386da58a923b9d7474ab86570bd77d51bd98 days 19 hrs ago0x8b4d3f8963e704c7e42c4e60b624775ef62574b1  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60.06 Ether0.000315674
0x62f367dc059111c731e0270ba2b8a50f959fa570cec31be053385cbe9c3ef36798 days 19 hrs ago0x8b4d3f8963e704c7e42c4e60b624775ef62574b1  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60.06 Ether0.000315674
0x755a6b0e884fbcc3769d3f351691ed8b970baf6cbdbcb6f22d4755e4e630e02b98 days 19 hrs ago0x14d77b27a87e86bbde65d86541839121f0c06484  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60 Ether0.000368868
0xd631f7508c85cd5c01ac6b76db2a357839acb9b0edf889197e3c017a850c9ab098 days 19 hrs ago0x6d5c3146bb3d12ed2c9206c898c9626dfdc15b79  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60.15 Ether0.000308436
0x9830d5f60850f02633b2729b59c3fcc25d415fb83cde3cdd13c0f091942d317d98 days 19 hrs ago0x8b4d3f8963e704c7e42c4e60b624775ef62574b1  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60.06 Ether0.000285474
0x288de22a35744c49d4fe527e3c06af2e88d7f2800ba5fc8630b8033e5500a41598 days 19 hrs ago0x8b4d3f8963e704c7e42c4e60b624775ef62574b1  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60.06 Ether0.000315674
0xa0e40402bd56fe2c7a53f36804fa43f129d9b31638142e4f956728ffa1354da998 days 19 hrs ago0x6d5c3146bb3d12ed2c9206c898c9626dfdc15b79  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60.22 Ether0.0001809
0x27bfc0fafd21217b0f0545f738f97c157fd180aa0221738a474d6eb5a82e814498 days 19 hrs ago0x8b4d3f8963e704c7e42c4e60b624775ef62574b1  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60 Ether0.000230428
0x48687e27671bba60328135411d59715c9ace95a0acd2c3227064abe097957ed698 days 19 hrs ago0x6d5c3146bb3d12ed2c9206c898c9626dfdc15b79  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60.05 Ether0.00092009
0xaebdd2460d7239f5fcbb57bbf23b01dffb38fc6eff9062c73cfe61917a42bb2d98 days 19 hrs ago0x6d5c3146bb3d12ed2c9206c898c9626dfdc15b79  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60.02 Ether0.00084509
0x4475a52caba1b6bc83c587a432cad3a315f35c78d59b72956859d8f465dc555198 days 19 hrs ago0x6d5c3146bb3d12ed2c9206c898c9626dfdc15b79  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60.07 Ether0.0003616
0x8f6bf2556f347543beaa25057754d05d31bfd83b5b45792002f43cf33abae47698 days 19 hrs ago0x6d5c3146bb3d12ed2c9206c898c9626dfdc15b79  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60.05 Ether0.0003616
0x715b57235b993f08921c1212e29728b635a3113c33f246f3b5be67f57777b3ec98 days 19 hrs ago0x6d5c3146bb3d12ed2c9206c898c9626dfdc15b79  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60.05 Ether0.000735872
0x10ddbed4b2f6a1ea6cc8d28bbeadeee9cb40ef2229882625c036715a3530ce2698 days 19 hrs ago0x36e5184cbdd7669343e06ca3ce5701c857addb99  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60 Ether0.004626588
0x9cc553d930df71e1e5f4e1cd8c0540e5952d1668a237e3ab9001a76c1292850198 days 19 hrs ago0xdbd609252d2922f3314c738688f12cdc9e1b81f5  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60 Ether0.000260798
0x2bd278faaed482263d06a299865ea5b141618670486dd7fe341f200fedfc683b98 days 19 hrs ago0xadc461bafdd7edb4e058e14c45d44dfeb296600c  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60 Ether0.014114177
0xf16b4d1139cd31b47b400cc24a0c87ebdf94e9a63a8977f83ff210503201077898 days 20 hrs ago0xa8cfcd45e5b700308181db22eca655cd09f30319  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc61.6 Ether0.001155168
0xfea8e7a8dabf5b6f9cfab36e02ccddb58986bf3aeabcf55fbf3de5e6e232625198 days 20 hrs ago0xa8cfcd45e5b700308181db22eca655cd09f30319  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc61 Ether0.00018128
0x0c3b03f0236e3e1160d5271862388729d691d2420a65921cf86347c46fa6e95898 days 20 hrs ago0xa8cfcd45e5b700308181db22eca655cd09f30319  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc63 Ether0.000697478
0x639d9254d7e475e3d99f562f1afe6123281d111abefc8bfcbaaecdac7978184798 days 20 hrs ago0xa8cfcd45e5b700308181db22eca655cd09f30319  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc612 Ether0.043267275
0xc02c188abbafa0574d33f4216a61d8ed6ceffad69325144abf15c814aac0657098 days 20 hrs ago0xa8cfcd45e5b700308181db22eca655cd09f30319  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60 Ether0.004390011
0x5d33e5ca26da014892aa79fd27c591db368b15c110abbdcdce3245681622508b98 days 21 hrs ago0xed24316440cffcb3631abcaf4075a5ebaa16fa14  IN   0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60 Ether0.017272245
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0x7153621a55396854e5e888d0b44b1a1068ce3ead94e60dbab04e2ef2d5b073fd318247995 days 8 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x5c5e13a42a8b6f36a942b1f9b9459ad41eefa7f09,177.0065 Ether
0x755a6b0e884fbcc3769d3f351691ed8b970baf6cbdbcb6f22d4755e4e630e02b316273598 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60 Ether
0x755a6b0e884fbcc3769d3f351691ed8b970baf6cbdbcb6f22d4755e4e630e02b316273598 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x755a6b0e884fbcc3769d3f351691ed8b970baf6cbdbcb6f22d4755e4e630e02b316273598 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x755a6b0e884fbcc3769d3f351691ed8b970baf6cbdbcb6f22d4755e4e630e02b316273598 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x755a6b0e884fbcc3769d3f351691ed8b970baf6cbdbcb6f22d4755e4e630e02b316273598 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x755a6b0e884fbcc3769d3f351691ed8b970baf6cbdbcb6f22d4755e4e630e02b316273598 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x755a6b0e884fbcc3769d3f351691ed8b970baf6cbdbcb6f22d4755e4e630e02b316273598 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x755a6b0e884fbcc3769d3f351691ed8b970baf6cbdbcb6f22d4755e4e630e02b316273598 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x755a6b0e884fbcc3769d3f351691ed8b970baf6cbdbcb6f22d4755e4e630e02b316273598 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x755a6b0e884fbcc3769d3f351691ed8b970baf6cbdbcb6f22d4755e4e630e02b316273598 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x27bfc0fafd21217b0f0545f738f97c157fd180aa0221738a474d6eb5a82e8144316271498 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60 Ether
0x27bfc0fafd21217b0f0545f738f97c157fd180aa0221738a474d6eb5a82e8144316271498 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x27bfc0fafd21217b0f0545f738f97c157fd180aa0221738a474d6eb5a82e8144316271498 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x27bfc0fafd21217b0f0545f738f97c157fd180aa0221738a474d6eb5a82e8144316271498 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x27bfc0fafd21217b0f0545f738f97c157fd180aa0221738a474d6eb5a82e8144316271498 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x27bfc0fafd21217b0f0545f738f97c157fd180aa0221738a474d6eb5a82e8144316271498 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x27bfc0fafd21217b0f0545f738f97c157fd180aa0221738a474d6eb5a82e8144316271498 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x10ddbed4b2f6a1ea6cc8d28bbeadeee9cb40ef2229882625c036715a3530ce26316266098 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60 Ether
0x10ddbed4b2f6a1ea6cc8d28bbeadeee9cb40ef2229882625c036715a3530ce26316266098 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x10ddbed4b2f6a1ea6cc8d28bbeadeee9cb40ef2229882625c036715a3530ce26316266098 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x10ddbed4b2f6a1ea6cc8d28bbeadeee9cb40ef2229882625c036715a3530ce26316266098 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x10ddbed4b2f6a1ea6cc8d28bbeadeee9cb40ef2229882625c036715a3530ce26316266098 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x10ddbed4b2f6a1ea6cc8d28bbeadeee9cb40ef2229882625c036715a3530ce26316266098 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
0x10ddbed4b2f6a1ea6cc8d28bbeadeee9cb40ef2229882625c036715a3530ce26316266098 days 19 hrs ago0xc25b3dbbfe2d84c1195b8b73dc61a306720cbfc60x7a8add6ae71c20c57d2f4271425509b50ed13d700 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Mineral
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.18;




/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    
    uint256 c = a / b;
    
    return c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}





/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}








/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}









/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return balances[_owner];
  }

}









/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * 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
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}




/**
 * @title Math
 * @dev Assorted math operations
 */

library Math {
  function max64(uint64 a, uint64 b) internal pure returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal pure returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal pure returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal pure returns (uint256) {
    return a < b ? a : b;
  }
}






/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */
contract BurnableToken is StandardToken {

    event Burn(address indexed burner, uint256 value);

    /**
     * @dev Burns a specific amount of tokens.
     * @param _value The amount of token to be burned.
     */
    function burn(uint256 _value) public {
        require(_value > 0);
        require(_value <= balances[msg.sender]);
        
        

        address burner = msg.sender;
        balances[burner] = balances[burner].sub(_value);
        totalSupply = totalSupply.sub(_value);
        Burn(burner, _value);
    }
}





/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }


  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }


  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}









contract Jewel {
    function incise(address owner, uint256 value) external returns (uint);
}

contract DayQualitys {
    function getAreaQualityByDay(uint32 time, uint32 area) external returns (uint32);
}

contract Mineral is BurnableToken, Ownable {

    string public name = "Mineral";
    string public symbol = "ORE";
    uint8 public decimals = 18;

    uint256 public constant INITIAL_SUPPLY = 800 * 1000 * 1000 * (10 ** uint256(decimals));

    uint public constant MINER_4_HOURS = 0.0005 ether;
    uint public constant MINER_8_HOURS = 0.001 ether;
    uint public constant MINER_24_HOURS = 0.003 ether;

    mapping(address => uint[][72]) public deployRange;

    
    
    uint public timeScale = 1; 

    
    
    mapping(uint32 => uint32[3][72]) private areaHourDeployed;

    
    struct AreaHourDeployed {
        uint32[72] lastCollectHour;
        
        mapping(uint32 => uint32[3][72]) hour; 
    }
    
    
    mapping(address => AreaHourDeployed) private userAreaHourDeployed;

    
    uint8 public constant CHECK_POINT_HOUR = 4;

    
    
    mapping(uint32 => uint32[72]) private areaCheckPoints;

    
    mapping(uint32 => uint) private dayAverageOutput;

    
    struct AreaCheckPoint {
        
        mapping(uint32 => uint32[72]) hour;
    }

    
    
    mapping(address => AreaCheckPoint) private userAreaCheckPoints;

    uint256 amountEther;

    
    mapping (address => uint) public remainEther;

    uint32 public constractDeployTime = uint32(now) / 1 hours * 1 hours;

    mapping(address => uint) activeArea; 
    
    bool enableWhiteList = true;
    mapping(address => bool) whiteUserList;    
    address serverAddress;

    address coldWallet;

    bool enableCheckArea = true;

    Jewel public jewelContract;
    DayQualitys public dayQualitysContract;

    event Pause();
    event Unpause();

    bool public paused = false;

    function Mineral() public {
        totalSupply = INITIAL_SUPPLY;
        balances[this] = 280 * 1000 * 1000 * (10 ** uint256(decimals));
        balances[msg.sender] = INITIAL_SUPPLY - balances[this];
        dayAverageOutput[0] = 241920 * 10 ** uint256(decimals);
    }

    /*
    function setTimeScale(uint scale) public onlyOwner {
        timeScale = scale;
    }

    
    function setConstractDeployTime(uint32 time) public onlyOwner {
        constractDeployTime = time;
    }*/

    function setColdWallet(address _coldWallet) public onlyOwner {
        coldWallet = _coldWallet;
    }

    function disableWhiteUserList() public onlyOwner {
        enableWhiteList = false;
    }

    function disableCheckArea() public onlyOwner {
        enableCheckArea = false;
    }

    modifier checkWhiteList() {
        if (enableWhiteList) {
            require(whiteUserList[msg.sender]);
        }
        _;
    }

    function setServerAddress(address addr) public onlyOwner {
        serverAddress = addr;
    }

    function authUser(string addr) public {
        require(msg.sender == serverAddress || msg.sender == owner);
        address s = bytesToAddress(bytes(addr));
        whiteUserList[s] = true;
    }

    function bytesToAddress (bytes b) internal view returns (address) {
        uint result = 0;
        for (uint i = 0; i < b.length; i++) {
            uint c = uint(b[i]);
            if (c >= 48 && c <= 57) {
                result = result * 16 + (c - 48);
            }
            if(c >= 65 && c <= 90) {
                result = result * 16 + (c - 55);
            }
            if(c >= 97 && c <= 122) {
                result = result * 16 + (c - 87);
            }
        }
        return address(result);
    }

    function setDayQualitys(address dayQualitys) public onlyOwner {
        dayQualitysContract = DayQualitys(dayQualitys);
    }

    function getMyDeployAt(uint32 area, uint32 hour) public view returns (uint32[3]) {
        return userAreaHourDeployed[msg.sender].hour[hour][area];
    }

    function getMyMinersAt(uint32 area, uint32 hour) public view returns (uint32) {
        return _getUserMinersAt(msg.sender, area, hour);
    }

    function _getUserMinersAt(address user, uint32 area, uint32 hour) internal view returns(uint32) {
        //now start from start's nearest check point
        uint32 nc = hour/CHECK_POINT_HOUR*CHECK_POINT_HOUR;
        if (userAreaCheckPoints[user].hour[nc][area] == 0 && userAreaCheckPoints[user].hour[nc + CHECK_POINT_HOUR][area] == 0) {
            return 0;
        }
        uint32 h = 0;
        int64 userInc = 0;
        uint32[3] storage ptUser;
        AreaHourDeployed storage _userAreaHourDeployed = userAreaHourDeployed[user];
        
        for (h = nc; h <= hour; ++h) {
            
            
            
            ptUser = _userAreaHourDeployed.hour[h][area];
            userInc += ptUser[0] + ptUser[1] + ptUser[2] - _userAreaHourDeployed.hour[h - 4][area][0] - 
                _userAreaHourDeployed.hour[h - 8][area][1] - _userAreaHourDeployed.hour[h - 24][area][2];
        }
        return userAreaCheckPoints[user].hour[nc][area] + uint32(userInc);
    }

    function getDeployAt(uint32 area, uint32 hour) public view returns (uint32[3]) {
        return areaHourDeployed[hour][area];
    }


    function getMinersAt(uint32 area, uint32 hour) public view returns (uint32) {
        return _getMinersAt(area, hour);
    }

    function _getMinersAt(uint32 area, uint32 hour) internal view returns (uint32) {
        //now start from start's nearest check point
        uint32 nc = hour/CHECK_POINT_HOUR*CHECK_POINT_HOUR;
        uint32 h = 0;
        int64 userInc = 0;
        int64 totalInc = 0;
        uint32[3] storage ptArea;
        
        for (h = nc; h <= hour; ++h) {
            
            
            
            ptArea = areaHourDeployed[h][area];
            totalInc += ptArea[0] + ptArea[1] + ptArea[2] - areaHourDeployed[h - 4][area][0] - areaHourDeployed[h - 8][area][1] - areaHourDeployed[h - 24][area][2];
        }

        return areaCheckPoints[nc][area] + uint32(totalInc);
    }

    function updateArea(uint areaId) internal pure returns (uint) {
        
        uint row = areaId / 8;
        uint colum = areaId % 8;

        uint result = uint(1) << areaId;
        if (row-1 >= 0) {
            result |= uint(1) << ((row-1)*8+colum);
        }
        if (row+1 < 9) {
            result |= uint(1) << ((row+1)*8+colum);
        }
        if (colum-1 >= 0) {
            result |= uint(1) << (row*8+colum-1);
        }
        if (colum+1 < 8) {
            result |= uint(1) << (row*8+colum+1);
        }
        
        return result;
    }

    function checkArea(uint32[] area, address user) internal {
        if (enableCheckArea) {
            uint[] memory distinctArea = new uint[](area.length);
            uint distinctAreaLength = 0;
        
            for (uint i = 0; i < area.length; i++) {
                bool find = false;
                for (uint j = 0; j < distinctAreaLength; j++) {
                    if (distinctArea[j] == area[i]) {
                        find = true;
                        break;
                    }
                }     
                if (!find) {
                    distinctArea[distinctAreaLength] = area[i];
                    distinctAreaLength += 1;
                }
            }

            if (activeArea[user] == 0) {
                require(distinctAreaLength == 1);
                activeArea[user] = updateArea(distinctArea[0]);
            } else {
                uint userActiveArea = activeArea[user];
                uint updateActiveArea = userActiveArea;
                for (i = 0; i < distinctAreaLength; i++) {
                    require(userActiveArea & uint(1) << distinctArea[i] > 0);
                    updateActiveArea = updateActiveArea | updateArea(distinctArea[i]);
                }

                activeArea[user] = updateActiveArea;
            }
        }
    }

    function deployMiners(address user, uint32[] area, uint32[] period, uint32[] count) public checkWhiteList whenNotPaused payable {
        require(area.length > 0);
        require(area.length == period.length);
        require(area.length == count.length);
        address _user = user;
        if (_user == address(0)) {
            _user = msg.sender;
        }
        
        uint32 _hour = uint32((now - constractDeployTime) * timeScale / 1 hours);

        checkArea(area, user);
        
        uint payment = _deployMiners(_user, _hour, area, period, count);
        _updateCheckPoints(_user, _hour, area, period, count);

        require(payment <= msg.value);
        remainEther[msg.sender] += (msg.value - payment);
        if (coldWallet != address(0)) {
            coldWallet.transfer(payment);
        } else {
            amountEther += payment;
        }
        
    }

    /*function deployMinersTest(uint32 _hour, address user, uint32[] area, uint32[] period, uint32[] count) public checkWhiteList payable {
        require(area.length > 0);
        require(area.length == period.length);
        require(area.length == count.length);
        address _user = user;
        if (_user == address(0)) {
            _user = msg.sender;
        }
        

        checkArea(area, user);
        
        uint payment = _deployMiners(_user, _hour, area, period, count);
        _updateCheckPoints(_user, _hour, area, period, count);

        require(payment <= msg.value);
        remainEther[msg.sender] += (msg.value - payment);
        amountEther += payment;
    }*/

    function _deployMiners(address _user, uint32 _hour, uint32[] memory area, uint32[] memory period, uint32[] memory count) internal returns(uint){
        uint payment = 0;
        uint32 minerCount = 0;
        uint32[3][72] storage _areaDeployed = areaHourDeployed[_hour];
        uint32[3][72] storage _userAreaDeployed = userAreaHourDeployed[_user].hour[_hour];
        
        
        for (uint index = 0; index < area.length; ++index) {
            require (period[index] == 4 || period[index] == 8 || period[index] == 24);
            if (period[index] == 4) {
                _areaDeployed[area[index]][0] += count[index];
                _userAreaDeployed[area[index]][0] += count[index];
                payment += count[index] * MINER_4_HOURS;
            } else if (period[index] == 8) {
                _areaDeployed[area[index]][1] += count[index];
                _userAreaDeployed[area[index]][1] += count[index];
                payment += count[index] * MINER_8_HOURS;
            } else if (period[index] == 24) {
                _areaDeployed[area[index]][2] += count[index];
                _userAreaDeployed[area[index]][2] += count[index];
                payment += count[index] * MINER_24_HOURS;
            }
            minerCount += count[index];
            DeployMiner(_user, area[index], _hour, _hour + period[index], count[index]);

            adjustDeployRange(area[index], _hour, _hour + period[index]);
        }
        return payment;
    }   

    function adjustDeployRange(uint area, uint start, uint end) internal {
        uint len = deployRange[msg.sender][area].length;
        if (len == 0) {
            deployRange[msg.sender][area].push(start | (end << 128));
        } else {
            uint s = uint128(deployRange[msg.sender][area][len - 1]);
            uint e = uint128(deployRange[msg.sender][area][len - 1] >> 128);
            
            if (start >= s && start < e) {
                end = e > end ? e : end;
                deployRange[msg.sender][area][len - 1] = s | (end << 128);
            } else {
                deployRange[msg.sender][area].push(start | (end << 128));
            }
        }
    }

    function getDeployArrayLength(uint area) public view returns (uint) {
        return deployRange[msg.sender][area].length;
    }
    
    function getDeploy(uint area, uint index) public view returns (uint,uint) {
        uint s = uint128(deployRange[msg.sender][area][index]);
        uint e = uint128(deployRange[msg.sender][area][index] >> 128);
        return (s, e);
    }

    function _updateCheckPoints(address _user, uint32 _hour, uint32[] memory area, uint32[] memory period, uint32[] memory count) internal {
        uint32 _area = 0;
        uint32 _count = 0;
        uint32 ce4 = _hour + 4;
        uint32 ce8 = _hour + 8;
        uint32 ce24 = _hour + 24;
        uint32 cs = (_hour/CHECK_POINT_HOUR+1)*CHECK_POINT_HOUR;
        AreaCheckPoint storage _userAreaCheckPoints = userAreaCheckPoints[_user];
        uint32 cp = 0;
        for (uint index = 0; index < area.length; ++index) {
            _area = area[index];
            _count = count[index];
            if (period[index] == 4) {
                for (cp = cs; cp <= ce4; cp += CHECK_POINT_HOUR) {
                    areaCheckPoints[cp][_area] += _count;
                    _userAreaCheckPoints.hour[cp][_area] += _count;
                }
            } else if (period[index] == 8) {
                for (cp = cs; cp <= ce8; cp += CHECK_POINT_HOUR) {
                    areaCheckPoints[cp][_area] += _count;
                    _userAreaCheckPoints.hour[cp][_area] += _count;
                }
            } else if (period[index] == 24) {
                for (cp = cs; cp <= ce24; cp += CHECK_POINT_HOUR) {
                    areaCheckPoints[cp][_area] += _count;
                    _userAreaCheckPoints.hour[cp][_area] += _count;
                }
            }
        }
    }

    

    event DeployMiner(address addr, uint32 area, uint32 start, uint32 end, uint32 count);

    event Collect(address addr, uint32 area, uint32 start, uint32 end, uint areaCount);

    function getMyLastCollectHour(uint32 area) public view returns (uint32){
        return userAreaHourDeployed[msg.sender].lastCollectHour[area];
    }

    
    
    function collect(address user, uint32[] area) public  checkWhiteList whenNotPaused {
        require(address(dayQualitysContract) != address(0));
        uint32 current = uint32((now - constractDeployTime) * timeScale / 1 hours);
        require(area.length > 0);
        address _user = user;
        if (_user == address(0)) {
            _user = msg.sender;
        }
        uint total = 0;
        
        for (uint a = 0; a < area.length; ++a) {
            uint len = deployRange[msg.sender][area[a]].length;
            bool finish = true;
            for (uint i = 0; i < len; i += 1) {
                uint s = uint128(deployRange[msg.sender][area[a]][i]);
                uint e = uint128(deployRange[msg.sender][area[a]][i] >> 128);
                if (current < e && current >= s ) {
                    total += _collect(_user, uint32(s), current, area[a]);
                    
                    deployRange[msg.sender][area[a]][i] = current | (e << 128);
                    finish = false;
                } else if (current >= e) {
                    total += _collect(_user, uint32(s), uint32(e), area[a]);
                }
            }
            
            if (finish) {
                deployRange[msg.sender][area[a]].length = 0;
            } else {
                deployRange[msg.sender][area[a]][0] = deployRange[msg.sender][area[a]][len - 1];
                deployRange[msg.sender][area[a]].length = 1;
            }
        }    

        ERC20(this).transfer(_user, total);
    }

    function _collect(address _user, uint32 start, uint32 end, uint32 area) internal returns (uint) {
        uint result = 0;
        uint32 writeCount = 1;
        uint income = 0;
        uint32[] memory totalMiners = new uint32[](CHECK_POINT_HOUR);
        uint32[] memory userMiners = new uint32[](CHECK_POINT_HOUR);
        uint32 ps = start/CHECK_POINT_HOUR*CHECK_POINT_HOUR+CHECK_POINT_HOUR;
        if (ps >= end) {
            
            (income, writeCount) = _collectMinersByCheckPoints(_user, area, start, end, totalMiners, userMiners, writeCount);
            result += income;
        } else {
            
            (income, writeCount) = _collectMinersByCheckPoints(_user, area, start, ps, totalMiners, userMiners, writeCount);
            result += income;

            while (ps < end) {
                (income, writeCount) = _collectMinersByCheckPoints(_user, area, ps, uint32(Math.min64(end, ps + CHECK_POINT_HOUR)), totalMiners, userMiners, writeCount);
                result += income;

                ps += CHECK_POINT_HOUR;
            }
        }
        Collect(_user, area, start, end, result);
        return result;
    }

    function _collectMinersByCheckPoints(address _user, uint32 area, uint32 start, uint32 end, uint32[] memory totalMiners, uint32[] memory userMiners, uint32 _writeCount) internal returns (uint income, uint32 writeCount) {
        //now start from start's nearest check point
        writeCount = _writeCount;
        income = 0;
        
        
        if (userAreaCheckPoints[_user].hour[start/CHECK_POINT_HOUR*CHECK_POINT_HOUR][area] == 0 && userAreaCheckPoints[_user].hour[start/CHECK_POINT_HOUR*CHECK_POINT_HOUR + CHECK_POINT_HOUR][area] == 0) {
            return;
        }
        _getMinersByCheckPoints(_user, area, start, end, totalMiners, userMiners);
        uint ao = dayAverageOutput[start / 24];
        if (ao == 0) {
            uint32 d = start / 24;
            for (; d >= 0; --d) {
                if (dayAverageOutput[d] != 0) {
                    break;
                }
            } 
            ao = dayAverageOutput[d];
            for (d = d+1; d <= start / 24; ++d) {
                ao = ao*9996/10000;
                if ((start / 24 - d) < writeCount) {
                    dayAverageOutput[d] = ao;
                }
            }
            if (writeCount > (start / 24 - d - 1)) {
                writeCount = writeCount - (start / 24 - d - 1);
            } else {
                writeCount = 0;
            }
        }

        uint week = dayQualitysContract.getAreaQualityByDay(uint32(start * 1 hours + constractDeployTime), area);
        require(week > 0);

        ao = week * ao / 10 / 24 / 72;
        
        income = _getTotalIncomeAt(end - start, userMiners, totalMiners, ao, week);

        if (week == 10) { 
            income = income * 8 / 10;
        } else if (week == 5) { 
            income = income * 6 / 10;
        } 
    }

    function _getTotalIncomeAt(uint32 hourLength, uint32[] memory userMiners, uint32[] memory totalMiners, uint areaOutput, uint week) internal view returns(uint) {
        uint income = 0;
        for (uint i = 0; i < hourLength; ++i) {
            if (userMiners[i] != 0 && totalMiners[i] != 0) {
                income += (Math.min256(10 ** uint256(decimals), areaOutput / totalMiners[i]) * userMiners[i]);
            }
        }
        return income;
    } 

    function _getMinersByCheckPoints(address _user, uint32 area, uint32 start, uint32 end, uint32[] memory totalMiners, uint32[] memory userMiners) internal view {
        require((end - start) <= CHECK_POINT_HOUR);
        //now start from start's nearest check point
        uint32 h = 0;
        int64 userInc = 0;
        int64 totalInc = 0;
        uint32[3] storage ptUser;
        uint32[3] storage ptArea;
        AreaHourDeployed storage _userAreaHourDeployed = userAreaHourDeployed[_user];
        
        for (h = start/CHECK_POINT_HOUR*CHECK_POINT_HOUR; h <= start; ++h) {
            
            
            
            ptUser = _userAreaHourDeployed.hour[h][area];
            ptArea = areaHourDeployed[h][area];
            totalInc += ptArea[0] + ptArea[1] + ptArea[2] - areaHourDeployed[h - 4][area][0] - areaHourDeployed[h - 8][area][1] - areaHourDeployed[h - 24][area][2];
            userInc += ptUser[0] + ptUser[1] + ptUser[2] - _userAreaHourDeployed.hour[h - 4][area][0] - _userAreaHourDeployed.hour[h - 8][area][1] - _userAreaHourDeployed.hour[h - 24][area][2];
        }

        totalMiners[0] = areaCheckPoints[start/CHECK_POINT_HOUR*CHECK_POINT_HOUR][area] + uint32(totalInc);
        userMiners[0] = userAreaCheckPoints[_user].hour[start/CHECK_POINT_HOUR*CHECK_POINT_HOUR][area] + uint32(userInc);

        uint32 i = 1;
        for (h = start + 1; h < end; ++h) {
            
            
            
            ptUser = _userAreaHourDeployed.hour[h][area];
            ptArea = areaHourDeployed[h][area];
            totalMiners[i] = totalMiners[i-1] + ptArea[0] + ptArea[1] + ptArea[2] - areaHourDeployed[h - 4][area][0] - areaHourDeployed[h - 8][area][1] - areaHourDeployed[h - 24][area][2];
            userMiners[i] = userMiners[i-1] + ptUser[0] + ptUser[1] + ptUser[2] - _userAreaHourDeployed.hour[h - 4][area][0] - _userAreaHourDeployed.hour[h - 8][area][1] - _userAreaHourDeployed.hour[h - 24][area][2];
            ++i;
        }
    }

    
    function withdraw() public {
        uint remain = remainEther[msg.sender]; 
        require(remain > 0);
        remainEther[msg.sender] = 0;

        msg.sender.transfer(remain);
    }

    
    function withdrawMinerFee() public onlyOwner {
        require(amountEther > 0);
        owner.transfer(amountEther);
        amountEther = 0;
    }

    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    modifier whenPaused() {
        require(paused);
        _;
    }

    function pause() onlyOwner whenNotPaused public {
        paused = true;
        Pause();
    }

    function unpause() onlyOwner whenPaused public {
        paused = false;
        Unpause();
    }

    function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {
        return super.transfer(_to, _value);
    }

    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) {
        return super.transferFrom(_from, _to, _value);
    }
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"remainEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_coldWallet","type":"address"}],"name":"setColdWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableWhiteUserList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CHECK_POINT_HOUR","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawMinerFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"},{"name":"hour","type":"uint32"}],"name":"getMyDeployAt","outputs":[{"name":"","type":"uint32[3]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint256"}],"name":"getDeployArrayLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"},{"name":"hour","type":"uint32"}],"name":"getDeployAt","outputs":[{"name":"","type":"uint32[3]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"},{"name":"hour","type":"uint32"}],"name":"getMyMinersAt","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setServerAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"area","type":"uint32[]"}],"name":"collect","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MINER_8_HOURS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint256"},{"name":"index","type":"uint256"}],"name":"getDeploy","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"string"}],"name":"authUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINER_4_HOURS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINER_24_HOURS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dayQualitysContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"deployRange","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"constractDeployTime","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"}],"name":"getMyLastCollectHour","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableCheckArea","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"jewelContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"},{"name":"hour","type":"uint32"}],"name":"getMinersAt","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"area","type":"uint32[]"},{"name":"period","type":"uint32[]"},{"name":"count","type":"uint32[]"}],"name":"deployMiners","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"dayQualitys","type":"address"}],"name":"setDayQualitys","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"timeScale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"area","type":"uint32"},{"indexed":false,"name":"start","type":"uint32"},{"indexed":false,"name":"end","type":"uint32"},{"indexed":false,"name":"count","type":"uint32"}],"name":"DeployMiner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"area","type":"uint32"},{"indexed":false,"name":"start","type":"uint32"},{"indexed":false,"name":"end","type":"uint32"},{"indexed":false,"name":"areaCount","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60c0604052600760808190527f4d696e6572616c0000000000000000000000000000000000000000000000000060a0908152620000409160049190620001ac565b506040805180820190915260038082527f4f5245000000000000000000000000000000000000000000000000000000000060209092019182526200008791600591620001ac565b506006805460ff191660121790556001600855610e1063ffffffff42166010805463ffffffff191692909104610e100263ffffffff169190911790556012805460ff19166001179055601580547401000000000000000000000000000000000000000060a060020a60ff0219918216179091556017805490911690553480156200011057600080fd5b5060038054600160a060020a0319163390811790915560068054632faf080060ff918216600a90810a82810260009081553081526001602090815260408083206310b076009094029384905587549883528220978616840a909402919091039095559254938052600c90526203b1009216900a027f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e85562000251565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ef57805160ff19168380011785556200021f565b828001600101855582156200021f579182015b828111156200021f57825182559160200191906001019062000202565b506200022d92915062000231565b5090565b6200024e91905b808211156200022d576000815560010162000238565b90565b613baa80620002616000396000f3006080604052600436106102245763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630433df85811461022957806306087e5b1461025c57806306fdde031461027f578063095ea7b31461030957806314dacf5b146103415780631813aea51461035657806318160ddd1461038157806323b872dd1461039657806328ce5cdb146103c05780632b048f77146103d55780632c027eb9146104315780632ff2e9dc14610449578063313ce5671461045e5780633b404266146104735780633ccfd60b146104975780633dd00c42146104ac5780633f4ba83a146104e957806342966c68146104fe57806347b64eb0146105165780634d6a7d33146105375780634dbd71eb1461059a57806350beb835146105af5780635a589fc9146105e35780635c975abb1461063c57806363c2558a14610651578063661884631461066657806370a082311461068a5780638456cb59146106ab5780638da5cb5b146106c05780638e73d857146106f15780638ffdbf0b1461070657806390ce34ec1461071b57806395d89b4114610742578063a7d5380014610757578063a9059cbb1461076c578063a949f3af14610790578063b74d13a5146107ae578063cc99ece1146107c3578063d6387a3e146107d8578063d73dd623146107fc578063dd62ed3e14610820578063eea0d16814610847578063f0a7975f1461090f578063f2fde38b14610930578063f32b85e814610951575b600080fd5b34801561023557600080fd5b5061024a600160a060020a0360043516610966565b60408051918252519081900360200190f35b34801561026857600080fd5b5061027d600160a060020a0360043516610978565b005b34801561028b57600080fd5b506102946109be565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ce5781810151838201526020016102b6565b50505050905090810190601f1680156102fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031557600080fd5b5061032d600160a060020a0360043516602435610a4c565b604080519115158252519081900360200190f35b34801561034d57600080fd5b5061027d610ab2565b34801561036257600080fd5b5061036b610ad5565b6040805160ff9092168252519081900360200190f35b34801561038d57600080fd5b5061024a610ada565b3480156103a257600080fd5b5061032d600160a060020a0360043581169060243516604435610ae0565b3480156103cc57600080fd5b5061027d610b0d565b3480156103e157600080fd5b506103f963ffffffff60043581169060243516610b77565b6040518082606080838360005b8381101561041e578181015183820152602001610406565b5050505090500191505060405180910390f35b34801561043d57600080fd5b5061024a600435610c15565b34801561045557600080fd5b5061024a610c37565b34801561046a57600080fd5b5061036b610c49565b34801561047f57600080fd5b506103f963ffffffff60043581169060243516610c52565b3480156104a357600080fd5b5061027d610c7d565b3480156104b857600080fd5b506104d063ffffffff60043581169060243516610cd8565b6040805163ffffffff9092168252519081900360200190f35b3480156104f557600080fd5b5061027d610cec565b34801561050a57600080fd5b5061027d600435610d64565b34801561052257600080fd5b5061027d600160a060020a0360043516610e22565b34801561054357600080fd5b5060408051602060046024803582810135848102808701860190975280865261027d968435600160a060020a031696369660449591949091019291829185019084908082843750949750610e689650505050505050565b3480156105a657600080fd5b5061024a611332565b3480156105bb57600080fd5b506105ca60043560243561133d565b6040805192835260208301919091528051918290030190f35b3480156105ef57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027d9436949293602493928401919081908401838280828437509497506113ea9650505050505050565b34801561064857600080fd5b5061032d61144a565b34801561065d57600080fd5b5061024a61145a565b34801561067257600080fd5b5061032d600160a060020a0360043516602435611465565b34801561069657600080fd5b5061024a600160a060020a0360043516611555565b3480156106b757600080fd5b5061027d611570565b3480156106cc57600080fd5b506106d56115ed565b60408051600160a060020a039092168252519081900360200190f35b3480156106fd57600080fd5b5061024a6115fc565b34801561071257600080fd5b506106d5611607565b34801561072757600080fd5b5061024a600160a060020a0360043516602435604435611616565b34801561074e57600080fd5b50610294611652565b34801561076357600080fd5b506104d06116ad565b34801561077857600080fd5b5061032d600160a060020a03600435166024356116b9565b34801561079c57600080fd5b506104d063ffffffff600435166116dd565b3480156107ba57600080fd5b5061027d611720565b3480156107cf57600080fd5b506106d5611757565b3480156107e457600080fd5b506104d063ffffffff60043581169060243516611766565b34801561080857600080fd5b5061032d600160a060020a0360043516602435611772565b34801561082c57600080fd5b5061024a600160a060020a036004358116906024351661180b565b60408051602060046024803582810135848102808701860190975280865261027d968435600160a060020a031696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506118369650505050505050565b34801561091b57600080fd5b5061027d600160a060020a0360043516611984565b34801561093c57600080fd5b5061027d600160a060020a03600435166119ca565b34801561095d57600080fd5b5061024a611a5f565b600f6020526000908152604090205481565b600354600160a060020a0316331461098f57600080fd5b6015805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a445780601f10610a1957610100808354040283529160200191610a44565b820191906000526020600020905b815481529060010190602001808311610a2757829003601f168201915b505050505081565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600354600160a060020a03163314610ac957600080fd5b6012805460ff19169055565b600481565b60005481565b60175460009060a060020a900460ff1615610afa57600080fd5b610b05848484611a65565b949350505050565b600354600160a060020a03163314610b2457600080fd5b600e54600010610b3357600080fd5b600354600e54604051600160a060020a039092169181156108fc0291906000818181858888f19350505050158015610b6f573d6000803e3d6000fd5b506000600e55565b610b7f613b15565b336000908152600a6020908152604080832063ffffffff8087168552600990910190925290912090841660488110610bb357fe5b604080516060810191829052929190910190600390826000855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610bcd57509498975050505050505050565b3360009081526007602052604081208260488110610c2f57fe5b015492915050565b60065460ff16600a0a632faf08000281565b60065460ff1681565b610c5a613b15565b63ffffffff808316600090815260096020526040902090841660488110610bb357fe5b336000908152600f6020526040812054908111610c9957600080fd5b336000818152600f60205260408082208290555183156108fc0291849190818181858888f19350505050158015610cd4573d6000803e3d6000fd5b5050565b6000610ce5338484611bde565b9392505050565b600354600160a060020a03163314610d0357600080fd5b60175460a060020a900460ff161515610d1b57600080fd5b6017805474ff0000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b6000808211610d7257600080fd5b33600090815260016020526040902054821115610d8e57600080fd5b5033600081815260016020526040902054610daf908363ffffffff611e5d16565b600160a060020a03821660009081526001602052604081209190915554610ddc908363ffffffff611e5d16565b600055604080518381529051600160a060020a038316917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b600354600160a060020a03163314610e3957600080fd5b6014805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000806000806000806000806000601260009054906101000a900460ff1615610ea9573360009081526013602052604090205460ff161515610ea957600080fd5b60175460a060020a900460ff1615610ec057600080fd5b601754600160a060020a03161515610ed757600080fd5b600854601054610e109163ffffffff90911642030204985060008a51111515610eff57600080fd5b8a9750600160a060020a0388161515610f16573397505b60009650600095505b8951861015611291573360009081526007602052604090208a518b9088908110610f4557fe5b6020908102909101015163ffffffff1660488110610f5f57fe5b0154945060019350600092505b84831015611149573360009081526007602052604090208a518b9088908110610f9157fe5b6020908102909101015163ffffffff1660488110610fab57fe5b01805484908110610fb857fe5b90600052602060002001546fffffffffffffffffffffffffffffffff16915060806007600033600160a060020a0316600160a060020a031681526020019081526020016000208b8881518110151561100c57fe5b6020908102909101015163ffffffff166048811061102657fe5b0180548590811061103357fe5b90600052602060002001549060020a90046fffffffffffffffffffffffffffffffff169050808963ffffffff161080156110735750818963ffffffff1610155b156111185761109b88838b8d8a81518110151561108c57fe5b90602001906020020151611e6f565b3360009081526007602052604090208b51919098019763ffffffff8b16700100000000000000000000000000000000840217918c90899081106110da57fe5b6020908102909101015163ffffffff16604881106110f457fe5b0180548590811061110157fe5b90600052602060002001819055506000935061113e565b63ffffffff8916811161113e576111398883838d8a81518110151561108c57fe5b870196505b600183019250610f6c565b8315611197573360009081526007602052604081208b518c908990811061116c57fe5b6020908102909101015163ffffffff166048811061118657fe5b611191910182613b34565b50611286565b3360009081526007602052604090208a518b90889081106111b457fe5b6020908102909101015163ffffffff16604881106111ce57fe5b01805460001987019081106111df57fe5b6000918252602080832090910154338352600790915260409091208b518c908990811061120857fe5b6020908102909101015163ffffffff166048811061122257fe5b018054600090811061123057fe5b60009182526020808320909101929092553381526007909152604090208a51600191908c908990811061125f57fe5b6020908102909101015163ffffffff166048811061127957fe5b611284910182613b34565b505b856001019550610f1f565b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038a166004820152602481018990529051309163a9059cbb9160448083019260209291908290030181600087803b1580156112f957600080fd5b505af115801561130d573d6000803e3d6000fd5b505050506040513d602081101561132357600080fd5b50505050505050505050505050565b66038d7ea4c6800081565b336000908152600760205260408120819081908190866048811061135d57fe5b0180548690811061136a57fe5b6000918252602080832090910154338352600790915260409091206fffffffffffffffffffffffffffffffff909116925060809087604881106113a957fe5b018054879081106113b657fe5b90600052602060002001549060020a90046fffffffffffffffffffffffffffffffff16905081819350935050509250929050565b601454600090600160a060020a03163314806114105750600354600160a060020a031633145b151561141b57600080fd5b61142482611fca565b600160a060020a03166000908152601360205260409020805460ff191660011790555050565b60175460a060020a900460ff1681565b6601c6bf5263400081565b336000908152600260209081526040808320600160a060020a0386168452909152812054808311156114ba57336000908152600260209081526040808320600160a060020a03881684529091528120556114ef565b6114ca818463ffffffff611e5d16565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a031660009081526001602052604090205490565b600354600160a060020a0316331461158757600080fd5b60175460a060020a900460ff161561159e57600080fd5b6017805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600354600160a060020a031681565b660aa87bee53800081565b601754600160a060020a031681565b6007602052600083815260409020826048811061162f57fe5b0180548290811061163c57fe5b9060005260206000200160009250925050505481565b6005805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a445780601f10610a1957610100808354040283529160200191610a44565b60105463ffffffff1681565b60175460009060a060020a900460ff16156116d357600080fd5b610ce58383612093565b336000908152600a6020526040812063ffffffff8316604881106116fd57fe5b600891828204019190066004029054906101000a900463ffffffff169050919050565b600354600160a060020a0316331461173757600080fd5b6015805474ff000000000000000000000000000000000000000019169055565b601654600160a060020a031681565b6000610ce58383612176565b336000908152600260209081526040808320600160a060020a03861684529091528120546117a6908363ffffffff6122ed16565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b6012546000908190819060ff1615611866573360009081526013602052604090205460ff16151561186657600080fd5b60175460a060020a900460ff161561187d57600080fd5b855160001061188b57600080fd5b845186511461189957600080fd5b83518651146118a757600080fd5b869250600160a060020a03831615156118be573392505b600854601054610e109163ffffffff9091164203020491506118e086886122fc565b6118ed838388888861250d565b90506118fc8383888888612a6e565b3481111561190957600080fd5b336000908152600f60205260409020805434839003019055601554600160a060020a03161561197257601554604051600160a060020a039091169082156108fc029083906000818181858888f1935050505015801561196c573d6000803e3d6000fd5b5061197b565b600e8054820190555b50505050505050565b600354600160a060020a0316331461199b57600080fd5b6017805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600354600160a060020a031633146119e157600080fd5b600160a060020a03811615156119f657600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085481565b6000600160a060020a0383161515611a7c57600080fd5b600160a060020a038416600090815260016020526040902054821115611aa157600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115611ad157600080fd5b600160a060020a038416600090815260016020526040902054611afa908363ffffffff611e5d16565b600160a060020a038086166000908152600160205260408082209390935590851681522054611b2f908363ffffffff6122ed16565b600160a060020a038085166000908152600160209081526040808320949094559187168152600282528281203382529091522054611b73908363ffffffff611e5d16565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b6000808080808060048063ffffffff8916600160a060020a038c166000908152600d60209081526040808320949093049490940263ffffffff81811683529390945220919650891660488110611c3057fe5b60088104919091015460079091166004026101000a900463ffffffff16158015611cae5750600160a060020a0389166000908152600d6020908152604080832063ffffffff60048a0181168552925290912090891660488110611c8f57fe5b60088104919091015460079091166004026101000a900463ffffffff16155b15611cbc5760009550611e51565b50600160a060020a0388166000908152600a602052604081208594509092505b63ffffffff80881690851611611df95763ffffffff8085166000908152600983016020526040902090891660488110611d1157fe5b63ffffffff6017198701811660009081526009850160205260409020929091019350891660488110611d3f57fe5b015463ffffffff600719860181166000908152600984016020526040902068010000000000000000909204811691908a1660488110611d7a57fe5b015463ffffffff6003198701811660009081526009850160205260409020640100000000909204811691908b1660488110611db157fe5b015484546001979097019663ffffffff918216818316640100000000830484160168010000000000000000909204831691909101039190910391909103169290920191611cdc565b600160a060020a0389166000908152600d6020908152604080832063ffffffff808a168552925290912084918a1660488110611e3157fe5b600891828204019190066004029054906101000a900463ffffffff160195505b50505050509392505050565b600082821115611e6957fe5b50900390565b60408051600480825260a08201909252600091829160019183916060918291849160208201608080388339505060408051600480825260a082019092529295509050602082016080803883390190505091506004808063ffffffff8d16040201905063ffffffff808a1690821610611efd57611ef08b898c8c87878b612dcd565b9681019695509350611f5d565b611f0c8b898c8487878b612dcd565b96810196955093505b8863ffffffff168163ffffffff161015611f5d57611f4d8b8983611f4563ffffffff808f1690600484011661310d565b87878b612dcd565b9681019695509350600401611f15565b60408051600160a060020a038d16815263ffffffff808b166020830152808d16828401528b1660608201526080810188905290517feb20d87b6aef9216f658e1fcee101a026ada2f53b25e6fc37e6ed979b8d9f44f9181900360a00190a150939998505050505050505050565b60008080805b845182101561208a578482815181101515611fe757fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060308110801590612028575060398111155b156120395760308103836010020192505b6041811015801561204b5750605a8111155b1561205c5760378103836010020192505b6061811015801561206e5750607a8111155b1561207f5760578103836010020192505b600190910190611fd0565b50909392505050565b6000600160a060020a03831615156120aa57600080fd5b336000908152600160205260409020548211156120c657600080fd5b336000908152600160205260409020546120e6908363ffffffff611e5d16565b3360009081526001602052604080822092909255600160a060020a03851681522054612118908363ffffffff6122ed16565b600160a060020a0384166000818152600160209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b6000600463ffffffff831681900402808280805b63ffffffff8088169085161161229f5763ffffffff8085166000908152600960205260409020908916604881106121bd57fe5b63ffffffff6017198701811660009081526009602052604090209290910192508916604881106121e957fe5b015463ffffffff60071986018116600090815260096020526040902068010000000000000000909204811691908a166048811061222257fe5b015463ffffffff600319870181166000908152600960205260409020640100000000909204811691908b166048811061225757fe5b015483546001979097019663ffffffff91821681831664010000000083048416016801000000000000000090920483169190910103919091039190910316919091019061218a565b63ffffffff8086166000908152600b6020526040902083918a16604881106122c357fe5b600891828204019190066004029054906101000a900463ffffffff16019550505050505092915050565b600082820183811015610ce557fe5b6060600080600080600080601560149054906101000a900460ff1615612502578851604051908082528060200260200182016040528015612347578160200160208202803883390190505b50965060009550600094505b885185101561240d5760009350600092505b858310156123bd57888581518110151561237b57fe5b9060200190602002015163ffffffff16878481518110151561239957fe5b9060200190602002015114156123b257600193506123bd565b600190920191612365565b8315156124025788858151811015156123d257fe5b9060200190602002015163ffffffff1687878151811015156123f057fe5b60209081029091010152600195909501945b600190940193612353565b600160a060020a0388166000908152601160205260409020541515612478576001861461243957600080fd5b61245a87600081518110151561244b57fe5b90602001906020020151613137565b600160a060020a038916600090815260116020526040902055612502565b5050600160a060020a038616600090815260116020526040812054909350805b858510156124e657600087868151811015156124b057fe5b6020908102909101015160020a8316116124c957600080fd5b6124da878681518110151561244b57fe5b60019095019417612498565b600160a060020a03881660009081526011602052604090208190555b505050505050505050565b63ffffffff84166000818152600960208181526040808420600160a060020a038b168552600a8352818520958552949092019052812090918291829190825b8851811015612a5f57878181518110151561256357fe5b9060200190602002015163ffffffff166004148061259e5750878181518110151561258a57fe5b9060200190602002015163ffffffff166008145b806125c6575087818151811015156125b257fe5b9060200190602002015163ffffffff166018145b15156125d157600080fd5b87818151811015156125df57fe5b9060200190602002015163ffffffff16600414156126e657868181518110151561260557fe5b90602001906020020151838a8381518110151561261e57fe5b6020908102909101015163ffffffff166048811061263857fe5b01805463ffffffff19811663ffffffff9182169390930116919091179055865187908290811061266457fe5b90602001906020020151828a8381518110151561267d57fe5b6020908102909101015163ffffffff166048811061269757fe5b01805463ffffffff19811663ffffffff918216939093011691909117905586516601c6bf52634000908890839081106126cc57fe5b9060200190602002015163ffffffff160285019450612940565b87818151811015156126f457fe5b9060200190602002015163ffffffff166008141561280057868181518110151561271a57fe5b90602001906020020151838a8381518110151561273357fe5b6020908102909101015163ffffffff166048811061274d57fe5b01805463ffffffff6401000000008083048216949094011690920267ffffffff0000000019909216919091179055865187908290811061278957fe5b90602001906020020151828a838151811015156127a257fe5b6020908102909101015163ffffffff16604881106127bc57fe5b01805463ffffffff64010000000080830482169094011690920267ffffffff0000000019909216919091179055865166038d7ea4c68000908890839081106126cc57fe5b878181518110151561280e57fe5b9060200190602002015163ffffffff166018141561294057868181518110151561283457fe5b90602001906020020151838a8381518110151561284d57fe5b6020908102909101015163ffffffff166048811061286757fe5b01805463ffffffff68010000000000000000808304821694909401169092026bffffffff00000000000000001990921691909117905586518790829081106128ab57fe5b90602001906020020151828a838151811015156128c457fe5b6020908102909101015163ffffffff16604881106128de57fe5b01805463ffffffff680100000000000000008083048216909401169092026bffffffff0000000000000000199092169190911790558651660aa87bee5380009088908390811061292a57fe5b9060200190602002015163ffffffff1602850194505b868181518110151561294e57fe5b90602001906020020151840193507f66412e9e4538ab9be49dd3e9c38afd30dc90b3bfdfe105047cf5cc945c311af68b8a8381518110151561298c57fe5b906020019060200201518c8b858151811015156129a557fe5b906020019060200201518e018b868151811015156129bf57fe5b602090810290910181015160408051600160a060020a03909716875263ffffffff9586169287019290925292841685820152908316606085015291166080830152519081900360a00190a1612a578982815181101515612a1b57fe5b9060200190602002015163ffffffff168b63ffffffff168a84815181101515612a4057fe5b906020019060200201518d0163ffffffff166131b5565b60010161254c565b50929998505050505050505050565b600160a060020a0385166000908152600d602052604081208190600487810191600889019160188a0191600163ffffffff8c16839004019091029085805b8b51811015612dbd578b81815181101515612ac357fe5b9060200190602002015198508981815181101515612add57fe5b9060200190602002015197508a81815181101515612af757fe5b9060200190602002015163ffffffff1660041415612bdb578391505b63ffffffff80881690831611612bd65763ffffffff8083166000908152600b6020526040902089918b1660488110612b4757fe5b6008810491909101805460079092166004026101000a63ffffffff81810219841693829004811694909401841602919091179055828116600090815260208590526040902089918b1660488110612b9a57fe5b60088104909101805463ffffffff6004600790941684026101000a80830482169095018116850294021916929092179091559190910190612b13565b612db5565b8a81815181101515612be957fe5b9060200190602002015163ffffffff1660081415612cc8578391505b63ffffffff80871690831611612bd65763ffffffff8083166000908152600b6020526040902089918b1660488110612c3957fe5b6008810491909101805460079092166004026101000a63ffffffff81810219841693829004811694909401841602919091179055828116600090815260208590526040902089918b1660488110612c8c57fe5b60088104909101805463ffffffff6004600790941684026101000a80830482169095018116850294021916929092179091559190910190612c05565b8a81815181101515612cd657fe5b9060200190602002015163ffffffff1660181415612db5578391505b63ffffffff80861690831611612db55763ffffffff8083166000908152600b6020526040902089918b1660488110612d2657fe5b6008810491909101805460079092166004026101000a63ffffffff81810219841693829004811694909401841602919091179055828116600090815260208590526040902089918b1660488110612d7957fe5b60088104909101805463ffffffff6004600790941684026101000a80830482169095018116850294021916929092179091559190910190612cf2565b600101612aac565b5050505050505050505050505050565b600160a060020a0387166000908152600d60209081526040808320600463ffffffff8a811682900490910281168552925282208391839182918291908c1660488110612e1557fe5b60088104919091015460079091166004026101000a900463ffffffff16158015612e9c5750600160a060020a038c166000908152600d60209081526040808320600463ffffffff8f81168290048202909101811685529252909120908c1660488110612e7d57fe5b60088104919091015460079091166004026101000a900463ffffffff16155b15612ea6576130fe565b612eb48c8c8c8c8c8c613391565b601863ffffffff8b811691909104166000908152600c60205260409020549250821515612ff557601863ffffffff8b160491505b600063ffffffff831610612f225763ffffffff82166000908152600c602052604090205415612f1657612f22565b60001990910190612ee8565b63ffffffff82166000908152600c602052604090205492506001909101905b601863ffffffff8b160463ffffffff168263ffffffff16111515612fb65761271061270c84020492508363ffffffff168260188c63ffffffff16811515612f8457fe5b040363ffffffff161015612fab5763ffffffff82166000908152600c602052604090208390555b816001019150612f41565b600182601863ffffffff8d1604030363ffffffff168463ffffffff161115612ff057600182601863ffffffff8d1604030384039350612ff5565b600093505b601754601054604080517f0eb3f993000000000000000000000000000000000000000000000000000000008152610e108e0263ffffffff9384160183166004820152918e16602483015251600160a060020a0390921691630eb3f993916044808201926020929091908290030181600087803b15801561307457600080fd5b505af1158015613088573d6000803e3d6000fd5b505050506040513d602081101561309e57600080fd5b505163ffffffff169050600081116130b557600080fd5b60486018600a83860204040492506130d28a8a03888a8685613a2c565b945080600a14156130eb57600a600886020494506130fe565b80600514156130fe57600a600686020494505b50505097509795505050505050565b60008167ffffffffffffffff168367ffffffffffffffff16106131305781610ce5565b5090919050565b60006008820460078316600284900a60001983018411613160576008600019840102820160020a175b600983600101101561317a5760086001840102820160020a175b6000600019830110613195576000196008840283010160020a175b6008826001011015610b05576008929092020160010160020a1792915050565b3360009081526007602052604081208190819086604881106131d357fe5b015492508215156132295733600090815260076020526040902086604881106131f857fe5b0180546001810182556000918252602090912070010000000000000000000000000000000086028717910155613389565b336000908152600760205260409020866048811061324357fe5b018054600019850190811061325457fe5b6000918252602080832090910154338352600790915260409091206fffffffffffffffffffffffffffffffff9091169250608090876048811061329357fe5b01805460001986019081106132a457fe5b90600052602060002001549060020a90046fffffffffffffffffffffffffffffffff1690508185101580156132d857508085105b15613342578381116132ea57836132ec565b805b3360009081526007602052604090209094507001000000000000000000000000000000008502831790876048811061332057fe5b018054600019860190811061333157fe5b600091825260209091200155613389565b336000908152600760205260409020866048811061335c57fe5b01805460018101825560009182526020909120700100000000000000000000000000000000860287179101555b505050505050565b6000808080808080600463ffffffff8c8c031611156133af57600080fd5b600160a060020a038d166000908152600a60205260408120600463ffffffff8e1681900402985090965086955091505b63ffffffff808c16908816116135f45763ffffffff80881660009081526009840160205260409020908d166048811061341457fe5b63ffffffff808a1660009081526009602052604090209290910195508d166048811061343c57fe5b63ffffffff6017198a01811660009081526009602052604090209290910194508d166048811061346857fe5b015463ffffffff60071989018116600090815260096020526040902068010000000000000000909204811691908e16604881106134a157fe5b015463ffffffff6003198a0181166000908152600960205260409020640100000000909204811691908f16604881106134d657fe5b015485546017198b0163ffffffff90811660009081526009880160205260409020928116828216640100000000840483160168010000000000000000909304821692909201919091039290920392909203811696909601958d166048811061353a57fe5b015463ffffffff600719890181166000908152600985016020526040902068010000000000000000909204811691908e166048811061357557fe5b015463ffffffff6003198a01811660009081526009860160205260409020640100000000909204811691908f16604881106135ac57fe5b0154865460019a909a019963ffffffff9182168183166401000000008304841601680100000000000000009092048316919091010391909103919091031695909501946133df565b84600b6000600460ff16600460ff168f63ffffffff1681151561361357fe5b040263ffffffff1663ffffffff1681526020019081526020016000208d63ffffffff1660488110151561364257fe5b600891828204019190066004029054906101000a900463ffffffff160189600081518110151561366e57fe5b9060200190602002019063ffffffff16908163ffffffff168152505085600d60008f600160a060020a0316600160a060020a031681526020019081526020016000206000016000600460ff16600460ff168f63ffffffff168115156136cf57fe5b040263ffffffff1663ffffffff1681526020019081526020016000208d63ffffffff166048811015156136fe57fe5b600891828204019190066004029054906101000a900463ffffffff160188600081518110151561372a57fe5b63ffffffff9092166020928302909101909101525060018a810196505b8963ffffffff168763ffffffff1610156113235763ffffffff80881660009081526009840160205260409020908d166048811061378057fe5b63ffffffff808a1660009081526009602052604090209290910195508d16604881106137a857fe5b63ffffffff6017198a01811660009081526009602052604090209290910194508d16604881106137d457fe5b015463ffffffff60071989018116600090815260096020526040902068010000000000000000909204811691908e166048811061380d57fe5b015463ffffffff6003198a0181166000908152600960205260409020640100000000909204811691908f166048811061384257fe5b01600060088104919091015460079091166004026101000a900463ffffffff1685600260088104919091015460079091166004026101000a900463ffffffff1686600160088104919091015460079091166004026101000a900463ffffffff16876000600891828204019190066004029054906101000a900463ffffffff168e6001880363ffffffff168151811015156138d857fe5b90602001906020020151010101030303898263ffffffff168151811015156138fc57fe5b63ffffffff92831660209182029092018101919091526017198901821660009081526009850190915260409020908d166048811061393657fe5b015463ffffffff600719890181166000908152600985016020526040902068010000000000000000909204811691908e166048811061397157fe5b015463ffffffff6003198a01811660009081526009860160205260409020640100000000909204811691908f16604881106139a857fe5b015486548b5163ffffffff928316926801000000000000000083048116926401000000008104821692908216918f916000198a019091169081106139e857fe5b90602001906020020151010101030303888263ffffffff16815181101515613a0c57fe5b63ffffffff90921660209283029091019091015260019687019601613747565b600080805b8763ffffffff16811015613afb578681815181101515613a4d57fe5b9060200190602002015163ffffffff16600014158015613a8b57508581815181101515613a7657fe5b9060200190602002015163ffffffff16600014155b15613af3578681815181101515613a9e57fe5b60209081029091010151600654875163ffffffff90921691613aed9160ff16600a0a90899085908110613acd57fe5b9060200190602002015163ffffffff1688811515613ae757fe5b04613b06565b02820191505b600101613a31565b509695505050505050565b60008183106131305781610ce5565b6060604051908101604052806003906020820280388339509192915050565b815481835581811115613b5857600083815260209020613b58918101908301613b5d565b505050565b613b7b91905b80821115613b775760008155600101613b63565b5090565b905600a165627a7a72305820dc5d2468772c663cd5ce953cca176fdb6f401a974d4f9b71ef2c897e11a53b3a0029

   Swarm Source:
bzzr://dc5d2468772c663cd5ce953cca176fdb6f401a974d4f9b71ef2c897e11a53b3a

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward