{"id":62734,"date":"2025-05-18T12:03:49","date_gmt":"2025-05-18T12:03:49","guid":{"rendered":"https:\/\/fxtrendo.com\/?page_id=62734"},"modified":"2026-06-02T19:28:01","modified_gmt":"2026-06-02T19:28:01","slug":"realtime-price","status":"publish","type":"page","link":"https:\/\/fxtrendo.com\/id\/realtime-price\/","title":{"rendered":"Harga Aset Real-Time"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"62734\" class=\"elementor elementor-62734 elementor-3999\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a64a992 e-flex e-con-boxed e-con e-parent\" data-id=\"a64a992\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-cf4c06a e-con-full e-flex e-con e-child\" data-id=\"cf4c06a\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5e31ac6 elementor-widget elementor-widget-heading\" data-id=\"5e31ac6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Harga Aset Real-Time\n<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-41b3bda elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"41b3bda\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\">Pada bagian ini, Anda dapat melihat harga real-time dari berbagai macam aset, termasuk pasangan forex, mata uang kripto, logam, energi, indeks, dan saham global.\n<\/span>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f635901 e-flex e-con-boxed e-con e-parent\" data-id=\"f635901\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-717724a e-n-tabs-none elementor-widget elementor-widget-n-tabs\" data-id=\"717724a\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;tabs_justify_horizontal&quot;:&quot;start&quot;,&quot;horizontal_scroll_mobile&quot;:&quot;enable&quot;,&quot;horizontal_scroll&quot;:&quot;disable&quot;}\" data-widget_type=\"nested-tabs.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-n-tabs\" data-widget-number=\"118977098\" aria-label=\"Tabs. Open items with Enter or Space, close with Escape and navigate using the Arrow keys.\">\n\t\t\t<div class=\"e-n-tabs-heading\" role=\"tablist\">\n\t\t\t\t\t<button id=\"e-n-tab-title-1189770981\" data-tab-title-id=\"e-n-tab-title-1189770981\" class=\"e-n-tab-title\" aria-selected=\"true\" data-tab-index=\"1\" role=\"tab\" tabindex=\"0\" aria-controls=\"e-n-tab-content-1189770981\" style=\"--n-tabs-title-order: 1;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tForex\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t<button id=\"e-n-tab-title-1189770982\" data-tab-title-id=\"e-n-tab-title-1189770982\" class=\"e-n-tab-title\" aria-selected=\"false\" data-tab-index=\"2\" role=\"tab\" tabindex=\"-1\" aria-controls=\"e-n-tab-content-1189770982\" style=\"--n-tabs-title-order: 2;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tMata Uang Kripto\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t<button id=\"e-n-tab-title-1189770983\" data-tab-title-id=\"e-n-tab-title-1189770983\" class=\"e-n-tab-title\" aria-selected=\"false\" data-tab-index=\"3\" role=\"tab\" tabindex=\"-1\" aria-controls=\"e-n-tab-content-1189770983\" style=\"--n-tabs-title-order: 3;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tLogam\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t<button id=\"e-n-tab-title-1189770984\" data-tab-title-id=\"e-n-tab-title-1189770984\" class=\"e-n-tab-title\" aria-selected=\"false\" data-tab-index=\"4\" role=\"tab\" tabindex=\"-1\" aria-controls=\"e-n-tab-content-1189770984\" style=\"--n-tabs-title-order: 4;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tSaham\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t<button id=\"e-n-tab-title-1189770985\" data-tab-title-id=\"e-n-tab-title-1189770985\" class=\"e-n-tab-title\" aria-selected=\"false\" data-tab-index=\"5\" role=\"tab\" tabindex=\"-1\" aria-controls=\"e-n-tab-content-1189770985\" style=\"--n-tabs-title-order: 5;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tEnergi\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t<button id=\"e-n-tab-title-1189770986\" data-tab-title-id=\"e-n-tab-title-1189770986\" class=\"e-n-tab-title\" aria-selected=\"false\" data-tab-index=\"6\" role=\"tab\" tabindex=\"-1\" aria-controls=\"e-n-tab-content-1189770986\" style=\"--n-tabs-title-order: 6;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tIndeks\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t\t<\/div>\n\t\t\t<div class=\"e-n-tabs-content\">\n\t\t\t\t<div id=\"e-n-tab-content-1189770981\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-1189770981\" data-tab-index=\"1\" style=\"--n-tabs-title-order: 1;\" class=\"e-active elementor-element elementor-element-7adac4f e-con-full e-flex e-con e-child\" data-id=\"7adac4f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f27aded elementor-widget elementor-widget-shortcode\" data-id=\"f27aded\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div id=\"price_list_6a1f81f75dfea_container\" class=\"price-list-container\">\r\n        <div id=\"price_list_6a1f81f75dfea_searchwrap\" class=\"price-list-search\" style=\"margin-bottom:8px; display:flex; align-items:center; gap:8px;\">\r\n            <button type=\"button\" id=\"price_list_6a1f81f75dfea_searchbtn\" aria-expanded=\"false\" aria-controls=\"price_list_6a1f81f75dfea_searchinput\" style=\"border:none;background: unset !important;\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2025\/08\/search-normal.svg\" \/><\/button>\r\n            <input type=\"text\" id=\"price_list_6a1f81f75dfea_searchinput\" placeholder=\"Search...\"  style=\"display:none; max-width:220px; padding:6px 8px; border:1px solid #ccc; border-radius:6px;\" \/>\r\n        <\/div><div class=\"table-price-sc\"><table id=\"price_list_6a1f81f75dfea_table\" class=\"price-list-table\" border=\"1\" cellpadding=\"5\" cellspacing=\"0\"><thead><tr>\r\n                    <th>Symbol<\/th>\r\n                    <th>Sell<\/th>\r\n                    <th>Buy<\/th>\r\n                    <th>Spread<\/th>\r\n                <\/tr><\/thead><tbody id=\"price_list_6a1f81f75dfea_tbody\">\r\n                    <tr><td colspan=\"4\">Loading...<\/td><\/tr>\r\n                <\/tbody><\/table>\r\n    <\/div>\r\n    <\/div><script>\r\n    (function(){\r\n        const symbols         = \"usdjpy,eurusd,gbpusd,eurjpy,audchf,usdcad,eurcad,eurgbp,chfjpy,eurchf,audcad,eurnzd,euraud,usdchf,audjpy,gbpaud,nzdusd,gbpnzd,cadchf,usdsgd,gbpchf,cadjpy,gbpcad,nzdchf,gbpjpy,usdcnh,audusd,audnzd,nzdjpy,nzdcad,usdzar\";\r\n        const searchEnabled   = true;\r\n        const searchSymbols   = \"usdjpy,eurusd,gbpusd,eurjpy,audchf,usdcad,eurcad,eurgbp,chfjpy,eurchf,audcad,eurnzd,euraud,usdchf,audjpy,gbpaud,nzdusd,gbpnzd,cadchf,usdsgd,gbpchf,cadjpy,gbpcad,nzdchf,gbpjpy,usdcnh,audusd,audnzd,nzdjpy,nzdcad,usdzar,btcusd,ethusd,xrpusd,eosusd,dshusd,ltcusd,bchusd,dotusd,lnkusd,adausd,xlmusd,bnbusd,xmrusd,iotusd,xtzusd,bsvusd,dogusd,glmusd,ksmusd,avxusd,solusd,uniusd,mtcusd,xauusd,xpdusd,xptusd,xagusd,xaueur,xaugbp,xaujpy,xauaud,xauchf,xagaud,xageur,fb,bac,dis,pg,jnj,amzn,v,aapl,nvda,wmt,pypl,jpm,msft,tsla,goog,ma,unh,hd,xbrusd,xtiusd,xngusd,us30,us500,de40,ustec,uk100,jp225,f40,stoxx50,aus200\";\r\n        const ajaxUrl         = \"https:\/\/fxtrendo.com\/wp-admin\/admin-ajax.php\";\r\n        const tbodyId         = \"price_list_6a1f81f75dfea_tbody\";\r\n        const nonce           = \"b1d4a2b4f5\";\r\n\r\n        const searchWrapId    = \"price_list_6a1f81f75dfea_searchwrap\";\r\n        const searchInputId   = \"price_list_6a1f81f75dfea_searchinput\";\r\n        const searchBtnId     = \"price_list_6a1f81f75dfea_searchbtn\";\r\n\r\n        let previousBuyValues  = {};\r\n        let previousSellValues = {};\r\n        let displayedData      = []; \/\/ data for current tab (price list)\r\n        let masterData         = []; \/\/ optional full dataset for searching across tabs\r\n\r\n        function toNum(v){\r\n            const n = parseFloat(v);\r\n            return Number.isFinite(n) ? n : NaN;\r\n        }\r\n\r\n        function normalizeArrayMaybe(data){\r\n            \/\/ Accept array or { getSymbol: [...] }\r\n            if (Array.isArray(data)) return data;\r\n            if (data && Array.isArray(data.getSymbol)) return data.getSymbol;\r\n            return [];\r\n        }\r\n\r\n        function fetchSymbols(list){\r\n            const url = ajaxUrl + \"?action=get_symbol_data&symbols=\" + encodeURIComponent(list) + \"&_ajax_nonce=\" + encodeURIComponent(nonce);\r\n            return fetch(url, { credentials: \"same-origin\" })\r\n                .then(r => r.json())\r\n                .then(j => {\r\n                    if (!j || !(\"success\" in j)) throw new Error(\"Unexpected response\");\r\n                    if (!j.success) throw new Error((j.data && j.data.message) || \"Unknown error\");\r\n                    return normalizeArrayMaybe(j.data);\r\n                });\r\n        }\r\n\r\n        function renderRows(rows){\r\n            let html = \"\";\r\n            rows.forEach(item => {\r\n                const name  = (item && (item.name || item.Symbol || item.symbol)) || \"\";\r\n                const sellV = item && (item.Ask  ?? item.ask  ?? item.sell ?? item.Sell);\r\n                const buyV  = item && (item.Bid  ?? item.bid  ?? item.buy  ?? item.Buy);\r\n                const sellN = toNum(sellV);\r\n                const buyN  = toNum(buyV);\r\n                const sellStr = (sellV !== undefined && sellV !== null) ? String(sellV) : \"\";\r\n                const buyStr  = (buyV  !== undefined && buyV  !== null) ? String(buyV)  : \"\";\r\n                const image = (item && (item.image || item.icon || \"\")) || \"\";\r\n                const sb   = item.symbol || \"\";\r\n                let spread = \"-\";\r\n                if (Number.isFinite(sellN) && Number.isFinite(buyN)) {\r\n                    const s = sellN - buyN;\r\n                    spread = (Math.abs(s) >= 1 ? s.toFixed(2) : s.toFixed(4));\r\n                }\r\n\r\n                let buyColor = \"white\";\r\n                let buyText  = buyStr;\r\n                if (name && Number.isFinite(buyN) && previousBuyValues[name] !== undefined) {\r\n                    const prev = previousBuyValues[name];\r\n                    if (Number.isFinite(prev)) {\r\n                        if (buyN > prev) { buyColor = \"green\"; buyText = \"+\" + buyStr; }\r\n                        else if (buyN < prev) { buyColor = \"red\"; buyText = \"-\" + buyStr; }\r\n                    }\r\n                }\r\n\r\n                let sellColor = \"white\";\r\n                let sellText  = sellStr;\r\n                if (name && Number.isFinite(sellN) && previousSellValues[name] !== undefined) {\r\n                    const prev = previousSellValues[name];\r\n                    if (Number.isFinite(prev)) {\r\n                        if (sellN > prev) { sellColor = \"green\"; sellText = \"+\" + sellStr; }\r\n                        else if (sellN < prev) { sellColor = \"red\"; sellText = \"-\" + sellStr; }\r\n                    }\r\n                }\r\n\r\n                if (name) {\r\n                    previousBuyValues[name]  = buyN;\r\n                    previousSellValues[name] = sellN;\r\n                }\r\n\r\n                html += \"<tr style='border-radius: 16px; background: rgba(112, 112, 112, 0.15); backdrop-filter: blur(4px); margin-top: 10px; margin-bottom: 10px;'>\";\r\n                html += '<td class=\"name-cell\"><a href=\"\/chart\/' + encodeURIComponent(sb) + '\/\"><img decoding=\"async\" src=\"' + image + '\" alt=\"' + name + '\" \/>' + name + '<\/a><\/td>';\r\n                html += '<td class=\"sell-cell\" style=\"color: ' + sellColor + ';\">' + sellText + '<\/td>';\r\n                html += '<td class=\"buy-cell\" style=\"color: ' + buyColor + ';\">' + buyText + '<\/td>';\r\n                html += '<td class=\"sp-cell\">' + spread + '<\/td>';\r\n                html += \"<\/tr>\";\r\n            });\r\n            document.getElementById(tbodyId).innerHTML = html || \"<tr><td colspan='4'>No data<\/td><\/tr>\";\r\n        }\r\n\r\n        function updateDisplayToOriginal(){\r\n            renderRows(displayedData);\r\n        }\r\n\r\n        function handleSearch(query){\r\n            const q = (query || \"\").trim().toLowerCase();\r\n            if (!q) { updateDisplayToOriginal(); return; }\r\n\r\n            \/\/ Search across masterData if available; fallback to displayedData\r\n            const base = (masterData.length ? masterData : displayedData);\r\n            const filtered = base.filter(it => {\r\n                const nm = (it && (it.name || it.Symbol || it.symbol) || \"\").toLowerCase();\r\n                return nm.includes(q);\r\n            });\r\n            renderRows(filtered);\r\n        }\r\n\r\n        function attachSearchUI(){\r\n            if (!searchEnabled) return;\r\n\r\n            const btn = document.getElementById(searchBtnId);\r\n            const input = document.getElementById(searchInputId);\r\n            if (!btn || !input) return;\r\n\r\n            let open = false;\r\n            btn.addEventListener(\"click\", function(){\r\n                open = !open;\r\n                btn.setAttribute(\"aria-expanded\", open ? \"true\" : \"false\");\r\n                input.style.display = open ? \"block\" : \"none\";\r\n                if (open) { input.focus(); }\r\n                if (!open) { input.value = \"\"; updateDisplayToOriginal(); }\r\n            });\r\n\r\n            let t = null;\r\n            input.addEventListener(\"input\", function(){\r\n                const v = input.value;\r\n                if (t) clearTimeout(t);\r\n                t = setTimeout(() => handleSearch(v), 200);\r\n            });\r\n        }\r\n\r\n        \/\/ Initial load\r\n        Promise.all([\r\n            fetchSymbols(symbols).then(arr => { displayedData = arr || []; }).catch(() => { displayedData = []; }),\r\n            (searchEnabled && searchSymbols ? fetchSymbols(searchSymbols).then(arr => { masterData = arr || []; }).catch(() => { masterData = []; }) : Promise.resolve() )\r\n        ])\r\n        .then(() => {\r\n            renderRows(displayedData);\r\n            attachSearchUI();\r\n        })\r\n        .catch(e => {\r\n            document.getElementById(tbodyId).innerHTML = \"<tr><td colspan='4'>Error: \" + e + \"<\/td><\/tr>\";\r\n        });\r\n\r\n        \/\/ No auto-refresh by default\r\n        \/\/ setInterval(() => { \/* you can add refresh if needed *\/ }, 5000);\r\n        \r\n        \r\n        \r\n    })();\r\n    <\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"e-n-tab-content-1189770982\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-1189770982\" data-tab-index=\"2\" style=\"--n-tabs-title-order: 2;\" class=\" elementor-element elementor-element-6af664c e-con-full e-flex e-con e-child\" data-id=\"6af664c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2e869c1 elementor-widget elementor-widget-shortcode\" data-id=\"2e869c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div id=\"price_list_6a1f81f75e603_container\" class=\"price-list-container\">\r\n        <div id=\"price_list_6a1f81f75e603_searchwrap\" class=\"price-list-search\" style=\"margin-bottom:8px; display:flex; align-items:center; gap:8px;\">\r\n            <button type=\"button\" id=\"price_list_6a1f81f75e603_searchbtn\" aria-expanded=\"false\" aria-controls=\"price_list_6a1f81f75e603_searchinput\" style=\"border:none;background: unset !important;\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2025\/08\/search-normal.svg\" \/><\/button>\r\n            <input type=\"text\" id=\"price_list_6a1f81f75e603_searchinput\" placeholder=\"Search...\"  style=\"display:none; max-width:220px; padding:6px 8px; border:1px solid #ccc; border-radius:6px;\" \/>\r\n        <\/div><div class=\"table-price-sc\"><table id=\"price_list_6a1f81f75e603_table\" class=\"price-list-table\" border=\"1\" cellpadding=\"5\" cellspacing=\"0\"><thead><tr>\r\n                    <th>Symbol<\/th>\r\n                    <th>Sell<\/th>\r\n                    <th>Buy<\/th>\r\n                    <th>Spread<\/th>\r\n                <\/tr><\/thead><tbody id=\"price_list_6a1f81f75e603_tbody\">\r\n                    <tr><td colspan=\"4\">Loading...<\/td><\/tr>\r\n                <\/tbody><\/table>\r\n    <\/div>\r\n    <\/div><script>\r\n    (function(){\r\n        const symbols         = \"btcusd,ethusd,xrpusd,eosusd,dshusd,ltcusd,bchusd,dotusd,lnkusd,adausd,xlmusd,bnbusd,xmrusd,iotusd,xtzusd,bsvusd,dogusd,glmusd,ksmusd,avxusd,solusd,uniusd,mtcusd\";\r\n        const searchEnabled   = true;\r\n        const searchSymbols   = \"usdjpy,eurusd,gbpusd,eurjpy,audchf,usdcad,eurcad,eurgbp,chfjpy,eurchf,audcad,eurnzd,euraud,usdchf,audjpy,gbpaud,nzdusd,gbpnzd,cadchf,usdsgd,gbpchf,cadjpy,gbpcad,nzdchf,gbpjpy,usdcnh,audusd,audnzd,nzdjpy,nzdcad,usdzar,btcusd,ethusd,xrpusd,eosusd,dshusd,ltcusd,bchusd,dotusd,lnkusd,adausd,xlmusd,bnbusd,xmrusd,iotusd,xtzusd,bsvusd,dogusd,glmusd,ksmusd,avxusd,solusd,uniusd,mtcusd,xauusd,xpdusd,xptusd,xagusd,xaueur,xaugbp,xaujpy,xauaud,xauchf,xagaud,xageur,fb,bac,dis,pg,jnj,amzn,v,aapl,nvda,wmt,pypl,jpm,msft,tsla,goog,ma,unh,hd,xbrusd,xtiusd,xngusd,us30,us500,de40,ustec,uk100,jp225,f40,stoxx50,aus200\";\r\n        const ajaxUrl         = \"https:\/\/fxtrendo.com\/wp-admin\/admin-ajax.php\";\r\n        const tbodyId         = \"price_list_6a1f81f75e603_tbody\";\r\n        const nonce           = \"b1d4a2b4f5\";\r\n\r\n        const searchWrapId    = \"price_list_6a1f81f75e603_searchwrap\";\r\n        const searchInputId   = \"price_list_6a1f81f75e603_searchinput\";\r\n        const searchBtnId     = \"price_list_6a1f81f75e603_searchbtn\";\r\n\r\n        let previousBuyValues  = {};\r\n        let previousSellValues = {};\r\n        let displayedData      = []; \/\/ data for current tab (price list)\r\n        let masterData         = []; \/\/ optional full dataset for searching across tabs\r\n\r\n        function toNum(v){\r\n            const n = parseFloat(v);\r\n            return Number.isFinite(n) ? n : NaN;\r\n        }\r\n\r\n        function normalizeArrayMaybe(data){\r\n            \/\/ Accept array or { getSymbol: [...] }\r\n            if (Array.isArray(data)) return data;\r\n            if (data && Array.isArray(data.getSymbol)) return data.getSymbol;\r\n            return [];\r\n        }\r\n\r\n        function fetchSymbols(list){\r\n            const url = ajaxUrl + \"?action=get_symbol_data&symbols=\" + encodeURIComponent(list) + \"&_ajax_nonce=\" + encodeURIComponent(nonce);\r\n            return fetch(url, { credentials: \"same-origin\" })\r\n                .then(r => r.json())\r\n                .then(j => {\r\n                    if (!j || !(\"success\" in j)) throw new Error(\"Unexpected response\");\r\n                    if (!j.success) throw new Error((j.data && j.data.message) || \"Unknown error\");\r\n                    return normalizeArrayMaybe(j.data);\r\n                });\r\n        }\r\n\r\n        function renderRows(rows){\r\n            let html = \"\";\r\n            rows.forEach(item => {\r\n                const name  = (item && (item.name || item.Symbol || item.symbol)) || \"\";\r\n                const sellV = item && (item.Ask  ?? item.ask  ?? item.sell ?? item.Sell);\r\n                const buyV  = item && (item.Bid  ?? item.bid  ?? item.buy  ?? item.Buy);\r\n                const sellN = toNum(sellV);\r\n                const buyN  = toNum(buyV);\r\n                const sellStr = (sellV !== undefined && sellV !== null) ? String(sellV) : \"\";\r\n                const buyStr  = (buyV  !== undefined && buyV  !== null) ? String(buyV)  : \"\";\r\n                const image = (item && (item.image || item.icon || \"\")) || \"\";\r\n                const sb   = item.symbol || \"\";\r\n                let spread = \"-\";\r\n                if (Number.isFinite(sellN) && Number.isFinite(buyN)) {\r\n                    const s = sellN - buyN;\r\n                    spread = (Math.abs(s) >= 1 ? s.toFixed(2) : s.toFixed(4));\r\n                }\r\n\r\n                let buyColor = \"white\";\r\n                let buyText  = buyStr;\r\n                if (name && Number.isFinite(buyN) && previousBuyValues[name] !== undefined) {\r\n                    const prev = previousBuyValues[name];\r\n                    if (Number.isFinite(prev)) {\r\n                        if (buyN > prev) { buyColor = \"green\"; buyText = \"+\" + buyStr; }\r\n                        else if (buyN < prev) { buyColor = \"red\"; buyText = \"-\" + buyStr; }\r\n                    }\r\n                }\r\n\r\n                let sellColor = \"white\";\r\n                let sellText  = sellStr;\r\n                if (name && Number.isFinite(sellN) && previousSellValues[name] !== undefined) {\r\n                    const prev = previousSellValues[name];\r\n                    if (Number.isFinite(prev)) {\r\n                        if (sellN > prev) { sellColor = \"green\"; sellText = \"+\" + sellStr; }\r\n                        else if (sellN < prev) { sellColor = \"red\"; sellText = \"-\" + sellStr; }\r\n                    }\r\n                }\r\n\r\n                if (name) {\r\n                    previousBuyValues[name]  = buyN;\r\n                    previousSellValues[name] = sellN;\r\n                }\r\n\r\n                html += \"<tr style='border-radius: 16px; background: rgba(112, 112, 112, 0.15); backdrop-filter: blur(4px); margin-top: 10px; margin-bottom: 10px;'>\";\r\n                html += '<td class=\"name-cell\"><a href=\"\/chart\/' + encodeURIComponent(sb) + '\/\"><img decoding=\"async\" src=\"' + image + '\" alt=\"' + name + '\" \/>' + name + '<\/a><\/td>';\r\n                html += '<td class=\"sell-cell\" style=\"color: ' + sellColor + ';\">' + sellText + '<\/td>';\r\n                html += '<td class=\"buy-cell\" style=\"color: ' + buyColor + ';\">' + buyText + '<\/td>';\r\n                html += '<td class=\"sp-cell\">' + spread + '<\/td>';\r\n                html += \"<\/tr>\";\r\n            });\r\n            document.getElementById(tbodyId).innerHTML = html || \"<tr><td colspan='4'>No data<\/td><\/tr>\";\r\n        }\r\n\r\n        function updateDisplayToOriginal(){\r\n            renderRows(displayedData);\r\n        }\r\n\r\n        function handleSearch(query){\r\n            const q = (query || \"\").trim().toLowerCase();\r\n            if (!q) { updateDisplayToOriginal(); return; }\r\n\r\n            \/\/ Search across masterData if available; fallback to displayedData\r\n            const base = (masterData.length ? masterData : displayedData);\r\n            const filtered = base.filter(it => {\r\n                const nm = (it && (it.name || it.Symbol || it.symbol) || \"\").toLowerCase();\r\n                return nm.includes(q);\r\n            });\r\n            renderRows(filtered);\r\n        }\r\n\r\n        function attachSearchUI(){\r\n            if (!searchEnabled) return;\r\n\r\n            const btn = document.getElementById(searchBtnId);\r\n            const input = document.getElementById(searchInputId);\r\n            if (!btn || !input) return;\r\n\r\n            let open = false;\r\n            btn.addEventListener(\"click\", function(){\r\n                open = !open;\r\n                btn.setAttribute(\"aria-expanded\", open ? \"true\" : \"false\");\r\n                input.style.display = open ? \"block\" : \"none\";\r\n                if (open) { input.focus(); }\r\n                if (!open) { input.value = \"\"; updateDisplayToOriginal(); }\r\n            });\r\n\r\n            let t = null;\r\n            input.addEventListener(\"input\", function(){\r\n                const v = input.value;\r\n                if (t) clearTimeout(t);\r\n                t = setTimeout(() => handleSearch(v), 200);\r\n            });\r\n        }\r\n\r\n        \/\/ Initial load\r\n        Promise.all([\r\n            fetchSymbols(symbols).then(arr => { displayedData = arr || []; }).catch(() => { displayedData = []; }),\r\n            (searchEnabled && searchSymbols ? fetchSymbols(searchSymbols).then(arr => { masterData = arr || []; }).catch(() => { masterData = []; }) : Promise.resolve() )\r\n        ])\r\n        .then(() => {\r\n            renderRows(displayedData);\r\n            attachSearchUI();\r\n        })\r\n        .catch(e => {\r\n            document.getElementById(tbodyId).innerHTML = \"<tr><td colspan='4'>Error: \" + e + \"<\/td><\/tr>\";\r\n        });\r\n\r\n        \/\/ No auto-refresh by default\r\n        \/\/ setInterval(() => { \/* you can add refresh if needed *\/ }, 5000);\r\n        \r\n        \r\n        \r\n    })();\r\n    <\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"e-n-tab-content-1189770983\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-1189770983\" data-tab-index=\"3\" style=\"--n-tabs-title-order: 3;\" class=\" elementor-element elementor-element-667776e e-con-full e-flex e-con e-child\" data-id=\"667776e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7978eaa elementor-widget elementor-widget-shortcode\" data-id=\"7978eaa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div id=\"price_list_6a1f81f75eb48_container\" class=\"price-list-container\">\r\n        <div id=\"price_list_6a1f81f75eb48_searchwrap\" class=\"price-list-search\" style=\"margin-bottom:8px; display:flex; align-items:center; gap:8px;\">\r\n            <button type=\"button\" id=\"price_list_6a1f81f75eb48_searchbtn\" aria-expanded=\"false\" aria-controls=\"price_list_6a1f81f75eb48_searchinput\" style=\"border:none;background: unset !important;\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2025\/08\/search-normal.svg\" \/><\/button>\r\n            <input type=\"text\" id=\"price_list_6a1f81f75eb48_searchinput\" placeholder=\"Search...\"  style=\"display:none; max-width:220px; padding:6px 8px; border:1px solid #ccc; border-radius:6px;\" \/>\r\n        <\/div><div class=\"table-price-sc\"><table id=\"price_list_6a1f81f75eb48_table\" class=\"price-list-table\" border=\"1\" cellpadding=\"5\" cellspacing=\"0\"><thead><tr>\r\n                    <th>Symbol<\/th>\r\n                    <th>Sell<\/th>\r\n                    <th>Buy<\/th>\r\n                    <th>Spread<\/th>\r\n                <\/tr><\/thead><tbody id=\"price_list_6a1f81f75eb48_tbody\">\r\n                    <tr><td colspan=\"4\">Loading...<\/td><\/tr>\r\n                <\/tbody><\/table>\r\n    <\/div>\r\n    <\/div><script>\r\n    (function(){\r\n        const symbols         = \"xauusd,xpdusd,xptusd,xagusd,xaueur,xaugbp,xaujpy,xauaud,xauchf,xagaud,xageur\";\r\n        const searchEnabled   = true;\r\n        const searchSymbols   = \"usdjpy,eurusd,gbpusd,eurjpy,audchf,usdcad,eurcad,eurgbp,chfjpy,eurchf,audcad,eurnzd,euraud,usdchf,audjpy,gbpaud,nzdusd,gbpnzd,cadchf,usdsgd,gbpchf,cadjpy,gbpcad,nzdchf,gbpjpy,usdcnh,audusd,audnzd,nzdjpy,nzdcad,usdzar,btcusd,ethusd,xrpusd,eosusd,dshusd,ltcusd,bchusd,dotusd,lnkusd,adausd,xlmusd,bnbusd,xmrusd,iotusd,xtzusd,bsvusd,dogusd,glmusd,ksmusd,avxusd,solusd,uniusd,mtcusd,xauusd,xpdusd,xptusd,xagusd,xaueur,xaugbp,xaujpy,xauaud,xauchf,xagaud,xageur,fb,bac,dis,pg,jnj,amzn,v,aapl,nvda,wmt,pypl,jpm,msft,tsla,goog,ma,unh,hd,xbrusd,xtiusd,xngusd,us30,us500,de40,ustec,uk100,jp225,f40,stoxx50,aus200\";\r\n        const ajaxUrl         = \"https:\/\/fxtrendo.com\/wp-admin\/admin-ajax.php\";\r\n        const tbodyId         = \"price_list_6a1f81f75eb48_tbody\";\r\n        const nonce           = \"b1d4a2b4f5\";\r\n\r\n        const searchWrapId    = \"price_list_6a1f81f75eb48_searchwrap\";\r\n        const searchInputId   = \"price_list_6a1f81f75eb48_searchinput\";\r\n        const searchBtnId     = \"price_list_6a1f81f75eb48_searchbtn\";\r\n\r\n        let previousBuyValues  = {};\r\n        let previousSellValues = {};\r\n        let displayedData      = []; \/\/ data for current tab (price list)\r\n        let masterData         = []; \/\/ optional full dataset for searching across tabs\r\n\r\n        function toNum(v){\r\n            const n = parseFloat(v);\r\n            return Number.isFinite(n) ? n : NaN;\r\n        }\r\n\r\n        function normalizeArrayMaybe(data){\r\n            \/\/ Accept array or { getSymbol: [...] }\r\n            if (Array.isArray(data)) return data;\r\n            if (data && Array.isArray(data.getSymbol)) return data.getSymbol;\r\n            return [];\r\n        }\r\n\r\n        function fetchSymbols(list){\r\n            const url = ajaxUrl + \"?action=get_symbol_data&symbols=\" + encodeURIComponent(list) + \"&_ajax_nonce=\" + encodeURIComponent(nonce);\r\n            return fetch(url, { credentials: \"same-origin\" })\r\n                .then(r => r.json())\r\n                .then(j => {\r\n                    if (!j || !(\"success\" in j)) throw new Error(\"Unexpected response\");\r\n                    if (!j.success) throw new Error((j.data && j.data.message) || \"Unknown error\");\r\n                    return normalizeArrayMaybe(j.data);\r\n                });\r\n        }\r\n\r\n        function renderRows(rows){\r\n            let html = \"\";\r\n            rows.forEach(item => {\r\n                const name  = (item && (item.name || item.Symbol || item.symbol)) || \"\";\r\n                const sellV = item && (item.Ask  ?? item.ask  ?? item.sell ?? item.Sell);\r\n                const buyV  = item && (item.Bid  ?? item.bid  ?? item.buy  ?? item.Buy);\r\n                const sellN = toNum(sellV);\r\n                const buyN  = toNum(buyV);\r\n                const sellStr = (sellV !== undefined && sellV !== null) ? String(sellV) : \"\";\r\n                const buyStr  = (buyV  !== undefined && buyV  !== null) ? String(buyV)  : \"\";\r\n                const image = (item && (item.image || item.icon || \"\")) || \"\";\r\n                const sb   = item.symbol || \"\";\r\n                let spread = \"-\";\r\n                if (Number.isFinite(sellN) && Number.isFinite(buyN)) {\r\n                    const s = sellN - buyN;\r\n                    spread = (Math.abs(s) >= 1 ? s.toFixed(2) : s.toFixed(4));\r\n                }\r\n\r\n                let buyColor = \"white\";\r\n                let buyText  = buyStr;\r\n                if (name && Number.isFinite(buyN) && previousBuyValues[name] !== undefined) {\r\n                    const prev = previousBuyValues[name];\r\n                    if (Number.isFinite(prev)) {\r\n                        if (buyN > prev) { buyColor = \"green\"; buyText = \"+\" + buyStr; }\r\n                        else if (buyN < prev) { buyColor = \"red\"; buyText = \"-\" + buyStr; }\r\n                    }\r\n                }\r\n\r\n                let sellColor = \"white\";\r\n                let sellText  = sellStr;\r\n                if (name && Number.isFinite(sellN) && previousSellValues[name] !== undefined) {\r\n                    const prev = previousSellValues[name];\r\n                    if (Number.isFinite(prev)) {\r\n                        if (sellN > prev) { sellColor = \"green\"; sellText = \"+\" + sellStr; }\r\n                        else if (sellN < prev) { sellColor = \"red\"; sellText = \"-\" + sellStr; }\r\n                    }\r\n                }\r\n\r\n                if (name) {\r\n                    previousBuyValues[name]  = buyN;\r\n                    previousSellValues[name] = sellN;\r\n                }\r\n\r\n                html += \"<tr style='border-radius: 16px; background: rgba(112, 112, 112, 0.15); backdrop-filter: blur(4px); margin-top: 10px; margin-bottom: 10px;'>\";\r\n                html += '<td class=\"name-cell\"><a href=\"\/chart\/' + encodeURIComponent(sb) + '\/\"><img decoding=\"async\" src=\"' + image + '\" alt=\"' + name + '\" \/>' + name + '<\/a><\/td>';\r\n                html += '<td class=\"sell-cell\" style=\"color: ' + sellColor + ';\">' + sellText + '<\/td>';\r\n                html += '<td class=\"buy-cell\" style=\"color: ' + buyColor + ';\">' + buyText + '<\/td>';\r\n                html += '<td class=\"sp-cell\">' + spread + '<\/td>';\r\n                html += \"<\/tr>\";\r\n            });\r\n            document.getElementById(tbodyId).innerHTML = html || \"<tr><td colspan='4'>No data<\/td><\/tr>\";\r\n        }\r\n\r\n        function updateDisplayToOriginal(){\r\n            renderRows(displayedData);\r\n        }\r\n\r\n        function handleSearch(query){\r\n            const q = (query || \"\").trim().toLowerCase();\r\n            if (!q) { updateDisplayToOriginal(); return; }\r\n\r\n            \/\/ Search across masterData if available; fallback to displayedData\r\n            const base = (masterData.length ? masterData : displayedData);\r\n            const filtered = base.filter(it => {\r\n                const nm = (it && (it.name || it.Symbol || it.symbol) || \"\").toLowerCase();\r\n                return nm.includes(q);\r\n            });\r\n            renderRows(filtered);\r\n        }\r\n\r\n        function attachSearchUI(){\r\n            if (!searchEnabled) return;\r\n\r\n            const btn = document.getElementById(searchBtnId);\r\n            const input = document.getElementById(searchInputId);\r\n            if (!btn || !input) return;\r\n\r\n            let open = false;\r\n            btn.addEventListener(\"click\", function(){\r\n                open = !open;\r\n                btn.setAttribute(\"aria-expanded\", open ? \"true\" : \"false\");\r\n                input.style.display = open ? \"block\" : \"none\";\r\n                if (open) { input.focus(); }\r\n                if (!open) { input.value = \"\"; updateDisplayToOriginal(); }\r\n            });\r\n\r\n            let t = null;\r\n            input.addEventListener(\"input\", function(){\r\n                const v = input.value;\r\n                if (t) clearTimeout(t);\r\n                t = setTimeout(() => handleSearch(v), 200);\r\n            });\r\n        }\r\n\r\n        \/\/ Initial load\r\n        Promise.all([\r\n            fetchSymbols(symbols).then(arr => { displayedData = arr || []; }).catch(() => { displayedData = []; }),\r\n            (searchEnabled && searchSymbols ? fetchSymbols(searchSymbols).then(arr => { masterData = arr || []; }).catch(() => { masterData = []; }) : Promise.resolve() )\r\n        ])\r\n        .then(() => {\r\n            renderRows(displayedData);\r\n            attachSearchUI();\r\n        })\r\n        .catch(e => {\r\n            document.getElementById(tbodyId).innerHTML = \"<tr><td colspan='4'>Error: \" + e + \"<\/td><\/tr>\";\r\n        });\r\n\r\n        \/\/ No auto-refresh by default\r\n        \/\/ setInterval(() => { \/* you can add refresh if needed *\/ }, 5000);\r\n        \r\n        \r\n        \r\n    })();\r\n    <\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"e-n-tab-content-1189770984\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-1189770984\" data-tab-index=\"4\" style=\"--n-tabs-title-order: 4;\" class=\" elementor-element elementor-element-fe89038 e-flex e-con-boxed e-con e-child\" data-id=\"fe89038\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e260398 elementor-widget elementor-widget-shortcode\" data-id=\"e260398\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div id=\"price_list_6a1f81f75f05f_container\" class=\"price-list-container\">\r\n        <div id=\"price_list_6a1f81f75f05f_searchwrap\" class=\"price-list-search\" style=\"margin-bottom:8px; display:flex; align-items:center; gap:8px;\">\r\n            <button type=\"button\" id=\"price_list_6a1f81f75f05f_searchbtn\" aria-expanded=\"false\" aria-controls=\"price_list_6a1f81f75f05f_searchinput\" style=\"border:none;background: unset !important;\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2025\/08\/search-normal.svg\" \/><\/button>\r\n            <input type=\"text\" id=\"price_list_6a1f81f75f05f_searchinput\" placeholder=\"Search...\"  style=\"display:none; max-width:220px; padding:6px 8px; border:1px solid #ccc; border-radius:6px;\" \/>\r\n        <\/div><div class=\"table-price-sc\"><table id=\"price_list_6a1f81f75f05f_table\" class=\"price-list-table\" border=\"1\" cellpadding=\"5\" cellspacing=\"0\"><thead><tr>\r\n                    <th>Symbol<\/th>\r\n                    <th>Sell<\/th>\r\n                    <th>Buy<\/th>\r\n                    <th>Spread<\/th>\r\n                <\/tr><\/thead><tbody id=\"price_list_6a1f81f75f05f_tbody\">\r\n                    <tr><td colspan=\"4\">Loading...<\/td><\/tr>\r\n                <\/tbody><\/table>\r\n    <\/div>\r\n    <\/div><script>\r\n    (function(){\r\n        const symbols         = \"fb,bac,dis,pg,jnj,amzn,v,aapl,nvda,wmt,pypl,jpm,msft,tsla,goog,ma,unh,hd\";\r\n        const searchEnabled   = true;\r\n        const searchSymbols   = \"usdjpy,eurusd,gbpusd,eurjpy,audchf,usdcad,eurcad,eurgbp,chfjpy,eurchf,audcad,eurnzd,euraud,usdchf,audjpy,gbpaud,nzdusd,gbpnzd,cadchf,usdsgd,gbpchf,cadjpy,gbpcad,nzdchf,gbpjpy,usdcnh,audusd,audnzd,nzdjpy,nzdcad,usdzar,btcusd,ethusd,xrpusd,eosusd,dshusd,ltcusd,bchusd,dotusd,lnkusd,adausd,xlmusd,bnbusd,xmrusd,iotusd,xtzusd,bsvusd,dogusd,glmusd,ksmusd,avxusd,solusd,uniusd,mtcusd,xauusd,xpdusd,xptusd,xagusd,xaueur,xaugbp,xaujpy,xauaud,xauchf,xagaud,xageur,fb,bac,dis,pg,jnj,amzn,v,aapl,nvda,wmt,pypl,jpm,msft,tsla,goog,ma,unh,hd,xbrusd,xtiusd,xngusd,us30,us500,de40,ustec,uk100,jp225,f40,stoxx50,aus200\";\r\n        const ajaxUrl         = \"https:\/\/fxtrendo.com\/wp-admin\/admin-ajax.php\";\r\n        const tbodyId         = \"price_list_6a1f81f75f05f_tbody\";\r\n        const nonce           = \"b1d4a2b4f5\";\r\n\r\n        const searchWrapId    = \"price_list_6a1f81f75f05f_searchwrap\";\r\n        const searchInputId   = \"price_list_6a1f81f75f05f_searchinput\";\r\n        const searchBtnId     = \"price_list_6a1f81f75f05f_searchbtn\";\r\n\r\n        let previousBuyValues  = {};\r\n        let previousSellValues = {};\r\n        let displayedData      = []; \/\/ data for current tab (price list)\r\n        let masterData         = []; \/\/ optional full dataset for searching across tabs\r\n\r\n        function toNum(v){\r\n            const n = parseFloat(v);\r\n            return Number.isFinite(n) ? n : NaN;\r\n        }\r\n\r\n        function normalizeArrayMaybe(data){\r\n            \/\/ Accept array or { getSymbol: [...] }\r\n            if (Array.isArray(data)) return data;\r\n            if (data && Array.isArray(data.getSymbol)) return data.getSymbol;\r\n            return [];\r\n        }\r\n\r\n        function fetchSymbols(list){\r\n            const url = ajaxUrl + \"?action=get_symbol_data&symbols=\" + encodeURIComponent(list) + \"&_ajax_nonce=\" + encodeURIComponent(nonce);\r\n            return fetch(url, { credentials: \"same-origin\" })\r\n                .then(r => r.json())\r\n                .then(j => {\r\n                    if (!j || !(\"success\" in j)) throw new Error(\"Unexpected response\");\r\n                    if (!j.success) throw new Error((j.data && j.data.message) || \"Unknown error\");\r\n                    return normalizeArrayMaybe(j.data);\r\n                });\r\n        }\r\n\r\n        function renderRows(rows){\r\n            let html = \"\";\r\n            rows.forEach(item => {\r\n                const name  = (item && (item.name || item.Symbol || item.symbol)) || \"\";\r\n                const sellV = item && (item.Ask  ?? item.ask  ?? item.sell ?? item.Sell);\r\n                const buyV  = item && (item.Bid  ?? item.bid  ?? item.buy  ?? item.Buy);\r\n                const sellN = toNum(sellV);\r\n                const buyN  = toNum(buyV);\r\n                const sellStr = (sellV !== undefined && sellV !== null) ? String(sellV) : \"\";\r\n                const buyStr  = (buyV  !== undefined && buyV  !== null) ? String(buyV)  : \"\";\r\n                const image = (item && (item.image || item.icon || \"\")) || \"\";\r\n                const sb   = item.symbol || \"\";\r\n                let spread = \"-\";\r\n                if (Number.isFinite(sellN) && Number.isFinite(buyN)) {\r\n                    const s = sellN - buyN;\r\n                    spread = (Math.abs(s) >= 1 ? s.toFixed(2) : s.toFixed(4));\r\n                }\r\n\r\n                let buyColor = \"white\";\r\n                let buyText  = buyStr;\r\n                if (name && Number.isFinite(buyN) && previousBuyValues[name] !== undefined) {\r\n                    const prev = previousBuyValues[name];\r\n                    if (Number.isFinite(prev)) {\r\n                        if (buyN > prev) { buyColor = \"green\"; buyText = \"+\" + buyStr; }\r\n                        else if (buyN < prev) { buyColor = \"red\"; buyText = \"-\" + buyStr; }\r\n                    }\r\n                }\r\n\r\n                let sellColor = \"white\";\r\n                let sellText  = sellStr;\r\n                if (name && Number.isFinite(sellN) && previousSellValues[name] !== undefined) {\r\n                    const prev = previousSellValues[name];\r\n                    if (Number.isFinite(prev)) {\r\n                        if (sellN > prev) { sellColor = \"green\"; sellText = \"+\" + sellStr; }\r\n                        else if (sellN < prev) { sellColor = \"red\"; sellText = \"-\" + sellStr; }\r\n                    }\r\n                }\r\n\r\n                if (name) {\r\n                    previousBuyValues[name]  = buyN;\r\n                    previousSellValues[name] = sellN;\r\n                }\r\n\r\n                html += \"<tr style='border-radius: 16px; background: rgba(112, 112, 112, 0.15); backdrop-filter: blur(4px); margin-top: 10px; margin-bottom: 10px;'>\";\r\n                html += '<td class=\"name-cell\"><a href=\"\/chart\/' + encodeURIComponent(sb) + '\/\"><img decoding=\"async\" src=\"' + image + '\" alt=\"' + name + '\" \/>' + name + '<\/a><\/td>';\r\n                html += '<td class=\"sell-cell\" style=\"color: ' + sellColor + ';\">' + sellText + '<\/td>';\r\n                html += '<td class=\"buy-cell\" style=\"color: ' + buyColor + ';\">' + buyText + '<\/td>';\r\n                html += '<td class=\"sp-cell\">' + spread + '<\/td>';\r\n                html += \"<\/tr>\";\r\n            });\r\n            document.getElementById(tbodyId).innerHTML = html || \"<tr><td colspan='4'>No data<\/td><\/tr>\";\r\n        }\r\n\r\n        function updateDisplayToOriginal(){\r\n            renderRows(displayedData);\r\n        }\r\n\r\n        function handleSearch(query){\r\n            const q = (query || \"\").trim().toLowerCase();\r\n            if (!q) { updateDisplayToOriginal(); return; }\r\n\r\n            \/\/ Search across masterData if available; fallback to displayedData\r\n            const base = (masterData.length ? masterData : displayedData);\r\n            const filtered = base.filter(it => {\r\n                const nm = (it && (it.name || it.Symbol || it.symbol) || \"\").toLowerCase();\r\n                return nm.includes(q);\r\n            });\r\n            renderRows(filtered);\r\n        }\r\n\r\n        function attachSearchUI(){\r\n            if (!searchEnabled) return;\r\n\r\n            const btn = document.getElementById(searchBtnId);\r\n            const input = document.getElementById(searchInputId);\r\n            if (!btn || !input) return;\r\n\r\n            let open = false;\r\n            btn.addEventListener(\"click\", function(){\r\n                open = !open;\r\n                btn.setAttribute(\"aria-expanded\", open ? \"true\" : \"false\");\r\n                input.style.display = open ? \"block\" : \"none\";\r\n                if (open) { input.focus(); }\r\n                if (!open) { input.value = \"\"; updateDisplayToOriginal(); }\r\n            });\r\n\r\n            let t = null;\r\n            input.addEventListener(\"input\", function(){\r\n                const v = input.value;\r\n                if (t) clearTimeout(t);\r\n                t = setTimeout(() => handleSearch(v), 200);\r\n            });\r\n        }\r\n\r\n        \/\/ Initial load\r\n        Promise.all([\r\n            fetchSymbols(symbols).then(arr => { displayedData = arr || []; }).catch(() => { displayedData = []; }),\r\n            (searchEnabled && searchSymbols ? fetchSymbols(searchSymbols).then(arr => { masterData = arr || []; }).catch(() => { masterData = []; }) : Promise.resolve() )\r\n        ])\r\n        .then(() => {\r\n            renderRows(displayedData);\r\n            attachSearchUI();\r\n        })\r\n        .catch(e => {\r\n            document.getElementById(tbodyId).innerHTML = \"<tr><td colspan='4'>Error: \" + e + \"<\/td><\/tr>\";\r\n        });\r\n\r\n        \/\/ No auto-refresh by default\r\n        \/\/ setInterval(() => { \/* you can add refresh if needed *\/ }, 5000);\r\n        \r\n        \r\n        \r\n    })();\r\n    <\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"e-n-tab-content-1189770985\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-1189770985\" data-tab-index=\"5\" style=\"--n-tabs-title-order: 5;\" class=\" elementor-element elementor-element-3293af6 e-flex e-con-boxed e-con e-child\" data-id=\"3293af6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-56ac1b3 elementor-widget elementor-widget-shortcode\" data-id=\"56ac1b3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div id=\"price_list_6a1f81f75f57b_container\" class=\"price-list-container\">\r\n        <div id=\"price_list_6a1f81f75f57b_searchwrap\" class=\"price-list-search\" style=\"margin-bottom:8px; display:flex; align-items:center; gap:8px;\">\r\n            <button type=\"button\" id=\"price_list_6a1f81f75f57b_searchbtn\" aria-expanded=\"false\" aria-controls=\"price_list_6a1f81f75f57b_searchinput\" style=\"border:none;background: unset !important;\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2025\/08\/search-normal.svg\" \/><\/button>\r\n            <input type=\"text\" id=\"price_list_6a1f81f75f57b_searchinput\" placeholder=\"Search...\"  style=\"display:none; max-width:220px; padding:6px 8px; border:1px solid #ccc; border-radius:6px;\" \/>\r\n        <\/div><div class=\"table-price-sc\"><table id=\"price_list_6a1f81f75f57b_table\" class=\"price-list-table\" border=\"1\" cellpadding=\"5\" cellspacing=\"0\"><thead><tr>\r\n                    <th>Symbol<\/th>\r\n                    <th>Sell<\/th>\r\n                    <th>Buy<\/th>\r\n                    <th>Spread<\/th>\r\n                <\/tr><\/thead><tbody id=\"price_list_6a1f81f75f57b_tbody\">\r\n                    <tr><td colspan=\"4\">Loading...<\/td><\/tr>\r\n                <\/tbody><\/table>\r\n    <\/div>\r\n    <\/div><script>\r\n    (function(){\r\n        const symbols         = \"xbrusd,xtiusd,xngusd\";\r\n        const searchEnabled   = true;\r\n        const searchSymbols   = \"usdjpy,eurusd,gbpusd,eurjpy,audchf,usdcad,eurcad,eurgbp,chfjpy,eurchf,audcad,eurnzd,euraud,usdchf,audjpy,gbpaud,nzdusd,gbpnzd,cadchf,usdsgd,gbpchf,cadjpy,gbpcad,nzdchf,gbpjpy,usdcnh,audusd,audnzd,nzdjpy,nzdcad,usdzar,btcusd,ethusd,xrpusd,eosusd,dshusd,ltcusd,bchusd,dotusd,lnkusd,adausd,xlmusd,bnbusd,xmrusd,iotusd,xtzusd,bsvusd,dogusd,glmusd,ksmusd,avxusd,solusd,uniusd,mtcusd,xauusd,xpdusd,xptusd,xagusd,xaueur,xaugbp,xaujpy,xauaud,xauchf,xagaud,xageur,fb,bac,dis,pg,jnj,amzn,v,aapl,nvda,wmt,pypl,jpm,msft,tsla,goog,ma,unh,hd,xbrusd,xtiusd,xngusd,us30,us500,de40,ustec,uk100,jp225,f40,stoxx50,aus200\";\r\n        const ajaxUrl         = \"https:\/\/fxtrendo.com\/wp-admin\/admin-ajax.php\";\r\n        const tbodyId         = \"price_list_6a1f81f75f57b_tbody\";\r\n        const nonce           = \"b1d4a2b4f5\";\r\n\r\n        const searchWrapId    = \"price_list_6a1f81f75f57b_searchwrap\";\r\n        const searchInputId   = \"price_list_6a1f81f75f57b_searchinput\";\r\n        const searchBtnId     = \"price_list_6a1f81f75f57b_searchbtn\";\r\n\r\n        let previousBuyValues  = {};\r\n        let previousSellValues = {};\r\n        let displayedData      = []; \/\/ data for current tab (price list)\r\n        let masterData         = []; \/\/ optional full dataset for searching across tabs\r\n\r\n        function toNum(v){\r\n            const n = parseFloat(v);\r\n            return Number.isFinite(n) ? n : NaN;\r\n        }\r\n\r\n        function normalizeArrayMaybe(data){\r\n            \/\/ Accept array or { getSymbol: [...] }\r\n            if (Array.isArray(data)) return data;\r\n            if (data && Array.isArray(data.getSymbol)) return data.getSymbol;\r\n            return [];\r\n        }\r\n\r\n        function fetchSymbols(list){\r\n            const url = ajaxUrl + \"?action=get_symbol_data&symbols=\" + encodeURIComponent(list) + \"&_ajax_nonce=\" + encodeURIComponent(nonce);\r\n            return fetch(url, { credentials: \"same-origin\" })\r\n                .then(r => r.json())\r\n                .then(j => {\r\n                    if (!j || !(\"success\" in j)) throw new Error(\"Unexpected response\");\r\n                    if (!j.success) throw new Error((j.data && j.data.message) || \"Unknown error\");\r\n                    return normalizeArrayMaybe(j.data);\r\n                });\r\n        }\r\n\r\n        function renderRows(rows){\r\n            let html = \"\";\r\n            rows.forEach(item => {\r\n                const name  = (item && (item.name || item.Symbol || item.symbol)) || \"\";\r\n                const sellV = item && (item.Ask  ?? item.ask  ?? item.sell ?? item.Sell);\r\n                const buyV  = item && (item.Bid  ?? item.bid  ?? item.buy  ?? item.Buy);\r\n                const sellN = toNum(sellV);\r\n                const buyN  = toNum(buyV);\r\n                const sellStr = (sellV !== undefined && sellV !== null) ? String(sellV) : \"\";\r\n                const buyStr  = (buyV  !== undefined && buyV  !== null) ? String(buyV)  : \"\";\r\n                const image = (item && (item.image || item.icon || \"\")) || \"\";\r\n                const sb   = item.symbol || \"\";\r\n                let spread = \"-\";\r\n                if (Number.isFinite(sellN) && Number.isFinite(buyN)) {\r\n                    const s = sellN - buyN;\r\n                    spread = (Math.abs(s) >= 1 ? s.toFixed(2) : s.toFixed(4));\r\n                }\r\n\r\n                let buyColor = \"white\";\r\n                let buyText  = buyStr;\r\n                if (name && Number.isFinite(buyN) && previousBuyValues[name] !== undefined) {\r\n                    const prev = previousBuyValues[name];\r\n                    if (Number.isFinite(prev)) {\r\n                        if (buyN > prev) { buyColor = \"green\"; buyText = \"+\" + buyStr; }\r\n                        else if (buyN < prev) { buyColor = \"red\"; buyText = \"-\" + buyStr; }\r\n                    }\r\n                }\r\n\r\n                let sellColor = \"white\";\r\n                let sellText  = sellStr;\r\n                if (name && Number.isFinite(sellN) && previousSellValues[name] !== undefined) {\r\n                    const prev = previousSellValues[name];\r\n                    if (Number.isFinite(prev)) {\r\n                        if (sellN > prev) { sellColor = \"green\"; sellText = \"+\" + sellStr; }\r\n                        else if (sellN < prev) { sellColor = \"red\"; sellText = \"-\" + sellStr; }\r\n                    }\r\n                }\r\n\r\n                if (name) {\r\n                    previousBuyValues[name]  = buyN;\r\n                    previousSellValues[name] = sellN;\r\n                }\r\n\r\n                html += \"<tr style='border-radius: 16px; background: rgba(112, 112, 112, 0.15); backdrop-filter: blur(4px); margin-top: 10px; margin-bottom: 10px;'>\";\r\n                html += '<td class=\"name-cell\"><a href=\"\/chart\/' + encodeURIComponent(sb) + '\/\"><img decoding=\"async\" src=\"' + image + '\" alt=\"' + name + '\" \/>' + name + '<\/a><\/td>';\r\n                html += '<td class=\"sell-cell\" style=\"color: ' + sellColor + ';\">' + sellText + '<\/td>';\r\n                html += '<td class=\"buy-cell\" style=\"color: ' + buyColor + ';\">' + buyText + '<\/td>';\r\n                html += '<td class=\"sp-cell\">' + spread + '<\/td>';\r\n                html += \"<\/tr>\";\r\n            });\r\n            document.getElementById(tbodyId).innerHTML = html || \"<tr><td colspan='4'>No data<\/td><\/tr>\";\r\n        }\r\n\r\n        function updateDisplayToOriginal(){\r\n            renderRows(displayedData);\r\n        }\r\n\r\n        function handleSearch(query){\r\n            const q = (query || \"\").trim().toLowerCase();\r\n            if (!q) { updateDisplayToOriginal(); return; }\r\n\r\n            \/\/ Search across masterData if available; fallback to displayedData\r\n            const base = (masterData.length ? masterData : displayedData);\r\n            const filtered = base.filter(it => {\r\n                const nm = (it && (it.name || it.Symbol || it.symbol) || \"\").toLowerCase();\r\n                return nm.includes(q);\r\n            });\r\n            renderRows(filtered);\r\n        }\r\n\r\n        function attachSearchUI(){\r\n            if (!searchEnabled) return;\r\n\r\n            const btn = document.getElementById(searchBtnId);\r\n            const input = document.getElementById(searchInputId);\r\n            if (!btn || !input) return;\r\n\r\n            let open = false;\r\n            btn.addEventListener(\"click\", function(){\r\n                open = !open;\r\n                btn.setAttribute(\"aria-expanded\", open ? \"true\" : \"false\");\r\n                input.style.display = open ? \"block\" : \"none\";\r\n                if (open) { input.focus(); }\r\n                if (!open) { input.value = \"\"; updateDisplayToOriginal(); }\r\n            });\r\n\r\n            let t = null;\r\n            input.addEventListener(\"input\", function(){\r\n                const v = input.value;\r\n                if (t) clearTimeout(t);\r\n                t = setTimeout(() => handleSearch(v), 200);\r\n            });\r\n        }\r\n\r\n        \/\/ Initial load\r\n        Promise.all([\r\n            fetchSymbols(symbols).then(arr => { displayedData = arr || []; }).catch(() => { displayedData = []; }),\r\n            (searchEnabled && searchSymbols ? fetchSymbols(searchSymbols).then(arr => { masterData = arr || []; }).catch(() => { masterData = []; }) : Promise.resolve() )\r\n        ])\r\n        .then(() => {\r\n            renderRows(displayedData);\r\n            attachSearchUI();\r\n        })\r\n        .catch(e => {\r\n            document.getElementById(tbodyId).innerHTML = \"<tr><td colspan='4'>Error: \" + e + \"<\/td><\/tr>\";\r\n        });\r\n\r\n        \/\/ No auto-refresh by default\r\n        \/\/ setInterval(() => { \/* you can add refresh if needed *\/ }, 5000);\r\n        \r\n        \r\n        \r\n    })();\r\n    <\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"e-n-tab-content-1189770986\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-1189770986\" data-tab-index=\"6\" style=\"--n-tabs-title-order: 6;\" class=\" elementor-element elementor-element-3cdfe9b e-flex e-con-boxed e-con e-child\" data-id=\"3cdfe9b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9787659 elementor-widget elementor-widget-shortcode\" data-id=\"9787659\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div id=\"price_list_6a1f81f75fa85_container\" class=\"price-list-container\">\r\n        <div id=\"price_list_6a1f81f75fa85_searchwrap\" class=\"price-list-search\" style=\"margin-bottom:8px; display:flex; align-items:center; gap:8px;\">\r\n            <button type=\"button\" id=\"price_list_6a1f81f75fa85_searchbtn\" aria-expanded=\"false\" aria-controls=\"price_list_6a1f81f75fa85_searchinput\" style=\"border:none;background: unset !important;\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2025\/08\/search-normal.svg\" \/><\/button>\r\n            <input type=\"text\" id=\"price_list_6a1f81f75fa85_searchinput\" placeholder=\"Search...\"  style=\"display:none; max-width:220px; padding:6px 8px; border:1px solid #ccc; border-radius:6px;\" \/>\r\n        <\/div><div class=\"table-price-sc\"><table id=\"price_list_6a1f81f75fa85_table\" class=\"price-list-table\" border=\"1\" cellpadding=\"5\" cellspacing=\"0\"><thead><tr>\r\n                    <th>Symbol<\/th>\r\n                    <th>Sell<\/th>\r\n                    <th>Buy<\/th>\r\n                    <th>Spread<\/th>\r\n                <\/tr><\/thead><tbody id=\"price_list_6a1f81f75fa85_tbody\">\r\n                    <tr><td colspan=\"4\">Loading...<\/td><\/tr>\r\n                <\/tbody><\/table>\r\n    <\/div>\r\n    <\/div><script>\r\n    (function(){\r\n        const symbols         = \"us30,us500,de40,ustec,uk100,jp225,f40,stoxx50,aus200\";\r\n        const searchEnabled   = true;\r\n        const searchSymbols   = \"usdjpy,eurusd,gbpusd,eurjpy,audchf,usdcad,eurcad,eurgbp,chfjpy,eurchf,audcad,eurnzd,euraud,usdchf,audjpy,gbpaud,nzdusd,gbpnzd,cadchf,usdsgd,gbpchf,cadjpy,gbpcad,nzdchf,gbpjpy,usdcnh,audusd,audnzd,nzdjpy,nzdcad,usdzar,btcusd,ethusd,xrpusd,eosusd,dshusd,ltcusd,bchusd,dotusd,lnkusd,adausd,xlmusd,bnbusd,xmrusd,iotusd,xtzusd,bsvusd,dogusd,glmusd,ksmusd,avxusd,solusd,uniusd,mtcusd,xauusd,xpdusd,xptusd,xagusd,xaueur,xaugbp,xaujpy,xauaud,xauchf,xagaud,xageur,fb,bac,dis,pg,jnj,amzn,v,aapl,nvda,wmt,pypl,jpm,msft,tsla,goog,ma,unh,hd,xbrusd,xtiusd,xngusd,us30,us500,de40,ustec,uk100,jp225,f40,stoxx50,aus200\";\r\n        const ajaxUrl         = \"https:\/\/fxtrendo.com\/wp-admin\/admin-ajax.php\";\r\n        const tbodyId         = \"price_list_6a1f81f75fa85_tbody\";\r\n        const nonce           = \"b1d4a2b4f5\";\r\n\r\n        const searchWrapId    = \"price_list_6a1f81f75fa85_searchwrap\";\r\n        const searchInputId   = \"price_list_6a1f81f75fa85_searchinput\";\r\n        const searchBtnId     = \"price_list_6a1f81f75fa85_searchbtn\";\r\n\r\n        let previousBuyValues  = {};\r\n        let previousSellValues = {};\r\n        let displayedData      = []; \/\/ data for current tab (price list)\r\n        let masterData         = []; \/\/ optional full dataset for searching across tabs\r\n\r\n        function toNum(v){\r\n            const n = parseFloat(v);\r\n            return Number.isFinite(n) ? n : NaN;\r\n        }\r\n\r\n        function normalizeArrayMaybe(data){\r\n            \/\/ Accept array or { getSymbol: [...] }\r\n            if (Array.isArray(data)) return data;\r\n            if (data && Array.isArray(data.getSymbol)) return data.getSymbol;\r\n            return [];\r\n        }\r\n\r\n        function fetchSymbols(list){\r\n            const url = ajaxUrl + \"?action=get_symbol_data&symbols=\" + encodeURIComponent(list) + \"&_ajax_nonce=\" + encodeURIComponent(nonce);\r\n            return fetch(url, { credentials: \"same-origin\" })\r\n                .then(r => r.json())\r\n                .then(j => {\r\n                    if (!j || !(\"success\" in j)) throw new Error(\"Unexpected response\");\r\n                    if (!j.success) throw new Error((j.data && j.data.message) || \"Unknown error\");\r\n                    return normalizeArrayMaybe(j.data);\r\n                });\r\n        }\r\n\r\n        function renderRows(rows){\r\n            let html = \"\";\r\n            rows.forEach(item => {\r\n                const name  = (item && (item.name || item.Symbol || item.symbol)) || \"\";\r\n                const sellV = item && (item.Ask  ?? item.ask  ?? item.sell ?? item.Sell);\r\n                const buyV  = item && (item.Bid  ?? item.bid  ?? item.buy  ?? item.Buy);\r\n                const sellN = toNum(sellV);\r\n                const buyN  = toNum(buyV);\r\n                const sellStr = (sellV !== undefined && sellV !== null) ? String(sellV) : \"\";\r\n                const buyStr  = (buyV  !== undefined && buyV  !== null) ? String(buyV)  : \"\";\r\n                const image = (item && (item.image || item.icon || \"\")) || \"\";\r\n                const sb   = item.symbol || \"\";\r\n                let spread = \"-\";\r\n                if (Number.isFinite(sellN) && Number.isFinite(buyN)) {\r\n                    const s = sellN - buyN;\r\n                    spread = (Math.abs(s) >= 1 ? s.toFixed(2) : s.toFixed(4));\r\n                }\r\n\r\n                let buyColor = \"white\";\r\n                let buyText  = buyStr;\r\n                if (name && Number.isFinite(buyN) && previousBuyValues[name] !== undefined) {\r\n                    const prev = previousBuyValues[name];\r\n                    if (Number.isFinite(prev)) {\r\n                        if (buyN > prev) { buyColor = \"green\"; buyText = \"+\" + buyStr; }\r\n                        else if (buyN < prev) { buyColor = \"red\"; buyText = \"-\" + buyStr; }\r\n                    }\r\n                }\r\n\r\n                let sellColor = \"white\";\r\n                let sellText  = sellStr;\r\n                if (name && Number.isFinite(sellN) && previousSellValues[name] !== undefined) {\r\n                    const prev = previousSellValues[name];\r\n                    if (Number.isFinite(prev)) {\r\n                        if (sellN > prev) { sellColor = \"green\"; sellText = \"+\" + sellStr; }\r\n                        else if (sellN < prev) { sellColor = \"red\"; sellText = \"-\" + sellStr; }\r\n                    }\r\n                }\r\n\r\n                if (name) {\r\n                    previousBuyValues[name]  = buyN;\r\n                    previousSellValues[name] = sellN;\r\n                }\r\n\r\n                html += \"<tr style='border-radius: 16px; background: rgba(112, 112, 112, 0.15); backdrop-filter: blur(4px); margin-top: 10px; margin-bottom: 10px;'>\";\r\n                html += '<td class=\"name-cell\"><a href=\"\/chart\/' + encodeURIComponent(sb) + '\/\"><img decoding=\"async\" src=\"' + image + '\" alt=\"' + name + '\" \/>' + name + '<\/a><\/td>';\r\n                html += '<td class=\"sell-cell\" style=\"color: ' + sellColor + ';\">' + sellText + '<\/td>';\r\n                html += '<td class=\"buy-cell\" style=\"color: ' + buyColor + ';\">' + buyText + '<\/td>';\r\n                html += '<td class=\"sp-cell\">' + spread + '<\/td>';\r\n                html += \"<\/tr>\";\r\n            });\r\n            document.getElementById(tbodyId).innerHTML = html || \"<tr><td colspan='4'>No data<\/td><\/tr>\";\r\n        }\r\n\r\n        function updateDisplayToOriginal(){\r\n            renderRows(displayedData);\r\n        }\r\n\r\n        function handleSearch(query){\r\n            const q = (query || \"\").trim().toLowerCase();\r\n            if (!q) { updateDisplayToOriginal(); return; }\r\n\r\n            \/\/ Search across masterData if available; fallback to displayedData\r\n            const base = (masterData.length ? masterData : displayedData);\r\n            const filtered = base.filter(it => {\r\n                const nm = (it && (it.name || it.Symbol || it.symbol) || \"\").toLowerCase();\r\n                return nm.includes(q);\r\n            });\r\n            renderRows(filtered);\r\n        }\r\n\r\n        function attachSearchUI(){\r\n            if (!searchEnabled) return;\r\n\r\n            const btn = document.getElementById(searchBtnId);\r\n            const input = document.getElementById(searchInputId);\r\n            if (!btn || !input) return;\r\n\r\n            let open = false;\r\n            btn.addEventListener(\"click\", function(){\r\n                open = !open;\r\n                btn.setAttribute(\"aria-expanded\", open ? \"true\" : \"false\");\r\n                input.style.display = open ? \"block\" : \"none\";\r\n                if (open) { input.focus(); }\r\n                if (!open) { input.value = \"\"; updateDisplayToOriginal(); }\r\n            });\r\n\r\n            let t = null;\r\n            input.addEventListener(\"input\", function(){\r\n                const v = input.value;\r\n                if (t) clearTimeout(t);\r\n                t = setTimeout(() => handleSearch(v), 200);\r\n            });\r\n        }\r\n\r\n        \/\/ Initial load\r\n        Promise.all([\r\n            fetchSymbols(symbols).then(arr => { displayedData = arr || []; }).catch(() => { displayedData = []; }),\r\n            (searchEnabled && searchSymbols ? fetchSymbols(searchSymbols).then(arr => { masterData = arr || []; }).catch(() => { masterData = []; }) : Promise.resolve() )\r\n        ])\r\n        .then(() => {\r\n            renderRows(displayedData);\r\n            attachSearchUI();\r\n        })\r\n        .catch(e => {\r\n            document.getElementById(tbodyId).innerHTML = \"<tr><td colspan='4'>Error: \" + e + \"<\/td><\/tr>\";\r\n        });\r\n\r\n        \/\/ No auto-refresh by default\r\n        \/\/ setInterval(() => { \/* you can add refresh if needed *\/ }, 5000);\r\n        \r\n        \r\n        \r\n    })();\r\n    <\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e88ace0 e-flex e-con-boxed e-con e-parent\" data-id=\"e88ace0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-50a4181 elementor-widget elementor-widget-heading\" data-id=\"50a4181\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Harga Aset Real-Time di Pasar Global\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-29bcddc elementor-widget elementor-widget-text-editor\" data-id=\"29bcddc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Akses ke harga aset real-time adalah salah satu kebutuhan paling penting bagi trader profesional. Bagian ini menampilkan harga aset yang real-time dan akurat seperti pasangan mata uang, emas, minyak, mata uang kripto, indeks, dan saham. Wawasan ini membantu Anda membuat keputusan tepat waktu, memanfaatkan peluang pasar, dan selalu selangkah lebih maju dari pergerakan harga.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-286ec85 e-flex e-con-boxed e-con e-parent\" data-id=\"286ec85\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-42cd94d elementor-widget elementor-widget-heading\" data-id=\"42cd94d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Alasan di Balik Keunikan Harga Real-Time di Trendo\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f9d4ef2 elementor-widget elementor-widget-text-editor\" data-id=\"f9d4ef2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Penetapan harga real-time Trendo terhubung langsung dengan penyedia likuiditas tepercaya, memiliki kecepatan pembaruan yang sangat tinggi, dan mencakup lebih dari 100 simbol yang dapat ditradingkan, memberikan Anda data yang transparan dan andal yang memungkinkan scalping yang cepat dan presisi, perbandingan harga, serta manajemen risiko yang efektif.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-da849dc e-flex e-con-boxed e-con e-parent\" data-id=\"da849dc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-6b5a7de e-con-full e-flex e-con e-child\" data-id=\"6b5a7de\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-392a791 min-box-he elementor-view-default elementor-position-block-start elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"392a791\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\"><g id=\"vuesax\/bulk\/mobile\"><g id=\"mobile\"><path id=\"Vector\" opacity=\"0.4\" d=\"M32.48 4H15.52C10 4 8 6 8 11.62V36.38C8 42 10 44 15.52 44H32.46C38 44 40 42 40 36.38V11.62C40 6 38 4 32.48 4Z\" fill=\"#00B781\"><\/path><path id=\"Vector_2\" d=\"M28 12.5H20C19.18 12.5 18.5 11.82 18.5 11C18.5 10.18 19.18 9.5 20 9.5H28C28.82 9.5 29.5 10.18 29.5 11C29.5 11.82 28.82 12.5 28 12.5Z\" fill=\"white\"><\/path><path id=\"Vector_3\" d=\"M24 38.5996C25.933 38.5996 27.5 37.0326 27.5 35.0996C27.5 33.1666 25.933 31.5996 24 31.5996C22.067 31.5996 20.5 33.1666 20.5 35.0996C20.5 37.0326 22.067 38.5996 24 38.5996Z\" fill=\"white\"><\/path><\/g><\/g><\/svg>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tPembaruan instan\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h3>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tHarga dialirkan langsung dari berbagai penyedia likuiditas tingkat pertama dan ditampilkan di platform tanpa perantara. Setiap pergerakan harga diperbarui secara instan untuk memastikan Anda tidak pernah melewatkan peluang trading.\n\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7a32665 e-con-full e-flex e-con e-child\" data-id=\"7a32665\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-182c0cb min-box-he elementor-view-default elementor-position-block-start elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"182c0cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\"><g id=\"vuesax\/bulk\/shield-tick\"><g id=\"shield-tick\"><path id=\"Vector\" opacity=\"0.4\" d=\"M21.9216 4.12016L10.9216 8.24016C8.82156 9.04016 7.10156 11.5202 7.10156 13.7802V29.9802C7.10156 31.6002 8.16156 33.7402 9.46156 34.7002L20.4616 42.9202C22.4016 44.3802 25.5816 44.3802 27.5216 42.9202L38.5216 34.7002C39.8216 33.7202 40.8816 31.6002 40.8816 29.9802V13.7802C40.8816 11.5402 39.1616 9.04016 37.0616 8.26016L26.0616 4.14016C24.9416 3.70016 23.0616 3.70016 21.9216 4.12016Z\" fill=\"#00B781\"><\/path><path id=\"Vector_2\" d=\"M21.3166 28.4602C20.9366 28.4602 20.5566 28.3202 20.2566 28.0202L17.0366 24.8002C16.4566 24.2202 16.4566 23.2602 17.0366 22.6802C17.6166 22.1002 18.5766 22.1002 19.1566 22.6802L21.3166 24.8402L28.8566 17.3002C29.4366 16.7202 30.3966 16.7202 30.9766 17.3002C31.5566 17.8802 31.5566 18.8402 30.9766 19.4202L22.3766 28.0202C22.0766 28.3202 21.6966 28.4602 21.3166 28.4602Z\" fill=\"white\"><\/path><\/g><\/g><\/svg>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tCakupan lebih dari 100 simbol\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h3>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tSemua pasangan forex mayor dan minor, logam mulia, aset energi, indeks, saham, dan mata uang kripto disatukan dalam satu dasbor, memungkinkan Anda memantau portofolio yang beragam <br> dalam sekejap.\n\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5e56587 e-con-full e-flex e-con e-child\" data-id=\"5e56587\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-407ef40 min-box-he elementor-view-default elementor-position-block-start elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"407ef40\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\"><g id=\"vuesax\/bulk\/chart\"><g id=\"chart\"><g id=\"chart_2\"><path id=\"Vector\" opacity=\"0.4\" d=\"M32.38 4H15.62C8.34 4 4 8.34 4 15.62V32.36C4 39.66 8.34 44 15.62 44H32.36C39.64 44 43.98 39.66 43.98 32.38V15.62C44 8.34 39.66 4 32.38 4Z\" fill=\"#00B781\"><\/path><path id=\"Vector_2\" d=\"M14 28.6998C13.18 28.6998 12.5 28.0198 12.5 27.1998V20.7998C12.5 19.9798 13.18 19.2998 14 19.2998C14.82 19.2998 15.5 19.9798 15.5 20.7998V27.2198C15.5 28.0398 14.82 28.6998 14 28.6998Z\" fill=\"white\"><\/path><path id=\"Vector_3\" d=\"M24 32.1803C23.18 32.1803 22.5 31.5003 22.5 30.6803V17.3203C22.5 16.5003 23.18 15.8203 24 15.8203C24.82 15.8203 25.5 16.5003 25.5 17.3203V30.6803C25.5 31.5003 24.82 32.1803 24 32.1803Z\" fill=\"white\"><\/path><path id=\"Vector_4\" d=\"M34 28.6998C33.18 28.6998 32.5 28.0198 32.5 27.1998V20.7998C32.5 19.9798 33.18 19.2998 34 19.2998C34.82 19.2998 35.5 19.9798 35.5 20.7998V27.2198C35.5 28.0398 34.82 28.6998 34 28.6998Z\" fill=\"white\"><\/path><\/g><\/g><\/g><\/svg>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tData yang transparan dan andal\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h3>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tHarga disajikan tanpa manipulasi dan dengan kedalaman pasar penuh, disertai riwayat harga yang lengkap dan alat pemfilteran canggih, sehingga Anda dapat membuat keputusan trading dengan keyakinan maksimal.\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9968aec e-flex e-con-boxed e-con e-parent\" data-id=\"9968aec\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5f2467b elementor-widget elementor-widget-heading\" data-id=\"5f2467b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Siap Memasuki Dunia Trading bersama Trendo?\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-664f894 elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"664f894\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\">Daftar dalam waktu kurang dari satu menit dan mulai trading di platform eksklusif kami.\n<\/span>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0ca5de6 elementor-align-right elementor-mobile-align-center cutomicon elementor-widget elementor-widget-button\" data-id=\"0ca5de6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/my.fxtrendo.com\/sign-in\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><g id=\"vuesax\/outline\/arrow-right\"><g id=\"arrow-right\"><path id=\"Vector\" d=\"M14.4291 18.8201C14.2391 18.8201 14.0491 18.7501 13.8991 18.6001C13.6091 18.3101 13.6091 17.8301 13.8991 17.5401L19.4391 12.0001L13.8991 6.46012C13.6091 6.17012 13.6091 5.69012 13.8991 5.40012C14.1891 5.11012 14.6691 5.11012 14.9591 5.40012L21.0291 11.4701C21.3191 11.7601 21.3191 12.2401 21.0291 12.5301L14.9591 18.6001C14.8091 18.7501 14.6191 18.8201 14.4291 18.8201Z\" fill=\"white\"><\/path><path id=\"Vector_2\" d=\"M20.33 12.75H3.5C3.09 12.75 2.75 12.41 2.75 12C2.75 11.59 3.09 11.25 3.5 11.25H20.33C20.74 11.25 21.08 11.59 21.08 12C21.08 12.41 20.74 12.75 20.33 12.75Z\" fill=\"white\"><\/path><\/g><\/g><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Daftar<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8e0e41c elementor-align-left elementor-mobile-align-center cutomicon elementor-widget elementor-widget-button\" data-id=\"8e0e41c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/fxtrendo.com\/platforms\/web\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\"><g id=\"vuesax\/outline\/arrow-right\"><g id=\"arrow-right\"><path id=\"Vector\" d=\"M14.4291 19.3191C14.2391 19.3191 14.0491 19.2491 13.8991 19.0991C13.6091 18.8091 13.6091 18.3291 13.8991 18.0391L19.4391 12.4991L13.8991 6.95914C13.6091 6.66914 13.6091 6.18914 13.8991 5.89914C14.1891 5.60914 14.6691 5.60914 14.9591 5.89914L21.0291 11.9691C21.3191 12.2591 21.3191 12.7391 21.0291 13.0291L14.9591 19.0991C14.8091 19.2491 14.6191 19.3191 14.4291 19.3191Z\" fill=\"#00B781\"><\/path><path id=\"Vector_2\" d=\"M20.33 13.25H3.5C3.09 13.25 2.75 12.91 2.75 12.5C2.75 12.09 3.09 11.75 3.5 11.75H20.33C20.74 11.75 21.08 12.09 21.08 12.5C21.08 12.91 20.74 13.25 20.33 13.25Z\" fill=\"#00B781\"><\/path><\/g><\/g><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Akun Demo<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Harga Aset Real-Time Harga Aset Real-Time Pada bagian ini, Anda dapat melihat harga real-time dari berbagai macam aset, termasuk pasangan forex, mata uang kripto, logam, energi, indeks, dan saham global. Forex Mata Uang Kripto Logam Saham Energi Indeks Symbol Sell Buy Spread Loading&#8230; Symbol Sell Buy Spread Loading&#8230; Symbol Sell Buy Spread Loading&#8230; Symbol Sell [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":62733,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_angie_page":false,"inline_featured_image":false,"fxtrendo_post_editor":0,"footnotes":""},"class_list":["post-62734","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"fxtrendo_editor":0,"_links":{"self":[{"href":"https:\/\/fxtrendo.com\/id\/wp-json\/wp\/v2\/pages\/62734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fxtrendo.com\/id\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fxtrendo.com\/id\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fxtrendo.com\/id\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/fxtrendo.com\/id\/wp-json\/wp\/v2\/comments?post=62734"}],"version-history":[{"count":5,"href":"https:\/\/fxtrendo.com\/id\/wp-json\/wp\/v2\/pages\/62734\/revisions"}],"predecessor-version":[{"id":62744,"href":"https:\/\/fxtrendo.com\/id\/wp-json\/wp\/v2\/pages\/62734\/revisions\/62744"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fxtrendo.com\/id\/wp-json\/wp\/v2\/media\/62733"}],"wp:attachment":[{"href":"https:\/\/fxtrendo.com\/id\/wp-json\/wp\/v2\/media?parent=62734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}