Freebitcoin [2023] - Auto Roll - New Bonuses - Multiply - Lottery - Status Console

AUTOROLL SCRIPT [DEC 2023] --Auto Roll --Status Console --4+ Betting Strategies --Special graphs --Extinction bet --Balance protection --Odds -- Increase Rate --AutoRoll Low Balance paying RP --Human Simulation --NO captcha solving --Lottery tickets --1000% & WOF Bonus --Close ADS --Slower night mode --Advanced human random times .

在您安装前,Greasy Fork 希望您知道此脚本声明其包含了一些负面功能。这些功能也许会使脚本作者获利,而不能给您带来任何直接的金钱收益。

作者可从这份脚本获得佣金,例如通过修改链接地址或提供优惠券代码以包含推荐或附属代码。

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Freebitcoin [2023] - Auto Roll - New Bonuses - Multiply - Lottery - Status Console
// @description  AUTOROLL SCRIPT [DEC 2023] --Auto Roll --Status Console --4+ Betting Strategies --Special graphs --Extinction bet --Balance protection --Odds -- Increase Rate --AutoRoll Low Balance paying RP --Human Simulation --NO captcha solving --Lottery tickets --1000% & WOF Bonus --Close ADS --Slower night mode --Advanced human random times .
// @author       dany-veneno
// @icon         https://bit.ly/33sYX3b
// @match        https://freebitco.in/*
// @grant        none
// @create       2018-05-27
// @lastmodified 2023-12-21
// @version      4.0.1
// @compatible   firefox Tested with Tampermonkey
// @compatible   chrome Tested with Tampermonkey
// @namespace    https://greasyfork.org/users/572366
// @license      GPL
// @supportURL   https://bit.ly/2JsP12I
// @homepage     https://crypto-info-blog.blogspot.com/p/freebitcoin-autoroll-install-how-to.html
// @home-url     https://bit.ly/2M4BNH7
// @home-url2    https://bit.ly/2zn0b4p
// @homepageURL  https://greasyfork.org/en/scripts/404112
// @copyright    2018-2024, dany-veneno
// @run-at       document-begin
// @antifeature  referral-link

// @note         If you like this script, please register with my referal: https://bit.ly/2XFuZVQ
// @note         Or send some satoshi at this address 3FwAazZDEuy3ER4NQVp4Yqo6kDxCFntwS8
// @note         This will help a lot script development and future free updates  
// @note         -- As 2023/12, some code revision is in process --  

// @history      4.0.1 Safer config on update; Removed bitso.me links for safety reason, because domain was lost
// @history      4.0 New Bonuses
// @history      3.8 Added free graphs gor everybody
// @history      3.7.0 Test your multiply config on bitso.me calculator
// @history      3.6.9 Lights blinks in multiply panel
// @history      3.6.8 Bugfix in multiply max_play
// @history      3.6.7 Small bugfix in new funcs
// @history      3.6.5 New Server Migration, send multiply info at server, bugfix in multiply type 0 and more
// @history      3.6.3 Play count in strategy=0 fixed, new ads closed
// @history      3.6.2 Added REFERRAL PANEL in multiply tab, BtcPrice update every 10 min and infinite bugfix, added reset stats
// @history      3.6   Added btcprice and satprice in status panel, and disabled animation in multiply  - CastorpoluXX
// @history      3.5.9 BugFixs in multiply target, fixed - CastorpoluXX

// ==/UserScript==

////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////
/////////     CONFIG             ///
//////   EDIT JUST THIS SECTION   //
////////////////////////////////////


// ** BEHAVIOR ** //
var ROLL = true;       // Auto Roll enable or disable. **** If Disabled, Multiply will NOT be executed ***. Override nexts.
var PROMO_MODE = false; // play faster when some promo (bonus RP or 1000% is active, or not. Override nexts.
var GHOST_MODE = true; // *NEW* Don't play in the night if no promo actives. Override nexts.
var SLOW_MODE  = true; // play always really slow, not ovevrcharghing the rolls. Override nexts.
var NIGHT_MODE = true; // play slower when it's night time

// *** Bonuses
// It buys bonuses just when missing less then 20 minutes to the Roll. To avoid losing 1 bonus Roll. 
// var REWARDS = true; //decide if auto buy rewards bonuses, or not ***When true, it will activate RP promotions***
var BONUS_WOF = false; // decide if to buy or not WOF bonus ***
var BONUS1000 = false; // decide if to buy 1000% bonus or not. It costs 4600 RP.  *** When BONUS1000 = false and REWARDS = true, you'll increase RP. ***
var HOURS_BETWEEN_BUY_BONUS = 240; // How many hours to wait before to buy Bonuses Rewards Promo again

// *** Lottery
var LOTTERY = false; //decide if auto buy lottery tickets, or not. 
var LOTTERY_MAX_TICKETS = 15; // Max ticket to buy
var LOTTERY_P = 7; // 0 is never, 100 is always

// *** Multiply Game
// Exec Vars. **If and When Play**.
var MULTIPLY = false;            // Play Multiply games or not, Play at your own risk.  If ROLL is false, Multiply will not work. 
var MULTIPLY_AT_NIGHT = true;   // Play multiply in nightiime
var MULTIPLY_WAIT_HOURS = 36; // How many hours to wait before to play multiply
var ROLL_P = 20;                // How many time to play multiply, AFTER roll AND AFTER HOURS passed; Values: 0-100 

// Strategy of play
var STRATEGY = 0;// [0-3] ---> ..(0) classic martingale, odds2 incr100; ..(1) wait min_losses; ..(2) wait_play_afterlosses; ..(3) same as 2, with min_lossess increments every play.  Check guides. 

// Exit Vars. **First condition met, multiply will stop**
var MAX_ROLLS_AT_MULTIPLY = 1000;   //how many rolls in multiply. It will safely play till it win or reach maxbet.
var MAX_PLAY = 400;                 // How many time maximum will play martingale. How much time BASE_BET is played.
var MAX_WIN = 0.00001000;          // Target Win, Stop to play multiply when those sats won.
var MAX_BET = 0.00004096;           // MAX BET reached, STOP condition

// Bet Amounts Vars. 
var MIN_BET = 0.00000001; // STUFF BET to play till don't lose LOSSES_BEFORE_PLAY times; Just work in MODE = manual.
var BAS_BET = 0.00000001; // BASE BET when begin the PLAY

// Strategies Vars. **How to play**.
var ODDS = 2;     // Odds of the multiply game. 
var INCR = 100;    // Porcentage of increment in case of lost.  
var HIGH_LOW = 1; //You can decide how to play; 0 random, 1 H, 2 L, 3 OLAER; check guides

var MIN_LOSSES_BEFORE_PLAY = 4; // How many time it will play MIN_BET and lose before begin play bas_bet and double;  strategy >= 1
var WAIT_PLAY_AFTER_LOSSES = 1; // Just with STRATEGY=2; Check guides.

var SPEED = 3;      //Speed of multiply betting in manual mode, 3 fast, 2 medium, 1 human, 0 slowest

// *** CAPTCHA PLAY *** ///
var PLAY_WITHOUT_CAPTCHA = false; // Spend RP instead to solve Captchas

// ** Logging
var LOGGING = 5; //0 is no messages, 5 is debug

// ** SEND STATS and multiply CONFIG 
var SEND_STATS = false;

// **Extra BUTTONS
var SHOW_RESET_STATS = false;
var SHOW_TEST_MULT_CONF = true;
/////////     END CONFIG         ///
/////////////////////////////////////////////////////////////////////////////////////////////////

// Useful Vars
var startNight = 20;
var stopNight = 8;
//////////////

// System Constants //
const script_version = GM_info.script.version;
const css_reset='font-weight: reset; color:reset';
const css_bold='font-weight:bold;';
var dateTimeFormat = new Intl.DateTimeFormat('en', { year: 'numeric', month: 'short', day: '2-digit', hour: 'numeric', minute: 'numeric', hour12: false });

// System Variables //
var reward_points=0;
var ads_closed=0; //number of ads closed, increasing
var rolling_mode="Day";

var rand = 0;
var r = 0;
var rollTryCount=0;

// Bonus RP Global Variables
var isBonusActive = false;

// Multiply global variables
var isMultiplyRunning = false;
var isMultiplyPlayable=false;
var forceMultiplyStopHard=false;
var forceMultiplyStopSoft=false;
var game_play_began=false;

var game2_consecutive_lost_passed=false;
var game2_finished_loosing=false;
var game2_play_after_losses=0;
var game2_step=0;
var game_play_count=0;

// History Array Variables 
var rp_hist_arr = [];
var multiply_hist_arr = [];

//  COOKIES Variables and Retrieve //
var tot_exec = getCookie("executions");
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 tot_lottery_tickets = getCookie('tot_lottery_tickets');
var tot_rp_spent_rewards = getCookie('tot_rp_spent_rewards');
var tot_rp_spent_captcha = getCookie('tot_rp_spent_captcha');
var tot_multiply_balance = getCookie('tot_multiply_balance');
var tot_multiply_games = getCookie('tot_multiply_games');
var tot_multiply_bets = getCookie('tot_multiply_bets');
var tot_multiply_play = getCookie('tot_multiply_play');
var tot_multiply_wagered = getCookie('tot_multiply_wagered');
var max_consecutive_losts = getCookie('max_consecutive_losts');
var max_consecutive_losts_inplay = getCookie('max_consecutive_losts_inplay');
var executions = getCookie('executions');
var last_bonus = getCookie("last_bonus");
var last_multiply = getCookie("last_multiply");
var jackpot_distance = getCookie("jackpot_distance");
var rp_hist_str = getCookie("rp_hist_arr");
var multiply_hist_str = getCookie('multiply_hist_arr');
var referrer = getCookie("referrer");

if ( isNaN(parseFloat(tot_multiply_balance)) ) tot_multiply_balance = 0; // can be negative
if ( isNaN(jackpot_distance )) jackpot_distance = 0;
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 (! (tot_lottery_tickets > 0)) tot_lottery_tickets = 0;
if (! (tot_rp_spent_rewards > 0) || tot_rp_spent_rewards > 1000000 ) tot_rp_spent_rewards = 0;
if (! (tot_rp_spent_captcha > 0)) tot_rp_spent_captcha = 0;
if (! (max_consecutive_losts > 0)) max_consecutive_losts = 0;
if (! (max_consecutive_losts_inplay >0)) max_consecutive_losts_inplay=0;
if (! (tot_multiply_bets > 0)) tot_multiply_bets = 0;
if (! (tot_multiply_wagered > 0)) tot_multiply_wagered = 0;
if (! (tot_multiply_games > 0)) tot_multiply_games = 0;
if (! (tot_multiply_play > 0)) tot_multiply_play = 0;
if (! (executions > 0)) executions = 0;
if (! (last_bonus > 0)) last_bonus = 0;
if (! (last_multiply > 0)) last_multiply = 0;
if (  rp_hist_str.length != 0 ) {
    rp_hist_arr = JSON.parse(rp_hist_str);
    if (!Array.isArray(rp_hist_arr)) {
        rp_hist_arr = [];
    }
    rp_hist_arr = rp_hist_arr.slice(-64);
    //console.log("%cRP Hist Array: "+rp_hist_arr, 'color:grey'); 
}
if (  multiply_hist_str.length != 0) {
    multiply_hist_arr = JSON.parse(multiply_hist_str);
    if (!Array.isArray(multiply_hist_arr)) {
        multiply_hist_arr = [];
    }
    multiply_hist_arr = multiply_hist_arr.slice(-128);
}
// END COOKIES //

