[Premium] Faucet Monitor with Faucetpay ReCaptcha/Antibot Rotator

Elevate your Faucet claiming experience with advanced automation, seamlessly handling form filling, button clicks, and ReCaptcha/Antibot challenges. Boost your efficiency and maximize earnings.

目前為 2024-02-06 提交的版本,檢視 最新版本

// ==UserScript==
// @name         [Premium] Faucet Monitor with Faucetpay ReCaptcha/Antibot Rotator
// @namespace    https://greasyfork.org/users/1162863
// @version      2.7.1
// @description  Elevate your Faucet claiming experience with advanced automation, seamlessly handling form filling, button clicks, and ReCaptcha/Antibot challenges. Boost your efficiency and maximize earnings.
// @author       Andrewblood
// @match        https://*.coinfinity.top/*
// @match        https://*.sollcrypto.com/*
// @match        https://*.cryptoclaps.com/*
// @match        https://*.baltoniearn.com/claim/tron/*
// @match        https://*.vptron.online/TRX/*
// @match        https://*.claimcoins.site/reward/*
// @match        https://*.bnbminers.site/earns/*
// @match        https://*.ltcmines.site/earns/*
// @match        https://*.tronxminer.com/rewards/*
// @match        https://*.etcoin.site/earn/*
// @match        https://*.autofaucet.dutchycorp.space/*
// @match        https://*.freebitco.in/*
// @match        https://*.freebitcoin.io/*
// @match        https://*.freebinancecoin.com/*
// @match        https://*.free-doge.com/*
// @match        https://*.freetether.com/*
// @match        https://*.freecardano.com/*
// @match        https://*.freedash.io/*
// @match        https://*.freeethereum.com/*
// @match        https://*.freebfg.com/*
// @match        https://*.freebittorrent.com/*
// @match        https://*.freepancake.com/*
// @match        https://*.freematic.com/*
// @match        https://*.freeshibainu.com/*
// @match        https://*.coinfaucet.io/*
// @match        https://*.freenem.com/*
// @match        https://*.freeusdcoin.com/*
// @match        https://*.free-tron.com/*
// @match        https://*.freesteam.io/*
// @match        https://*.freeneo.io/*
// @match        https://*.free-ltc.com/*
// @match        https://*.freecryptom.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=faucetpay.io
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @grant        GM_listValues
// @grant        window.close
// @antifeature  referral-link     Referral-Link is in this Script integrated.
// @antifeature  ads               Advertisment Button with sites from friends.
// @license      Copyright Andrewblood
// ==/UserScript==
/*
Experience the next level of Faucet claiming with unparalleled features:

- User Interface: You can use http://coinfinity.top for the interface/buttons for managing websites, installing requirements, saving Faucetpay email address, and handling stored URLs
- Requirements Integration: Provides extension and script recommendations with install buttons for enhanced functionality.
- ReCaptcha/Antibot Handling: Intelligently tackles security challenges, ensuring a smooth claiming process.
- Advanced Automation: Seamlessly fills forms and clicks buttons on Faucetpay Faucet sites, reducing manual effort.
- Efficient Navigation: Automatically moves through supported Faucet URLs, preventing revisits site until next day if it is empty or dayli limit reached for strategic claiming.
- Error Handling: Reloads pages, ensuring up-to-date claiming and avoiding downtime.

Unstable ReCaptcha sites that can add advnced users to the var urls list:

        "https://cryptoclaps.com/earn/dogecoin/",
        "https://cryptoclaps.com/earn/tron/",
        "https://cryptoclaps.com/earn/litecoin/",
        "https://cryptoclaps.com/earn/binance/",
        "https://cryptoclaps.com/earn/solana/",
        "https://cryptoclaps.com/earn/ethereum/",
        "https://cryptoclaps.com/earn/bch/",
        "https://cryptoclaps.com/earn/xrp/",
        "https://cryptoclaps.com/earn/dash/",
        "https://cryptoclaps.com/earn/polygon/",
        "https://cryptoclaps.com/earn/usdt/",
        "https://cryptoclaps.com/earn/zcash/",
        "https://etcoin.site/earn/tron/",
        "https://etcoin.site/earn/doge/",
        "https://etcoin.site/earn/litecoin/",
        "https://etcoin.site/earn/binance/",
        "https://etcoin.site/earn/ripple/",
        "https://etcoin.site/earn/ethereum/",
        "https://etcoin.site/earn/bitcoin/",
        "https://sollcrypto.com/home/page/bitcoin/",
        "https://sollcrypto.com/home/page/doge/",
        "https://sollcrypto.com/home/page/tron/",
        "https://sollcrypto.com/home/page/digibyte/",
        "https://sollcrypto.com/home/page/litecoin/",
        "https://sollcrypto.com/home/page/binance/",
        "https://sollcrypto.com/home/page/solana/",
        "https://sollcrypto.com/home/page/ethereum/",
        "https://sollcrypto.com/home/page/bch/",
        "https://sollcrypto.com/home/page/xrp/",
        "https://sollcrypto.com/home/page/dash/",
        "https://sollcrypto.com/home/page/zcash/",

*/
(function() {
    'use strict';

    var urls = [
        "https://baltoniearn.com/claim/tron/",
        "https://vptron.online/TRX/",
        "https://claimcoins.site/reward/tron/",
        "https://claimcoins.site/reward/doge/",
        "https://claimcoins.site/reward/litecoin/",
        "https://claimcoins.site/reward/binance/",
        "https://claimcoins.site/reward/ripple/",
        "https://claimcoins.site/reward/bitcoin/",
        "https://bnbminers.site/earns/tron/",
        "https://bnbminers.site/earns/litecoin/",
        "https://bnbminers.site/earns/feyorra/",
        "https://bnbminers.site/earns/binance/",
        "https://bnbminers.site/earns/ripple/",
        "https://bnbminers.site/earns/ethereum/",
        "https://bnbminers.site/earns/bitcoin/",
        "https://ltcmines.site/earns/tron/",
        "https://ltcmines.site/earns/doge/",
        "https://ltcmines.site/earns/litecoin/",
        "https://ltcmines.site/earns/binance/",
        "https://ltcmines.site/earns/ripple/",
        "https://ltcmines.site/earns/ethereum/",
        "https://ltcmines.site/earns/bitcoin/",
        "https://tronxminer.com/rewards/tron/",
        "https://tronxminer.com/rewards/doge/",
        "https://tronxminer.com/rewards/feyorra/",
        "https://tronxminer.com/rewards/binance/",
        "https://tronxminer.com/rewards/ripple/",
        "https://tronxminer.com/rewards/bitcoin/",
    ];

    // Function to click a button
    function clickButton(selector) {
        var button = document.querySelector(selector);
        if (button) {
            button.click();
        }
    }

    // Function to check if the captcha is activated
    function isCaptchaChecked() {
        return grecaptcha && grecaptcha.getResponse().length !== 0;
    }

    function visibleCheck(elm) {
        if (!elm.offsetHeight && !elm.offsetWidth) { return false; }
        if (getComputedStyle(elm).visibility === 'hidden') { return false; }
        return true;
    }

    // Function to check if an element is visible
    function isElementVisible(selector) {
        var element = document.querySelector(selector);
        return element && element.offsetWidth > 0 && element.offsetHeight > 0;
    }

    // Function to open a website
    function openWebsite(url) {
        window.open(url, '_blank');
    }

    // Email overlay creation
    var overlay = document.createElement('div');
    overlay.id = 'emailInputOverlay';
    overlay.style.position = 'fixed';
    overlay.style.bottom = '10px';
    overlay.style.right = '10px';
    overlay.style.zIndex = '10000';

    // Create a button for other requirements
    var otherRequirementsButton = document.createElement('button');
    otherRequirementsButton.id = 'otherRequirementsButton';
    otherRequirementsButton.style.padding = '5px';
    otherRequirementsButton.style.marginLeft = '5px';
    otherRequirementsButton.textContent = 'Requirements';

    var isRequirementsOverlayOpen = false;
    var isStoredUrlsOverlayOpen = false;

    // Event listener for otherRequirementsButton
    otherRequirementsButton.addEventListener('click', function() {
        // Check if requirements overlay is already open
        if (isRequirementsOverlayOpen) {
            // Close the overlay
            closeOverlay(otherRequirementsOverlay);
            isRequirementsOverlayOpen = false;
            return;
        }

        // Create an overlay for other requirements
        var otherRequirementsOverlay = document.createElement('div');
        otherRequirementsOverlay.style.position = 'fixed';
        otherRequirementsOverlay.style.top = '50%';
        otherRequirementsOverlay.style.left = '50%';
        otherRequirementsOverlay.style.transform = 'translate(-50%, -50%)';
        otherRequirementsOverlay.style.zIndex = '10001';
        otherRequirementsOverlay.style.backgroundColor = '#fff';
        otherRequirementsOverlay.style.border = '1px solid #ddd';
        otherRequirementsOverlay.style.padding = '20px';
        otherRequirementsOverlay.style.maxHeight = '80%';
        otherRequirementsOverlay.style.overflowY = 'auto';

        // Add the heading
        var heading = document.createElement('h2');
        heading.textContent = 'Requirements';
        heading.style.textAlign = 'center';
        heading.style.marginBottom = '15px';
        otherRequirementsOverlay.appendChild(heading);

        // Define the list of extensions and scripts with install buttons
        var requirementsList = [
            { name: '<b>ReCaptcha:</b> hektCaptcha: hCaptcha Solver', installUrl: 'https://github.com/Wikidepia/hektCaptcha-extension' },
            { name: '<b>Antibot Words:</b> AB Links Solver', installUrl: 'https://greasyfork.org/de/scripts/459453-ab-links-solver' }
        ];

        // Create a list element
        var list = document.createElement('ul');
        list.style.listStyleType = 'none';
        list.style.padding = '0';

        // Populate the list with requirements and install buttons
        requirementsList.forEach(function(requirement) {
            var listItem = document.createElement('li');

            var installButton = document.createElement('button');
            installButton.textContent = 'Install';
            installButton.addEventListener('click', function() {
                // Open a new tab with the install URL
                window.open(requirement.installUrl, '_blank');
            });

            // Create a span element for styling
            var styledText = document.createElement('span');
            styledText.innerHTML = requirement.name; // Use innerHTML to interpret HTML tags

            // Append the span and install button to the list item
            listItem.appendChild(styledText);
            listItem.appendChild(installButton);
            list.appendChild(listItem);
        });

        // Create a close button for the overlay
        var closeRequirementsButton = document.createElement('button');
        closeRequirementsButton.textContent = 'Close';
        closeRequirementsButton.style.padding = '8px';
        closeRequirementsButton.style.marginTop = '10px';
        closeRequirementsButton.addEventListener('click', function() {
            // Close the overlay when the close button is clicked
            document.body.removeChild(otherRequirementsOverlay);
        });

        // Function to save Faucetpay email
        function saveFaucetpayEmail() {
            // Save entered email address
            var newEmail = emailInput.value;
            GM_setValue('storedEmail', newEmail);

            // Success notification (can be customized)
            alert('Faucetpay email address saved successfully!');
        }

        // Add input field and label for Faucetpay email to the requirements overlay
        var emailInputLabel = document.createElement('label');
        emailInputLabel.textContent = 'Enter Faucetpay Email:';
        emailInputLabel.style.display = 'block';
        emailInputLabel.style.marginTop = '10px';

        var emailInput = document.createElement('input');
        emailInput.type = 'text';
        emailInput.id = 'emailInput';
        emailInput.placeholder = 'Faucetpay Email';
        emailInput.style.padding = '5px';
        emailInput.style.width = '100%';

        // Abrufen und Einsetzen des gespeicherten Werts
        var storedEmail = GM_getValue('storedEmail', '');
        emailInput.value = storedEmail;

        // Add "Save Faucetpay email" button to the requirements overlay
        var saveFaucetpayEmailButton = document.createElement('button');
        saveFaucetpayEmailButton.id = 'saveFaucetpayEmailButton';
        saveFaucetpayEmailButton.style.padding = '5px';
        saveFaucetpayEmailButton.style.marginTop = '5px';
        saveFaucetpayEmailButton.style.width = '100%';
        saveFaucetpayEmailButton.textContent = 'Save Faucetpay Email';

        // Add event listener for saveFaucetpayEmailButton
        saveFaucetpayEmailButton.addEventListener('click', saveFaucetpayEmail);


        // Append the list and close button to the overlay
        otherRequirementsOverlay.appendChild(list);
        // Append the input field, label, and "Save Faucetpay email" button to the requirements overlay
        otherRequirementsOverlay.appendChild(emailInputLabel);
        otherRequirementsOverlay.appendChild(emailInput);
        otherRequirementsOverlay.appendChild(saveFaucetpayEmailButton);
        otherRequirementsOverlay.appendChild(closeRequirementsButton);
        var closeButton = createCloseButton(otherRequirementsOverlay);
        otherRequirementsOverlay.appendChild(closeButton);

        // Set flag to indicate that requirements overlay is open
        isRequirementsOverlayOpen = true;

        // Add the overlay to the body
        document.body.appendChild(otherRequirementsOverlay);

        // Add an event listener to reset the flag when the overlay is closed
        otherRequirementsOverlay.addEventListener('click', function() {
            isRequirementsOverlayOpen = false;
        });
    });

    // Create a button to show stored URLs
    var showStoredUrlsButton = document.createElement('button');
    showStoredUrlsButton.id = 'showStoredUrlsButton';
    showStoredUrlsButton.style.padding = '5px';
    showStoredUrlsButton.style.marginLeft = '5px';
    showStoredUrlsButton.textContent = 'Faucetpay Rotator Sites';

    showStoredUrlsButton.addEventListener('click', function() {
        // Check if stored URLs overlay is already open
        if (isStoredUrlsOverlayOpen) {
            // Close the overlay
            closeOverlay(overlayTable);
            isStoredUrlsOverlayOpen = false;
            return;
        }
        // Display stored pages in an overlay
        var storedUrls = GM_getValue('storedUrls', []);

        // Combine stored URLs with the original URLs
        var allUrls = urls.map(function(url) {
            var storedUrlEntry = storedUrls.find(function(storedUrl) {
                return storedUrl.url === url;
            });

            return {
                url: url,
                timestamp: storedUrlEntry ? storedUrlEntry.timestamp : null
            };
        });

        // Create an overlay for the table
        var overlayTable = document.createElement('div');
        overlayTable.style.position = 'fixed';
        overlayTable.style.top = '50%';
        overlayTable.style.left = '50%';
        overlayTable.style.transform = 'translate(-50%, -50%)';
        overlayTable.style.zIndex = '10001';
        overlayTable.style.backgroundColor = '#fff';
        overlayTable.style.border = '1px solid #ddd';
        overlayTable.style.padding = '20px';
        overlayTable.style.maxHeight = '80%';
        overlayTable.style.overflowY = 'auto';

        // Add the heading for Faucetpay Rotator Sites
        var heading = document.createElement('h2');
        heading.textContent = 'Faucetpay Rotator Sites';
        heading.style.textAlign = 'center';
        heading.style.marginBottom = '15px';
        overlayTable.appendChild(heading);


        // Create a close button for the overlay
        var closeButton = document.createElement('button');
        closeButton.textContent = 'Close';
        closeButton.style.padding = '8px';
        closeButton.style.marginTop = '10px';
        closeButton.addEventListener('click', function() {
            // Close the overlay when the close button is clicked
            document.body.removeChild(overlayTable);
        });

        // Create a button to delete all stored URLs
        var deleteAllButton = document.createElement('button');
        deleteAllButton.id = 'deleteAllButton';
        deleteAllButton.style.padding = '5px';
        deleteAllButton.style.marginLeft = '5px';
        deleteAllButton.style.float = 'right'; // Align the button to the right
        deleteAllButton.textContent = 'Set All Active';

        // Add an event listener for the deleteAllButton
        deleteAllButton.addEventListener('click', function() {
            // Clear all stored URLs
            GM_deleteValue('storedUrls');

            // Refresh the table
            showStoredUrlsButton.click();
        });

        // Create a table element
        var table = document.createElement('table');
        table.style.borderCollapse = 'collapse';
        table.style.width = '100%';

        // Create table headers
        var headers = ['Connect', 'URL', 'Status', 'Delete'];
        var headerRow = table.insertRow();
        for (var i = 0; i < headers.length; i++) {
            var headerCell = headerRow.insertCell(i);
            headerCell.style.border = '1px solid #ddd';
            headerCell.style.padding = '8px';
            headerCell.style.textAlign = 'left';
            headerCell.textContent = headers[i];

            // Add click event for sorting
            if (i === 1 || i === 2) {
                headerCell.addEventListener('click', function() {
                    sortTable(table, this.cellIndex);
                });
            }
        }

        // Populate table with all URLs, timestamps, and delete buttons
        for (var j = 0; j < allUrls.length; j++) {
            var urlEntry = allUrls[j];
            var row = table.insertRow();

            // Add "Connect" button to each row
            var connectCell = row.insertCell(0);
            connectCell.style.border = '1px solid #ddd';
            connectCell.style.padding = '8px';

            var connectButton = document.createElement('button');
            connectButton.textContent = 'Connect';
            connectButton.addEventListener('click', createConnectHandler(urlEntry.url)); // Attach a handler with the URL
            connectCell.appendChild(connectButton);

            var urlCell = row.insertCell(1);
            urlCell.style.border = '1px solid #ddd';
            urlCell.style.padding = '8px';
            urlCell.textContent = urlEntry.url;

            var statusCell = row.insertCell(2);
            statusCell.style.border = '1px solid #ddd';
            statusCell.style.padding = '8px';
            statusCell.style.color = getStatusColor(urlEntry);
            statusCell.textContent = getStatusText(urlEntry);

            var deleteCell = row.insertCell(3);
            deleteCell.style.border = '1px solid #ddd';
            deleteCell.style.padding = '8px';

            // Create delete button for each row
            var deleteButton = document.createElement('button');
            deleteButton.textContent = 'Set Active';
            deleteButton.addEventListener('click', createDeleteHandler(urlEntry));

            deleteCell.appendChild(deleteButton);
        }

        // Append the table and close button to the overlay
        overlayTable.appendChild(table);
        overlayTable.appendChild(closeButton);
        overlayTable.appendChild(deleteAllButton);
        var closeButtontop = createCloseButton(overlayTable);
        overlayTable.appendChild(closeButtontop);

        // Set flag to indicate that stored URLs overlay is open
        isStoredUrlsOverlayOpen = true;

        // Add the overlay to the body
        document.body.appendChild(overlayTable);

        // Add an event listener to reset the flag when the overlay is closed
        overlayTable.addEventListener('click', function() {
            isStoredUrlsOverlayOpen = false;
        });
    });

    // Function to close the overlay
    function closeOverlay(overlay) {
        // Close the overlay when the close button is clicked
        document.body.removeChild(overlay);
    }

    // Funktion zum Erstellen des "X"-Buttons
    function createCloseButton(overlay) {
        var closeButton = document.createElement('button');
        closeButton.innerHTML = 'X';
        closeButton.style.position = 'absolute';
        closeButton.style.top = '5px';
        closeButton.style.right = '5px';
        closeButton.style.padding = '5px';
        closeButton.style.cursor = 'pointer';
        closeButton.addEventListener('click', function() {
            // Rufe die Funktion zum Schließen des Overlays auf
            closeOverlay(overlay);
        });
        return closeButton;
    }

    // Function to get the status text based on the urlEntry
    function getStatusText(urlEntry) {
        var currentTime = Date.now();

        if (urlEntry.timestamp) {
            var timestamp = Date.parse(urlEntry.timestamp.replace(/-/g, '/'));
            if (timestamp > currentTime) {
                // Not Active Until
                return 'Not Active Until ' + urlEntry.timestamp;
            } else {
                // Active
                return 'Active';
            }
        } else {
            return 'Active';
        }
    }

    // Function to get the status color based on the urlEntry
    function getStatusColor(urlEntry) {
        var currentTime = Date.now();

        if (urlEntry.timestamp) {
            var timestamp = Date.parse(urlEntry.timestamp.replace(/-/g, '/'));
            return (timestamp > currentTime) ? 'red' : 'green';
        } else {
            return 'green'; // Assuming 'Active' state when timestamp is not present
        }
    }

    // Function to create a delete handler with a specific urlEntry
    function createDeleteHandler(urlEntry) {
        return function() {
            // Find the corresponding URL and delete it from stored pages
            var urlToDelete = urlEntry.url;
            var storedUrls = GM_getValue('storedUrls', []);
            storedUrls = storedUrls.filter(function(storedUrl) {
                return storedUrl.url !== urlToDelete;
            });

            // Update stored pages
            GM_setValue('storedUrls', storedUrls);

            // Refresh the table
            showStoredUrlsButton.click();
        };
    }

    // Function to create a connect handler with a specific URL
    function createConnectHandler(url) {
        return function() {
            // Redirect to the selected URL
            window.open(url, '_blank');
        };
    }

    // Function to sort the table by column index
    function sortTable(table, columnIndex) {
        var rows = Array.from(table.rows).slice(1); // Exclude header row
        var sortOrder = 1;

        // Determine sorting order based on the current order of the column
        if (table.rows[0].cells[columnIndex].classList.contains('ascending')) {
            sortOrder = -1;
        }

        // Remove sorting classes from all columns
        for (var i = 0; i < table.rows[0].cells.length; i++) {
            table.rows[0].cells[i].classList.remove('ascending', 'descending');
        }

        // Sort the rows based on the content of the selected column
        rows.sort(function(a, b) {
            var textA = a.cells[columnIndex].textContent.trim().toUpperCase();
            var textB = b.cells[columnIndex].textContent.trim().toUpperCase();

            if (textA < textB) {
                return -1 * sortOrder;
            } else if (textA > textB) {
                return 1 * sortOrder;
            } else {
                return 0;
            }
        });

        // Clear and rebuild the table with the sorted rows
        while (table.rows.length > 1) {
            table.deleteRow(1);
        }

        for (var j = 0; j < rows.length; j++) {
            table.appendChild(rows[j]);
        }

        // Add sorting class to the header cell
        if (sortOrder === 1) {
            table.rows[0].cells[columnIndex].classList.add('ascending');
        } else {
            table.rows[0].cells[columnIndex].classList.add('descending');
        }
    }

    const websites = [
        { name: 'Freebitco.in - Claim/1000% BTC Bonus/WoF', url: 'https://freebitco.in', active: GM_getValue('Freebitco.in', true), script: freebitcoScript },
        { name: 'Dutchycorp - Claim/PTC', url: 'https://autofaucet.dutchycorp.space', active: GM_getValue('Dutchycorp', true), script: dutchycorpScript },
        { name: 'CF Freebitcoin - Shortlinks', url: 'https://app.freebitcoin.io', active: GM_getValue('CF Freebitcoin', true), script: CFfaucetsScript },
        { name: 'CF Freebinancecoin - Shortlinks', url: 'https://app.freebinancecoin.com', active: GM_getValue('CF Freebinancecoin', true), script: CFfaucetsScript },
        { name: 'CF Freedoge - Shortlinks', url: 'https://app.free-doge.com', active: GM_getValue('CF Freedoge', true), script: CFfaucetsScript },
        { name: 'CF Freetether - Shortlinks', url: 'https://app.freetether.com', active: GM_getValue('CF Freetether', true), script: CFfaucetsScript },
        { name: 'CF Freecardano - Shortlinks', url: 'https://app.freecardano.com', active: GM_getValue('CF Freecardano', true), script: CFfaucetsScript },
        { name: 'CF Freedash - Shortlinks', url: 'https://app.freedash.io', active: GM_getValue('CF Freedash', true), script: CFfaucetsScript },
        { name: 'CF Freeethereum - Shortlinks', url: 'https://app.freeethereum.com', active: GM_getValue('CF Freeethereum', true), script: CFfaucetsScript },
        { name: 'CF Freebfg - Shortlinks', url: 'https://app.freebfg.com', active: GM_getValue('CF Freebfg', true), script: CFfaucetsScript },
        { name: 'CF Freebittorrent - Shortlinks', url: 'https://app.freebittorrent.com', active: GM_getValue('CF Freebittorrent', true), script: CFfaucetsScript },
        { name: 'CF Freepancake - Shortlinks', url: 'https://app.freepancake.com', active: GM_getValue('CF Freepancake', true), script: CFfaucetsScript },
        { name: 'CF Freematic - Shortlinks', url: 'https://app.freematic.com', active: GM_getValue('CF Freematic', true), script: CFfaucetsScript },
        { name: 'CF Freeshibainu - Shortlinks', url: 'https://app.freeshibainu.com', active: GM_getValue('CF Freeshibainu', true), script: CFfaucetsScript },
        { name: 'CF Coinfaucet - Shortlinks', url: 'https://app.coinfaucet.io', active: GM_getValue('CF Coinfaucet', true), script: CFfaucetsScript },
        { name: 'CF Freenem - Shortlinks', url: 'https://app.freenem.com', active: GM_getValue('CF Freenem', true), script: CFfaucetsScript },
        { name: 'CF Freeusdcoin - Shortlinks', url: 'https://app.freeusdcoin.com', active: GM_getValue('CF Freeusdcoin', true), script: CFfaucetsScript },
        { name: 'CF Free-tron - Shortlinks', url: 'https://app.free-tron.com', active: GM_getValue('CF Free-tron', true), script: CFfaucetsScript },
        { name: 'CF Freesteam - Shortlinks', url: 'https://app.freesteam.io', active: GM_getValue('CF Freesteam', true), script: CFfaucetsScript },
        { name: 'CF Freeneo - Shortlinks', url: 'https://app.freeneo.io', active: GM_getValue('CF Freeneo', true), script: CFfaucetsScript },
        { name: 'CF Free-ltc - Shortlinks', url: 'https://app.free-ltc.com', active: GM_getValue('CF Free-ltc', true), script: CFfaucetsScript },
        { name: 'CF Freecryptom - Shortlinks', url: 'https://app.freecryptom.com', active: GM_getValue('CF Freecryptom', true), script: CFfaucetsScript }
        // Add more websites if needed
    ];


    // Create the menu
    const menu = document.createElement('div');
    menu.style.position = 'fixed';
    menu.style.bottom = '50px';
    menu.style.left = '50%'; // Setze den linken Rand auf 50%
    menu.style.transform = 'translateX(-50%)'; // Zentriere das Menü
    menu.style.backgroundColor = '#fff';
    menu.style.padding = '10px';
    menu.style.border = '1px solid #ccc';
    menu.style.display = 'none';
    menu.style.zIndex = '9999';
    menu.style.maxHeight = '300px'; // Zum Beispiel, setze die maximale Höhe auf 300px
    menu.style.overflowY = 'auto'; // Aktiviere das vertikale Scrollen, falls benötigt

    // Create buttons for each website with activation status
    websites.forEach(website => {
        const button = document.createElement('button');
        button.textContent = website.name + (website.active ? ' (Activated)' : ' (Deactivated)');
        button.style.display = 'block';
        button.style.marginBottom = '5px';
        button.style.zIndex = '9999';

        // Click event for left-click (opens the URL)
        button.addEventListener('click', (event) => {
            if (event.button === 0) {
                openWebsite(website.url);
            }
        });

        // Context menu for right-click (activates/deactivates)
        button.addEventListener('contextmenu', (event) => {
            event.preventDefault();
            website.active = !website.active;
            GM_setValue(website.name, website.active);
            button.textContent = website.name + (website.active ? ' (Activated)' : ' (Deactivated)');
        });

        menu.appendChild(button);
    });

    // Create the main button
    const mainButton = document.createElement('button');
    mainButton.textContent = "Faucet Monitor";
    mainButton.style.position = 'fixed';
    mainButton.style.bottom = '10px';
    mainButton.style.left = '50%'; // Setze den linken Rand auf 50%
    mainButton.style.transform = 'translateX(-50%)'; // Zentriere den Button
    mainButton.style.padding = '10px';
    mainButton.style.zIndex = '9999';

    // Show/hide the dropdown menu when the advertisement button is clicked
    mainButton.addEventListener('click', () => {
        if (menu.style.display === 'none') {
            menu.style.display = 'block';
        } else {
            menu.style.display = 'none';
        }
    });

    // Close the menu when a link is clicked
    menu.addEventListener('click', (event) => {
        if (event.target.tagName === 'BUTTON') {
            menu.style.display = 'none';
        }
    });

    // Create the advertisement button
    const advertisementButton = document.createElement('button');
    advertisementButton.textContent = 'Advertisement';
    advertisementButton.style.position = 'fixed';
    advertisementButton.style.bottom = '10px';
    advertisementButton.style.left = '10px';
    advertisementButton.style.padding = '7px'; // Kleinerer Padding-Wert für einen kleineren Button
    advertisementButton.style.fontSize = '14px'; // Kleinerer Schriftgröße für den kleineren Button
    advertisementButton.style.zIndex = '9999';

    // Create the dropdown menu for the advertisement
    const advertisementDropdown = document.createElement('div');
    advertisementDropdown.style.position = 'absolute';
    advertisementDropdown.style.display = 'none';
    advertisementDropdown.style.bottom = '50px'; // Anpassung der Position des Dropdown-Menüs
    advertisementDropdown.style.left = '10px';
    advertisementDropdown.style.backgroundColor = '#fff';
    advertisementDropdown.style.border = '1px solid #ccc';
    advertisementDropdown.style.padding = '5px'; // Anpassung des Padding-Werts für das Dropdown-Menü
    advertisementDropdown.style.fontSize = '14px'; // Anpassung der Schriftgröße für das Dropdown-Menü
    advertisementDropdown.style.zIndex = '9999';

    // Define the advertisement links
    const advertisementLinks = [
        { name: 'Free Cash', url: 'https://freecash.com/r/91a3b4d34b' },
        // Add more advertisement links as needed
    ];

    // Populate the dropdown menu with advertisement links
    advertisementLinks.forEach(advertisement => {
        const linkItem = document.createElement('div');
        linkItem.textContent = advertisement.name;
        linkItem.style.cursor = 'pointer';
        linkItem.addEventListener('click', () => {
            openWebsite(advertisement.url);
            advertisementDropdown.style.display = 'none'; // Hide the dropdown after clicking a link
        });
        advertisementDropdown.appendChild(linkItem);
    });

    // Show/hide the dropdown menu when the advertisement button is clicked
    advertisementButton.addEventListener('click', () => {
        if (advertisementDropdown.style.display === 'none') {
            advertisementDropdown.style.display = 'block';
        } else {
            advertisementDropdown.style.display = 'none';
        }
    });

    // About overlay content
    var aboutContent = `
    <h2>About Faucet Monitor with Faucetpay Rotator</h2>
    <p>This Faucet Monitor is a tool designed to help users manage and monitor various faucets and rotator sites efficiently.</p>
    <p>Developed by Andrewblood.</p>
`;

    // Create About button
    var aboutButton = document.createElement('button');
    aboutButton.textContent = 'About';
    aboutButton.style.padding = '5px';
    aboutButton.style.marginLeft = '5px';

    // Event listener for About button
    aboutButton.addEventListener('click', function() {
        // Create overlay for About
        var aboutOverlay = document.createElement('div');
        aboutOverlay.style.position = 'fixed';
        aboutOverlay.style.top = '50%';
        aboutOverlay.style.left = '50%';
        aboutOverlay.style.transform = 'translate(-50%, -50%)';
        aboutOverlay.style.zIndex = '10001';
        aboutOverlay.style.backgroundColor = '#fff';
        aboutOverlay.style.border = '1px solid #ddd';
        aboutOverlay.style.padding = '20px';
        aboutOverlay.style.maxHeight = '80%';
        aboutOverlay.style.overflowY = 'auto';

        // Add content to About overlay
        aboutOverlay.innerHTML = aboutContent;

        // Create close button for About overlay
        var closeButton = createCloseButton(aboutOverlay);
        aboutOverlay.appendChild(closeButton);

        // Add About overlay to the body
        document.body.appendChild(aboutOverlay);
    });





    // Add elements to the overlay
    overlay.appendChild(showStoredUrlsButton);
    overlay.appendChild(otherRequirementsButton);
    // Add About button to overlay
    overlay.appendChild(aboutButton);
    // Add overlay to the body
    document.body.appendChild(overlay);
    // Add buttons to the document
    document.body.appendChild(menu);
    document.body.appendChild(mainButton);
    // Add the advertisement button and dropdown menu to the document
    document.body.appendChild(advertisementButton);
    document.body.appendChild(advertisementDropdown);



    var currentURL = window.location.href;
    if (currentURL.includes("https://sollcrypto.com/home/page/") || currentURL.includes("https://cryptoclaps.com/earn/") || currentURL.includes("https://baltoniearn.com/claim/tron/") || currentURL.includes("https://vptron.online/TRX/") || currentURL.includes("https://claimcoins.site/reward/") || currentURL.includes("https://bnbminers.site/earns/") || currentURL.includes("https://ltcmines.site/earns/") || currentURL.includes("https://tronxminer.com/rewards/") || currentURL.includes("https://etcoin.site/earn/")) {

        setTimeout(function () {
            location.reload();
        }, 330000);

        var currentPageUrl = window.location.href;

        var indexOfRParameter = currentPageUrl.indexOf("?r=");
        if (indexOfRParameter !== -1) {
            currentPageUrl = currentPageUrl.substring(0, indexOfRParameter);
        }

        var storedUrls = GM_getValue('storedUrls', []) || [];

        // Erster Selector: The faucet does not have sufficient funds for this transaction
        var selector1 = ".alert.alert-danger.fade.show";
        if (isElementVisible(selector1) && document.querySelector(selector1)?.innerText === ' The faucet does not have sufficient funds for this transaction.') {
            var reason1 = 'sufficient funds';
            var timestamp1 = new Date(new Date().getTime() + 24 * 60 * 60 * 1000).toISOString().slice(0, 19).replace('T', ' ');
            saveUrl(currentPageUrl, timestamp1, reason1);
        }

        // Zweiter Selector: Your daily claim limit has been reached. Please come back in tomorrow.
        var selector2 = ".alert.alert-danger.fade.show";
        if (isElementVisible(selector2) && document.querySelector(selector2)?.innerText === ' Your daily claim limit has been reached. Please come back in tomorrow.') {
            var reason2 = 'daily claim limit';
            // Berechne die Zeit für den nächsten Tag um 01:00 Uhr
            var tomorrow = new Date();
            tomorrow.setDate(tomorrow.getDate() + 1);
            tomorrow.setHours(2, 0, 0, 0);
            var timestamp2 = tomorrow.toISOString().slice(0, 19).replace('T', ' ');
            saveUrl(currentPageUrl, timestamp2, reason2);
        }

        function saveUrl(url, timestamp, reason) {
            var urlWithTimestamp = { url: url, timestamp: timestamp, reason: reason };

            var existingUrlIndex = storedUrls.findIndex(function (storedUrl) {
                return storedUrl.url === url;
            });

            if (existingUrlIndex !== -1) {
                storedUrls[existingUrlIndex].timestamp = timestamp;
                storedUrls[existingUrlIndex].reason = reason;
            } else {
                storedUrls.push(urlWithTimestamp);
            }

            GM_setValue('storedUrls', storedUrls);
        }

        // Check if the element with the text "satoshi" or specific error messages is visible
        if ((isElementVisible(".alert.alert-success.fade.show") &&
             document.querySelector(".alert.alert-success.fade.show").innerText.includes('satoshi')) ||
            (isElementVisible(".alert.alert-danger.fade.show") &&
             document.querySelector(".alert.alert-danger.fade.show").innerText === ' The faucet does not have sufficient funds for this transaction.') ||
            (isElementVisible(".alert.alert-danger.fade.show") &&
             document.querySelector(".alert.alert-danger.fade.show").innerText === ' Session invalid, try again') ||
            (isElementVisible(".alert.alert-danger.fade.show") &&
             document.querySelector(".alert.alert-danger.fade.show").innerText === ' Your daily claim limit has been reached. Please come back in tomorrow.')) {
            // Vorhandene URLs mit Timestamps
            var storedUrls = GM_getValue('storedUrls', []) || [];
            // Funktion zum Überprüfen und Verbinden mit der nächsten gültigen URL
            function checkAndConnectNextUrl() {
                // Aktuelle URL ohne den Referral-Code
                var currentUrl = window.location.href.includes('?r=') ? window.location.href.split('?r=')[0] : window.location.href;

                console.log("Current URL:", currentUrl);

                // Suche nach der Position der aktuellen URL in der Liste
                var currentIndex = urls.indexOf(currentUrl);

                console.log("Current Index:", currentIndex);

                var validUrlFound = false;

                // Überprüfe die nächste URL in der Liste
                for (var i = currentIndex + 1; i < currentIndex + urls.length; i++) {
                    var nextUrl = urls[i % urls.length]; // Modulo verwendet, um wieder von vorne zu beginnen

                    console.log("Checking next URL:", nextUrl);

                    // Überprüfe, ob die URL bereits in storedUrls vorhanden ist
                    var storedUrlInfo = storedUrls.find(function (storedUrl) {
                        return storedUrl.url === nextUrl;
                    });

                    console.log("Stored URL Info:", storedUrlInfo);

                    // Wenn die URL nicht in storedUrls vorhanden ist oder das Datum in der Zukunft liegt
                    if (!storedUrlInfo || new Date() > new Date(storedUrlInfo.timestamp)) {
                        // Verbinde mit der gültigen URL
                        console.log("Connecting to the next valid URL:", nextUrl);

                        // Führe hier deine Verbindungslogik durch
                        window.location.href = nextUrl;

                        // Markiere, dass eine gültige URL gefunden wurde
                        validUrlFound = true;

                        // Verlasse die Schleife, da eine gültige URL gefunden wurde
                        break;
                    }
                }

                // Wenn keine gültige URL gefunden wurde, zeige einen Alert
                if (!validUrlFound) {
                    alert("All sites are empty or daily limit reached. Please start the script tomorrow again. You can also change the Faucetpay E-Mail and set all a new time Active");
                    // Schließe das Fenster nach 3 Sekunden (3000 Millisekunden)
                }
            }

            // Beispielaufruf der Funktion
            checkAndConnectNextUrl();
        } else {
            // Element is not visible, so proceed with the actions
            // Check if the Referral Code is in the URL, if not, add it
            var currentURL = window.location.href;
            var referralCode = '[email protected]';

            if (!currentURL.includes(referralCode)) {
                currentURL += referralCode;
                window.location.href = currentURL; // Redirect with the updated URL
            } else {
                // Continue with actions as the Referral Code is already present
                // If the Faucetpay email field is found, fill it with the saved email address
                var faucetpayEmailInput = document.querySelector("#address");
                if (faucetpayEmailInput) {
                    // Abrufen und Einsetzen des gespeicherten Werts
                    var storedEmail = GM_getValue('storedEmail', '');
                    faucetpayEmailInput.value = storedEmail;

                    var loginbutton = document.querySelectorAll('button[data-target="#captchaModal"]');
                    loginbutton[0].click();

                    if (document.querySelector("#captchaModal").innerText.includes('AntiBot links')) {
                        // Check if the pop-up/overlay appears and click the login button if conditions are met
                        var intervalId = setInterval(function() {
                            var antibotLinksValue = document.querySelector("#antibotlinks").value.length;
                            var recaptchaResponseValue = document.querySelector("#g-recaptcha-response").value.length;

                            if (antibotLinksValue > 1 && recaptchaResponseValue > 1) {
                                clearInterval(intervalId);

                                // Click the login button
                                clickButton("#login");
                            }
                        }, 1000);
                    } else {
                        // Check if the pop-up/overlay appears and click the login button if conditions are met
                        var intervalId2 = setInterval(function() {
                            var recaptchaResponseValue = document.querySelector("#g-recaptcha-response").value.length;

                            if (recaptchaResponseValue > 1) {
                                clearInterval(intervalId2);

                                // Click the login button
                                clickButton("#login");
                            }
                        }, 1000);
                    }
                }

            }
        }
    }



    function freebitcoScript() {
        if (window.location.href.includes("https://freebitco.in/signup/?op=s")) {
            if (window.location.href != ("https://freebitco.in/signup/?op=s&r=3595810")) {
                window.location.replace("https://freebitco.in/signup/?op=s&r=3595810");
            }
        }

        if (window.location.href.includes("https://freebitco.in/?op=home")) {
            if (document.querySelector("#free_play_form_button").style.display == "none") {
                console.log("Wait for next Roll.");
                setTimeout(function() {
                    window.close();
                }, 1000 * 30);
            } else {
                if (document.querySelector("#free_wof_spins_msg > a:nth-child(3)")) {
                    console.log("Make the WoF Spins.");
                    window.open("https://freebitco.in/static/html/wof/wof-premium.html");
                }
                console.log("Let's look for Bonus");
                document.querySelector("body > div.large-12.fixed > div > nav > section > ul > li:nth-child(8) > a").click();
                document.querySelector("#rewards_tab > div.row.reward_category_container_main_div > div > div:nth-child(4) > div.reward_category_name").click();
                setTimeout(function() {
                    var yourrwp = parseFloat(document.querySelector("#rewards_tab > div:nth-child(2) > div > div.reward_table_box.br_0_0_5_5.user_reward_points.font_bold").innerText.replace(/,/, ''));
                    console.log("Your current Reward Points are:");
                    console.log(yourrwp);
                    var bonuscost = parseFloat(document.querySelector("#fp_bonus_rewards > div:nth-child(2) > div:nth-child(2) > div.large-6.small-12.columns > div").innerText.replace(/,/, ''));
                    console.log("The Price for 1000% BTC-Bonus is:");
                    console.log(bonuscost);
                    if (yourrwp > bonuscost) {
                        document.querySelector("#fp_bonus_rewards > div:nth-child(2) > div:nth-child(2) > div:nth-child(3) > button").click();
                    } else {
                        console.log("Your balance is too low to buy.");
                    }
                    document.querySelector("#free_play_link_li > a").click();
                }, 1000 * 5);

                // Make the Roll
                setTimeout(function() {
                    if (document.querySelector("#anchor")) {
                        console.log("Wait for Captcha and.....");

                        if (isCaptchaChecked()) {
                            document.querySelector("#free_play_form_button").click();
                            setTimeout(function() {
                                window.close();
                            }, 1000 * 30);
                        }
                    } else {
                        document.querySelector("#free_play_form_button").click();
                        setTimeout(function() {
                            window.close();
                        }, 1000 * 10);
                    }
                }, 1000 * 10);
            }
        }

        if (window.location.href.includes("https://freebitco.in/static/html/wof/wof-premium.html")) {
            setTimeout(function() {
                document.querySelector("#wofc-section > div > div.wofc-spins > p > button:nth-child(2)").click();
            }, 1000 * 10);
            setTimeout(function() {
                window.close();
            }, 1000 * 30);
        }
    }

    function dutchycorpScript() {
        if (window.location.href == "https://autofaucet.dutchycorp.space/signup.php") {
            if (window.location.href != "https://autofaucet.dutchycorp.space/signup.php?r=Andrewblood&s=Script") {
                window.location.replace("https://autofaucet.dutchycorp.space/signup.php?r=Andrewblood&s=Script");
            }
        }

        if (window.location.href.indexOf('login') === -1 && window.location.href.indexOf('register') === -1) {

            // Überprüfe, ob ein Wert im TamperMonkey-Speicher gespeichert ist
            var isRecaptchaEnabled = GM_getValue('recaptchaStatus');

            // Wenn ein Wert im TamperMonkey-Speicher gespeichert ist
            if (isRecaptchaEnabled) {
                runScript();
            } else {
                // Überprüfe, ob wir uns bereits auf der Account-Seite befinden
                if (window.location.href !== 'https://autofaucet.dutchycorp.space/account.php') {
                    // Navigiere zur Seite für die Einstellungen
                    window.location.href = 'https://autofaucet.dutchycorp.space/account.php';
                } else {
                    // Hier werden die Einstellungen vorgenommen und gespeichert
                    document.querySelector("#methods > form > font > form:nth-child(16) > div > input").click();
                    // Finde das Select-Element
                    var selectElement = document.querySelector('select[name="captcha"]');

                    // Überprüfe, ob das Select-Element gefunden wurde
                    if (selectElement) {
                        // Iteriere über alle Optionen im Select-Element
                        var options = selectElement.options;
                        for (var i = 0; i < options.length; i++) {
                            // Überprüfe den Wert der Option
                            if (options[i].value === '3') { // Wert '3' entspricht Recaptcha
                                // Wähle die entsprechende Option aus
                                options[i].selected = true;
                                // Triggere ein "change"-Event, falls nötig
                                var event = new Event('change');
                                selectElement.dispatchEvent(event);
                                break; // Beende die Schleife, wenn die Option gefunden wurde
                            }
                        }
                    }
                    // Aktualisiere das Captcha-Formular, um die Änderung zu speichern
                    var updateButton = document.querySelector('button[name="change-captcha"]');
                    updateButton.click();

                    // Speichere den Wert im TamperMonkey-Speicher
                    GM_setValue('recaptchaStatus', 'enabled');
                }
            }

            // Funktion zum Ausführen des Skripts
            function runScript() {
                setTimeout(function(){
                    location.reload();
                }, 180000);

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/account.php")) {
                    window.location.replace("https://autofaucet.dutchycorp.space/dashboard.php");
                }

                if (window.location.href == "https://autofaucet.dutchycorp.space/dashboard.php") {
                    window.location.replace("https://autofaucet.dutchycorp.space/roll.php");
                }

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/roll.php")) {
                    if (!document.querySelector("#timer")) {
                        setInterval(function() {
                            if (isCaptchaChecked()) {
                                if (document.querySelector(".boost-btn.unlockbutton")) {
                                    document.querySelector(".boost-btn.unlockbutton").click();
                                }
                                if (visibleCheck(document.querySelector("#claim_boosted"))) {
                                    document.querySelector("#claim_boosted").click();
                                }
                            }
                        }, 5000);
                    } else {
                        setTimeout(function() {
                            window.location.replace("https://autofaucet.dutchycorp.space/coin_roll.php");
                        }, 5000);
                    }
                }

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/coin_roll.php")) {
                    if (!document.querySelector("#timer")) {
                        setInterval(function() {
                            if (isCaptchaChecked()) {
                                if (document.querySelector(".boost-btn.unlockbutton")) {
                                    document.querySelector(".boost-btn.unlockbutton").click();
                                }
                                if (visibleCheck(document.querySelector("#claim_boosted"))) {
                                    document.querySelector("#claim_boosted").click();
                                }
                            }
                        }, 5000);
                    } else {
                        setTimeout(function() {
                            window.location.replace("https://autofaucet.dutchycorp.space/ptc/wall.php");
                        }, 5000);
                    }
                }

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/ptc/wall.php")) {
                    var wallLink = document.querySelectorAll(".col.s10.m6.l4 a[name='claim']");
                    if (wallLink.length >= 1) {
                        wallLink[0].style.backgroundColor = "red";
                        let match = wallLink[0].onmousedown.toString().match(/'href', '(.+)'/);
                        let hrefValue = match[1];
                        setTimeout(function() {
                            window.location.replace("https://autofaucet.dutchycorp.space" + hrefValue);
                        }, 5000);
                    } else {
                        setTimeout(function() {
                            window.location.replace("https://autofaucet.dutchycorp.space/ptc/");
                        }, 5000);
                    }
                }

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/ptc/view")) {
                    setInterval(function() {
                        if (document.querySelector("#sec").innerText === 'Payout in  0 seconds') {
                            document.getElementsByClassName("g-recaptcha bordeaux-btn btn-small waves-effect waves-red")[0].click();
                            setTimeout(function() {
                                console.log("Wait for Captcha");
                            }, 30000);
                        } else {
                            console.log("Wait on timer.");
                        }
                    }, 5000);
                }

                if (window.location.href == "https://autofaucet.dutchycorp.space/ptc/") {
                    setInterval(function() {
                        if (document.querySelector("body > div.col.s12 > div.row > div.col.s12.m12.l10 > center:nth-child(1) > h4")) {
                            if (document.querySelector("body > div.col.s12 > div.row > div.col.s12.m12.l10 > center:nth-child(1) > h4").innerText == ' All Available Ads Watched') {
                                window.close();
                            }
                        } else if (visibleCheck(document.getElementsByClassName("g-recaptcha gradient-btn btn-small waves-effect waves-purple")[0])) {
                            document.getElementsByClassName("g-recaptcha gradient-btn btn-small waves-effect waves-purple")[0].click();

                        } else {
                            console.log("Wait on timer.");
                        }
                    }, 5000);
                }
            }

        }
    }

    function CFfaucetsScript() {
        if(window.location.href == ("https://freebitcoin.io/")){
            if(window.location.href != ("https://freebitcoin.io/?ref=804096")){
                window.location.replace("https://freebitcoin.io/?ref=804096")
            }
        }
        if(window.location.href == ("https://freebinancecoin.com/")){
            if(window.location.href != ("https://freebinancecoin.com/?ref=418938")){
                window.location.replace("https://freebinancecoin.com/?ref=418938")
            }
        }
        if(window.location.href === ("https://free-doge.com/")){
            if(window.location.href !== ("https://free-doge.com/?ref=334834")){
                window.location.replace("https://free-doge.com/?ref=334834")
            }
        }
        if(window.location.href == ("https://freeusdcoin.com/")){
            if(window.location.href != ("https://freeusdcoin.com/?ref=237334")){
                window.location.replace("https://freeusdcoin.com/?ref=237334")
            }
        }
        if(window.location.href == ("https://freecryptom.com/")){
            if(window.location.href != ("https://freecryptom.com/?ref=145077")){
                window.location.replace("https://freecryptom.com/?ref=145077")
            }
        }
        if(window.location.href == ("https://free-ltc.com/")){
            if(window.location.href != ("https://free-ltc.com/?ref=278353")){
                window.location.replace("https://free-ltc.com/?ref=278353")
            }
        }
        if(window.location.href == ("https://freedash.io/")){
            if(window.location.href != ("https://freedash.io/?ref=241665")){
                window.location.replace("https://freedash.io/?ref=241665")
            }
        }
        if(window.location.href == ("https://freeneo.io/")){
            if(window.location.href != ("https://freeneo.io/?ref=172683")){
                window.location.replace("https://freeneo.io/?ref=172683")
            }
        }
        if(window.location.href == ("https://freecardano.com/")){
            if(window.location.href != ("https://freecardano.com/?ref=495783")){
                window.location.replace("https://freecardano.com/?ref=495783")
            }
        }
        if(window.location.href == ("https://freebfg.com/")){
            if(window.location.href != ("https://freebfg.com/?ref=34816")){
                window.location.replace("https://freebfg.com/?ref=34816")
            }
        }
        if(window.location.href == ("https://freepancake.com/")){
            if(window.location.href != ("https://freepancake.com/?ref=63758")){
                window.location.replace("https://freepancake.com/?ref=63758")
            }
        }
        if(window.location.href == ("https://freebittorrent.com/")){
            if(window.location.href != ("https://freebittorrent.com/?ref=33463")){
                window.location.replace("https://freebittorrent.com/?ref=33463")
            }
        }
        if(window.location.href == ("https://coinfaucet.io/")){
            if(window.location.href != ("https://coinfaucet.io/?ref=966105")){
                window.location.replace("https://coinfaucet.io/?ref=966105")
            }
        }
        if(window.location.href == ("https://freematic.com/")){
            if(window.location.href != ("https://freematic.com/?ref=102515")){
                window.location.replace("https://freematic.com/?ref=102515")
            }
        }
        if(window.location.href == ("https://freetether.com/")){
            if(window.location.href != ("https://freetether.com/?ref=353801")){
                window.location.replace("https://freetether.com/?ref=353801")
            }
        }
        if(window.location.href == ("https://freesteam.io/")){
            if(window.location.href != ("https://freesteam.io/?ref=190554")){
                window.location.replace("https://freesteam.io/?ref=190554")
            }
        }
        if(window.location.href == ("https://freenem.com/")){
            if(window.location.href != ("https://freenem.com/?ref=367461")){
                window.location.replace("https://freenem.com/?ref=367461")
            }
        }
        if(window.location.href == ("https://freeshibainu.com/")){
            if(window.location.href != ("https://freeshibainu.com/?ref=206136")){
                window.location.replace("https://freeshibainu.com/?ref=206136")
            }
        }
        if(window.location.href == ("https://free-tron.com/")){
            if(window.location.href != ("https://free-tron.com/?ref=526291")){
                window.location.replace("https://free-tron.com/?ref=526291")
            }
        }
        if(window.location.href == ("https://freeethereum.com/")){
            if(window.location.href != ("https://freeethereum.com/?ref=430971")){
                window.location.replace("https://freeethereum.com/?ref=430971")
            }
        }



        setInterval(function() {
            if (window.location.href.includes("free-rolls")) {
                setTimeout(function(){
                    window.location.replace("promotion/csw1td1eqp");
                }, 5000);
            }
        }, 1000);

        if (window.location.href.includes("csw1td1eqp")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.location.replace("q5rlm6ot3r")
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }

        if (window.location.href.includes("q5rlm6ot3r")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.location.replace("ykxlvmg9ja")
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }

        if (window.location.href.includes("ykxlvmg9ja")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.location.replace("ki2r0jq5r0")
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }

        if (window.location.href.includes("ki2r0jq5r0")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.location.replace("n6kr3x7p5u")
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }

        if (window.location.href.includes("n6kr3x7p5u")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.location.replace("5g57e0vksm")
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }

        if (window.location.href.includes("5g57e0vksm")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.close()
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }
    }





    websites.forEach(website => {
        if (website.active && window.location.href.includes(website.url)) {
            website.script();
        }
    });

})();