// ==UserScript==
// @name Freebitco.in - Auto Roll (no captcha) - Status Console - Human Behavior - All Bonuses - Jun 2020
// @description 0. BEST AUTOROLL SCRIPT IN JUN 2020 1. Auto Roll 2. Status Console 3. Close ADS 4. Human Simulation 5. Multiply game 6. Lottery tickets 7. Bonus 1000% 8. Rewards RP 9. Slower in the night 10. Undetectable 11.TopDown Config - made by dany-veneno in 2018 for private use, published in 2020, constantly updated.
// @author dany-veneno
// @icon https://bit.ly/3bY0vU9
// @match https://freebitco.in/*
// @grant none
// @create 2018-05-27
// @lastmodified 2020-06-01
// @version 2.7.4
// @namespace https://greasyfork.org/users/572366
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @license NTP
// @supportURL https://bit.ly/3d1kW48
// @home-url https://bit.ly/2M4BNH7
// @home-url2 https://bit.ly/2zn0b4p
// @homepageURL https://greasyfork.org/en/scripts/404112
// @copyright 2018-2020, dany-veneno
// @run-at document-end
// @note 2020-06-01-V.2.7.4 Captcha error
// @note 2020-06-01-V.2.7.3 Bug fix - rollback on random click on button
// @note 2020-06-01-V.2.7.2 Bug fix on rewards function
// @note 2020-06-01-V.2.7.1 Add Bonus Status in the box && name && description
// @note 2020-06-01-V.2.7 Click on Roll Button at random position && cookie for rewardsBonuses!
// @note 2020-06-01-V.2.6 Bug Fixes && FreeRoll interval etc. && Count distance from jackpot corrected (road to multiply)
// @note 2020-05-29-V.2.5.3 Night mode more sleepy && added a 2h delay in daymode
// @note 2020-05-29-V.2.5.2 Body Focus
// @note 2020-05-28-V.2.5.1 Add rate link && StatusBox texts
// @note 2020-05-28-V.2.5 Code Cleaned and optimized, all code in separate functions
// @note 2020-05-28-V.2.2.2 Promo_Mode Flag && Bonus1000 flag
// @note 2020-05-27-V.2.2.1 Script Name
// @note 2020-05-27-V.2.2 ExecutionsNum && Script Name && Description
// @note 2020-05-27-V.2.1 First Execution fast Roll && Staus title && link to config how to
// @note 2020-05-27-V.2.0.1 Minor changes and fixes
// @note 2020-05-27-V.2.0.0 MAJOR: STATUS CONSOLE && ADS remove
// @note 2020-05-26-V.1.9.1 Outputs && default loglevel to 4
// @note 2020-05-26-V.1.9 Timings in Roll && Sleep between buying RP && Colors && fixes
// @note 2020-05-26-V.1.8 Hour format update && reduced lottery tickets number && fixes
// @note 2020-05-25-V.1.7 Added logging && changed timings && verifying all good && faster on RPActive
// @downloadURL none
// ==/UserScript==
////////////
// CONFIG //
////////////
// >>>>>>>>>>>>>> //
// *** Bonuses
var REWARDS = true; //decide if auto buy rewards bonuses, or not ***When true, it will activate RP promotions***
var BONUS1000 = true; //decide if to buy 1000% bonus or not. It costs 4600 RP. *** When BONUS1000 = false and REWARDS = true, you'll increase RP. ***
var PROMO_MODE = true; // decide if play faster when some promo (bonus RP or 1000% is active, or not.
// *** Lottery
var LOTTERY = true; //decide if auto buy lottery tickets, or not. ***When true, It will buy lottery tickets 7% of the times ***
var LOTTERY_MAX_TICKETS = 20; // Max ticket to buy
// *** Multiply Game ** Wait for version 3.0 to activate it.
var MULTIPLY = false; //decide if play Multiply games or not ***It's a doubling technique. Play at your risk *** ***When true, it's played randomly***
var MAX_ROLLS_AT_MULTIPLY = 1000; //how many rolls in multiply.
// ** Logging
var LOGGING = 5; //0 is no messages, 5 is debug
// <<<<<<<<<<<<<< //
// System Variables //
// >>>>>>>>>>>>>>>> //
var css_reset='font-weight: reset; color:reset';
var css_bold='font-weight:bold;';
var script_output = "";
var script_output_msg_1 = "";
var script_output_msg_2 = "";
var script_output_msg_css = "";
var reward = {};
var ads_closed=0; //number of ads closed, increasing
var rolling_mode="Day"; //night, day, promo
var dateTimeFormat = new Intl.DateTimeFormat('en', { year: 'numeric', month: 'short', day: '2-digit', hour: 'numeric', minute: 'numeric', hour12: false });
var script_version = GM_info.script.version;
var totJack = getCookie("totJack");
var tot_exec = getCookie("executions");
var last_multiply = getCookie("last_multiply")
var isBonusActive = false;
var rand = 0;
// <<<<<<<<<<<<<<<< //
(function() {
'use strict';
if (LOGGING > 0) console.log("%c<<<<<<<<<< Script Begin >>>>>>>>>>", 'font-weight:bold; color: green');
// Initialize the Status Panel
panelInit();
// Lottery function
// It will plan to buy few lottery tickets, more less 7% of the times
lottery();
// Reward function
// it will call the roll function, that call the multiply function.
// Call the freeRoll
setInterval(function(){
setTimeout(function(){ rewards(); }, 3000 );
setTimeout(function(){ freeRoll(); }, 5000 );
setTimeout(function(){ showStatus(); }, 1000 );
}(), 900000);
setInterval(function(){
// Close the reveals mode
closePopupInterval($('.close-reveal-modal'));
closePopupInterval($('.pushpad_deny_button'));
}, 30000);
//Close Ads but not always
setTimeout(function(){
closeRandomPopupInterval($('div.close_daily_jackpot_main_container_div'),30);
closeRandomPopupInterval($('i.fa.fa-times-circle.close_deposit_promo_message'),40);
closeRandomPopupInterval($('div#lambo_contest_msg a.close'),10); //lambo contest
closeRandomPopupInterval($('div#earn_btc_msg a.close'),20);
closeRandomPopupInterval($('div#enable_2fa_msg_alert a.close'),30);
closeRandomPopupInterval($("[id^='hide_rp_promo']"),50);
}, 20000)
//Show elapsed time every 10 min.
setInterval(function(){
showStatus();
}, 900000);
// Activate DOM Monitors
// First, check all played numbers, even in multiply, and check if it's 8888. To have a measure when to play *jackpot*.
$('#previous_roll').on('DOMSubtreeModified', function(){
var rolled = $('#previous_roll').html();
if (rolled > 0 && rolled <= 10000 && rolled != 8888){
//if (LOGGING > 4) console.log("prevNumber rolled: "+rolled);
totJack++;
setCookie("totJack", totJack, "365");
//console.log(document.cookie);
} else if (rolled == 8888) {
setCookie("totJack", 0, "365");
if (LOGGING > 0) console.log("************** 8888 **************");
}
});
// Give info about jackpot
$('#multiplier_fifth_digit').on('click', function(){
showStatus();
});
}
)();
function panelInit () {
// Create the Div on the page
script_output_msg_css = "";
script_output = script_output_msg_css + '
';
script_output += '
AutoRoll Status v.'+script_version+'
';
script_output += '
';
script_output += 'Executions #'+tot_exec+'
';
script_output += 'Ads Closed: 0
';
script_output += 'Bonus: Wait
';
script_output += 'Mode: Wait';
script_output += '';
script_output += '
';
script_output += '
';
script_output += '
';
script_output += '
Donations are welcome, btc address: 3FwAazZDEuy3ER4NQVp4Yqo6kDxCFntwS8 - Config HowTo - Rate - © daniele-veneno 2018-2020
';
$('#reward_points_bonuses_main_div').prepend(script_output);
}
function rewards() {
var points = parseInt($('.user_reward_points').text().replace(',',""));
var bonustime = {};
var t = missingTime();
var d = new Date();
var _min = 20;
if ($("#bonus_container_free_points").length != 0) {
bonustime.text = $('#bonus_span_free_points').text();
bonustime.hour = parseInt(bonustime.text.split(":")[0]);
bonustime.min = parseInt(bonustime.text.split(":")[1]);
bonustime.sec = parseInt(bonustime.text.split(":")[2]);
bonustime.current = bonustime.hour * 3600 + bonustime.min * 60 + bonustime.sec;
isBonusActive = true;
} else bonustime.current = 0;
var last_bonus = Date.parse(getCookie("last_bonus"));
var last_bonus_diff = Math.floor(d - last_bonus);
if (LOGGING > 4) console.log("%c[Debug] lastBonus diff: "+last_bonus_diff+" -- last_bonus: "+last_bonus+" -- d: "+d.getTime(), 'color:grey');
if (LOGGING > 4) console.log("Bonus missing seconds: "+bonustime.current+" -- Reward Points avail: "+points+" -- missingTime: "+t[0]);
if (Boolean(isBonusActive)) {
if (LOGGING > 3) console.log("%cPromo RP is active!", 'color: grey');
if(Boolean(PROMO_MODE)) $("#script_output_title_msg_mode").text("Promo");
$('#script_output_title_bonus_wait_hours').text('Active '+bonustime.hour+'h');
setCookie("last_bonus", d, 7);
} else {
// Buy Bonus if missing less then 10 minutes before roll and has passed at least 24h from the last one
if (Boolean(REWARDS) && t[0]<_min && t[0] > 0 && last_bonus_diff > 86400000) {
$('.rewards_link').not('.hide_menu').click();
if (reward.points < 12) {
if (LOGGING > 2) console.log("No enough points to buy bonus. Less then 12. Waiting for points in next rolls");
} else if (points < 120) {
if (LOGGING > 1) console.log("buying bonus 1RP");
setTimeout(function(){ RedeemRPProduct('free_points_1')},random(2000,16000));
} else if (points < 600) {
if (LOGGING > 1) console.log("buying bonus 10RP");
setTimeout(function(){ RedeemRPProduct('free_points_10')},random(2000,16000));
} else if (points < 1200) {
if (LOGGING > 1) console.log("buying bonus 50RP");
setTimeout(function(){ RedeemRPProduct('free_points_50')},random(2000,16000));
} else {
if (LOGGING > 1) console.log("buying bonus 100RP");
setTimeout(function(){ RedeemRPProduct('free_points_100')},random(2000,16000));
}
if ($('#bonus_span_fp_bonus').length === 0)
if (points >= 4600 && Boolean(BONUS1000) ) {
if (LOGGING > 1) console.log("buying bonus 1000% roll");
setTimeout(function(){ RedeemRPProduct('fp_bonus_1000')},random(15000,35000));
}
//Back to the main page
setTimeout(function(){ $('.free_play_link').not('.hide_menu').click(); }, random(1000,3000));
// Update Status Menu
$("#script_output_title_msg_mode").text("promo");
} else {
//getting colors
var c1 = 'red'; var c2 = 'red'
var min_before_roll = 20;
if (last_bonus_diff < 86400000) {
if (LOGGING > 3) console.log('Not buying RP. Wait 24hours before buy again');
$('#script_output_title_bonus_wait_hours').text('Wait '+Math.floor(last_bonus_diff/1000/60/60)+"h");
}
if (t[0] >= min_before_roll) {
if (LOGGING > 3) console.log('Not buying RP. Wait '+Math.floor(t[0]-min_before_roll)+'m');
$('#script_output_title_bonus_wait_hours').text('Wait Roll');
} else if (t[0] < 0){
if (LOGGING > 3) console.log('%cError getting missing time.','color:red');
$('#script_output_title_bonus_wait_hours').text('Err001');
$('#script_output_title_bonus_wait_hours').removeClass('true').addClass('false');
} else c2 = 'green';
if (Boolean(REWARDS)) { c1 = 'green'; }
else {
if (LOGGING > 3) console.log('Not buying RP. Not Active by config');
$('#script_output_title_bonus_wait_hours').text('Not Active');
$('#script_output_title_bonus_wait_hours').removeClass('true').addClass('false');
}
if (LOGGING > 3) console.log('Not buying RPBonuses: Setting Variable is: %c'+Boolean(REWARDS)+' %c -- %c and missing minutes are: %c '+t[0]+' %c(<'+min_before_roll+')', 'color:'+c1, 'color:reset; font-weight:bold', 'font-weight: reset', 'color:'+c2, 'color:reset; font-weight:bold');
}
}
}
function freeRoll() {
var d = new Date();
var h = d.getHours();
var rand=0;
var r=0;
var tot_btc_winning_rolling = getCookie('tot_btc_winning_rolling');
var tot_lottery_winning_rolling = getCookie('tot_lottery_winning_rolling');
var tot_rp_winning_rolling = getCookie('tot_rp_winning_rolling');
var executions = getCookie('executions');
if (! (tot_btc_winning_rolling > 0)) tot_btc_winning_rolling = 0;
if (! (tot_lottery_winning_rolling > 0)) tot_lottery_winning_rolling = 0;
if (! (tot_rp_winning_rolling > 0)) tot_rp_winning_rolling = 0;
if (! (executions > 0)) executions = 0;
if ($('#free_play_form_button').is(':visible') && ! $('#play_without_captchas_button').is(':visible')) {
r=random(1,100);
$('body').focus();
if (h <= 6 || h>=22) { //from 22 to 7am
if (r <= 30) rand=random(3000,7200000);
else rand=random(1000000,3600000);
rolling_mode="Night";
} else {
if (r <= 10) rand=random(9000,7200000); // xx%, long wait, more than hour
else if (r <= 30) rand=random(6000,1800000); // long but not longest
else if (r <= 71) rand=random(3000,1200000); // xx% cases medium
else rand=random(500,60000); // xx% cases fast roll
rolling_mode="Day";
}
if (Boolean(isBonusActive) && Boolean(PROMO_MODE) ) { //If promo is active, roll faster
if (r <= 5) rand=random(9000,3600000);
else if (r <= 20) rand=random(6000,1500000);
else if (r <= 40) rand=random(3000,1000000);
else rand=random(500,240000);
rolling_mode="Promo";
}
if (tot_btc_winning_rolling == 0) {
rand=random(1000,2000);
if (LOGGING > 2) console.log('>>>>> First Execution, fast ROLL');
}
$("#script_output_title_msg_mode").text(rolling_mode);
//rand = rand(1000,2000);
d.setSeconds(d.getSeconds() + rand/1000);
var [{ value: year },,{ value: month },,{ value: day },,{ value: hour },,{ value: minute }] = dateTimeFormat .formatToParts(d);
$('#script_output_title_msg_roll').html('Roll at '+hour+':'+minute+'');
if (LOGGING > 2) console.log('%c+++Will roll in '+rand/1000/60+' minutes','color:green');
if (LOGGING > 4) console.log('[Debug][freeRoll] Hour:'+h+'; r:'+r);
setTimeout(function(){ $('.free_play_link').not('.hide_menu').click();}, 1800);
setTimeout(function(){
//Duplicate the visibility chek to avoid error when humans roll and don't refresh.
if ($('#free_play_form_button').is(':visible') && ! $('#play_without_captchas_button').is(':visible')){
$('body').focus();
//Update Status on page
$('#script_output_title_msg_roll').html('++ Rolling NOW!'); // Status on page
if (LOGGING > 2) console.log('%c+++ROLL!','color:purple; font-weight: bold');
setTimeout(function(){
// var event= $.Event('click');
// event.ClientX = random(20,100).toFixed(0);
// event.ClientY = random(5,42).toFixed(0);
// if (LOGGING > 4) console.log('[Debug][freeRoll] Clicking at position: '+event.ClientX+':'+event.ClientY);
$('#free_play_form_button').click();
}, 500);
setTimeout(function(){
var win_btc = $('#winnings').text();
var win_lottery = $('#fp_lottery_tickets_won').text();
var win_rp = $('#fp_reward_points_won').text();
executions++;
//Update Status on page
$('#script_output_title_msg_roll').html('++ Rolled'); // Status on page
$('#script_output_title_executions_num').text(executions);
setCookie('executions', executions, 365);
if (LOGGING > 2) console.log('%cExecution number: '+executions,'font-weight:bold; color:green');
if (LOGGING > 2) console.log('%cGot '+win_btc+' btc, '+win_lottery+' tickets and '+win_rp+' RP!','font-weight:bold; color:green');
if (win_btc > 0) {
tot_btc_winning_rolling = parseFloat(parseFloat(tot_btc_winning_rolling) + parseFloat(win_btc)).toFixed(8);
setCookie('tot_btc_winning_rolling', tot_btc_winning_rolling, 365);
if (LOGGING > 2) console.log('%cBTC Won totally with script %c'+tot_btc_winning_rolling,'color: gray', 'font-weight:bold');
} else {
if (LOGGING > 1) console.log(''+'%cSome error retrieving Roll Winnings. Winning btc was: '+win_btc, 'color: red');
}
if (win_lottery > 0) {
tot_lottery_winning_rolling = parseFloat(parseFloat(tot_lottery_winning_rolling) + parseFloat(win_lottery)).toFixed(0);
setCookie('tot_lottery_winning_rolling', tot_lottery_winning_rolling, 365);
if (LOGGING > 2) console.log('%cTickets Won with script %c'+tot_lottery_winning_rolling,'color: gray', 'font-weight:bold');
} else {
if (LOGGING > 1) console.log(''+'%cSome error retrieving Roll Winnings. Winning lottery was: '+win_btc, 'color: red');
}
if (win_rp > 0) {
tot_rp_winning_rolling = parseFloat(parseFloat(tot_rp_winning_rolling) + parseFloat(win_rp)).toFixed(0);
setCookie('tot_rp_winning_rolling', tot_rp_winning_rolling, 365);
if (LOGGING > 2) console.log('%cRP Won with script %c'+tot_rp_winning_rolling,'color: gray', 'font-weight:bold');
} else {
if (LOGGING > 1) console.log(''+'%cSome error retrieving Roll Winnings. Winning RP was: '+win_btc, 'color: red');
}
}, 6999);
}
else {
if (LOGGING > 3) console.log('Already Rolled..');
//Update Status on page
$('#script_output_title_msg_roll').html('Already Rolled'); // Status on page
setTimeout(function(){ location.reload(); }, 30000);
}
},rand);
var rand1=rand+random(900000,1800000);
rand=random(0,1000);
if (rand < 500) {
if (LOGGING > 2) console.log('[Debug][freeRoll] Reload page after roll in '+rand1/1000/60+' minutes!');
setTimeout(function(){ location.reload(); }, rand1);
} else if (rand > 900 && Boolean(MULTIPLY) && h>=8) {
if (LOGGING > 0) console.log('Will multiply in '+rand1/1000/60+' minutes!');
setTimeout(function(){ multiply(); }, rand1);
} else {
if (LOGGING > 2) console.log('No action after roll. Rand was '+rand);
}
} else if ($('#play_without_captchas_button').is(':visible')){
$('#script_output_title_msg_roll').html('Captcha Error');
} else {
$('#script_output_title_msg_roll').html('Waiting Next Roll');
//$("#script_output_title_msg_mode").text("Wait");
if (LOGGING > 2) console.log("No roll");
}
}
function lottery () {
//Plan buying lottery ticket
if(Boolean(LOTTERY)){
var r=random(1,100);
var d = new Date();
var h = d.getHours();
if (r > 90 && h>=7) {
rand=random(1,LOTTERY_MAX_TICKETS).toFixed(0); //Tickets to buy
if (LOGGING > 2) console.log("Buy "+ rand + " lottery tickets in some time....");
if(parseInt($('#balance').text().split(".")[1]) > rand) {
$('lottery_link hide_menu').click();
setTimeout(function(){
$('#lottery_tickets_purchase_count').val(rand);
setTimeout(function(){
$('#purchase_lottery_tickets_button').click();
if (LOGGING > 2) console.log("Bought "+ rand + " lottery tickets");
}, random(2000,20000));
}, random(40000,2700000));
}
}
}
}
function missingTime () {
var min = 0; var sec = 0; var str = "";
str = $('title').text().split(" ")[0];
if (LOGGING > 4) console.log("%c[Debug] [missingTime] string: "+str, 'color: grey');
if (str.length <= 7 && str.length >= 3) {
min = str.split(':')[0]; if (min.length > 0) min = min.replace('m','');
sec = str.split(':')[1]; if (sec.length > 0) sec = sec.replace('s','');
} else { min = -1; sec = -1; }
return [min,sec];
}
function random(min,max){
return min + (max - min) * Math.random();
}
function closePopupInterval (target) {
if (target.is(':visible')) {
setTimeout(function(){
if (LOGGING > 3) console.log("%cClose ADS", 'color: grey');
target.click();
ads_closed ++;
$('#script_output_title_ads_closed_num').text(ads_closed);
}, random (500,120000));
} else {
//if (LOGGING > 4) console.log("%cNot visible: "+target.attr('id')+" "+target.attr('class'), 'color: grey');
}
}
function closeRandomPopupInterval (target, randomness) {
var rand = random(1,100);
if (rand < randomness && target.is(':visible')) {
setTimeout(function(){
if (LOGGING > 3) console.log("%cClose Random ADS", 'color: grey');
target.click();
ads_closed ++;
$('#script_output_title_ads_closed_num').text(ads_closed);
}, random (500,120000));
} else {
//if (LOGGING > 4) console.log("%cNot visible: "+target.attr('id')+" "+target.attr('class'), 'color: grey');
}
}
function showStatus(){
var t=missingTime();
var date = new Date();
var [{ value: month },,{ value: day },,{ value: year },,{ value: hour },,{ value: minute }] = dateTimeFormat .formatToParts(date );
var ca='red'; var cb='red'; var cc='red'; var css='font-weight: bold; color:';
var c1='purple'; var c2='olive';
var c3='brown'; var c4='teal';
if (LOGGING > 0) console.log(">>>>>>>>>>%c Status:%c ["+hour+":"+minute+"]", css_bold+'color:'+c1, css_bold);
//Rewards and multiply infos and colors
if (Boolean(REWARDS)) ca = 'green'; if (Boolean(MULTIPLY)) cb='green'; if (Boolean(LOTTERY)) cc='green';
var cssa='font-weight: bold; color:'+ca;
var cssb='font-weight: bold; color:'+cb;
var cssc='font-weight: bold; color:'+cc;
if (LOGGING > 0) console.log(">>>>>>>>>> Buying Rewards: "+"%c"+Boolean(REWARDS)+""+"%c; Playing Multiply: "+"%c"+Boolean(MULTIPLY)+""+"%c; Buying Lottery: "+"%c"+Boolean(LOTTERY), cssa, css_reset,cssb, css_reset, cssc);
if (t[0] > 0 || t[1] > 0) {
if (LOGGING > 0) console.log(">>>>>>>>>> Missing "+"%c"+t[0]+" min "+t[1]+" sec"+"%c for next roll",css_bold+"color:"+c1,css_reset);
}
// Free Roll total Winnings via cookie
var tot_btc_winning_rolling = getCookie('tot_btc_winning_rolling');
var tot_lottery_winning_rolling = getCookie('tot_lottery_winning_rolling');
var tot_rp_winning_rolling = getCookie('tot_rp_winning_rolling');
if (! (tot_btc_winning_rolling > 0)) tot_btc_winning_rolling = 0;
if (! (tot_lottery_winning_rolling > 0)) tot_lottery_winning_rolling = 0;
if (! (tot_rp_winning_rolling > 0)) tot_rp_winning_rolling = 0;
if (LOGGING > 0) console.log(">>>>>>>>>> BTC won with script: "+"%c"+tot_btc_winning_rolling, css_bold+'color:'+c4);
if (LOGGING > 0) console.log(">>>>>>>>>> Tickets won with script: "+"%c"+tot_lottery_winning_rolling, css_bold+'color:'+c4);
if (LOGGING > 0) console.log(">>>>>>>>>> RP won with script: "+"%c"+tot_rp_winning_rolling, css_bold+'color:'+c4);
if (LOGGING > 0) console.log(">>>>>>>>>> Rolls from last 8888: "+"%c"+totJack, css_bold+'color:'+c2);
// Update Status Message OnPage
script_output_msg_2 = "Config: ";
script_output_msg_2 += "REWARDS <> ";
script_output_msg_2 += "MULTIPLY <> ";
script_output_msg_2 += "LOTTERY <> ";
script_output_msg_2 += "BONUS1000";
script_output_msg_2 += "";
script_output_msg_2 += " Auto Roll Script Winnings: ";
script_output_msg_2 += ""+tot_btc_winning_rolling+" btc; ";
script_output_msg_2 += ""+tot_lottery_winning_rolling+" tickets; ";
script_output_msg_2 += ""+tot_rp_winning_rolling+" RP.";
$('#script_output_msg_2').html(script_output_msg_2);
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i 2) console.log('bonus balance: '+bonustime_balance+'; wager remaining: '+bonustime_wager_remaining);
}
if (LOGGING > 2) console.log('total balance: '+balance);
setTimeout(function(){ $('.free_play_link').not('.hide_menu').click(); }, random(900000,1200000));
}