{"id":3267,"date":"2026-05-07T23:10:27","date_gmt":"2026-05-08T03:10:27","guid":{"rendered":"https:\/\/dmcc-series.com\/contender-top-16\/"},"modified":"2026-05-16T08:27:23","modified_gmt":"2026-05-16T12:27:23","slug":"contender-top-16","status":"publish","type":"page","link":"https:\/\/dmcc-series.com\/en\/contender-top-16\/","title":{"rendered":"Contender Top 16"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3267\" class=\"elementor elementor-3267 elementor-3255\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-b952309 e-con-full e-flex e-con e-parent\" data-id=\"b952309\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e92056d elementor-widget elementor-widget-html\" data-id=\"e92056d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- DMMC CONTENDER \u2014 Bracket Top16 v4 -->\r\n<style>\r\n#dmmc-bracket *{box-sizing:border-box;margin:0;padding:0;}\r\n#dmmc-bracket{font-family:'Arial Narrow',Arial,sans-serif;background:#fff;padding:16px;overflow-x:auto;}\r\n#dmmc-bracket .hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}\r\n#dmmc-bracket .hdr-title{font-size:12px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:#999;}\r\n#dmmc-bracket .live-badge{display:flex;align-items:center;gap:5px;font-size:11px;color:#999;}\r\n#dmmc-bracket .dot{width:7px;height:7px;border-radius:50%;background:#16a34a;animation:blk 1.4s infinite;}\r\n#dmmc-bracket .updated{font-size:10px;color:#bbb;margin-bottom:12px;}\r\n@keyframes blk{0%,100%{opacity:1}50%{opacity:0.25}}\r\n#dmmc-bracket .loading{text-align:center;padding:40px;color:#aaa;font-size:13px;}\r\n#dmmc-bracket .badge-provisoire{display:inline-flex;align-items:center;gap:6px;background:#fff3cd;color:#92400e;border:1px solid #f59e0b;border-radius:4px;padding:4px 10px;font-size:11px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;margin-bottom:10px;}\r\n#dmmc-bracket .badge-final{display:inline-flex;align-items:center;gap:6px;background:#dcfce7;color:#166534;border:1px solid #16a34a;border-radius:4px;padding:4px 10px;font-size:11px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;margin-bottom:10px;}\r\n<\/style>\r\n\r\n<div id=\"dmmc-bracket\">\r\n  <div class=\"hdr\">\r\n    <span class=\"hdr-title\">Bracket \u2014 Top 16<\/span>\r\n    <span class=\"live-badge\"><span class=\"dot\"><\/span>Live<\/span>\r\n  <\/div>\r\n  <div class=\"updated\" id=\"dmmc-bracket-updated\"><\/div>\r\n  <div id=\"dmmc-bracket-badge\"><\/div>\r\n  <div id=\"dmmc-bracket-body\"><div class=\"loading\">Connexion Firebase...<\/div><\/div>\r\n<\/div>\r\n\r\n<script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-app-compat.js\"><\/script>\r\n<script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-database-compat.js\"><\/script>\r\n<script>\r\n(function(){\r\n  const FIREBASE_URL = 'https:\/\/dmcc-contender-default-rtdb.firebaseio.com';\r\n  if (!window._dmmcFB4) {\r\n    window._dmmcFB4 = firebase.initializeApp({ databaseURL: FIREBASE_URL }, 'dmmc-b4-' + Date.now());\r\n  }\r\n  const db = firebase.database(window._dmmcFB4);\r\n\r\n  const SLOT_H = 30, GAP = 2, MATCH_H = SLOT_H*2+GAP;\r\n  const COL_W = 160, CONN_W = 28, TOP_PAD = 36, L_PAD = 16;\r\n  const MATCH_GAP = 18;\r\n  const FF = \"'Arial Narrow',Arial,sans-serif\";\r\n\r\n  function ns(tag){ return document.createElementNS('http:\/\/www.w3.org\/2000\/svg',tag); }\r\n\r\n  function makeSlot(svg, x, y, driver, isWinner, isTbd) {\r\n    const rect = ns('rect');\r\n    rect.setAttribute('x',x); rect.setAttribute('y',y);\r\n    rect.setAttribute('width',COL_W); rect.setAttribute('height',SLOT_H);\r\n    rect.setAttribute('rx',3);\r\n    rect.setAttribute('fill', isTbd?'#fafafa': isWinner?'#111':'#f5f5f5');\r\n    rect.setAttribute('stroke','#e0e0e0'); rect.setAttribute('stroke-width','0.5');\r\n    svg.appendChild(rect);\r\n\r\n    if (!isTbd && driver) {\r\n      const seed = ns('text');\r\n      seed.setAttribute('x',x+7); seed.setAttribute('y',y+SLOT_H\/2+5);\r\n      seed.setAttribute('font-size','10');\r\n      seed.setAttribute('fill', isWinner?'#888':'#ccc');\r\n      seed.setAttribute('font-family',FF);\r\n      seed.textContent = driver.seed;\r\n      svg.appendChild(seed);\r\n\r\n      const name = ns('text');\r\n      name.setAttribute('x',x+22); name.setAttribute('y',y+SLOT_H\/2+5);\r\n      name.setAttribute('font-size','12');\r\n      name.setAttribute('fill', isWinner?'#fff':'#bbb');\r\n      name.setAttribute('font-weight', isWinner?'700':'400');\r\n      name.setAttribute('font-family',FF);\r\n      const maxChars = Math.floor((COL_W-28)\/7);\r\n      name.textContent = driver.name.length > maxChars ? driver.name.slice(0,maxChars-1)+'\u2026' : driver.name;\r\n      svg.appendChild(name);\r\n    } else {\r\n      const tbd = ns('text');\r\n      tbd.setAttribute('x',x+10); tbd.setAttribute('y',y+SLOT_H\/2+5);\r\n      tbd.setAttribute('font-size','11'); tbd.setAttribute('fill','#ccc');\r\n      tbd.setAttribute('font-style','italic'); tbd.setAttribute('font-family',FF);\r\n      tbd.textContent = 'TBD';\r\n      svg.appendChild(tbd);\r\n    }\r\n  }\r\n\r\n  function makeMatchup(svg, x, y, match) {\r\n    const dA = match ? match.a : null;\r\n    const dB = match ? match.b : null;\r\n    makeSlot(svg, x, y,             dA, dA&&dA.winner, !dA);\r\n    makeSlot(svg, x, y+SLOT_H+GAP, dB, dB&&dB.winner, !dB);\r\n    return { leftX: x, rightX: x+COL_W, cy: y+MATCH_H\/2 };\r\n  }\r\n\r\n  \/\/ Connecteur gauche: sort de la droite du slot, courbe vers la droite\r\n  function makeConnLeft(svg, x1, cy1, cy2, x2) {\r\n    const midX = x1 + CONN_W\/2;\r\n    const p = ns('path');\r\n    p.setAttribute('fill','none'); p.setAttribute('stroke','#ccc'); p.setAttribute('stroke-width','1.5');\r\n    p.setAttribute('d',`M${x1} ${cy1} H${midX} V${cy2} M${midX} ${(cy1+cy2)\/2} H${x2}`);\r\n    svg.insertBefore(p, svg.firstChild);\r\n  }\r\n\r\n  \/\/ Connecteur droite: sort de la gauche du slot, courbe vers la gauche\r\n  function makeConnRight(svg, x1, cy1, cy2, x2) {\r\n    const midX = x1 - CONN_W\/2;\r\n    const p = ns('path');\r\n    p.setAttribute('fill','none'); p.setAttribute('stroke','#ccc'); p.setAttribute('stroke-width','1.5');\r\n    p.setAttribute('d',`M${x1} ${cy1} H${midX} V${cy2} M${midX} ${(cy1+cy2)\/2} H${x2}`);\r\n    svg.insertBefore(p, svg.firstChild);\r\n  }\r\n\r\n  function makeLine(svg, x1, y1, x2) {\r\n    const p = ns('path');\r\n    p.setAttribute('fill','none'); p.setAttribute('stroke','#ccc'); p.setAttribute('stroke-width','1.5');\r\n    p.setAttribute('d',`M${x1} ${y1} H${x2}`);\r\n    svg.insertBefore(p, svg.firstChild);\r\n  }\r\n\r\n  function makeLabel(svg, x, y, text) {\r\n    const t = ns('text');\r\n    t.setAttribute('x',x); t.setAttribute('y',y);\r\n    t.setAttribute('font-size','10'); t.setAttribute('fill','#bbb');\r\n    t.setAttribute('letter-spacing','1'); t.setAttribute('font-family',FF);\r\n    t.setAttribute('text-anchor','middle');\r\n    t.textContent = text.toUpperCase();\r\n    svg.appendChild(t);\r\n  }\r\n\r\n  function makeBox(svg, x, y, w, title, titleColor, items, useMedal) {\r\n    const pad=10, rowH=26, titleH=20;\r\n    const boxH = titleH + items.length*rowH + pad*2;\r\n    const bg = ns('rect');\r\n    bg.setAttribute('x',x); bg.setAttribute('y',y);\r\n    bg.setAttribute('width',w); bg.setAttribute('height',boxH);\r\n    bg.setAttribute('rx',4); bg.setAttribute('fill','#f8f8f8');\r\n    bg.setAttribute('stroke','#e5e5e5'); bg.setAttribute('stroke-width','0.5');\r\n    svg.appendChild(bg);\r\n\r\n    const tt = ns('text');\r\n    tt.setAttribute('x',x+pad); tt.setAttribute('y',y+pad+10);\r\n    tt.setAttribute('font-size','9'); tt.setAttribute('fill',titleColor||'#aaa');\r\n    tt.setAttribute('letter-spacing','1'); tt.setAttribute('font-family',FF);\r\n    tt.textContent = title;\r\n    svg.appendChild(tt);\r\n\r\n    const medals = ['#f59e0b','#94a3b8','#c2692a','#4a9d8f'];\r\n\r\n    items.forEach((item,i) => {\r\n      const ry = y+pad+titleH+i*rowH;\r\n      if (useMedal) {\r\n        const c = ns('circle');\r\n        c.setAttribute('cx',x+pad+9); c.setAttribute('cy',ry+12);\r\n        c.setAttribute('r',9); c.setAttribute('fill',medals[i]||'#aaa');\r\n        svg.appendChild(c);\r\n        const pt = ns('text');\r\n        pt.setAttribute('x',x+pad+9); pt.setAttribute('y',ry+16);\r\n        pt.setAttribute('text-anchor','middle'); pt.setAttribute('font-size','9');\r\n        pt.setAttribute('fill','#fff'); pt.setAttribute('font-weight','700');\r\n        pt.setAttribute('font-family',FF); pt.textContent = item.pos;\r\n        svg.appendChild(pt);\r\n        const nt = ns('text');\r\n        nt.setAttribute('x',x+pad+24); nt.setAttribute('y',ry+16);\r\n        nt.setAttribute('font-size','12'); nt.setAttribute('fill','#333');\r\n        nt.setAttribute('font-family',FF); nt.textContent = item.name;\r\n        svg.appendChild(nt);\r\n      } else {\r\n        const dr = ns('rect');\r\n        dr.setAttribute('x',x+pad); dr.setAttribute('y',ry+1);\r\n        dr.setAttribute('width',w-pad*2); dr.setAttribute('height',SLOT_H);\r\n        dr.setAttribute('rx',2);\r\n        dr.setAttribute('fill',item.winner?'#111':'#eee');\r\n        dr.setAttribute('stroke','#ddd'); dr.setAttribute('stroke-width','0.5');\r\n        svg.appendChild(dr);\r\n        const sd = ns('text');\r\n        sd.setAttribute('x',x+pad+6); sd.setAttribute('y',ry+SLOT_H\/2+6);\r\n        sd.setAttribute('font-size','10'); sd.setAttribute('fill',item.winner?'#888':'#ccc');\r\n        sd.setAttribute('font-family',FF); sd.textContent = item.seed;\r\n        svg.appendChild(sd);\r\n        const nm = ns('text');\r\n        nm.setAttribute('x',x+pad+20); nm.setAttribute('y',ry+SLOT_H\/2+6);\r\n        nm.setAttribute('font-size','12');\r\n        nm.setAttribute('fill',item.winner?'#fff':'#bbb');\r\n        nm.setAttribute('font-weight',item.winner?'700':'400');\r\n        nm.setAttribute('font-family',FF); nm.textContent = item.name;\r\n        svg.appendChild(nm);\r\n      }\r\n    });\r\n    return boxH;\r\n  }\r\n\r\n  function renderBracket(data) {\r\n    \/\/ Badge provisoire\/final\r\n    const badgeEl = document.getElementById(\"dmmc-bracket-badge\");\r\n    const lang = (document.documentElement.lang || 'fr').substring(0,2).toLowerCase();\r\n    const txt = {\r\n      final:      { fr: '\u2713 Ordre final', en: '\u2713 Final order' },\r\n      provisoire: { fr: '\u26a0 Ordre provisoire \u2014 qualifications en cours', en: '\u26a0 Provisional order \u2014 qualifying in progress' }\r\n    };\r\n    if (data.isFinal) {\r\n      badgeEl.innerHTML = '<span class=\"badge-final\">' + txt.final[lang] + '<\/span>';\r\n    } else {\r\n      badgeEl.innerHTML = '<span class=\"badge-provisoire\">' + txt.provisoire[lang] + '<\/span>';\r\n    }\r\n    const t16L = data.top16Left   || [];\r\n    const t16R = data.top16Right  || [];\r\n    const t8L  = data.top8Left    || [];\r\n    const t8R  = data.top8Right   || [];\r\n    const f4L  = data.final4Left  || [];\r\n    const f4R  = data.final4Right || [];\r\n    const fin  = data.finale      || [];\r\n    const p3   = data.place3      || [];\r\n    const res  = data.resultat    || [];\r\n\r\n    const nCols = 7;\r\n    const bottomPad = 150;\r\n    const matchRows = 4;\r\n    const bracketH = TOP_PAD + matchRows*(MATCH_H+MATCH_GAP);\r\n    const totalH = bracketH + bottomPad;\r\n    const totalW = L_PAD*2 + nCols*COL_W + 6*CONN_W;\r\n\r\n    const svg = ns('svg');\r\n    svg.setAttribute('viewBox',`0 0 ${totalW} ${totalH}`);\r\n    svg.setAttribute('width', totalW);\r\n    svg.setAttribute('height', totalH);\r\n\r\n    \/\/ Colonne X positions\r\n    const colX = [];\r\n    let cx = L_PAD;\r\n    for (let i=0;i<nCols;i++) {\r\n      colX.push(cx);\r\n      cx += COL_W + (i<nCols-1?CONN_W:0);\r\n    }\r\n\r\n    const labels = ['Top 16','Top 8','Final 4','Finale','Final 4','Top 8','Top 16'];\r\n    labels.forEach((l,i) => makeLabel(svg, colX[i]+COL_W\/2, TOP_PAD-14, l));\r\n\r\n    function getY(matchIdx, total) {\r\n      const available = bracketH - TOP_PAD;\r\n      const sp = available \/ total;\r\n      return TOP_PAD + matchIdx*sp + (sp-MATCH_H)\/2;\r\n    }\r\n\r\n    \/\/ Draw gauche: sort par la droite du slot\r\n    function drawRoundLeft(colIdx, matches, total) {\r\n      const arr = matches.length ? matches : Array(total).fill(null);\r\n      return arr.map((m,i) => {\r\n        const y = getY(i, total);\r\n        return makeMatchup(svg, colX[colIdx], y, m);\r\n      });\r\n    }\r\n\r\n    \/\/ Draw droite: miroir \u2014 les slots sont align\u00e9s \u00e0 droite de leur colonne\r\n    function drawRoundRight(colIdx, matches, total) {\r\n      const arr = matches.length ? matches : Array(total).fill(null);\r\n      return arr.map((m,i) => {\r\n        const y = getY(i, total);\r\n        return makeMatchup(svg, colX[colIdx], y, m);\r\n      });\r\n    }\r\n\r\n    const c16L = drawRoundLeft(0, t16L, 4);\r\n    const c8L  = drawRoundLeft(1, t8L,  2);\r\n    const c4L  = drawRoundLeft(2, f4L,  1);\r\n    const cFin = drawRoundLeft(3, fin,  1);\r\n    const c4R  = drawRoundRight(4, f4R,  1);\r\n    const c8R  = drawRoundRight(5, t8R,  2);\r\n    const c16R = drawRoundRight(6, t16R, 4);\r\n\r\n    \/\/ Connecteurs GAUCHE (vers la droite)\r\n    [0,1].forEach(i => makeConnLeft(svg, c16L[i*2].rightX, c16L[i*2].cy, c16L[i*2+1].cy, c8L[i] ? colX[1] : colX[1]));\r\n    if(c8L.length>=2) makeConnLeft(svg, c8L[0].rightX, c8L[0].cy, c8L[1].cy, colX[2]);\r\n    if(c4L.length) makeLine(svg, c4L[0].rightX, c4L[0].cy, colX[3]);\r\n\r\n    \/\/ Connecteurs DROITE (vers la gauche \u2014 miroir)\r\n    if(cFin.length) makeLine(svg, cFin[0].rightX, cFin[0].cy, colX[4]);\r\n    if(c4R.length&&c8R.length>=2) makeConnRight(svg, colX[5], c8R[0].cy, c8R[1].cy, c4R[0].rightX);\r\n    [0,1].forEach(i => makeConnRight(svg, colX[6], c16R[i*2].cy, c16R[i*2+1].cy, c8R[i] ? c8R[i].rightX : colX[5]+COL_W));\r\n\r\n    \/\/ Boxes en bas centr\u00e9es\r\n    const byBase = bracketH + 14;\r\n    const boxW = 210;\r\n    const totalBoxW = boxW*2 + 20;\r\n    const startX = totalW\/2 - totalBoxW\/2;\r\n\r\n    if (p3.length) {\r\n      const m = p3[0];\r\n      const items = [m.a, m.b].filter(Boolean);\r\n      makeBox(svg, startX, byBase, boxW, '3E PLACE BATTLE', '#f59e0b', items, false);\r\n    }\r\n\r\n    if (res.length) {\r\n      makeBox(svg, startX+boxW+20, byBase, boxW, 'RESULTAT FINALE', '#aaa', res, true);\r\n    }\r\n\r\n    document.getElementById('dmmc-bracket-body').innerHTML = '';\r\n    document.getElementById('dmmc-bracket-body').appendChild(svg);\r\n  }\r\n\r\n  db.ref('\/dmcc\/top16').on('value', snap => {\r\n    const data = snap.val();\r\n    if (data) renderBracket(data);\r\n  });\r\n\r\n  db.ref('\/dmmc\/updatedAt').on('value', snap => {\r\n    const t = snap.val();\r\n    if (t) {\r\n      const d = new Date(t);\r\n      document.getElementById('dmmc-bracket-updated').textContent =\r\n        'Mis a jour : ' + d.toLocaleTimeString('fr-CA');\r\n    }\r\n  });\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-3d9d915 e-flex e-con-boxed e-con e-parent\" data-id=\"3d9d915\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Bracket \u2014 Top 16 Live Connexion Firebase&#8230;<\/p>\n","protected":false},"author":233903676,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"footnotes":""},"class_list":["post-3267","page","type-page","status-publish","hentry"],"acf":[],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/Pgl5nb-QH","jetpack-related-posts":[{"id":3255,"url":"https:\/\/dmcc-series.com\/contender-top-16\/","url_meta":{"origin":3267,"position":0},"title":"Contender Top 16","author":"C\u00e9dric Mallette","date":"May 7, 2026","format":false,"excerpt":"Bracket \u2014 Top 16 Live Connexion Firebase...","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1592,"url":"https:\/\/dmcc-series.com\/live-bracket-pro-am\/","url_meta":{"origin":3267,"position":1},"title":"Live Bracket &#8211; Pro-Am","author":"C\u00e9dric Mallette","date":"June 26, 2025","format":false,"excerpt":"Pointage de Qualification qualification Live Connexion Firebase... R\u00e9sultats de Qualifications Points de qualification Live Connexion Firebase... TOP 16 Bracket \u2014 Top 16 Live Connexion Firebase... qualification Live Connexion Firebase... Points de qualification Live Connexion Firebase... Bracket \u2014 Top 16 Live Connexion Firebase...","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1596,"url":"https:\/\/dmcc-series.com\/en\/live-bracket-pro-am\/","url_meta":{"origin":3267,"position":2},"title":"Live Bracket &#8211; Pro-Am","author":"C\u00e9dric Mallette","date":"June 26, 2025","format":false,"excerpt":"Qualifying score qualificationLiveConnexion Firebase... Qualifying results Points de qualificationLiveConnexion Firebase... TOP 16 Bracket \u2014 Top 16 Live Connexion Firebase... qualificationLiveConnexion Firebase... Points de qualificationLiveConnexion Firebase... Bracket \u2014 Top 16 Live Connexion Firebase...","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1598,"url":"https:\/\/dmcc-series.com\/live-bracket-pro\/","url_meta":{"origin":3267,"position":3},"title":"Live Bracket &#8211; Pro","author":"C\u00e9dric Mallette","date":"June 26, 2025","format":false,"excerpt":"Pointage de Qualification R\u00e9sultats de qualification Live Connexion Firebase... R\u00e9sultats de Qualifications Points de qualification Live Connexion Firebase... Top 16 Bracket \u2014 Top 16 Live Connexion Firebase... R\u00e9sultats de qualification Live Connexion Firebase... Points de qualification Live Connexion Firebase... Bracket \u2014 Top 16 Live Connexion Firebase...","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1602,"url":"https:\/\/dmcc-series.com\/en\/live-bracket-pro\/","url_meta":{"origin":3267,"position":4},"title":"Live Bracket &#8211; Pro","author":"C\u00e9dric Mallette","date":"June 26, 2025","format":false,"excerpt":"Qualifying score R\u00e9sultats de qualificationLiveConnexion Firebase... Qualifying results Points de qualificationLiveConnexion Firebase... Top 16 Bracket \u2014 Top 16 Live Connexion Firebase... R\u00e9sultats de qualificationLiveConnexion Firebase... Points de qualificationLiveConnexion Firebase... Bracket \u2014 Top 16 Live Connexion Firebase...","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3226,"url":"https:\/\/dmcc-series.com\/contender-qualification\/","url_meta":{"origin":3267,"position":5},"title":"Contender Qualification","author":"C\u00e9dric Mallette","date":"May 7, 2026","format":false,"excerpt":"R\u00e9sultat Qualification Live Connexion Firebase... Pointage Qualification Live Connexion Firebase...","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/dmcc-series.com\/en\/wp-json\/wp\/v2\/pages\/3267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dmcc-series.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dmcc-series.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dmcc-series.com\/en\/wp-json\/wp\/v2\/users\/233903676"}],"replies":[{"embeddable":true,"href":"https:\/\/dmcc-series.com\/en\/wp-json\/wp\/v2\/comments?post=3267"}],"version-history":[{"count":7,"href":"https:\/\/dmcc-series.com\/en\/wp-json\/wp\/v2\/pages\/3267\/revisions"}],"predecessor-version":[{"id":3377,"href":"https:\/\/dmcc-series.com\/en\/wp-json\/wp\/v2\/pages\/3267\/revisions\/3377"}],"wp:attachment":[{"href":"https:\/\/dmcc-series.com\/en\/wp-json\/wp\/v2\/media?parent=3267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}