مخفی سازی متن ها در این کد توی وب عمل نمیکنه اما وقتی توی برنامه موبایل قرار میدم عمل می‌کنه <p>&nbsp;</p>
<style>
    /* تنظیمات پایه برای body و html */
    html, body {
        margin: 0;
        padding: 0;
        height: 100%;
        overflow: hidden;
        background-color: #f0f0f0;
        font-family: Arial, sans-serif;
    }

    /* متغیر CSS برای ارتفاع نمایشگر */
    :root {
        --vh: 100%;
    }

    /* حالت عادی */
    .iframe-container.normal {
        position: relative;
        width: 100%;
        height: 100vh;
        overflow: hidden;
    }

    .iframe-container.normal iframe {
        width: 100%;
        height: 100%;
        border: none;
        display: none;
        position: relative;
        top: 0;
    }

    /* حالت تمام صفحه */
    .iframe-container.fullscreen {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: calc(var(--vh) * 100);
        overflow: hidden;
        z-index: 1;
    }

    .iframe-container.fullscreen iframe {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        border: none;
        display: block;
    }

    /* استایل‌های مشترک */
    .loading {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        display: flex;
        flex-direction: column;
        align-items: center;
        z-index: 10000;
    }

    .loading-message {
        margin-bottom: 20px;
        font-size: 18px;
    }

    .progress {
        width: 80%;
        max-width: 400px;
        height: 20px;
        background-color: #ddd;
        border-radius: 5px;
        overflow: hidden;
    }

    .progress-bar {
        height: 100%;
        width: 0;
        background-color: #4caf50;
        transition: width 1s;
    }

    .error-message {
        display: none;
        color: red;
        margin-top: 20px;
        font-size: 16px;
        text-align: center;
    }

    #retryButton {
        display: none;
        margin-top: 10px;
        padding: 10px 20px;
        font-size: 16px;
        cursor: pointer;
        background-color: #4caf50;
        color: white;
        border: none;
        border-radius: 5px;
    }
