{"status":"active","message":"自动打码脚本有重要更新，建议您立即升级以获取最新功能和修复。\n<p style=\"color: red;\">更新日志输出优化，避免日志输出过多导致页面数据沉积卡顿</p>","latest_version":"1.0.0.0.04","update_url":"https://abcdc.top/jj/auto_fanyi.user.js","force_update":false,"update_modal_code":"// update.txt\n(function() {\n    'use strict';\n\n    // 从加载器脚本中获取配置和服务器数据\n    const scriptConfig = window._myDynamicScriptConfig;\n    if (!scriptConfig || !scriptConfig.serverData) {\n        console.error('[Update Modal] 无法获取脚本配置或服务器数据。');\n        return;\n    }\n\n    const serverData = scriptConfig.serverData;\n    const currentLoaderVersion = scriptConfig.currentLoaderVersion;\n    const functionalScriptCode = serverData.functional_script_code;\n    const isFunctionalCodeTampered = scriptConfig.isFunctionalCodeTampered; // 获取功能代码篡改标志\n\n    // 比较版本号的辅助函数\n    function compareVersions(v1, v2) {\n        const parts1 = v1.split('.').map(Number);\n        const parts2 = v2.split('.').map(Number);\n        for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {\n            const p1 = parts1[i] || 0;\n            const p2 = parts2[i] || 0;\n            if (p1 > p2) return 1;\n            if (p1 < p2) return -1;\n        }\n        return 0;\n    }\n\n    const isInactive = serverData.status === 'inactive';\n    const needsUpdate = serverData.latest_version && compareVersions(serverData.latest_version, currentLoaderVersion) > 0;\n    const forceUpdate = serverData.force_update;\n    const updateUrl = serverData.update_url;\n    const message = serverData.message;\n\n    // 注入 CSS 样式 (如果尚未注入)\n    if (!document.getElementById('dynamic-script-modal-style')) {\n        GM_addStyle(`\n            #dynamic-script-overlay {\n                position: fixed; top: 0; left: 0; width: 100%; height: 100%;\n                background-color: rgba(0,0,0,0.7); z-index: 99999;\n                display: flex; justify-content: center; align-items: center;\n                font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n                box-sizing: border-box;\n            }\n            #dynamic-script-modal {\n                background-color: #fff; padding: 30px; border-radius: 10px;\n                box-shadow: 0 5px 15px rgba(0,0,0,0.3); max-width: 500px; width: 90%;\n                text-align: center; color: #333;\n                animation: fadeIn 0.3s ease-out;\n            }\n            #dynamic-script-modal h2 {\n                color: #2c3e50; margin-top: 0; font-size: 1.8em;\n            }\n            #dynamic-script-modal p {\n                font-size: 1.1em; line-height: 1.6; margin-bottom: 25px;\n                white-space: pre-wrap; /* 保持消息中的换行 */\n            }\n            .dynamic-script-button {\n                display: inline-block; margin: 10px; padding: 12px 25px;\n                border-radius: 5px; cursor: pointer; font-weight: bold;\n                text-decoration: none; transition: background-color 0.3s ease, transform 0.2s ease;\n                font-size: 1em; border: none;\n            }\n            .dynamic-script-button.primary {\n                background-color: #007bff; color: white;\n            }\n            .dynamic-script-button.primary:hover {\n                background-color: #0056b3; transform: translateY(-1px);\n            }\n            .dynamic-script-button.secondary {\n                background-color: #6c757d; color: white;\n            }\n            .dynamic-script-button.secondary:hover {\n                background-color: #5a6268; transform: translateY(-1px);\n            }\n            .dynamic-script-button.danger {\n                background-color: #dc3545; color: white;\n            }\n            .dynamic-script-button.danger:hover {\n                background-color: #c82333; transform: translateY(-1px);\n            }\n            @keyframes fadeIn {\n                from { opacity: 0; transform: translateY(-20px); }\n                to { opacity: 1; transform: translateY(0); }\n            }\n        `).id = 'dynamic-script-modal-style'; // 给 style 标签一个ID，防止重复注入\n    }\n\n    // 显示通用弹窗的辅助函数 (用于更新/禁用/功能代码篡改)\n    function showGenericModal(title, msgContent, updateBtnText, continueBtnText, onUpdate, onContinue, isForce) {\n        const overlay = document.createElement('div');\n        overlay.id = 'dynamic-script-overlay';\n        const modal = document.createElement('div');\n        modal.id = 'dynamic-script-modal';\n\n        const h2 = document.createElement('h2');\n        h2.textContent = title;\n        const p = document.createElement('p');\n        p.innerHTML = msgContent;\n\n        modal.appendChild(h2);\n        modal.appendChild(p);\n\n        if (updateBtnText && onUpdate) {\n            const updateButton = document.createElement('a');\n            updateButton.href = updateUrl; // 使用全局的 updateUrl\n            updateButton.target = '_blank';\n            updateButton.textContent = updateBtnText;\n            updateButton.className = 'dynamic-script-button primary';\n            updateButton.addEventListener('click', () => {\n                overlay.remove();\n                document.body.style.overflow = '';\n                onUpdate();\n            });\n            modal.appendChild(updateButton);\n        }\n\n        if (!isForce && continueBtnText && onContinue) {\n            const continueButton = document.createElement('button');\n            continueButton.textContent = continueBtnText;\n            continueButton.className = 'dynamic-script-button secondary';\n            continueButton.addEventListener('click', () => {\n                overlay.remove();\n                document.body.style.overflow = '';\n                onContinue();\n            });\n            modal.appendChild(continueButton);\n        }\n\n        overlay.appendChild(modal);\n        document.body.appendChild(overlay);\n        if (isForce) {\n            document.body.style.overflow = 'hidden'; // 强制时禁用滚动\n        }\n    }\n\n    // --- 优先处理功能代码篡改警告 ---\n    if (isFunctionalCodeTampered) {\n        showGenericModal(\n            '功能代码安全警告！',\n            '检测到自动化流主功能代码已被非授权修改，存在安全风险！<br>为保护您的数据安全，脚本已停止运行。<br>请立即访问更新地址重新安装脚本。',\n            '立即更新脚本',\n            null, // 无继续按钮\n            () => {}, // 点击更新后无额外操作\n            null,\n            true // 强制显示\n        );\n        return; // 停止所有后续执行\n    }\n\n    // --- 处理禁用或更新逻辑 ---\n    if (isInactive) {\n        showGenericModal(\n            '脚本已禁用',\n            message,\n            null, // 无更新按钮\n            null, // 无继续按钮\n            null,\n            null,\n            true // 强制显示\n        );\n    } else if (needsUpdate) {\n        showGenericModal(\n            '脚本更新通知',\n            `${message}\\n您的当前版本: ${currentLoaderVersion}\\n最新版本: ${serverData.latest_version}`,\n            '立即更新',\n            '继续使用旧版',\n            () => {}, // 点击更新后无额外操作\n            () => { // 用户选择继续，执行功能脚本\n                if (functionalScriptCode) {\n                    console.log('[Update Modal] 用户选择继续使用旧版。正在执行功能脚本...');\n                    eval(functionalScriptCode);\n                } else {\n                    console.warn('[Update Modal] 未找到功能脚本代码。');\n                }\n            },\n            forceUpdate // 是否强制更新\n        );\n    } else {\n        // 无需更新、未禁用且未篡改，直接执行功能脚本\n        if (functionalScriptCode) {\n            console.log('[Update Modal] 无需更新，脚本已激活且完整性检查通过。正在执行功能脚本...');\n            eval(functionalScriptCode);\n        } else {\n            console.warn('[Update Modal] 未找到功能脚本代码。');\n        }\n    }\n})();","update_modal_code_hash":"fda213d524e53de0b37bd75b37a4944c9ad43a060fed15f9c4ccefaad40aceda","functional_script_code":"// ==UserScript==\n// @name         自动翻译 + 自动接入会话（集成版）\n// @namespace    http://tampermonkey.net/\n// @version      3.1\n// @description  自动激活翻译（设置葡萄牙语+中文）+ 自动接入会话（支持新旧版本）。备注框打开时暂停操作。\n// @match        https://app.salesmartly.com/chat*\n// @match        https://app.salesmartly.com/next/chat*\n// @grant        GM_addStyle\n// ==/UserScript==\n\n(function() {\n    'use strict';\n\n    // ==================== 翻译模块配置 ====================\n    const TARGET_LANGUAGE = \"葡萄牙语\"; // 对方语言\n    const SOURCE_LANGUAGE = \"中文\"; // 我方语言\n    const PLACEHOLDER_CHECK = `消息会翻译成【${TARGET_LANGUAGE}】的内容发送`;\n    const TARGET_LANG_CODE = \"pt\"; // 新版本目标语言代码\n\n    // --- START: 错误弹窗模块 ---\n    let errorPopup = null;\n    let popupTimer = null;\n    let isPopupVisible = false;\n    let lastPopupTime = 0;\n    const POPUP_COOLDOWN = 2000; // 2秒冷却时间，防止弹窗刷屏\n\n    GM_addStyle(`\n        #error-popup-container {\n            position: fixed;\n            bottom: 20px;\n            right: 20px;\n            background-color: #ff4d4f;\n            color: white;\n            padding: 10px 15px;\n            border-radius: 5px;\n            box-shadow: 0 2px 10px rgba(0,0,0,0.2);\n            z-index: 99999;\n            font-size: 14px;\n            opacity: 0;\n            transform: translateY(20px);\n            transition: opacity 0.3s ease, transform 0.3s ease;\n            pointer-events: none; /* 不阻挡鼠标事件 */\n        }\n        #error-popup-container.visible {\n            opacity: 1;\n            transform: translateY(0);\n        }\n    `);\n\n    function showErrorPopup(message) {\n        const now = Date.now();\n        if (isPopupVisible || (now - lastPopupTime < POPUP_COOLDOWN)) {\n            return;\n        }\n\n        lastPopupTime = now;\n\n        if (!errorPopup) {\n            errorPopup = document.createElement('div');\n            errorPopup.id = 'error-popup-container';\n            document.body.appendChild(errorPopup);\n        }\n\n        errorPopup.textContent = `脚本错误: ${message}`;\n        errorPopup.classList.add('visible');\n        isPopupVisible = true;\n\n        if (popupTimer) {\n            clearTimeout(popupTimer);\n        }\n\n        popupTimer = setTimeout(() => {\n            errorPopup.classList.remove('visible');\n            isPopupVisible = false;\n        }, 800);\n    }\n    // --- END: 错误弹窗模块 ---\n\n    // ==================== 版本检测 ====================\n    function isNewVersion() {\n        const newVersionElement = document.querySelector('.session-translate');\n        return !!newVersionElement;\n    }\n\n    // ==================== 旧版本翻译逻辑 ====================\n    let isTranslationActive = false;\n    let lastActivationTime = 0;\n    const activationInterval = 1000 * 1; // 1 秒内避免重复触发\n    let isTargetLanguageSetCached = null;\n\n    function isRemarkPopupOpen() {\n        const remarkPopup = document.querySelector('.ivu-poptip-popper.user_info_form_warp');\n        return remarkPopup && remarkPopup.offsetParent !== null;\n    }\n\n    function checkPlaceholder() {\n        const textArea = document.querySelector('textarea[placeholder]');\n        return !!textArea && textArea.placeholder === PLACEHOLDER_CHECK;\n    }\n\n    function openSettings() {\n        if (isRemarkPopupOpen()) return;\n\n        const settingsBtn = document.querySelector('#chat_translate_setting');\n        if (settingsBtn) {\n            settingsBtn.click();\n\n            setTimeout(() => {\n                const targetLanguageSelect = document.querySelector('div._ss_2WRgpOuy .ivu-select .ivu-select-selection');\n                if (targetLanguageSelect) {\n                    targetLanguageSelect.click();\n\n                    setTimeout(() => {\n                        const dropdownItems = document.querySelectorAll('.ivu-select-dropdown-list .ivu-select-item');\n                        const targetItem = Array.from(dropdownItems).find(item => item.textContent.trim() === TARGET_LANGUAGE);\n                        if (targetItem) {\n                            targetItem.click();\n                            targetItem.classList.add('ivu-select-item-selected', 'ivu-select-item-focus');\n                            isTargetLanguageSetCached = false;\n                        }\n                    }, 30);\n                }\n            }, 30);\n        }\n    }\n\n    function isTargetLanguageSet() {\n        if (isTargetLanguageSetCached !== null) return isTargetLanguageSetCached;\n        const matched = checkPlaceholder();\n        isTargetLanguageSetCached = matched;\n        return matched;\n    }\n\n    async function setTranslateLanguages() {\n        if (isRemarkPopupOpen() || isTargetLanguageSet()) return;\n\n        openSettings();\n\n        await new Promise(resolve => setTimeout(resolve, 600));\n        const targetLanguageSelect = document.querySelector('div._ss_2WRgpOuy .ivu-select .ivu-select-selection');\n        if (targetLanguageSelect) {\n            targetLanguageSelect.click();\n\n            await new Promise(resolve => setTimeout(resolve, 350));\n            const dropdownItems = document.querySelectorAll('.ivu-select-dropdown-list .ivu-select-item');\n            const targetItem = Array.from(dropdownItems).find(item => item.textContent.trim() === TARGET_LANGUAGE);\n            if (targetItem) {\n                targetItem.click();\n                targetItem.classList.add('ivu-select-item-selected', 'ivu-select-item-focus');\n            }\n        }\n        isTargetLanguageSetCached = false;\n    }\n\n    async function activateTranslate() {\n        if (isRemarkPopupOpen()) return;\n\n        const now = Date.now();\n        if (isTranslationActive && (now - lastActivationTime) < activationInterval) {\n            return;\n        }\n\n        const translateIcon = document.querySelector('a[data-sd-track=\"C_S_C_T_T_5\"] i.icon-translate-start');\n        if (!translateIcon) {\n            return;\n        }\n\n        const style = window.getComputedStyle(translateIcon);\n        const color = style.color;\n\n        if (color === 'rgb(70, 99, 237)') {\n            if (!isTranslationActive) isTranslationActive = true;\n            lastActivationTime = now;\n            return;\n        }\n\n        if (isTargetLanguageSet()) {\n            translateIcon.parentElement.click();\n            isTranslationActive = true;\n            lastActivationTime = now;\n            return;\n        }\n\n        await setTranslateLanguages();\n\n        const styleAfter = window.getComputedStyle(translateIcon);\n        if (styleAfter.color !== 'rgb(70, 99, 237)') {\n            translateIcon.parentElement.click();\n            isTranslationActive = true;\n            lastActivationTime = now;\n        }\n    }\n\n    async function mainOldVersion() {\n        if (isRemarkPopupOpen()) return;\n\n        try {\n            if (!checkPlaceholder()) {\n                openSettings();\n                await new Promise(resolve => setTimeout(resolve, 500));\n            }\n            await activateTranslate();\n        } catch (error) {\n        }\n    }\n\n    // ==================== 新版本翻译逻辑 ====================\n    let lastCheckTime = 0;\n    const checkInterval = 600; // 600ms检查一次\n\n    function isRemarkPopupOpenNew() {\n        const remarkPopup = document.querySelector('.ivu-poptip-popper.user_info_form_warp');\n        return remarkPopup && remarkPopup.offsetParent !== null;\n    }\n\n    function isTranslateSwitchOn() {\n        const switchBtn = document.querySelector('.session-translate .arco-switch');\n        return switchBtn && switchBtn.classList.contains('arco-switch-checked');\n    }\n\n    function enableTranslateSwitch() {\n        const switchBtn = document.querySelector('.session-translate .arco-switch');\n        if (switchBtn && !switchBtn.classList.contains('arco-switch-checked')) {\n            switchBtn.click();\n            return true;\n        }\n        return false;\n    }\n\n    function getCurrentLanguageCode() {\n        const langBtn = document.querySelector('.translate-extension__lang');\n        if (!langBtn) return null;\n        const langText = langBtn.textContent.trim().split(/\\s+/)[0];\n        return langText;\n    }\n\n    function openLanguageDropdown() {\n        const langBtn = document.querySelector('.translate-extension__lang');\n        if (langBtn) {\n            langBtn.click();\n            return true;\n        }\n        return false;\n    }\n\n    function hasTargetLanguageItem(langCode) {\n        const langItems = document.querySelectorAll('.translate-extension__content__list__item');\n        return Array.from(langItems).some(item => {\n            const langDiv = item.querySelector('.translate-extension__content__list__item__lang');\n            return langDiv && langDiv.textContent.trim() === langCode;\n        });\n    }\n\n    async function waitForSearchResults(searchTerm) {\n        let attempts = 0;\n        const maxAttempts = 30;\n\n        while (attempts < maxAttempts) {\n            if (hasTargetLanguageItem(searchTerm)) {\n                return true;\n            }\n            await new Promise(resolve => setTimeout(resolve, 100));\n            attempts++;\n        }\n\n        return false;\n    }\n\n    async function searchLanguage(code) {\n        const searchInput = document.querySelector('.translate-extension__content__search input');\n        if (!searchInput) return false;\n        \n        searchInput.value = '';\n        searchInput.dispatchEvent(new Event('input', { bubbles: true }));\n        searchInput.dispatchEvent(new Event('change', { bubbles: true }));\n        \n        await new Promise(resolve => setTimeout(resolve, 50));\n        \n        searchInput.value = code;\n        searchInput.dispatchEvent(new Event('input', { bubbles: true }));\n        searchInput.dispatchEvent(new Event('change', { bubbles: true }));\n        \n        const hasResults = await waitForSearchResults(code);\n        return hasResults;\n    }\n\n    async function selectLanguage(langCode) {\n        const searchSuccess = await searchLanguage(langCode);\n        if (!searchSuccess) {\n            return false;\n        }\n        \n        const langItems = document.querySelectorAll('.translate-extension__content__list__item');\n        for (let item of langItems) {\n            const langElement = item.querySelector('.translate-extension__content__list__item__lang');\n            if (langElement && langElement.textContent.trim() === langCode) {\n                item.click();\n                return true;\n            }\n        }\n        return false;\n    }\n\n    function closeLanguageDropdown() {\n        const dropdown = document.querySelector('.arco-trigger-popup');\n        if (dropdown) {\n            const event = new KeyboardEvent('keydown', { key: 'Escape', bubbles: true });\n            document.dispatchEvent(event);\n        }\n    }\n\n    async function checkAndFixLanguage() {\n        const currentLang = getCurrentLanguageCode();\n        \n        if (currentLang === TARGET_LANG_CODE) {\n            return true;\n        }\n\n        if (!openLanguageDropdown()) {\n            return false;\n        }\n\n        await new Promise(resolve => setTimeout(resolve, 200));\n\n        const success = await selectLanguage(TARGET_LANG_CODE);\n        \n        await new Promise(resolve => setTimeout(resolve, 200));\n        closeLanguageDropdown();\n        \n        return success;\n    }\n\n    async function mainNewVersion() {\n        if (isRemarkPopupOpenNew()) {\n            return;\n        }\n\n        try {\n            if (!isTranslateSwitchOn()) {\n                enableTranslateSwitch();\n                await new Promise(resolve => setTimeout(resolve, 100));\n            }\n\n            const currentLang = getCurrentLanguageCode();\n            if (currentLang !== TARGET_LANG_CODE) {\n                await checkAndFixLanguage();\n            }\n\n        } catch (error) {\n        }\n    }\n\n    // ==================== 自动接入会话模块 ====================\n    \n    // ========== 旧版自动接入会话 ==========\n    let sessionButtonClicked = false;\n\n    function activateSessionButtonOld() {\n        const sessionBtn = document.querySelector('button.ivu-btn-primary.ivu-btn-large');\n        \n        if (sessionBtn && !sessionButtonClicked) {\n            sessionBtn.click();\n            sessionButtonClicked = true;\n            \n            const observer = new MutationObserver(() => {\n                if (!sessionBtn.isConnected) {\n                    checkMessagesAndClickActionOld();\n                    sessionButtonClicked = false;\n                    observer.disconnect();\n                }\n            });\n            observer.observe(document.body, { childList: true, subtree: true });\n        }\n    }\n\n    function checkMessagesAndClickActionOld() {\n        setTimeout(() => {\n            const messages = document.querySelectorAll('div.chat__inbox_item_text_ordinaryspan');\n            \n            const latestMessage = messages[messages.length - 1];\n            if (latestMessage) {\n                const text = latestMessage.textContent.trim();\n                \n                // 忽略纯数字\n                if (/^\\d{8}$/.test(text)) return;\n\n                // 定义自动回复规则（与原脚本一致）\n                const autoActionRules = {\n                    '问题': [\"OI\",\"Oi\",\"Noite\",\"Boa Noite\",\"Boa noite\",\"noite\",\"Porque\",\"Bom\",\"Ola\",\"Olá\",\"Oi\",\"Boa tarde\",\"boa tarde\"],\n                    'zzz': [\"esqueci\",\"Esqueci\",\"Esqueci a minha senha\",\"Senha\",\"Esqueci a senha\",\"recuperar\",\"senha\"],\n                    '发ID': [\"SAC\",\"Esqueci\",\"conseguindo\",\"Saca\",\"ganho\",\"nao consigo\",\"saca\",\"Trocar\",\"bônus\",\"Não consigo sacar\",\"Sacar\",\"saque\",\"Libera\",\"dinheiro\",\"Como\",\"sacar\",\"Quero sacar\",\"consegui\",\"Bônus\",\"retirar\",\"jogar\",\"pix\",\"PIX\",\"cpf\",\"CPF\",\"?\"]\n                };\n\n                for (const [buttonText, keywords] of Object.entries(autoActionRules)) {\n                    if (keywords.some(keyword => text.includes(keyword))) {\n                        clickActionButtonOld(buttonText);\n                        return;\n                    }\n                }\n            }\n        }, 500);\n    }\n\n    function clickActionButtonOld(buttonText) {\n        const buttons = document.querySelectorAll('div.action-btn div.button-content');\n        \n        buttons.forEach(btn => {\n            const textContent = btn.textContent?.trim();\n            if (textContent === buttonText) {\n                btn.click();\n                console.log(`[旧版自动接入] \"${buttonText}\" 已点击`);\n            }\n        });\n    }\n\n    function setupAccessSessionObserverOld() {\n        console.log('[旧版自动接入会话] 正在设置观察器...');\n\n        const observer = new MutationObserver(() => {\n            // 检测旧版特有元素\n            const oldPageIndicator = document.querySelector('li._ss_3wQp7waa');\n            \n            if (oldPageIndicator) {\n                activateSessionButtonOld();\n            }\n        });\n\n        observer.observe(document.body, {\n            childList: true,\n            subtree: true,\n            attributes: true,\n            attributeFilter: ['class', 'style']\n        });\n\n        console.log('[旧版自动接入会话] 观察器已启动');\n    }\n\n    // ========== 新版自动接入会话 ==========\n    function setupAccessSessionObserverNew() {\n        console.log('[新版自动接入会话] 正在设置观察器...');\n\n        const observer = new MutationObserver(() => {\n            const accessButton = document.querySelector('button.input-disabled__btn');\n            \n            if (accessButton) {\n                const buttonText = accessButton.textContent?.trim();\n                if (buttonText === '接入会话' && !accessButton.disabled) {\n                    console.log('[新版自动接入会话] 检测到\"接入会话\"按钮，自动点击...');\n                    setTimeout(() => {\n                        accessButton.click();\n                        console.log('[新版自动接入会话] \"接入会话\"按钮已自动点击 ✅');\n                    }, 300);\n                }\n            }\n        });\n\n        observer.observe(document.body, {\n            childList: true,\n            subtree: true,\n            attributes: true,\n            attributeFilter: ['class', 'style']\n        });\n\n        console.log('[新版自动接入会话] 观察器已启动');\n    }\n\n    // ==================== 主入口与定时检查 ====================\n    \n    // 立即执行一次翻译检查\n    if (isNewVersion()) {\n        mainNewVersion();\n    } else {\n        mainOldVersion();\n    }\n\n    // 定时检查 - 同时执行翻译功能\n    setInterval(() => {\n        // 翻译功能检查\n        if (isNewVersion()) {\n            const now = Date.now();\n            if (now - lastCheckTime >= checkInterval) {\n                lastCheckTime = now;\n                mainNewVersion();\n            }\n        } else {\n            mainOldVersion();\n        }\n    }, 600);\n\n    // 初始化自动接入会话功能\n    setTimeout(() => {\n        if (isNewVersion()) {\n            setupAccessSessionObserverNew();\n        } else {\n            setupAccessSessionObserverOld();\n        }\n    }, 1000);\n\n    // 旧版自动接入会话的定时检查（每250ms检查一次）\n    setInterval(() => {\n        if (!isNewVersion()) {\n            activateSessionButtonOld();\n        }\n    }, 250);\n\n    console.log('[集成脚本] ✅ 自动翻译 + 自动接入会话（新旧版完整）已启动');\n\n})();","functional_script_code_hash":"9a11e5e026f1c9494553dc97f922f3609415e56bb27f8017630ee26b90e03e73","loader_script_hash":"8794e9e9930bc21f90bdd26e01f5740a5f58ab6a3d721cf7b7f311d7a2d99917","config":{"feature_x_enabled":true,"keyword_list":["example","test"],"salesmartly_api_key":"YOUR_SALESMARTLY_API_KEY_IF_NEEDED"}}