function toggleNextSibling (e) { if (e.nextSibling.style.display=='none') { e.nextSibling.style.display='block'; } else { e.nextSibling.style.display='none'; } } // Globals used by SEC loader (Show.js) window.SEC_ALIAS_DIR = ""; window.RFV_MENU = [{"category":"Cover","reports":[{"label":"Cover","pos":1,"url":"R1.htm"}]},{"category":"Financial Statements","reports":[{"label":"Consolidated Statements of Operations (Unaudited)","pos":2,"url":"R2.htm"},{"label":"Consolidated Statements of Comprehensive Income / (Loss) (Unaudited)","pos":3,"url":"R3.htm"},{"label":"Consolidated Statements of Financial Position (Unaudited)","pos":4,"url":"R4.htm"},{"label":"Consolidated Statements of Financial Position (Unaudited) (Parenthetical)","pos":5,"url":"R5.htm"},{"label":"Consolidated Statements of Changes in Shareholders' Equity (Unaudited)","pos":6,"url":"R6.htm"},{"label":"Consolidated Statements of Cash Flows (Unaudited)","pos":7,"url":"R7.htm"}]},{"category":"Notes to Financial Statements","reports":[{"label":"Operations and summary of significant accounting policies","pos":8,"url":"R8.htm"},{"label":"Revenue from contracts with customers","pos":9,"url":"R9.htm"},{"label":"Segment reporting","pos":10,"url":"R10.htm"},{"label":"Business Combinations","pos":11,"url":"R11.htm"},{"label":"Goodwill and intangible assets","pos":12,"url":"R12.htm"},{"label":"Property, plant and equipment - net","pos":13,"url":"R13.htm"},{"label":"Leases","pos":14,"url":"R14.htm"},{"label":"Long-term debt - current and non-current","pos":15,"url":"R15.htm"},{"label":"Obligations under supplier finance programs","pos":16,"url":"R16.htm"},{"label":"Warranty provisions","pos":17,"url":"R17.htm"},{"label":"Employee benefits","pos":18,"url":"R18.htm"},{"label":"Derivative instruments and hedge accounting","pos":19,"url":"R19.htm"},{"label":"Inventories","pos":20,"url":"R20.htm"},{"label":"Prepaid expenses","pos":21,"url":"R21.htm"},{"label":"Accounts receivable - net","pos":22,"url":"R22.htm"},{"label":"Other assets","pos":23,"url":"R23.htm"},{"label":"Income taxes","pos":24,"url":"R24.htm"},{"label":"Contract assets and contract liabilities","pos":25,"url":"R25.htm"},{"label":"Accrued liabilities","pos":26,"url":"R26.htm"},{"label":"Other liabilities","pos":27,"url":"R27.htm"},{"label":"Accumulated other comprehensive income (loss)","pos":28,"url":"R28.htm"},{"label":"Commitments and guarantees","pos":29,"url":"R29.htm"},{"label":"Earnings (loss) per share","pos":30,"url":"R30.htm"},{"label":"Share-based compensation","pos":31,"url":"R31.htm"},{"label":"Fair value disclosures","pos":32,"url":"R32.htm"},{"label":"Related party transactions","pos":33,"url":"R33.htm"},{"label":"Variable interest entities","pos":34,"url":"R34.htm"},{"label":"Insider Trading Arrangements","pos":35,"url":"R35.htm"}]},{"category":"Accounting Policies","reports":[{"label":"Operations and summary of significant accounting policies (Policies)","pos":36,"url":"R36.htm"}]},{"category":"Notes Tables","reports":[{"label":"Revenue from contracts with customers (Tables)","pos":37,"url":"R37.htm"},{"label":"Segment reporting (Tables)","pos":38,"url":"R38.htm"},{"label":"Goodwill and intangible assets (Tables)","pos":39,"url":"R39.htm"},{"label":"Property, plant and equipment - net (Tables)","pos":40,"url":"R40.htm"},{"label":"Leases (Tables)","pos":41,"url":"R41.htm"},{"label":"Long-term debt - current and non-current (Tables)","pos":42,"url":"R42.htm"},{"label":"Warranty provisions (Tables)","pos":43,"url":"R43.htm"},{"label":"Derivative instruments and hedge accounting (Tables)","pos":44,"url":"R44.htm"},{"label":"Inventories (Tables)","pos":45,"url":"R45.htm"},{"label":"Prepaid expenses (Tables)","pos":46,"url":"R46.htm"},{"label":"Accounts receivable - net (Tables)","pos":47,"url":"R47.htm"},{"label":"Other assets (Tables)","pos":48,"url":"R48.htm"},{"label":"Contract assets and contract liabilities (Tables)","pos":49,"url":"R49.htm"},{"label":"Accrued liabilities (Tables)","pos":50,"url":"R50.htm"},{"label":"Other liabilities (Tables)","pos":51,"url":"R51.htm"},{"label":"Accumulated other comprehensive income (loss) (Tables)","pos":52,"url":"R52.htm"},{"label":"Earnings (loss) per share (Tables)","pos":53,"url":"R53.htm"},{"label":"Fair value disclosures (Tables)","pos":54,"url":"R54.htm"}]},{"category":"Notes Details","reports":[{"label":"Operations and summary of significant accounting policies (Details)","pos":55,"url":"R55.htm"},{"label":"Revenue from contracts with customers - Schedule of disaggregation of revenue (Details)","pos":56,"url":"R56.htm"},{"label":"Revenue from contracts with customers - Narrative (Details)","pos":57,"url":"R57.htm"},{"label":"Segment reporting - Narrative (Details)","pos":58,"url":"R58.htm"},{"label":"Segment reporting - Schedule of sub unit information by revenue (Details)","pos":59,"url":"R59.htm"},{"label":"Segment reporting - Schedule of segment reporting (Details)","pos":60,"url":"R60.htm"},{"label":"Segment reporting - Schedule of reconciliation of profit (loss) by segment (Details)","pos":61,"url":"R61.htm"},{"label":"Segment reporting - Schedule of incurred costs (Details)","pos":62,"url":"R62.htm"},{"label":"Business Combinations (Details)","pos":63,"url":"R63.htm"},{"label":"Goodwill and intangible assets - Schedule of goodwill (Details)","pos":64,"url":"R64.htm"},{"label":"Goodwill and intangible assets - Schedule of intangible assets (Details)","pos":65,"url":"R65.htm"},{"label":"Goodwill and intangible assets - Narrative (Details)","pos":66,"url":"R66.htm"},{"label":"Property, plant and equipment - net - Schedule of property, plant and equipment (Details)","pos":67,"url":"R67.htm"},{"label":"Property, plant and equipment - net - Narrative (Details)","pos":68,"url":"R68.htm"},{"label":"Leases - Schedule of operating lease liabilities (Details)","pos":69,"url":"R69.htm"},{"label":"Leases - Schedule of finance lease liabilities (Details)","pos":70,"url":"R70.htm"},{"label":"Leases - Schedule of lease expense (Details)","pos":71,"url":"R71.htm"},{"label":"Leases - Narrative (Details)","pos":72,"url":"R72.htm"},{"label":"Long-term debt - current and non-current - Schedule of current and noncurrent portions of long-term debt (Details)","pos":73,"url":"R73.htm"},{"label":"Long-term debt - current and non-current - Narrative (Details)","pos":74,"url":"R74.htm"},{"label":"Long-term debt - current and non-current - Schedule of available facilities (Details)","pos":75,"url":"R75.htm"},{"label":"Long-term debt - current and non-current - Schedule of undiscounted future cash outflows of the company’s long-term debt including interest (Details)","pos":76,"url":"R76.htm"},{"label":"Long-term debt - current and non-current - Schedule of total assets pledged as collateral in connection with the company’s borrowing arrangements (Details)","pos":77,"url":"R77.htm"},{"label":"Obligations under supplier finance programs (Details)","pos":78,"url":"R78.htm"},{"label":"Warranty provisions - Narrative (Details)","pos":79,"url":"R79.htm"},{"label":"Warranty provisions - Schedule of warranty provisions (Details)","pos":80,"url":"R80.htm"},{"label":"Employee benefits - Defined benefit plans (Details)","pos":81,"url":"R81.htm"},{"label":"Employee benefits - Defined contribution plans (Details)","pos":82,"url":"R82.htm"},{"label":"Derivative instruments and hedge accounting - Schedule of derivative instruments in statement of financial position (Details)","pos":83,"url":"R83.htm"},{"label":"Derivative instruments and hedge accounting - Schedule of cash flow hedges included in accumulated other comprehensive income (loss) (Details)","pos":84,"url":"R84.htm"},{"label":"Derivative instruments and hedge accounting - Narrative (Details)","pos":85,"url":"R85.htm"},{"label":"Derivative instruments and hedge accounting - Schedule of amounts recognized in the statement of operation for the foreign currency hedge accounting (Details)","pos":86,"url":"R86.htm"},{"label":"Derivative instruments and hedge accounting - Schedule of offsetting derivative assets and liabilities (Details)","pos":87,"url":"R87.htm"},{"label":"Inventories (Details)","pos":88,"url":"R88.htm"},{"label":"Prepaid expenses (Details)","pos":89,"url":"R89.htm"},{"label":"Accounts receivable - net - Schedule of accounts receivable (Details)","pos":90,"url":"R90.htm"},{"label":"Accounts receivable - net - Schedule of allowance for credit loss (Details)","pos":91,"url":"R91.htm"},{"label":"Accounts receivable - net - Narrative (Details)","pos":92,"url":"R92.htm"},{"label":"Other assets (Details)","pos":93,"url":"R93.htm"},{"label":"Income taxes (Details)","pos":94,"url":"R94.htm"},{"label":"Contract assets and contract liabilities - Schedule of contract assets and liabilities (Details)","pos":95,"url":"R95.htm"},{"label":"Contract assets and contract liabilities - Narrative (Details)","pos":96,"url":"R96.htm"},{"label":"Accrued liabilities (Details)","pos":97,"url":"R97.htm"},{"label":"Other liabilities - Schedule of other liabilities (Details)","pos":98,"url":"R98.htm"},{"label":"Other liabilities - Narrative (Details)","pos":99,"url":"R99.htm"},{"label":"Accumulated other comprehensive income (loss) (Details)","pos":100,"url":"R100.htm"},{"label":"Commitments and guarantees (Details)","pos":101,"url":"R101.htm"},{"label":"Earnings (loss) per share - Narrative (Details)","pos":102,"url":"R102.htm"},{"label":"Earnings (loss) per share - Schedule of antidilutive securities excluded from computation of earnings (loss) per share (Details)","pos":103,"url":"R103.htm"},{"label":"Earnings (loss) per share - Schedule of basic and diluted earnings (loss) per share (Details)","pos":104,"url":"R104.htm"},{"label":"Share-based compensation (Details)","pos":105,"url":"R105.htm"},{"label":"Fair value disclosures - Schedule of fair value, assets and liabilities measured on recurring basis (Details)","pos":106,"url":"R106.htm"},{"label":"Fair value disclosures - Schedule of fair values of contingent consideration (Details)","pos":107,"url":"R107.htm"},{"label":"Related party transactions (Details)","pos":108,"url":"R108.htm"},{"label":"Variable interest entities (Details)","pos":109,"url":"R109.htm"}]},{"allReports":{"1":"R1.htm","2":"R2.htm","3":"R3.htm","4":"R4.htm","5":"R5.htm","6":"R6.htm","7":"R7.htm","8":"R8.htm","9":"R9.htm","10":"R10.htm","11":"R11.htm","12":"R12.htm","13":"R13.htm","14":"R14.htm","15":"R15.htm","16":"R16.htm","17":"R17.htm","18":"R18.htm","19":"R19.htm","20":"R20.htm","21":"R21.htm","22":"R22.htm","23":"R23.htm","24":"R24.htm","25":"R25.htm","26":"R26.htm","27":"R27.htm","28":"R28.htm","29":"R29.htm","30":"R30.htm","31":"R31.htm","32":"R32.htm","33":"R33.htm","34":"R34.htm","35":"R35.htm","36":"R36.htm","37":"R37.htm","38":"R38.htm","39":"R39.htm","40":"R40.htm","41":"R41.htm","42":"R42.htm","43":"R43.htm","44":"R44.htm","45":"R45.htm","46":"R46.htm","47":"R47.htm","48":"R48.htm","49":"R49.htm","50":"R50.htm","51":"R51.htm","52":"R52.htm","53":"R53.htm","54":"R54.htm","55":"R55.htm","56":"R56.htm","57":"R57.htm","58":"R58.htm","59":"R59.htm","60":"R60.htm","61":"R61.htm","62":"R62.htm","63":"R63.htm","64":"R64.htm","65":"R65.htm","66":"R66.htm","67":"R67.htm","68":"R68.htm","69":"R69.htm","70":"R70.htm","71":"R71.htm","72":"R72.htm","73":"R73.htm","74":"R74.htm","75":"R75.htm","76":"R76.htm","77":"R77.htm","78":"R78.htm","79":"R79.htm","80":"R80.htm","81":"R81.htm","82":"R82.htm","83":"R83.htm","84":"R84.htm","85":"R85.htm","86":"R86.htm","87":"R87.htm","88":"R88.htm","89":"R89.htm","90":"R90.htm","91":"R91.htm","92":"R92.htm","93":"R93.htm","94":"R94.htm","95":"R95.htm","96":"R96.htm","97":"R97.htm","98":"R98.htm","99":"R99.htm","100":"R100.htm","101":"R101.htm","102":"R102.htm","103":"R103.htm","104":"R104.htm","105":"R105.htm","106":"R106.htm","107":"R107.htm","108":"R108.htm","109":"R109.htm","110":"ALL_REPORTS_SYNTHETIC"}}]; window.R_FILES_BY_POS = RFV_MENU.find(o => 'allReports' in o)?.allReports; function scrollMainContentToTop() { // Scroll to company info instead of top of page header const anchor = document.getElementById('company-info'); if (anchor) { anchor.scrollIntoView({ block: 'start', // top-align it behavior: 'auto' // no animation unless desired }); } } window.RENDERING_LOGS = RFV_MENU.find(o => 'renderingLogs' in o)?.renderingLogs; // Log viewer renders selected log into #reportDiv window.showRenderingLog = function () { const root = ensureShadow(); clearShadow(); let baseDir = (typeof window.SEC_ALIAS_DIR === 'string' && window.SEC_ALIAS_DIR.length) ? window.SEC_ALIAS_DIR.replace(/\/$/, '') : (location.pathname.replace(/\/[^/]*$/, '') || '/'); if (!baseDir.endsWith('/')) baseDir += '/'; const reportCssHref = `${baseDir}report.css`; // same folder as R1.htm const logEntries = window.RENDERING_LOGS || []; const rows = logEntries.map(entry => { const type = entry?.type || 'Info'; const text = (entry?.text || '').replace(/\r\n|\r|\n/g, '
'); const cls = type.slice(0,4).toLowerCase(); // 'erro', 'warn', 'info', etc. return `${type}: ${text}`; }).join(''); const container = document.createElement('div'); container.id = 'rfv-shadow-host'; container.innerHTML = `