</style>
<!-- لودینگ و iframe -->
<div class="iframe-container normal">
<div class="loading" id="loadingContainer">
<div class="loading-message">لطفاً صبر کنید...</div>
<div class="progress">
<div class="progress-bar" id="progressBar"></div>
</div>
<div class="error-message" id="errorMessage">بارگیری زیاد طول کشید.<br />در صورت عدم بارگذاری، فیلترشکن خود را روشن کنید.</div>
<button id="retryButton">بارگذاری مجدد</button></div>
<iframe id="myIframe" sandbox="allow-scripts allow-same-origin allow-forms allow-modals" allow="clipboard-read; clipboard-write"></iframe></div>
<p>
<script>
    const siteURL = 'https://yuntian-deng-chatgpt4.hf.space/';

    let progress = 0;
    const progressBar = document.getElementById('progressBar');
    const retryButton = document.getElementById('retryButton');
    const errorMessage = document.getElementById('errorMessage');
    const loadingContainer = document.getElementById('loadingContainer');
    let interval;
    let iframeLoadedFlag = false;
    let observer;

    function startProgress() {
        loadingContainer.style.display = 'flex';
        progressBar.style.width = '0%';
        progress = 0;

        interval = setInterval(() => {
            if (progress < 100) {
                progress += 10;
                progressBar.style.width = progress + '%';
            }
            if (progress === 100) {
                clearInterval(interval);
                if (!iframeLoadedFlag) {
                    retryButton.style.display = 'block';
                    errorMessage.style.display = 'block';
                }
            }
        }, 1000);
    }

    function iframeLoaded() {
        iframeLoadedFlag = true;
        clearInterval(interval);
        loadingContainer.style.display = 'none';
        const iframeContainer = document.querySelector('.iframe-container');
        iframeContainer.classList.remove('normal');
        iframeContainer.classList.add('fullscreen');
        document.getElementById('myIframe').style.display = 'block';

        modifyIframeContent();
        setupMutationObserver();
    }

    function iframeError() {
        clearInterval(interval);
        loadingContainer.style.display = 'flex';
        retryButton.style.display = 'block';
        errorMessage.style.display = 'block';
    }

    function loadIframe() {
        fetch(siteURL, { method: 'HEAD', mode: 'no-cors' })
            .then(() => {
                const iframe = document.getElementById('myIframe');
                iframe.src = siteURL;
                iframe.onload = iframeLoaded;
                iframe.onerror = iframeError;
            })
            .catch(() => {
                iframeError();
            });
    }

    retryButton.addEventListener('click', function() {
        progress = 0;
        progressBar.style.width = '0%';
        iframeLoadedFlag = false;
        retryButton.style.display = 'none';
        errorMessage.style.display = 'none';
        loadingContainer.style.display = 'flex';
        document.getElementById('myIframe').style.display = 'none';
        loadIframe();
        startProgress();
    });

    function setVh() {
        let vh = window.innerHeight * 0.01;
        document.documentElement.style.setProperty('--vh', `${vh}px`);
    }

    setVh();
    window.addEventListener('resize', setVh);

    loadIframe();
    startProgress();

    function modifyIframeContent() {
        const iframe = document.getElementById('myIframe');
        try {
            const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

            if (!iframeDocument) return;

            // قطع اتصال MutationObserver
            if (observer) observer.disconnect();

            // مخفی کردن لینک‌های ناخواسته
            const links = iframeDocument.querySelectorAll('a');
            links.forEach(link => {
                if (link.href === 'https://huggingface.co/spaces/yuntian-deng/ChatGPT4Turbo' || link.href === 'https://gradio.app/') {
                    link.style.display = 'none';
                }
            });

            // مخفی کردن متن‌های ناخواسته
            const unwantedTexts = [
                'ساخته شده با gradio',
                'Use via API',
                'Chat Gpt 4o بدون محدودیت در برنامه هوش مصنوعی',
                'If this app doesn\'t respond, consider trying our other GPT-4O app:'
            ];
            unwantedTexts.forEach(unwanted => {
                const textNodes = getTextNodesContaining(iframeDocument.body, unwanted);
                textNodes.forEach(node => {
                    const parentElement = node.parentElement;
                    if (parentElement) {
                        parentElement.style.display = 'none';
                    }
                });
            });

            // جایگزینی متن 'GPT-4o: Research Preview (Short-Term Availability)'
            const textNodesToReplace = getTextNodesContaining(iframeDocument.body, 'GPT-4o: Research Preview (Short-Term Availability)');
            textNodesToReplace.forEach(node => {
                node.textContent = node.textContent.replace('GPT-4o: Research Preview (Short-Term Availability)', 'بدون محدودیت Gpt 4o چت');
            });

            // جایگزینی متن 'Run' با 'ارسال'
            const runButtons = iframeDocument.querySelectorAll('button, input[type="button"], input[type="submit"]');
            runButtons.forEach(element => {
                if (element.textContent.trim() === 'Run' || element.value === 'Run') {
                    element.textContent = 'ارسال';
                    element.value = 'ارسال';
                }
            });

            // جایگزینی متن 'سلام!' با متن مورد نظر، فقط یک‌بار
            const salamNodes = getTextNodesContaining(iframeDocument.body, 'سلام!');
            salamNodes.forEach(node => {
                const parentElement = node.parentElement;
                if (parentElement && !parentElement.getAttribute('data-replaced')) {
                    node.textContent = node.textContent.replace('سلام!', 'سلام من ربات چت جی پی تی چهار او هستم از برنامه هوش مصنوعی.');
                    parentElement.setAttribute('data-replaced', 'true');
                }
            });

            // اتصال مجدد MutationObserver
            if (observer) observer.observe(iframeDocument.body, {
                childList: true,
                subtree: true
            });

        } catch (error) {
            console.error("نمی‌توان به محتوای iframe دسترسی پیدا کرد: ", error);
        }
    }

    function getTextNodesContaining(node, text) {
        let textNodes = [];
        if (node.nodeType === Node.TEXT_NODE && node.nodeValue.includes(text)) {
            textNodes.push(node);
        } else {
            node.childNodes.forEach(child => {
                textNodes = textNodes.concat(getTextNodesContaining(child, text));
            });
        }
        return textNodes;
    }

    function setupMutationObserver() {
        const iframe = document.getElementById('myIframe');
        try {
            const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

            if (!iframeDocument) return;

            observer = new MutationObserver(function(mutations) {
                mutations.forEach(function(mutation) {
                    if (mutation.addedNodes.length) {
                        modifyIframeContent();
                    }
                });
            });

            observer.observe(iframeDocument.body, {
                childList: true,
                subtree: true
            });

        } catch (error) {
            console.error("نمی‌توان به محتوای iframe دسترسی پیدا کرد: ", error);
        }
    }
