Sponsored Link:  Download the Monaco app for Android and iOS on Aug 31 - www.mona.co
Contract Overview
ETH Balance: 1,846.615665281033088984 Ether
ETH USD Value: $542,628.01 (@ $293.85/ETH)
No Of Transactions: 24592 txns
  Latest 25 txns from a total Of 24592 transactions View All

TxHash Age From To Value [TxFee]
0x2f8b91f3693122ec0a1a95983dc4653ad1fddf52cd4c60a1805f572de5e781431 hr 42 mins agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00258488
0x58c102378ab49e4f5ee0f1de4d9bfe83535811507f18afe2dc8419ce94d5432f1 hr 42 mins ago0xb02cf63b8e127650f5d3287fce30fb7b023738fa  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.23 Ether0.003839493
0x88cd0675911f0e11b85f3c0c0f948ea261528d47bfb6e47dc214433dee005f1a2 hrs 32 mins agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00258488
0x29dd462debd58a77167cdf4eca04ba0f8783e832ba7266432b8790e55ff553c32 hrs 33 mins ago0xb909489c14fe4cde3262886779ca88350f6651e0  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae3.9 Ether0.00548499
0xd7466f574d82887c496ce8edb4b0819a4ed08b59d3cd8d7b38685e28a799193514 hrs 30 mins agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.0025836
0xe5faa5b63dac72eed09e69f1ccec62feb2ce9451e5c5f28a2192042ef048782814 hrs 31 mins ago0x370e970d67ccfdfb0137096025a7972ad68c4791  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.257 Ether0.01096998
0x5292a4e8bd6b617c706eb183c65d6344395aac27833b710caf9952e96b3aea1b19 hrs 27 mins agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00279566
0xcefbaa780d25e5201d7f156935006b6316ecf515b87b325a6729c9c8d28ce3d619 hrs 28 mins ago0x370e970d67ccfdfb0137096025a7972ad68c4791  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.35 Ether0.01096998
0xc841dfaa03af07e62f173a67c951fb401888fdd7667f98da74d49f19de3a46a922 hrs 12 mins agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00279694
0x3c610380e55125d43ab38de778ae38159eed395afa12efe9df9e5066e11b59cd22 hrs 13 mins ago0x5ba9903205c6d51a239b7b2c8fe1e2bca4adb89e  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether0.01096998
0xa6ca7a88d5bfa1976eca09501571c309d16492c8d468c6007f1346f0dfba30f422 hrs 15 mins ago0x5ba9903205c6d51a239b7b2c8fe1e2bca4adb89e  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether0.00126
0xa3e0b3d272693dc952ab0c9496341323e9b8e0e34d1dc2d0790f482d5b9738711 day 16 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00258488
0xc5e3ecab090a41affb728f5fa34209c58e22aaec3fd05dc9bfa2495eeb0a956d1 day 16 hrs ago0x227b0394ab15a4cd742cd0192f313fec59f39e44  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.435 Ether0.000182833
0x3be7b6eba684f9c1f18a574d871b91e0bdff97f6b9a66721e6cb38252866f4951 day 16 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00258488
0x5509e0e6d42ef565750baf1cdeb6e3562fc88fe66acab4ad4c3899db017b3b431 day 16 hrs ago0x227b0394ab15a4cd742cd0192f313fec59f39e44  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.3 Ether0.000182833
0xa86fc6b5f8c1fedff7a069c72ddf946a3f20db504d82188c85528ec2f5b605ba2 days 15 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00279694
0x6fbce81878bfc8a085ad5ad309e77e84eb7b6f8feeeb1124dc4feabe3cb933b72 days 15 hrs ago0xb02cf63b8e127650f5d3287fce30fb7b023738fa  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.4 Ether0.003839493
0xc8c3280a6589e1a71fc077c103d74ffa6b74a9571682d77329922bcaa5703c3b5 days 12 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00279566
0x5b5b37728a67c359ac5925f8226f32697a31c3a40f9bf9e8cf317bfdab202f5b5 days 12 hrs ago0xbef520958691826c19ccda9c93ab8a23f6bc239f  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether0.002742495
0x24fe74800cb3b3b639591878a2fc9ed48d6719573de1860b189c6e618f2c9c025 days 17 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00279694
0xc8e2e5a8d270247f58dcece293352eec9aba2a6cc6a2a6fc2470944c22d93c4b5 days 17 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.0025836
0x07f70e49feaac3cd3b3411d83e6dc0c2de3824263aa6606a697197cab282232d5 days 17 hrs ago0xe91112eae21055c4f10a475d0be7db59a64f32d9  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether0.003839493
0x74090964554be707754047d639902779b80f7a29ba493c9f286536cd6f4259ff5 days 17 hrs ago0xb02cf63b8e127650f5d3287fce30fb7b023738fa  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.4 Ether0.003839493
0x1fc1af21a4ab03288df4a267539a044fe7a24763ff921816aadd7a8ac7f67b0b5 days 17 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00258488
0xbf579191f451b538e5a09302b3232a8343dca14608c3ed53521ea916933843425 days 17 hrs ago0xb02cf63b8e127650f5d3287fce30fb7b023738fa  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether0.003839493
[ 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
0x2f8b91f3693122ec0a1a95983dc4653ad1fddf52cd4c60a1805f572de5e7814344090591 hr 42 mins ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xb02cf63b8e127650f5d3287fce30fb7b023738fa1 wei
0x58c102378ab49e4f5ee0f1de4d9bfe83535811507f18afe2dc8419ce94d5432f44090571 hr 42 mins ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00516635710431565 Ether
0x88cd0675911f0e11b85f3c0c0f948ea261528d47bfb6e47dc214433dee005f1a44088562 hrs 32 mins ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xb909489c14fe4cde3262886779ca88350f6651e01 wei
0x29dd462debd58a77167cdf4eca04ba0f8783e832ba7266432b8790e55ff553c344088522 hrs 33 mins ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00516635710431565 Ether
0xd7466f574d82887c496ce8edb4b0819a4ed08b59d3cd8d7b38685e28a7991935440568914 hrs 30 mins ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x370e970d67ccfdfb0137096025a7972ad68c47911 wei
0xe5faa5b63dac72eed09e69f1ccec62feb2ce9451e5c5f28a2192042ef0487828440568614 hrs 31 mins ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00516635710431565 Ether
0x5292a4e8bd6b617c706eb183c65d6344395aac27833b710caf9952e96b3aea1b440437519 hrs 27 mins ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x370e970d67ccfdfb0137096025a7972ad68c47910.711413043478260869 Ether
0xcefbaa780d25e5201d7f156935006b6316ecf515b87b325a6729c9c8d28ce3d6440437219 hrs 28 mins ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00516635710431565 Ether
0xc841dfaa03af07e62f173a67c951fb401888fdd7667f98da74d49f19de3a46a9440364522 hrs 12 mins ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x5ba9903205c6d51a239b7b2c8fe1e2bca4adb89e0.406521739130434781 Ether
0x3c610380e55125d43ab38de778ae38159eed395afa12efe9df9e5066e11b59cd440364122 hrs 13 mins ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00516635710431565 Ether
0xa3e0b3d272693dc952ab0c9496341323e9b8e0e34d1dc2d0790f482d5b97387143989161 day 16 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x227b0394ab15a4cd742cd0192f313fec59f39e441 wei
0xc5e3ecab090a41affb728f5fa34209c58e22aaec3fd05dc9bfa2495eeb0a956d43989121 day 16 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00516635710431565 Ether
0x3be7b6eba684f9c1f18a574d871b91e0bdff97f6b9a66721e6cb38252866f49543988581 day 16 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x227b0394ab15a4cd742cd0192f313fec59f39e441 wei
0x5509e0e6d42ef565750baf1cdeb6e3562fc88fe66acab4ad4c3899db017b3b4343988531 day 16 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00516635710431565 Ether
0xa86fc6b5f8c1fedff7a069c72ddf946a3f20db504d82188c85528ec2f5b605ba43929582 days 15 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xb02cf63b8e127650f5d3287fce30fb7b023738fa0.813043478260869564 Ether
0x6fbce81878bfc8a085ad5ad309e77e84eb7b6f8feeeb1124dc4feabe3cb933b743929552 days 15 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00516635710431565 Ether
0xc8c3280a6589e1a71fc077c103d74ffa6b74a9571682d77329922bcaa5703c3b43751165 days 12 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xbef520958691826c19ccda9c93ab8a23f6bc239f0.406521739130434781 Ether
0x5b5b37728a67c359ac5925f8226f32697a31c3a40f9bf9e8cf317bfdab202f5b43751135 days 12 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00516635710431565 Ether
0x24fe74800cb3b3b639591878a2fc9ed48d6719573de1860b189c6e618f2c9c0243739595 days 17 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe91112eae21055c4f10a475d0be7db59a64f32d90.406521739130434781 Ether
0xc8e2e5a8d270247f58dcece293352eec9aba2a6cc6a2a6fc2470944c22d93c4b43739555 days 17 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xb02cf63b8e127650f5d3287fce30fb7b023738fa1 wei
0x07f70e49feaac3cd3b3411d83e6dc0c2de3824263aa6606a697197cab282232d43739445 days 17 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00516635710431565 Ether
0x74090964554be707754047d639902779b80f7a29ba493c9f286536cd6f4259ff43739305 days 17 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00516635710431565 Ether
0x1fc1af21a4ab03288df4a267539a044fe7a24763ff921816aadd7a8ac7f67b0b43739185 days 17 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xb02cf63b8e127650f5d3287fce30fb7b023738fa1 wei
0xbf579191f451b538e5a09302b3232a8343dca14608c3ed53521ea9169338434243738945 days 17 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00516635710431565 Ether
0x28572f6c45bb837d80989e4be04ef62f0b73152b368ec3cdb57ee47a38f7bfe643738645 days 17 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xb02cf63b8e127650f5d3287fce30fb7b023738fa1 wei
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity), DelegateCallReturnValue (low-severity), ECRecoverMalformedInput (medium-severity), SkipEmptyStringLiteral (low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: IDice
Compiler Version: v0.4.11-nightly.2017.3.21+commit.6fb27dee
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.2;

// <ORACLIZE_API>
/*
Copyright (c) 2015-2016 Oraclize SRL
Copyright (c) 2016 Oraclize LTD



Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:



The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.



THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

//please import oraclizeAPI_pre0.4.sol when solidity < 0.4.0

contract OraclizeI {
    address public cbAddress;
    function query(uint _timestamp, string _datasource, string _arg) payable returns (bytes32 _id);
    function query_withGasLimit(uint _timestamp, string _datasource, string _arg, uint _gaslimit) payable returns (bytes32 _id);
    function query2(uint _timestamp, string _datasource, string _arg1, string _arg2) payable returns (bytes32 _id);
    function query2_withGasLimit(uint _timestamp, string _datasource, string _arg1, string _arg2, uint _gaslimit) payable returns (bytes32 _id);
    function queryN(uint _timestamp, string _datasource, bytes _argN) payable returns (bytes32 _id);
    function queryN_withGasLimit(uint _timestamp, string _datasource, bytes _argN, uint _gaslimit) payable returns (bytes32 _id);
    function getPrice(string _datasource) returns (uint _dsprice);
    function getPrice(string _datasource, uint gaslimit) returns (uint _dsprice);
    function useCoupon(string _coupon);
    function setProofType(byte _proofType);
    function setConfig(bytes32 _config);
    function setCustomGasPrice(uint _gasPrice);
}
contract OraclizeAddrResolverI {
    function getAddress() returns (address _addr);
}
contract usingOraclize {
    uint constant day = 60*60*24;
    uint constant week = 60*60*24*7;
    uint constant month = 60*60*24*30;
    byte constant proofType_NONE = 0x00;
    byte constant proofType_TLSNotary = 0x10;
    byte constant proofStorage_IPFS = 0x01;
    uint8 constant networkID_auto = 0;
    uint8 constant networkID_mainnet = 1;
    uint8 constant networkID_testnet = 2;
    uint8 constant networkID_morden = 2;
    uint8 constant networkID_consensys = 161;

    OraclizeAddrResolverI OAR;

    OraclizeI oraclize;
    modifier oraclizeAPI {
        if((address(OAR)==0)||(getCodeSize(address(OAR))==0)) oraclize_setNetwork(networkID_auto);
        oraclize = OraclizeI(OAR.getAddress());
        _;
    }
    modifier coupon(string code){
        oraclize = OraclizeI(OAR.getAddress());
        oraclize.useCoupon(code);
        _;
    }

    function oraclize_setNetwork(uint8 networkID) internal returns(bool){
        if (getCodeSize(0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed)>0){ //mainnet
            OAR = OraclizeAddrResolverI(0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed);
            return true;
        }
        if (getCodeSize(0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1)>0){ //ropsten testnet
            OAR = OraclizeAddrResolverI(0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1);
            return true;
        }
        if (getCodeSize(0xB7A07BcF2Ba2f2703b24C0691b5278999C59AC7e)>0){ //kovan testnet
            OAR = OraclizeAddrResolverI(0xB7A07BcF2Ba2f2703b24C0691b5278999C59AC7e);
            return true;
        }
        if (getCodeSize(0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475)>0){ //ethereum-bridge
            OAR = OraclizeAddrResolverI(0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475);
            return true;
        }
        if (getCodeSize(0x20e12A1F859B3FeaE5Fb2A0A32C18F5a65555bBF)>0){ //ether.camp ide
            OAR = OraclizeAddrResolverI(0x20e12A1F859B3FeaE5Fb2A0A32C18F5a65555bBF);
            return true;
        }
        if (getCodeSize(0x51efaF4c8B3C9AfBD5aB9F4bbC82784Ab6ef8fAA)>0){ //browser-solidity
            OAR = OraclizeAddrResolverI(0x51efaF4c8B3C9AfBD5aB9F4bbC82784Ab6ef8fAA);
            return true;
        }
        return false;
    }

    function __callback(bytes32 myid, string result) {
        __callback(myid, result, new bytes(0));
    }
    function __callback(bytes32 myid, string result, bytes proof) {
    }

    function oraclize_getPrice(string datasource) oraclizeAPI internal returns (uint){
        return oraclize.getPrice(datasource);
    }

    function oraclize_getPrice(string datasource, uint gaslimit) oraclizeAPI internal returns (uint){
        return oraclize.getPrice(datasource, gaslimit);
    }

    function oraclize_query(string datasource, string arg) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        return oraclize.query.value(price)(0, datasource, arg);
    }
    function oraclize_query(uint timestamp, string datasource, string arg) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        return oraclize.query.value(price)(timestamp, datasource, arg);
    }
    function oraclize_query(uint timestamp, string datasource, string arg, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query_withGasLimit.value(price)(timestamp, datasource, arg, gaslimit);
    }
    function oraclize_query(string datasource, string arg, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query_withGasLimit.value(price)(0, datasource, arg, gaslimit);
    }
    function oraclize_query(string datasource, string arg1, string arg2) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        return oraclize.query2.value(price)(0, datasource, arg1, arg2);
    }
    function oraclize_query(uint timestamp, string datasource, string arg1, string arg2) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        return oraclize.query2.value(price)(timestamp, datasource, arg1, arg2);
    }
    function oraclize_query(uint timestamp, string datasource, string arg1, string arg2, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query2_withGasLimit.value(price)(timestamp, datasource, arg1, arg2, gaslimit);
    }
    function oraclize_query(string datasource, string arg1, string arg2, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query2_withGasLimit.value(price)(0, datasource, arg1, arg2, gaslimit);
    }
    function oraclize_query(string datasource, string[] argN) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        bytes memory args = stra2cbor(argN);
        return oraclize.queryN.value(price)(0, datasource, args);
    }
    function oraclize_query(uint timestamp, string datasource, string[] argN) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        bytes memory args = stra2cbor(argN);
        return oraclize.queryN.value(price)(timestamp, datasource, args);
    }
    function oraclize_query(uint timestamp, string datasource, string[] argN, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        bytes memory args = stra2cbor(argN);
        return oraclize.queryN_withGasLimit.value(price)(timestamp, datasource, args, gaslimit);
    }
    function oraclize_query(string datasource, string[] argN, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        bytes memory args = stra2cbor(argN);
        return oraclize.queryN_withGasLimit.value(price)(0, datasource, args, gaslimit);
    }
    function oraclize_query(string datasource, string[1] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](1);
        dynargs[0] = args[0];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[1] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](1);
        dynargs[0] = args[0];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[1] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](1);
        dynargs[0] = args[0];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[1] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](1);
        dynargs[0] = args[0];
        return oraclize_query(datasource, dynargs, gaslimit);
    }

    function oraclize_query(string datasource, string[2] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[2] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[2] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[2] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[3] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[3] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[3] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[3] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(datasource, dynargs, gaslimit);
    }

    function oraclize_query(string datasource, string[4] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[4] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[4] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[4] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[5] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[5] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[5] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[5] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(datasource, dynargs, gaslimit);
    }

    function oraclize_cbAddress() oraclizeAPI internal returns (address){
        return oraclize.cbAddress();
    }
    function oraclize_setProof(byte proofP) oraclizeAPI internal {
        return oraclize.setProofType(proofP);
    }
    function oraclize_setCustomGasPrice(uint gasPrice) oraclizeAPI internal {
        return oraclize.setCustomGasPrice(gasPrice);
    }
    function oraclize_setConfig(bytes32 config) oraclizeAPI internal {
        return oraclize.setConfig(config);
    }

    function getCodeSize(address _addr) constant internal returns(uint _size) {
        assembly {
            _size := extcodesize(_addr)
        }
    }

    function parseAddr(string _a) internal returns (address){
        bytes memory tmp = bytes(_a);
        uint160 iaddr = 0;
        uint160 b1;
        uint160 b2;
        for (uint i=2; i<2+2*20; i+=2){
            iaddr *= 256;
            b1 = uint160(tmp[i]);
            b2 = uint160(tmp[i+1]);
            if ((b1 >= 97)&&(b1 <= 102)) b1 -= 87;
            else if ((b1 >= 48)&&(b1 <= 57)) b1 -= 48;
            if ((b2 >= 97)&&(b2 <= 102)) b2 -= 87;
            else if ((b2 >= 48)&&(b2 <= 57)) b2 -= 48;
            iaddr += (b1*16+b2);
        }
        return address(iaddr);
    }

    function strCompare(string _a, string _b) internal returns (int) {
        bytes memory a = bytes(_a);
        bytes memory b = bytes(_b);
        uint minLength = a.length;
        if (b.length < minLength) minLength = b.length;
        for (uint i = 0; i < minLength; i ++)
            if (a[i] < b[i])
                return -1;
            else if (a[i] > b[i])
                return 1;
        if (a.length < b.length)
            return -1;
        else if (a.length > b.length)
            return 1;
        else
            return 0;
    }

    function indexOf(string _haystack, string _needle) internal returns (int) {
        bytes memory h = bytes(_haystack);
        bytes memory n = bytes(_needle);
        if(h.length < 1 || n.length < 1 || (n.length > h.length))
            return -1;
        else if(h.length > (2**128 -1))
            return -1;
        else
        {
            uint subindex = 0;
            for (uint i = 0; i < h.length; i ++)
            {
                if (h[i] == n[0])
                {
                    subindex = 1;
                    while(subindex < n.length && (i + subindex) < h.length && h[i + subindex] == n[subindex])
                    {
                        subindex++;
                    }
                    if(subindex == n.length)
                        return int(i);
                }
            }
            return -1;
        }
    }

    function strConcat(string _a, string _b, string _c, string _d, string _e) internal returns (string) {
        bytes memory _ba = bytes(_a);
        bytes memory _bb = bytes(_b);
        bytes memory _bc = bytes(_c);
        bytes memory _bd = bytes(_d);
        bytes memory _be = bytes(_e);
        string memory abcde = new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length);
        bytes memory babcde = bytes(abcde);
        uint k = 0;
        for (uint i = 0; i < _ba.length; i++) babcde[k++] = _ba[i];
        for (i = 0; i < _bb.length; i++) babcde[k++] = _bb[i];
        for (i = 0; i < _bc.length; i++) babcde[k++] = _bc[i];
        for (i = 0; i < _bd.length; i++) babcde[k++] = _bd[i];
        for (i = 0; i < _be.length; i++) babcde[k++] = _be[i];
        return string(babcde);
    }

    function strConcat(string _a, string _b, string _c, string _d) internal returns (string) {
        return strConcat(_a, _b, _c, _d, "");
    }

    function strConcat(string _a, string _b, string _c) internal returns (string) {
        return strConcat(_a, _b, _c, "", "");
    }

    function strConcat(string _a, string _b) internal returns (string) {
        return strConcat(_a, _b, "", "", "");
    }

    // parseInt
    function parseInt(string _a) internal returns (uint) {
        return parseInt(_a, 0);
    }

    // parseInt(parseFloat*10^_b)
    function parseInt(string _a, uint _b) internal returns (uint) {
        bytes memory bresult = bytes(_a);
        uint mint = 0;
        bool decimals = false;
        for (uint i=0; i<bresult.length; i++){
            if ((bresult[i] >= 48)&&(bresult[i] <= 57)){
                if (decimals){
                   if (_b == 0) break;
                    else _b--;
                }
                mint *= 10;
                mint += uint(bresult[i]) - 48;
            } else if (bresult[i] == 46) decimals = true;
        }
        if (_b > 0) mint *= 10**_b;
        return mint;
    }

    function uint2str(uint i) internal returns (string){
        if (i == 0) return "0";
        uint j = i;
        uint len;
        while (j != 0){
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len - 1;
        while (i != 0){
            bstr[k--] = byte(48 + i % 10);
            i /= 10;
        }
        return string(bstr);
    }

    function stra2cbor(string[] arr) internal returns (bytes) {
            uint arrlen = arr.length;

            // get correct cbor output length
            uint outputlen = 0;
            bytes[] memory elemArray = new bytes[](arrlen);
            for (uint i = 0; i < arrlen; i++) {
                elemArray[i] = (bytes(arr[i]));
                outputlen += elemArray[i].length + (elemArray[i].length - 1)/23 + 3; //+3 accounts for paired identifier types
            }
            uint ctr = 0;
            uint cborlen = arrlen + 0x80;
            outputlen += byte(cborlen).length;
            bytes memory res = new bytes(outputlen);

            while (byte(cborlen).length > ctr) {
                res[ctr] = byte(cborlen)[ctr];
                ctr++;
            }
            for (i = 0; i < arrlen; i++) {
                res[ctr] = 0x5F;
                ctr++;
                for (uint x = 0; x < elemArray[i].length; x++) {
                    // if there's a bug with larger strings, this may be the culprit
                    if (x % 23 == 0) {
                        uint elemcborlen = elemArray[i].length - x >= 24 ? 23 : elemArray[i].length - x;
                        elemcborlen += 0x40;
                        uint lctr = ctr;
                        while (byte(elemcborlen).length > ctr - lctr) {
                            res[ctr] = byte(elemcborlen)[ctr - lctr];
                            ctr++;
                        }
                    }
                    res[ctr] = elemArray[i][x];
                    ctr++;
                }
                res[ctr] = 0xFF;
                ctr++;
            }
            return res;
        }
}
// </ORACLIZE_API>

// Etheroll Functions
contract DSSafeAddSub {
    function safeToAdd(uint a, uint b) internal returns (bool) {
        return (a + b >= a);
    }
    function safeAdd(uint a, uint b) internal returns (uint) {
        if (!safeToAdd(a, b)) throw;
        return a + b;
    }

    function safeToSubtract(uint a, uint b) internal returns (bool) {
        return (b <= a);
    }

    function safeSub(uint a, uint b) internal returns (uint) {
        if (!safeToSubtract(a, b)) throw;
        return a - b;
    }
}

contract IDice is usingOraclize, DSSafeAddSub {

    /*
     * checks player profit and number is within range
    */
    modifier betIsValid(uint _betSize, uint _playerNumber) {
        if(((((_betSize * (100-(safeSub(_playerNumber,1)))) / (safeSub(_playerNumber,1))+_betSize))*houseEdge/houseEdgeDivisor)-_betSize > maxProfit || _betSize < minBet || _playerNumber < minNumber || _playerNumber > maxNumber) throw;
		_;
    }

    /*
     * checks game is currently active
    */
    modifier gameIsActive {
        if(gamePaused == true) throw;
		_;
    }

    /*
     * checks payouts are currently active
    */
    modifier payoutsAreActive {
        if(payoutsPaused == true) throw;
		_;
    }

    /*
     * checks only Oraclize address is calling
    */
    modifier onlyOraclize {
        if (msg.sender != oraclize_cbAddress()) throw;
        _;
    }

    /*
     * checks only owner address is calling
    */
    modifier onlyOwner {
         if (msg.sender != owner) throw;
         _;
    }

    /*
     * checks only treasury address is calling
    */
    modifier onlyTreasury {
         if (msg.sender != treasury) throw;
         _;
    }

    /*
     * game vars
    */

    uint constant public maxBetDivisor = 1000000;
    uint constant public houseEdgeDivisor = 1000;
    uint constant public maxNumber = 99;
    uint constant public minNumber = 2;
	bool public gamePaused;
    uint32 public gasForOraclize;
    address public owner;
    bool public payoutsPaused;
    address public treasury;
    uint public contractBalance;
    uint public houseEdge;
    uint public maxProfit;
    uint public maxProfitAsPercentOfHouse;
    uint public minBet;
    int public totalBets;
    uint public totalUserProfit;
    uint public maxPendingPayouts;

    /*
     * player vars
    */
    mapping (bytes32 => address) playerAddress;
    mapping (bytes32 => address) playerTempAddress;
    mapping (bytes32 => bytes32) playerBetId;
    mapping (bytes32 => uint) playerBetValue;
    mapping (bytes32 => uint) playerTempBetValue;
    mapping (bytes32 => uint) playerRandomResult;
    mapping (bytes32 => uint) playerDieResult;
    mapping (bytes32 => uint) playerNumber;
    mapping (address => uint) playerPendingWithdrawals;
    mapping (bytes32 => uint) playerProfit;
    mapping (bytes32 => uint) playerTempReward;


    /*
     * events
    */
    /* log bets + output to web3 for precise 'payout on win' field in UI */
    event LogBet(bytes32 indexed BetID, address indexed PlayerAddress, uint indexed RewardValue, uint ProfitValue, uint BetValue, uint PlayerNumber);
    /* output to web3 UI on bet result*/
    /* Status: 0=lose, 1=win, 2=win + failed send, 3=refund, 4=refund + failed send*/
	event LogResult(bytes32 indexed BetID, address indexed PlayerAddress, uint indexed PlayerNumber, uint DiceResult, uint Value, int Status, bytes Proof);
    /* log manual refunds */
    event LogRefund(bytes32 indexed BetID, address indexed PlayerAddress, uint indexed RefundValue);
    /* log owner transfers */
    event LogOwnerTransfer(address indexed SentToAddress, uint indexed AmountTransferred);


    /*
     * init
    */
    function IDice() {

        owner = msg.sender;
        treasury = msg.sender;

        // This setnetwork is unncessary
        oraclize_setNetwork(networkID_auto);
        /* use TLSNotary for oraclize call */
		oraclize_setProof(proofType_TLSNotary | proofStorage_IPFS);

        /* init 990 = 99% (1% houseEdge)*/
        ownerSetHouseEdge(935);

        // 25,000 = 2.5% is our max profit of the house
        ownerSetMaxProfitAsPercentOfHouse(25000);
        /* init min bet (0.2 ether) */

        ownerSetMinBet(200000000000000000);
        /* init gas for oraclize */
        gasForOraclize = 250000;

    }

    /*
     * public function
     * player submit bet
     * only if game is active & bet is valid can query oraclize and set player vars
    */
    function playerRollDice(uint rollUnder) public
        payable
        gameIsActive
        betIsValid(msg.value, rollUnder)
	{

        /*
        * assign partially encrypted query to oraclize
        * only the apiKey is encrypted
        * integer query is in plain text
        */
        bytes32 rngId = oraclize_query("nested", "[URL] ['json(https://api.random.org/json-rpc/1/invoke).result.random.data.0', '\\n{\"jsonrpc\":\"2.0\",\"method\":\"generateSignedIntegers\",\"params\":{\"apiKey\":${[decrypt] BDC819nTYbEiByr/iwndzNdSJ9JGJGRWwOTnFLhrFcxtWh53H7szcqHaC+Z/6UKH6T6N57RiPNmBWGeFSmqURHUqCSyN8vmUjVj9gEi7HmCoQlLSpx8QJTV9OxhFf43u8Vn7DugZcgyVcPEkEs2lTP1BXiAd},\"n\":1,\"min\":1,\"max\":100,\"replacement\":true,\"base\":10${[identity] \"}\"},\"id\":1${[identity] \"}\"}']", gasForOraclize);
        /* total number of bets (display purpose only) */
        totalBets += 1;
        /* map bet id to this oraclize query */
		playerBetId[rngId] = rngId;
        /* map player lucky number to this oraclize query */
		playerNumber[rngId] = rollUnder;
        /* map value of wager to this oraclize query */
        playerBetValue[rngId] = msg.value;
        /* map player address to this oraclize query */
        playerAddress[rngId] = msg.sender;
        /* safely map player reward to this oraclize query */
        playerProfit[rngId] = ((((msg.value * (100-(safeSub(rollUnder,1)))) / (safeSub(rollUnder,1))+msg.value))*houseEdge/houseEdgeDivisor)-msg.value;
        /* safely increase maxPendingPayouts liability - calc all pending payouts under assumption they win */
        maxPendingPayouts = safeAdd(maxPendingPayouts, playerProfit[rngId]);
        /* check contract can payout on win */
        if(maxPendingPayouts >= contractBalance) throw;
        /* provides accurate numbers for web3 and manual refunds in case of no oraclize __callback */
        LogBet(playerBetId[rngId], playerAddress[rngId], safeAdd(playerBetValue[rngId], playerProfit[rngId]), playerProfit[rngId], playerBetValue[rngId], playerNumber[rngId]);

    }


    /*
    * semi-public function - only oraclize can call
    */
    /*TLSNotary for oraclize call */
	function __callback(bytes32 myid, string result, bytes proof) public
    //function __callback(bytes32 myid, string result) public
		onlyOraclize
		payoutsAreActive
	{

        /* player address mapped to query id does not exist */
        if (playerAddress[myid]==0x0) throw;

	    /* map result to player */
        playerRandomResult[myid] = parseInt(result);

        /* provably-fair random integer for player bounded to 1-100 inclusive
        *  sha3 the result from random.org and proof (IPFS address of TLSNotary proof)
        */
        playerDieResult[myid] = uint(sha3(playerRandomResult[myid], proof)) % (100 - 1) + 1;

        /* get the playerAddress for this query id */
        playerTempAddress[myid] = playerAddress[myid];
        /* delete playerAddress for this query id */
        delete playerAddress[myid];

        /* map the playerProfit for this query id */
        playerTempReward[myid] = playerProfit[myid];
        /* set  playerProfit for this query id to 0 */
        playerProfit[myid] = 0;

        /* safely reduce maxPendingPayouts liability */
        maxPendingPayouts = safeSub(maxPendingPayouts, playerTempReward[myid]);

        /* map the playerBetValue for this query id */
        playerTempBetValue[myid] = playerBetValue[myid];
        /* set  playerBetValue for this query id to 0 */
        playerBetValue[myid] = 0;

        /*
        * refund
        * if result from oraclize is 0 refund only the original bet value
        * if refund fails save refund value to playerPendingWithdrawals
        */
        if(playerDieResult[myid]==0){

             LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempBetValue[myid], 3, proof);
            //LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempBetValue[myid], 3);

            /*
            * send refund - external call to an untrusted contract
            * if send fails map refund value to playerPendingWithdrawals[address]
            * for withdrawal later via playerWithdrawPendingTransactions
            */
            if(!playerTempAddress[myid].send(playerTempBetValue[myid])){
                LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempBetValue[myid], 4, proof);
                //LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempBetValue[myid], 4);
                /* if send failed let player withdraw via playerWithdrawPendingTransactions */
                playerPendingWithdrawals[playerTempAddress[myid]] = safeAdd(playerPendingWithdrawals[playerTempAddress[myid]], playerTempBetValue[myid]);
            }

            return;
        }

        /*
        * pay winner
        * update contract balance to calculate new max bet
        * send reward
        * if send of reward fails save value to playerPendingWithdrawals
        */
        if(playerDieResult[myid] < playerNumber[myid]){

            /* safely reduce contract balance by player profit */
            contractBalance = safeSub(contractBalance, playerTempReward[myid]);

            /* safely calculate total payout as player profit plus original wager */
            playerTempReward[myid] = safeAdd(playerTempReward[myid], playerTempBetValue[myid]);

            totalUserProfit = totalUserProfit + playerTempReward[myid]; // total profits

            LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempReward[myid], 1, proof);
            //LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempReward[myid], 1);

            /* update maximum profit */
            setMaxProfit();

            /*
            * send win - external call to an untrusted contract
            * if send fails map reward value to playerPendingWithdrawals[address]
            * for withdrawal later via playerWithdrawPendingTransactions
            */
            if(!playerTempAddress[myid].send(playerTempReward[myid])){
                LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempReward[myid], 2, proof);
                //LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempReward[myid], 2);
                /* if send failed let player withdraw via playerWithdrawPendingTransactions */
                playerPendingWithdrawals[playerTempAddress[myid]] = safeAdd(playerPendingWithdrawals[playerTempAddress[myid]], playerTempReward[myid]);
            }

            return;
        }

        /*
        * no win
        * send 1 wei to a losing bet
        * update contract balance to calculate new max bet
        */
        if(playerDieResult[myid] >= playerNumber[myid]){

            LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempBetValue[myid], 0, proof);
            //LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempBetValue[myid], 0);

            /*
            *  safe adjust contractBalance
            *  setMaxProfit
            *  send 1 wei to losing bet
            */
            contractBalance = safeAdd(contractBalance, (playerTempBetValue[myid]-1));

            /* update maximum profit */
            setMaxProfit();

            /*
            * send 1 wei - external call to an untrusted contract
            */
            if(!playerTempAddress[myid].send(1)){
                /* if send failed let player withdraw via playerWithdrawPendingTransactions */
               playerPendingWithdrawals[playerTempAddress[myid]] = safeAdd(playerPendingWithdrawals[playerTempAddress[myid]], 1);
            }

            return;

        }

    }

    /*
    * public function
    * in case of a failed refund or win send
    */
    function playerWithdrawPendingTransactions() public
        payoutsAreActive
        returns (bool)
     {
        uint withdrawAmount = playerPendingWithdrawals[msg.sender];
        playerPendingWithdrawals[msg.sender] = 0;
        /* external call to untrusted contract */
        if (msg.sender.call.value(withdrawAmount)()) {
            return true;
        } else {
            /* if send failed revert playerPendingWithdrawals[msg.sender] = 0; */
            /* player can try to withdraw again later */
            playerPendingWithdrawals[msg.sender] = withdrawAmount;
            return false;
        }
    }

    /* check for pending withdrawals  */
    function playerGetPendingTxByAddress(address addressToCheck) public constant returns (uint) {
        return playerPendingWithdrawals[addressToCheck];
    }

    /*
    * internal function
    * sets max profit
    */
    function setMaxProfit() internal {
        maxProfit = (contractBalance*maxProfitAsPercentOfHouse)/maxBetDivisor;
    }

    /*
    * owner/treasury address only functions
    */
    function ()
        payable
    {
        playerRollDice(47);
    }

    function ownerAddBankroll ()
    payable
    onlyTreasury
    {
        /* safely update contract balance */
        contractBalance = safeAdd(contractBalance, msg.value);
        /* update the maximum profit */
        setMaxProfit();
    }

    /* set gas for oraclize query */
    function ownerSetOraclizeSafeGas(uint32 newSafeGasToOraclize) public
		onlyOwner
	{
    	gasForOraclize = newSafeGasToOraclize;
    }

    /* only owner address can set houseEdge */
    function ownerSetHouseEdge(uint newHouseEdge) public
		onlyOwner
    {
        houseEdge = newHouseEdge;
    }

    /* only owner address can set maxProfitAsPercentOfHouse */
    function ownerSetMaxProfitAsPercentOfHouse(uint newMaxProfitAsPercent) public
		onlyOwner
    {
        /* restrict to maximum profit of 5% of total house balance*/
        if(newMaxProfitAsPercent > 50000) throw;
        maxProfitAsPercentOfHouse = newMaxProfitAsPercent;
        setMaxProfit();
    }

    /* only owner address can set minBet */
    function ownerSetMinBet(uint newMinimumBet) public
		onlyOwner
    {
        minBet = newMinimumBet;
    }

    /* only owner address can transfer ether */
    function ownerTransferEther(address sendTo, uint amount) public
		onlyOwner
    {
        /* safely update contract balance when sending out funds*/
        contractBalance = safeSub(contractBalance, amount);
        /* update max profit */
        setMaxProfit();
        if(!sendTo.send(amount)) throw;
        LogOwnerTransfer(sendTo, amount);
    }

    /* only owner address can do manual refund
    * used only if bet placed + oraclize failed to __callback
    * filter LogBet by address and/or playerBetId:
    * LogBet(playerBetId[rngId], playerAddress[rngId], safeAdd(playerBetValue[rngId], playerProfit[rngId]), playerProfit[rngId], playerBetValue[rngId], playerNumber[rngId]);
    * check the following logs do not exist for playerBetId and/or playerAddress[rngId] before refunding:
    * LogResult or LogRefund
    * if LogResult exists player should use the withdraw pattern playerWithdrawPendingTransactions
    */
    function ownerRefundPlayer(bytes32 originalPlayerBetId, address sendTo, uint originalPlayerProfit, uint originalPlayerBetValue) public
		onlyOwner
    {
        /* safely reduce pendingPayouts by playerProfit[rngId] */
        maxPendingPayouts = safeSub(maxPendingPayouts, originalPlayerProfit);
        /* send refund */
        if(!sendTo.send(originalPlayerBetValue)) throw;
        /* log refunds */
        LogRefund(originalPlayerBetId, sendTo, originalPlayerBetValue);
    }

    /* only owner address can set emergency pause #1 */
    function ownerPauseGame(bool newStatus) public
		onlyOwner
    {
		gamePaused = newStatus;
    }

    /* only owner address can set emergency pause #2 */
    function ownerPausePayouts(bool newPayoutStatus) public
		onlyOwner
    {
		payoutsPaused = newPayoutStatus;
    }

    /* only owner address can set treasury address */
    function ownerSetTreasury(address newTreasury) public
		onlyOwner
	{
        treasury = newTreasury;
    }

    /* only owner address can set owner address */
    function ownerChangeOwner(address newOwner) public
		onlyOwner
	{
        owner = newOwner;
    }

    /* only owner address can suicide - emergency */
    function ownerkill() public
		onlyOwner
	{
		suicide(owner);
	}


}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"maxProfitAsPercentOfHouse","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newHouseEdge","type":"uint256"}],"name":"ownerSetHouseEdge","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"myid","type":"bytes32"},{"name":"result","type":"string"}],"name":"__callback","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"payoutsPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newTreasury","type":"address"}],"name":"ownerSetTreasury","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"ownerAddBankroll","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"myid","type":"bytes32"},{"name":"result","type":"string"},{"name":"proof","type":"bytes"}],"name":"__callback","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxBetDivisor","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"addressToCheck","type":"address"}],"name":"playerGetPendingTxByAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newPayoutStatus","type":"bool"}],"name":"ownerPausePayouts","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"ownerChangeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newMaxProfitAsPercent","type":"uint256"}],"name":"ownerSetMaxProfitAsPercentOfHouse","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"treasury","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newMinimumBet","type":"uint256"}],"name":"ownerSetMinBet","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newStatus","type":"bool"}],"name":"ownerPauseGame","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"gasForOraclize","outputs":[{"name":"","type":"uint32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"sendTo","type":"address"},{"name":"amount","type":"uint256"}],"name":"ownerTransferEther","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"contractBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minBet","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"playerWithdrawPendingTransactions","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxProfit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalUserProfit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalBets","outputs":[{"name":"","type":"int256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"gamePaused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"originalPlayerBetId","type":"bytes32"},{"name":"sendTo","type":"address"},{"name":"originalPlayerProfit","type":"uint256"},{"name":"originalPlayerBetValue","type":"uint256"}],"name":"ownerRefundPlayer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newSafeGasToOraclize","type":"uint32"}],"name":"ownerSetOraclizeSafeGas","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"ownerkill","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"houseEdge","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"rollUnder","type":"uint256"}],"name":"playerRollDice","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"houseEdgeDivisor","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxPendingPayouts","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"BetID","type":"bytes32"},{"indexed":true,"name":"PlayerAddress","type":"address"},{"indexed":true,"name":"RewardValue","type":"uint256"},{"indexed":false,"name":"ProfitValue","type":"uint256"},{"indexed":false,"name":"BetValue","type":"uint256"},{"indexed":false,"name":"PlayerNumber","type":"uint256"}],"name":"LogBet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"BetID","type":"bytes32"},{"indexed":true,"name":"PlayerAddress","type":"address"},{"indexed":true,"name":"PlayerNumber","type":"uint256"},{"indexed":false,"name":"DiceResult","type":"uint256"},{"indexed":false,"name":"Value","type":"uint256"},{"indexed":false,"name":"Status","type":"int256"},{"indexed":false,"name":"Proof","type":"bytes"}],"name":"LogResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"BetID","type":"bytes32"},{"indexed":true,"name":"PlayerAddress","type":"address"},{"indexed":true,"name":"RefundValue","type":"uint256"}],"name":"LogRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"SentToAddress","type":"address"},{"indexed":true,"name":"AmountTransferred","type":"uint256"}],"name":"LogOwnerTransfer","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405234156200000d57fe5b5b60028054600160a060020a033316600160a060020a0319918216811790925560038054909116909117905562000053600064010000000062001be56200011882021704565b506200008d7f110000000000000000000000000000000000000000000000000000000000000064010000000062001f846200038082021704565b620000a86103a7640100000000620008f36200051082021704565b620000c36161a8640100000000620013796200053782021704565b620000e46702c68af0bb140000640100000000620013c66200058782021704565b6001805460a860020a63ffffffff0219167703d0900000000000000000000000000000000000000000001790555b620005ca565b60008062000148731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed64010000000062001bdd620005ae82021704565b11156200017e575060008054600160a060020a031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560016200037b565b6000620001ad73c03a2615d5efaf5f49f60b7bb6583eaec212fdf164010000000062001bdd620005ae82021704565b1115620001e3575060008054600160a060020a03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560016200037b565b60006200021273b7a07bcf2ba2f2703b24c0691b5278999c59ac7e64010000000062001bdd620005ae82021704565b111562000248575060008054600160a060020a03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560016200037b565b600062000277736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47564010000000062001bdd620005ae82021704565b1115620002ad575060008054600160a060020a031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016200037b565b6000620002dc7320e12a1f859b3feae5fb2a0a32c18f5a65555bbf64010000000062001bdd620005ae82021704565b111562000312575060008054600160a060020a0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016200037b565b6000620003417351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa64010000000062001bdd620005ae82021704565b111562000377575060008054600160a060020a0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016200037b565b5060005b919050565b600054600160a060020a03161580620003bb5750600054620003b990600160a060020a031664010000000062001bdd620005ae82021704565b155b15620003dd57620003db600064010000000062001be56200011882021704565b505b600060009054906101000a9004600160a060020a0316600160a060020a03166338cc48316000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b15156200045257fe5b60325a03f115156200046057fe5b505060408051805160018054600160a060020a031916600160a060020a0392831617908190557f688dcfd70000000000000000000000000000000000000000000000000000000083527fff000000000000000000000000000000000000000000000000000000000000008616600484015292519216925063688dcfd791602480830192600092919082900301818387803b1515620004fa57fe5b60325a03f115156200050857fe5b5050505b5b50565b60025433600160a060020a039081169116146200052d5760006000fd5b60058190555b5b50565b60025433600160a060020a03908116911614620005545760006000fd5b61c350811115620005655760006000fd5b60078190556200050c64010000000062001a6d620005b682021704565b5b5b50565b60025433600160a060020a03908116911614620005a45760006000fd5b60088190555b5b50565b803b5b919050565b600754600454620f424091025b046006555b565b6122c180620005da6000396000f300606060405236156101905763ffffffff60e060020a60003504166323214fab81146101a3578063268d50fe146101c557806327dc297e146101da578063301cf6e714610233578063313752421461025757806331b296291461027557806338bbfa501461027f57806339849771146103155780633a4f6999146103375780633c314a91146103595780634b7fcee7146103875780634f44728d1461039e57806355b93031146103bc5780635e968a49146103de57806361d027b3146103f35780636cdf4c901461041f5780636eacd48a146104345780637072a9771461044b5780637ac37d58146104745780638b7afe2e146104955780638da5cb5b146104b75780639619367d146104e3578063a5f4af3314610505578063b539cd5514610529578063b69f5ada1461054b578063befa1e2f1461056d578063c3de1ab91461058f578063cf832ce2146105b3578063d207e757146105da578063d263b7eb146105f5578063d667dcd714610607578063dc6dd15214610629578063e5c774de14610636578063ed62f50114610658575b6101a15b61019e602f61067a565b5b565b005b34156101ab57fe5b6101b36108ed565b60408051918252519081900360200190f35b34156101cd57fe5b6101a16004356108f3565b005b34156101e257fe5b60408051602060046024803582810135601f81018590048502860185019096528585526101a1958335959394604494939290920191819084018382808284375094965061091995505050505050565b005b341561023b57fe5b610243610949565b604080519115158252519081900360200190f35b341561025f57fe5b6101a1600160a060020a0360043516610959565b005b6101a1610995565b005b341561028757fe5b60408051602060046024803582810135601f81018590048502860185019096528585526101a1958335959394604494939290920191819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979998810197919650918201945092508291508401838280828437509496506109cc95505050505050565b005b341561031d57fe5b6101b36112c4565b60408051918252519081900360200190f35b341561033f57fe5b6101b36112cb565b60408051918252519081900360200190f35b341561036157fe5b6101b3600160a060020a03600435166112d0565b60408051918252519081900360200190f35b341561038f57fe5b6101a160043515156112ef565b005b34156103a657fe5b6101a1600160a060020a0360043516611338565b005b34156103c457fe5b6101b3611374565b60408051918252519081900360200190f35b34156103e657fe5b6101a1600435611379565b005b34156103fb57fe5b6104036113b7565b60408051600160a060020a039092168252519081900360200190f35b341561042757fe5b6101a16004356113c6565b005b341561043c57fe5b6101a160043515156113ec565b005b341561045357fe5b61045b611435565b6040805163ffffffff9092168252519081900360200190f35b341561047c57fe5b6101a1600160a060020a0360043516602435611448565b005b341561049d57fe5b6101b36114e8565b60408051918252519081900360200190f35b34156104bf57fe5b6104036114ee565b60408051600160a060020a039092168252519081900360200190f35b34156104eb57fe5b6101b36114fd565b60408051918252519081900360200190f35b341561050d57fe5b610243611503565b604080519115158252519081900360200190f35b341561053157fe5b6101b3611592565b60408051918252519081900360200190f35b341561055357fe5b6101b3611598565b60408051918252519081900360200190f35b341561057557fe5b6101b361159e565b60408051918252519081900360200190f35b341561059757fe5b6102436115a4565b604080519115158252519081900360200190f35b34156105bb57fe5b6101a1600435600160a060020a03602435166044356064356115b4565b005b34156105e257fe5b6101a163ffffffff60043516611650565b005b34156105fd57fe5b6101a16116a1565b005b341561060f57fe5b6101b36116ce565b60408051918252519081900360200190f35b6101a160043561067a565b005b341561063e57fe5b6101b36116d4565b60408051918252519081900360200190f35b341561066057fe5b6101b36116da565b60408051918252519081900360200190f35b6001805460009160a060020a90910460ff161515141561069a5760006000fd5b3482600654826103e8600554856106b28660016116e0565b6106bd8760016116e0565b60640388028115156106cb57fe5b0401028115156106d757fe5b040311806106e6575060085482105b806106f15750600281105b806106fc5750606381115b156107075760006000fd5b610773604060405190810160405280600681526020017f6e657374656400000000000000000000000000000000000000000000000000008152506101c0604051908101604052806101a081526020016120d66101a0913960015460a860020a900463ffffffff16611703565b6009805460019081019091556000828152600e6020908152604080832085905560138252808320899055600f82528083203490819055600c9092529091208054600160a060020a03191633600160a060020a0316179055600554929550916103e89183906107e29089906116e0565b6107ed8960016116e0565b60640334028115156107fb57fe5b04010281151561080757fe5b60008681526015602052604090209190049190910390819055600b5461082c91611a4a565b600b81905560045490106108405760006000fd5b6000838152600f60209081526040808320546015909252909120546108659190611a4a565b6000848152600c6020908152604080832054600e8352818420546015845282852054600f855283862054601386529584902054845191825294810195909552848301939093529051600160a060020a03909116927f1cb5bfc4e69cbacf65c8e05bdb84d7a327bd6bb4c034ff82359aefd7443775c4919081900360600190a45b5b50505b5050565b60075481565b60025433600160a060020a0390811691161461090f5760006000fd5b60058190555b5b50565b6108e98282600060405180591061092d5750595b908082528060200260200182016040525b506109cc565b5b5050565b60025460a060020a900460ff1681565b60025433600160a060020a039081169116146109755760006000fd5b60038054600160a060020a031916600160a060020a0383161790555b5b50565b60035433600160a060020a039081169116146109b15760006000fd5b6109bd60045434611a4a565b60045561019e611a6d565b5b5b565b6109d4611a81565b600160a060020a031633600160a060020a03161415156109f45760006000fd5b60025460a060020a900460ff16151560011415610a115760006000fd5b6000838152600c6020526040902054600160a060020a03161515610a355760006000fd5b610a3e82611bbd565b6000848152601160209081526040918290208390559051828152835160639392859291828201918401908083835b60208310610a8b5780518252601f199092019160209182019101610a6c565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120935050508215159050610ac357fe5b600085815260126020908152604080832094909306600101909355600c83528181208054600d85528383208054600160a060020a03909216600160a060020a0319928316179055815416905560158352818120805460169094529181209283559055600b549054610b3491906116e0565b600b556000838152600f602090815260408083208054601084528285205583905560129091529020541515610dee57600083815260136020908152604080832054600d835281842054600e8452828520546012855283862054601086529584902054845187815280870182905260039581018690526080606082018181528a519183019190915289519598600160a060020a0390951697939660008051602061227683398151915296939490938b93929160a0840191908501908083838215610c18575b805182526020831115610c1857601f199092019160209182019101610bf8565b505050905090810190601f168015610c445780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46000838152600d60209081526040808320546010909252808320549051600160a060020a039092169281156108fc029290818181858888f193505050501515610de957600083815260136020908152604080832054600d835281842054600e8452828520546012855283862054601086529584902054845187815280870182905260049581018690526080606082018181528a519183019190915289519598600160a060020a0390951697939660008051602061227683398151915296939490938b93929160a0840191908501908083838215610d4c575b805182526020831115610d4c57601f199092019160209182019101610d2c565b505050905090810190601f168015610d785780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46000838152600d6020908152604080832054600160a060020a031683526014825280832054868452601090925290912054610dc39190611a4a565b6000848152600d6020908152604080832054600160a060020a0316835260149091529020555b6112bb565b60008381526013602090815260408083205460129092529091205410156110f457600454600084815260166020526040902054610e2b91906116e0565b600455600083815260166020908152604080832054601090925290912054610e539190611a4a565b6000848152601660208181526040808420858155600a80549096019095556013825280842054600d835281852054600e8452828620546012855295839020549484529554825185815280850182905260019381018490526080606082018181528a519183019190915289519398600160a060020a0316979660008051602061227683398151915296909593948b93929160a0840191908501908083838215610f16575b805182526020831115610f1657601f199092019160209182019101610ef6565b505050905090810190601f168015610f425780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a4610f5a611a6d565b6000838152600d60209081526040808320546016909252808320549051600160a060020a039092169281156108fc029290818181858888f193505050501515610de957600083815260136020908152604080832054600d835281842054600e8452828520546012855283862054601686529584902054845187815280870182905260029581018690526080606082018181528a519183019190915289519598600160a060020a0390951697939660008051602061227683398151915296939490938b93929160a0840191908501908083838215611052575b80518252602083111561105257601f199092019160209182019101611032565b505050905090810190601f16801561107e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46000838152600d6020908152604080832054600160a060020a031683526014825280832054868452601690925290912054610dc39190611a4a565b6000848152600d6020908152604080832054600160a060020a0316835260149091529020555b6112bb565b600083815260136020908152604080832054601290925290912054106112bb57600083815260136020908152604080832054600d835281842054600e8452828520546012855283862054601086528487205485518281528088018290529586018890526080606087018181528a519188019190915289519598600160a060020a03909516979396600080516020612276833981519152969395929492938b9391929160a08401919085019080838382156111c9575b8051825260208311156111c957601f1990920191602091820191016111a9565b505050905090810190601f1680156111f55780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a4600454600084815260106020526040902054611225919060001901611a4a565b600455611230611a6d565b6000838152600d6020526040808220549051600160a060020a03909116919060019082818181858883f193505050501515610de9576000838152600d6020908152604080832054600160a060020a031683526014909152902054610dc3906001611a4a565b6000848152600d6020908152604080832054600160a060020a0316835260149091529020555b5b5b5b5b505050565b620f424081565b606381565b600160a060020a0381166000908152601460205260409020545b919050565b60025433600160a060020a0390811691161461130b5760006000fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a831515021790555b5b50565b60025433600160a060020a039081169116146113545760006000fd5b60028054600160a060020a031916600160a060020a0383161790555b5b50565b600281565b60025433600160a060020a039081169116146113955760006000fd5b61c3508111156113a55760006000fd5b6007819055610915611a6d565b5b5b50565b600354600160a060020a031681565b60025433600160a060020a039081169116146113e25760006000fd5b60088190555b5b50565b60025433600160a060020a039081169116146114085760006000fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a831515021790555b5b50565b60015460a860020a900463ffffffff1681565b60025433600160a060020a039081169116146114645760006000fd5b611470600454826116e0565b60045561147b611a6d565b604051600160a060020a0383169082156108fc029083906000818181858888f1935050505015156114ac5760006000fd5b6040518190600160a060020a038416907f42c501a185f41a8eb77b0a3e7b72a6435ea7aa752f8a1a0a13ca4628495eca9190600090a35b5b5050565b60045481565b600254600160a060020a031681565b60085481565b60006000600260149054906101000a900460ff1615156001151514156115295760006000fd5b50600160a060020a033316600081815260146020526040808220805490839055905190929183919081818185876185025a03f1925050501561156e576001915061158c565b600160a060020a033316600090815260146020526040812082905591505b5b5b5090565b60065481565b600a5481565b60095481565b60015460a060020a900460ff1681565b60025433600160a060020a039081169116146115d05760006000fd5b6115dc600b54836116e0565b600b55604051600160a060020a0384169082156108fc029083906000818181858888f1935050505015156116105760006000fd5b6040518190600160a060020a0385169086907f7b6ccf85690b8ce1b7d21a94ca738803a9da7dc74e10140f269efa0d8d6fb85190600090a45b5b50505050565b60025433600160a060020a0390811691161461166c5760006000fd5b6001805478ffffffff000000000000000000000000000000000000000000191660a860020a63ffffffff8416021790555b5b50565b60025433600160a060020a039081169116146116bd5760006000fd5b600254600160a060020a0316ff5b5b565b60055481565b6103e881565b600b5481565b60006116ec8383611bd2565b15156116f85760006000fd5b508082035b92915050565b600080548190600160a060020a03161580611730575060005461172e90600160a060020a0316611bdd565b155b156117415761173f6000611be5565b505b600060009054906101000a9004600160a060020a0316600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561179c57fe5b60325a03f115156117a957fe5b505060408051805160018054600160a060020a031916600160a060020a039283161790819055600060209384015283517f2ef3accc00000000000000000000000000000000000000000000000000000000815260248101899052600481019485528a5160448201528a51919092169450632ef3accc938a93899391928392606401918601908083838215611858575b80518252602083111561185857601f199092019160209182019101611838565b505050905090810190601f1680156118845780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b15156118a057fe5b60325a03f115156118ad57fe5b505060405151915050670de0b6b3a76400003a8402018111156118d35760009150611a41565b600160009054906101000a9004600160a060020a0316600160a060020a031663c51be90f8260008888886000604051602001526040518663ffffffff1660e060020a028152600401808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360008314611973575b80518252602083111561197357601f199092019160209182019101611953565b505050905090810190601f16801561199f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838382156119de575b8051825260208311156119de57601f1990920191602091820191016119be565b505050905090810190601f168015611a0a5780820380516001836020036101000a031916815260200191505b5096505050505050506020604051808303818588803b1515611a2857fe5b61235a5a03f11515611a3657fe5b505060405151935050505b5b509392505050565b6000611a568383611de2565b1515611a625760006000fd5b508181015b92915050565b600754600454620f424091025b046006555b565b60008054600160a060020a03161580611aac5750600054611aaa90600160a060020a0316611bdd565b155b15611abd57611abb6000611be5565b505b600060009054906101000a9004600160a060020a0316600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515611b1857fe5b60325a03f11515611b2557fe5b505060408051805160018054600160a060020a031916600160a060020a0392831617908190556000602093840181905284517fc281d19e000000000000000000000000000000000000000000000000000000008152945191909216945063c281d19e9360048082019493918390030190829087803b1515611ba257fe5b60325a03f11515611baf57fe5b5050604051519150505b5b90565b6000611bca826000611df0565b90505b919050565b818111155b92915050565b803b5b919050565b60006000611c06731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed611bdd565b1115611c3a575060008054600160a060020a031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560016112ea565b6000611c5973c03a2615d5efaf5f49f60b7bb6583eaec212fdf1611bdd565b1115611c8d575060008054600160a060020a03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560016112ea565b6000611cac73b7a07bcf2ba2f2703b24c0691b5278999c59ac7e611bdd565b1115611ce0575060008054600160a060020a03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560016112ea565b6000611cff736f485c8bf6fc43ea212e93bbf8ce046c7f1cb475611bdd565b1115611d33575060008054600160a060020a031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016112ea565b6000611d527320e12a1f859b3feae5fb2a0a32c18f5a65555bbf611bdd565b1115611d86575060008054600160a060020a0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016112ea565b6000611da57351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa611bdd565b1115611dd9575060008054600160a060020a0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016112ea565b5060005b919050565b808201829010155b92915050565b6000611dfa611f72565b5082600080805b8351811015611f525783517f300000000000000000000000000000000000000000000000000000000000000090859083908110611e3a57fe5b90602001015160f860020a900460f860020a02600160f860020a03191610158015611eb0575083517f390000000000000000000000000000000000000000000000000000000000000090859083908110611e9057fe5b90602001015160f860020a900460f860020a02600160f860020a03191611155b15611f0a578115611ecf57851515611ec757611f52565b600019909501945b5b600a8302925060308482815181101515611ee657fe5b90602001015160f860020a900460f860020a0260f860020a90040383019250611f48565b8381815181101515611f1857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602e60f860020a021415611f4857600191505b5b5b600101611e01565b6000861115611f645785600a0a830292505b8294505b5050505092915050565b60408051602081019091526000815290565b600054600160a060020a03161580611fae5750600054611fac90600160a060020a0316611bdd565b155b15611fbf57611fbd6000611be5565b505b600060009054906101000a9004600160a060020a0316600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561201a57fe5b60325a03f1151561202757fe5b505060408051805160018054600160a060020a031916600160a060020a0392831617908190557f688dcfd70000000000000000000000000000000000000000000000000000000083527fff000000000000000000000000000000000000000000000000000000000000008616600484015292519216925063688dcfd791602480830192600092919082900301818387803b15156120c057fe5b60325a03f115156108e557fe5b5050505b5b5056005b55524c5d205b276a736f6e2868747470733a2f2f6170692e72616e646f6d2e6f72672f6a736f6e2d7270632f312f696e766f6b65292e726573756c742e72616e646f6d2e646174612e30272c20275c6e7b226a736f6e727063223a22322e30222c226d6574686f64223a2267656e65726174655369676e6564496e746567657273222c22706172616d73223a7b226170694b6579223a247b5b646563727970745d204244433831396e54596245694279722f69776e647a4e64534a394a474a475257774f546e464c687246637874576835334837737a63714861432b5a2f36554b483654364e35375269504e6d4257476546536d7155524855714353794e38766d556a566a3967456937486d436f516c4c53707838514a5456394f7868466634337538566e374475675a636779566350456b4573326c54503142586941647d2c226e223a312c226d696e223a312c226d6178223a3130302c227265706c6163656d656e74223a747275652c2262617365223a3130247b5b6964656e746974795d20227d227d2c226964223a31247b5b6964656e746974795d20227d227d275d631b7e83754f4cdc55b37da22c617abf4803c0263b8ea1a436d43eed60d6a1e8a165627a7a72305820f1ae9585307ee165eb7d9bf3324ba5b8d107da0e476a62014ad07e1d40c3aac50029

   Swarm Source:
bzzr://f1ae9585307ee165eb7d9bf3324ba5b8d107da0e476a62014ad07e1d40c3aac5
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.