Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 28689 txns
Token Tracker: XinFin XDCE (XDCE)
Misc:
Address Watch: Add To Watch List
Contract Creator: 0xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7aat txn 0x334b637761caf4362c017debec9d2d00986369c86471180e4ab16d81c66165f2
Token Balance:
 Latest 25 transactions from a total of 28689 transactions

TxHash Age From To Value [TxFee]
0x8d9c21302eb4400d27e80c6f65aedaf4df5235b5ef940cdfdf18f0e4ea8e5aec5 mins agoMercatox  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000785295
0x531c2a490dda8361d65f741860f8108cab7fdaeca7170d3dbe01493b9979b3e95 mins agoMercatox  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000785295
0xdf47c44480f8aff2d95e835898b1e01ecb551b706463a8a134c7f8e9d9cb2aeb7 mins agoMercatox  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000785295
0xb4c51c2a9fab2bbb7a1c5b4007f3821f6adc003876d874388f6deb655abc710b14 mins agoCoss.io  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00052395
0xbbf4cfff9c0a31e6e98f874c8403e1c96ade57ef9a98dc7ef3e1498b1396cb351 hr 14 mins agoCoss.io  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00052395
0xf3395f87fef1159822f54c498eb5a670a482fa330def94850cc5fb2ee20e2f9c1 hr 39 mins ago0x919a772f1bb8e36eaaa0d0b8e0ec578a04227810  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00017916
0x06ba64be1d7b2245cf40c9906d5211985554fd1f8460a404f7ad8c942edcca531 hr 45 mins ago0x8698303abb14dfc61d6d746e7d8a2e812159a430  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00074534
0x9f3fa813d50c341c0c351b9d7a4bf9c1f51baec128f486edf57834f2bf704a1f1 hr 47 mins ago0x8698303abb14dfc61d6d746e7d8a2e812159a430  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00104662
0x038fdc52b3e29c68065d5db6a7d80c56a8fbbe190c23277a7ac5be4841b382ef2 hrs 7 mins ago0x5b15d4494fb399b417886d47c59cf55b09c1dcf4  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000738112
0xd319d867cfc290fcd251aba95c6b91913d1b4bfbd9447388eb82bd4f6f45f6812 hrs 14 mins ago0xbb7dcebd14938d0502ff87468c69e5457b079f15  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.0001145409
0x1daac81eb10d81e297090b36db03e3eee295b3c54ddff142350f75a5fb5fb2372 hrs 24 mins ago0xbb7dcebd14938d0502ff87468c69e5457b079f15  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.0001148673
0x1a5520afd59afde6861a7093cd56924a9e6a4d8a253e1cc32f411f3f1bcd6eb22 hrs 24 mins ago0x1402bc6d8cc453fa91f6287abcc133e21116853f  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.0002814052
0x02aeced97b4eb81c3b861da3d065432a474bd41102b1e230e6afc21d13b329542 hrs 57 mins ago0x250aaddc2834c61c7069a613df64d496571d5e09  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000562845
0x15673ba1e6c34c54506c8cb0e869aaa0d7c76a573e4856cbcf279701c08ed8593 hrs 14 mins ago0x34b4757afdf0fafa4595a05026a3e0ee3ff98bdc  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000157569
0xb639cfb87cb165b36d000e9c6f48b7632943b3f75441af279a68f1065c11a2453 hrs 16 mins ago0x0dc411b17d337af85d83ea5a3577d09132aae866  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000262661
0x066c479f1fbae23039961e86fac50e8fd67aa134b33f52c1b9a8b6cdb017e9bd3 hrs 16 mins ago0x1f9e1afe744f41e3e4d6e33be3d3f7c969981615  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000270276
0x2c6b6f527ed9321a07cde66cfce087c288008a83692e7f94d918375083f964b83 hrs 27 mins ago0x1402bc6d8cc453fa91f6287abcc133e21116853f  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.0002814052
0x1148d9d9afd9f690a961ceb6506100f1d7e0c10809aae1f74034cb543a64b7e43 hrs 37 mins ago0x1402bc6d8cc453fa91f6287abcc133e21116853f  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.0002814052
0xdaa89fb748cbd1c5cf6774d4788ed6ce9dd3331abced1a65d07a6410b490582b3 hrs 37 mins agoCoss.io  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00043967
0xa3afda3b65c5e6612daf4b8b546fa3fef3f58b1bfbaa0a4a95676817b636ceeb3 hrs 38 mins ago0x76dd75aa51a8ce2883df44f6d6626789b6bc8ebf  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00022523
0xa8a8540bf35fe56b1e3792a4c0592c43491a49c3cbe912bde8185c60d750b6ee3 hrs 45 mins ago0xb2cc3cdd53fc9a1aeaf3a68edeba2736238ddc5d  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000204342071
0x1ad214eda4b34631206948011f1d0a89c6e96792aa67aa7c0b9906db99e474d44 hrs 8 mins ago0x8df56e9d5d62ff8046f8a55c21abf26c7a8f18a2  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000467226
0xc6ebb7ba919f4b1a7274b3ff5d484da4129e148e25df0426c8fbb8a4a37151e04 hrs 9 mins ago0x98c24aa5bcfa4e921103dc58e0f62e164cc88468  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000700197
0xa584b520d3f6edd69b0aa6512eff5fca3b0882e53e159528b49dcd6cc9f821904 hrs 18 mins ago0xfbb8b569baa4a942dda5784e31b063a492917def  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.00037523
0xbe9dea1721bec0a103a0dbd82534d8594f4c2c5f50ba812cbf5b17d85e6a71474 hrs 40 mins ago0xb2cc3cdd53fc9a1aeaf3a68edeba2736238ddc5d  IN   0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20 Ether0.000247506433
[ 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
0x3ae72a5a8ceda0db790e356e1fc6559919a159165a7a16eb51e9641c9e210acf5252013249 days 3 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.15 Ether
0x702ca5045d613fb4d28a8c7b0f663763c92c1d7859c06b8b441842beb3d524705251883249 days 4 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.2 Ether
0xf7e5bb6157fcad2bc6e920f6d8bcde4d3ace424cb9a9fe943ace190bd8c05c3f5251586249 days 5 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.4 Ether
0xeb05d1e514d5c5f55b4bb9281cdd6ef3e7756e8a20e277b0c70633d700a8612a5251496249 days 5 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a1 Ether
0xcc6f6aa441ccad090afb8da4dfbf5a927ccc24904c4d6714a0fa41857ba7a0405251472249 days 5 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.71 Ether
0x797fee3ab677203559cb4befbcd1b4db152116660088f111dba1a8f50365bcf15251456249 days 5 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a1 Ether
0x660d94c02cdb5e49df2b6bcf5de5eac7c7c5b95aec0121b7ae835d1343d17ebe5251448249 days 5 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a1 Ether
0xcfa538a494f0b04377e08540501ed41189c0e866f2d4a9594fbce816661395505251440249 days 5 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a2.1 Ether
0x17316c442dffa10fe7a924258bd7a2e4cec7733de88581888d32ec7bfb6e0f265251427249 days 5 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.5 Ether
0x50df8d78618599e1154b13f122d00725a5e8d4a24baaf81d56a5b1c764a3733e5251424249 days 5 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.13 Ether
0xae91d4134b57386379c2a6b4e8289f7e8271907b97075c47734a0ccb2a7e9c0b5251397249 days 6 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a3.388605635 Ether
0x0aa423d0ca3c709a62d0b378e27fb8ce82d9327a38a166615d5c1922a67497475251237249 days 6 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a2 Ether
0xa4c4791758486d4de2395a0d0608a974b6a00651406a39f69715a30232aef6475251192249 days 6 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.3 Ether
0x432704696d0f016afe2a0e453c3bb14bb7f13d64558739fef886f01e63efef765251166249 days 6 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.88 Ether
0x63d57cb1d7bc67ab776402a9a26002f799006232958586dc42c11662c07c7f7e5251140249 days 7 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.25 Ether
0x174f8ec5f90af19d3042f615c85a3eec7a6d9178d6a1a5589a8dafe9204cc97d5251135249 days 7 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.29 Ether
0x39ee959036e55161b4211284869e9c8845f36c32c1894151c882977b6a122bad5251024249 days 7 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.1 Ether
0xc68aa188e407a97f68884da4c998b961775ef775053fdacd15bea596c259a6a35250933249 days 7 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.21 Ether
0xf4119dda6f6255299f6b533d8b9024cca928bfdba6d7ee8899255cd0cc036f5e5250909249 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a2.22129898 Ether
0x9e4e8e69eee5c0876f5ae50877b5d3cf230f0cbf6bec95e53630918256c79d9d5250826249 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.1 Ether
0x65b4404e31165404ca334ce943a20e2a01ce913b425da4d888a278ae9abd2cfb5250822249 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.07374179 Ether
0x359cc22cb5eb10bc901a8ec18428ad68cd3a6ea5dc2197bcaa9c39d592b92b775250816249 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.21 Ether
0x5e6dd1d794da0a4531a0a4c6256bffb170306818918a5ba2bf6117845f10af7f5250774249 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a0.03848 Ether
0x028e9ea2a8d2b0063d18ec83f35053a0cb32056e804c11abe1017ae31c0de9c55250721249 days 8 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a1 Ether
0xb41f841ebe33b1b2b0a84a24bff5b6d8223d8cb8c3807d052b184677611e552f5250669249 days 9 hrs ago0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf20xb5f3ee3744183a62b5fbcb8dc7929bb269a95d7a3 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Coin
Compiler Text: v0.4.19+commit.c4cbbb05
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.4;

/**
 * @title ERC20 interface
 * see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 {

  uint public totalSupply;
  uint public decimals;

  function balanceOf(address who) constant returns (uint);
  function allowance(address owner, address spender) constant returns (uint);

  function transfer(address to, uint value) returns (bool ok);
  function transferFrom(address from, address to, uint value) returns (bool ok);
  function approve(address spender, uint value) returns (bool ok);

  event Transfer(address indexed from, address indexed to, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);

}


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

  /* New owner which can be set in future */
  address public newOwner;

  /* event to indicate finally ownership has been succesfully transferred and accepted */
  event OwnershipTransferred(address indexed _from, address indexed _to);

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

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

  /**
   * 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) onlyOwner {
    require(_newOwner != address(0));
    newOwner = _newOwner;
  }

  /**
   * Allows the new owner toaccept ownership
   */
  function acceptOwnership() {
    require(msg.sender == newOwner);
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

/*
*This library is used to do mathematics safely
*/
contract SafeMathLib {
  function safeMul(uint a, uint b) returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function safeSub(uint a, uint b) returns (uint) {
    assert(b <= a);
    return a - b;
  }

  function safeAdd(uint a, uint b) returns (uint) {
    uint c = a + b;
    assert(c>=a);
    return c;
  }
}


/**
 * Upgrade agent interface inspired by Lunyr.
 * Taken and inspired from https://tokenmarket.net
 *
 * Upgrade agent transfers tokens to a new version of a token contract.
 * Upgrade agent can be set on a token by the upgrade master.
 *
 * Steps are
 * - Upgradeabletoken.upgradeMaster calls UpgradeableToken.setUpgradeAgent()
 * - Individual token holders can now call UpgradeableToken.upgrade()
 *   -> This results to call UpgradeAgent.upgradeFrom() that issues new tokens
 *   -> UpgradeableToken.upgrade() reduces the original total supply based on amount of upgraded tokens
 *
 * Upgrade agent itself can be the token contract, or just a middle man contract doing the heavy lifting.
 */
contract UpgradeAgent {

  uint public originalSupply;

  /** Interface marker */
  function isUpgradeAgent() public constant returns (bool) {
    return true;
  }

  /**
   * Upgrade amount of tokens to a new version.
   *
   * Only callable by UpgradeableToken.
   *
   * @param _tokenHolder Address that wants to upgrade its tokens
   * @param _amount Number of tokens to upgrade. The address may consider to hold back some amount of tokens in the old version.
   */
  function upgradeFrom(address _tokenHolder, uint256 _amount) external;
}


/**
 * Standard ERC20 token with Short Hand Attack and approve() race condition mitigation.
 *
 * Based on code by FirstBlood:
 * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, SafeMathLib {

  /* Actual balances of token holders */
  mapping(address => uint) balances;

  /* approve() allowances */
  mapping (address => mapping (address => uint)) allowed;

  function transfer(address _to, uint _value) returns (bool success) {

      // SafMaths will automatically handle the overflow checks
      balances[msg.sender] = safeSub(balances[msg.sender],_value);
      balances[_to] = safeAdd(balances[_to],_value);
      Transfer(msg.sender, _to, _value);
      return true;

  }

  function transferFrom(address _from, address _to, uint _value) returns (bool success) {

    uint _allowance = allowed[_from][msg.sender];

    // Check is not needed because safeSub(_allowance, _value) will already throw if this condition is not met
    balances[_to] = safeAdd(balances[_to],_value);
    balances[_from] = safeSub(balances[_from],_value);
    allowed[_from][msg.sender] = safeSub(_allowance,_value);
    Transfer(_from, _to, _value);
    return true;

  }

  function balanceOf(address _owner) constant returns (uint balance) {
    return balances[_owner];
  }

  function approve(address _spender, uint _value) returns (bool success) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    require(!((_value != 0) && (allowed[msg.sender][_spender] != 0)));

    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  function allowance(address _owner, address _spender) constant returns (uint remaining) {
    return allowed[_owner][_spender];
  }

}


/**
 * A token upgrade mechanism where users can opt-in amount of tokens to the next smart contract revision.
 * First envisioned by Golem and Lunyr projects.
 * Taken and inspired from https://tokenmarket.net
 */
contract XinfinUpgradeableToken is StandardToken {

  /** Contract / person who can set the upgrade path. This can be the same as team multisig wallet, as what it is with its default value. */
  address public upgradeMaster;

  /** The next contract where the tokens will be migrated. */
  UpgradeAgent public upgradeAgent;

  /** How many tokens we have upgraded by now. */
  uint256 public totalUpgraded;

  /**
   * Upgrade states.
   *
   * - NotAllowed: The child contract has not reached a condition where the upgrade can bgun
   * - WaitingForAgent: Token allows upgrade, but we don't have a new agent yet
   * - ReadyToUpgrade: The agent is set, but not a single token has been upgraded yet
   * - Upgrading: Upgrade agent is set and the balance holders can upgrade their tokens
   *
   */
  enum UpgradeState {Unknown, NotAllowed, WaitingForAgent, ReadyToUpgrade, Upgrading}

  /**
   * Somebody has upgraded some of his tokens.
   */
  event Upgrade(address indexed _from, address indexed _to, uint256 _value);

  /**
   * New upgrade agent available.
   */
  event UpgradeAgentSet(address agent);

  /**
   * Do not allow construction without upgrade master set.
   */
  function XinfinUpgradeableToken(address _upgradeMaster) {
    upgradeMaster = _upgradeMaster;
  }

  /**
   * Allow the token holder to upgrade some of their tokens to a new contract.
   */
  function upgrade(uint256 value) public {

      UpgradeState state = getUpgradeState();
      require(state == UpgradeState.ReadyToUpgrade || state == UpgradeState.Upgrading);

      // Validate input value.
      require(value != 0);

      balances[msg.sender] = safeSub(balances[msg.sender], value);

      // Take tokens out from circulation
      totalSupply = safeSub(totalSupply, value);
      totalUpgraded = safeAdd(totalUpgraded, value);

      // Upgrade agent reissues the tokens
      upgradeAgent.upgradeFrom(msg.sender, value);
      Upgrade(msg.sender, upgradeAgent, value);
  }

  /**
   * Set an upgrade agent that handles
   */
  function setUpgradeAgent(address agent) external {


      // The token is not yet in a state that we could think upgrading
      require(canUpgrade());

      require(agent != 0x0);
      // Only a master can designate the next agent
      require(msg.sender == upgradeMaster);
      // Upgrade has already begun for an agent
      require(getUpgradeState() != UpgradeState.Upgrading);

      upgradeAgent = UpgradeAgent(agent);

      // Bad interface
      require(upgradeAgent.isUpgradeAgent());
      // Make sure that token supplies match in source and target
      require(upgradeAgent.originalSupply() == totalSupply);

      UpgradeAgentSet(upgradeAgent);
  }

  /**
   * Get the state of the token upgrade.
   */
  function getUpgradeState() public constant returns(UpgradeState) {
    if(!canUpgrade()) return UpgradeState.NotAllowed;
    else if(address(upgradeAgent) == 0x00) return UpgradeState.WaitingForAgent;
    else if(totalUpgraded == 0) return UpgradeState.ReadyToUpgrade;
    else return UpgradeState.Upgrading;
  }

  /**
   * Change the upgrade master.
   *
   * This allows us to set a new owner for the upgrade mechanism.
   */
  function setUpgradeMaster(address master) public {
      require(master != 0x0);
      require(msg.sender == upgradeMaster);
      upgradeMaster = master;
  }

  /**
   * Child contract can enable to provide the condition when the upgrade can begun.
   */
  function canUpgrade() public constant returns(bool) {
     return true;
  }

}


/**
 * Define interface for releasing the token transfer after a successful crowdsale.
 * Taken and inspired from https://tokenmarket.net
 */
contract ReleasableToken is ERC20, Ownable {

  /* The finalizer contract that allows unlift the transfer limits on this token */
  address public releaseAgent;

  /** A crowdsale contract can release us to the wild if ICO success. If false we are are in transfer lock up period.*/
  bool public released = false;

  /** Map of agents that are allowed to transfer tokens regardless of the lock down period. These are crowdsale contracts and possible the team multisig itself. */
  mapping (address => bool) public transferAgents;

  /**
   * Limit token transfer until the crowdsale is over.
   *
   */
  modifier canTransfer(address _sender) {

    if(!released) {
        require(transferAgents[_sender]);
    }

    _;
  }

  /**
   * Set the contract that can call release and make the token transferable.
   */
  function setReleaseAgent(address addr) onlyOwner inReleaseState(false) public {

    // We don't do interface check here as we might want to a normal wallet address to act as a release agent
    releaseAgent = addr;
  }

  /**
   * Owner can allow a particular address (a crowdsale contract) to transfer tokens despite the lock up period.
   */
  function setTransferAgent(address addr, bool state) onlyOwner inReleaseState(false) public {
    transferAgents[addr] = state;
  }

  /**
   * One way function to release the tokens to the wild.
   *
   * Can be called only from the release agent that is the final ICO contract. It is only called if the crowdsale has been success (first milestone reached).
   */
  function releaseTokenTransfer() public onlyReleaseAgent {
    released = true;
  }

  /** The function can be called only before or after the tokens have been releasesd */
  modifier inReleaseState(bool releaseState) {
    require(releaseState == released);
    _;
  }

  /** The function can be called only by a whitelisted release agent. */
  modifier onlyReleaseAgent() {
    require(msg.sender == releaseAgent);
    _;
  }


  function transfer(address _to, uint _value) canTransfer(msg.sender) returns (bool success) {
    // Call StandardToken.transfer()
   return super.transfer(_to, _value);
  }

  function transferFrom(address _from, address _to, uint _value) canTransfer(_from) returns (bool success) {
    // Call StandardToken.transferFrom()
    return super.transferFrom(_from, _to, _value);
  }

}


contract Coin is XinfinUpgradeableToken, ReleasableToken {

  event UpdatedTokenInformation(string newName, string newSymbol);

  /* name of the token */
  string public name = "XinFin XDCE";

  /* symbol of the token */
  string public symbol = "XDCE";

  /* token decimals to handle fractions */
  uint public decimals = 18;

  //Crowdsale running
  bool public isCrowdsaleOpen=false;

  /* initial token supply */
  uint public totalSupply = 15000000000 * (10 ** decimals);
  uint public onSaleTokens = 10000000000 * (10 ** decimals);


  uint tokensForPublicSale = 0;

  address contractAddress;

  uint256 pricePerToken = 7518796992481; //1 Eth = 133000 XDCE

  uint minETH = 0 * 10**decimals; // 0 ether
  uint maxETH = 15 * 10**decimals; // 15 ether

  function Coin() XinfinUpgradeableToken(msg.sender) {

    owner = msg.sender;
    contractAddress = address(this);
    //tokens are kept in contract address rather than owner
    balances[contractAddress] = totalSupply;
  }

  /* function to update token name and symbol */
  function updateTokenInformation(string _name, string _symbol) onlyOwner {
    name = _name;
    symbol = _symbol;
    UpdatedTokenInformation(name, symbol);
  }


  function sendTokensToOwner(uint _tokens) onlyOwner returns (bool ok){
      require(balances[contractAddress] >= _tokens);
      balances[contractAddress] = safeSub(balances[contractAddress],_tokens);
      balances[owner] = safeAdd(balances[owner],_tokens);
      return true;
  }


  /* single address */
  function sendTokensToInvestors(address _investor, uint _tokens) onlyOwner returns (bool ok){
      require(balances[contractAddress] >= _tokens);
      onSaleTokens = safeSub(onSaleTokens, _tokens);
      balances[contractAddress] = safeSub(balances[contractAddress],_tokens);
      balances[_investor] = safeAdd(balances[_investor],_tokens);
      return true;
  }



  /* A dispense feature to allocate some addresses with Xinfin tokens
  * calculation done using token count
  *  Can be called only by owner
  */
  function dispenseTokensToInvestorAddressesByValue(address[] _addresses, uint[] _value) onlyOwner returns (bool ok){
     require(_addresses.length == _value.length);
     for(uint256 i=0; i<_addresses.length; i++){
        onSaleTokens = safeSub(onSaleTokens, _value[i]);
        balances[_addresses[i]] = safeAdd(balances[_addresses[i]], _value[i]);
        balances[contractAddress] = safeSub(balances[contractAddress], _value[i]);
     }
     return true;
  }


  function startCrowdSale() onlyOwner {
     isCrowdsaleOpen=true;
  }

   function stopCrowdSale() onlyOwner {
     isCrowdsaleOpen=false;
  }


 function setPublicSaleParams(uint _tokensForPublicSale, uint _min, uint _max, bool _crowdsaleStatus ) onlyOwner {
    require(_tokensForPublicSale != 0);
    require(_tokensForPublicSale <= onSaleTokens);
    tokensForPublicSale = _tokensForPublicSale;
    isCrowdsaleOpen=_crowdsaleStatus;
    require(_min >= 0);
    require(_max > 0);
    minETH = _min;
    maxETH = _max;
 }


 function setTotalTokensForPublicSale(uint _value) onlyOwner{
      require(_value != 0);
      tokensForPublicSale = _value;
  }

 function increaseSupply(uint value) onlyOwner returns (bool) {
  totalSupply = safeAdd(totalSupply, value);
  balances[contractAddress] = safeAdd(balances[contractAddress], value);
  Transfer(0x0, contractAddress, value);
  return true;
}

function decreaseSupply(uint value) onlyOwner returns (bool) {
  balances[contractAddress] = safeSub(balances[contractAddress], value);
  totalSupply = safeSub(totalSupply, value);
  Transfer(contractAddress, 0x0, value);
  return true;
}

  function setMinAndMaxEthersForPublicSale(uint _min, uint _max) onlyOwner{
      require(_min >= 0);
      require(_max > 0);
      minETH = _min;
      maxETH = _max;
  }

  function updateTokenPrice(uint _value) onlyOwner{
      require(_value != 0);
      pricePerToken = _value;
  }


  function updateOnSaleSupply(uint _newSupply) onlyOwner{
      require(_newSupply != 0);
      onSaleTokens = _newSupply;
  }


  function buyTokens() public payable returns(uint tokenAmount) {

    uint _tokenAmount;
    uint multiplier = (10 ** decimals);
    uint weiAmount = msg.value;

    require(isCrowdsaleOpen);
    //require(whitelistedAddress[msg.sender]);

    require(weiAmount >= minETH);
    require(weiAmount <= maxETH);

    _tokenAmount =  safeMul(weiAmount,multiplier) / pricePerToken;

    require(_tokenAmount > 0);

    //safe sub will automatically handle overflows
    tokensForPublicSale = safeSub(tokensForPublicSale, _tokenAmount);
    onSaleTokens = safeSub(onSaleTokens, _tokenAmount);
    balances[contractAddress] = safeSub(balances[contractAddress],_tokenAmount);
    //assign tokens
    balances[msg.sender] = safeAdd(balances[msg.sender], _tokenAmount);

    //send money to the owner
    require(owner.send(weiAmount));

    return _tokenAmount;

  }

  // There is no need for vesting. It will be done manually by manually releasing tokens to certain addresses

  function() payable {
      buyTokens();
  }

  function destroyToken() public onlyOwner {
      selfdestruct(msg.sender);
  }

}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"}],"name":"updateTokenInformation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"state","type":"bool"}],"name":"setTransferAgent","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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokensForPublicSale","type":"uint256"},{"name":"_min","type":"uint256"},{"name":"_max","type":"uint256"},{"name":"_crowdsaleStatus","type":"bool"}],"name":"setPublicSaleParams","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"setTotalTokensForPublicSale","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setReleaseAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"destroyToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_min","type":"uint256"},{"name":"_max","type":"uint256"}],"name":"setMinAndMaxEthersForPublicSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isCrowdsaleOpen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"upgradeAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"upgradeMaster","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"updateTokenPrice","outputs":[],"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":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getUpgradeState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"transferAgents","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_investor","type":"address"},{"name":"_tokens","type":"uint256"}],"name":"sendTokensToInvestors","outputs":[{"name":"ok","type":"bool"}],"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":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"released","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"canUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"decreaseSupply","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeSub","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"increaseSupply","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopCrowdSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalUpgraded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addresses","type":"address[]"},{"name":"_value","type":"uint256[]"}],"name":"dispenseTokensToInvestorAddressesByValue","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeMul","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buyTokens","outputs":[{"name":"tokenAmount","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"releaseAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"agent","type":"address"}],"name":"setUpgradeAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newSupply","type":"uint256"}],"name":"updateOnSaleSupply","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"onSaleTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeAdd","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokens","type":"uint256"}],"name":"sendTokensToOwner","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startCrowdSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"master","type":"address"}],"name":"setUpgradeMaster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newName","type":"string"},{"indexed":false,"name":"newSymbol","type":"string"}],"name":"UpdatedTokenInformation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Upgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"agent","type":"address"}],"name":"UpgradeAgentSet","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"},{"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"}]

  Contract Creation Code Switch To Opcodes View