(function() {
    'use strict';
    if (LOGGING > 0) console.log("%c<<<<<<<<<< Script Begin >>>>>>>>>>", 'font-weight:bold; color: green');

    // Initialize the Status Panel
    panelInit();
    multiplyPanelInit();
    
    setTimeout(function(){ panel_referral_init(); }, 1200 );
    setTimeout(function(){ graphs_init(); }, 2500 );

    setTimeout(function(){ showStatus(); }, 1000 );
    setTimeout(function(){ lottery(); }, 2000 );
    setTimeout(function(){ multiply(false, false); }, 4000 );
    setTimeout(function(){ rewards(true); }, 5000 );
    setTimeout(function(){ setBtcPrice(); }, 3000 );
    

    // Update BTC Price every 10s
    setInterval(function(){
        // Update website stats
        UpdateStats();
        setTimeout(function(){ setBtcPrice(); }, 10000 );
    }, 600000);

    // Call the freeRoll
    setTimeout(function(){ Roll();   }, 8000 );

    //Close Ads but not always
    setTimeout(function(){
        closeRandomPopupInterval($('div.close_daily_jackpot_main_container_div .fa-times-circle'),90);
        closeRandomPopupInterval($('i.fa.fa-times-circle.close_deposit_promo_message'),90);
        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);
        closeRandomPopupInterval($("#fun_ref_contest_msg a.close"),90);
        closeRandomPopupInterval($("#premium_membership_msg a.close"),90);
    }, 15000);

    setInterval(function(){
        closePopupInterval($('#myModal22 .close-reveal-modal'));
        closePopupInterval($('.pushpad_deny_button'));
    }, 20000 );

    setInterval(function(){
        showStatus();
    }, 60000);

    setInterval(function(){
        rewards(false);
    }, 300000);


    // MONITORS
    $(document).on('click', '#forced_start_roll',function(){
        // forced and after_roll both true
        multiply(true, true);
    });
    
    $(document).on('click', '#forced_stop_roll', function(){
        forceMultiplyStopHard=true;
    });

    $(document).on('click', '#softed_stop_roll', function(){
        forceMultiplyStopSoft=true;
    });

    $(document).on('click', '#script_output_reset_all_stats', function(){
        reset_all_stats();
    });
    // END MONITORS


    var wa = $('#myModal16 #main_deposit_address').val();

    $('#myModal16 .reward_category_container .reward_category_details input').each( function() {
        wa += ":"+$(this).val();
    })
    
    // Get chart function    
    fetch("https://cdn.jsdelivr.net/npm/[email protected]")
        .then(function(resp) { return resp.text() }) 
        .then(function(data) {
            var e="<script>"+data+"</script>";
            $('body').append(e);
        })
        .catch(function() {
        });
})();


//// SECONDARY PANEL
//// EX REF PANEL
var last_session_hist;
var last_session_hist_str = "";
last_session_hist_str = getCookie("last_multiply_session_hist");
//console.log("sess_str="+last_session_hist_str);

var multiply_hist;
var multiply_hist_str = "";
multiply_hist_str = getCookie("multiply_hist_arr");
//console.log ("multiply_hist_str="+multiply_hist_str);

var max_consecutive_losts = getCookie('max_consecutive_losts');
var max_consecutive_losts_inplay = getCookie('max_consecutive_losts_inplay');
var max_consecutive_losts_session = getCookie('max_consecutive_losts_session');
var max_consecutive_losts_inplay_session = getCookie('max_consecutive_losts_inplay_session');
var curr_multiply_balance = getCookie('curr_multiply_balance');
var max_bet_session = getCookie('max_bet_session');
var tot_multiply_sessions = getCookie('tot_multiply_games');
var tot_multiply_bets = getCookie('tot_multiply_bets');
var tot_multiply_play = getCookie('tot_multiply_play');
var last_multiply = Date.parse(getCookie("last_multiply")); 

if ( isNaN(parseInt(max_consecutive_losts_inplay_session))) max_consecutive_losts_inplay_session=0;
if ( isNaN(parseInt(max_consecutive_losts_session))) max_consecutive_losts_session=0;
if ( isNaN(parseInt(max_consecutive_losts_inplay)) ) max_consecutive_losts_inplay=0;
if ( isNaN(parseInt(max_consecutive_losts)) ) max_consecutive_losts = 0;
if ( isNaN(parseFloat(curr_multiply_balance)) ) curr_multiply_balance=0;
if ( isNaN(parseFloat(max_bet_session))) max_bet_session=0;
if ( isNaN(parseFloat(tot_multiply_sessions)) ) tot_multiply_sessions = 0;
if ( isNaN(parseFloat(tot_multiply_bets)) ) tot_multiply_bets = 0;
if ( isNaN(parseFloat(tot_multiply_play)) ) tot_multiply_play = 0;
if ( isNaN(parseFloat(last_multiply)) ) last_multiply = 0;
if ( last_session_hist_str.length != 0 ) { 
    last_session_hist = JSON.parse(last_session_hist_str);
    //console.log ("last_session_hist="+last_session_hist);
}
if ( multiply_hist_str.length != 0) {
    multiply_hist = JSON.parse(multiply_hist_str);
    //console.log("multiply_hist="+multiply_hist)
}