Rendering Log

${rows}
The rendering log information below will not appear on the EDGAR web site.
`; root.appendChild(container); scrollMainContentToTop(); }; function decodeHtmlEntities(s) { // safest cross-browser decode const t = document.createElement('textarea'); t.innerHTML = s; return t.value; } function decodeBase64Utf8(b64) { const bin = atob(b64); const bytes = Uint8Array.from(bin, c => c.charCodeAt(0)); return new TextDecoder("utf-8").decode(bytes); } function sanitizeId(id) { return id.replace(/[^a-zA-Z0-9\._-]/g, '_'); // Replace invalid chars with underscore } /** * Normalize raw report HTML for extraction across contexts: * - SECWS: decode entity-escaped HTML (<html> → ) * - sec.gov SGML: keep full and , unwrap … safely * - Arelle/plain: pass through unchanged */ function normalizeReportHtml(raw) { let src = String(raw || ''); // If looks entity-escaped (e.g., <html>, <TEXT>, etc.), decode first const looksEscaped = /<\/?(?:html|head|body|TEXT)\b/i.test(src) || /<[a-z]/i.test(src); if (looksEscaped) { try { src = decodeHtmlEntities(src); } catch (_) {} } // If wrapped in SGML …, unwrap while preserving const hasSGML = //i.test(src) && /<\/TEXT>/i.test(src); if (hasSGML) { const start = src.search(//i); const end = src.search(/<\/TEXT>/i); if (start !== -1 && end !== -1 && end > start) { src = src.slice(start + ''.length, end); } } return src; } function ensureShadow() { const pane = document.getElementById('reportDiv'); if (!pane) return null; if (!pane.shadowRoot) pane.attachShadow({ mode: 'open' }); // mirror for any legacy code still reading _shadowRoot pane._shadowRoot = pane.shadowRoot; // make sure host is visible and not contained pane.hidden = false; pane.style.display = 'block'; pane.style.visibility = 'visible'; pane.style.contain = 'none'; return pane.shadowRoot; } function clearShadow() { const root = ensureShadow(); if (root) root.innerHTML = ''; } function renderIntoShadow(bodyHtml, links, inlineStyles, baseDir) { const root = ensureShadow(); if (!root) return; // Always clear previous report clearShadow(); // pane fades via .rfv-pending; do not change visibility to avoid header repaint const pane = document.getElementById('reportDiv'); // 1) Inline styles FIRST for immediate styling if (Array.isArray(inlineStyles)) { for (const css of inlineStyles) { if (css) { const styleEl = document.createElement('style'); styleEl.textContent = css; root.appendChild(styleEl); } } } // 2) Safety constraints (layout) const safety = document.createElement('style'); safety.textContent = ` :host { display:block; width:auto; max-width:100%; } #rfv-shadow-host { display:block; width:auto; max-width:100%; overflow:visible; } table.report { width:auto; max-width:100%; border-collapse: collapse; } img { max-width:100%; height:auto; } /* Unbeatable forced ring (wins against report CSS with !important resets) */ .rfv-force-focus, .rfv-focus-ring { outline: 3px solid #005A9C !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #fff inset !important; } :focus-visible { outline: 3px solid #005A9C !important; outline-offset: 2px !important; } `; root.appendChild(safety); // 3) Report body const container = document.createElement('div'); container.id = 'rfv-shadow-host'; container.innerHTML = bodyHtml; container.setAttribute('tabindex', '-1'); // make container focusable container.setAttribute('role', 'region'); // semantic region container.setAttribute('aria-label', 'All reports content'); // accessible name root.appendChild(container); // 4) External CSS: fetch-and-prepend, with fallback const loadExternalCss = () => { if (!Array.isArray(links) || !links.length) return Promise.resolve(); // some old R files have css includes to include/report.css but there is no include subdirectory const absHrefs = links.map(h => h.startsWith('/') // absolute → leave unchanged ? h : h.startsWith('include/') // legacy relative include/ ? `${baseDir}${h.slice(8)}` : `${baseDir}${h}` // standard relative report.css, etc. ); return Promise.allSettled( absHrefs.map(h => fetch(h).then(r => (r.ok ? r.text() : ''))) ).then(results => { const cssText = results .filter(r => r.status === 'fulfilled' && r.value) .map(r => normalizeReportHtml(r.value)) .join('\n'); const styles = document.createElement('style'); styles.textContent = cssText && cssText.length ? cssText : absHrefs.map(h => `@import url("${h}");`).join('\n'); root.insertBefore(styles, root.firstChild); }); }; // Resolve after external CSS is ready (if any) return loadExternalCss(); } // Cache of styles we've already loaded const RFV_LOADED_STYLES = new Set(); function extractLinksAndBody(fullHtml) { const doc = new DOMParser().parseFromString(fullHtml, 'text/html'); // External CSS links (e.g., ) const links = Array.from(doc.querySelectorAll('link[rel~="stylesheet"][href]')) .map(link => (link.getAttribute('href') || '').trim()) .filter(Boolean); // Inline