CINXE.COM
Latest News Stream
<!doctype html> <html > <head id="ctl00_Head1"><meta charset="utf-8" /><title> Latest News Stream </title><meta id="metaDesc" name="description" content="Trading Economics provides data for 20 million economic indicators from 196 countries including actual values, consensus figures, forecasts, historical time series and news. Latest News Stream - was last updated on Monday, February 24, 2025." /><meta id="metaKeyword" name="keywords" content="Latest News Stream, economic indicators, data, actual values, historical, time series, forecasts, news" /><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1" /><meta name="theme-color" content="#333333" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.3/css/bootstrap.min.css" integrity="sha512-SbiR/eusphKoMVVXysTKG/7VseWii+Y3FdHrt0EpKgpToZeemhqHeZeLWLhJutz/2ut2Vw1uQEj2MbRF+TVBUA==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-icons/1.10.2/font/bootstrap-icons.min.css" integrity="sha512-YFENbnqHbCRmJt5d+9lHimyEMt8LKSNTMLSaHjvsclnZGICeY/0KYEeiHwD1Ux4Tcao0h60tdcMv+0GljvWyHg==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <link href="//d3fy651gv2fhd3.cloudfront.net/stylesheet.min.css?v=20250218c" rel="stylesheet" /> <script type="text/javascript">var TEChartSettings = {}; var TESymbol = ''; var TECountry = ''; var TECategory = ''; var TEFrequency = ''; var TELanguage = ''; var TELastUpdate = '20250131000000'; var TEChartVersion = ''; var symbol = ''; var symbolType = ''; var hasCalendar = false; var isLoggedIn = false; var TEAlertsName = ''; var TEChartsDatasource = 'https://d3ii0wo49og5mi.cloudfront.net'; var IsMobile = false; var TEChartsMeta = ''; var TEForecast = []; var TEAuthorization = ''; var TESecurify = ''; var TESecurifyUrl = ''; var TEType = ''; var TEChartUrl = '/stream'; var TEComparable = 0; var isAlertsLoaded = false; var IsDarkMode = false; var isPakoLoaded = false; var TEChartsToken = '20240229:nazare'; var TEObfuscationkey = 'tradingeconomics-charts-core-api-key'; var isCopyright = false;</script> <script type="text/javascript">var DEBUG = false;if (window.location.host.indexOf('localhost') > -1) DEBUG = true;else if (window.location.href.indexOf('debug') > -1) DEBUG = true;if (!DEBUG) {if (!window.console) window.console = {};var methods = ["log", "debug", "info"];for (var i = 0; i < methods.length; i++) {console[methods[i]] = function () { };}}</script> <link rel="icon" href="//d3fy651gv2fhd3.cloudfront.net/favicon.ico" /><link rel="canonical" href="https://tradingeconomics.com/stream" /></head> <body > <script>IsDarkMode=false;</script> <form method="post" action="/stream" id="aspnetForm"> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="8gHuWbOEgqWpNT59EtqsX5xacMORdyFZq2p61+cmgMn+6nkqcfjKIkPelTB6pz7ngSr+GmPNBjeEeFrYFEFYdTflSiE=" /> </div> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="9ED6FB81" /> </div> <nav id="ctl00_NavigationUC1_ctl00_menu" class="navbar navbar-dark fixed-top" role="navigation"> <div class="container"> <div class="navbar-header navbar-header-search" id="searchMobileHeader"> <div class="d-flex justify-content-between"> <a class="navbar-brand" style="width: 100%"> <input type="text" placeholder="Search" id="thisIstheTinySearchBoxIdTag" autocomplete="off" class="nav-search-input-class navbar-search-2" /> </a> <ul id="thisIstheTinySearchResultsIdTag" class="dropdown-menu navbar-search-1"> <li> <div class="container-fluid"> <div id="dpSearch-resultCnt-tiny" class="dpTaResult"> </div> </div> </li> </ul> <div class="navbar-mobile-close-search"> <a noref class="navbar-mobile-item" id="thisIsTheTinyRemoveId"><i class="bi bi-x-lg"></i></a> </div> </div> </div> <div class="navbar-header navbar-collapse float-end" id="mainHeader"> <div class="d-flex"> <button type="button" class="navbar-toggler" data-bs-toggle="offcanvas" data-bs-target="#tesidemenu" aria-controls="tesidemenuoptions"> <span class="navbar-toggler-icon"></span> </button> <div class="logo-banner d-flex justify-content-between float-right"> <a class="navbar-brand" href="/"> <svg width="129" height="35" version="1.1" viewBox="0 0 34.131 9.2604" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" aria-label = "Trading Economics logo"> <g fill="#858585" stroke="#858585" stroke-width=".1" ><path d="m1.3315 8.5517v-3.7879h2.8086v0.64079h-2.0438v0.83974h1.9017v0.6382h-1.9017v1.0309h2.1162v0.6382z"/><path d="m7.2846 7.1591 0.74156 0.23513q-0.17053 0.62012-0.56844 0.92242-0.39532 0.29972-1.0051 0.29972-0.75448 0-1.2402-0.51418-0.48576-0.51676-0.48576-1.4108 0-0.94568 0.48834-1.4676 0.48834-0.52452 1.2842-0.52452 0.69505 0 1.1291 0.41083 0.25838 0.24288 0.38757 0.69763l-0.75706 0.18087q-0.067179-0.29456-0.28164-0.46509-0.21187-0.17053-0.51676-0.17053-0.42116 0-0.68471 0.30231-0.26097 0.30231-0.26097 0.97927 0 0.7183 0.25838 1.0232 0.25838 0.30489 0.67179 0.30489 0.30489 0 0.52452-0.19379 0.21962-0.19379 0.31523-0.60978z"/><path d="m8.5275 6.681q0-0.57878 0.17312-0.97152 0.12919-0.28939 0.3514-0.51935 0.22479-0.22996 0.49093-0.34106 0.35398-0.14986 0.81649-0.14986 0.83716 0 1.3384 0.51935 0.50385 0.51935 0.50385 1.4444 0 0.91726-0.49868 1.4366-0.49868 0.51676-1.3333 0.51676-0.84491 0-1.3436-0.51418-0.49868-0.51676-0.49868-1.4211zm0.78807-0.025838q0 0.64337 0.29714 0.97669 0.29714 0.33073 0.75448 0.33073 0.45734 0 0.74931-0.32815 0.29456-0.33073 0.29456-0.9896 0-0.65112-0.2868-0.97152-0.28422-0.32039-0.75706-0.32039-0.47284 0-0.76223 0.32556-0.28939 0.32298-0.28939 0.97669z"/><path d="m12.806 8.5517v-3.7879h0.74414l1.5503 2.5296v-2.5296h0.71055v3.7879h-0.7674l-1.527-2.4701v2.4701z"/><path d="m16.465 6.681q0-0.57878 0.17312-0.97152 0.12919-0.28939 0.3514-0.51935 0.22479-0.22996 0.49093-0.34106 0.35398-0.14986 0.81649-0.14986 0.83716 0 1.3384 0.51935 0.50384 0.51935 0.50384 1.4444 0 0.91726-0.49868 1.4366-0.49868 0.51676-1.3333 0.51676-0.84491 0-1.3436-0.51418-0.49868-0.51676-0.49868-1.4211zm0.78807-0.025838q0 0.64337 0.29714 0.97669 0.29714 0.33073 0.75448 0.33073t0.74931-0.32815q0.29456-0.33073 0.29456-0.9896 0-0.65112-0.2868-0.97152-0.28422-0.32039-0.75706-0.32039t-0.76223 0.32556q-0.28939 0.32298-0.28939 0.97669z"/><path d="m20.726 8.5517v-3.7879h1.1446l0.6873 2.5838 0.67955-2.5838h1.1472v3.7879h-0.71055v-2.9817l-0.75189 2.9817h-0.73639l-0.74931-2.9817v2.9817z"/><path d="m25.121 8.5517v-3.7879h0.76481v3.7879z"/><path d="m29.038 7.1591 0.74156 0.23513q-0.17053 0.62012-0.56844 0.92242-0.39532 0.29972-1.0051 0.29972-0.75448 0-1.2402-0.51418-0.48576-0.51676-0.48576-1.4108 0-0.94568 0.48834-1.4676 0.48834-0.52452 1.2842-0.52452 0.69505 0 1.1291 0.41083 0.25838 0.24288 0.38757 0.69763l-0.75706 0.18087q-0.06718-0.29456-0.28164-0.46509-0.21187-0.17053-0.51676-0.17053-0.42116 0-0.68471 0.30231-0.26097 0.30231-0.26097 0.97927 0 0.7183 0.25838 1.0232 0.25838 0.30489 0.67179 0.30489 0.30489 0 0.52452-0.19379 0.21962-0.19379 0.31523-0.60978z"/><path d="m30.242 7.3193 0.74414-0.072347q0.06718 0.37465 0.2713 0.55035 0.2067 0.1757 0.55552 0.1757 0.36949 0 0.55552-0.15503 0.18862-0.15761 0.18862-0.3669 0-0.13436-0.0801-0.22738-0.077514-0.095602-0.27388-0.16536-0.13436-0.046509-0.61237-0.16536-0.61495-0.15245-0.863-0.37465-0.34882-0.31264-0.34882-0.76223 0-0.28939 0.16278-0.54002 0.16536-0.25321 0.47284-0.38499 0.31006-0.13178 0.74672-0.13178 0.71314 0 1.0723 0.31264 0.36174 0.31264 0.37982 0.83457l-0.76481 0.03359q-0.04909-0.29197-0.21187-0.41858-0.1602-0.12919-0.48317-0.12919-0.33331 0-0.52193 0.13694-0.12144 0.08785-0.12144 0.23513 0 0.13436 0.11369 0.22996 0.14469 0.12144 0.7028 0.25321t0.82424 0.27389q0.26872 0.13953 0.41858 0.38499 0.15244 0.24288 0.15244 0.60203 0 0.32556-0.18087 0.60978-0.18087 0.28422-0.5116 0.42375-0.33073 0.13694-0.82424 0.13694-0.7183 0-1.1033-0.33073-0.38499-0.33331-0.45992-0.96893z"/></g> <g fill="#ddd" stroke="#ddd" stroke-width=".1" ><path d="m1.4629 4.2437v-2.8324h-1.0116v-0.57671h2.7091v0.57671h-1.0092v2.8324z"/><path d="m3.607 4.2437v-3.4091h1.4487q0.54648 0 0.79297 0.093018 0.24882 0.090692 0.39765 0.32556 0.14883 0.23487 0.14883 0.53718 0 0.3837-0.22557 0.63484-0.22557 0.24882-0.67438 0.31393 0.22324 0.13022 0.36742 0.28603 0.1465 0.1558 0.393 0.55345l0.41625 0.66508h-0.82321l-0.49764-0.74182q-0.2651-0.39765-0.36277-0.49997-0.097668-0.10464-0.20696-0.14185-0.1093-0.039532-0.34649-0.039532h-0.13953v1.4232zm0.68833-1.9673h0.50927q0.49532 0 0.61857-0.041858t0.19301-0.14418q0.069763-0.10232 0.069763-0.2558 0-0.17208-0.093018-0.27673-0.090692-0.10697-0.25812-0.13488-0.083716-0.011627-0.50229-0.011627h-0.53718z"/><path d="m10.118 4.2437h-0.74879l-0.29766-0.77437h-1.3627l-0.28138 0.77437h-0.73019l1.3278-3.4091h0.72786zm-1.2674-1.3488-0.46974-1.265-0.46044 1.265z"/><path d="m10.481 0.8346h1.2581q0.42556 0 0.6488 0.065112 0.29998 0.088367 0.51392 0.31393 0.21394 0.22557 0.32556 0.55345 0.11162 0.32556 0.11162 0.8046 0 0.4209-0.10464 0.72554-0.1279 0.37207-0.36509 0.60229-0.17906 0.17441-0.48369 0.27208-0.22789 0.072089-0.60926 0.072089h-1.2953zm0.68833 0.57671v2.258h0.51392q0.28835 0 0.41625-0.032556 0.16743-0.041858 0.27673-0.14185 0.11162-0.099994 0.18138-0.32789 0.06976-0.23022 0.06976-0.62554t-0.06976-0.60694-0.19534-0.33021q-0.12557-0.1186-0.31858-0.16046-0.14418-0.032556-0.56508-0.032556z"/><path d="m13.902 4.2437v-3.4091h0.68833v3.4091z"/><path d="m15.253 4.2437v-3.4091h0.66973l1.3953 2.2766v-2.2766h0.6395v3.4091h-0.69066l-1.3743-2.2231v2.2231z"/><path d="m20.271 2.9903v-0.57438h1.4836v1.3581q-0.21627 0.20929-0.62787 0.36974-0.40928 0.15813-0.83018 0.15813-0.53485 0-0.9325-0.22324-0.39765-0.22557-0.59764-0.64182-0.19999-0.41858-0.19999-0.90925 0-0.53253 0.22324-0.94645 0.22324-0.41393 0.65345-0.63484 0.32789-0.16976 0.81623-0.16976 0.63484 0 0.99064 0.26743 0.35812 0.2651 0.46044 0.73484l-0.68368 0.1279q-0.072088-0.25115-0.27208-0.39532-0.19766-0.1465-0.49532-0.1465-0.45114 0-0.71856 0.28603-0.2651 0.28603-0.2651 0.84879 0 0.60694 0.26975 0.91157 0.26975 0.30231 0.70693 0.30231 0.21627 0 0.43253-0.083716 0.21859-0.086041 0.3744-0.20696v-0.43253z"/></g> </svg> </a> <div class="d-flex align-items-center nav-options"> <div class="d-flex align-items-center nav-entry-link-group"> <a class="nav-entry-link d-none d-md-block" href="/calendar"><span>Calendar</span></a> <a class="nav-entry-link d-none " href="/stream"><span>News</span></a> <div class="dropdown"> <a href="#" class="dropdown d-flex nav-entry-link d-none d-md-block" data-bs-toggle="dropdown"><span>Markets</span></a> <ul class="dropdown-menu nav-dropdown-menu"> <li class='dropdown-item nav-dropdown-item'><a href="/commodities">Commodities</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/currencies">Currencies</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/stocks">Stocks</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/bonds">Bonds</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/crypto">Crypto</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/earnings">Earnings</a></li> </ul> </div> <a class="nav-entry-link d-none d-lg-block" href="/indicators"><span>Indicators</span></a> <a class="nav-entry-link d-none d-xl-block" href="/countries"><span >Countries</span></a> <div class="dropdown"> <a href="#" class="dropdown d-flex nav-entry-link d-none d-md-block" data-bs-toggle="dropdown"><span>Forecasts</span></a> <ul class="dropdown-menu nav-dropdown-menu"> <li class='dropdown-item nav-dropdown-item'><a href="/forecast/commodity">Commodities</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/forecast/currency">Currencies</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/forecast/stock-market">Stocks</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/forecast/government-bond-10y">Bonds</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/forecast/crypto">Crypto</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/forecasts">Countries</a></li> <li class='dropdown-item nav-dropdown-item'><a href="/indicators?g=forecast">Indicators</a></li> </ul> </div> </div> <div class="search-li d-none d-lg-block"> <a noref id="thisIsTheSearchPlaceholderId" class="nav-searchbox-class stickydropdown d-block" title="Search"> <div id="thisIsTheSearchBoxWrapperId" class="typeahead-searchbox-glyphicon-wrapper d-flex "> <input type="text" placeholder="Search" aria-label="Search" id="thisIstheSearchBoxIdTag" autocomplete="off" class="d-none d-md-block nav-search-input-class"> </div> </a> <ul id="thisIstheSearchResultsIdTag" class="dropdown-menu nav-dropdown-menu typeahead-wrapper"> <li> <div class="container"> <div id="dpSearch-resultCnt" class="dpTaResult"> </div> </div> </li> </ul> </div> <div> <a class="d-block d-lg-none navbar-mobile-item" id="thisIsTheTinyGlyphiconId"><i class="bi bi-search me-2"></i></a> </div> <div class="dropdown dropdown-notification-list"> <button class="btn btn-notification-list" type="button" id="dropdownNotificationList" data-bs-toggle="offcanvas" data-bs-target="#offcanvasTop"> <svg xmlns="http://www.w3.org/2000/svg" width="21px" height="21px" viewBox="0 0 24 24" id="notification-empty" style="vertical-align:middle !important" data-name="notification-empty"><rect id="view-box" width="24" height="24" fill="none"/><path id="Shape" d="M6,17v-.5H2.25A2.253,2.253,0,0,1,0,14.25v-.382a2.542,2.542,0,0,1,1.415-2.289A1.248,1.248,0,0,0,2.1,10.572l.446-4.91a6.225,6.225,0,0,1,12.4,0l.446,4.91a1.26,1.26,0,0,0,.686,1.005,2.547,2.547,0,0,1,1.418,2.29v.382a2.252,2.252,0,0,1-2.25,2.25H11.5V17A2.75,2.75,0,0,1,6,17Zm1.5,0A1.25,1.25,0,0,0,10,17v-.5H7.5ZM4.045,5.8,3.6,10.708A2.738,2.738,0,0,1,2.089,12.92a1.055,1.055,0,0,0-.589.949v.382A.751.751,0,0,0,2.25,15h13A.751.751,0,0,0,16,14.25v-.382a1.054,1.054,0,0,0-.586-.948A2.739,2.739,0,0,1,13.9,10.708L13.456,5.8a4.725,4.725,0,0,0-9.411,0Z" transform="translate(3.25 2.25)" fill="#ddd"/></svg> <svg xmlns="http://www.w3.org/2000/svg" width="21px" height="21px" viewBox="0 0 24 24" id="notification-new" style="vertical-align:middle !important; display:none" data-name="notification-new"><rect id="view-box" width="24" height="24" fill="none" /><path id="Shape" d="M6,17v-.5H2.25A2.253,2.253,0,0,1,0,14.25v-.382a2.542,2.542,0,0,1,1.415-2.289A1.247,1.247,0,0,0,2.1,10.572l.446-4.91A6.227,6.227,0,0,1,10.618.286a5.477,5.477,0,0,0-.635,1.374A4.794,4.794,0,0,0,8.75,1.5,4.7,4.7,0,0,0,4.045,5.8L3.6,10.708A2.739,2.739,0,0,1,2.089,12.92a1.055,1.055,0,0,0-.589.949v.382A.751.751,0,0,0,2.25,15h13A.751.751,0,0,0,16,14.25v-.382a1.053,1.053,0,0,0-.586-.948A2.739,2.739,0,0,1,13.9,10.708l-.2-2.18a5.473,5.473,0,0,0,1.526.221l.166,1.822a1.26,1.26,0,0,0,.686,1.005,2.547,2.547,0,0,1,1.418,2.29v.382a2.252,2.252,0,0,1-2.25,2.25H11.5V17A2.75,2.75,0,0,1,6,17Zm1.5,0A1.25,1.25,0,0,0,10,17v-.5H7.5ZM15.047,6.744A3.486,3.486,0,0,1,13.5,6.28L13.456,5.8a4.7,4.7,0,0,0-1.648-3.185,3.5,3.5,0,0,1,.61-1.417A6.221,6.221,0,0,1,14.95,5.662l.1,1.081v0Z" transform="translate(3.25 2.25)" fill="#ddd" /> <path id="Shape-2" data-name="Shape" d="M3.5,7A3.5,3.5,0,1,1,7,3.5,3.5,3.5,0,0,1,3.5,7Z" transform="translate(15 2)" fill="#4287f5" /> </svg> </button> <div class="offcanvas offcanvas-top notification-list container custom-offcanvas" tabindex="-1" id="offcanvasTop" data-bs-scroll="true" aria-labelledby="offcanvasTopLabel" style="top:50px !important; border: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);"> <div class="empty-notificationlist"> <div class="empty-notificationlist-content"> <span>You have no new notifications</span> <br> <i class="bi bi-bell-slash-fill"></i> <br> <div><a href="/stream" title="Show all news" class="empty-notificationlist-more"><div class="btn btn-outline-secondary">All News</div></a></div> </div> </div> </div> </div> <div class="userOptionsMenu"> <a title="" data-bs-toggle="offcanvas" href="#offcanvasGuest" role="button" aria-controls="offcanvasGuest"><i class="bi bi-person"></i></a> </div> </div> </div> </div> </div> <div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasGuest" aria-labelledby="offcanvasGuestLabel"> <div class="offcanvas-header"> <h5 class="offcanvas-title" id="offcanvasGuestLabel"><b>Members</b></h5> <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body user-offcanvas-body"> <div class="list-group list-group-user"> <a href="/analytics/pricing.aspx?source=menu " class="user-item list-group-item"> <b class="list-group-item-heading"><i class="bi bi-save2-fill me-2"></i> DATA PLANS</b><br> <span class="list-group-item-text">Download historical data for 20 million indicators using your browser.</span> </a> <div class="user-item list-group-item"> <div class="navbar-user-link"> <a href="/analytics/pricing.aspx?source=menu" class="navbar-te-link mx-1">Subscription Plans</a> | <a href="/analytics/features.aspx?source=menu" class="navbar-te-link mx-1">Features</a> </div> </div> </div> <div class="list-group list-group-user"> <a href="/api/" class="user-item list-group-item"> <b class="list-group-item-heading"><i class="bi bi-phone mx-1 me-2"></i>API GATEWAY</b><br> <span class="list-group-item-text mx-1">Direct access to our data from your apps using any programing language.</span> </a> <div class="user-item list-group-item"> <div> <a href="https://docs.tradingeconomics.com/" target="_blank" class="navbar-te-link mx-1">Docs</a> | <a href="/api/?source=menu" class="navbar-te-link mx-1">Features</a> | <a href="https://developer.tradingeconomics.com/" class="navbar-te-link mx-1">Developer</a> </div> </div> </div> <div class="list-group list-group-user"> <a class="user-item list-group-item" href="https://sso.tradingeconomics.com/sso/login?returnurl=https://tradingeconomics.com/stream"><i class="bi bi-person-fill"></i> Already a user? <b>Login</b></a> </div> <style> .form-switch { width: 3.5em !important; height: 2em !important } .bi-sun-fill { font-size: 12px; color: #ddd !important; } .bi-moon-fill { font-size: 10px; color: #333 !important; } .darkmode-toggle-container { width: auto; padding: 0px; margin-left: 0px; margin-top: 0px; border: none; } .form-check-div-sun { width: 20px; margin-bottom: 3px; margin-left: -54px; position: relative } .form-check-div-moon { width: 20px; margin-bottom: 3px; margin-left: 3px; position: relative } .dk-switch-right-menu{ padding-left:10px; } </style> <div class="list-group list-group-user dk-switch-right-menu"> <div class="d-flex align-items-center darkmode-toggle-container"> <div class="form-check form-switch darkmode-form-switch user-item"> <input class="form-check-input p-1" type="checkbox" role="button" id="flexSwitchCheckChecked"> </div> <div class="form-check-div-sun"> <label class="form-check-label form-check-label-sun p-1 d-inline" for="flexSwitchCheckChecked"><i class="bi bi-sun-fill"></i></label> </div> <div class="form-check-div-moon"> <label class="form-check-label form-check-label-moon p-1 d-inline" for="flexSwitchCheckChecked"><i class="bi bi-moon-fill"></i></label> </div> </div> </div> <script> function SetTheme(isDark) { console.log('Changing theme', isDark); if (IsDarkMode != isDark) { IsDarkMode = isDark; document.body.classList.toggle("dark-theme"); // Set cookie const d = new Date(); d.setTime(d.getTime() + (365 * 24 * 60 * 60 * 1000)); let expires = "expires=" + d.toUTCString(); document.cookie = "IsDarkMode" + "=" + IsDarkMode + ";" + expires + ";path=/"; IsDarkMode ? ga('event', 'te_darkmode_on') : ga('event', 'te_darkmode_off'); window.location.reload(); } } document.addEventListener('DOMContentLoaded', function () { let checkbox = document.getElementById("flexSwitchCheckChecked"); let sundiv = document.getElementsByClassName("form-check-label-sun")[0]; let moondiv = document.getElementsByClassName("form-check-label-moon")[0]; if (IsDarkMode) { sundiv.classList.add("d-none"); moondiv.classList.remove("d-none"); } else { moondiv.classList.add("d-none"); sundiv.classList.remove("d-none"); } checkbox.checked = IsDarkMode; }); document.getElementById("flexSwitchCheckChecked").addEventListener("change", function () { SetTheme(!IsDarkMode) }); </script> </div> </div> <div class="offcanvas offcanvas-start" tabindex="-1" id="tesidemenu" aria-labelledby="tesidemenuoptions"> <div class="offcanvas-header"> <h5 class="offcanvas-title" id="offcanvasWithBothOptionsLabel"></h5> <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body"> <div class="row navbar-nav-scroll" style="--bs-scroll-height: 95vh;"> <div class="accordion" id="accordionNavbar"> <div class="accordion-item"> <div class="accordion-header menu-main-option"><a class="nav-link accordion-button navmenu-mobile-item" href="/calendar" target="_self"><i class="bi bi-calendar3 me-2"></i>Calendar</a></div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option"><a class="nav-link accordion-button navmenu-mobile-item" href="/stream" target="_self"><i class="bi bi-layout-text-sidebar me-2"></i>News</a></div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseMarkets" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-arrow-down-up me-2"></i>Markets <i class="bi bi-caret-up-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseMarkets" class="accordion-collapse collapse show" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li><a class="navmobile-link nav-link" href="/currencies" target="_self">Currencies</a></li> <li><a class="navmobile-link nav-link" href="/stocks" target="_self">Stocks</a></li> <li><a class="navmobile-link nav-link" href="/commodities" target="_self">Commodities</a></li> <li><a class="navmobile-link nav-link" href="/bonds" target="_self">Bonds</a></li> <li><a class="navmobile-link nav-link" href="/crypto" target="_self">Crypto</a></li> <li><a class="navmobile-link nav-link" href="/earnings" target="_self">Earnings</a></li> <li><a class="navmobile-link nav-link" href="/holidays" target="_self">Holidays</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCountries" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-globe me-2"></i>Countries<i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseCountries" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li><a class="navmobile-link nav-link" href="/united-states/indicators" target="_self">United States</a></li> <li><a class="navmobile-link nav-link" href="/united-kingdom/indicators" target="_self">United Kingdom</a></li> <li><a class="navmobile-link nav-link" href="/euro-area/indicators" target="_self">Euro Area</a></li> <li><a class="navmobile-link nav-link" href="/australia/indicators" target="_self">Australia</a></li> <li><a class="navmobile-link nav-link" href="/canada/indicators" target="_self">Canada</a></li> <li><a class="navmobile-link nav-link" href="/japan/indicators" target="_self">Japan</a></li> <li><a class="navmobile-link nav-link" href="/china/indicators" target="_self">China</a></li> <li><a class="navmobile-link nav-link" href="/brazil/indicators" target="_self">Brazil</a></li> <li><a class="navmobile-link nav-link" href="/russia/indicators" target="_self">Russia</a></li> <li><a class="navmobile-link nav-link" href="/india/indicators" target="_self">India</a></li> <li><a class='navmobile-link nav-link' href="/countries" target="_self"><i class="bi bi-plus-square me-2"></i>More Countries</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseIndicators" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-bar-chart-fill me-2"></i>Indicators <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseIndicators" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li><a class="navmobile-link nav-link" href="/country-list/interest-rate" target="_self">Interest Rate</a></li> <li><a class="navmobile-link nav-link" href="/country-list/inflation-rate" target="_self">Inflation Rate</a></li> <li><a class="navmobile-link nav-link" href="/country-list/unemployment-rate" target="_self">Unemployment Rate</a></li> <li><a class="navmobile-link nav-link" href="/country-list/gdp-growth-rate" target="_self">GDP Growth</a></li> <li><a class="navmobile-link nav-link" href="/country-list/gdp-per-capita" target="_self">GDP per Capita</a></li> <li><a class="navmobile-link nav-link" href="/country-list/current-account-to-gdp" target="_self">Current Account</a></li> <li><a class="navmobile-link nav-link" href="/country-list/gold-reserves" target="_self">Gold Reserves</a></li> <li><a class="navmobile-link nav-link" href="/country-list/government-debt-to-gdp" target="_self">Government Debt</a></li> <li><a class="navmobile-link nav-link" href="/country-list/crude-oil-production" target="_self">Crude Oil Production</a></li> <li><a class="navmobile-link nav-link" href="/country-list/gasoline-prices" target="_self">Gasoline Prices</a></li> <li><a class="navmobile-link nav-link" href="/country-list/rating" target="_self">Credit Rating</a></li> <li><a class='navmobile-link nav-link' href="/indicators" target="_self"><i class="bi bi-plus-square me-2"></i>More Indicators</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseForecasts" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-graph-down-arrow me-2"></i>Forecasts <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseForecasts" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li class="d-block d-sm-none"><a class="navmobile-link nav-link" href="/indicators?g=forecast" target="_self">Markets & Indicators</a></li> <li class="d-block d-sm-none"><a class="navmobile-link nav-link" href="/forecasts" target="_self">Countries</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecasts">Countries</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/indicators?g=forecast">Indicators</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/currency">Currencies</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/stock-market">Stocks</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/commodity">Commodities</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/government-bond-10y">Bonds</a></li> <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/crypto">Crypto</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseSolutions" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-code-square me-2"></i>Solutions <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseSolutions" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li><a class="navmobile-link nav-link" href="/analytics/features.aspx" title="Register">Data Subscriptions</a></li> <li><a class="navmobile-link nav-link" href="/api/" title="Register">API Access</a></li> <li><a class="navmobile-link nav-link" href="/analytics/pricing.aspx?source=nav">Pricing</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseApps" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-phone me-2"></i>Apps <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseApps" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li><a class="navmobile-link nav-link" href="https://itunes.apple.com/us/app/trading-economics/id1142178921?mt=8" target="_self">App Store</a></li> <li><a class="navmobile-link nav-link" href="https://play.google.com/store/apps/details?id=com.tradingeconomics.calendar" target="_self">Google Play</a></li> <li><a class="navmobile-link nav-link" href="https://www.twitter.com/teconomics" target="_self">Twitter</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <div class="accordion-header menu-main-option d-flex align-items-center"> <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseMore" aria-expanded="false" aria-controls="collapseTwo"> <i class="bi bi-question-circle me-2"></i>About <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> </button> </div> <div id="collapseMore" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> <div class="accordion-body mobile-accordion-body"> <ul class="nav navbar-nav navbarMobile"> <li><a class="navmobile-link nav-link" href="/api/customers.aspx" target="_self">Customers</a></li> <li><a class="navmobile-link nav-link" href="/investors.aspx" target="_self">Investors</a></li> <li><a class="navmobile-link nav-link" href="/careers.aspx" target="_self">Careers</a></li> <li><a class="navmobile-link nav-link" href="/about-te.aspx" target="_self">About us</a></li> <li><a class="navmobile-link nav-link" href="/contact.aspx" target="_self">Contact</a></li> </ul> </div> </div> </div> <div class="accordion-item d-block d-md-none" style="border: none"> <div class="accordion-header menu-main-option accordion-last-item" style="padding: 30px 0px !important;"></div> </div> </div> </div> </div> </div> </div> </nav> <script> document.addEventListener('DOMContentLoaded', function () { let accordionHeaders = document.querySelectorAll('.menu-main-option'); accordionHeaders.forEach(function (header) { header.addEventListener('click', function () { let caretIcon = header.querySelector('.caret-toggle'); let allCaretIcons = document.querySelectorAll('.menu-main-option .caret-toggle'); allCaretIcons.forEach(function (icon) { if (icon !== caretIcon) { icon.classList.remove('bi-caret-up-fill'); icon.classList.add('bi-caret-down-fill'); } }); caretIcon.classList.toggle('bi-caret-down-fill'); caretIcon.classList.toggle('bi-caret-up-fill'); }); }); }); </script> <style>body {padding-top: 100px;}.pagemenu {top: 50px;}.pagetabs {top: 50px;}</style> <style>.title-notes {padding-left: 10px;font-size: 80%;padding-top: 3px;font-weight:lighter;}</style> <div id="ctl00_ctl05_pageTabs" class="pagetabs"> <div class="container " style=""> <ul id="pagemenutabs" class="nav nav-tabs " style="border-bottom: none;"> <li class="nav-item "> <a class="nav-link active" href="" class="" > News </a> </li> <li class="nav-item "> <a class="nav-link " href="?i=economy" class="" > Economy </a> </li> <li class="nav-item "> <a class="nav-link " href="?i=markets" class="" > Markets </a> </li> </ul> </div> </div> <div class="container"> <div class="row"> <div class='col-xl-8 col-lg-8' role="main"> <style>.te-title-footer {border: 1px solid #dddd;padding:10px; background-color: #f5f5f5;font-size: 16px;}.te-description-footer {border: 1px solid #dddd;padding:20px; margin-top: 20px;}</style> <style> .te-stream-category { background-color: #ddd; color: #fff; } .stream-symbol-link{ text-decoration:underline; text-decoration-color:#bebebe; } body.dark-theme .stream-symbol-link{ text-decoration:underline; text-decoration-color:#666 !important; } body.dark-theme #stream .list-group-item { color: #fff !important; border-bottom-width: 15px; } body.dark-theme #stream .list-group-item:hover { background-color: #222222; color: #000; } body.dark-theme #stream .list-group-item:hover a { color: #fff; } body.dark-theme .te-stream-category { background-color: #000; } </style> <div class="container" style='padding: 0px;min-height: 2000px;margin-top: 25px;'> <div class="row"> <br /> <br /> <div class="col-md-12"> <div id="stream"></div> <div id="spinner" class="chart-loading" style="display: none;"></div> <input type="button" id="stream-btn" class="btn btn-outline-secondary" value="More" style="visibility: hidden" /> </div> </div> </div> <br /> <h2 id='summary' class='te-description-footer'>Trading Economics provides data for 20 million economic indicators from 196 countries including actual values, consensus figures, forecasts, historical time series and news. Latest News Stream - was last updated on Monday, February 24, 2025.</h2><br/> </div> <div id="ctl00_rightSideMenu" class="col-xl-4 col-lg-4"> <style>#sidebar {padding-left: 2px; padding-right: 2px;} #sidebar .accordion-header{border-radius: 0;}</style> <div id="sidebar"> <div id="PanelAllMenus"> <style> #market-widget .nav {flex-wrap:nowrap;}#market-widget .nav>li>a {padding-left: 3px;padding-right: 3px;outline:none;} .market-widget-thead{font-size: 12px;}.market-widget-th-left{text-align: left;}.market-widget-th-center{text-align: center;}.market-widget-row{padding: 0px;}.market-widget-first{padding-left: 10px!important; max-width: 80px; overflow: hidden;}.market-widget-last{text-align: center;max-width: 70px; overflow: hidden;}.market-widget-change{text-align: left; min-width: 70px}.market-widget-pct{text-align: center;} @media only screen and (max-width: 380px) {#market-widget .nav > li > a {padding-left: 3px;padding-right: 3px;}} .modal{ --bs-modal-header-border-color: none !important; --bs-modal-footer-border-color:none !important; } </style> <div id="ctl00_LeftSideMenuContainer1__ffbeb76d280a6722_Panel1"> <div id="market-widget" class="card"> <ul class="nav nav-tabs " role="tablist" id="mainWidget"> <li role="presentation" class="nav-item"><a aria-current="page" href="#Commodity" class=" nav-link d-table-cell" role="tab" data-bs-toggle="tab">Commodity</a></li> <li role="presentation" class="nav-item"><a aria-current="page" href="#FX" class=" nav-link d-table-cell" role="tab" data-bs-toggle="tab">Forex</a></li> <li role="presentation" class="nav-item"><a aria-current="page" href="#Index" class="active nav-link d-table-cell" role="tab" data-bs-toggle="tab">Index</a></li> <li role="presentation" class="nav-item d-lg-none d-xl-block"><a aria-current="page" href="#Share" class=" nav-link d-table-cell" role="tab" data-bs-toggle="tab">Stocks</a></li> <li role="presentation" class="nav-item"><a aria-current="page" href="#Bond" class=" nav-link d-table-cell" role="tab" data-bs-toggle="tab">Bond</a></li> <li role="presentation" class="nav-item"><a aria-current="page" href="#Crypto" class=" nav-link d-table-cell" role="tab" data-bs-toggle="tab">Crypto</a></li> </ul> <div class="tab-content" style="margin-bottom: -15px"> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ffbeb76d280a6722$Repeater1$ctl00$group" id="ctl00_LeftSideMenuContainer1__ffbeb76d280a6722_Repeater1_ctl00_group" value="Commodity" /> <div role="tabpanel" class="tab-pane fade show " id='Commodity'> <table class="table table-condensed" style="padding-bottom: -10px;"> <thead class="market-widget-thead"> <tr> <th> </th> <th style="text-align: center;">Actual</th> <th style="text-align: left;" class="d-lg-none d-xl-table-cell">Chg</th> <th style="text-align: center;">%Chg</th> </tr> </thead> <tbody> <tr class='datatable-row' data-symbol="CL1:COM" data-decimals="3"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/crude-oil">Crude Oil</a> </td> <td id="p" class="market-widget-last"> 70.575 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.18 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.25% </td> </tr> <tr class='datatable-row-alternating' data-symbol="CO1:COM" data-decimals="3"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/brent-crude-oil">Brent</a> </td> <td id="p" class="market-widget-last"> 74.618 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.19 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.25% </td> </tr> <tr class='datatable-row' data-symbol="NG1:COM" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/natural-gas">Natural gas</a> </td> <td id="p" class="market-widget-last"> 3.9990 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.24 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -5.55% </td> </tr> <tr class='datatable-row-alternating' data-symbol="XB1:COM" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/gasoline">Gasoline</a> </td> <td id="p" class="market-widget-last"> 2.0074 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.02 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.21% </td> </tr> <tr class='datatable-row' data-symbol="HO1:COM" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/heating-oil">Heating Oil</a> </td> <td id="p" class="market-widget-last"> 2.4327 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.00 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.05% </td> </tr> <tr class='datatable-row-alternating' data-symbol="XAUUSD:CUR" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/gold">Gold</a> </td> <td id="p" class="market-widget-last"> 2949.20 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 15.20 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.52% </td> </tr> <tr class='datatable-row' data-symbol="XAGUSD:CUR" data-decimals="3"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/silver">Silver</a> </td> <td id="p" class="market-widget-last"> 32.361 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.15 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.46% </td> </tr> <tr class='datatable-row-alternating' data-symbol="HG1:COM" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/copper">Copper</a> </td> <td id="p" class="market-widget-last"> 4.5105 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.03 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.55% </td> </tr> <tr class='datatable-row' data-symbol="S 1:COM" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/soybeans">Soybeans</a> </td> <td id="p" class="market-widget-last"> 1028.76 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 10.74 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.03% </td> </tr> <tr class='datatable-row-alternating' data-symbol="W 1:COM" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/wheat">Wheat</a> </td> <td id="p" class="market-widget-last"> 579.25 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 10.78 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.83% </td> </tr> <tr class='datatable-row' data-symbol="XAL1:COM" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/coal">Coal</a> </td> <td id="p" class="market-widget-last"> 102.00 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 1.50 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.45% </td> </tr> <tr class='datatable-row-alternating' data-symbol="JBP:COM" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/steel">Steel</a> </td> <td id="p" class="market-widget-last"> 3299.00 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 1.00 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.03% </td> </tr> <tr class='datatable-row' data-symbol="NGEU:COM" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/eu-natural-gas">TTF Gas</a> </td> <td id="p" class="market-widget-last"> 47.31 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 1.40 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 3.06% </td> </tr> <tr class='datatable-row-alternating' data-symbol="LB1:COM" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/lumber">Lumber</a> </td> <td id="p" class="market-widget-last"> 623.47 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 2.44 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.39% </td> </tr> <tr class='datatable-row' data-symbol="IOE:COM" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/commodity/iron-ore-cny">Iron Ore CNY</a> </td> <td id="p" class="market-widget-last"> 832.50 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.00 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.00% </td> </tr> </tbody> <tfoot> <tr> <td colspan="2" class="more-link"><a style="text-decoration: underline" aria-label = "Read more" href="/commodities">More</a></td> <td colspan="4" class="widget-link" style=" "> <div class="plus-sign-widget"> <a style="font-size:12px" aria-label="Add widgets" href="javascript:void(0);"onclick="showWidgetModal();"> <i class="bi bi-plus-square-fill"></i> Add to your site</a> </div> </td> </tr> </tfoot> </table> </div> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ffbeb76d280a6722$Repeater1$ctl01$group" id="ctl00_LeftSideMenuContainer1__ffbeb76d280a6722_Repeater1_ctl01_group" value="Currency" /> <div role="tabpanel" class="tab-pane fade show " id='FX'> <table class="table table-condensed" style="padding-bottom: -10px;"> <thead class="market-widget-thead"> <tr> <th> </th> <th style="text-align: center;">Actual</th> <th style="text-align: left;" class="d-lg-none d-xl-table-cell">Chg</th> <th style="text-align: center;">%Chg</th> </tr> </thead> <tbody> <tr class='datatable-row' data-symbol="EURUSD:CUR" data-decimals="5"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/euro-area/currency">EURUSD</a> </td> <td id="p" class="market-widget-last"> 1.04781 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0019 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.18% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GBPUSD:CUR" data-decimals="5"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/united-kingdom/currency">GBPUSD</a> </td> <td id="p" class="market-widget-last"> 1.26360 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0003 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.02% </td> </tr> <tr class='datatable-row' data-symbol="AUDUSD:CUR" data-decimals="5"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/australia/currency">AUDUSD</a> </td> <td id="p" class="market-widget-last"> 0.63576 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0000 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.00% </td> </tr> <tr class='datatable-row-alternating' data-symbol="NZDUSD:CUR" data-decimals="5"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/new-zealand/currency">NZDUSD</a> </td> <td id="p" class="market-widget-last"> 0.57430 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0004 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.06% </td> </tr> <tr class='datatable-row' data-symbol="USDJPY:CUR" data-decimals="3"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/japan/currency">USDJPY</a> </td> <td id="p" class="market-widget-last"> 149.646 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.3095 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.21% </td> </tr> <tr class='datatable-row-alternating' data-symbol="USDCNY:CUR" data-decimals="5"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/china/currency">USDCNY</a> </td> <td id="p" class="market-widget-last"> 7.25080 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0017 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.02% </td> </tr> <tr class='datatable-row' data-symbol="USDCHF:CUR" data-decimals="5"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/switzerland/currency">USDCHF</a> </td> <td id="p" class="market-widget-last"> 0.89660 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0024 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.26% </td> </tr> <tr class='datatable-row-alternating' data-symbol="USDCAD:CUR" data-decimals="5"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/canada/currency">USDCAD</a> </td> <td id="p" class="market-widget-last"> 1.42259 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0005 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.03% </td> </tr> <tr class='datatable-row' data-symbol="USDMXN:CUR" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/mexico/currency">USDMXN</a> </td> <td id="p" class="market-widget-last"> 20.4070 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0146 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.07% </td> </tr> <tr class='datatable-row-alternating' data-symbol="USDINR:CUR" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/india/currency">USDINR</a> </td> <td id="p" class="market-widget-last"> 86.6280 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0214 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.02% </td> </tr> <tr class='datatable-row' data-symbol="USDBRL:CUR" data-decimals="5"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/brazil/currency">USDBRL</a> </td> <td id="p" class="market-widget-last"> 5.75700 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0234 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.41% </td> </tr> <tr class='datatable-row-alternating' data-symbol="USDRUB:CUR" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/russia/currency">USDRUB</a> </td> <td id="p" class="market-widget-last"> 87.7496 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 1.1329 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.27% </td> </tr> <tr class='datatable-row' data-symbol="USDKRW:CUR" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/south-korea/currency">USDKRW</a> </td> <td id="p" class="market-widget-last"> 1428.53 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 8.3100 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.58% </td> </tr> <tr class='datatable-row-alternating' data-symbol="DXY:CUR" data-decimals="3"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/united-states/currency">DXY</a> </td> <td id="p" class="market-widget-last"> 106.567 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0452 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.04% </td> </tr> <tr class='datatable-row' data-symbol="USDTRY:CUR" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/turkey/currency">USDTRY</a> </td> <td id="p" class="market-widget-last"> 36.2750 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.1072 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.29% </td> </tr> </tbody> <tfoot> <tr> <td colspan="2" class="more-link"><a style="text-decoration: underline" aria-label = "Read more" href="/currencies">More</a></td> <td colspan="4" class="widget-link" style=" "> <div class="plus-sign-widget"> <a style="font-size:12px" aria-label="Add widgets" href="javascript:void(0);"onclick="showWidgetModal();"> <i class="bi bi-plus-square-fill"></i> Add to your site</a> </div> </td> </tr> </tfoot> </table> </div> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ffbeb76d280a6722$Repeater1$ctl02$group" id="ctl00_LeftSideMenuContainer1__ffbeb76d280a6722_Repeater1_ctl02_group" value="Index" /> <div role="tabpanel" class="tab-pane fade show active" id='Index'> <table class="table table-condensed" style="padding-bottom: -10px;"> <thead class="market-widget-thead"> <tr> <th> </th> <th style="text-align: center;">Actual</th> <th style="text-align: left;" class="d-lg-none d-xl-table-cell">Chg</th> <th style="text-align: center;">%Chg</th> <th class=''></th> </tr> </thead> <tbody> <tr class='datatable-row' data-symbol="SPX:IND" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/united-states/stock-market">US500</a> </td> <td id="p" class="market-widget-last"> 6017.21 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 4 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.07% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: green' title='open trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="INDU:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/indu:ind">US30</a> </td> <td id="p" class="market-widget-last"> 43603 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 174 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.40% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: green' title='open trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="US100:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/us100:ind">US100</a> </td> <td id="p" class="market-widget-last"> 21512 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 102 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.47% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: green' title='open trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="NKY:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/japan/stock-market">JP225</a> </td> <td id="p" class="market-widget-last"> 38777 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 99 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.26% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="UKX:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/united-kingdom/stock-market">GB100</a> </td> <td id="p" class="market-widget-last"> 8632 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 28 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.32% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="DAX:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/germany/stock-market">DE40</a> </td> <td id="p" class="market-widget-last"> 22318 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 30 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.13% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="CAC:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/france/stock-market">FR40</a> </td> <td id="p" class="market-widget-last"> 8068 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 86 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.06% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="FTSEMIB:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/italy/stock-market">IT40</a> </td> <td id="p" class="market-widget-last"> 38358 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 63 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.16% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="IBEX:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/spain/stock-market">ES35</a> </td> <td id="p" class="market-widget-last"> 13013 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 61 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.47% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="AS51:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/australia/stock-market">ASX200</a> </td> <td id="p" class="market-widget-last"> 8308 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 12 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.14% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="SHCOMP:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/china/stock-market">SHANGHAI</a> </td> <td id="p" class="market-widget-last"> 3373 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 6 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.18% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="SENSEX:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/india/stock-market">SENSEX</a> </td> <td id="p" class="market-widget-last"> 74454 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 857 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.14% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="SPTSX:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/canada/stock-market">TSX</a> </td> <td id="p" class="market-widget-last"> 25212 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 65 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.26% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: green' title='open trading session'></span></td> </tr> <tr class='datatable-row-alternating' data-symbol="INDEXCF:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/russia/stock-market">MOEX</a> </td> <td id="p" class="market-widget-last"> 3301 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 18 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.55% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: darkred' title='closed trading session'></span></td> </tr> <tr class='datatable-row' data-symbol="IBOV:IND" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/brazil/stock-market">IBOVESPA</a> </td> <td id="p" class="market-widget-last"> 125296 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 1,832 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.44% </td> <td id='session' class='d-none d-md-table-cell'><span class='bi bi-clock' style='font-size:10px; color: green' title='open trading session'></span></td> </tr> </tbody> <tfoot> <tr> <td colspan="2" class="more-link"><a style="text-decoration: underline" aria-label = "Read more" href="/stocks">More</a></td> <td colspan="4" class="widget-link" style=" "> <div class="plus-sign-widget"> <a style="font-size:12px" aria-label="Add widgets" href="javascript:void(0);"onclick="showWidgetModal();"> <i class="bi bi-plus-square-fill"></i> Add to your site</a> </div> </td> </tr> </tfoot> </table> </div> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ffbeb76d280a6722$Repeater1$ctl03$group" id="ctl00_LeftSideMenuContainer1__ffbeb76d280a6722_Repeater1_ctl03_group" value="Stocks" /> <div role="tabpanel" class="tab-pane fade show " id='Share'> <table class="table table-condensed" style="padding-bottom: -10px;"> <thead class="market-widget-thead"> <tr> <th> </th> <th style="text-align: center;">Actual</th> <th style="text-align: left;" class="d-lg-none d-xl-table-cell">Chg</th> <th style="text-align: center;">%Chg</th> </tr> </thead> <tbody> <tr class='datatable-row' data-symbol="AAPL:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/aapl:us">Apple</a> </td> <td id="p" class="market-widget-last"> 248.00 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 2.22 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.90% </td> </tr> <tr class='datatable-row-alternating' data-symbol="TSLA:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/tsla:us">Tesla</a> </td> <td id="p" class="market-widget-last"> 333.35 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 4.63 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.37% </td> </tr> <tr class='datatable-row' data-symbol="MSFT:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/msft:us">Microsoft</a> </td> <td id="p" class="market-widget-last"> 405.13 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 3.20 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.78% </td> </tr> <tr class='datatable-row-alternating' data-symbol="AMZN:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/amzn:us">Amazon</a> </td> <td id="p" class="market-widget-last"> 214.35 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 2.31 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.07% </td> </tr> <tr class='datatable-row' data-symbol="FB:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/fb:us">Meta</a> </td> <td id="p" class="market-widget-last"> 671.29 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 12.45 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.82% </td> </tr> <tr class='datatable-row-alternating' data-symbol="NVDA:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/nvda:us">Nvidia</a> </td> <td id="p" class="market-widget-last"> 132.72 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 1.95 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.45% </td> </tr> <tr class='datatable-row' data-symbol="V:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/v:us">Visa</a> </td> <td id="p" class="market-widget-last"> 350.23 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 1.91 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.55% </td> </tr> <tr class='datatable-row-alternating' data-symbol="JPM:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/jpm:us">JPMorgan</a> </td> <td id="p" class="market-widget-last"> 262.34 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 1.59 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.60% </td> </tr> <tr class='datatable-row' data-symbol="INTC:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/intc:us">Intel</a> </td> <td id="p" class="market-widget-last"> 24.51 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.37 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.49% </td> </tr> <tr class='datatable-row-alternating' data-symbol="JNJ:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/jnj:us">J&J</a> </td> <td id="p" class="market-widget-last"> 164.06 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 1.74 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 1.07% </td> </tr> <tr class='datatable-row' data-symbol="PG:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/pg:us">P&G</a> </td> <td id="p" class="market-widget-last"> 170.49 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.31 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.18% </td> </tr> <tr class='datatable-row-alternating' data-symbol="XOM:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/xom:us">Exxon Mobil</a> </td> <td id="p" class="market-widget-last"> 111.24 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.56 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.51% </td> </tr> <tr class='datatable-row' data-symbol="GOOG:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/goog:us">Alphabet</a> </td> <td id="p" class="market-widget-last"> 182.49 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.93 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.51% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GS:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/gs:us">Goldman Sachs</a> </td> <td id="p" class="market-widget-last"> 629.59 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 3.80 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.61% </td> </tr> <tr class='datatable-row' data-symbol="CAT:US" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/cat:us">Caterpillar</a> </td> <td id="p" class="market-widget-last"> 339.75 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 9.19 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -2.63% </td> </tr> </tbody> <tfoot> <tr> <td colspan="2" class="more-link"><a style="text-decoration: underline" aria-label = "Read more" href="/stocks">More</a></td> <td colspan="4" class="widget-link" style=" "> <div class="plus-sign-widget"> <a style="font-size:12px" aria-label="Add widgets" href="javascript:void(0);"onclick="showWidgetModal();"> <i class="bi bi-plus-square-fill"></i> Add to your site</a> </div> </td> </tr> </tfoot> </table> </div> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ffbeb76d280a6722$Repeater1$ctl04$group" id="ctl00_LeftSideMenuContainer1__ffbeb76d280a6722_Repeater1_ctl04_group" value="Bond" /> <div role="tabpanel" class="tab-pane fade show " id='Bond'> <table class="table table-condensed" style="padding-bottom: -10px;"> <thead class="market-widget-thead"> <tr> <th> </th> <th style="text-align: center;">Actual</th> <th style="text-align: left;" class="d-lg-none d-xl-table-cell">Chg</th> <th style="text-align: center;">%Chg</th> </tr> </thead> <tbody> <tr class='datatable-row' data-symbol="USGG10YR:IND" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/united-states/government-bond-yield">United States </a> </td> <td id="p" class="market-widget-last"> 4.4010 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.029 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.03% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GUKG10:IND" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/united-kingdom/government-bond-yield">United Kingdom </a> </td> <td id="p" class="market-widget-last"> 4.5730 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.004 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> 0.00% </td> </tr> <tr class='datatable-row' data-symbol="GJGB10:IND" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/japan/government-bond-yield">Japan </a> </td> <td id="p" class="market-widget-last"> 1.4280 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.001 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.00% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GACGB10:IND" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/australia/government-bond-yield">Australia </a> </td> <td id="p" class="market-widget-last"> 4.4760 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.053 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.05% </td> </tr> <tr class='datatable-row' data-symbol="GDBR10:IND" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/germany/government-bond-yield">Germany </a> </td> <td id="p" class="market-widget-last"> 2.4880 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.026 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.03% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GEBR10Y:IND" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/brazil/government-bond-yield">Brazil </a> </td> <td id="p" class="market-widget-last"> 14.6720 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.007 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.01% </td> </tr> <tr class='datatable-row' data-symbol="RUGE10Y:GOV" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/russia/government-bond-yield">Russia </a> </td> <td id="p" class="market-widget-last"> 15.6700 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.020 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.02% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GIND10YR:IND" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/india/government-bond-yield">India </a> </td> <td id="p" class="market-widget-last"> 6.7570 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.007 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.01% </td> </tr> <tr class='datatable-row' data-symbol="GCAN10YR:IND" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/canada/government-bond-yield">Canada </a> </td> <td id="p" class="market-widget-last"> 3.1150 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.010 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.01% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GBTPGR10:IND" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/italy/government-bond-yield">Italy </a> </td> <td id="p" class="market-widget-last"> 3.5530 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.000 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.00% </td> </tr> <tr class='datatable-row' data-symbol="GFRN10:IND" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/france/government-bond-yield">France </a> </td> <td id="p" class="market-widget-last"> 3.2240 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.006 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.01% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GSAB10YR:GOV" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/south-africa/government-bond-yield">South Africa </a> </td> <td id="p" class="market-widget-last"> 10.5300 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.060 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.06% </td> </tr> <tr class='datatable-row' data-symbol="GCNY10YR:GOV" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/china/government-bond-yield">China </a> </td> <td id="p" class="market-widget-last"> 1.8120 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.082 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.08% </td> </tr> <tr class='datatable-row-alternating' data-symbol="GSWISS10:IND" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/switzerland/government-bond-yield">Switzerland </a> </td> <td id="p" class="market-widget-last"> 0.5320 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.022 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -0.02% </td> </tr> <tr class='datatable-row' data-symbol="CHLGOVBON10Y:GOV" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/chile/government-bond-yield">Chile </a> </td> <td id="p" class="market-widget-last"> 5.9900 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.000 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.00% </td> </tr> </tbody> <tfoot> <tr> <td colspan="2" class="more-link"><a style="text-decoration: underline" aria-label = "Read more" href="/bonds">More</a></td> <td colspan="4" class="widget-link" style=" "> <div class="plus-sign-widget"> <a style="font-size:12px" aria-label="Add widgets" href="javascript:void(0);"onclick="showWidgetModal();"> <i class="bi bi-plus-square-fill"></i> Add to your site</a> </div> </td> </tr> </tfoot> </table> </div> <input type="hidden" name="ctl00$LeftSideMenuContainer1$_ffbeb76d280a6722$Repeater1$ctl05$group" id="ctl00_LeftSideMenuContainer1__ffbeb76d280a6722_Repeater1_ctl05_group" value="Crypto" /> <div role="tabpanel" class="tab-pane fade show " id='Crypto'> <table class="table table-condensed" style="padding-bottom: -10px;"> <thead class="market-widget-thead"> <tr> <th> </th> <th style="text-align: center;">Actual</th> <th style="text-align: left;" class="d-lg-none d-xl-table-cell">Chg</th> <th style="text-align: center;">%Chg</th> </tr> </thead> <tbody> <tr class='datatable-row' data-symbol="BTCUSD:CUR" data-decimals="0"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/btcusd:cur">Bitcoin</a> </td> <td id="p" class="market-widget-last"> 94390 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 1,877 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -1.95% </td> </tr> <tr class='datatable-row-alternating' data-symbol="ETHUSD:CUR" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/ethusd:cur">Ether</a> </td> <td id="p" class="market-widget-last"> 2658.10 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 161.5000 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -5.73% </td> </tr> <tr class='datatable-row' data-symbol="BNBUSD:CUR" data-decimals="1"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/bnbusd:cur">Binance</a> </td> <td id="p" class="market-widget-last"> 630.8 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 27.4000 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -4.16% </td> </tr> <tr class='datatable-row-alternating' data-symbol="ADAUSD:CUR" data-decimals="5"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/adausd:cur">Cardano</a> </td> <td id="p" class="market-widget-last"> 0.72084 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0507 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -6.57% </td> </tr> <tr class='datatable-row' data-symbol="SOLUSD:CUR" data-decimals="4"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/solusd:cur">Solana</a> </td> <td id="p" class="market-widget-last"> 152.1224 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 15.8959 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -9.46% </td> </tr> <tr class='datatable-row-alternating' data-symbol="XRPUSD:CUR" data-decimals="5"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/xrpusd:cur">Ripple</a> </td> <td id="p" class="market-widget-last"> 2.42644 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.1481 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -5.75% </td> </tr> <tr class='datatable-row' data-symbol="DOTUSD:CUR" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/dotusd:cur">Polkadot</a> </td> <td id="p" class="market-widget-last"> 4.66 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.2986 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -6.02% </td> </tr> <tr class='datatable-row-alternating' data-symbol="AVXUSD:CUR" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/avxusd:cur">Avalanche</a> </td> <td id="p" class="market-widget-last"> 23.15 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 1.7300 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -6.95% </td> </tr> <tr class='datatable-row' data-symbol="MTCUSD:CUR" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/mtcusd:cur">Polygon</a> </td> <td id="p" class="market-widget-last"> 0.28 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0195 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -6.61% </td> </tr> <tr class='datatable-row-alternating' data-symbol="ATMUSD:CUR" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/atmusd:cur">Cosmos</a> </td> <td id="p" class="market-widget-last"> 4.59 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.2886 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -5.92% </td> </tr> <tr class='datatable-row' data-symbol="DAIUSD:CUR" data-decimals="5"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/daiusd:cur">Dai</a> </td> <td id="p" class="market-widget-last"> 1.00010 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-positive-image'></span> 0.0000 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-positive"> 0.00% </td> </tr> <tr class='datatable-row-alternating' data-symbol="LTCUSD:CUR" data-decimals="3"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/ltcusd:cur">Litecoin</a> </td> <td id="p" class="market-widget-last"> 122.990 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 6.9600 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -5.36% </td> </tr> <tr class='datatable-row' data-symbol="UNIUSD:CUR" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/uniusd:cur">Uniswap</a> </td> <td id="p" class="market-widget-last"> 8.27 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.7599 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -8.41% </td> </tr> <tr class='datatable-row-alternating' data-symbol="ALGUSD:CUR" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/algusd:cur">Algorand</a> </td> <td id="p" class="market-widget-last"> 0.24 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 0.0182 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -7.01% </td> </tr> <tr class='datatable-row' data-symbol="BCHUSD:CUR" data-decimals="2"> <td class="datatable-item-first" style="text-wrap: auto"> <a href="/bchusd:cur">Bitcoin Cash</a> </td> <td id="p" class="market-widget-last"> 307.67 </td> <td id="nch" class="datatable-item d-lg-none d-xl-table-cell " style="text-align: left; min-width: 70px"> <span class='market-negative-image'></span> 20.3700 </td> <td id="pch" class="market-widget-pct calendar-item calendar-item-negative"> -6.21% </td> </tr> </tbody> <tfoot> <tr> <td colspan="2" class="more-link"><a style="text-decoration: underline" aria-label = "Read more" href="/crypto">More</a></td> <td colspan="4" class="widget-link" style=" "> <div class="plus-sign-widget"> <a style="font-size:12px" aria-label="Add widgets" href="javascript:void(0);"onclick="showWidgetModal();"> <i class="bi bi-plus-square-fill"></i> Add to your site</a> </div> </td> </tr> </tfoot> </table> </div> </div> </div> </div> <script> function redirectToAPI() { window.location.href = "https://tradingeconomics.com/api/?source=market-widget"; } function showWidgetModal() { if (isLoggedIn) { return redirectToAPI() } let modalChartTitle = "" let modalChartContent = "<div>"; modalChartContent += "Take your website to the next level by embedding our customizable widgets! Exclusively for subscribers and priced accordingly to your needs."; modalChartContent += "</div>"; let modalChartFooter = "<div style='text-align:center;'><div class='btn-group'>"; if (!isLoggedIn) { let buttonContact = "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/api/contact.aspx?subject=market+widget' target='_blank'>Questions? <b>Contact us</b></a>" modalChartFooter += buttonContact; } modalChartFooter += "</div></div>"; var modal = "<div class ='modal' id='chartModal' tabindex='-1' role='dialog' aria-labelledby='myModalLabel'>"; modal += "<div class='modal-dialog modal-dialog-centered' role='document'>"; modal += "<div class='modal-content'>"; modal += "<div class='modal-header'><div class='modal-title'></div><button type='button' class ='btn-close' data-bs-dismiss='modal' aria-label='Close'></button></div>"; modal += "<div class='modal-body' style='text-align:justify;'></div>" modal += "<div class='modal-footer'></div>" modal += "</div></div></div>" var jModal = $(modal); $(jModal).find(".modal-title").html(modalChartTitle); if (modalChartContent) $(jModal).find(".modal-body").html(modalChartContent); else $(jModal).find(".modal-body").remove(); if (modalChartFooter) $(jModal).find(".modal-footer").html(modalChartFooter); else $(jModal).find(".modal-footer").remove(); $(jModal).on('show.bs.modal', function (e) { $(".navbar").css("padding-right", "17px"); $(".pagemenu").css("padding-right", "17px"); $(".pagetabs").css("padding-right", "17px"); }); $(jModal).on('hide.bs.modal', function (e) { $(".navbar").css("padding-right", ""); $(".pagemenu").css("padding-right", ""); $(".pagetabs").css("padding-right", ""); }); $(jModal).modal("show"); } </script><div id="ctl00_LeftSideMenuContainer1_ctl01_countrySelectionPanel" style="padding-bottom: 5px;"> <select id="SelectCountries" class="form-select" onchange="window.location=this.options[this.selectedIndex].value"> <option value="" selected="selected"> Country </option> <option value="/united-states/news">United States</option> <option value="/united-kingdom/news">United Kingdom</option> <option value="/euro-area/news">Euro area</option> <option value="/china/news">China</option> <option value="/afghanistan/news">Afghanistan</option> <option value="/albania/news">Albania</option> <option value="/algeria/news">Algeria</option> <option value="/andorra/news">Andorra</option> <option value="/angola/news">Angola</option> <option value="/antigua-and-barbuda/news">Antigua and Barbuda</option> <option value="/argentina/news">Argentina</option> <option value="/armenia/news">Armenia</option> <option value="/aruba/news">Aruba</option> <option value="/australia/news">Australia</option> <option value="/austria/news">Austria</option> <option value="/azerbaijan/news">Azerbaijan</option> <option value="/bahamas/news">Bahamas</option> <option value="/bahrain/news">Bahrain</option> <option value="/bangladesh/news">Bangladesh</option> <option value="/barbados/news">Barbados</option> <option value="/belarus/news">Belarus</option> <option value="/belgium/news">Belgium</option> <option value="/belize/news">Belize</option> <option value="/benin/news">Benin</option> <option value="/bermuda/news">Bermuda</option> <option value="/bhutan/news">Bhutan</option> <option value="/bolivia/news">Bolivia</option> <option value="/bosnia-and-herzegovina/news">Bosnia</option> <option value="/botswana/news">Botswana</option> <option value="/brazil/news">Brazil</option> <option value="/brunei/news">Brunei</option> <option value="/bulgaria/news">Bulgaria</option> <option value="/burkina-faso/news">Burkina Faso</option> <option value="/burundi/news">Burundi</option> <option value="/cambodia/news">Cambodia</option> <option value="/cameroon/news">Cameroon</option> <option value="/canada/news">Canada</option> <option value="/cape-verde/news">Cape Verde</option> <option value="/cayman-islands/news">Cayman Islands</option> <option value="/central-african-republic/news">Central African Republic</option> <option value="/chad/news">Chad</option> <option value="/channel-islands/news">Channel Islands</option> <option value="/chile/news">Chile</option> <option value="/china/news">China</option> <option value="/colombia/news">Colombia</option> <option value="/comoros/news">Comoros</option> <option value="/congo/news">Congo</option> <option value="/costa-rica/news">Costa Rica</option> <option value="/cote-d-ivoire/news">Cote d Ivoire</option> <option value="/croatia/news">Croatia</option> <option value="/cuba/news">Cuba</option> <option value="/cyprus/news">Cyprus</option> <option value="/czech-republic/news">Czech Republic</option> <option value="/denmark/news">Denmark</option> <option value="/djibouti/news">Djibouti</option> <option value="/dominica/news">Dominica</option> <option value="/dominican-republic/news">Dominican Republic</option> <option value="/east-asia-and-pacific/news">East Asia and Pacific</option> <option value="/east-timor/news">East Timor</option> <option value="/ecuador/news">Ecuador</option> <option value="/egypt/news">Egypt</option> <option value="/el-salvador/news">El Salvador</option> <option value="/equatorial-guinea/news">Equatorial Guinea</option> <option value="/eritrea/news">Eritrea</option> <option value="/estonia/news">Estonia</option> <option value="/ethiopia/news">Ethiopia</option> <option value="/euro-area/news">Euro area</option> <option value="/european-union/news">European Union</option> <option value="/europe-and-central-asia/news">Europe and Central Asia</option> <option value="/faeroe-islands/news">Faeroe Islands</option> <option value="/fiji/news">Fiji</option> <option value="/finland/news">Finland</option> <option value="/france/news">France</option> <option value="/french-polynesia/news">French Polynesia</option> <option value="/gabon/news">Gabon</option> <option value="/gambia/news">Gambia</option> <option value="/georgia/news">Georgia</option> <option value="/germany/news">Germany</option> <option value="/ghana/news">Ghana</option> <option value="/greece/news">Greece</option> <option value="/greenland/news">Greenland</option> <option value="/grenada/news">Grenada</option> <option value="/guam/news">Guam</option> <option value="/guatemala/news">Guatemala</option> <option value="/guinea/news">Guinea</option> <option value="/guinea-bissau/news">Guinea Bissau</option> <option value="/guyana/news">Guyana</option> <option value="/haiti/news">Haiti</option> <option value="/honduras/news">Honduras</option> <option value="/hong-kong/news">Hong Kong</option> <option value="/hungary/news">Hungary</option> <option value="/iceland/news">Iceland</option> <option value="/india/news">India</option> <option value="/indonesia/news">Indonesia</option> <option value="/iran/news">Iran</option> <option value="/iraq/news">Iraq</option> <option value="/ireland/news">Ireland</option> <option value="/isle-of-man/news">Isle of Man</option> <option value="/israel/news">Israel</option> <option value="/italy/news">Italy</option> <option value="/ivory-coast/news">Ivory Coast</option> <option value="/jamaica/news">Jamaica</option> <option value="/japan/news">Japan</option> <option value="/jordan/news">Jordan</option> <option value="/kazakhstan/news">Kazakhstan</option> <option value="/kenya/news">Kenya</option> <option value="/kiribati/news">Kiribati</option> <option value="/kosovo/news">Kosovo</option> <option value="/kuwait/news">Kuwait</option> <option value="/kyrgyzstan/news">Kyrgyzstan</option> <option value="/laos/news">Laos</option> <option value="/latvia/news">Latvia</option> <option value="/lebanon/news">Lebanon</option> <option value="/lesotho/news">Lesotho</option> <option value="/liberia/news">Liberia</option> <option value="/libya/news">Libya</option> <option value="/liechtenstein/news">Liechtenstein</option> <option value="/lithuania/news">Lithuania</option> <option value="/luxembourg/news">Luxembourg</option> <option value="/macau/news">Macau</option> <option value="/macedonia/news">Macedonia</option> <option value="/madagascar/news">Madagascar</option> <option value="/malawi/news">Malawi</option> <option value="/malaysia/news">Malaysia</option> <option value="/maldives/news">Maldives</option> <option value="/mali/news">Mali</option> <option value="/malta/news">Malta</option> <option value="/marshall-islands/news">Marshall Islands</option> <option value="/mauritania/news">Mauritania</option> <option value="/mauritius/news">Mauritius</option> <option value="/mayotte/news">Mayotte</option> <option value="/mexico/news">Mexico</option> <option value="/micronesia/news">Micronesia</option> <option value="/moldova/news">Moldova</option> <option value="/monaco/news">Monaco</option> <option value="/mongolia/news">Mongolia</option> <option value="/montenegro/news">Montenegro</option> <option value="/morocco/news">Morocco</option> <option value="/mozambique/news">Mozambique</option> <option value="/myanmar/news">Myanmar</option> <option value="/namibia/news">Namibia</option> <option value="/nepal/news">Nepal</option> <option value="/netherlands/news">Netherlands</option> <option value="/netherlands-antilles/news">Netherlands Antilles</option> <option value="/new-caledonia/news">New Caledonia</option> <option value="/new-zealand/news">New Zealand</option> <option value="/nicaragua/news">Nicaragua</option> <option value="/niger/news">Niger</option> <option value="/nigeria/news">Nigeria</option> <option value="/north-korea/news">North Korea</option> <option value="/norway/news">Norway</option> <option value="/oman/news">Oman</option> <option value="/pakistan/news">Pakistan</option> <option value="/palau/news">Palau</option> <option value="/panama/news">Panama</option> <option value="/palestine/news">Palestine</option> <option value="/papua-new-guinea/news">Papua New Guinea</option> <option value="/paraguay/news">Paraguay</option> <option value="/peru/news">Peru</option> <option value="/philippines/news">Philippines</option> <option value="/poland/news">Poland</option> <option value="/portugal/news">Portugal</option> <option value="/puerto-rico/news">Puerto Rico</option> <option value="/qatar/news">Qatar</option> <option value="/republic-of-the-congo/news">Republic of the Congo</option> <option value="/romania/news">Romania</option> <option value="/russia/news">Russia</option> <option value="/rwanda/news">Rwanda</option> <option value="/samoa/news">Samoa</option> <option value="/sao-tome-and-principe/news">Sao Tome and Principe</option> <option value="/saudi-arabia/news">Saudi Arabia</option> <option value="/senegal/news">Senegal</option> <option value="/serbia/news">Serbia</option> <option value="/seychelles/news">Seychelles</option> <option value="/sierra-leone/news">Sierra Leone</option> <option value="/singapore/news">Singapore</option> <option value="/slovakia/news">Slovakia</option> <option value="/slovenia/news">Slovenia</option> <option value="/solomon-islands/news">Solomon Islands</option> <option value="/somalia/news">Somalia</option> <option value="/south-africa/news">South Africa</option> <option value="/south-asia/news">South Asia</option> <option value="/south-korea/news">South Korea</option> <option value="/south-sudan/news">South Sudan</option> <option value="/spain/news">Spain</option> <option value="/sri-lanka/news">Sri Lanka</option> <option value="/sudan/news">Sudan</option> <option value="/suriname/news">Suriname</option> <option value="/swaziland/news">Swaziland</option> <option value="/sweden/news">Sweden</option> <option value="/switzerland/news">Switzerland</option> <option value="/syria/news">Syria</option> <option value="/taiwan/news">Taiwan</option> <option value="/tajikistan/news">Tajikistan</option> <option value="/tanzania/news">Tanzania</option> <option value="/thailand/news">Thailand</option> <option value="/timor-leste/news">Timor Leste</option> <option value="/togo/news">Togo</option> <option value="/tonga/news">Tonga</option> <option value="/trinidad-and-tobago/news">Trinidad and Tobago</option> <option value="/tunisia/news">Tunisia</option> <option value="/turkey/news">Turkey</option> <option value="/turkmenistan/news">Turkmenistan</option> <option value="/uganda/news">Uganda</option> <option value="/ukraine/news">Ukraine</option> <option value="/united-arab-emirates/news">United Arab Emirates</option> <option value="/united-kingdom/news">United Kingdom</option> <option value="/united-states/news">United States</option> <option value="/uruguay/news">Uruguay</option> <option value="/uzbekistan/news">Uzbekistan</option> <option value="/vanuatu/news">Vanuatu</option> <option value="/venezuela/news">Venezuela</option> <option value="/vietnam/news">Vietnam</option> <option value="/virgin-islands/news">Virgin Islands</option> <option value="/yemen/news">Yemen</option> <option value="/zambia/news">Zambia</option> <option value="/zimbabwe/news">Zimbabwe</option> </select> </div> <div id="accordion" class="accordion accordion-flush"> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#0" aria-expanded="false" aria-controls="0"> <b class="dropdown-toggle"></b> Markets </button> </h2> <div id="0" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl00_Repeater2_ctl00_HyperLink2" href="/commodities" style="text-decoration: none; text-transform: capitalize;">Commodity</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl00_Repeater2_ctl01_HyperLink2" href="/currencies" style="text-decoration: none; text-transform: capitalize;">Currency</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl00_Repeater2_ctl02_HyperLink2" href="/bonds" style="text-decoration: none; text-transform: capitalize;">Government Bond 10Y</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl00_Repeater2_ctl03_HyperLink2" href="/stocks" style="text-decoration: none; text-transform: capitalize;">Stock Market</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#1" aria-expanded="false" aria-controls="1"> <b class="dropdown-toggle"></b> GDP </button> </h2> <div id="1" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl00_HyperLink2" href="/country-list/full-year-gdp-growth" style="text-decoration: none; text-transform: capitalize;">Full Year GDP Growth</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl01_HyperLink2" href="/country-list/gdp" style="text-decoration: none; text-transform: capitalize;">GDP</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl02_HyperLink2" href="/country-list/gdp-annual-growth-rate" style="text-decoration: none; text-transform: capitalize;">GDP Annual Growth Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl03_HyperLink2" href="/country-list/gdp-constant-prices" style="text-decoration: none; text-transform: capitalize;">GDP Constant Prices</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl04_HyperLink2" href="/country-list/gdp-from-agriculture" style="text-decoration: none; text-transform: capitalize;">GDP from Agriculture</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl05_HyperLink2" href="/country-list/gdp-from-construction" style="text-decoration: none; text-transform: capitalize;">GDP from Construction</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl06_HyperLink2" href="/country-list/gdp-from-manufacturing" style="text-decoration: none; text-transform: capitalize;">GDP from Manufacturing</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl07_HyperLink2" href="/country-list/gdp-from-mining" style="text-decoration: none; text-transform: capitalize;">GDP from Mining</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl08_HyperLink2" href="/country-list/gdp-from-public-administration" style="text-decoration: none; text-transform: capitalize;">GDP from Public Administration</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl09_HyperLink2" href="/country-list/gdp-from-services" style="text-decoration: none; text-transform: capitalize;">GDP from Services</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl10_HyperLink2" href="/country-list/gdp-from-transport" style="text-decoration: none; text-transform: capitalize;">GDP from Transport</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl11_HyperLink2" href="/country-list/gdp-from-utilities" style="text-decoration: none; text-transform: capitalize;">GDP from Utilities</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl12_HyperLink2" href="/country-list/gdp-growth-rate" style="text-decoration: none; text-transform: capitalize;">GDP Growth Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl13_HyperLink2" href="/country-list/gdp-per-capita" style="text-decoration: none; text-transform: capitalize;">GDP per Capita</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl14_HyperLink2" href="/country-list/gdp-per-capita-ppp" style="text-decoration: none; text-transform: capitalize;">GDP per Capita PPP</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl15_HyperLink2" href="/country-list/gross-fixed-capital-formation" style="text-decoration: none; text-transform: capitalize;">Gross Fixed Capital Formation</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl01_Repeater2_ctl16_HyperLink2" href="/country-list/gross-national-product" style="text-decoration: none; text-transform: capitalize;">Gross National Product</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#2" aria-expanded="false" aria-controls="2"> <b class="dropdown-toggle"></b> Labour </button> </h2> <div id="2" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl00_HyperLink2" href="/country-list/employed-persons" style="text-decoration: none; text-transform: capitalize;">Employed Persons</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl01_HyperLink2" href="/country-list/employment-change" style="text-decoration: none; text-transform: capitalize;">Employment Change</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl02_HyperLink2" href="/country-list/employment-rate" style="text-decoration: none; text-transform: capitalize;">Employment Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl03_HyperLink2" href="/country-list/full-time-employment" style="text-decoration: none; text-transform: capitalize;">Full Time Employment</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl04_HyperLink2" href="/country-list/initial-jobless-claims" style="text-decoration: none; text-transform: capitalize;">Initial Jobless Claims</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl05_HyperLink2" href="/country-list/job-vacancies" style="text-decoration: none; text-transform: capitalize;">Job Vacancies</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl06_HyperLink2" href="/country-list/labor-force-participation-rate" style="text-decoration: none; text-transform: capitalize;">Labor Force Participation Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl07_HyperLink2" href="/country-list/labour-costs" style="text-decoration: none; text-transform: capitalize;">Labour Costs</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl08_HyperLink2" href="/country-list/long-term-unemployment-rate" style="text-decoration: none; text-transform: capitalize;">Long Term Unemployment Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl09_HyperLink2" href="/country-list/minimum-wages" style="text-decoration: none; text-transform: capitalize;">Minimum Wages</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl10_HyperLink2" href="/country-list/non-farm-payrolls" style="text-decoration: none; text-transform: capitalize;">Non Farm Payrolls</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl11_HyperLink2" href="/country-list/part-time-employment" style="text-decoration: none; text-transform: capitalize;">Part Time Employment</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl12_HyperLink2" href="/country-list/population" style="text-decoration: none; text-transform: capitalize;">Population</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl13_HyperLink2" href="/country-list/productivity" style="text-decoration: none; text-transform: capitalize;">Productivity</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl14_HyperLink2" href="/country-list/retirement-age-men" style="text-decoration: none; text-transform: capitalize;">Retirement Age Men</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl15_HyperLink2" href="/country-list/retirement-age-women" style="text-decoration: none; text-transform: capitalize;">Retirement Age Women</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl16_HyperLink2" href="/country-list/unemployed-persons" style="text-decoration: none; text-transform: capitalize;">Unemployed Persons</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl17_HyperLink2" href="/country-list/unemployment-rate" style="text-decoration: none; text-transform: capitalize;">Unemployment Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl18_HyperLink2" href="/country-list/wage-growth" style="text-decoration: none; text-transform: capitalize;">Wage Growth</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl19_HyperLink2" href="/country-list/wages" style="text-decoration: none; text-transform: capitalize;">Wages</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl20_HyperLink2" href="/country-list/wages-in-manufacturing" style="text-decoration: none; text-transform: capitalize;">Wages in Manufacturing</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl02_Repeater2_ctl21_HyperLink2" href="/country-list/youth-unemployment-rate" style="text-decoration: none; text-transform: capitalize;">Youth Unemployment Rate</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#3" aria-expanded="false" aria-controls="3"> <b class="dropdown-toggle"></b> Prices </button> </h2> <div id="3" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl00_HyperLink2" href="/country-list/consumer-price-index-cpi" style="text-decoration: none; text-transform: capitalize;">Consumer Price Index CPI</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl01_HyperLink2" href="/country-list/core-consumer-prices" style="text-decoration: none; text-transform: capitalize;">Core Consumer Prices</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl02_HyperLink2" href="/country-list/core-inflation-rate" style="text-decoration: none; text-transform: capitalize;">Core Inflation Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl03_HyperLink2" href="/country-list/cpi-housing-utilities" style="text-decoration: none; text-transform: capitalize;">CPI Housing Utilities</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl04_HyperLink2" href="/country-list/export-prices" style="text-decoration: none; text-transform: capitalize;">Export Prices</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl05_HyperLink2" href="/country-list/food-inflation" style="text-decoration: none; text-transform: capitalize;">Food Inflation</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl06_HyperLink2" href="/country-list/gdp-deflator" style="text-decoration: none; text-transform: capitalize;">GDP Deflator</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl07_HyperLink2" href="/country-list/harmonised-consumer-prices" style="text-decoration: none; text-transform: capitalize;">Harmonised Consumer Prices</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl08_HyperLink2" href="/country-list/harmonised-inflation-rate-mom" style="text-decoration: none; text-transform: capitalize;">Harmonised Inflation Rate MoM</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl09_HyperLink2" href="/country-list/harmonised-inflation-rate-yoy" style="text-decoration: none; text-transform: capitalize;">Harmonised Inflation Rate YoY</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl10_HyperLink2" href="/country-list/import-prices" style="text-decoration: none; text-transform: capitalize;">Import Prices</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl11_HyperLink2" href="/country-list/inflation-expectations" style="text-decoration: none; text-transform: capitalize;">Inflation Expectations</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl12_HyperLink2" href="/country-list/inflation-rate" style="text-decoration: none; text-transform: capitalize;">Inflation Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl13_HyperLink2" href="/country-list/inflation-rate-mom" style="text-decoration: none; text-transform: capitalize;">Inflation Rate MoM</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl14_HyperLink2" href="/country-list/producer-price-inflation-mom" style="text-decoration: none; text-transform: capitalize;">Producer Price Inflation MoM</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl15_HyperLink2" href="/country-list/producer-prices" style="text-decoration: none; text-transform: capitalize;">Producer Prices Index</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl03_Repeater2_ctl16_HyperLink2" href="/country-list/producer-prices-change" style="text-decoration: none; text-transform: capitalize;">Producer Prices YoY</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#4" aria-expanded="false" aria-controls="4"> <b class="dropdown-toggle"></b> Money </button> </h2> <div id="4" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl00_HyperLink2" href="/country-list/banks-balance-sheet" style="text-decoration: none; text-transform: capitalize;">Banks Balance Sheet</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl01_HyperLink2" href="/country-list/cash-reserve-ratio" style="text-decoration: none; text-transform: capitalize;">Cash Reserve Ratio</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl02_HyperLink2" href="/country-list/central-bank-balance-sheet" style="text-decoration: none; text-transform: capitalize;">Central Bank Balance Sheet</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl03_HyperLink2" href="/country-list/deposit-interest-rate" style="text-decoration: none; text-transform: capitalize;">Deposit Interest Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl04_HyperLink2" href="/country-list/foreign-exchange-reserves" style="text-decoration: none; text-transform: capitalize;">Foreign Exchange Reserves</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl05_HyperLink2" href="/country-list/interbank-rate" style="text-decoration: none; text-transform: capitalize;">Interbank Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl06_HyperLink2" href="/country-list/interest-rate" style="text-decoration: none; text-transform: capitalize;">Interest Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl07_HyperLink2" href="/country-list/lending-rate" style="text-decoration: none; text-transform: capitalize;">Lending Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl08_HyperLink2" href="/country-list/loan-growth" style="text-decoration: none; text-transform: capitalize;">Loan Growth</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl09_HyperLink2" href="/country-list/loans-to-private-sector" style="text-decoration: none; text-transform: capitalize;">Loans to Private Sector</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl10_HyperLink2" href="/country-list/money-supply-m0" style="text-decoration: none; text-transform: capitalize;">Money Supply M0</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl11_HyperLink2" href="/country-list/money-supply-m1" style="text-decoration: none; text-transform: capitalize;">Money Supply M1</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl12_HyperLink2" href="/country-list/money-supply-m2" style="text-decoration: none; text-transform: capitalize;">Money Supply M2</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl13_HyperLink2" href="/country-list/money-supply-m3" style="text-decoration: none; text-transform: capitalize;">Money Supply M3</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl04_Repeater2_ctl14_HyperLink2" href="/country-list/private-debt-to-gdp" style="text-decoration: none; text-transform: capitalize;">Private Debt to GDP</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#5" aria-expanded="false" aria-controls="5"> <b class="dropdown-toggle"></b> Trade </button> </h2> <div id="5" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl00_HyperLink2" href="/country-list/balance-of-trade" style="text-decoration: none; text-transform: capitalize;">Balance of Trade</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl01_HyperLink2" href="/country-list/capital-flows" style="text-decoration: none; text-transform: capitalize;">Capital Flows</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl02_HyperLink2" href="/country-list/crude-oil-production" style="text-decoration: none; text-transform: capitalize;">Crude Oil Production</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl03_HyperLink2" href="/country-list/current-account" style="text-decoration: none; text-transform: capitalize;">Current Account</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl04_HyperLink2" href="/country-list/current-account-to-gdp" style="text-decoration: none; text-transform: capitalize;">Current Account to GDP</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl05_HyperLink2" href="/country-list/exports" style="text-decoration: none; text-transform: capitalize;">Exports</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl06_HyperLink2" href="/country-list/external-debt" style="text-decoration: none; text-transform: capitalize;">External Debt</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl07_HyperLink2" href="/country-list/foreign-direct-investment" style="text-decoration: none; text-transform: capitalize;">Foreign Direct Investment</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl08_HyperLink2" href="/country-list/gold-reserves" style="text-decoration: none; text-transform: capitalize;">Gold Reserves</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl09_HyperLink2" href="/country-list/imports" style="text-decoration: none; text-transform: capitalize;">Imports</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl10_HyperLink2" href="/country-list/remittances" style="text-decoration: none; text-transform: capitalize;">Remittances</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl11_HyperLink2" href="/country-list/terms-of-trade" style="text-decoration: none; text-transform: capitalize;">Terms of Trade</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl12_HyperLink2" href="/country-list/terrorism-index" style="text-decoration: none; text-transform: capitalize;">Terrorism Index</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl13_HyperLink2" href="/country-list/tourism-revenues" style="text-decoration: none; text-transform: capitalize;">Tourism Revenues</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl14_HyperLink2" href="/country-list/tourist-arrivals" style="text-decoration: none; text-transform: capitalize;">Tourist Arrivals</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl05_Repeater2_ctl15_HyperLink2" href="/country-list/weapons-sales" style="text-decoration: none; text-transform: capitalize;">Weapons Sales</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#6" aria-expanded="false" aria-controls="6"> <b class="dropdown-toggle"></b> Government </button> </h2> <div id="6" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl00_HyperLink2" href="/country-list/asylum-applications" style="text-decoration: none; text-transform: capitalize;">Asylum Applications</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl01_HyperLink2" href="/country-list/corruption-index" style="text-decoration: none; text-transform: capitalize;">Corruption Index</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl02_HyperLink2" href="/country-list/corruption-rank" style="text-decoration: none; text-transform: capitalize;">Corruption Rank</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl03_HyperLink2" href="/country-list/rating" style="text-decoration: none; text-transform: capitalize;">Credit Rating</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl04_HyperLink2" href="/country-list/fiscal-expenditure" style="text-decoration: none; text-transform: capitalize;">Fiscal Expenditure</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl05_HyperLink2" href="/country-list/government-budget" style="text-decoration: none; text-transform: capitalize;">Government Budget</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl06_HyperLink2" href="/country-list/government-budget-value" style="text-decoration: none; text-transform: capitalize;">Government Budget Value</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl07_HyperLink2" href="/country-list/government-debt" style="text-decoration: none; text-transform: capitalize;">Government Debt</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl08_HyperLink2" href="/country-list/government-debt-to-gdp" style="text-decoration: none; text-transform: capitalize;">Government Debt to GDP</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl09_HyperLink2" href="/country-list/government-revenues" style="text-decoration: none; text-transform: capitalize;">Government Revenues</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl10_HyperLink2" href="/country-list/government-spending" style="text-decoration: none; text-transform: capitalize;">Government Spending</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl11_HyperLink2" href="/country-list/government-spending-to-gdp" style="text-decoration: none; text-transform: capitalize;">Government Spending to GDP</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl12_HyperLink2" href="/holidays" style="text-decoration: none; text-transform: capitalize;">Holidays</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl06_Repeater2_ctl13_HyperLink2" href="/country-list/military-expenditure" style="text-decoration: none; text-transform: capitalize;">Military Expenditure</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#7" aria-expanded="false" aria-controls="7"> <b class="dropdown-toggle"></b> Business </button> </h2> <div id="7" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl00_HyperLink2" href="/country-list/bankruptcies" style="text-decoration: none; text-transform: capitalize;">Bankruptcies</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl01_HyperLink2" href="/country-list/business-confidence" style="text-decoration: none; text-transform: capitalize;">Business Confidence</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl02_HyperLink2" href="/country-list/capacity-utilization" style="text-decoration: none; text-transform: capitalize;">Capacity Utilization</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl03_HyperLink2" href="/country-list/car-production" style="text-decoration: none; text-transform: capitalize;">Car Production</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl04_HyperLink2" href="/country-list/car-registrations" style="text-decoration: none; text-transform: capitalize;">Car Registrations</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl05_HyperLink2" href="/country-list/cement-production" style="text-decoration: none; text-transform: capitalize;">Cement Production</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl06_HyperLink2" href="/country-list/changes-in-inventories" style="text-decoration: none; text-transform: capitalize;">Changes in Inventories</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl07_HyperLink2" href="/country-list/composite-pmi" style="text-decoration: none; text-transform: capitalize;">Composite PMI</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl08_HyperLink2" href="/country-list/corporate-profits" style="text-decoration: none; text-transform: capitalize;">Corporate Profits</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl09_HyperLink2" href="/country-list/electricity-production" style="text-decoration: none; text-transform: capitalize;">Electricity Production</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl10_HyperLink2" href="/country-list/factory-orders" style="text-decoration: none; text-transform: capitalize;">Factory Orders</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl11_HyperLink2" href="/country-list/industrial-production" style="text-decoration: none; text-transform: capitalize;">Industrial Production</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl12_HyperLink2" href="/country-list/industrial-production-mom" style="text-decoration: none; text-transform: capitalize;">Industrial Production Mom</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl13_HyperLink2" href="/country-list/leading-economic-index" style="text-decoration: none; text-transform: capitalize;">Leading Economic Index</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl14_HyperLink2" href="/country-list/manufacturing-pmi" style="text-decoration: none; text-transform: capitalize;">Manufacturing PMI</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl15_HyperLink2" href="/country-list/manufacturing-production" style="text-decoration: none; text-transform: capitalize;">Manufacturing Production</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl16_HyperLink2" href="/country-list/mining-production" style="text-decoration: none; text-transform: capitalize;">Mining Production</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl17_HyperLink2" href="/country-list/new-orders" style="text-decoration: none; text-transform: capitalize;">New Orders</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl18_HyperLink2" href="/country-list/services-pmi" style="text-decoration: none; text-transform: capitalize;">Services PMI</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl19_HyperLink2" href="/country-list/small-business-sentiment" style="text-decoration: none; text-transform: capitalize;">Small Business Sentiment</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl20_HyperLink2" href="/country-list/steel-production" style="text-decoration: none; text-transform: capitalize;">Steel Production</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl21_HyperLink2" href="/country-list/total-vehicle-sales" style="text-decoration: none; text-transform: capitalize;">Total Vehicle Sales</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl07_Repeater2_ctl22_HyperLink2" href="/country-list/zew-economic-sentiment-index" style="text-decoration: none; text-transform: capitalize;">ZEW Economic Sentiment Index</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#8" aria-expanded="false" aria-controls="8"> <b class="dropdown-toggle"></b> Consumer </button> </h2> <div id="8" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl00_HyperLink2" href="/country-list/bank-lending-rate" style="text-decoration: none; text-transform: capitalize;">Bank Lending Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl01_HyperLink2" href="/country-list/consumer-confidence" style="text-decoration: none; text-transform: capitalize;">Consumer Confidence</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl02_HyperLink2" href="/country-list/consumer-credit" style="text-decoration: none; text-transform: capitalize;">Consumer Credit</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl03_HyperLink2" href="/country-list/consumer-spending" style="text-decoration: none; text-transform: capitalize;">Consumer Spending</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl04_HyperLink2" href="/country-list/disposable-personal-income" style="text-decoration: none; text-transform: capitalize;">Disposable Personal Income</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl05_HyperLink2" href="/country-list/gasoline-prices" style="text-decoration: none; text-transform: capitalize;">Gasoline Prices</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl06_HyperLink2" href="/country-list/households-debt-to-gdp" style="text-decoration: none; text-transform: capitalize;">Households Debt to GDP</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl07_HyperLink2" href="/country-list/households-debt-to-income" style="text-decoration: none; text-transform: capitalize;">Households Debt to Income</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl08_HyperLink2" href="/country-list/personal-savings" style="text-decoration: none; text-transform: capitalize;">Personal Savings</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl09_HyperLink2" href="/country-list/personal-spending" style="text-decoration: none; text-transform: capitalize;">Personal Spending</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl10_HyperLink2" href="/country-list/private-sector-credit" style="text-decoration: none; text-transform: capitalize;">Private Sector Credit</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl11_HyperLink2" href="/country-list/retail-sales-mom" style="text-decoration: none; text-transform: capitalize;">Retail Sales MoM</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl08_Repeater2_ctl12_HyperLink2" href="/country-list/retail-sales-yoy" style="text-decoration: none; text-transform: capitalize;">Retail Sales YoY</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#9" aria-expanded="false" aria-controls="9"> <b class="dropdown-toggle"></b> Housing </button> </h2> <div id="9" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl09_Repeater2_ctl00_HyperLink2" href="/country-list/building-permits" style="text-decoration: none; text-transform: capitalize;">Building Permits</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl09_Repeater2_ctl01_HyperLink2" href="/country-list/construction-output" style="text-decoration: none; text-transform: capitalize;">Construction Output</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl09_Repeater2_ctl02_HyperLink2" href="/country-list/home-ownership-rate" style="text-decoration: none; text-transform: capitalize;">Home Ownership Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl09_Repeater2_ctl03_HyperLink2" href="/country-list/housing-index" style="text-decoration: none; text-transform: capitalize;">Housing Index</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl09_Repeater2_ctl04_HyperLink2" href="/country-list/housing-starts" style="text-decoration: none; text-transform: capitalize;">Housing Starts</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl09_Repeater2_ctl05_HyperLink2" href="/country-list/price-to-rent-ratio" style="text-decoration: none; text-transform: capitalize;">Price to Rent Ratio</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl09_Repeater2_ctl06_HyperLink2" href="/country-list/residential-property-prices" style="text-decoration: none; text-transform: capitalize;">Residential Property Prices</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#10" aria-expanded="false" aria-controls="10"> <b class="dropdown-toggle"></b> Taxes </button> </h2> <div id="10" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl10_Repeater2_ctl00_HyperLink2" href="/country-list/corporate-tax-rate" style="text-decoration: none; text-transform: capitalize;">Corporate Tax Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl10_Repeater2_ctl01_HyperLink2" href="/country-list/personal-income-tax-rate" style="text-decoration: none; text-transform: capitalize;">Personal Income Tax Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl10_Repeater2_ctl02_HyperLink2" href="/country-list/sales-tax-rate" style="text-decoration: none; text-transform: capitalize;">Sales Tax Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl10_Repeater2_ctl03_HyperLink2" href="/country-list/social-security-rate" style="text-decoration: none; text-transform: capitalize;">Social Security Rate</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl10_Repeater2_ctl04_HyperLink2" href="/country-list/social-security-rate-for-companies" style="text-decoration: none; text-transform: capitalize;">Social Security Rate For Companies</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl10_Repeater2_ctl05_HyperLink2" href="/country-list/social-security-rate-for-employees" style="text-decoration: none; text-transform: capitalize;">Social Security Rate For Employees</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#11" aria-expanded="false" aria-controls="11"> <b class="dropdown-toggle"></b> Energy </button> </h2> <div id="11" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl11_Repeater2_ctl00_HyperLink2" href="/country-list/crude-oil-rigs" style="text-decoration: none; text-transform: capitalize;">Crude Oil Rigs</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl11_Repeater2_ctl01_HyperLink2" href="/country-list/natural-gas-stocks-capacity" style="text-decoration: none; text-transform: capitalize;">Natural Gas Stocks Capacity</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl11_Repeater2_ctl02_HyperLink2" href="/country-list/natural-gas-stocks-injection" style="text-decoration: none; text-transform: capitalize;">Natural Gas Stocks Injection</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl11_Repeater2_ctl03_HyperLink2" href="/country-list/natural-gas-stocks-inventory" style="text-decoration: none; text-transform: capitalize;">Natural Gas Stocks Inventory</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl11_Repeater2_ctl04_HyperLink2" href="/country-list/natural-gas-stocks-withdrawal" style="text-decoration: none; text-transform: capitalize;">Natural Gas Stocks Withdrawal</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#12" aria-expanded="false" aria-controls="12"> <b class="dropdown-toggle"></b> Health </button> </h2> <div id="12" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl12_Repeater2_ctl00_HyperLink2" href="/country-list/hospital-beds" style="text-decoration: none; text-transform: capitalize;">Hospital Beds</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl12_Repeater2_ctl01_HyperLink2" href="/country-list/hospitals" style="text-decoration: none; text-transform: capitalize;">Hospitals</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl12_Repeater2_ctl02_HyperLink2" href="/country-list/icu-beds" style="text-decoration: none; text-transform: capitalize;">ICU Beds</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl12_Repeater2_ctl03_HyperLink2" href="/country-list/medical-doctors" style="text-decoration: none; text-transform: capitalize;">Medical Doctors</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl12_Repeater2_ctl04_HyperLink2" href="/country-list/nurses" style="text-decoration: none; text-transform: capitalize;">Nurses</a><br /> </div> </div> </div> <div class="accordion-item card-small-spacing" id="selectCategoryAccordion"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-parent="#accordion" data-bs-target="#13" aria-expanded="false" aria-controls="13"> <b class="dropdown-toggle"></b> Climate </button> </h2> <div id="13" data-bs-parent="#accordion" class="accordion-collapse collapse "> <div class="accordion-body"> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl13_Repeater2_ctl00_HyperLink2" href="/country-list/co2-emissions" style="text-decoration: none; text-transform: capitalize;">CO2 Emissions</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl13_Repeater2_ctl01_HyperLink2" href="/country-list/precipitation" style="text-decoration: none; text-transform: capitalize;">Precipitation</a><br /> <a id="ctl00_LeftSideMenuContainer1_ctl01_Repeater1_ctl13_Repeater2_ctl02_HyperLink2" href="/country-list/temperature" style="text-decoration: none; text-transform: capitalize;">Temperature</a><br /> </div> </div> </div> </div> <style> .te-ad{border: thin solid #D3D3D3; width: 100%; height: 100%; background-color: #fafafa; text-align: left; padding: 15px; color: #333} .te-ad-link{color:#333;text-decoration: underline;} .te-ad-text{padding-bottom: 7px; padding-top: 3px; color: #333} .te-ad-h2{color: #fff; text-decoration: none; font-size: 26px; font-weight: bold; background-color:gray; padding:4px;} .te-ad-h1{font-size: 11px; padding-bottom: 0px;} </style> <div id="ctl00_LeftSideMenuContainer1_ctl02_AdPanel"> <br /><br /> <div class="te-ad"> <div> <div class="te-ad-h1">TRADING ECONOMICS</div> <span class="te-ad-h2">NEWS API </span> <div class="te-ad-text"> Get live breaking news in your app<br /> Search & display historical news<br /> Data in JSON, CSV or XML </div> <a class="te-ad-link" href="https://tradingeconomics.com/api/?source=stream" target="_blank">Features</a> | <a class="te-ad-link" href="https://docs.tradingeconomics.com/news/latest/" target="_blank">Documentation</a> | <a class="te-ad-link" href="https://tradingeconomics.com/api/contact.aspx?subject=api+news" target="_blank">Get Started</a> </div> </div> <br /> </div> </div> <br /> <br /> <br /> <div id="ctl00_LeftSideMenuContainer1_ctl03_AdPanel"> <style>.te-job-ad{background-image: linear-gradient(#f2f2f2, #fff)}.te-job-ad-text{padding-bottom:7px;padding-top:3px;}.te-job-ad-title{font-size:24px;font-weight:700;}.te-job-ad-item{font-weight:normal} body.dark-theme .te-job-ad{background-image: none;} </style> <div class="te-job-ad"> <a href="https://tradingeconomics.com/careers.aspx?source=jobad" target="_blank" style="text-decoration: none;"> <div class="card"> <div class="card-body"> <div class="te-job-ad-title"> We Are Hiring </div> <div class="te-job-ad-text"> Trading Economics welcomes candidates from around the world. Current job openings: </div> <div class="te-job-ad-item"><span>Web Developer</span> | <span>Data Analyst</span> | <span>Sales</span></div> <br /> <span class="btn btn-success">Apply Now</span> <br /> </div> </div> </a> <br /> </div> </div> <br /> </div> <br /> <br /> <br /> </div> </div> <br /> <br /> </div> <div class="container-fluid te-footer"> <footer> <div class="container"> <div class="row"> <div id="ctl00_Footer1_PanelFooter"> <style>.footer-spacer{padding: 4px}.footer-spacer-head{padding: 30px 4px 4px 4px;}@media only screen and (max-width:768px){.footer-icons{display: flex;margin-left: 50%;}.footer-icons a{padding: 0 12px 8px 0px; }}.footer-twitter{width: 50px; height: 50px;}.footer-github{width: 40px; height: 40px;}.footer-appstore{display: inline-block; overflow: hidden; background: url(//d3fy651gv2fhd3.cloudfront.net/images/appstore-lrg.svg?v=20171228) no-repeat; width: 135px; height: 40px; background-size: contain;}</style> <br /> <br /> <div class="container"> <div class="row"> <div class="col-lg-2 col-md-2 col-6"> <div class="footerHeader">Indicators</div> <a id="ctl00_Footer1_HyperLink6" class="footerItems" href="./">Homepage</a><br /> <a id="ctl00_Footer1_HyperLink17" class="footerItems" href="countries">Countries</a><br /> <a id="ctl00_Footer1_HyperLink18" class="footerItems" href="indicators">Indicators</a><br /> <a id="ctl00_Footer1_HyperLink1" class="footerItems" href="calendar">Calendar</a><br /> <a id="ctl00_Footer1_HyperLink2" class="footerItems" href="forecasts">Forecasts</a><br /> <a id="ctl00_Footer1_HyperLink11" class="footerItems" href="country-list/rating">Ratings</a> </div> <div class="col-lg-2 col-md-2 col-6"> <div class="footerHeader">Solutions</div> <a href="/analytics/features.aspx?source=footer"><span class="footerItems">Data Subscriptions</span></a><br /> <a href="/api/?source=footer"><span class="footerItems">API Access</span></a><br /> <a href="/analytics/excel.aspx"><span class="footerItems">Excel Add-In</span></a><br /> <a href="https://developer.tradingeconomics.com/" target="_blank"><span class="footerItems">Developer Account</span></a><br /> <a href="https://docs.tradingeconomics.com/" target="_blank"><span class="footerItems">Documentation</span></a><br /> <a href="/analytics/pricing.aspx?source=footer" target="_blank"><span class="footerItems">Pricing</span></a><br /> <br /> </div> <div class="col-lg-2 col-md-2 col-6"> <div class="footerHeader">About Us</div> <a id="ctl00_Footer1_HyperLink8" class="footerItems" href="api/customers.aspx">Customers</a><br /> <a id="ctl00_Footer1_HyperLink23" class="footerItems" href="careers.aspx">Careers</a><br /> <a id="ctl00_Footer1_HyperLink21" class="footerItems" href="investors.aspx">Investors</a><br /> <a id="ctl00_Footer1_HyperLink20" class="footerItems" href="advertise.aspx">Advertisers</a><br /> <a id="ctl00_Footer1_HyperLink19" class="footerItems" href="about-te.aspx">About us</a><br /> <a id="ctl00_Footer1_HyperLink9" class="footerItems" href="privacy-policy.aspx">Privacy</a> </div> <div class="col-lg-2 col-md-2 col-6"> <div class="footer-spacer-head"></div> <a href="https://itunes.apple.com/us/app/trading-economics/id1142178921?mt=8" class="footer-appstore"></a> <div class="footer-spacer"></div> <a href="https://play.google.com/store/apps/details?id=com.tradingeconomics.calendar"> <img alt="Android app on Google Play" src="https://d3fy651gv2fhd3.cloudfront.net/images/google-play.png" /></a> </div> </div> </div> <br /> <div class="footer-copyright"> <br /> <span>Copyright ©2025 TRADING ECONOMICS<br /> All Rights Reserved</span><br /> </div> <br /> <br /> </div> </div> </div> </footer> </div> </form> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.1/js/bootstrap.bundle.min.js"></script> <style>.modal-dialog-centered{display:flex;align-items:center;justify-content:center;height:calc(100% - 60px)}.modal-footer,.modal-header{padding:10px 15px;border:none}#menu-download-dropdown li{padding:0;border-top:none}#menu-download-dropdown li a{padding:10px 20px;display:flex}</style> <script> $(function(){ console.log("/js/pagemenu-exports") // Bootstrap offcanvas events, fix for static one $('.navbar-toggler-icon').click(function () { $(".pagemenu, .pagetabs").css('padding-right', '17px'); }); $('.userOptionsMenu').click(function () { $(".pagemenu, .pagetabs").css('padding-right', '17px'); }); $('.offcanvas').on('show.bs.offcanvas hidden.bs.offcanvas', function () { var isShown = $(this).hasClass('show'); $(".pagemenu, .pagetabs").css('padding-right', isShown ? '17px' : ''); }); var pageTabs = document.querySelector(".pagetabs"); if (pageTabs) { pageTabs.addEventListener("click", function (e) { if (e.target.classList.contains("scroll-top-on-click")) { window.scroll(0, 0); } }); } // build the event to the click $('body').on("click", "a[data-download]", function (event) { event.preventDefault(); event.stopPropagation(); downloadBtnClickEvent(event); }); $('.pagetabs').on('click', '.page-scroll', function () { $('html, body').animate({ scrollTop: $($.attr(this, 'href')).offset().top }, 500); return false; }); $('.pagetabs').on('click', '.page-scroll-adjusted', function () { $('html, body').animate({ scrollTop: $($.attr(this, 'href')).offset().top - 135 }, 500); return false; }); var indicatorPage = false, calendarPage = false, forecastPage = false, snapshotPage = false;; var URL = window.location.pathname; var hasTabs = false; var tab = '<li class="nav-item"><a class="nav-link dropdown-toggle" href="" id="menu-download-btn" class="dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"><i class="bi bi-download"></i><span class="export-text-tab"> ' + "Export" + '</span></a>' tab += '<ul id="menu-download-dropdown" class="dropdown-menu">' tab += '<li class="dropdown-item"><a href="#" data-download="csv"><img src="https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/download-csv-filled.svg" alt="CSV download button" style="height: 25px; width: 25px"> ' + "Download Data" + '</a></li>' tab += '<li class="dropdown-item"><a href="#" data-download="excel"><img src="https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/microsoft-excel-filled.svg" alt="Excel download button" style="height: 25px; width: 25px"> Excel Add-in</a></li>' tab += '<li class="dropdown-item"><a href="#" data-download="api"><img src="https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/download-api.svg" alt="API download button" style="height: 25px; width: 25px"> ' + "API Access" + '</a></li>' tab += '</ul></li>' if ( URL.indexOf("/currencies") > -1 || URL.indexOf("/stocks") > -1 || URL.indexOf("/bonds") > -1 || URL.indexOf("/commodities") > -1 || URL.indexOf("/crypto") > -1 || URL.indexOf(":") > -1 || URL.indexOf("/forecast/currency") > -1 || URL.indexOf("/forecast/stock-market") > -1 || URL.indexOf("/forecast/government-bond-10y") > -1 || URL.indexOf("/forecast/commodity") > -1 || URL.indexOf("/forecast/crypto") > -1 || // !isLoggedIn because API endpoints are still not implemented (!isLoggedIn && URL.split('/').length == 3 && (['indicators', 'forecast'].includes(URL.split('/')[2]) || ['country-list','forecastt'].includes(URL.split('/')[1])))) { var download_link = "https://docs.tradingeconomics.com/"; if (!isLoggedIn) { if (!hasTabs) { console.log("/js/pagemenu", "appending tab") if (IsMobile) { var tab = "<li><a href='" + download_link + "' data-download='csv' class='nav-link'><i class='bi bi-download d-none d-lg-inline'></i> " + "Export" + "</a></li>"; $('#pagemenutabs').append(tab); } else { $('#pagemenutabs').append(tab); } hasTabs = true; snapshotPage = true; } } else { var download_link = "https://api.tradingeconomics.com/"; if (URL.indexOf("/forecast/commodity") > -1) { download_link += "/markets/forecasts/commodity"; } else if (URL.indexOf("/forecast/currency") > -1) { download_link += "/markets/forecasts/currency"; } else if (URL.indexOf("/forecast/stock-market") > -1) { download_link += "/markets/forecasts/index"; } else if (URL.indexOf("/forecast/government-bond-10y") > -1) { download_link += "/markets/forecasts/bond"; } else if (URL.indexOf("/forecast/crypto") > -1) { download_link += "/markets/forecasts/crypto"; } else if (URL.indexOf("/currencies") > -1) { download_link += "markets/currency"; } else if (URL.indexOf("/stocks") > -1) { download_link += "markets/index"; } else if (URL.indexOf("/bonds") > -1) { download_link += "markets/bond"; } else if (URL.indexOf("/commodities") > -1) { download_link += "markets/commodities"; } else if (URL.indexOf("/crypto") > -1) { download_link += "markets/crypto"; } else if (URL.indexOf(":") > -1) { var currCsvDownload = $("#data a.export-btn-csv").attr("href"); download_link = currCsvDownload; } if (!hasTabs) { var tab = "<li class='nav-item'><a class ='nav-link' href='" + download_link + "' data-download='csv'><i class='bi bi-download'></i><span class='export-text-tab'> " + "Export" + "</span></a></li>"; $('#pagemenutabs').append(tab); hasTabs = true; } } snapshotPage = true; } else if (URL.indexOf("/stock-market") > -1 || URL.indexOf("/currency") > -1 || URL.indexOf("/commodity/") > -1 || URL.indexOf("yield") > -1) { if (!isLoggedIn && !hasTabs) { console.log('@pagemmenu - adding download tab') if (IsMobile) { var tab = "<li class='nav-item'><a class ='nav-link' href='" + download_link + "' data-download='csv'><i class='bi bi-download d-none d-lg-inline'></i> " + "Export" + "</a></li>"; $('#pagemenutabs').append(tab); hasTabs = true; } else { $('#pagemenutabs').append(tab); } hasTabs = true; } } else if ($("#menu-download-btn") && $("#menu-download-btn").length > 0) { indicatorPage = true; buildDownloadList($("#menu-download-btn")); $("#menu-download-btn").click(function () { ga('event', 'te_click_data_dropdown'); }); } else if ($(".calendar-download") && $(".calendar-download").length > 0) { calendarPage = true; buildDownloadButton($(".calendar-download")); } else if ($(".indicators-download") && $(".indicators-download").length > 0) { buildDownloadButton($(".indicators-download")); } function downloadBtnClickEvent(event) { console.log("download click .."); var downloadBtn = $(event.target).closest("a"); var dataDownload = $(downloadBtn).attr("data-download"); if (!dataDownload) return; console.log("data-download = " + dataDownload); var modalTitle = ""; var modalContent = ""; var modalFooter = ""; var loginReturn = "https://sso.tradingeconomics.com/?returnurl=https://tradingeconomics.com" + URL; var loginAction = "<a class='btn btn-outline-secondary' href='" + loginReturn + "' target='_blank'>" + (IsMobile ? "Login" : "Member? <b>Login</b>") + "</a>"; var GAEvent = null; var gCategory = null; if (indicatorPage) { gCategory = 'Indicator'; if (gCategory && URL.indexOf("forecast") > -1) { gCategory += '_forecast' }; } else if (calendarPage) { gCategory = 'Calendar'; if (gCategory && URL.indexOf("forecast") > -1) { gCategory += '_forecast' }; } else if (snapshotPage) { gCategory = 'Snapshot'; if (URL.indexOf("/forecast/commodity") > -1) gCategory = "markets_forecasts_commodity"; else if (URL.indexOf("/forecast/currency") > -1) gCategory = "markets_forecasts_currency"; else if (URL.indexOf("/forecast/stock-market") > -1) gCategory = "markets_forecasts_index"; else if (URL.indexOf("/forecast/government-bond-10y") > -1) gCategory = "_markets_forecasts_bond"; else if (URL.indexOf("/forecast/crypto") > -1) gCategory = "markets_forecasts_crypto"; else if (URL.indexOf("/currencies") > -1) gCategory = "markets_currency"; else if (URL.indexOf("/stocks") > -1) gCategory = "markets_index"; else if (URL.indexOf("/bonds") > -1) gCategory = "markets_bond"; else if (URL.indexOf("/commodities") > -1) gCategory = "markets_commodities"; else if (URL.indexOf("/crypto") > -1) gCategory = "markets_crypto"; else if (URL.indexOf(":") > -1) gCategory = "markets_symbols"; else if (URL.indexOf("/country-list/") > -1) gCategory = 'category'; else if (URL.indexOf("/forecast/") > -1) gCategory = 'category_forecast'; else if (URL.indexOf("forecast") > -1) gCategory = 'country_forecast'; else if (URL.indexOf("/indicators") > -1) gCategory = 'country'; } switch (dataDownload) { case "csv": if (isLoggedIn) { GAEvent = 'te_click_csv_download'; ga('event', GAEvent); console.log('GAEvent', GAEvent); downloadItem(event.target, dataDownload); return; } else { //modalTitle = "<b>Join Trading Economics</b>"; modalContent = "Trading Economics has more than 20 million economic indicators for nearly 200 countries, plus exchange rates, government bond yields, stock indexes, shares and commodity prices. "; modalContent += "Subscription users can use our site to export data in <b>CSV</b>, <b>JSON</b> or <b>XML</b>. Users can get it directly through an <b>Excel</b> add-in. "; modalContent += "Clients can also use an <b>API</b> to have direct access to our data, to query our real-time economic calendar and to subscribe to updates from any programming language."; modalFooter += "<div style='text-align:center;'><div class='btn-group'><a class='btn btn-outline-secondary' href='https://tradingeconomics.com/analytics/features.aspx' target='_blank'>Learn More</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/analytics/pricing.aspx' target='_blank'>Pricing</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/contact.aspx?subject=data' target='_blank'>" + (IsMobile ? "Contact" : "Questions? <b>Contact us</b>") + "</a>"; modalFooter += loginAction; modalFooter += "</div></div>" GAEvent = 'te_click_csv'; if (gCategory != null) GAEvent += '_' + gCategory.toLowerCase(); } break; case "excel": modalTitle = "<b>Trading Economics Excel Add-in</b>"; modalContent += "The Trading Economics Excel Addin allows users with an active subscription to access our data directly from excel. " modalContent += "Trading Economic provides more than 20 million economic indicators for nearly 200 countries, plus exchange rates, government bond yields, stock indexes, and commodity prices. "; modalFooter = "<div style='text-align:center;'><div class='btn-group'><a class='btn btn-outline-secondary' href='https://tradingeconomics.com/analytics/excel.aspx' target='_blank'>Learn More</a>"; modalFooter += "<a class='btn btn-outline-secondary' data-download='excel-addin'>Download Addin</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/contact.aspx?subject=excel' target='_blank'>Questions? <b>Contact us</b></a>"; if (!isLoggedIn) modalFooter += loginAction; modalFooter += "</div></div>"; GAEvent = 'te_click_excel'; if (gCategory != null) GAEvent += '_' + gCategory.toLowerCase(); break; case "api": modalTitle = "<b>Trading Economics API</b>"; modalContent = "<div>"; modalContent += "API Users have direct access to our economic data from any programming language, can query our real-time calendar, retrieve financial market quotes and subscribe to live updates. "; modalContent += "Trading Economics provides more than 20 million economic indicators for nearly 200 countries, plus exchange rates, government bond yields, stock indexes, and commodity prices." modalContent += "</div>"; modalFooter = "<div style='text-align:center;'><div class='btn-group'><a class='btn btn-outline-secondary' href='https://tradingeconomics.com/api/' target='_blank'>Learn More</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://docs.tradingeconomics.com/' target='_blank'>API Docs</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/api/contact.aspx' target='_blank'>Questions? <b>Contact us</b></a>"; if (!isLoggedIn) modalFooter += loginAction; modalFooter += "</div></div>"; GAEvent = 'te_click_api'; if (gCategory != null) GAEvent += '_' + gCategory.toLowerCase(); break; case "api-calendar": modalTitle = "<b>Trading Economics API</b>" modalContent = "The Trading Economics API provides you with direct access to our calendar, instant updates after economic events get released, historical data on thousands of indicators and live market quotes. "; modalFooter = "<div style='text-align:center'><div class='btn-group'><a class='btn btn-outline-secondary' href='../api/?source=calendar' target='_blank'>Learn More</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/api/contact.aspx?subject=api+calendar' target='_blank'>Any question? <b>Contact us</b></a>"; if (!isLoggedIn) modalFooter += loginAction; modalFooter += "</div></div>"; GAEvent = 'te_click_calendar_api'; break; case "excel-addin": GAEvent = 'te_click_excel'; window.location = 'https://github.com/tradingeconomics/tradingeconomics/raw/master/Excel/All_Releases/ExcelAddInDeploy_latest.msi'; return; break; case "forecast": //modalTitle = "<b>Trading Economics Forecasts</b>"; modalContent += "At TRADING ECONOMICS, our forecasts rely on our proprietary global macro model and analysts expectations. We believe that global economies and financial markets are closely intertwined. Our approach involves establishing a general directional bias and then utilizing computer algorithms to calculate price levels. " modalContent += "<br><br>We have five standard investment ratings: " modalContent += "<br><br><img class='recommendation-img' src='//d3fy651gv2fhd3.cloudfront.net/images/recommendations.png' />" modalContent += "<br><br><p><b>Disclaimer</b></p>"; modalContent += "Forecasts and ratings displayed on TRADING ECONOMICS are for informational purposes only. Trading involves a significant risk of loss and may not be suitable for all investors. Therefore, we advise users to exercise caution and do their own research before making any financial decisions." modalFooter += "</div></div>" GAEvent = 'te_click_forecast'; } if (GAEvent != null) { ga('event', GAEvent); console.log('GAEvent: ', GAEvent); } showDownloadModal(modalTitle, modalContent, modalFooter); } function showDownloadModal(modalTitle, modalContent, modalFooter) { var modal = "<div class ='modal' id='downloadModal' tabindex='-1' role='dialog' aria-labelledby='myModalLabel'>"; modal += "<div class='modal-dialog modal-dialog-centered' role='document'>"; modal += "<div class='modal-content'>"; modal += "<div class='modal-header'><div class='modal-title'></div><button type='button' class ='btn-close' data-bs-dismiss='modal' aria-label='Close'></button></div>"; modal += "<div class='modal-body' style='text-align:justify;'></div>" modal += "<div class='modal-footer'></div>" modal += "</div></div></div>" var jModal = $(modal); $(jModal).find(".modal-title").html(modalTitle); // define the modal content if (modalContent) $(jModal).find(".modal-body").html(modalContent); else $(jModal).find(".modal-body").remove(); // define the modal footer if (modalFooter) $(jModal).find(".modal-footer").html(modalFooter); else $(jModal).find(".modal-footer").remove(); $(jModal).on('show.bs.modal', function (e) { $(".navbar").css("padding-right", "17px"); $(".pagemenu").css("padding-right", "17px"); $(".pagetabs").css("padding-right", "17px"); }); $(jModal).on('hide.bs.modal', function (e) { $(".navbar").css("padding-right", ""); $(".pagemenu").css("padding-right", ""); $(".pagetabs").css("padding-right", ""); }); $(jModal).modal("show"); } function buildDownloadList(downloadBtn) { console.log("/js/pagemenu", "buildDownloadList", downloadBtn) downloadBtn.addClass("dropdown-toggle"); downloadBtn.attr("data-bs-toggle", "dropdown"); var csvLink = $("<li><a href='#' data-download='csv'><img src='https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/download-csv-filled.svg' alt='CSV download button' style='height: 25px; width: 25px'> " + "Download Data" + "</a></li>"); var excelLink = $("<li><a href='#' data-download='excel'><img src='https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/microsoft-excel-filled.svg' alt='Excel download button' style='height: 25px; width: 25px'> Excel Add-in</a></li>"); var apiLink = $("<li><a href='#' data-download='api'><img src='https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/download-api.svg' alt='API download button' style='height: 25px; width: 25px'> " + "API Access" + "</a></li>"); var dataportalLink = $("<li><a href='https://data.tradingeconomics.com'><i class='bi bi-save2-fill ms-1'></i> Data Portal</a></li>"); // THIS IS A HACK SO WE DONT NEED TO REWRITE THE LINK BUILT IN THIS MOMENT var currCsvDownload = $("#data a.export-btn-csv").attr("href"); if (currCsvDownload) csvLink = $("<li><a href='" + currCsvDownload + "' data-download='csv' target='_blank'><img src='https://d3fy651gv2fhd3.cloudfront.net/images/downloadicons/download-csv-filled.svg' alt='CSV download button' style='height: 25px; width: 25px'> " + "Download Data" + "</a></li>"); var downloadList = $("<ul id='menu-download-dropdown' class='dropdown-menu'>"); downloadList.append(csvLink); downloadList.append(excelLink); downloadList.append(apiLink); if (isLoggedIn) downloadList.append(dataportalLink); downloadBtn.after(downloadList); } function getDatesForCalendar(type) { const today = new Date(); const yyyy = today.getFullYear(); const mm = today.getMonth(); const dd = today.getDate(); let startDate, endDate; switch (type) { case '1': // Today startDate = new Date(yyyy, mm, dd); endDate = new Date(yyyy, mm, dd + 2); break; case '2': // Tomorrow startDate = new Date(yyyy, mm, dd + 1); endDate = new Date(yyyy, mm, dd + 3); break; case '3': // This Week const startOfWeek = new Date(yyyy, mm, dd - today.getDay() + 1); const endOfWeek = new Date(startOfWeek); endOfWeek.setDate(startOfWeek.getDate() + 8); startDate = startOfWeek; endDate = endOfWeek; break; case '4': // Next Week const nextMonday = new Date(yyyy, mm, dd - today.getDay() + 8); const nextSunday = new Date(nextMonday); nextSunday.setDate(nextMonday.getDate() + 6); startDate = nextMonday; endDate = new Date(nextSunday); endDate.setDate(endDate.getDate() + 2); break; case '5': // This Month startDate = new Date(yyyy, mm, 1); endDate = new Date(yyyy, mm + 1, 1); break; case '6': // Next Month startDate = new Date(yyyy, mm + 1, 1); endDate = new Date(yyyy, mm + 2, 1); break; case '-1': // Yesterday startDate = new Date(yyyy, mm, dd - 1); endDate = new Date(yyyy, mm, dd + 1); break; case '-2': // Previous Week startDate = new Date(yyyy, mm, dd - 7); endDate = new Date(yyyy, mm, dd + 1); break; case '-3': // Previous Month startDate = new Date(yyyy, mm, dd - 30); endDate = new Date(yyyy, mm, dd + 1); break; default: return ''; } const formatDate = (date) => `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`; return `/${formatDate(startDate)}/${formatDate(endDate)}`; } function buildCalendarRequest() { let baseUrl = 'https://api.tradingeconomics.com/calendar'; let cookies = document.cookie.split('; '); let cookieObject = {}; cookies.forEach(cookie => { if (TELanguage != '') { if (cookie.includes("calendar-range-" + TELanguage) || cookie.includes("calendar-importance-" + TELanguage) || cookie.includes("cal-custom-range-" + TELanguage)) { let [key, value] = cookie.split('='); try { cookieObject[key] = decodeURIComponent(value); } catch (e) { console.warn(`Error decoding cookie "${key}":`, e); cookieObject[key] = value; } } } else { if (cookie.includes("calendar-range") || cookie.includes("calendar-importance") || cookie.includes("cal-custom-range")) { let [key, value] = cookie.split('='); try { cookieObject[key] = decodeURIComponent(value); } catch (e) { console.warn(`Error decoding cookie "${key}":`, e); cookieObject[key] = value; } } } }); if (Object.keys(cookieObject).length) { if (TELanguage != '') { if (cookieObject.hasOwnProperty("cal-custom-range-"+TELanguage)) { let customdates = cookieObject["cal-custom-range-" + TELanguage].split("|").join(" ").split(" ") let filteredArray = customdates.filter(item => !item.includes(':')); if (filteredArray.length == 2) { let endDay = new Date(filteredArray[1]); endDay.setDate(endDay.getDate() + 1); baseUrl += `/country/all/${filteredArray[0]}/${endDay.toISOString().split('T')[0]}`; } } if (cookieObject.hasOwnProperty("calendar-range-" + TELanguage)) { if (cookieObject["calendar-range-" + TELanguage] != '0') { let dates = getDatesForCalendar(cookieObject["calendar-range-" + TELanguage]) baseUrl += '/country/all' + dates; } } if (cookieObject.hasOwnProperty("calendar-importance-" + TELanguage)) { baseUrl += '?importance=' + cookieObject["calendar-importance-" + TELanguage] } } else { if (cookieObject.hasOwnProperty("cal-custom-range")) { let customdates = cookieObject["cal-custom-range"].split("|").join(" ").split(" ") let filteredArray = customdates.filter(item => !item.includes(':')); if (filteredArray.length == 2) { let endDay = new Date(filteredArray[1]); endDay.setDate(endDay.getDate() + 1); baseUrl += `/country/all/${filteredArray[0]}/${endDay.toISOString().split('T')[0]}`; } } if (cookieObject.hasOwnProperty("calendar-range")) { if (cookieObject["calendar-range"] != '0') { let dates = getDatesForCalendar(cookieObject["calendar-range"]) baseUrl += '/country/all' + dates; } } if (cookieObject.hasOwnProperty("calendar-importance")) { baseUrl += '?importance=' + cookieObject["calendar-importance"] } } return baseUrl; } else { return baseUrl } } function buildDownloadButton(container) { if (isLoggedIn) { var downloadUrl = buildCalendarRequest() var downloadBtn = $("<a id='HyperLinkToDownload' href='" + downloadUrl +"' class='btn btn-info' data-download='csv'><i class='bi bi-download'></i><span class='d-none d-lg-inline'> Download</span></a>"); var apiBtn = $("<a id='HyperLinkToAPI' href='#' class='btn btn btn-outline-secondary' data-download='api-calendar'><i class='bi bi-grid-fill hidden-sm'></i> API</a>"); $(container).append(downloadBtn); $(container).append(apiBtn); } else { var downloadBtn = $("<a id='HyperLinkToDownload' href='https://api.tradingeconomics.com/calendar' class='btn btn-outline-secondary' data-download='api-calendar'><i class='bi bi-download'></i><span class='d-none d-lg-inline'> Download</span></a>"); $(container).append(downloadBtn); } } var lock_download = false; function downloadItem(target, format) { target = $(target).closest('a'); if (!target || target.length == 0 || !$(target).is('a')) { console.log('Download link not found'); return; } if (lock_download) return; lock_download = true; var url = $(target).attr('href'); console.log('url to download = ' + url); var d_type = format; if (format == 'csv') { url = url.replace('format=csv', 'format=json'); d_type = 'json'; } var loader = $("<span> </span><div class='loader' style='height: 15px;width: 15px;display: inline-block;vertical-align: text-bottom;'></div>"); $(target).append(loader); $.ajax({ url: url, type: "GET", dataType: d_type, xhrFields: { withCredentials: true }, }).done(function (data, status, xhr) { console.log('SUCCESS'); console.log('status = ' + xhr.status); console.log('data = ' + data.length); // ga event for logged in successful CSV download if (indicatorPage) { var GAEvent = 'te_click_data_dropdown' ga('event', GAEvent, { 'format': format }); console.log('GAEvent:', GAEvent); } else if (calendarPage) { var GAEvent = 'te_click_calendar' ga('event', GAEvent, { 'format': format }); console.log('GAEvent:', GAEvent); } else if (snapshotPage) { var GAEvent = 'te_click_snapshot' ga('event', GAEvent, { 'format': format }); console.log('GAEvent:', GAEvent); } var filename = buildFilename(url, format); downloadData(data, filename, format); }).fail(function (xhr, status, error) { console.log('ERROR'); console.log('status = ' + xhr.status); console.log('error message = ' + xhr.responseText) // ga event for logged in failed CSV download if (indicatorPage) { var GAEvent = 'te_click_data_dropdown' ga('event', GAEvent, { 'format': format }); console.log('GAEvent::', GAEvent); } else if (calendarPage) { var GAEvent = 'te_click_calendar' ga('event', GAEvent, { 'format': format }); console.log('GAEvent::', GAEvent); } else if (snapshotPage) { var GAEvent = 'te_click_snapshot' ga('event', GAEvent, { 'format': format }); console.log('GAEvent::', GAEvent); } if (xhr.status) { switch (xhr.status) { case 401: // unauthorized launchInvalidKeyModal(); break; case 403: // forbidden launchTrialOverModal(); break; case 400: // bad request launchBadRequestModal(); break; case 409: // conflict (more requests per second than allowed) launchThrottleModal(); break; default: console.log('Unhandled status = ' + xhr.status) var redirect_url = ''; if (TECountry) { redirect_url = 'https://data.tradingeconomics.com/data/export/bycountry?country=' + TECountry; } else { redirect_url = 'https://data.tradingeconomics.com/'; } console.log('redirecting to: ' + redirect_url); window.open(redirect_url, '_blank'); break; } } }).always(function (xhr, status, error) { lock_download = false; console.log('done downloading!'); loader.remove(); }); }; function buildFilename(url, format) { var filename = decodeURI(url); filename = filename.replace("https://api.tradingeconomics.com/", ""); var questionMark = filename.indexOf('?'); if (questionMark != -1) filename = filename.substring(0, questionMark); filename = filename.replace(/\//g, '_'); filename = filename.replace(/\s/g, '_'); filename = filename.replace(/:/g, '_'); filename = filename.replace(/-/g, '_'); return filename + '.' + format; } function downloadData(data, filename, type) { var dataFile = null; switch (type) { case "csv": var csv = convertArrayOfObjectsToCSV({ data: data }); if (csv == null) return; // create the csv file var dataFile = new Blob([csv], { type: "text/csv;charset=utf-8" }); break; case "json": var dataFile = new Blob([JSON.stringify(data)], { type: "text/json;charset=utf-8" }); break; case "xml": var dataFile = new Blob([new XMLSerializer().serializeToString(data.documentElement)], { type: "text/plain;charset=utf-8" }); break; } if (dataFile != null) { var anchor = document.createElement('a'); anchor.href = window.URL.createObjectURL(dataFile); anchor.setAttribute("d-none", true); anchor.setAttribute("target", "_self"); anchor.setAttribute("download", filename); document.body.appendChild(anchor); anchor.click(); anchor.remove(); } } /* Download CSV from: https://halistechnology.com/2015/05/28/use-javascript-to-export-your-data-as-csv/ */ function convertArrayOfObjectsToCSV(args) { var result, ctr, keys, columnDelimiter, lineDelimiter, data; data = args.data || null; if (data == null || !data.length) { return null; } columnDelimiter = args.columnDelimiter || ','; lineDelimiter = args.lineDelimiter || '\r\n'; keys = Object.keys(data[0]); result = ''; result += keys.join(columnDelimiter); result += lineDelimiter; data.forEach(function (item) { ctr = 0; keys.forEach(function (key) { if (ctr > 0) result += columnDelimiter; result += item[key]; ctr++; }); result += lineDelimiter; }); return result; } function errorModal(title, text, actionLink, actionMsg, contactSubject) { var modalTitle = "<span><b>" + title + "</b></span>"; var modalFooter = "<div style='text-align:center;'><div class='btn-group'>"; if (actionLink && actionMsg) modalFooter += "<a class='btn btn-primary' href='" + actionLink + "'>" + actionMsg + "</a>"; modalFooter += "<a class='btn btn-outline-secondary' href='https://tradingeconomics.com/contact.aspx?subject=" + contactSubject + "' target='_blank'>Any question? <b>Contact us</b></a></div></div>"; showDownloadModal(modalTitle, text, modalFooter); } function launchTrialOverModal(experience) { errorModal("Trading Economics Data", "Activate your plan to get more data from Trading Economics", "https://billing.tradingeconomics.com/plans.aspx?activate=true", "ACTIVATE", "account+limit"); } function launchInvalidKeyModal() { errorModal("Trading Economics Data", "Trading Economics provides its premium members with access to more than 20 million indicators for 196 countries plus historical/delayed/live quotes for exchange rates, stocks, indexes, bonds and commodity prices. Subscribe to a plan to download data in a easy to use web interface, using our excel addin or our API.", "https://billing.tradingeconomics.com/plans.aspx?lead=true", "Get Started", "Subscription+Plans"); } function launchThrottleModal() { errorModal("Trading Economics Data", "Limit of request per second reached", null, null, "API+Access"); } function launchBadRequestModal() { errorModal("Trading Economics Data", "Something went wrong with the request, please contact support@tradingeconomics.com, or click the button bellow", "https://tradingeconomics.com/api/contact.aspx?subject=Bad+Request", "CONTACT SUPPORT", "API+Access"); } }); </script> <style> .te-stream-title-div { padding-bottom: 5px; } .te-stream-item-3 { background-color: #f6cbcb; } .te-stream-item-2 { background-color: #eff3ff } .te-stream-country { background-color: #333; } .te-stream-category { background-color: #858585; } </style> <script type="text/javascript"> console.log("Stream JS"); var streamBaseURL = '/ws/stream.ashx'; if(TELanguage && TELanguage != '') streamBaseURL = '/ws/streamlanguages.ashx' var streamStart = 0; var streamSize = 20; var streamHeight = 1000; var streamPreviousTitle = ''; var streamIsLoading = false; var IsTicker = true; if (window.location.pathname.indexOf('/stream') !== -1 || window.location.pathname.indexOf('/news') !== -1) IsTicker = false; function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } function getItem(j, isPrepend) { //console.log(JSON.stringify(j)) //console.log(j) if (j.title) { if (streamPreviousTitle != j.title) { if (!j.url) j.url = '/'; var item = "<li id='" + j.ID + "' "; item += "class='list-group-item te-stream-item"; if (!IsTicker && j.importance) { if (j.importance == 3) item += " te-stream-item-3"; else if (j.importance == 2) item += " te-stream-item-2"; } item += "'>" item += "<div class='te-stream-title-div d-flex justify-content-between'>"; if (IsTicker) { item += "<b>" + j.title + "</b>"; } else { var titleClass = 'te-stream-title' if (j.importance) { if (j.importance == 3) titleClass = "te-stream-title-3"; else if (j.importance == 2) titleClass = "te-stream-title-2"; } item += "<a class='" + titleClass + "' href=" + j.url + "><b>" + j.title + "</b></a>"; item += "<div style='text-align:end;'>" item += '<a class="badge small te-stream-country" href="/stream?c=' + j.country.toLowerCase().replace(" ", "+") + '">' + (TELanguage && TELanguage != '' && j.countrytranslated ? j.countrytranslated : j.country) + '</a>'; if (j.category && j.category != j.country) { item += ' <a class="badge small te-stream-category" href="/stream?i=' + j.category.toLowerCase().replace(" ", "+") + '">' + (TELanguage && TELanguage != '' && j.categorytranslated ? j.categorytranslated : j.category) + '</a>'; } item += '</div>' } item += "</div>"; if (j.html) item += j.html; else if (j.description) item += j.description; if (j.image) item += '<br/><img src="' + j.image + '"></img>'; if (j.diff) item += '<br/><small>' + j.diff + '</small>'; item += '</li>'; streamPreviousTitle = j.title; if (isPrepend) { $("#stream").prepend(item); /* setTimeout(function () { $("#" + j.ID).css("backgroundColor", '#fff'); }, 2000) */ streamHeight = $("#stream").height(); } return item; } else { console.log("Skipping Repeated Title: " + j.title); return null; } } else { console.log("Missing Title"); return null; } } function getresult(start, size) { console.log("Stream getresult"); var streamURL = streamBaseURL + "?start=" + start + "&size=" + size; if (IsTicker) { console.log("Stream for Ticker"); start = start + 3; site = 10; streamURL = streamBaseURL + "?start=" + start + "&size=" + size; if (TECountry) streamURL += "&c=" + TECountry; if (TECategory) streamURL += "&i=" + TECategory; } else if (location.pathname.indexOf('/news') !== -1 && location.pathname.split('/').length == 3) { console.log("Stream for News"); var sCountry = location.pathname.split('/')[1]; if (sCountry) { sCountry = sCountry.replace('-', ' '); streamURL += "&c=" + sCountry; }; } else if (location.pathname.indexOf('/stream') !== -1) { var sCategory = getParameterByName('i'); if (sCategory) streamURL += "&i=" + sCategory; var sCountry = getParameterByName('c'); if (sCountry) streamURL += "&c=" + sCountry; } else { return; } if (TELanguage && TELanguage != '') streamURL += "&lang=" + TELanguage; console.log(streamURL); $.ajax({ url: streamURL, type: "GET", dataType: "json", beforeSend: function () { $('#spinner').show(); streamIsLoading = true; }, complete: function () { $('#spinner').hide(); streamIsLoading = false; }, success: function (data) { appendResult(data); if (start == 0) { $('#stream-btn').css("visibility", "visible"); if (sCategory || sCountry) { var sFilter = sCategory || sCountry; if (sFilter == "economy") $('#streamTabEconomy').tab('show'); else if (sFilter == "markets") $('#streamTabMarkets').tab('show'); else { //var sFilterDiv = '<a class="btn btn-outline-secondary" href="/stream">' + sFilter + ' <i class="glyphicon glyphicon-filter"></i></a><br/><br/>';$("#stream").prepend(sFilterDiv); //OLD - $('#streamTabs').append('<li id="streamTabFilter" class="active" style="text-transform:capitalize;"><a>' + sFilter + '</a></li> '); $('#pagemenutabs li a').removeClass("active") $('#pagemenutabs').append('<li id="streamTabFilter" class="nav-item" style="text-transform:capitalize;"><a class="nav-link active">' + sFilter + '</a></li> '); } } } }, error: function (e) { console.log(e) console.error("Stream Error") } }); } function appendResult(data) { console.log("Stream Appending Results"); //console.log(data); var now = (new Date).getTime(); var item = ''; var items = []; $.each(data, function (i, j) { //console.log(j); console.log(location.href.indexOf('?')) if (location.href.indexOf('/stream') > -1 && location.href.indexOf('?') === -1 && j.category === 'stocks') { //console.log(j) return } var diff = ''; var diffMs = now - new Date(j.date).getTime(); // Miliseconds var offset = new Date().getTimezoneOffset() * 60 * 1000; diffMs = diffMs + offset; if (diffMs < 0) { diff = 'few seconds ago';; } else if (diffMs < 120000) { var diffS = Math.round(diffMs / 1000); // Seconds diff = diffS + ' ' + 'seconds ago'; } else if (diffMs < 7200000) { var diffMins = Math.round(diffMs / 60000); // minutes diff = diffMins + ' ' + 'minutes ago'; } else if (diffMs < 172800000) { var diffHrs = Math.round(diffMs / 3600000); // hours diff = diffHrs + ' ' + 'hours ago'; } else { var diffDays = Math.round(diffMs / 86400000); // days if (diffDays < 30) diff = diffDays + ' ' + 'days ago'; else diff = j.date; } if (TELanguage && TELanguage != '') { if (TELanguage == 'es') { diff = 'hace ' + diff; } else if (TELanguage == "fr") { diff = 'il y a ' + diff; } else if (TELanguage == "de") { diff = 'vor ' + diff; } else if (TELanguage == "no") { diff = 'for ' + diff; } else if (TELanguage == "sv") { diff = 'för ' + diff; } } //console.log(j.date, j.title, j.url, j.importance); j.diff = diff; if (streamStart == 0) { //if (j.url) j.image = 'https://d3fy651gv2fhd3.cloudfront.net/charts/stream.png?h=200&w=300&lbl=0&url=' + j.url; var itemLatest = getItem(j, true); } else { j.append = true; item = getItem(j, false) if (item) items.push(item); } streamStart += 1; }); $("<ul/>", { "class": "list-group", html: items.join("") }).appendTo("#stream"); streamHeight = $("#stream").height(); } if (!IsTicker) { $(window).scroll(function () { if (streamHeight < 100000) { if ($(window).scrollTop() >= streamHeight * 0.80) { if (!streamIsLoading) { getresult(streamStart, streamSize); } else { console.log("Stream Loading is Busy. Hold on ...") } } } }); getresult(streamStart, streamSize); } $('#stream-btn').click(function () { console.log("Load more Streams After Click"); getresult(streamStart, streamSize); }); </script> <script> console.log('/controls/io.ascx') TEdecryptk = 'j9ONifjoKzxt7kmfYTdKK/5vve0b9Y1UCj/n50jr8d8=' TEdecryptn = 'Ipp9HNSfVBUntqFK7PrtofYaOPV312xy' var socket_url = 'https://live.tradingeconomics.com?key=rain'; console.log("IO Connecting to " + socket_url) var TE_URL = window.location.pathname; socket_url += "&url=" + TE_URL; $.ajaxSetup({ cache: !0 }); $.getScript('//d3fy651gv2fhd3.cloudfront.net/js/io.js?v=20240223', function () { OnSocketIOLoad(); }); var socket = null; var MKTChannels = [] var Subscribed = [] function base64ToUint8Array(base64) { const binaryString = atob(base64); const length = binaryString.length; const bytes = new Uint8Array(length); for (let i = 0; i < length; i++) { bytes[i] = binaryString.charCodeAt(i); } return bytes; } function decryptMessage(ciphertext) { const key = base64ToUint8Array(TEdecryptk); const nonce = base64ToUint8Array(TEdecryptn); const ciphertextUint8Array = new Uint8Array(ciphertext); let decryptedPlaintext = sodium.crypto_secretbox_open_easy(ciphertextUint8Array, nonce, key); decryptedPlaintext = pako.inflate(decryptedPlaintext, { to: 'string' }); if (decryptedPlaintext !== undefined) { return (JSON.parse(decryptedPlaintext)) } } function OnSocketIOLoad() { var MKT_TBL_SELEC = "#table-logic-handler-for-sockets"; var TEChannels = ['calendar']; if (TE_URL == '/') TEChannels = ['calendar', 'market']; else if (TE_URL == "/calendar") TEChannels = ['calendar']; else if (TE_URL.indexOf("calendar") > -1) TEChannels = ['calendar', 'market']; else if (TE_URL.indexOf("/dividends") > -1 || TE_URL.indexOf("/ipo") > -1 || TE_URL.indexOf("/stock-splits") > -1 || TE_URL.indexOf("/earnings") > -1) TEChannels = ['calendar', 'market']; else if (TE_URL.indexOf("stream") > -1) TEChannels = ['calendar', 'market', 'stream']; else if (TE_URL.indexOf("/currencies") > -1) TEChannels = ['currencies', 'calendar']; else if (TE_URL.indexOf("/stocks") > -1) TEChannels = ['indexes', 'calendar']; else if (TE_URL.indexOf("/bonds") > -1) TEChannels = ['bonds', 'calendar']; else if (TE_URL.indexOf("/commodities") > -1) TEChannels = ['commodities', 'calendar']; else if (TE_URL.indexOf("/crypto") > -1) TEChannels = ['crypto', 'calendar']; else if (TE_URL.indexOf("/forecast/government-bond-10y") > -1) TEChannels = ['bonds', 'calendar']; else if (TE_URL.indexOf("/forecast/commodity") > -1) TEChannels = ['commodities', 'calendar']; else if (TE_URL.indexOf("/currency") > -1 || TE_URL.indexOf("/stock-market") > -1 || TE_URL.indexOf("/commodity/") > -1 || TE_URL.indexOf("/government-bond-yield") > -1) TEChannels = ['market', 'calendar']; else if (TE_URL.split(':').length == 2) TEChannels = ['calendar', 'market']; console.log('IO EPOCH: 1740428411'); console.log('IO IP: 8.222.208.146'); console.log('IO URL: /stream');console.log('IO TOKEN: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlcG9jaCI6MTc0MDQyODQxMSwiaXAiOiI4LjIyMi4yMDguMTQ2IiwidXJsIjoiL3N0cmVhbSJ9.q2IhBmMz6l6Ttl9_6qv54ctimaUmMRrcef33SrH2EOk'); socket = io.connect(socket_url, { withCredentials: true, // Needed for ELB Cookies Stickyness auth: { token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlcG9jaCI6MTc0MDQyODQxMSwiaXAiOiI4LjIyMi4yMDguMTQ2IiwidXJsIjoiL3N0cmVhbSJ9.q2IhBmMz6l6Ttl9_6qv54ctimaUmMRrcef33SrH2EOk', url: TE_URL } }); socket.on('connect', function () { ioErrorCount = 0; IS_CONNECTED = !0; // Subscribe to the page symbol if (TE_URL.split(':').length == 2 && TESymbol != '') { var socketSymbol = TESymbol.toUpperCase() console.log('IO Subscribe', socketSymbol, 'No lag'); socket.emit('subscribe', { s: [socketSymbol] }) Subscribed.push(socketSymbol) } // Subscribe to channels if (TEChannels && TEChannels.length) { console.log('IO Subscribing to TEChannels', TEChannels); socket.emit('subscribe', { s: TEChannels }) } else { console.log('IO No TEChannels to Subscribe'); } // Subscribe to symbols if (TE_URL != '/' && TE_URL.indexOf("calendar") <= -1 && (TE_URL.split('/').length > 2 || TE_URL.indexOf(":ind") > -1)) { gatherMKTChannels(); if (MKTChannels && MKTChannels.length) { console.log('IO Subscribing to', MKTChannels.length, 'symbols:', MKTChannels); if (MKTChannels.length <= 36) { socket.emit('subscribe', { s: MKTChannels }) } else { console.log('IO Subscribing using Chunks'); var i, j, temparray, chunk = 36; for (i = 0, j = MKTChannels.length; i < j; i += chunk) { temparray = MKTChannels.slice(i, i + chunk); console.log('IO Subscribing to', temparray.length, 'channels:', temparray); socket.emit('subscribe', { s: temparray }) } } } else { console.log('IO No MKTChannels to Subscribe'); } } socket.on('disconnect', function () { IS_CONNECTED = !1; console.log('Got disconnect!') }); socket.on("smooth-disconnect", function () { socket.disconnect() }) }); var isSnap = !0; for (var i = 0; i < TEChannels.length; i++) { channel = TEChannels[i]; if (channel == 'calendar' || channel == 'stream') continue; console.log('IO Snap ' + channel); socket.on(channel, function (a) { a = decryptMessage(a) if (a.length > 0) { for (i = 0; i < a.length; i++) { TE_UpdateTable(a[i], isSnap) TE_UpdateMiniWidget(a[i]) } isSnap = !1 } else { console.log('IO Sent Empty Market Update') } }) } var ioErrorCount = 0; socket.on("connect_error", (err) => { ioErrorCount++; console.log('IO Connect Error', ioErrorCount); console.log(err.message); if (TE_URL.indexOf("calendar") <= -1 && ioErrorCount % 10 == 0) { console.log('Disconnecting IO'); socket.disconnect(); if (ioErrorCount < 100) { var sleepSecs = ioErrorCount * 5; console.log('Connecting again in', sleepSecs, 'seconds'); setInterval(function () { socket.connect() }, sleepSecs * 1000) } else console.log('Stay disconnected'); } }); socket.on('tick', function (t) { t = decryptMessage(t) TE_UpdateTable(t); if (TE_URL.split(':').length == 2) UpdateMarketTick(t); }); function gatherMKTChannels() { // Temporary block to avoid too many symbols return var nMarkets = $("[data-subscribe]").length; console.log("IO data-subscribe tag present in ", nMarkets, "markets") if (nMarkets == null || typeof input !== "undefined") return else if (nMarkets > 600) console.log("IO Skipping [data-subscribe] because of too many symbols") else { console.log("IO Searching [data-subscribe]") var sCount = 0; $("[data-subscribe]").each(function (i, item) { var socketSymbol = $(item).attr('data-subscribe') if (!MKTChannels.includes(socketSymbol) && !Subscribed.includes(socketSymbol)) { sCount++; console.log('IO [data-subscribe]', sCount, socketSymbol) MKTChannels.push(socketSymbol) } else console.log('Already Subscribed. Skip', socketSymbol) }) } } function TE_UpdateTable(d, isSnap) { var s = d.s; let element_price; $('tr[data-symbol="' + s + '"]').each((i, el) => { element_price = $(el).find("td#p"); }) if (element_price == undefined) { return } const p0 = parseFloat(element_price.text()) var r = $('tr[data-symbol="' + s + '"]'); var p = r.find('td#p'); var dec = 4; if (typeof r.data('decimals') !== 'undefined' && r.data('decimals') !== "") dec = r.data("decimals"); if (p0 != d.p.toFixed(dec)) { p.text(d.p.toFixed(dec)); fg = d.nch > 0 ? 'darkgreen' : d.nch < 0 ? 'darkred' : 'black'; if (IsDarkMode) fg = '#fff' triangle = d.nch > 0 ? '<span class="market-positive-image"></span>' : d.nch < 0 ? '<span class="market-negative-image"></span>' : '<span class="market-neutral-image"></span>'; var previous_triangle = r.find('td#triangle'); if (previous_triangle && previous_triangle.length) { previous_triangle.html(triangle) } var nch = r.find('td#nch'); if (nch) { nch.each(function (i, item) { if ($(item).attr("data-no-triangle")) { $(item).text(d.nch.toFixed(dec)); $(item).css("color", fg); $(item).html(Math.abs(d.nch.toFixed(dec))) } else { $(item).text(d.nch.toFixed(dec)); $(item).css("color", fg); $(item).html(triangle + ' ' + Math.abs(d.nch.toFixed(dec))) } }) } var pch = r.find('td#pch'); pch.text(d.pch.toFixed(2) + '%'); if (TEChannels != "market") { nch.attr('data-value', d.nch); pch.attr('data-value', d.pch) } r.find('td#pch') pch.css("color", fg); bg = IsDarkMode == true ? '#254f73' : '#cdebf9'; p.css("backgroundColor", bg); setTimeout(function () { p.css("backgroundColor", 'transparent') }, 1000) if (!isSnap) { var dt = new Date(); var h = dt.getHours(); if (h < 10) { h = "0" + h } var m = dt.getMinutes(); if (m < 10) { m = "0" + m } var ds = [h, m].join(':'); r.find('td#date').html(ds) } if (d.type && d.type == 'index') { var stateColor = '', stateSpan = ''; var state = d.state; if (d.dstate) state = d.dstate; if (state == 'open') stateColor = 'green'; else if (state == 'closed') stateColor = 'red'; else if (state == 'pre') stateColor = '#CFB53B'; else if (state == 'after') stateColor = '#CFB53B'; else { console.log('IO - Unknown Session State', s); return; } if (stateColor != '') { stateSpan = '<span class="bi bi-clock" style="font-size:10px; color: ' + stateColor + '" title="' + state + ' trading session"></span>'; r.find('td#session').html(stateSpan) } } } }; function TE_UpdateMiniWidget(t) { try { function isSameDay(date1, date2) { return ( date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth() && date1.getDate() === date2.getDate() ); } if (chart && TE_URL == '/') { if (chart.userOptions.series[0]['symbol'].toLowerCase() == t.s.toLowerCase()) { let seriesData = chart.series[0].data; let lastDataPoint = seriesData[seriesData.length - 1]; let lastDate = new Date(lastDataPoint.x); let currentDate = new Date(); currentDate.setHours(0, 0, 0, 0); let sameDay = isSameDay(lastDate, currentDate) if (sameDay) { const newValue = t.p; const newChang = t.nch; const newP = t.pch; lastDataPoint.update({ y: newValue, change: newChang, percentChange: newP, }); //addCloseLine(); addCustomLabel(newValue); } else { chart.series[0].addPoint( { x: currentDate.getTime(), y: t.p, change: t.nch, percentChange: t.pch, }, true, true ); //addCloseLine() addCustomLabel(t.p) } } } } catch (e) { //console.error("Issues updating mini widget") } } var TENotifications = 0; function TENotification(_title, _text, _url, _importance) { TENotifications++; console.log("IO => Notification => ", _title, _text, _url, _importance, TENotifications); if (TENotifications > 2 & _importance <= 1) return; if (TENotifications > 4 & _importance <= 2) return; var IsDesktop = !1; var _titleHTML = 'ALERT'; var _alertType = 'NEWS'; var _color = "#5bc0de"; if (_importance > 0) { _alertType = 'CALENDAR'; if (_importance > 1) { IsDesktop = !0; _color = '#5cb85c'; if (_importance > 2) _color = '#d9534f' } } if (TELanguage == '') { upsertNotification({ title: _title, text: _text, url: _url, importance: _importance }, false, true); } _titleHTML = '<div style="padding-bottom:10px; font-size: 11px;color: #fff; font-weight: bold;"><span style="background-color: #000; padding: 3px;">' + _alertType + '</span><span style="background-color: ' + _color + '; padding: 3px;">ALERT</span></div>'; var _textHTML = _text; if (_text && _text.length > 200) { console.log("Trim text"); _textHTML = _text.substring(0, 200) + '...'; _textHTML += ' <a style="text-decoration: underline;" target="_new" href="' + _url + '">More</a>' } else if (_text) { _textHTML += ' <a style="text-decoration: underline;" target="_new" href="' + _url + '">More</a>' } PNotify.desktop.permission(); (new PNotify({ title: _titleHTML, text: _textHTML, hide: !0, animation: 'fade', shadow: !0, icon: !1, mouse_reset: !1, delay: 20000, buttons: { sticker: !1, closer_hover: !1 }, addclass: 'custom', })).get().click(function (e) { if ($('.ui-pnotify-closer, .ui-pnotify-closer *').is(e.target)) { console.log("Closed Notification"); return } window.location = _url }); if (IsDesktop) { var _tag = _url + "?v=" + new Date().toISOString().slice(0, 10).replace(/-/g, ""); console.log("PNotify tag", _tag); (new PNotify({ title: _titleHTML, text: _textHTML, hide: !1, animation: 'fade', shadow: !0, icon: !1, mouse_reset: !1, hide: !0, delay: 20000, buttons: { sticker: !1, closer_hover: !1 }, addclass: 'custom', type: 'info', desktop: { desktop: IsDesktop, title: 'TRADING ECONOMICS', text: _text, tag: _tag, fallback: !1 } })).get().click(function (e) { if ($('.ui-pnotify-closer, .ui-pnotify-closer *').is(e.target)) { console.log("Closed Notification"); return } window.location = _url }) } } function TECalendarRowUpdate(c) { console.log("UPDATE CALENDAR ROW"); console.log(c); var $row = $('tr[data-id="' + c.CalendarId + '"]'); console.log($row); var $td = $row.find('span#actual'); console.log($td); $td.text(c.Actual); console.log(c.Actual); console.log($td.text); bg = '#5bc0de'; $td.css("backgroundColor", bg); color = c.Actual.toString().indexOf("-") ? 'darkgreen' : 'darkred'; $td.css("color", color); $row.find('span#previous').text(c.Previous); $row.find('img#incoming').css("display", 'none'); setInterval(function () { $td.css("backgroundColor", '#ffffff') }, 2000) } socket.on('calendar', function (c) { console.log("IO CALENDAR") c = decryptMessage(c) console.log(c); if (c.Importance >= 1) { var _title = c.Country.trim() + ' ' + c.Event.trim(); var _text = _title; if (c.Actual != null && c.Actual != '') _text += ' reported at ' + c.Actual + '. '; if (c.Forecast != null && c.Forecast != '') _text += 'Consensus was ' + c.Forecast + '. '; if (c.Previous != null && c.Previous != '') _text += 'Previously at ' + c.Previous + '.'; var _url = 'https://tradingeconomics.com' + c.URL; if (TE_URL.indexOf("calendar") > -1 || (TELanguage != null && TELanguage.length > 0 && TE_URL == '/')) TECalendarRowUpdate(c); TENotification(_title, _text, _url, c.Importance) } }); socket.on('stream', function (j) { console.log("IO STREAM") j = decryptMessage(j) console.log(j); var _title = j.title; var _description = j.description; var _url = j.url; if (_title && _description && _url) { TENotification(_title, _description, _url, 0) } }); var KILL_SOCKET_AFTER_IDLE = 1000 * 60 * 30; var IS_RELOAD_REQUIRED = !1; var IS_QUESTION_OPEN = !1; var IS_CONNECTED = !1; var LAST_VISIBLE = new Date().getTime(); if (TE_URL.indexOf("calendar") > -1 || TE_URL.indexOf("/currency") > -1 || TE_URL.indexOf("/stock-market") > -1 || TE_URL.indexOf("/commodity/") > -1 || TE_URL.indexOf("/government-bond-yield") > -1 || TE_URL.indexOf("stream") > -1 || TE_URL.indexOf("/currencies") > -1 || TE_URL.indexOf("/stocks") > -1 || TE_URL.indexOf("/bonds") > -1 || TE_URL.indexOf("/commodities") > -1) { KILL_SOCKET_AFTER_IDLE = 1000 * 60 * 60; IS_RELOAD_REQUIRED = !0 } // To be users in market pages ex aapl:us function UpdateMarketTick(t) { if (t.state && t.state == 'closed') { console.log('market is closed'); } var s = t.s; if (!s || s.toLowerCase() != symbol.toLowerCase()) { return; } $('#market_last').html(t.p); $('#market_daily_chg').html(t.nch + ' '); $('#market_daily_Pchg').html(t.pch + '%'); if (t.nch > 0) { $('#market_chg_arrow').attr('class', 'market-positive-image'); $('#market_daily_chg').css({ color: '#8ecf61' }); $('#market_daily_Pchg').css({ color: '#8ecf61' }); } else { $('#market_chg_arrow').attr('class', 'market-negative-image'); $('#market_daily_chg').css({ color: '#ed3b3b' }); $('#market_daily_Pchg').css({ color: '#ed3b3b' }); } } function saveSocketNetworkBW() { console.log("Socket check if alive"); setInterval(function () { if (typeof document == 'undefined' || !document) { console.log("ws: undefined"); return LAST_VISIBLE = new Date().getTime() } if (typeof document.hidden != 'boolean') { console.log("ws: hidden"); return LAST_VISIBLE = new Date().getTime() } if (!document.hidden) { console.log("ws: live"); if (!IS_CONNECTED) { console.log('ws: connecting'); socket.connect() } return LAST_VISIBLE = new Date().getTime() } var now = new Date().getTime(); if (now - LAST_VISIBLE > KILL_SOCKET_AFTER_IDLE) { if (IS_CONNECTED) { console.log('ws: disconnecting'); socket.disconnect(); if (IS_RELOAD_REQUIRED && IS_QUESTION_OPEN == !1) { var result = confirm("Please Press Ok to Refresh the Data in this Page"); IS_QUESTION_OPEN = !0; if (result) { IS_QUESTION_OPEN = !1; document.location = document.location.href } } } } }, 1000 * 60) } saveSocketNetworkBW() // pnotify !function (t, i) { "function" == typeof define && define.amd ? define("pnotify", ["jquery"], function (s) { return i(s, t) }) : "object" == typeof exports && "undefined" != typeof module ? module.exports = i(require("jquery"), global || t) : t.PNotify = i(t.jQuery, t) }("undefined" != typeof window ? window : this, function (t, i) { var s = function (i) { var e, o, n = { dir1: "down", dir2: "left", push: "bottom", spacing1: 36, spacing2: 36, context: t("body"), modal: !1 }, a = t(i), r = function () { o = t("body"), c.prototype.options.stack.context = o, a = t(i), a.bind("resize", function () { e && clearTimeout(e), e = setTimeout(function () { c.positionAll(!0) }, 10) }) }, h = function (i) { var s = t("<div />", { class: "ui-pnotify-modal-overlay" }); return s.prependTo(i.context), i.overlay_close && s.click(function () { c.removeStack(i) }), s }, c = function (t) { this.state = "initializing", this.timer = null, this.animTimer = null, this.styles = null, this.elem = null, this.container = null, this.title_container = null, this.text_container = null, this.animating = !1, this.timerHide = !1, this.parseOptions(t), this.init() }; return t.extend(c.prototype, { version: "3.2.0", options: { title: !1, title_escape: !1, text: !1, text_escape: !1, styling: "brighttheme", addclass: "", cornerclass: "", auto_display: !0, width: "300px", min_height: "16px", type: "notice", icon: !0, animation: "fade", animate_speed: "normal", shadow: !0, hide: !0, delay: 8e3, mouse_reset: !0, remove: !0, insert_brs: !0, destroy: !0, stack: n }, modules: {}, runModules: function (t, i) { var s; for (var e in this.modules) s = "object" == typeof i && e in i ? i[e] : i, "function" == typeof this.modules[e][t] && (this.modules[e].notice = this, this.modules[e].options = "object" == typeof this.options[e] ? this.options[e] : {}, this.modules[e][t](this, "object" == typeof this.options[e] ? this.options[e] : {}, s)) }, init: function () { var i = this; return this.modules = {}, t.extend(!0, this.modules, c.prototype.modules), "object" == typeof this.options.styling ? this.styles = this.options.styling : this.styles = c.styling[this.options.styling], this.elem = t("<div />", { class: "ui-pnotify " + this.options.addclass, css: { display: "none" }, "aria-live": "assertive", "aria-role": "alertdialog", mouseenter: function (t) { if (i.options.mouse_reset && "out" === i.animating) { if (!i.timerHide) return; i.cancelRemove() } i.options.hide && i.options.mouse_reset && i.cancelRemove() }, mouseleave: function (t) { i.options.hide && i.options.mouse_reset && "out" !== i.animating && i.queueRemove(), c.positionAll() } }), "fade" === this.options.animation && this.elem.addClass("ui-pnotify-fade-" + this.options.animate_speed), this.container = t("<div />", { class: this.styles.container + " ui-pnotify-container " + ("error" === this.options.type ? this.styles.error : "info" === this.options.type ? this.styles.info : "success" === this.options.type ? this.styles.success : this.styles.notice), role: "alert" }).appendTo(this.elem), "" !== this.options.cornerclass && this.container.removeClass("ui-corner-all").addClass(this.options.cornerclass), this.options.shadow && this.container.addClass("ui-pnotify-shadow"), !1 !== this.options.icon && t("<div />", { class: "ui-pnotify-icon" }).append(t("<span />", { class: !0 === this.options.icon ? "error" === this.options.type ? this.styles.error_icon : "info" === this.options.type ? this.styles.info_icon : "success" === this.options.type ? this.styles.success_icon : this.styles.notice_icon : this.options.icon })).prependTo(this.container), this.title_container = t("<h4 />", { class: "ui-pnotify-title" }).appendTo(this.container), !1 === this.options.title ? this.title_container.hide() : this.options.title_escape ? this.title_container.text(this.options.title) : this.title_container.html(this.options.title), this.text_container = t("<div />", { class: "ui-pnotify-text", "aria-role": "alert" }).appendTo(this.container), !1 === this.options.text ? this.text_container.hide() : this.options.text_escape ? this.text_container.text(this.options.text) : this.text_container.html(this.options.insert_brs ? String(this.options.text).replace(/\n/g, "<br />") : this.options.text), "string" == typeof this.options.width && this.elem.css("width", this.options.width), "string" == typeof this.options.min_height && this.container.css("min-height", this.options.min_height), "top" === this.options.stack.push ? c.notices = t.merge([this], c.notices) : c.notices = t.merge(c.notices, [this]), "top" === this.options.stack.push && this.queuePosition(!1, 1), this.options.stack.animation = !1, this.runModules("init"), this.state = "closed", this.options.auto_display && this.open(), this }, update: function (i) { var s = this.options; return this.parseOptions(s, i), this.elem.removeClass("ui-pnotify-fade-slow ui-pnotify-fade-normal ui-pnotify-fade-fast"), "fade" === this.options.animation && this.elem.addClass("ui-pnotify-fade-" + this.options.animate_speed), this.options.cornerclass !== s.cornerclass && this.container.removeClass("ui-corner-all " + s.cornerclass).addClass(this.options.cornerclass), this.options.shadow !== s.shadow && (this.options.shadow ? this.container.addClass("ui-pnotify-shadow") : this.container.removeClass("ui-pnotify-shadow")), !1 === this.options.addclass ? this.elem.removeClass(s.addclass) : this.options.addclass !== s.addclass && this.elem.removeClass(s.addclass).addClass(this.options.addclass), !1 === this.options.title ? this.title_container.slideUp("fast") : this.options.title !== s.title && (this.options.title_escape ? this.title_container.text(this.options.title) : this.title_container.html(this.options.title), !1 === s.title && this.title_container.slideDown(200)), !1 === this.options.text ? this.text_container.slideUp("fast") : this.options.text !== s.text && (this.options.text_escape ? this.text_container.text(this.options.text) : this.text_container.html(this.options.insert_brs ? String(this.options.text).replace(/\n/g, "<br />") : this.options.text), !1 === s.text && this.text_container.slideDown(200)), this.options.type !== s.type && this.container.removeClass(this.styles.error + " " + this.styles.notice + " " + this.styles.success + " " + this.styles.info).addClass("error" === this.options.type ? this.styles.error : "info" === this.options.type ? this.styles.info : "success" === this.options.type ? this.styles.success : this.styles.notice), (this.options.icon !== s.icon || !0 === this.options.icon && this.options.type !== s.type) && (this.container.find("div.ui-pnotify-icon").remove(), !1 !== this.options.icon && t("<div />", { class: "ui-pnotify-icon" }).append(t("<span />", { class: !0 === this.options.icon ? "error" === this.options.type ? this.styles.error_icon : "info" === this.options.type ? this.styles.info_icon : "success" === this.options.type ? this.styles.success_icon : this.styles.notice_icon : this.options.icon })).prependTo(this.container)), this.options.width !== s.width && this.elem.animate({ width: this.options.width }), this.options.min_height !== s.min_height && this.container.animate({ minHeight: this.options.min_height }), this.options.hide ? s.hide || this.queueRemove() : this.cancelRemove(), this.queuePosition(!0), this.runModules("update", s), this }, open: function () { this.state = "opening", this.runModules("beforeOpen"); var t = this; return this.elem.parent().length || this.elem.appendTo(this.options.stack.context ? this.options.stack.context : o), "top" !== this.options.stack.push && this.position(!0), this.animateIn(function () { t.queuePosition(!0), t.options.hide && t.queueRemove(), t.state = "open", t.runModules("afterOpen") }), this }, remove: function (s) { this.state = "closing", this.timerHide = !!s, this.runModules("beforeClose"); var e = this; return this.timer && (i.clearTimeout(this.timer), this.timer = null), this.animateOut(function () { if (e.state = "closed", e.runModules("afterClose"), e.queuePosition(!0), e.options.remove && e.elem.detach(), e.runModules("beforeDestroy"), e.options.destroy && null !== c.notices) { var i = t.inArray(e, c.notices); -1 !== i && c.notices.splice(i, 1) } e.runModules("afterDestroy") }), this }, get: function () { return this.elem }, parseOptions: function (i, s) { this.options = t.extend(!0, {}, c.prototype.options), this.options.stack = c.prototype.options.stack; for (var e, o = [i, s], n = 0; n < o.length && void 0 !== (e = o[n]); n++)if ("object" != typeof e) this.options.text = e; else for (var a in e) this.modules[a] ? t.extend(!0, this.options[a], e[a]) : this.options[a] = e[a] }, animateIn: function (t) { this.animating = "in"; var i = this, s = function () { i.animTimer && clearTimeout(i.animTimer), "in" === i.animating && (i.elem.is(":visible") ? (t && t.call(), i.animating = !1) : i.animTimer = setTimeout(s, 40)) }; "fade" === this.options.animation ? (this.elem.one("webkitTransitionEnd mozTransitionEnd MSTransitionEnd oTransitionEnd transitionend", s).addClass("ui-pnotify-in"), this.elem.css("opacity"), this.elem.addClass("ui-pnotify-fade-in"), this.animTimer = setTimeout(s, 650)) : (this.elem.addClass("ui-pnotify-in"), s()) }, animateOut: function (i) { this.animating = "out"; var s = this, e = function () { if (s.animTimer && clearTimeout(s.animTimer), "out" === s.animating) if ("0" != s.elem.css("opacity") && s.elem.is(":visible")) s.animTimer = setTimeout(e, 40); else { if (s.elem.removeClass("ui-pnotify-in"), s.options.stack.overlay) { var o = !1; t.each(c.notices, function (t, i) { i != s && i.options.stack === s.options.stack && "closed" != i.state && (o = !0) }), o || s.options.stack.overlay.hide() } i && i.call(), s.animating = !1 } }; "fade" === this.options.animation ? (this.elem.one("webkitTransitionEnd mozTransitionEnd MSTransitionEnd oTransitionEnd transitionend", e).removeClass("ui-pnotify-fade-in"), this.animTimer = setTimeout(e, 650)) : (this.elem.removeClass("ui-pnotify-in"), e()) }, position: function (t) { var i = this.options.stack, s = this.elem; if (void 0 === i.context && (i.context = o), i) { "number" != typeof i.nextpos1 && (i.nextpos1 = i.firstpos1), "number" != typeof i.nextpos2 && (i.nextpos2 = i.firstpos2), "number" != typeof i.addpos2 && (i.addpos2 = 0); var e = !s.hasClass("ui-pnotify-in"); if (!e || t) { i.modal && (i.overlay ? i.overlay.show() : i.overlay = h(i)), s.addClass("ui-pnotify-move"); var n, r, c; switch (i.dir1) { case "down": c = "top"; break; case "up": c = "bottom"; break; case "left": c = "right"; break; case "right": c = "left" }n = parseInt(s.css(c).replace(/(?:\..*|[^0-9.])/g, "")), isNaN(n) && (n = 0), void 0 !== i.firstpos1 || e || (i.firstpos1 = n, i.nextpos1 = i.firstpos1); var p; switch (i.dir2) { case "down": p = "top"; break; case "up": p = "bottom"; break; case "left": p = "right"; break; case "right": p = "left" }switch (r = parseInt(s.css(p).replace(/(?:\..*|[^0-9.])/g, "")), isNaN(r) && (r = 0), void 0 !== i.firstpos2 || e || (i.firstpos2 = r, i.nextpos2 = i.firstpos2), ("down" === i.dir1 && i.nextpos1 + s.height() > (i.context.is(o) ? a.height() : i.context.prop("scrollHeight")) || "up" === i.dir1 && i.nextpos1 + s.height() > (i.context.is(o) ? a.height() : i.context.prop("scrollHeight")) || "left" === i.dir1 && i.nextpos1 + s.width() > (i.context.is(o) ? a.width() : i.context.prop("scrollWidth")) || "right" === i.dir1 && i.nextpos1 + s.width() > (i.context.is(o) ? a.width() : i.context.prop("scrollWidth"))) && (i.nextpos1 = i.firstpos1, i.nextpos2 += i.addpos2 + (void 0 === i.spacing2 ? 25 : i.spacing2), i.addpos2 = 0), "number" == typeof i.nextpos2 && (i.animation ? s.css(p, i.nextpos2 + "px") : (s.removeClass("ui-pnotify-move"), s.css(p, i.nextpos2 + "px"), s.css(p), s.addClass("ui-pnotify-move"))), i.dir2) { case "down": case "up": s.outerHeight(!0) > i.addpos2 && (i.addpos2 = s.height()); break; case "left": case "right": s.outerWidth(!0) > i.addpos2 && (i.addpos2 = s.width()) }switch ("number" == typeof i.nextpos1 && (i.animation ? s.css(c, i.nextpos1 + "px") : (s.removeClass("ui-pnotify-move"), s.css(c, i.nextpos1 + "px"), s.css(c), s.addClass("ui-pnotify-move"))), i.dir1) { case "down": case "up": i.nextpos1 += s.height() + (void 0 === i.spacing1 ? 25 : i.spacing1); break; case "left": case "right": i.nextpos1 += s.width() + (void 0 === i.spacing1 ? 25 : i.spacing1) } } return this } }, queuePosition: function (t, i) { return e && clearTimeout(e), i || (i = 10), e = setTimeout(function () { c.positionAll(t) }, i), this }, cancelRemove: function () { return this.timer && i.clearTimeout(this.timer), this.animTimer && i.clearTimeout(this.animTimer), "closing" === this.state && (this.state = "open", this.animating = !1, this.elem.addClass("ui-pnotify-in"), "fade" === this.options.animation && this.elem.addClass("ui-pnotify-fade-in")), this }, queueRemove: function () { var t = this; return this.cancelRemove(), this.timer = i.setTimeout(function () { t.remove(!0) }, isNaN(this.options.delay) ? 0 : this.options.delay), this } }), t.extend(c, { notices: [], reload: s, removeAll: function () { t.each(c.notices, function (t, i) { i.remove && i.remove(!1) }) }, removeStack: function (i) { t.each(c.notices, function (t, s) { s.remove && s.options.stack === i && s.remove(!1) }) }, positionAll: function (i) { if (e && clearTimeout(e), e = null, c.notices && c.notices.length) t.each(c.notices, function (t, s) { var e = s.options.stack; e && (e.overlay && e.overlay.hide(), e.nextpos1 = e.firstpos1, e.nextpos2 = e.firstpos2, e.addpos2 = 0, e.animation = i) }), t.each(c.notices, function (t, i) { i.position() }); else { var s = c.prototype.options.stack; s && (delete s.nextpos1, delete s.nextpos2) } }, styling: { brighttheme: { container: "brighttheme", notice: "brighttheme-notice", notice_icon: "brighttheme-icon-notice", info: "brighttheme-info", info_icon: "brighttheme-icon-info", success: "brighttheme-success", success_icon: "brighttheme-icon-success", error: "brighttheme-error", error_icon: "brighttheme-icon-error" }, bootstrap3: { container: "alert", notice: "alert-warning", notice_icon: "glyphicon glyphicon-exclamation-sign", info: "alert-info", info_icon: "glyphicon glyphicon-info-sign", success: "alert-success", success_icon: "bi bi-check-lg-sign", error: "alert-danger", error_icon: "glyphicon glyphicon-warning-sign" } } }), c.styling.fontawesome = t.extend({}, c.styling.bootstrap3), t.extend(c.styling.fontawesome, { notice_icon: "fa fa-exclamation-circle", info_icon: "fa fa-info", success_icon: "fa fa-check", error_icon: "fa fa-warning" }), i.document.body ? r() : t(r), c }; return s(i) }); !function (o, s) { "function" == typeof define && define.amd ? define("pnotify.buttons", ["jquery", "pnotify"], s) : "object" == typeof exports && "undefined" != typeof module ? module.exports = s(require("jquery"), require("./pnotify")) : s(o.jQuery, o.PNotify) }("undefined" != typeof window ? window : this, function (o, s) { return s.prototype.options.buttons = { closer: !0, closer_hover: !0, sticker: !0, sticker_hover: !0, show_on_nonblock: !1, labels: { close: "Close", stick: "Stick", unstick: "Unstick" }, classes: { closer: null, pin_up: null, pin_down: null } }, s.prototype.modules.buttons = { init: function (s, i) { var n = this; s.elem.on({ mouseenter: function (o) { !n.options.sticker || s.options.nonblock && s.options.nonblock.nonblock && !n.options.show_on_nonblock || n.sticker.trigger("pnotify:buttons:toggleStick").css("visibility", "visible"), !n.options.closer || s.options.nonblock && s.options.nonblock.nonblock && !n.options.show_on_nonblock || n.closer.css("visibility", "visible") }, mouseleave: function (o) { n.options.sticker_hover && n.sticker.css("visibility", "d-none"), n.options.closer_hover && n.closer.css("visibility", "d-none") } }), this.sticker = o("<div />", { class: "ui-pnotify-sticker", "aria-role": "button", "aria-pressed": s.options.hide ? "false" : "true", tabindex: "0", title: s.options.hide ? i.labels.stick : i.labels.unstick, css: { cursor: "pointer", visibility: i.sticker_hover ? "d-none" : "visible" }, click: function () { s.options.hide = !s.options.hide, s.options.hide ? s.queueRemove() : s.cancelRemove(), o(this).trigger("pnotify:buttons:toggleStick") } }).bind("pnotify:buttons:toggleStick", function () { var i = null === n.options.classes.pin_up ? s.styles.pin_up : n.options.classes.pin_up, e = null === n.options.classes.pin_down ? s.styles.pin_down : n.options.classes.pin_down; o(this).attr("title", s.options.hide ? n.options.labels.stick : n.options.labels.unstick).children().attr("class", "").addClass(s.options.hide ? i : e).attr("aria-pressed", s.options.hide ? "false" : "true") }).append("<span />").trigger("pnotify:buttons:toggleStick").prependTo(s.container), (!i.sticker || s.options.nonblock && s.options.nonblock.nonblock && !i.show_on_nonblock) && this.sticker.css("display", "none"), this.closer = o("<div />", { class: "ui-pnotify-closer", "aria-role": "button", tabindex: "0", title: i.labels.close, css: { cursor: "pointer", visibility: i.closer_hover ? "d-none" : "visible" }, click: function () { s.remove(!1), n.sticker.css("visibility", "d-none"), n.closer.css("visibility", "d-none") } }).append(o("<span />", { class: null === i.classes.closer ? s.styles.closer : i.classes.closer })).prependTo(s.container), (!i.closer || s.options.nonblock && s.options.nonblock.nonblock && !i.show_on_nonblock) && this.closer.css("display", "none") }, update: function (o, s) { !s.closer || o.options.nonblock && o.options.nonblock.nonblock && !s.show_on_nonblock ? this.closer.css("display", "none") : s.closer && this.closer.css("display", "block"), !s.sticker || o.options.nonblock && o.options.nonblock.nonblock && !s.show_on_nonblock ? this.sticker.css("display", "none") : s.sticker && this.sticker.css("display", "block"), this.sticker.trigger("pnotify:buttons:toggleStick"), this.closer.find("span").attr("class", "").addClass(null === s.classes.closer ? o.styles.closer : s.classes.closer), s.sticker_hover ? this.sticker.css("visibility", "d-none") : o.options.nonblock && o.options.nonblock.nonblock && !s.show_on_nonblock || this.sticker.css("visibility", "visible"), s.closer_hover ? this.closer.css("visibility", "d-none") : o.options.nonblock && o.options.nonblock.nonblock && !s.show_on_nonblock || this.closer.css("visibility", "visible") } }, o.extend(s.styling.brighttheme, { closer: "brighttheme-icon-closer", pin_up: "brighttheme-icon-sticker", pin_down: "brighttheme-icon-sticker brighttheme-icon-stuck" }), o.extend(s.styling.bootstrap3, { closer: "bi bi-x-lg", pin_up: "glyphicon glyphicon-pause", pin_down: "glyphicon glyphicon-play" }), o.extend(s.styling.fontawesome, { closer: "fa fa-times", pin_up: "fa fa-pause", pin_down: "fa fa-play" }), s }); !function (i, t) { "function" == typeof define && define.amd ? define("pnotify.desktop", ["jquery", "pnotify"], t) : "object" == typeof exports && "undefined" != typeof module ? module.exports = t(require("jquery"), require("./pnotify")) : t(i.jQuery, i.PNotify) }("undefined" != typeof window ? window : this, function (i, t) { var o, n = function (i, t) { return (n = "Notification" in window ? function (i, t) { return new Notification(i, t) } : "mozNotification" in navigator ? function (i, t) { return navigator.mozNotification.createNotification(i, t.body, t.icon).show() } : "webkitNotifications" in window ? function (i, t) { return window.webkitNotifications.createNotification(t.icon, i, t.body) } : function (i, t) { return null })(i, t) }; return t.prototype.options.desktop = { desktop: !1, fallback: !0, icon: null, tag: null, title: null, text: null }, t.prototype.modules.desktop = { genNotice: function (i, t) { null === t.icon ? this.icon = "https://sciactive.com/pnotify/includes/desktop/" + i.options.type + ".png" : !1 === t.icon ? this.icon = null : this.icon = t.icon, null !== this.tag && null === t.tag || (this.tag = null === t.tag ? "PNotify-" + Math.round(1e6 * Math.random()) : t.tag), i.desktop = n(t.title || i.options.title, { icon: this.icon, body: t.text || i.options.text, tag: this.tag }), !("close" in i.desktop) && "cancel" in i.desktop && (i.desktop.close = function () { i.desktop.cancel() }), i.desktop.onclick = function () { i.elem.trigger("click") }, i.desktop.onclose = function () { "closing" !== i.state && "closed" !== i.state && i.remove() } }, init: function (i, n) { if (n.desktop) { if (0 !== (o = t.desktop.checkPermission())) return void (n.fallback || (i.options.auto_display = !1)); this.genNotice(i, n) } }, update: function (i, t, n) { 0 !== o && t.fallback || !t.desktop || this.genNotice(i, t) }, beforeOpen: function (i, t) { 0 !== o && t.fallback || !t.desktop || i.elem.css({ left: "-10000px" }).removeClass("ui-pnotify-in") }, afterOpen: function (i, t) { 0 !== o && t.fallback || !t.desktop || (i.elem.css({ left: "-10000px" }).removeClass("ui-pnotify-in"), "show" in i.desktop && i.desktop.show()) }, beforeClose: function (i, t) { 0 !== o && t.fallback || !t.desktop || i.elem.css({ left: "-10000px" }).removeClass("ui-pnotify-in") }, afterClose: function (i, t) { 0 !== o && t.fallback || !t.desktop || (i.elem.css({ left: "-10000px" }).removeClass("ui-pnotify-in"), "close" in i.desktop && i.desktop.close()) } }, t.desktop = { permission: function () { "undefined" != typeof Notification && "requestPermission" in Notification ? Notification.requestPermission() : "webkitNotifications" in window && window.webkitNotifications.requestPermission() }, checkPermission: function () { return "undefined" != typeof Notification && "permission" in Notification ? "granted" === Notification.permission ? 0 : 1 : "webkitNotifications" in window && 0 == window.webkitNotifications.checkPermission() ? 0 : 1 } }, o = t.desktop.checkPermission(), t }); !function (i, o) { "function" == typeof define && define.amd ? define("pnotify.mobile", ["jquery", "pnotify"], o) : "object" == typeof exports && "undefined" != typeof module ? module.exports = o(require("jquery"), require("./pnotify")) : o(i.jQuery, i.PNotify) }("undefined" != typeof window ? window : this, function (i, o) { return o.prototype.options.mobile = { swipe_dismiss: !0, styling: !0 }, o.prototype.modules.mobile = { init: function (i, o) { var t = this, e = null, n = null, s = null; this.swipe_dismiss = o.swipe_dismiss, this.doMobileStyling(i, o), i.elem.on({ touchstart: function (o) { t.swipe_dismiss && (e = o.originalEvent.touches[0].screenX, s = i.elem.width(), i.container.css("left", "0")) }, touchmove: function (o) { if (e && t.swipe_dismiss) { var a = o.originalEvent.touches[0].screenX; n = a - e; var c = (1 - Math.abs(n) / s) * i.options.opacity; i.elem.css("opacity", c), i.container.css("left", n) } }, touchend: function () { if (e && t.swipe_dismiss) { if (Math.abs(n) > 40) { var o = n < 0 ? -2 * s : 2 * s; i.elem.animate({ opacity: 0 }, 100), i.container.animate({ left: o }, 100), i.remove() } else i.elem.animate({ opacity: i.options.opacity }, 100), i.container.animate({ left: 0 }, 100); e = null, n = null, s = null } }, touchcancel: function () { e && t.swipe_dismiss && (i.elem.animate({ opacity: i.options.opacity }, 100), i.container.animate({ left: 0 }, 100), e = null, n = null, s = null) } }) }, update: function (i, o) { this.swipe_dismiss = o.swipe_dismiss, this.doMobileStyling(i, o) }, doMobileStyling: function (o, t) { t.styling ? (o.elem.addClass("ui-pnotify-mobile-able"), i(window).width() <= 480 ? (o.options.stack.mobileOrigSpacing1 || (o.options.stack.mobileOrigSpacing1 = o.options.stack.spacing1, o.options.stack.mobileOrigSpacing2 = o.options.stack.spacing2), o.options.stack.spacing1 = 0, o.options.stack.spacing2 = 0) : (o.options.stack.mobileOrigSpacing1 || o.options.stack.mobileOrigSpacing2) && (o.options.stack.spacing1 = o.options.stack.mobileOrigSpacing1, delete o.options.stack.mobileOrigSpacing1, o.options.stack.spacing2 = o.options.stack.mobileOrigSpacing2, delete o.options.stack.mobileOrigSpacing2)) : (o.elem.removeClass("ui-pnotify-mobile-able"), o.options.stack.mobileOrigSpacing1 && (o.options.stack.spacing1 = o.options.stack.mobileOrigSpacing1, delete o.options.stack.mobileOrigSpacing1), o.options.stack.mobileOrigSpacing2 && (o.options.stack.spacing2 = o.options.stack.mobileOrigSpacing2, delete o.options.stack.mobileOrigSpacing2)) } }, o }); // Test //TE_UpdateTable({ "s": "NDX:IND", "p": 15274.39, "nch": -199.53, "pch": -1.29, "type": "index", "state": "open", "dstate": "open" }, false) //TEST notificationList /*setTimeout(() => { TENotification("United States Core Inflation Rate YoY", "United States Core Inflation Rate YoY reported at 3.3%. Consensus was 3.4%. Previously at 3.4%", "/", "3") }, 25000) setTimeout(() => { TENotification("United States CPI", "United States CPI reported at 314.18. Consensus was 314.63. Previously at 314.07.", "/", "3") }, 30001) setTimeout(() => { TENotification("United States Inflation Rate YoY", "United States Inflation Rate YoY reported at 3.0%. Consensus was 3.1%. Previously at 3.3%.", "/", "3") }, 35002) setTimeout(() => { TENotification("United States Inflation Rate MoM", "United States Inflation Rate MoM reported at -0.1%. Consensus was 0.1%. Previously at 0.0%.", "/", "3") }, 40003) setTimeout(() => { TENotification("United States Core Inflation Rate MoM", "United States Core Inflation Rate MoM reported at 0.1%. Consensus was 0.2%. Previously at 0.2%.", "/", "3") }, 45004)*/ }</script> <script type="text/javascript" src="//d3fy651gv2fhd3.cloudfront.net/js/search.min.js?v=20240502" async></script> <script> TENotificationsHistorical = [] TENotificationsNews = [] //console.log('• Notifications Script Loaded - 20240701') setTimeout(() => { getNotificationsFromCookie() loadBellStatus() },1000) function loadBellStatus() { //console.log("• get bell status from cookie") var seenData = false const cookieData = document.cookie.split(';').find(item => item.trim().startsWith('TENewNotifications')); if (cookieData) { seenData = cookieData.split('TENewNotifications=')[1].split(',')[0] } if (seenData == 'true') { //console.log("new notification") $('#notification-new').show() $('#notification-empty').hide() } else { $('#notification-new').hide() $('#notification-empty').show() } } function setNotificationCookieStatus(status) { document.cookie = `TENewNotifications=${status.toString()}; expires=${createExpirationDate('eod')}; path=/`; } function changeIconStatus(isHover) { try { //console.log("change bell") if (TENotificationsHistorical.length > 0 && !isHover) { $('#notification-new').show() $('#notification-empty').hide() setNotificationCookieStatus(true) } else if (TENotificationsNews.length > 0 && !isHover) { $('#notification-new').show() $('#notification-empty').hide() setNotificationCookieStatus(true) } else { $('#notification-new').hide() $('#notification-empty').show() setNotificationCookieStatus(false) } } catch (e) { console.error(e) } } function timeAgo(datetime) { try { const now = new Date(); const diff = now - new Date(datetime); let seconds = Math.floor(diff / 1000); const minuteInSecs = 60; const hourInSecs = minuteInSecs * 60; let timeAgoString; if (seconds < minuteInSecs) { if (seconds == 0) { seconds = 1 } const plural = seconds == 1 ? '' : 's'; timeAgoString = `${seconds} second${plural} ago`; } else if (seconds < hourInSecs) { const minutes = Math.floor(seconds / minuteInSecs); timeAgoString = `${minutes} minutes ago`; } else { const hours = Math.floor(seconds / hourInSecs); const plural = hours > 1 ? 's' : ''; timeAgoString = `${hours} hour${plural} ago`; } return timeAgoString; } catch (e) { console.error(e) } } function createExpirationDate(span) { const expires = new Date(); if (span == '1d') { expires.setDate(expires.getDate() + 1) return expires.toUTCString() } else if (span == '1h') { expires.setHours(expires.getHours() + 1); return expires.toUTCString(); } else if (span == 'eod') { //end of day const expiresTime = new Date(expires.getTime()); expiresTime.setHours(23, 59, 59); return expiresTime.toUTCString(); } } function removeNotificationIndex(i) { try { if (TENotificationsHistorical.length == 0 && TENotificationsNews.length > 0) { TENotificationsNews.splice(i, 1); document.cookie = `TELastNews=${JSON.stringify(TENotificationsNews)}; path=/`; } if (TENotificationsHistorical.length > 0) { TENotificationsHistorical.splice(i, 1); } $('.notification-list').empty(); addNotificationCookie() if (TENotificationsNews.length == 0 || (TENotificationsNews.length == 0 && TENotificationsHistorical.length == 0)) { addEmptyContent() } if (TENotificationsHistorical.length > 0 || TENotificationsNews.length > 0) { upsertNotification(null, true, false) } } catch (e) { console.error(e) } } function addEmptyContent() { try { //console.log("Add Empty Content") const notificationList = $('.notification-list'); notificationList.empty(); //notificationList.append('<div style="display:flex;justify-content:space-between;align-itens:center"><span style="margin-left:18px"><b>Notifications</b></span></div>') let html = `<div class="empty-notificationlist"> <div class="empty-notificationlist-content"> <span>You have no new notifications</span> <br> <i class="bi bi-bell-slash-fill"></i> <br> <div><a href="/stream" title="Show all news" class="empty-notificationlist-more"><div class="btn btn-outline-secondary">All News</div></a></div> </div> </div>`; notificationList.append(html); } catch (e) { console.error(e) } } function addContent() { try { //console.log("AddContent") const notifiList = TENotificationsHistorical.length > 0 ? TENotificationsHistorical : TENotificationsNews; const notificationList = $('.notification-list'); notificationList.empty(); if (notifiList.length > 0) { notificationList.append('<div class="notificationList-first-title"><span style="margin-left:18px"><b>Notifications</b></span><span class="notifications-clean-all" title="Delete all notifications">Clear all</span></div>') for (let i = notifiList.length - 1; i >= 0; i--) { const notification = notifiList[i]; let html = `<div> <div class="card notificationlist-card" style="margin:0;"> <div class="card-body notificationlist-body"> <div class="notificationlist-header"> <div class="notificationlist-header-title"><a href="${notification.url}"><b>${notification.title}</b></a><span class="badge badge-notification-type" style="background-color:${notification.color}">${notification.type}</span></div> <span id="n-${i}" title="Delete" style="cursor:pointer"><i id="cleanIndividualNotif" class="bi bi-trash3"></i></span> </div> <span style="font-size:15px">${notification.text}</span> <div class="notificationlist-footer"> <p>${timeAgo(notification.datetime)}</p> </div> </div> </div> </div>`; notificationList.append(html); $(`#n-${i}`).on('click', function () { removeNotificationIndex(i) }) } notificationList.append('<div class="notificationlist-more-div"><a href="/stream" title="Show more streams" class="notificationlist-more"><div class="btn btn-outline-secondary">More News</div></a></div>') $('.notifications-clean-all').on('click', function () { //console.log("Clicked") notificationList.empty(); if (TENotificationsHistorical.length > 0) { document.cookie = "TENotifications=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/"; TENotificationsHistorical = [] } else if (TENotificationsNews.length > 0) { document.cookie = `TELastNews=[]; path=/`; TENotificationsNews = [] } upsertNotification(null, true, false) }); } } catch (e) { console.error(e) } } function fetchLastNews() { try { //console.log("• Fetch News") TENotificationsNews = [] const newsUrl = '/ws/stream.ashx?start=0&size=3' fetch(newsUrl) .then(response => { if (!response.ok) { console.error(`HTTP error! status: ${response.status}`); } return response.json(); }) .then(data => { for (let item of data) { if (item.description.length > 300) { item.description = item.description.substring(0, 300) + ' ...'; let lastPeriodIndex = Math.min(item.description.lastIndexOf('. '), 300); if (lastPeriodIndex !== -1) { item.description = item.description.substring(0, lastPeriodIndex + 1) + '..'; } else { item.description = item.description.substring(0, 300) + '...'; } } TENotificationsNews.unshift({ title: item.title, url: item.url, text: item.description, importance: item.importance, datetime: item.date, type: 'News', color: '#ddd' }) } document.cookie = `TELastNews=${JSON.stringify(TENotificationsNews)}; path=/`; // console.log("• Saved News on Cookies TELastNews") upsertNotification(null, true, false) }) .catch(error => { console.error('Error fetching last news:', error); }); } catch (e) { console.error(e) } } function getNotificationsFromCookie() { try { //console.log("• get Notifications From Cookie") const cookieData = document.cookie.split(';').find(item => item.trim().startsWith('TENotifications')); if (cookieData) { let encodedData = cookieData.split('TENotifications=')[1].split(',') //const decrompressedData = pako.inflate(encodedData, { to: 'string' }); try { TENotificationsHistorical = JSON.parse(encodedData); //console.log(TENotificationsHistorical) if (TENotificationsHistorical.length > 0) { upsertNotification(null, true, false) } } catch (error) { console.error("Error parsing existing cookie data:", error); } } } catch (e) { console.error(e) } } function estimateNotificationSize() { return JSON.stringify(TENotificationsHistorical).length; } function getCookieSize() { try { let safeLoop = 0 const cookies = document.cookie.split(';'); let total = 0 for (const cookie of cookies) { if (safeLoop == 50) { return 0; } const [key, value] = cookie.trim().split('='); if (key !== 'TENotifications') { total = total + JSON.stringify(cookie).length + 2 } safeLoop++ } return total; } catch (e) { console.error(e); } } function manageCookieSize(maxSize) { try { //console.log("• Check threshold of cookies size"); const currentCookieSize = getCookieSize(); const currentNotificationsSize = estimateNotificationSize(); let totalBytes = currentCookieSize + currentNotificationsSize; let nLoopCount = 0; //console.log("• Current Cookies Estimated Size: " + currentCookieSize); //console.log("• With Notifications Cookie Estimated Size: " + currentNotificationsSize); if (totalBytes > maxSize) { while (nLoopCount < 10 && totalBytes > maxSize) { //console.log("---------------------> nLoopCount: " + nLoopCount); TENotificationsHistorical.shift(); totalBytes = currentCookieSize + estimateNotificationSize(); //console.log(`• Notification removed to control cookie size. New size: ${totalBytes} bytes`); if (totalBytes <= maxSize) { //console.log(`• Cookie size is already within limit: ${totalBytes} bytes`); break; } nLoopCount++; } }// else { //console.log(`• Cookie size is within limit: ${totalBytes} bytes`); //} } catch (e) { console.error(e); } } function addNotificationCookie() { try { //console.log("• Add Notifications on Cookie"); const isEmptyNews = TENotificationsNews.length === 0; const isEmptyHistorical = TENotificationsHistorical.length === 0; document.cookie = `TELastNews=${isEmptyNews ? '[]' : JSON.stringify(TENotificationsNews)}; path=/`; manageCookieSize(3400); if (isEmptyHistorical) { document.cookie = `TENotifications=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/`; } else { document.cookie = `TENotifications=${JSON.stringify(TENotificationsHistorical)}; expires=${createExpirationDate('1d')}; path=/`; } } catch (e) { console.error(e); } } function createDefaultNotification(n) { return { ...n, datetime: new Date(), type: n.importance > 0 ? 'Calendar' : 'News', color: n.importance > 0 ? '#ffb3ba' : '#ddd', }; } function upsertNotification(n, cookie, fromStream) { try { if (TELanguage != '') { return; } //console.log("-----------------------------------------------> Start of upsert Notification on list flow"); //console.log(`• Dealing with ${JSON.stringify(n)}`); if (!cookie) { const newNotification = createDefaultNotification(n); const existingNotification = TENotificationsHistorical.find(item => item.text === newNotification.text); if (existingNotification) { TENotificationsHistorical.splice(TENotificationsHistorical.indexOf(existingNotification), 1); } TENotificationsHistorical.push(newNotification); } const notificationListContainer = $('.offcanvas-top.notification-list.container'); const notificationList = $('.notification-list'); if (!notificationList.length) { notificationListContainer.append(`<div class="offcanvas-header"></div>`); } if (TENotificationsHistorical.length > 0 || TENotificationsNews.length > 0) { if (fromStream == true) { changeIconStatus(false); setNotificationCookieStatus(true); } if (!cookie) { addNotificationCookie(); } addContent(); } else { addEmptyContent(); } } catch (e) { console.error(e); } } $('.btn-notification-list').on('click', function (event) { //console.log('click') event.preventDefault() let cookieNewsIsPresent = false //console.log("• Check if there is LastNews Cookie") const cookieData = document.cookie.split(';').find(item => item.trim().startsWith('TELastNews')); if (cookieData) { let cookieNews = cookieData.split('TELastNews=')[1].split(',') cookieNewsIsPresent = true TENotificationsNews = JSON.parse(cookieNews) } //console.log(cookieNewsIsPresent) if (TENotificationsHistorical.length == 0 && TENotificationsNews.length == 0 && !cookieNewsIsPresent) { //console.log("IF") $('.offcanvas-top').removeClass("show") $('.offcanvas-top').removeClass("showing") fetchLastNews() } else { if (TENotificationsNews.length > 0 || TENotificationsHistorical.length > 0) { upsertNotification(null, true, false) } else { addEmptyContent() } } changeIconStatus(true) }); </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-SZ14JCTXWQ"></script> <script> window.dataLayer = window.dataLayer || []; function ga() { dataLayer.push(arguments); } ga('js', new Date()); ga('config', 'G-SZ14JCTXWQ', { 'allow_google_signals': false }); </script> </body> </html>