function __callback(bytes32 _queryId, string _numStr) public {
        if (msg.sender != oraclize_cbAddress()) revert();
        uint256 _roundId = randomQueryMap[_queryId][0];
        uint256 _index   = randomQueryMap[_queryId][1];
        
        
        if(roundInfo[_roundId].bets[_index].refund){
            return;
        }
        
        bytes32 _numBytes;
        assembly {
            _numBytes := mload(add(_numStr, 32))
        }
        uint8[3] memory _numbers = [uint8(_numBytes[1]) - 48, uint8(_numBytes[4]) - 48, uint8(_numBytes[7]) - 48];
        roundInfo[_roundId].bets[_index].result = _numbers;
        
        Boom3datasets.Bet memory betInfo = roundInfo[_roundId].bets[_index];
        
        if(roundInfo[_roundId].end > 0){
            
            __addVal("refund", betInfo.user, betInfo.value);
            roundInfo[_roundId].bets[_index].refund = true;
            return ;
        }
        
        __distributeBetValue(_roundId, betInfo);
        
        __dealResult(_roundId, betInfo);
    }