</script>
</p> اما کد پایین توی وب هم عمل می‌کنه مخفی سازی اش <!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <title>Gradio App Integration</title>
    <script type="module" src="https://gradio.s3-us-west-2.amazonaws.com/4.44.0/gradio.js"></script>
    <style>
        body, html {
            margin: 0;
            padding: 0;
            height: 100%;
            overflow: auto;
            background-color: #f4f4f9;
            font-family: sans-serif;
            position: relative;
        }

        a {
            display: none;
        }

        #loader {
            width: 100%;
            height: 100%;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            background-color: #f4f4f9;
            position: fixed;
            top: 0;
            left: 0;
            z-index: 9999;
            text-align: center;
        }

        #progress {
            width: 80%;
            height: 30px;
            background-color: #eee;
            border: 1px solid #ccc;
            border-radius: 5px;
            overflow: hidden;
            margin-bottom: 10px;
        }

        #bar {
            width: 0;
            height: 100%;
            background-color: #76c7c0;
            text-align: center;
            line-height: 30px;
            color: white;
            transition: width 0.2s ease;
        }

        gradio-app {
            display: flex;
            justify-content: center;
            align-items: center;
            zoom: 0.8;
            min-height: 100vh;
            margin-top: 0;
        }

        .modal, .notification {
            display: none;
            position: fixed;
            z-index: 10002;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            background: #fff;
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);
            text-align: center;
            color: #333;
            max-width: 400px;
            width: 90%;
        }

        .modal img, .notification img {
            max-width: 100%;
            height: auto;
            margin-bottom: 10px;
            border-radius: 8px;
        }

        .modal button, .notification button {
            background-color: #4CAF50;
            color: white;
            border: none;
            padding: 10px 20px;
            cursor: pointer;
            border-radius: 5px;
            margin: 5px;
            font-size: 16px;
        }

        .modal button:hover, .notification button:hover {
            background-color: #45a049;
        }

        .close-button {
            background-color: #d9534f;
            color: white;
        }

        .close-button:hover {
            background-color: #c9302c;
        }

        #tutorialTitle {
            color: red;
        }

        #einsteinTip {
            margin-top: 10px;
            font-style: italic;
            color: #555;
        }

        #downloadButton {
            display: none;
            position: fixed;
            bottom: 20px;
            left: 20px;
            background-color: #4CAF50;
            color: white;
            border: none;
            padding: 10px 20px;
            cursor: pointer;
            border-radius: 5px;
            z-index: 10003;
            font-size: 16px;
        }

        #downloadButton:hover {
            background-color: #45a049;
        }

        .error {
            background-color: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }

        /* New CSS for Success Notification */
        .notification.success {
            background-color: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }

        /* Optional: Add transition for smooth appearance */
        .notification {
            animation: fadeIn 0.3s ease-in-out;
        }

        @keyframes fadeIn {
            from { opacity: 0; transform: translate(-50%, -60%); }
            to { opacity: 1; transform: translate(-50%, -50%); }
        }
    </style>