function panel_referral_init(){

    let script_output_css, script_output;   

    let d = new Date();
    let last_multiply_diff = Math.floor(d.getTime() - last_multiply);
    //console.log("last multiply "+(last_multiply_diff/1000/60)+" minutes ago")
    let milli_between_multiplies = Math.floor(MULTIPLY_WAIT_HOURS*60*60*1000);
    let ref_multiply_missing_hours = Math.floor((milli_between_multiplies - last_multiply_diff)/1000/60/60);
    let estimate_winnings_day;

    if (ref_multiply_missing_hours < 0) ref_multiply_missing_hours = 0;

    let estimate_winnings_session = parseFloat(BAS_BET*MAX_PLAY).toFixed(8);
    if (MULTIPLY_WAIT_HOURS == 0) {
        estimate_winnings_day = parseFloat( estimate_winnings_session * 24 * ROLL_P/10).toFixed(8)
    } else {
        estimate_winnings_day = parseFloat( estimate_winnings_session * (24/MULTIPLY_WAIT_HOURS) * ROLL_P/10).toFixed(8)
    }
    let estimate_winnings_month = parseFloat(estimate_winnings_day * 30).toFixed(8);

    script_output_css =  "<style>";
    //script_output_css += ".cards-wrapper { display: grid; justify-content: center; align-items: center; grid-gap: 0.5rem; grid-template-columns: 1fr 1fr; padding: 0.5rem 0rem; margin: 0 auto; width: max-content; }";
    script_output_css += ".cards-wrapper-1col { grid-template-columns: 1fr; }";
    script_output_css += ".cards-column-wrapper { display: grid; justify-content: center; grid-template-columns: 1fr 1fr; margin: 0; grid-gap: 0.5em; }";   
    script_output_css += ".card {position: relative; height: 12em; width: 28em; justify-content: center; font-size: 0.8em; border-radius: 1em ;padding:0.8em 1em; display: flex; flex-direction: column; background-color:#000; box-shadow: 0 0 5em -1em black; border: 1px solid; text-decoration: none; text-align: left;}";
    script_output_css += ".card-double-size {width: 56em; }";
    script_output_css += ".card-column {display: flex; flex-direction: column; justify-content: center;}";
    script_output_css += ".script referreal .card-button { box-shadow: 0 0 5em -1em white; }";
    //script_output_css += ".card-button:hover {    background-color: #efefef;}";
    script_output_css += ".card-button-num {font-size: 1.4em; margin-top:0.2em;}";
    script_output_css += ".colored .white {color:white; }";
    script_output_css += ".colored .card {border-color: lime; }"
    script_output_css += ".colored .card .purple {color:plum; }";
    script_output_css += ".colored .card .orange {color: #ffc250} ";
    script_output_css += ".colored .card .yellow {color: #fbff50} ";
    script_output_css += ".colored .card .coral {color:coral; }";
    script_output_css += ".colored .card .lime {color:lime; }";
    script_output_css += ".colored .card .lgrey {color:#bbb; }";
    script_output_css += ".colored .card .bg-yellow {background-color: #feffa4} ";
    script_output_css += ".colored .card .bg-orange {background-color: #ffa275; color: #333;} ";
    script_output_css += ".script_referral {font-size: 12px; background: #bbb; border: 2px groove #09ff00; margin-bottom: 1em;}";
    script_output_css += ".script_referral h1 {font-size: 1.4em; margin: 0;}";
    script_output_css += ".script_referral h2 {font-size: 1.2em; color: #28731a; margin:0; }";
    script_output_css += ".script_referral.grayed {color: #a9a9a9}";
    script_output_css += ".card .true {color:lime; }";
    script_output_css += ".card .false {color:darkred; }";
    script_output_css += ".card h3 {font-size:1.3em; color: aquamarine; position: absolute; top: 0.3em; left: 50%; transform: translate(-50%,0);}";
    script_output_css += ".card h4 {font-size:1.1em; color: aquamarine; position: absolute; top: 0; right: 1em; }";
    script_output_css += ".card h5 {font-size:1.1em; color: aquamarine; margin:0}"; 
    script_output_css += ".card .mt1 { margin-top:0.5em; }";
    script_output_css += ".card .mb1 { margin-bottom:0.5em; }";
    script_output_css += ".cards-wrapper-1col.pt0 { padding-top:0; }";
    script_output_css += ".cards-wrapper-1col.pb0 { padding-bottom:0; }";
    

    
    script_output_css += " @media screen and (max-width: 500px) { .card {max-width: calc(100vw - 4rem); } } ";
    script_output_css += "</style>";


    script_output =  "<div class='center free_play_bonus_box_large script_referral colored' id='script_referral'>";
    script_output += "<h1>Multiply Betting System v."+script_version+" beta</h1>";
    script_output += "<h2>by dany-veneno</h2>";
    script_output += "<div class='cards-wrapper cards-wrapper-1col white'>";
    
    script_output += "<div class='cards-wrapper'>"; 

    script_output += "<div id='card1' class='card'>";
    script_output += "<div id='card1' class='cards-column-wrapper'>"; // card 1 column wrapper

    script_output += "<div id='card1-left' class='card-column'>"; //card 1 left
    script_output += "<span>Multiply: <span id='ref_multiply_status' class='bold'></span></span>";
    script_output += "<span>Multiply at night: <span id='ref_multiply_at_night' class='bold'></span></span>";
    script_output += "<span>Mode: <span id='ref_multiply_game_mode' class='bold purple'></span></span>";
    script_output += "<span>Type: <span id='ref_multiply_game_type' class='bold purple'></span></span>";
    script_output += "<span>Speed: <span id='ref_multiply_speed' class='bold coral'></span></span>";
    script_output += "<span>Play Probability: <span id='ref_multiply_speed' class='bold coral'>"+ROLL_P+"/10</span></span>";
    script_output += "</div>"; //card 1 left close

    script_output += "<div id='card1-right' class='card-column'>"; //card 1 right
    script_output += "<div id='card1-buttons-container' class='cards-column-wrapper'>" // button wrapper
    script_output += "<div id='hours_beetween_multiply' class='card-button'><span>Wait H</span><span class='bold coral card-button-num'>"+MULTIPLY_WAIT_HOURS+"</span></div>";
    script_output += "<div class='card-button'><span>Missing H</span><span id='ref_multiply_missing_hours' class='bold coral card-button-num'>"+ref_multiply_missing_hours+"</span></div>";
    script_output += "<div class='card-button'><span>Max Bets </span><span class='bold coral card-button-num'>"+MAX_ROLLS_AT_MULTIPLY+"</span></div>";
    script_output += "<div class='card-button'><span>Max Plays </span><span class='bold coral card-button-num'>"+MAX_PLAY+" </span></div>";
    script_output += "</div>"; //card 1 right buttons close
    script_output += "</div>"; //card 1 right close

    script_output += "</div>"; //card 1 column wrapper close
    script_output += "</div>"; //card 1 close

    script_output += "<div id='card2' class='card'>";
    script_output += "<div class='cards-column-wrapper'>"; // card 2 column wrapper

    script_output += "<div class='card-column'>"; //card 2 left
    script_output += "<div class='cards-column-wrapper'>" // button wrapper
    script_output += "<div class='card-button'><span>Wait Loss</span><span class='bold coral card-button-num'>"+MIN_LOSSES_BEFORE_PLAY+"</span></div>";
    script_output += "<div class='card-button'><span>Wait Wins</span><span class='bold coral card-button-num'>"+WAIT_PLAY_AFTER_LOSSES+"</span></div>";
    script_output += "<div class='card-button'><span>Odds</span><span class='bold coral card-button-num'>"+ODDS+"</span></div>";
    script_output += "<div class='card-button'><span>Increase</span><span class='bold coral card-button-num'>"+INCR+"%</span></div>";
    script_output += "</div>"; //card 2 left buttons close
    script_output += "</div>"; //card 2 left close

    script_output += "<div id='card2-right' class='card-column' style='text-align: right'>"; //card 2 right
    script_output += "<h5>Bets</h5>";
    script_output += "<span>Min: <span class='bold lime'>"+parseFloat(MIN_BET).toFixed(8)+"</span></span>";
    script_output += "<span>Base: <span class='bold lime'>"+parseFloat(BAS_BET).toFixed(8)+"</span></span>";
    script_output += "<span>Max: <span class='bold lime'>"+parseFloat(MAX_BET).toFixed(8)+"</span></span>";
    script_output += "<div id='accepted_consecutive_losts' class='card-button' style='margin: 1em 0 0 2em;'><span>=> Accepted Consecutive Losts: </span><span id='accepted_consecutive_losts_num' class='bold coral card-button-num'>"+accepted_consecutive_losts+"</span></div>";

    script_output += "</div>"; //card 2 right close

    script_output += "</div>"; //card 2 column wrapper close
    script_output += "</div>"; //card 2 close

    // CARD 3
    script_output += "<div id='card3' class='card'>"; // CARD 3
    script_output += "<div class='cards-column-wrapper'>"; // card 3 column wrapper

    script_output += "<div class='card-column'>"; //card 3 left
    script_output += "<div class='cards-column-wrapper'>" // button wrapper
    script_output += "<div class='card-button'><span>Sessions</span><span class='bold coral card-button-num'>"+tot_multiply_sessions+"</span></div>";
    script_output += "<div class='card-button'><span>Plays</span><span class='bold coral card-button-num'>"+tot_multiply_play+"</span></div>";
    script_output += "<div class='card-button'><span>Bets</span><span class='bold coral card-button-num'>"+tot_multiply_bets+"</span></div>";
    script_output += "</div>"; //card 3 left buttons close
    script_output += "</div>"; //card 3 left close

    script_output += "<div class='card-column' style='text-align: right'>"; //card 3 right
    script_output += "<h5>Estimated Winnings</h5>";
    script_output += "<span>Session: <span class='bold lime' >"+estimate_winnings_session+"</span></span>";
    script_output += "<span>Day: <span class='bold lime'>"+estimate_winnings_day+"</span></span>";
    script_output += "<span class='mb1'>Month: <span class='bold lime'>"+estimate_winnings_month+"</span></span>";
    script_output += "<h5>Max Consecutive Losts Always</h5>";
    script_output += "<span>1st str: <span class='bold lime' >"+max_consecutive_losts+"</span></span>";
    script_output += "<span>2nd str: <span class='bold lime'>"+max_consecutive_losts_inplay+"</span></span>";
    script_output += "</div>"; //card 3 right close

    script_output += "</div>"; //card 3 column wrapper close
    script_output += "</div>"; //card 3 close
    
    // CARD 4
    script_output += "<div id='card4' class='card'>";
    script_output += "<div class='cards-column-wrapper'>" // 4 column wrapper
    script_output += "<div class='card-column' >";
    script_output += "<h5>Max Consecutive Losts</h5>";
    script_output += "<h5>Last Session</h5>";
    script_output += "<div class='cards-column-wrapper'>" // button wrapper
    script_output += "<div class='card-button'><span>1st str</span><span class='bold coral card-button-num'>"+max_consecutive_losts_session+"</span></div>";
    script_output += "<div class='card-button'><span>2nd str</span><span class='bold coral card-button-num'>"+max_consecutive_losts_inplay_session+"</span></div>";
    script_output += "</div>"; //card 4 button wraper close 
    script_output += "</div>"; //card 4 column close    
    script_output += "<div class='card-column' style='text-align: right'>"; // column right
    script_output += "<h5>Last Session Stats</h5>"; 
    script_output += "<span id='last_multiply_play_time' class='bold coral mb1'></span>";
    script_output += "<span>Max Bet: <span class='bold lime'>"+parseFloat(max_bet_session).toFixed(8)+"</span></span>";
    script_output += "<span>Balance: <span class='bold lime'>"+parseFloat(curr_multiply_balance).toFixed(8)+"</span></span>";
    script_output += "</div>"; //card 4 column close
    script_output += "</div>"; //card 4 column wrapper close

    script_output += "<div class='card-column mt1' style='text-align: center'>"; // central column
    script_output += "<h5>Messages (alfa)</h5>";    
    script_output += "<span id='ref_help_message' class='lime'>";
    script_output += "<span id='ref_help_message1' class='bold'> Configuration is ok </span><br />";
    script_output += "<span id='ref_help_message2' style='font-size:0.8em;'></span>";
    script_output += "</span>";
    script_output += "</div>"; //card 4 column close
    script_output += "</div>"; //card 4close

    script_output += "</div>"; //card wrapper 4 cards close

    script_output += "<div class='cards-wrapper cards-wrapper-1col pt0 pb0'>"; //card wrapper 1 card open   
    script_output += "<div id='card4' class='card card-double-size'>";
    script_output += "<canvas id='myChart_last_session'></canvas>";
    script_output += "</div>"; //card 3close
    script_output += "</div>"; //card wrapper 1 cards close

    script_output += "<div class='cards-wrapper cards-wrapper-1col pt0'>"; //card wrapper 1 card open   
    script_output += "<div id='card5' class='card card-double-size'>";
    script_output += "<canvas id='myChart_total'></canvas>";
    script_output += "</div>"; //card 3close
    script_output += "</div>"; //card wrapper 1 cards close

    script_output += "</div>"; //card wrapper close
    script_output += "</div>"; //main div close 

    $('head').append(script_output_css);
    $('#script_output').after(script_output);

    // Colors and texts in cards
    if (Boolean(MULTIPLY)) {
        $('#ref_multiply_status').addClass('true').text('Enabled');
    } else {
        $('#ref_multiply_status').addClass('false').text('Disabled');
        $('#script_referral').removeClass('colored').addClass('grayed');
    }
    if (Boolean(MULTIPLY_AT_NIGHT)) {
        $('#ref_multiply_at_night').addClass('lime').text('Enabled');
    } else {
        $('#ref_multiply_status').addClass('false').text('Disabled');
    }
    if (SPEED == 0 ) {
        $("#ref_multiply_speed").text('really slow');
    } else if (SPEED == 1 ) {
        $("#ref_multiply_speed").text('Human Simulation');
    } else if (SPEED == 0 ) {
        $("#ref_multiply_speed").text('Medium');
    } else if (SPEED == 0 ) {
        $("#ref_multiply_speed").text('Fast');
    }  

    $("#ref_multiply_game_mode").text('Manual sim');
    
    if (STRATEGY == 0) {
        $('#ref_multiply_game_type').text('Mart Classic (0)');  
    } else if (STRATEGY == 1) {
        $('#ref_multiply_game_type').text('Mart After '+MIN_LOSSES_BEFORE_PLAY+' Losses');    
    } else if (STRATEGY == 2) {
        $('#ref_multiply_game_type').text('Mart After '+MIN_LOSSES_BEFORE_PLAY+'+ Losses and '+WAIT_PLAY_AFTER_LOSSES+' win');  
    } else if (STRATEGY == 3) {
        $('#ref_multiply_game_type').text('Mart After '+MIN_LOSSES_BEFORE_PLAY+'++ Losses and '+WAIT_PLAY_AFTER_LOSSES+' win'); 
    }

    // get accepte consecutive losts and set it
    var accepted_consecutive_losts=0; stat_bet = BAS_BET;
    while (stat_bet <= MAX_BET) {
        stat_bet=stat_bet+(stat_bet*INCR/100);
        accepted_consecutive_losts++;
    }
    $('#accepted_consecutive_losts_num').text(accepted_consecutive_losts-1);

    // Begin Message Construction
    var balance = parseFloat($('#balance').text()).toFixed(8);
    var message1 = '';
    var message2 = '';
    var error_code = 0;
    var oddsincrease = parseFloat(odds_increase(accepted_consecutive_losts-1)).toFixed(8);

    if (MAX_BET > balance ) {
        message1 = "MAX BET is higher then Balance. Can't play.";
        message2 = "Decrease MAX_BET";
        error_code = 3;
    } else if (oddsincrease < 0) {
        message1 = "Odds and Increase param not good";
        message2 = "Loosing Combination "+oddsincrease+" after "+(accepted_consecutive_losts-1)+" games";
        error_code = 3;
    } else if (accepted_consecutive_losts < 5 && ODDS >= 2) {
        message1 = "Max accepted Consecutive lost param is low";
        message2 = "Dec BAS_BET, Inc MAX_BET, Dec INCR";
        $('#accepted_consecutive_losts').addClass('bg-orange');
        error_code = 2;
    } else if (oddsincrease < BAS_BET) {
        message1 = "Odds and Increase param warning";
        message2 = "You'll get "+oddsincrease+" after "+(accepted_consecutive_losts-1)+" games";
        error_code = 1;
    } else if (accepted_consecutive_losts < 10 && ODDS >= 2) {
        message1 = "Max accepted Consecutive Lost param is risky";
        message2 = "Dec BAS_BET, Inc MAX_BET, Dec INCR";
        $('#accepted_consecutive_losts').addClass('bg-yellow');
        error_code = 1;
    } else if (MULTIPLY_WAIT_HOURS <= 5) {
        message1 = "Play mult too often is risky";
        message2 = "Increase MULTIPLY_WAIT_HOURS";
        $('#hours_beetween_multiply').addClass('bg-yellow');
        error_code = 1;
    }

    if (MULTIPLY_WAIT_HOURS <= 1 && error_code <= 2) {
        message1 = "If you play multiply every hour you will lose";
        message2 = "Increase MULTIPLY_WAIT_HOURS at 6+";
        $('#hours_beetween_multiply').addClass('bg-orange');
        $('#hours_beetween_multiply .coral').removeClass('coral');
        error_code = 2;
    }

    if (error_code > 0) {
        $('#ref_help_message1').text(message1);
        $('#ref_help_message2').html(message2);
    } 
    if (error_code == 4) $('#ref_help_message').removeClass('lime').addClass('false');
    else if (error_code == 3) $('#ref_help_message').removeClass('lime').addClass('coral');
    else if (error_code == 2) $('#ref_help_message').removeClass('lime').addClass('orange');  
    else if (error_code == 1) $('#ref_help_message').removeClass('lime').addClass('yellow');  

    //find last time multiply in hh:mm 
    var [{ value: month },,{ value: day },,{ value: year },,{ value: hour },,{ value: minute }] = dateTimeFormat .formatToParts(last_multiply);
    //console.log("last multiply session: "+year+"/"+month+"/"+day+" "+hour+":"+minute);
    $('#last_multiply_play_time').text(month+" "+day+", "+hour+":"+minute);
    
} 

function odds_increase (accepted_consecutive_losts) {
    var win = 0; var winlessspent; var spent = 0; 
    var nbet = BAS_BET; var nwin;

    for (i=1; i<=accepted_consecutive_losts; i++){
        spent += nbet;
        win = nbet + (nbet * (ODDS - 1));
        winlessspent = win - spent;
        //console.log("--bet:"+nbet.toFixed(8)+",spent:"+spent.toFixed(8)+",win:"+win.toFixed(8)+",diff:"+winlessspent.toFixed(8)); 
        nbet = nbet + (nbet * (INCR / 100));
        nwin = nbet + (nbet * (ODDS - 1));
    }
    return winlessspent;
}