60606040526000600960146101000a81548160ff0219169083151502179055506040805190810160405280600b81526020017f58696e46696e2058444345000000000000000000000000000000000000000000815250600b90805190602001906200006c929190620002a2565b506040805190810160405280600481526020017f5844434500000000000000000000000000000000000000000000000000000000815250600c9080519060200190620000ba929190620002a2565b506012600d556000600e60006101000a81548160ff021916908315150217905550600d54600a0a64037e11d60002600f55600d54600a0a6402540be4000260105560006011556506d69b394fe1601355600d54600a0a600002601455600d54600a0a600f0260155534156200012e57600080fd5b3380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f5460026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000351565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002e557805160ff191683800117855562000316565b8280016001018555821562000316579182015b8281111562000315578251825591602001919060010190620002f8565b5b50905062000325919062000329565b5090565b6200034e91905b808211156200034a57600081600090555060010162000330565b5090565b90565b61378f80620003616000396000f30060606040526004361061023b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025f9bc11461024657806302f652a3146102e657806306fdde031461032a578063095ea7b3146103b857806310001fdd1461041257806317eef4cd1461045257806318160ddd1461047557806323b872dd1461049e57806329ff4f53146105175780632e4eaa1514610550578063313ce567146105655780633a789ffb1461058e57806345977d03146105ba5780635a3320ff146105dd5780635de4ccb01461060a5780635f412d4f1461065f578063600440cb14610674578063676c0d77146106c957806370a08231146106ec57806379ba5097146107395780638444b3911461074e578063867c285714610785578063870488f9146107d65780638da5cb5b1461083057806395d89b411461088557806396132521146109135780639738968c1461094057806398e52f9a1461096d578063a293d1e8146109a8578063a9059cbb146109e8578063b921e16314610a42578063c67c6eab14610a7d578063c752ff6214610a92578063cfae2c6514610abb578063d05c78da14610b6d578063d0febe4c14610bad578063d1f276d314610bcb578063d4ee1d9014610c20578063d7e7088a14610c75578063da23d18b14610cae578063dd62ed3e14610cd1578063df90061b14610d3d578063e6cb901314610d66578063f12ddd2b14610da6578063f2b45ac114610de1578063f2fde38b14610df6578063ffeb7d7514610e2f575b610243610e68565b50005b341561025157600080fd5b6102e4600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506110c9565b005b34156102f157600080fd5b610328600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035151590602001909190505061129c565b005b341561033557600080fd5b61033d611377565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561037d578082015181840152602081019050610362565b50505050905090810190601f1680156103aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103c357600080fd5b6103f8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611415565b604051808215151515815260200191505060405180910390f35b341561041d57600080fd5b610450600480803590602001909190803590602001909190803590602001909190803515159060200190919050506115a0565b005b341561045d57600080fd5b6104736004808035906020019091905050611671565b005b341561048057600080fd5b6104886116e7565b6040518082815260200191505060405180910390f35b34156104a957600080fd5b6104fd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506116ed565b604051808215151515815260200191505060405180910390f35b341561052257600080fd5b61054e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611774565b005b341561055b57600080fd5b610563611838565b005b341561057057600080fd5b6105786118ad565b6040518082815260200191505060405180910390f35b341561059957600080fd5b6105b860048080359060200190919080359060200190919050506118b3565b005b34156105c557600080fd5b6105db6004808035906020019091905050611940565b005b34156105e857600080fd5b6105f0611bb4565b604051808215151515815260200191505060405180910390f35b341561061557600080fd5b61061d611bc7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066a57600080fd5b610672611bed565b005b341561067f57600080fd5b610687611c66565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106d457600080fd5b6106ea6004808035906020019091905050611c8c565b005b34156106f757600080fd5b610723600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d02565b6040518082815260200191505060405180910390f35b341561074457600080fd5b61074c611d4b565b005b341561075957600080fd5b610761611eaa565b6040518082600481111561077157fe5b60ff16815260200191505060405180910390f35b341561079057600080fd5b6107bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f29565b604051808215151515815260200191505060405180910390f35b34156107e157600080fd5b610816600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611f49565b604051808215151515815260200191505060405180910390f35b341561083b57600080fd5b61084361218f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561089057600080fd5b6108986121b5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108d85780820151818401526020810190506108bd565b50505050905090810190601f1680156109055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561091e57600080fd5b610926612253565b604051808215151515815260200191505060405180910390f35b341561094b57600080fd5b610953612266565b604051808215151515815260200191505060405180910390f35b341561097857600080fd5b61098e600480803590602001909190505061226f565b604051808215151515815260200191505060405180910390f35b34156109b357600080fd5b6109d2600480803590602001909190803590602001909190505061242a565b6040518082815260200191505060405180910390f35b34156109f357600080fd5b610a28600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612443565b604051808215151515815260200191505060405180910390f35b3415610a4d57600080fd5b610a6360048080359060200190919050506124c8565b604051808215151515815260200191505060405180910390f35b3415610a8857600080fd5b610a90612683565b005b3415610a9d57600080fd5b610aa56126fc565b6040518082815260200191505060405180910390f35b3415610ac657600080fd5b610b5360048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612702565b604051808215151515815260200191505060405180910390f35b3415610b7857600080fd5b610b976004808035906020019091908035906020019091905050612978565b6040518082815260200191505060405180910390f35b610bb5610e68565b6040518082815260200191505060405180910390f35b3415610bd657600080fd5b610bde6129ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c2b57600080fd5b610c336129d1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c8057600080fd5b610cac600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506129f7565b005b3415610cb957600080fd5b610ccf6004808035906020019091905050612ced565b005b3415610cdc57600080fd5b610d27600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d63565b6040518082815260200191505060405180910390f35b3415610d4857600080fd5b610d50612dea565b6040518082815260200191505060405180910390f35b3415610d7157600080fd5b610d906004808035906020019091908035906020019091905050612df0565b6040518082815260200191505060405180910390f35b3415610db157600080fd5b610dc76004808035906020019091905050612e0e565b604051808215151515815260200191505060405180910390f35b3415610dec57600080fd5b610df4613085565b005b3415610e0157600080fd5b610e2d600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506130fe565b005b3415610e3a57600080fd5b610e66600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506131da565b005b600080600080600d54600a0a9150349050600e60009054906101000a900460ff161515610e9457600080fd5b6014548110151515610ea557600080fd5b6015548111151515610eb657600080fd5b601354610ec38284612978565b811515610ecc57fe5b049250600083111515610ede57600080fd5b610eea6011548461242a565b601181905550610efc6010548461242a565b601081905550610f6d60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061101b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612df0565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156110c057600080fd5b82935050505090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112557600080fd5b81600b908051906020019061113b9291906136be565b5080600c90805190602001906111529291906136be565b507fd131ab1e6f279deea74e13a18477e13e2107deb6dc8ae955648948be5841fb46600b600c6040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112055780601f106111da57610100808354040283529160200191611205565b820191906000526020600020905b8154815290600101906020018083116111e857829003601f168201915b50508381038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112885780601f1061125d57610100808354040283529160200191611288565b820191906000526020600020905b81548152906001019060200180831161126b57829003601f168201915b505094505050505060405180910390a15050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112f857600080fd5b6000600960149054906101000a900460ff16151581151514151561131b57600080fd5b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561140d5780601f106113e25761010080835404028352916020019161140d565b820191906000526020600020905b8154815290600101906020018083116113f057829003601f168201915b505050505081565b60008082141580156114a457506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b1515156114b057600080fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115fc57600080fd5b6000841415151561160c57600080fd5b601054841115151561161d57600080fd5b8360118190555080600e60006101000a81548160ff0219169083151502179055506000831015151561164e57600080fd5b60008211151561165d57600080fd5b826014819055508160158190555050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116cd57600080fd5b600081141515156116dd57600080fd5b8060118190555050565b600f5481565b600083600960149054906101000a900460ff16151561175f57600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561175e57600080fd5b5b61176a8585856132a0565b9150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117d057600080fd5b6000600960149054906101000a900460ff1615158115151415156117f357600080fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b600d5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190f57600080fd5b6000821015151561191f57600080fd5b60008111151561192e57600080fd5b81601481905550806015819055505050565b600061194a611eaa565b90506003600481111561195957fe5b81600481111561196557fe5b1480611986575060048081111561197857fe5b81600481111561198457fe5b145b151561199157600080fd5b600082141515156119a157600080fd5b6119ea600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a396000548361242a565b600081905550611a4b60065483612df0565b600681905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663753e88e533846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515611b1557600080fd5b6102c65a03f11515611b2657600080fd5b505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac846040518082815260200191505060405180910390a35050565b600e60009054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c4957600080fd5b6001600960146101000a81548160ff021916908315150217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ce857600080fd5b60008114151515611cf857600080fd5b8060138190555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611da757600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611eb4612266565b1515611ec35760019050611f26565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f0d5760029050611f26565b60006006541415611f215760039050611f26565b600490505b90565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fa757600080fd5b8160026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561201757600080fd5b6120236010548361242a565b60108190555061209460026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612142600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612df0565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561224b5780601f106122205761010080835404028352916020019161224b565b820191906000526020600020905b81548152906001019060200180831161222e57829003601f168201915b505050505081565b600960149054906101000a900460ff1681565b60006001905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122cd57600080fd5b61233860026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123a9600f548361242a565b600f819055506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b600082821115151561243857fe5b818303905092915050565b600033600960149054906101000a900460ff1615156124b557600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124b457600080fd5b5b6124bf8484613535565b91505092915050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561252657600080fd5b612532600f5483612df0565b600f819055506125a360026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612df0565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126df57600080fd5b6000600e60006101000a81548160ff021916908315150217905550565b60065481565b600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276157600080fd5b8251845114151561277157600080fd5b600090505b835181101561296d576127a2601054848381518110151561279357fe5b9060200190602002015161242a565b60108190555061281f6002600086848151811015156127bd57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054848381518110151561281057fe5b90602001906020020151612df0565b60026000868481518110151561283157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128fb60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484838151811015156128ec57fe5b9060200190602002015161242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050612776565b600191505092915050565b60008082840290506000841480612999575082848281151561299657fe5b04145b15156129a157fe5b8091505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6129ff612266565b1515612a0a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515612a3057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a8c57600080fd5b600480811115612a9857fe5b612aa0611eaa565b6004811115612aab57fe5b14151515612ab857600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361d3d7a66000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612b8757600080fd5b6102c65a03f11515612b9857600080fd5b505050604051805190501515612bad57600080fd5b600054600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2ba0dd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612c3e57600080fd5b6102c65a03f11515612c4f57600080fd5b50505060405180519050141515612c6557600080fd5b7f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d4957600080fd5b60008114151515612d5957600080fd5b8060108190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b6000808284019050838110151515612e0457fe5b8091505092915050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e6c57600080fd5b8160026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515612edc57600080fd5b612f4760026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061301760026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612df0565b60026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130e157600080fd5b6001600e60006101000a81548160ff021916908315150217905550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561315a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561319657600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff161415151561320057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561325c57600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061336b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612df0565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133f7600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461242a565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613444818461242a565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b6000613580600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361242a565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360c600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612df0565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106136ff57805160ff191683800117855561372d565b8280016001018555821561372d579182015b8281111561372c578251825591602001919060010190613711565b5b50905061373a919061373e565b5090565b61376091905b8082111561375c576000816000905550600101613744565b5090565b905600a165627a7a723058204025b5b49266cfddc318349d4a8fbe2cbc4aa18b97d236cf02c86442ecb0472c0029

   Swarm Source:
bzzr://4025b5b49266cfddc318349d4a8fbe2cbc4aa18b97d236cf02c86442ecb0472c

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.