RollerCoin difficulty level helper

This script just help to notice games which have one play to rise difficulty level. Press 1 to enable/disable reload page, press 2 to disable/enable beeper. And of course my ref link: https://rollercoin.com/?r=lcy2isy3

// ==UserScript==
// @name         RollerCoin difficulty level helper
// @namespace    http://tampermonkey.net/
// @version      1.016
// @description  This script just help to notice games which have one play to rise difficulty level. Press 1 to enable/disable reload page, press 2 to disable/enable beeper. And of course my ref link: https://rollercoin.com/?r=lcy2isy3
// @author       Heymdale
// @match        https://rollercoin.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=rollercoin.com
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {

    let reloadInterval = 20000;
    let toReload = window.sessionStorage.getItem("toReload");
    let toBeep = window.sessionStorage.getItem("toBeep");
    // stop_reload stops reload then there are green items.
    let stop_reload = false
    if (toBeep === null){
        window.sessionStorage.setItem("toBeep", "true");
        toBeep = "true";
    }

    document.addEventListener('keydown', function(e) {
        if (event.keyCode === 49) {
            if (toReload == "true"){
                toReload = "false";
            }
            else{
                toReload = "true"
            }
            changeTitle();
            window.sessionStorage.setItem("toReload", toReload);
        }
        if (event.keyCode === 50) {
            if (toBeep == "true"){
                toBeep = "false";
            }
            else{
                toBeep = "true"
            }
            changeTitle();
            window.sessionStorage.setItem("toBeep", toBeep);
        }
    });

    function isChooseGamePage() {
        return (window.location.href == "https://rollercoin.com/game/choose_game");
        }

    function beep() {
        var snd = new Audio("data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=");
        snd.play();
    }

    function _main(){
        let mainToBeep = false
        stop_reload = false
        let gameDivs = document.querySelectorAll(".choose-game-item-container");
        for (let i = 0; i < gameDivs.length; i++) {
            let progressBars = gameDivs[i].querySelectorAll(".progress-block");
            let difficulty = gameDivs[i].querySelectorAll(".game-information-number")[0].innerText
            let secondProgressBar = progressBars[progressBars.length - 2];
            let secondProgressBarDiv = secondProgressBar.firstChild.getAttribute("aria-valuenow");
            let lastProgressBar = progressBars[progressBars.length - 1];
            let thirdProgressBarDiv = lastProgressBar.firstChild.getAttribute("aria-valuenow");
            if (thirdProgressBarDiv == "100" && difficulty != "10"){
                let buttonText = gameDivs[i].querySelector(".btn-text").innerText;
                if (buttonText == 'START'){
                    gameDivs[i].style.color = "LightGreen";
                    // Page will not reload if there are game with one play to rise level
                    stop_reload = true
                    if (toBeep == "true"){
                        mainToBeep = true;
                    }
                }
                else if (buttonText == 'WAIT...'){
                    gameDivs[i].style.color = "red";
                }
            }
            // start. Added in version 1.015
            else if (secondProgressBarDiv == "100" && difficulty != "10"){
                let buttonText = gameDivs[i].querySelector(".btn-text").innerText;
                if (buttonText == 'START'){
                    gameDivs[i].style.color = "Cyan";
                }
                else if (buttonText == 'WAIT...'){
                    gameDivs[i].style.color = "Blue";
                }
            }
            // finish. Added in version 1.015
            else{
                gameDivs[i].style.color = "white";
            }
        }
        if (mainToBeep) {
            beep();
        }
    }

    // Function must spy for document and change headline when it appears,
    // because "onload" needed tag didn't exist.
    // All this function is kluge.
    // It try to change <h1> every time then document.body get or lost child.
    function waitHeadLine(){
        let observer = new MutationObserver((mutations) => {
            mutations.forEach((mutation) => {
                if (!mutation.addedNodes.length) return
                if (!isChooseGamePage()) return
                if (document.querySelector("h1.choose-game-title") !== null) changeTitle();
            })
        })

        observer.observe(document.body, {
            childList: true
        })
    }

    // Added state of the userscript to headline
    function changeTitle(){
        var headLine = document.querySelector("h1.choose-game-title");
        var reloaderText = toReload == "true" ? "on" : "off";
        var beeperText = toBeep == "true" ? "on" : "off";
        if (headLine !== null)
        {
            headLine.innerText= "Play games to rise your power\n" +
                "Reloader:" + reloaderText + " Beeper:" + beeperText;
        }
    }

    function main(){
        if (isChooseGamePage()) _main();
    }

    window.onload=function(){
        waitHeadLine();
        window.setInterval(main, 1000);
    };

    setInterval(function(){
        if (toReload == "true" && stop_reload == false) {
            if (isChooseGamePage()) document.location.reload();
        }
    }, reloadInterval);

})();