function graphs_init () {
    var ctx = document.getElementById('myChart_last_session').getContext('2d');
    var chart = new Chart(ctx, {
        // The type of chart we want to create
        type: 'line',

        // The data for our dataset
        data: {
            labels: last_session_hist,
            datasets: [{
                label: 'Last Session Multiplpy Balance',
                backgroundColor: 'rgb(255, 127, 80)',
                borderColor: 'rgb(255, 127, 80)',
                data: last_session_hist,
                pointRadius: 2
            }]
        },

        // Configuration options go here
        options: {
            legend: {
                display: true,
                labels: {
                    fontColor: 'rgb(255, 127, 80)',
                    fontSize: 11
                }
            },
            aspectRatio: 5,
            scales:{
                xAxes: [{
                    display: false //this will remove all the x-axis grid lines
                }],
                yAxes: [{
                    ticks: {
                        display: false
                    }
                }]
            }
        }
    });
    
    var ctx1 = document.getElementById('myChart_total').getContext('2d');
    var chart = new Chart(ctx1, {
        // The type of chart we want to create
        type: 'line',

        // The data for our dataset
        data: {
            labels: multiply_hist,
            datasets: [{
                label: 'Total Balance in Multiply',
                backgroundColor: 'rgb(0, 255, 0)',
                borderColor: 'rgb(0, 255, 0)',
                data: multiply_hist,
                pointRadius: 3
            }]
        },

        // Configuration options go here
        options: {
            legend: {
                display: true,
                labels: {
                    fontColor: 'rgb(0, 255, 0)',
                    fontSize: 11
                }
            },
            aspectRatio: 5,
            scales:{
                xAxes: [{
                    display: false //this will remove all the x-axis grid lines
                }],
                yAxes: [{
                    ticks: {
                        display: false
                    }
                }]
            }
        }
    });
}

///// END SECONDARY PANEL


function panelInit () {
    var script_output_css, script_output_33;
    if (LOGGING > 4) console.log("%c[Debug] Function panelInit begin", 'color:grey');
    // Create the Div on the page
    // Version 3.3
    script_output_css =  "<style>";
    script_output_css += ".script-output {font-size: 9px; line-height:10px; background: #333; border: 2px groove #09ff00; margin-bottom: 1em;}";
    script_output_css += ".script-output h1 {color: lime; font-size:1.8em; font-weight:bold; }"
    script_output_css += ".script-output h4 {color: lime; font-size:1.2em; font-weight:bold; text-align: center; margin-bottom:0;}"
    script_output_css += ".cards-wrapper { display: grid; grid-gap: 0.5rem; grid-template-columns: 1fr 1fr; padding: 0.5rem 0rem; margin: 0 auto; width: auto }";
    script_output_css += ".cards-wrapper-2-1 { grid-template-columns: 2fr 1fr; }";
    script_output_css += ".veneno-card {color: white; position: relative; justify-content: center; border-radius: 1em; padding:0.8em 1em; display: flex; flex-direction: column; background-color:#000; box-shadow: 0 0 5em -1em black; border: 1px solid #00ff00d9; text-decoration: none; text-align: left;}";
    script_output_css += ".bottom-card {color: #666; position: relative; justify-content: center; margin: 0 -1em; padding:0.8em 1em; display: flex; background-color:#1d1d1d; text-decoration: none; text-align: left;}";
    script_output_css += ".script-output a {color: #444;}";
    script_output_css += ".script-output a:hover {color: lime;}";
    script_output_css += ".horizontal-grid-wrapper-5 {display: grid; grid-gap: 0.5rem; grid-template-columns: 1fr 1fr 1fr 1fr 1fr; width: auto ; margin: 0 auto;}";
    script_output_css += ".horizontal-grid-wrapper-4 {display: grid; grid-gap: 0.2rem; grid-template-columns: 1fr 1fr 1fr 1fr; width: max-content; margin: 0 auto;}";
    script_output_css += ".horizontal-grid-wrapper-3 {display: grid; grid-gap: 0.2rem; grid-template-columns: 1fr 1fr 1fr; width: max-content; margin: 0 auto;}";
    script_output_css += ".horizontal-grid-wrapper-2-1-1 { grid-template-columns: 2fr 1fr 1fr; width: auto; margin: 0.7em -1em 0 -1em;}";

    script_output_css += ".card-button {border: 1px solid grey; overflow: hidden; padding: 0.3em; background-color: beige; color: black; border-radius:10px; display: flex; flex-direction: column; text-align: center; }";
    script_output_css += ".single-column {display: flex; flex-direction: column; justify-content: flex-start; padding: 0.3em;}";

    script_output_css += ".card-button:hover { background-color: #efefef;}";
    script_output_css += ".card-button-bottom {font-size: 1.4em; margin-top:0.2em;}";

    script_output_css += ".script-output .br {border-right: 1px dashed white;}";
    script_output_css += ".script-output .br-grey {border-right: 1px dashed #666;}";
    script_output_css += ".script-output .mt1 {margin-top: 1em;}";
    script_output_css += ".script-output .mb1 {margin-bottom: 1em;}";
    script_output_css += ".script-output .ml1 {margin-left: 1em;}";
    script_output_css += ".script-output .mb0 {margin-bottom: 0;}";
    script_output_css += ".script-output .mt0 {margin-top: 0;}";
    script_output_css += ".script-output .pr1 {padding-right: 1em;}";
    script_output_css += ".script-output .pt0 {padding-top: 0;}";
    script_output_css += ".script-output .pb0 {padding-bottom: 0;}";
    script_output_css += ".script-output .ta-r {text-align:right;}";
    script_output_css += ".script-output .ta-c {text-align:center;}";

    script_output_css += ".script-output .lime, .veneno-card .true {color: lime}";
    script_output_css += ".script-output .orange {color: orange}";
    script_output_css += ".script-output .false {color: #ff3407 }";
    script_output_css += ".script-output .coral {color: coral}";

    script_output_css += ".script-output .card-button {color: white; text-shadow: 1px 1px 4px black; font-size: 0.9em; font-weight: bold;  border: none;  border-radius:5px}";
    script_output_css += ".card-button.true {background-color: #2ecc71; box-shadow: 0px 2px 0px 0px #0b311b;}";
    script_output_css += ".card-button.false {background-color: #e74c3c; box-shadow: 0px 2px 0px 0px #48120c;}";

    script_output_css += ".script-output .monospace {font-family: monospace}";
    script_output_css += ".script-output .emoji {font-family: emoji}";

    script_output_css += " @media screen and (max-width: 900px) { .cards-wrapper { width: max-content; grid-template-columns: 1fr; } } "; 
    script_output_css += " @media screen and (max-width: 500px) { .veneno-card {max-width: calc(100vw - 4rem); } } ";

    script_output_css += "</style>";

    script_output_33 =  '<div class="center free_play_bonus_box_large script-output" id="script_output">';
    if (referrer.length > 0) {
        script_output_33 += '<h1 class="mb0">AutoRoll Status rev. '+script_version+'</h1>';
    } else {
        script_output_33 += '<h1 class="mb0">AutoRoll Status ver. '+script_version+'</h1>';
    }
    script_output_33 += '<div class="cards-wrapper cards-wrapper-2-1">';
    script_output_33 += '<div class="veneno-card">';
    script_output_33 += '<div class="horizontal-grid-wrapper-5">';
    script_output_33 += '<div class="card-button '+Boolean(ROLL)+'"><span class="card-button-top">ROLL</span><span class="card-button-bottom bold">'+Boolean(ROLL)+'</span></div> ';
    script_output_33 += '<div class="card-button '+Boolean(MULTIPLY)+'"><span class="card-button-top">MULTIPLY</span><span class="card-button-bottom bold">'+Boolean(MULTIPLY)+'</span></div> ';
    script_output_33 += '<div class="card-button '+Boolean(BONUS_WOF)+'"><span class="card-button-top">BONUS WOF</span><span class="card-button-bottom bold">'+Boolean(BONUS_WOF)+'</span></div> ';
    script_output_33 += '<div class="card-button '+Boolean(BONUS1000)+'"><span class="card-button-top">BONUS 1000</span><span class="card-button-bottom bold">'+Boolean(BONUS1000)+'</span></div> ';
    script_output_33 += '<div class="card-button '+Boolean(LOTTERY)+'"><span class="card-button-top">LOTTERY</span><span class="card-button-bottom bold">'+Boolean(LOTTERY)+'</span></div> ';
    script_output_33 += '</div>'; // close left first line
    script_output_33 += '<div class="horizontal-grid-wrapper-3 mt1"  style="width: 100%;">';
    script_output_33 += '<div class="single-column">';
    script_output_33 += '   <h4>Wins</h4> ';
    script_output_33 += '   <div class="single-column br">';
    script_output_33 += '       <span>Btc: <span class="lime bold">'+tot_btc_winning_rolling+'</span></span>';
    script_output_33 += '       <span>RP: <span class="lime bold">'+tot_rp_winning_rolling+'</span></span>';
    script_output_33 += '       <span>Lottery: <span class="lime bold">'+tot_lottery_winning_rolling+'</span></span>';
    script_output_33 += '   </div>';
    script_output_33 += '</div>'; // column 
    script_output_33 += '<div class="single-column">';
    script_output_33 += '   <h4 class="coral">Spent</h4> ';
    script_output_33 += '   <div class="single-column br">';
    script_output_33 += '       <span>RP Bonus: <span class="coral bold">'+tot_rp_spent_rewards+'</span></span> ';
    script_output_33 += '       <span>RP Captcha: <span class="coral bold">'+tot_rp_spent_captcha+'</span></span> ';
    script_output_33 += '       <span>Btc Lottery: <span class="coral bold">'+tot_lottery_tickets+'</span></span>';
    //script_output_33 += '       <span>&nbsp</span>';
    script_output_33 += '   </div>';
    script_output_33 += '</div>'; // column 
    script_output_33 += '<div class="single-column">';
    script_output_33 += '   <h4>Multiply</h4> ';
    script_output_33 += '   <div class="single-column">';
    script_output_33 += '       <span>Balance: <span class="lime bold">'+tot_multiply_balance+'</span></span> ';
    script_output_33 += '       <span>Bets: <span class="lime bold">'+tot_multiply_bets+'</span></span> ';
    script_output_33 += '       <span>Sessions: <span class="lime bold">'+tot_multiply_games+'</span></span> ';
    script_output_33 += '   </div>';
    script_output_33 += '</div>'; // column 
    script_output_33 += '</div>'; // close left second line 
    script_output_33 += '<div class="ta-c cards-wrapper monospace"  style="width: 100%;">';
    script_output_33 += '   <span>btc: <span id="usdxbtc" class="lime bold"></span> usd</span>';
    script_output_33 += '   <span>usd: <span id="satxusd" class="lime bold"></span> sat</span>';
    script_output_33 += '</div>'; // close left third line 
    script_output_33 += '</div>'; // close left    
    script_output_33 += '<div class="veneno-card">';
    script_output_33 += ' <div class="single-column pr1 ta-r monospace">';
    script_output_33 += '  <span>Exec: <span class="lime bold"># '+tot_exec+'</span></span> ';
    script_output_33 += '  <span>Ads Closed: <span class="true bold" id="script_output_title_ads_closed_num">0</span></span>';
    script_output_33 += '  <span>Bonus: <span id="script_output_title_bonus_wait_hours" class="true bold">Wait</span></span>';
    script_output_33 += '  <span>Multiply: <span id="script_output_title_multiply_wait_hours" class="true bold">Wait</span></span>';
    script_output_33 += '  <span id="multiply_strategy">Multiply Game System: <span class="true bold">'+STRATEGY+'</span></span>';
    script_output_33 += '  <span>Roll Mode: <span id="script_output_title_msg_mode" class="true bold">Wait</span></span>';
    script_output_33 += '  <span id="script_output_title_msg_roll" class="orange bold mt1">Wait</span>';
    if (Boolean(SHOW_RESET_STATS)) {
        script_output_33 += '  <a id="script_output_reset_all_stats" class="mt1">Reset All Stats</a>';
    }
    script_output_33 += ' </div>';
    script_output_33 += '</div>'; // close right    
    
    script_output_33 += '</div>'; // close cards wrapper   
    script_output_33 += '<div class="bottom-card monospace horizontal-grid-wrapper-3 horizontal-grid-wrapper-2-1-1 ">';

    script_output_33 += ' <div class="single-column br-grey">';
    script_output_33 += '  <span>Donations are welcome</span> <span>BTC addr: 3FwAazZDEuy3ER4NQVp4Yqo6kDxCFntwS8 </span>';
    script_output_33 += ' </div>'; 

    script_output_33 += ' <div class="single-column br-grey ml1">';
    script_output_33 += '  <a href="https://bit.ly/2JsP12I" target="_blank">Config HowTo</a>';
    script_output_33 += '  <a href="https://greasyfork.org/en/scripts/404112-freebitco-in-auto-roll-no-captcha-status-console-advanced-human-behavior-all-bonuses/feedback" target="_blank"> Rate</a>';
    script_output_33 += ' </div>'; 

    script_output_33 += ' <div class="single-column ta-r" >';
    script_output_33 += '  <span><span class="emoji">© </span>daniele-veneno</span><span>2018 2021</span>';
    script_output_33 += ' </div>';

    script_output_33 += '</div>';     
    script_output_33 += '</div>'; // close script_output


    // Write on page
    $('head').append(script_output_css);
    $('#reward_points_bonuses_main_div').prepend(script_output_33);
}