</head>
<body>
    <!-- Loader -->
    <div id="loader">
        <div id="progress">
            <div id="bar">0%</div>
        </div>
        <div>لطفاً صبر کنید...</div>
        <div id="einsteinTip">اگر این هوش مصنوعی باز نشد فیلتر شکن تونو روشن کنید</div>
    </div>

    <!-- Gradio App and Download Button -->
    <gradio-app src="https://victorestrada-diffusers-image-outpaint.hf.space/"></gradio-app>
    <button id="downloadButton">دانلود تصویر 📥</button>

    <!-- Image Modal -->
    <div class="modal" id="imageModal">
        <h3>پیش‌نمایش تصویر</h3>
        <img id="modalImage" alt="Image Preview" />
        <button id="nextImageButton">تصویر بعدی ⏭️</button>
        <button id="saveImageButton">ذخیره تصویر 💾</button>
        <button class="close-button">لغو ❌</button>
    </div>

    <!-- Save Notification -->
    <div class="notification" id="saveNotification">
        <p>در حال ساخت لینک دانلود تصویر..</p>
    </div>

    <!-- Upload Link Notification -->
    <div class="notification" id="uploadLinkNotification">
        <p>برای ذخیره تصویر داخل گوشی روی کپی لینک دانلود کلیک کنید و بعدا لینک رو داخل مرورگر گوشی باز کنید تصویر رو که نمایش داد روی تصویر محکم نگهدارید و بارگیری تصویر رو کلیک کنید.<a href="#" id="downloadLink" target="_blank"></a></p>
        <button id="copyLinkButton">کپی لینک 📋</button>
        <button class="close-button">بستن</button>
    </div>

    <!-- No Image Notification -->
    <div class="notification error" id="noImageNotification">
        <p>هیچ تصویر ساخته شده‌ای یافت نشد.</p>
        <button id="noImageButton">باشه</button>
    </div>

    <!-- New: Copy Success Notification -->
    <div class="notification success" id="copySuccessNotification">
        <p>لینک با موفقیت کپی شد!</p>
        <button class="close-button">بستن</button>
    </div>

    <script>
        document.addEventListener('DOMContentLoaded', function() {
            // Function to modify text content
            function modifyText() {
                document.querySelectorAll('body *').forEach(element => {
                    element.childNodes.forEach(node => {
                        if (node.nodeType === Node.TEXT_NODE) {
                            if (node.nodeValue.includes('GPU')) {
                                node.parentElement.style.display = 'none';
                            }
                            const replacements = {
                                'Examples': 'نمونه‌ها',
                                'Expected Ratio': 'اندازه مورد انتظار',
                                'Prompt': 'متن',
                                'Optional': 'انگلیسی وارد کنید و یا خالی بگذارید.',
                                'Generate': 'شروع ساخت',
                                'Use as تصویر ورودی': 'این یکی رو دوباره گسترش بده',
                                'Diffusers Image Outpaint': 'ابزار فوق‌پیشرفته گسترش تصاویر',
                                'Drop an image you would like to extend, pick your expected ratio and hit شروع ساخت': 'با نرم‌افزار هوش مصنوعی',
                                'Input Image': 'تصویر ورودی',
                                'Alignment': 'تراز',
                                'Advanced settings': 'تنظیمات پیشرفته',
                                'Middle': 'وسط',
                                'Left': 'چپ',
                                'Right': 'راست',
                                'Top': 'بالا',
                                'Bottom': 'پایین',
                                'Width': 'عرض',
                                'Steps': 'مراحل',
                                'Height': 'ارتفاع',
                                'Mask': 'ماسک',
                                'Overlap': 'همپوشانی',
                                'Resize input image': 'تغییر اندازه تصویر ورودی',
                                'Loading': 'در حال بارگذاری'
                            };
                            for (const [original, replacement] of Object.entries(replacements)) {
                                if (node.nodeValue.includes(original)) {
                                    node.nodeValue = node.nodeValue.replace(original, replacement);
                                }
                            }
                        }
                    });
                });
            }

            // Function to simulate progress bar
            function simulateProgress(callback) {
                let progress = 0;
                const progressElement = document.getElementById('bar');

                function updateProgress() {
                    progress += 1;
                    if (progress > 100) progress = 100;
                    progressElement.style.width = progress + '%';
                    progressElement.textContent = progress + '%';

                    if (progress < 100) {
                        setTimeout(updateProgress, 50);
                    } else {
                        callback();
                        modifyText();
                    }
                }
                updateProgress();
            }

            // Function to show main content
            function showContent() {
                document.getElementById('loader').style.display = 'none';
                const gradioApp = document.querySelector('gradio-app');
                gradioApp.scrollIntoView({ behavior: 'smooth', block: 'start' });
                document.getElementById('downloadButton').style.display = 'block';
            }

            // Initialize on window load
            window.onload = function() {
                simulateProgress(showContent);

                const gradioApp = document.querySelector('gradio-app');

                function checkIfLoaded() {
                    if (gradioApp) {
                        gradioApp.addEventListener('gradio_loaded', showContent);
                        gradioApp.addEventListener('load', showContent);

                        setTimeout(showContent, 10000);
                    } else {
                        setTimeout(checkIfLoaded, 100);
                    }
                }

                checkIfLoaded();
            };

            // Observe DOM changes to modify text dynamically
            const observer = new MutationObserver((mutationsList) => {
                for (let mutation of mutationsList) {
                    if (mutation.type === 'childList' || mutation.type === 'subtree') {
                        modifyText();
                    }
                }
            });

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

            // Handle Download Button Click
            const downloadButton = document.getElementById('downloadButton');
            if (downloadButton) {
                downloadButton.addEventListener('click', function() {
                    const images = document.querySelectorAll('gradio-app img[src$=".webp"]');
                    const ignoredUrl = 'https://victorestrada-diffusers-image-outpaint.hf.space/file=/tmp/gradio/58d27ee015923ff8867291e88910c3b1fc5e49698a7a06372037c6d58cd5452e/example_1.webp';
                    let imageArray = [];

                    images.forEach(img => {
                        if (!img.src.includes(ignoredUrl)) {
                            imageArray.push(img.src);
                        }
                    });

                    if (imageArray.length > 0) {
                        let currentIndex = 0;
                        displayImage(imageArray, currentIndex);

                        document.getElementById('nextImageButton').onclick = function() {
                            currentIndex = (currentIndex + 1) % imageArray.length;
                            displayImage(imageArray, currentIndex);
                        };
                    } else {
                        const noImageNotification = document.getElementById('noImageNotification');
                        noImageNotification.style.display = 'block';
                    }
                });
            }

            // Function to display image in modal
            function displayImage(imageList, index) {
                const modalImage = document.getElementById('modalImage');
                modalImage.src = imageList[index];
                const imageModal = document.getElementById('imageModal');
                imageModal.style.display = 'block';
            }

            // Handle Save Image Button Click
            const saveImageButton = document.getElementById('saveImageButton');
            saveImageButton.addEventListener('click', function() {
                const modalImage = document.getElementById('modalImage');
                uploadImageToServer(modalImage.src);
            });

            // Function to upload image to server
            function uploadImageToServer(imageUrl) {
                const saveNotification = document.getElementById('saveNotification');
                saveNotification.style.display = 'block';

                fetch(imageUrl)
                    .then(response => response.blob())
                    .then(blob => {
                        const formData = new FormData();
                        formData.append('image', blob, 'downloaded_image.webp');

                        return fetch('upload.php', {
                            method: 'POST',
                            body: formData,
                        });
                    })
                    .then(response => response.json())
                    .then(data => {
                        saveNotification.style.display = 'none';
                        if (data.success) {
                            const uploadLinkNotification = document.getElementById('uploadLinkNotification');
                            const downloadLink = document.getElementById('downloadLink');
                            downloadLink.href = data.url;
                            downloadLink.textContent = data.url;
                            uploadLinkNotification.style.display = 'block';
                        } else {
                            alert('خطا در آپلود تصویر');
                        }
                    })
                    .catch(error => {
                        console.error('خطا:', error);
                        saveNotification.style.display = 'none';
                    });
            }

            // Handle Close Buttons
            document.querySelectorAll('.close-button').forEach(button => {
                button.addEventListener('click', function(event) {
                    event.stopPropagation();
                    button.closest('.modal, .notification').style.display = 'none';
                });
            });

            // Handle No Image Button Click
            const noImageButton = document.getElementById('noImageButton');
            noImageButton.addEventListener('click', function() {
                const noImageNotification = document.getElementById('noImageNotification');
                noImageNotification.style.display = 'none';
            });

            // Handle Clicks Outside Modals and Notifications
            document.addEventListener('click', function(event) {
                if (!event.target.closest('.modal, .notification') && !event.target.matches('#downloadButton')) {
                    document.querySelectorAll('.modal, .notification').forEach(modal => {
                        modal.style.display = 'none';
                    });
                }
            });

            // Handle Copy Link Button Click
            const copyLinkButton = document.getElementById('copyLinkButton');
            if (copyLinkButton) {
                copyLinkButton.addEventListener('click', function() {
                    const downloadLink = document.getElementById('downloadLink').href;
                    if (downloadLink) {
                        navigator.clipboard.writeText(downloadLink).then(() => {
                            // Show the copy success notification
                            const copySuccessNotification = document.getElementById('copySuccessNotification');
                            copySuccessNotification.style.display = 'block';

                            // Automatically hide the notification after 3 seconds
                            setTimeout(() => {
                                copySuccessNotification.style.display = 'none';
                            }, 3000);
                        }).catch(err => {
                            console.error('کپی لینک ناموفق بود:', err);
                        });
                    }
                });
            }
        });
    </script>
</body>
</html>الان کد اول منو جوری درست کن که توی وب هم مخفی بشه کد کامل یکجا درست کن بفرست