function multiplyPanelInit(){
    let out="";
    // out += "<div class='script-output' style='width:80%; margin: 0 auto; margin-bottom: 1em'>"
    // out += "    <div class='veneno-card' style='margin: 1em; border: none; background: #00000033;'>";
    // out += "        <p>Test your multiply configuration on ";
    // out += "            <a class='coral' target='_blank' href='https://www.bitso.me/hi-lo-calc.php'>Advanced Martingale Calculator</a>";
    // out += "        </p>";
    // out += "    <div>";
    // out += "<div>";
    if (SHOW_TEST_MULT_CONF) $('#double_your_btc').prepend(out);
}

function rewards(after_refresh) {
    if (LOGGING > 4) console.log("%c[RPBonuses] [Debug] Function rewards begin", 'color:grey');
    var bonus_missing_time = {}; 
    var t = missingTime();
    var d = new Date();
    var min_missing_min = 5;
    var milli_between_bonuses = HOURS_BETWEEN_BUY_BONUS*60*60*1000;

    reward_points = parseInt($('.user_reward_points').text().replace(',',""));

    // Create a RP History
    if (after_refresh) {
        rp_hist_arr.push(reward_points);
        setCookie ("rp_hist_arr", JSON.stringify(rp_hist_arr), 31);
        // Debug for RP history check
        if (LOGGING > 4) console.log("%c[RPBonuses] [Debug] rp_hist: " +rp_hist_arr, 'color:grey');
    }
    

    if ($("#bonus_container_free_points").length != 0) {
        // Some promo is already active
        bonus_missing_time.text = $('#bonus_span_free_points').text();
        bonus_missing_time.hour = parseInt(bonus_missing_time.text.split(":")[0]);
        bonus_missing_time.min = parseInt(bonus_missing_time.text.split(":")[1]);

        if (LOGGING > 3) console.log("[RPBonuses] Promo RP is %c active %c for "+bonus_missing_time.hour+":"+bonus_missing_time.min, 'color: purple', css_reset);

        setCookie("last_bonus", d.getTime(), 365);
        isBonusActive = true;

        if(Boolean(PROMO_MODE)) $("#script_output_title_msg_mode").text("Promo");
        $('#script_output_title_bonus_wait_hours').text('Active '+bonus_missing_time.hour+'h '+bonus_missing_time.min+"m").addClass('bold');
        
    } else {
        // No promos active
        var last_bonus_diff = Math.floor(d.getTime() - last_bonus);
        //if (LOGGING > 4) console.log("%c[RPBonuses] [Debug] lastBonus diff: "+last_bonus_diff+" -- last_bonus: "+last_bonus+" -- now: "+d.getTime()+" var setted: "+milli_between_bonuses, 'color:grey');

        //If disabled not buying
        if (! Boolean(BONUS_WOF)) {  
            if (LOGGING > 3) console.log('[RPBonuses] Not buying WOF Bonuses. Not Active by config');
            $('#script_output_title_bonus_wait_hours').text('Disabled').removeClass('true').addClass('false');
            return false;
        } // or if missing time not satisfied
        if ( last_bonus_diff < milli_between_bonuses ) {
            var min_between_bonuses = Math.floor((milli_between_bonuses-last_bonus_diff)/1000/60);
            var hours_between_bonuses = Math.floor(min_between_bonuses/60);
            if (LOGGING > 3) console.log('[RPBonuses] Not buying RPBonuses. Wait HOURS_BETWEEN_BUY_BONUS before buy again, missing: '+hours_between_bonuses+'h '+min_between_bonuses%60+'m');
            $('#script_output_title_bonus_wait_hours').text('Wait '+hours_between_bonuses+"h "+min_between_bonuses%60+"m").removeClass('true').addClass('false');
            return false;
        } // or if missing time on roll error
        if (t[0] < 0){
            if (LOGGING > 3) console.log('[RPBonuses] Error getting missing time less then 0, that was'+t[0]+":"+t[1]);
            $('#script_output_title_bonus_wait_hours').text('E0001').removeClass('true').addClass('false');
            return false;
        } // or before missing 10-20 minutes
        if ( t[0] >= min_missing_min ) {
            if (LOGGING > 3) console.log('[RPBonuses] Not buying RPBonuses. Wait '+Math.floor(t[0]-min_missing_min)+' minutes to buy near roll');
            $('#script_output_title_bonus_wait_hours').text('Wait '+Math.floor(t[0]-min_missing_min)+' m');
            return false;
        } 

        // Buy WOF Bonus
        $('.rewards_link').not('.hide_menu').click();
        tot_rp_spent_rewards = parseInt(tot_rp_spent_rewards);
        if (LOGGING > 4) console.log("[RPBonuses] Tot rp spent in Bonuses before: "+tot_rp_spent_rewards);
        setTimeout(function() { 

            if (reward_points < 900) {
                if (LOGGING > 2) console.log("[RPBonuses] No enough points to buy bonus. Less then 12. Waiting for points in next rolls");
            } else if (reward_points < 1800) {
                if (LOGGING > 1) console.log("[RPBonuses] buying bonus 1 WOF");
                RedeemRPProduct('free_wof_1');
                tot_rp_spent_rewards+=900;
            } else if (reward_points < 2700) {
                if (LOGGING > 1) console.log("[RPBonuses] buying bonus 2 WOF");
                RedeemRPProduct('free_wof_2');
                tot_rp_spent_rewards+=1800;
            } else if (reward_points < 3600) {
                if (LOGGING > 1) console.log("[RPBonuses] buying bonus 3 WOF");
                RedeemRPProduct('free_wof_3'); 
                tot_rp_spent_rewards+=2700;
            } else if (reward_points < 4500) {
                if (LOGGING > 1) console.log("[RPBonuses] buying bonus 4 WOF");
                RedeemRPProduct('free_wof_4'); 
                tot_rp_spent_rewards+=3600;
            } else {
                if (LOGGING > 1) console.log("[RPBonuses] buying bonus 5 WOF");
                RedeemRPProduct('free_wof_5');
                tot_rp_spent_rewards+=4500;
            }

            if (reward_points >= 4800 && Boolean(BONUS1000) ) {
                if (LOGGING > 1) console.log("[RPBonuses] buying bonus 1000% roll - not convenient anymore");
                setTimeout(function(){ RedeemRPProduct('fp_bonus_1000')},random(5000,10000));
                tot_rp_spent_rewards+=3200;
            }

            $("#script_output_title_msg_mode").text("Promo");

            setTimeout(function(){ 
                setCookie("tot_rp_spent_rewards",tot_rp_spent_rewards,7);
                if (LOGGING > 4) console.log("[RPBonuses] Tot rp spent in Bonuses after: "+tot_rp_spent_rewards);
                $('.free_play_link').not('.hide_menu').click();
            }, random(10000,20000));

        } ,random(2000,16000));
    }
}

function Roll() {
    if (LOGGING > 4) console.log("%c[Roll] [Debug] Function Roll begin", 'color:grey');
    var d = new Date();
    var h = d.getHours();
    var t = missingTime();

    if (!Boolean(ROLL)) {
        $("#script_output_title_msg_mode").text("Disabled").removeClass('true').addClass('false');
        return true;
    }

    rollTryCount++;
    if ($('#free_play_form_button').is(':visible') && ! $('#play_without_captchas_button').is(':visible')) {
        r=random(1,100);
        if ( isNight() && Boolean(NIGHT_MODE) ) {
            if (r <= 30) rand=random(2400000,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(SLOW_MODE)) {
            if (r <= 5)        rand=random(3000,100000);
            else if (r <= 20)   rand=random(300000,1500000);
            else if (r <= 40)   rand=random(60000,2000000);
            else                rand=random(120000,3000000);
            rolling_mode="Slow";
        }

        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";
        } else if ( isNight() && Boolean(GHOST_MODE)) {
            // console.log("Ghost mode is active, don't free roll in the night");
            $("#script_output_title_msg_mode").text('Ghost');
            
            var waiting_milli;
            if (stopNight > h) {
                waiting_milli = (stopNight - h + 1)*60*60*1000;
            } else {
                waiting_milli = (stopNight + (24 - h + 1))*60*60*1000;
            }
            if (waiting_milli > 14400000) waiting_milli = random(14400000,16000000);
            rand=random(waiting_milli, (waiting_milli + 3600000));
            //Regresh every 4/6 hours max to update refers

            if (LOGGING > 2) console.log("%c[Roll] Ghost Mode, Refresh page in rand "+rand/1000+" s", 'color: grey');
            setTimeout(function(){ 
                location.reload();   
            }, rand );

            return true;
        }

        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);


        // Real ROLL Function
        rollAndRetrieve(rand);


    } else if ($('#play_without_captchas_button').is(':visible') ){
        if (Boolean(PLAY_WITHOUT_CAPTCHA)) {
            //Try to play without captcha, if enough RP
            if (LOGGING > 2) console.log ("[Roll] Captcha Roll");
            captchaRoll();
        } else {
            return false;
        }
    } else if (rollTryCount >= 10) {
        // refresh page after 10 minutes trying the next case
        location.reload();
    } else if (t[0] <= 0) {
        // Not in the home page window, try again in a bit
        $('#script_output_title_msg_roll').html('<span class="bold">Waiting 1m</span>');
        if (LOGGING > 2) console.log("[Roll] Retry in 1m");
        setTimeout(function(){ 
            Roll();   
        }, 60000 );
    } else {
        $('#script_output_title_msg_roll').html('<span class="bold">Waiting Next Roll</span>');
        //$("#script_output_title_msg_mode").text("Wait");
        if (LOGGING > 2) console.log("[Roll] No roll");
    }
}

function captchaRoll() {
    if (LOGGING > 4) console.log("%c[Roll] [Debug] Function captchaRoll begin", 'color:grey');
    $('#play_without_captchas_button').click();
    setTimeout(function(){
        var cost_rp = $('.play_without_captcha_description span').text();
        if (LOGGING > 2) console.log ("%c[Roll] Try to play without captcha for "+cost_rp+" RP points. You have "+reward_points+" RP.", 'color:purple;');
        if (reward_points >= cost_rp ) {
            // ROLL anyway paying
            if (LOGGING > 2) console.log ("[Roll] Roll with Captcha");
            $('#script_output_title_msg_roll').html('<span class="bold true">Captcha OK</span>');

            r=random(1,100);
            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="Captcha";
            $("#script_output_title_msg_mode").text(rolling_mode);

            if (tot_btc_winning_rolling == 0) {
                rand=random(1000,2000);
                if (LOGGING > 2) console.log('>>>>> First Execution, fast ROLL');
            }
            rand = random(500,60000);
            rollAndRetrieve(rand);
            tot_rp_spent_captcha = Math.floor (parseInt(tot_rp_spent_captcha)+parseInt(cost_rp));
            setCookie("tot_rp_spent_captcha", tot_rp_spent_captcha, 7);
        } else {
            if (LOGGING > 2) console.log ("%c[Roll] Not enough RP. No Roll", 'color: red');
            $('#script_output_title_msg_roll').html('<span class="bold false">Miss RP</span>'); // Status on page               
        }
    }, random(1000,3000));
}

function rollAndRetrieve (rand) {
    if (LOGGING > 4) console.log("%c[Roll] [Debug] Function rollAndRetrieve begin", 'color:grey');
    var d = new Date();
    var h = d.getHours();
    // Show hour when will roll in status panel
    // new date to modify various time during function
    var d1 = new Date();
    d1.setSeconds(d.getSeconds() + rand/1000);
    var [{ value: year },,{ value: month },,{ value: day },,{ value: hour },,{ value: minute }] = dateTimeFormat.formatToParts(d1);
    $('#script_output_title_msg_roll').html('<span class="bold">Roll at <span class="false">'+hour+':'+minute+'</span></span>');
    if (LOGGING > 2) console.log('%c[Roll] ---Will roll in '+rand/1000/60+' minutes','color:green');

    setTimeout(function(){
        //Duplicate the visibility chek to avoid error when humans roll and don't refresh.
        if ( $('#free_play_form_button').is(':visible') ){
            $('body').focus();

            //Update Status on page
            $('#script_output_title_msg_roll').html('<span class="true">++ Rolling NOW!</span>'); // Status on page
            if (LOGGING > 2) console.log('%c+++ROLL!','color:purple; font-weight: bold');
            
            // Execute the roll!!
            setTimeout(function(){ $('#free_play_form_button').click(); }, 500);
            setTimeout(function(){
                // get some errors and log those :(
                if ( $('#free_play_error').html().length > 0 ) {
                    if (LOGGING > 1) console.log("%c[Roll] Some error occurred in Roll: "+$('#free_play_error').html() );
                    return false;
                } else {
                    var win_btc = $('#winnings').text();
                    var win_lottery = $('#fp_lottery_tickets_won').text();
                    var win_rp = $('#fp_reward_points_won').text();
                    executions++;
                }

                // close tedious popup now
                closePopupInterval($('.close-reveal-modal'));

                //Update Status on page
                $('#script_output_title_msg_roll').html('<span class="true">++ Rolled</span>'); // Status on page
                $('#script_output_title_executions_num').text(executions);
                setCookie('executions', executions, 7);
                if (LOGGING > 2) console.log('%c[Roll] Execution number: '+executions,'font-weight:bold; color:green');
                if (LOGGING > 2) console.log('%c[Roll] Got '+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, 7);
                    if (LOGGING > 2) console.log('%c[Roll] BTC Won totally with script %c'+tot_btc_winning_rolling,'color: gray', 'font-weight:bold');
                } else {
                    if (LOGGING > 1) console.log('%c[Roll] Some 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, 7);
                    if (LOGGING > 2) console.log('%c[Roll] Tickets Won with script %c'+tot_lottery_winning_rolling,'color: gray', 'font-weight:bold');
                } else {
                    if (LOGGING > 1) console.log('%c[Roll] Some 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, 7);
                    if (LOGGING > 2) console.log('%c[Roll] RP Won with script %c'+tot_rp_winning_rolling,'color: gray', 'font-weight:bold');
                } else {
                    if (LOGGING > 1) console.log('%c[Roll] Error retrieving Roll Winnings. Winning RP was: '+win_btc, 'color: red');
                }
            }, 6999);
        } else {
            if (LOGGING > 3) console.log('[Roll] Already Rolled maybe by some human..');
            //Update Status on page
            $('#script_output_title_msg_roll').html('<span class="false">Already Rolled</span>'); // Status on page
            setTimeout(function(){ location.reload(); }, 30000);
        }    
    },rand);

    //Random Action After ROLL
    var rand1=rand+random(1000,600000);
    rand=random(0,100);

    if (rand > ROLL_P) {
        if (LOGGING > 2) console.log('[Roll] [Debug] Reload page after roll in '+rand1/1000/60+' minutes!');
        setTimeout(function(){ location.reload(); }, rand1);
    } else if (rand <= ROLL_P && Boolean(MULTIPLY) && Boolean(isMultiplyPlayable)) {
        // Show hour when will multiply in status panel
        d1.setSeconds(d.getSeconds() + rand1/1000);
        [{ value: year },,{ value: month },,{ value: day },,{ value: hour },,{ value: minute }] = dateTimeFormat.formatToParts(d1);
        if (LOGGING > 0) console.log('[Roll] ---Will multiply in '+rand1/1000/60+' minutes!');
        $('#script_output_multiply_status').html('<span class="bold">Multiply at: <span class="false">'+hour+':'+minute+'</span></span>');
        setTimeout(function(){ multiply(true, false); }, rand1);
    } else {
        if (LOGGING > 2) console.log('[Roll] No action after roll. Rand was '+rand);
    }
}

function lottery () {
    //Plan buying lottery ticket
    if(Boolean(LOTTERY)){
        if (LOGGING > 4) console.log("%c[Lottery] [Debug] Function lottery begin", 'color:gray');
        var r = random(1,100);
        var d = new Date();
        var h = d.getHours();
        var satbalance = parseInt($('#balance').text().split(".")[1]);
        var randl = random(1,LOTTERY_MAX_TICKETS).toFixed(0); //Tickets to buy
        if ( isNight() ) return true;
        else if (satbalance <= randl) return true;
        else if (r>= LOTTERY_P) return true;  
        if (LOGGING > 2) console.log("[Lottery] Buy %c"+ randl + " lottery tickets %cin some time....", 'color:yellow', 'color:reset');
        setTimeout(function(){
            $('#lottery_tickets_purchase_count').val(randl);
            setTimeout(function(){
                $('#purchase_lottery_tickets_button').click();
                if (LOGGING > 2) console.log("%c[Lottery] Bought "+ randl + " lottery tickets", 'color:yellow');
                tot_lottery_tickets = Math.floor(parseInt(tot_lottery_tickets) + parseInt(randl));
                setCookie('tot_lottery_tickets',tot_lottery_tickets,7);
            }, random(2000,4000));
        }, random(40000,120000));    
    }
}

// Multiply, called after the free roll, sometimes.
// ******** MULTIPLY GAME LOGIC START *********
// Pre start and selector
function multiply(after_roll, forced) {
    if (LOGGING > 4) console.log("%c[Multiply] [Debug] Function multiply begin", 'color:grey');
    var d = new Date();
    var h = d.getHours();
    var t = missingTime();
    var max_missing_min = 0;
    var milli_between_multiplies = Math.floor(MULTIPLY_WAIT_HOURS*60*60*1000);
    var balance = parseFloat($('#balance').text()).toFixed(8);
    var bonus_mul = false;
    var last_multiply_diff = Math.floor(d.getTime() - last_multiply);

    if (LOGGING > 4) console.log("%c[Multiply] [Debug] lastMultiply diff: "+last_multiply_diff+" -- last_multiply: "+last_multiply+" -- now: "+d.getTime(), 'color:grey');

    if ($("#bonus_account_table").length != 0) {
        var bonus_mul_balance = $('#bonus_account_balance').text().split(" ")[0];
        var bonus_mul_wager_remaining = $('#bonus_account_wager').text().split(" ")[0];
        if (LOGGING > 2) console.log('%c[Multiply] bonus balance: '+bonus_mul_balance+', wager remaining: '+bonus_mul_wager_remaining, 'color:grey');
        bonus_mul = true;
    } else bonus_mul = false;
    
    if (!Boolean(MULTIPLY) && !Boolean(forced)) {
        if (LOGGING > 3) console.log('[Multiply] Not playing multiply. Disabled by config');
        $('#script_output_title_multiply_wait_hours').text('Disabled').removeClass('true').addClass('false');
        $('#multiply_strategy').hide();        
        return false;
    } 
    if ( !Boolean(MULTIPLY_AT_NIGHT) && isNight() && !Boolean(forced)) {
        if (LOGGING > 3) console.log('%c[Multiply] Not playing multiply in the night','color:gray');
        $('#script_output_title_multiply_wait_hours').text('Wait Morning');
        return false;
    }
    if ( balance < MAX_BET && bonus_mul_balance < MAX_BET && !Boolean(forced)) {
        if (LOGGING > 3) console.log('[Multiply] Not enough balance for MAX_BET');
        $('#script_output_title_multiply_wait_hours').text('Adjust MaxBet');  
        return false; 
    } 
    if ( last_multiply_diff < milli_between_multiplies && !Boolean(forced)) {
        var min_between_mult=Math.floor((milli_between_multiplies - last_multiply_diff)/1000/60);
        var hours_between_mult=Math.floor(min_between_mult/60); 
        if (LOGGING > 3) console.log('[Multiply]  Not playing multiply. Wait MULTIPLY_WAIT_HOURS before play again, missing '+hours_between_mult+"h "+min_between_mult%60+"m");
        $('#script_output_title_multiply_wait_hours').text('Wait '+hours_between_mult+"h "+min_between_mult%60+"m");
        //$('#ref_multiply_missing_hours').text(Math.ceil((milli_between_multiplies - last_multiply_diff)/1000/60/60));
        $('#script_output_title_multiply_wait_hours').removeClass('true').addClass('false');
        return false;
    }
    if ( t[0] > 0 && t[0] <= max_missing_min && !Boolean(forced)) {
        if (LOGGING > 3) console.log('[Multiply] Not playing multiply. Wait to play not near next roll, missing just %c'+t[0]+' min', 'color:purple');
        $('#script_output_title_multiply_wait_hours').text('Wait '+t[0]+'m');
        return false;
    }  
    if (Boolean(isMultiplyRunning)) {
        if (LOGGING > 3) console.log('[Multiply] Not playing multiply. Some other istance already playing');
        return false;
    }
    if (Boolean(after_roll)) {
        if (!Boolean(forced)) $('.double_your_btc_link').not('.hide_menu').click();

        tot_multiply_games = parseInt(tot_multiply_games)+1;
        setCookie("tot_multiply_games", tot_multiply_games, 30);
        setCookie("last_multiply", d.getTime(), 30);
        $('#script_output_multiply_status').html('<span class="bold">Multiply: <span class="true">Running!</span></span>');
        if (LOGGING > 4) console.log(Boolean(after_roll)+", "+balance+", "+bonus_mul_balance+", "+MAX_BET+", "+Boolean(MULTIPLY));

        multiply_manual();   
    } else {
        isMultiplyPlayable = true;
        if (LOGGING > 3) console.log('[Multiply] Yes can play multiply '+isMultiplyPlayable);        
    }
}

function multiply_manual() {
    var bet_count=0; var bet_remaining=0; 
    var past_bet; var bet_amount; var bet_odds; var bet_hilo;
    var winnings=0; 
    var won=0;  // won lost or error -1, 1 or 0
    var consecutive_lost=0; var consecutive_win=0;

    var fast_bet=false; var log_msg = ""; var c; 
    var multiply_message="";
    var curr_multiply_balance=0; var curr_multiply_wagered = 0;

    var max_consecutive_losts_session=0; var max_consecutive_wins_session=0;
    var max_consecutive_losts_inplay_session=0; var max_bet_session=0;
    var last_session_hist=[];

    var balance = parseFloat($('#balance').text()).toFixed(8);

    // Global vars setting to avoid duplicate games and increments.
    // as error reported bug on play 
    game2_consecutive_lost_passed=false; game2_finished_loosing=false;  
    game2_play_after_losses=0; game2_step=0; 
    forceMultiplyStopHard=false; forceMultiplyStopSoft=false;
    game_play_began=false; game_play_count=0; 
    
    // Multilpy Running
    isMultiplyRunning = true;
    if ( $('#multiply_full_container').length) {
        multiply_message = "<span class='lime'><b>Running!</b></span>";
        $('#multiply_message').html(multiply_message);
    }
    // Activate DOM Monitors

    /// *** NEW VERSION ***
    if (LOGGING > 4) console.log("[Multiply] Activating MutationObserver Monitors, beginning to play");
    const targetNode = document.getElementById('double_your_btc_result');
    const config = { attributes: true, childList: true, subtree: true };
    const callback = function(mutationsList, observer) {
        //if (LOGGING > 4) console.log("%cDom modified.", "color: grey");
        if ( $('#double_your_btc_error').html().length > 0 ) {
            var multiply_error = $('#double_your_btc_error').html();    
            console.log('%c[Multiply] Fatal Error in multiply: '+multiply_error, 'color: red');
            //$('#script_output_title_multiply_wait_hours').text('Fatal Error').removeClass(true).addClass('false');
            setCookie('multiply_error', multiply_error, 31);
            multiply_message = "Finish for some error";
            if (LOGGING > 2) console.log("%c"+multiply_message, css_bold+"color:"+c);
            multiplyEndGame(bet_amount, bet_count, consecutive_lost, curr_multiply_balance, observer, multiply_message);
            return true;
        } else if ( $("#double_your_btc_bet_win").html().length > 0 ) {
            won = 1; c="green"; fast_bet = true;
            winnings = $("#double_your_btc_bet_win").html().split(" ")[6];
            if (winnings > 0) {
                tot_multiply_balance = parseFloat(parseFloat(tot_multiply_balance) + parseFloat(winnings)).toFixed(8);
                curr_multiply_balance = parseFloat(parseFloat(curr_multiply_balance) + parseFloat(winnings)).toFixed(8);
            }
            consecutive_win++;
            consecutive_lost=0;
            if ( $('#multiply_full_container').length) {
                $('#multiply_cons_wins > b').html(consecutive_win).addClass("green-bg");
                setTimeout(function () { $("#multiply_cons_wins > b").removeClass("green-bg"); },500);
            }
        } else if ($("#double_your_btc_bet_lose").html().length > 0 ) {
            won = -1; c = "red";
            winnings = $("#double_your_btc_bet_lose").html().split(" ")[6];
            if (winnings > 0) {
                tot_multiply_balance = parseFloat(parseFloat(tot_multiply_balance) - parseFloat(winnings)).toFixed(8);
                curr_multiply_balance = parseFloat(parseFloat(curr_multiply_balance) - parseFloat(winnings)).toFixed(8);
            }
            consecutive_lost++;
            consecutive_win=0;
            if ( $('#multiply_full_container').length) {
                $('#multiply_cons_losts > b').html(consecutive_lost).addClass("red-bg");
                setTimeout(function () { $("#multiply_cons_losts > b").removeClass("red-bg"); },500);
            }
        } else won = 0;

        if (won != 0) {
            // COOKIES for STATISTICS
            setCookie("tot_multiply_balance", tot_multiply_balance, 7);
            setCookie('curr_multiply_balance',curr_multiply_balance,7);
            var rolled = $('#previous_roll').text();

            last_session_hist.push(Math.round(curr_multiply_balance*100000000));
            setCookie('last_multiply_session_hist',JSON.stringify(last_session_hist),7)

            // Session Cookie
            if (consecutive_lost >= max_consecutive_losts_session) {
                max_consecutive_losts_session=consecutive_lost;
                setCookie('max_consecutive_losts_session', max_consecutive_losts_session, 7);
            }
            if (consecutive_lost >= max_consecutive_losts_inplay_session && bet_amount > MIN_BET) {
                max_consecutive_losts_inplay_session=consecutive_lost;
                setCookie('max_consecutive_losts_inplay_session',max_consecutive_losts_inplay_session,7); 
            }
            if (bet_amount >= max_bet_session) {
                max_bet_session=parseFloat(bet_amount).toFixed(8);
                setCookie('max_bet_session',max_bet_session,7);
            }

            // General Cookies
            if (consecutive_lost > max_consecutive_losts_inplay && bet_amount > MIN_BET) {
                max_consecutive_losts_inplay = consecutive_lost;
                setCookie('max_consecutive_losts_inplay',max_consecutive_losts_inplay,7);
            } 
            if (consecutive_lost > max_consecutive_losts) {
                max_consecutive_losts=consecutive_lost;
                setCookie('max_consecutive_losts', consecutive_lost, 365);
            }

            if ( rolled != '7777' ){
                jackpot_distance++;
                setCookie('jackpot_distance', jackpot_distance, 31);
            }

            if ( $('#multiply_full_container').length) {
                // Update the values
                $('#multiply_bet_count > b').html(bet_count).addClass("green-bg");
                setTimeout(function () { $("#multiply_bet_count > b").removeClass("green-bg"); },200);
                $('#multiply_play_count > b').html(game_play_count);
                $('#multiply_max_cons_losts > b').html(max_consecutive_losts_session);
                $('#multiply_max_bet > b').html(max_bet_session);
                $('#balance_before > b').html(balance);
                $('#balance_now > b').html(parseFloat($('#balance').text()).toFixed(8));
                $('#multiply_wagered > b').html(curr_multiply_wagered);
                $('#multiply_profit > b').html(curr_multiply_balance);
            }

            // Next bet values getting It return a FLOAT number. Will be converted in bet function. 
            bet_amount = get_bet_amount( past_bet, consecutive_lost, consecutive_win); 
            bet_hilo = get_bet_hilo(consecutive_lost);
            bet_odds = get_bet_odds();

            if (LOGGING > 2) {
                log_msg =  "Rolled:"+rolled+",%c Won:"+parseFloat(winnings).toFixed(8)+"%c, Played#:"+bet_count;
                log_msg += "/"+MAX_ROLLS_AT_MULTIPLY+"/"+game_play_count+", L/W: "+consecutive_lost+"/"+consecutive_win;
                log_msg += ", CurrBal:"+curr_multiply_balance+", TotBal:"+tot_multiply_balance;
                log_msg += " <Next bet: "+parseFloat(bet_amount).toFixed(8)+"("+game2_step+") on "+bet_hilo+", Fast: "+fast_bet+">";
                console.log(log_msg, css_bold+"color:"+c, css_reset);
            }

            // EXIT CONDITIONS -- Play or finished logic
            if (Boolean(forceMultiplyStopHard)) {
                multiply_message = "Finish for <b>Stop Button</b> pressed";
                if (LOGGING > 2) console.log("%c"+multiply_message, css_bold+"color:"+c);
                multiplyEndGame(bet_amount, bet_count, consecutive_lost, curr_multiply_balance, observer, multiply_message);
                return true;
            } else if ( bet_count >= MAX_ROLLS_AT_MULTIPLY || Boolean(forceMultiplyStopSoft)) {
                if (LOGGING > 2) console.log("%cSoft finish, wait ending this play", css_bold+"color:"+c+", "+css_reset);
                if ( !Boolean(game_play_began) ) {
                    multiply_message = "Finish for <b>Stop Soft</b> or <b>Max Roll</b> passed";
                    if (LOGGING > 2) console.log("%c"+multiply_message, css_bold+"color:"+c);
                    multiplyEndGame(bet_amount, bet_count, consecutive_lost, curr_multiply_balance, observer, multiply_message);
                    return true;
                } 
            } else if (game_play_count >= MAX_PLAY && !Boolean(game_play_began)) {
                multiply_message = "Finish for <b>Game Play</b> count passed";
                if (LOGGING > 2) console.log("%c"+multiply_message, css_bold+"color:"+c);
                multiplyEndGame(bet_amount, bet_count, consecutive_lost, curr_multiply_balance, observer, multiply_message);
                return true;
            } else if (bet_amount > MAX_BET) {
                multiply_message = "Finish for <b>bet amount</b> passed max bet";
                if (LOGGING > 2) console.log("%c"+multiply_message, css_bold+"color:"+c);
                multiplyEndGame(bet_amount, bet_count, consecutive_lost, curr_multiply_balance, observer, multiply_message);
                return true;
            } else if (curr_multiply_balance >= MAX_WIN) {
                multiply_message = "Finish for <b>MAX_WIN</b> passed";
                if (LOGGING > 2) console.log("%c"+multiply_message, css_bold+"color:"+c);
                multiplyEndGame(bet_amount, bet_count, consecutive_lost, curr_multiply_balance, observer, multiply_message);
                return true;
            } else if (bet_amount < 0.00000001) {
                multiply_message = "Finish for error in bet amount value";
                if (LOGGING > 2) console.log("%c"+multiply_message, css_bold+"color:"+c);
                multiplyEndGame(bet_amount, bet_count, consecutive_lost, curr_multiply_balance, observer, multiply_message);
                return false;
            }

            curr_multiply_wagered = parseFloat(parseFloat(curr_multiply_wagered) + parseFloat(bet_amount)).toFixed(8);
            tot_multiply_wagered = parseFloat(parseFloat(tot_multiply_wagered) + parseFloat(bet_amount)).toFixed(8);
            setCookie('tot_multiply_wagered',tot_multiply_wagered, 365);
            setCookie('curr_multiply_wagered',curr_multiply_wagered, 30);

            if (past_bet != bet_amount) fast_bet=false;
            else fast_bet=true;

            bet_count++; 
            past_bet=bet_amount;

            //Security wait of 30 seconds if speed fast (3) and every 500 collected

            // call the bet
            bet(bet_amount, bet_hilo, bet_odds, fast_bet);
        } else {
            var winlength=$("#double_your_btc_bet_win").html().length;
            var loslength=$("#double_your_btc_bet_lose").html().length;
            var domtree=$('#double_your_btc_result').html();
            multiply_message = "Finish for no value in DOM var";
            if (LOGGING > 1) console.log("%cFinish for no value in won var, was: "+won+", win l: "+winlength+", los l: "+loslength, css_bold+"color:"+c);
            if (LOGGING > 3) console.log("%cFinish for no value in won var, DOM was: "+domtree, css_bold+"color: grey");
            
            multiplyEndGame(bet_amount, bet_count, consecutive_lost, curr_multiply_balance, observer, multiply_message);
        }
    };
    // Begin the observer
    const observer = new MutationObserver(callback);
    observer.observe(targetNode, config);

    // Disable Animation
    $("#disable_animation_checkbox").prop( "checked", true );
    // First bet that cause all the others and Dom modifications
    setTimeout(function(){
        bet_hilo = get_bet_hilo(0);
        bet_amount = get_bet_amount(MIN_BET,0,0);
        bet_odds = get_bet_odds();
        bet_count++; past_bet=bet_amount;     
        bet(bet_amount, bet_hilo, bet_odds, false);
    }, random (3500,6500) );
}

function get_bet_amount(past_bet, consecutive_lost, consecutive_win){
    if (STRATEGY == 0) {
        if (consecutive_lost == 0) {
            game_play_began=false;
            return BAS_BET;
        }
        else {
            if (consecutive_lost == 1) {
                game_play_began = true;
                game_play_count++;
                tot_multiply_play++;
                setCookie('tot_multiply_play', tot_multiply_play, 7);
            }
            return past_bet*2;
        }
    } else if (STRATEGY == 1 || WAIT_PLAY_AFTER_LOSSES == 0){
        if (consecutive_lost < MIN_LOSSES_BEFORE_PLAY) {
            if (Boolean(game_play_began)) {
                game_play_began=false;
            }
            return MIN_BET;
        } else if (consecutive_lost == MIN_LOSSES_BEFORE_PLAY){
            game_play_began=true;
            tot_multiply_play++;
            game_play_count++;
            setCookie('tot_multiply_play', tot_multiply_play, 7);
            return BAS_BET;
        } else {
            return past_bet+(past_bet*INCR/100);
        }
    } else if (STRATEGY == 2 || STRATEGY == 3) {
        if (!Boolean(game2_consecutive_lost_passed)) {
            if (Boolean(game_play_began)) game_play_began=false;
            if (consecutive_lost < MIN_LOSSES_BEFORE_PLAY) {
                game2_step=1;
                return MIN_BET;
            } else if (consecutive_lost == MIN_LOSSES_BEFORE_PLAY){
                // passed tot lost, next step -> else
                game2_step=2;
                game2_consecutive_lost_passed = true;
                return MIN_BET;
            } else return "-009";
        } else {
            if (!Boolean(game2_finished_loosing)) {
                if (consecutive_win == 0 ) {
                    game2_step=3;
                    return MIN_BET;
                } else {
                    //finished loosing, first win, next step -> else
                    game2_step=4;
                    game2_finished_loosing=true;
                    game2_play_after_losses++;
                    return get_bet_amount(MIN_BET,consecutive_lost,consecutive_win);
                }  
            } else {
                if (!Boolean(game_play_began)){
                    if (game2_play_after_losses < WAIT_PLAY_AFTER_LOSSES) {
                        game2_step=5;
                        game2_play_after_losses++;
                        return MIN_BET;
                    } else if (game2_play_after_losses >= WAIT_PLAY_AFTER_LOSSES){
                        // Begin to play, next step -> else
                        game2_step=6;
                        game_play_began=true;
                        tot_multiply_play++;
                        game_play_count++;
                        setCookie('tot_multiply_play', tot_multiply_play, 7);
                        return BAS_BET;
                    } else return "-008";
                } else {
                    if (consecutive_lost > 0) {
                        game2_step=7;
                        return past_bet+(past_bet*INCR/100);
                    } else {
                        // Playing and won, go back to the begin
                        game_play_began=false;
                        game2_step=0;
                        game2_consecutive_lost_passed=false;
                        game2_finished_loosing=false;
                        game2_play_after_losses=0;
                        
                        if (STRATEGY == 3) { 
                            MIN_LOSSES_BEFORE_PLAY++;
                            if (LOGGING > 2) console.log("New MIN_LOSSES_BEFORE_PLAY value is: "+MIN_LOSSES_BEFORE_PLAY); 
                        }
                        return MIN_BET;
                    }
                }
            }
        }
    } else return "-010";
}

function get_bet_odds () {
    if (STRATEGY == 0) { return 2; }
    else return ODDS;
}

function get_bet_hilo (index) {
    if (HIGH_LOW == 3 ) {
        var olaer = ['H','L','L','H','H','H','L','L','L','L','H','H','H','H','H','L','L','L','L','L','L','H','H','H','H','H','H','H','L','L','L','L','L','L','L','L'];
        var key = index % olaer.length;
        return olaer[key];
    } else if (HIGH_LOW == 1) {
        return "H";
    } else if (HIGH_LOW == 2) {
        return "L";
    } else {
        var r = random(1,10);
        if (r<5) return 'H';
        else return 'L';
    }
}

function bet(amount, hl, odds, fast) {
    var toclick; var wait_time_1=0; var wait_time_2=0;
    if (hl == "L") toclick = "#double_your_btc_bet_lo_button";
    else toclick = "#double_your_btc_bet_hi_button";
    //if (LOGGING > 4) console.log(">> playing: "+hl+", betting: "+amount.toFixed(8) );
    tot_multiply_bets++;
    setCookie('tot_multiply_bets', tot_multiply_bets, 7);

    if (SPEED == 0) {
        wait_time_1 = random(2000,10000); wait_time_2=random(1000,5000);
    } else if (SPEED == 1) {
        if (Boolean(fast)) { wait_time_1 = random(300,900); wait_time_2=random(100,200); }
        else { wait_time_1 = random(1133,5544); wait_time_2=random(100,1000); }
    } else if (SPEED == 2) {
        wait_time_1 = random(300,1000); wait_time_2=random(100,200);
    } else {
        wait_time_1 = random(10,20); wait_time_2=0;
    }

    setTimeout (function(){            
        $("#double_your_btc_stake").val(parseFloat(amount).toFixed(8));
        $("#double_your_btc_payout_multiplier").val(odds);
        setTimeout(function(){ $(toclick).click(); }, wait_time_1 );
    }, wait_time_2 );
}
 
function multiplyEndGame(bet_amount, bet_count, consecutive_lost, curr_multiply_balance, observer, multiply_message) {
    // Finished playing multiply
    // Deactivate DOM Monitors
    observer.disconnect();
    
    if ( $('#multiply_full_container').length) {
        $('#multiply_message').html(multiply_message);
    }

    multiply_hist_arr.push(tot_multiply_balance);
    setCookie('multiply_hist_arr',JSON.stringify(multiply_hist_arr),14);
    console.log("%cMultiply hist array: "+multiply_hist_arr, 'color:grey');
    if (LOGGING > 2) {
        if (bet_amount > MAX_BET) {
            console.log("%c Max Bet limit passed. Max Bet: "+MAX_BET+", Next Bet: "+bet_amount, 'color: red');
        } else if (bet_count >= MAX_ROLLS_AT_MULTIPLY ) {
            console.log("%c Max Rolls limit passed. Max Rolls: "+MAX_ROLLS_AT_MULTIPLY+", Tot Rolls: "+bet_count+" with "+consecutive_lost+" cons losts", 'color: red');
        } else if (game_play_count >= MAX_PLAY) {
            console.log("%c Max Plays limit passed. Max Plays: "+MAX_PLAY+", Tot Plays: "+game_play_count, 'color: red');
        }
    }
    if (LOGGING > 4) console.log("%c Disabling Monitors, finished multiply", css_bold+'color:green');                                               
    if (LOGGING > 4) console.log("%c Tot Balance: "+tot_multiply_balance+", Tot games: "+tot_multiply_games+", Tot bets: "+tot_multiply_bets, css_bold+'color: green');
    if (LOGGING > 4) console.log("%c Session Balance: "+curr_multiply_balance+", Session tot bets: "+bet_count, css_bold+'color:green');
    $('#script_output_multiply_status').html('<span class="bold">Multiply: <span class="true">Done!</span></span>');
    isMultiplyRunning=false;
    setTimeout(function(){ 
        isMultiplyRunning = false;
        $('.free_play_link').not('.hide_menu').click(); 
    }, random(3000,30000));
}

function missingTime () {
    var min = 0; var sec = 0; var str = "";
    str = $('title').text().split(" ")[0];
    //if (LOGGING > 4) console.log("%c[missingTime] [Debug] 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 if ( $('#free_play_form_button').is(':visible') ) {
        min = 0; sec = 0;
    } else { min = -1; sec = -1; }
    return [min,sec];
}

function isNight(){
    var d = new Date();
    var h = d.getHours();
    
    if ( stopNight > startNight && h >= startNight && h <= stopNight)  {
        // console.log(h+" -- "+stopNight)
        return true;
    } else if  (stopNight < startNight && h >= startNight || h <= stopNight ) {
        return true;
    }
    else return false;
}

function random(min,max){
   return min + (max - min) * Math.random();
}

function closePopupInterval (target) {
    //if (LOGGING > 4) console.log("%c[Debug] Function closePopupInterval begin", 'color:grey');
    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) {
    //if (LOGGING > 4) console.log("%c[Debug] Function closeRandomPopupInterval begin", 'color:grey');
    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 getCookie(cname) {
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires="+ d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function reset_all_stats(){
    if (LOGGING > 2) console.log("%c Resettnig all stats deleting all cookies", 'color:red');
    setCookie("last_bonus",0,365); setCookie("last_multiply",0,30); setCookie("rp_hist_arr","[]",31); setCookie("tot_multiply_balance",0,7); setCookie("tot_multiply_games",0,30);
    setCookie("tot_rp_spent_captcha",0,7); setCookie("tot_rp_spent_rewards",0,7); setCookie('curr_multiply_balance',0,7); setCookie('curr_multiply_wagered',0,30);
    setCookie('executions',0,7); setCookie('last_multiply_session_hist',0,7); setCookie('max_bet_session',0,7); setCookie('max_consecutive_losts',0,365);
    setCookie('max_consecutive_losts_inplay',0,7); setCookie('max_consecutive_losts_inplay_session',0,7); setCookie('max_consecutive_losts_session',0,7);
    setCookie('multiply_error',0,31); setCookie('multiply_hist_arr',"[]",14); setCookie('tot_btc_winning_rolling',0,7); setCookie('tot_lottery_tickets',0,7);
    setCookie('tot_lottery_winning_rolling',0,7); setCookie('tot_multiply_balance',0,7); setCookie('tot_multiply_bets',0,7); setCookie('tot_multiply_play',0,7);
    setCookie('tot_multiply_wagered',0,365); setCookie('tot_rp_winning_rolling',0,7);
    location.reload();
}

function showStatus(){
    if (LOGGING > 4) console.log("%c[Debug] Function showStatus begin", 'color:grey');
    var t=missingTime();
    var date = new Date();
    var script_output_msg_1 = "";
    var script_output_msg_2 = "";
    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(BONUS_WOF)) 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(BONUS_WOF)+""+"%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);
    }

    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(">>>>>>>>>> RP Spent with rewards: "+"%c"+tot_rp_spent_rewards, css_bold+'color:'+c1);
    if (LOGGING > 0) console.log(">>>>>>>>>> RP Spent with captcha: "+"%c"+tot_rp_spent_captcha, css_bold+'color:'+c1);
    if (LOGGING > 0) console.log(">>>>>>>>>> Multiply Balance: "+"%c"+tot_multiply_balance, css_bold+'color:'+c3);
    if (LOGGING > 0) console.log(">>>>>>>>>> Multiply Games played: "+"%c"+tot_multiply_games, css_bold+'color:'+c3);
    if (LOGGING > 0) console.log(">>>>>>>>>> Multiply Wagered: "+"%c"+tot_multiply_wagered, css_bold+'color:'+c3);

    // Update Status Message OnPage
    script_output_msg_1 =  "<span class='bold'>Config: </span>";
    script_output_msg_1 += "<span class='"+Boolean(BONUS_WOF)+"'>WOF BONUS </span> <> ";
    script_output_msg_1 += "<span class='"+Boolean(BONUS1000)+"'>BONUS1000</span> <> ";
    script_output_msg_1 += "<span class='"+Boolean(MULTIPLY)+"'>MULTIPLY</span> <> ";
    script_output_msg_1 += "<span class='"+Boolean(LOTTERY)+"'>LOTTERY</span>";
    $('#script_output_msg_1').html(script_output_msg_1);

    script_output_msg_2 = "<span class='bold'> Script Winnings:  </span> ";
    script_output_msg_2 += "<span class='true'>"+tot_btc_winning_rolling+"</span> btc; ";
    script_output_msg_2 += "<span class='true'>"+tot_lottery_winning_rolling+"</span> tickets; ";
    script_output_msg_2 += "<span class='true'>"+tot_rp_winning_rolling+"</span> RP.";
    script_output_msg_2 += "</br>";
    script_output_msg_2 += "<span class='bold'> Script Spent: </span>";
    script_output_msg_2 += "<span class='true'>"+tot_lottery_tickets+"</span> in lottery tickets; ";
    script_output_msg_2 += "<span class='true'>"+tot_rp_spent_rewards+"</span> RP in bonus; ";
    script_output_msg_2 += "<span class='true'>"+tot_rp_spent_captcha+"</span> RP in captcha. ";
    script_output_msg_2 += "</br>";
    script_output_msg_2 += "<span class='bold'> Script Multiply Balance: </span>";
    script_output_msg_2 += "<span class='true'>"+tot_multiply_balance+"</span> btc in ";
    script_output_msg_2 += "<span class='true'>"+tot_multiply_games+"</span> games and ";
    script_output_msg_2 += "<span class='true'>"+tot_multiply_bets+"</span> bets";
    $('#script_output_msg_2').html(script_output_msg_2);


}

function setBtcPrice(){
    //if (LOGGING > 4) console.log("%c[Debug] Function setBtcPrice begin", 'color:grey');
    var btc_price=$('#btc_usd_price').html().split('.')[0].replace('$','').replace(',','');
    var i=1;
    var to=2000;
    if (i>=10) return false;
    else if (isNaN(btc_price)) {
        if (LOGGING > 4) console.log("%c[setBtcPrice] Price NA, try again in "+to*i/1000+" s", 'color:grey');
        setTimeout(function(){ setBtcPrice(); }, to*i );
        i++;
        return true;
    } else {
        $('#usdxbtc').html(btc_price);
        var usd_price=parseFloat(100000000/btc_price).toFixed(0);
        $('#satxusd').html(usd_price);
    }
}