{"id":1596,"date":"2025-06-26T21:21:44","date_gmt":"2025-06-27T01:21:44","guid":{"rendered":"https:\/\/dmcc-series.com\/live-bracket-pro-am\/"},"modified":"2026-06-20T00:39:09","modified_gmt":"2026-06-20T04:39:09","slug":"live-bracket-pro-am","status":"publish","type":"page","link":"https:\/\/dmcc-series.com\/en\/live-bracket-pro-am\/","title":{"rendered":"Live Bracket &#8211; Pro-Am"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1596\" class=\"elementor elementor-1596 elementor-1592\" 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-8287f86 e-flex e-con-boxed e-con e-parent\" data-id=\"8287f86\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-61f951d elementor-widget__width-inherit elementor-widget elementor-widget-n-accordion\" data-id=\"61f951d\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;default_state&quot;:&quot;all_collapsed&quot;,&quot;max_items_expended&quot;:&quot;one&quot;,&quot;n_accordion_animation_duration&quot;:{&quot;unit&quot;:&quot;ms&quot;,&quot;size&quot;:400,&quot;sizes&quot;:[]}}\" data-widget_type=\"nested-accordion.default\">\n\t\t\t\t\t\t\t<div class=\"e-n-accordion\" aria-label=\"Accordion. Open links with Enter or Space, close with Escape, and navigate with Arrow Keys\">\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-1020\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"1\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-1020\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> Qualifying score <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-minus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t\t<span class='e-closed'><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-plus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" role=\"region\" aria-labelledby=\"e-n-accordion-item-1020\" class=\"elementor-element elementor-element-fffc843 e-flex e-con-boxed e-con e-child\" data-id=\"fffc843\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5651719 elementor-widget elementor-widget-html\" data-id=\"5651719\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ============================================================\r\n     CLUB CLASH \u2014 Widget Scoring via Firebase (Elementor HTML)\r\n     ============================================================ --><style>#dmmc-scoring *{box-sizing:border-box;margin:0;padding:0;}\r\n#dmmc-scoring{font-family:'Arial Narrow',Arial,sans-serif;width:100%;overflow-x:auto;}\r\n#dmmc-scoring .hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}\r\n#dmmc-scoring .hdr-title{font-size:12px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:#999;}\r\n#dmmc-scoring .live-badge{display:flex;align-items:center;gap:5px;font-size:11px;color:#999;}\r\n#dmmc-scoring .dot{width:7px;height:7px;border-radius:50%;background:#16a34a;animation:blink2 1.4s infinite;}\r\n#dmmc-scoring .updated{font-size:10px;color:#bbb;margin-bottom:8px;}\r\n@keyframes blink2{0%,100%{opacity:1}50%{opacity:0.25}}\r\n#dmmc-scoring table{width:100%;border-collapse:collapse;font-size:13px;min-width:700px;}\r\n#dmmc-scoring thead tr{background:#111;}\r\n#dmmc-scoring thead th{padding:8px;text-align:right;font-size:9px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:#aaa;white-space:nowrap;}\r\n#dmmc-scoring thead th.left{text-align:left;}\r\n#dmmc-scoring .sub-hdr{background:#1a1a1a;}\r\n#dmmc-scoring .sub-hdr th{font-size:8px;color:#555;padding:3px 8px;}\r\n#dmmc-scoring tbody tr{border-bottom:1px solid #eee;}\r\n#dmmc-scoring tbody tr:nth-child(even){background:#f9f9f9;}\r\n#dmmc-scoring tbody tr:hover{background:#f0f0f0;}\r\n#dmmc-scoring td{padding:7px 8px;text-align:right;color:#333;font-size:13px;}\r\n#dmmc-scoring .td-pos{font-weight:700;color:#111;text-align:left;}\r\n#dmmc-scoring .td-pos.p1{color:#d97706;}\r\n#dmmc-scoring .td-pos.p2{color:#64748b;}\r\n#dmmc-scoring .td-pos.p3{color:#b45309;}\r\n#dmmc-scoring .td-num{color:#aaa;font-size:11px;text-align:left;}\r\n#dmmc-scoring .td-name{font-weight:700;color:#111;text-align:left;white-space:nowrap;}\r\n#dmmc-scoring .td-sub{color:#aaa;font-size:12px;}\r\n#dmmc-scoring .score-pill{display:inline-block;background:#111;color:#fff;border-radius:3px;padding:2px 7px;font-size:12px;font-weight:700;min-width:28px;text-align:center;}\r\n#dmmc-scoring .score-pill.zero{background:#ddd;color:#999;}\r\n#dmmc-scoring .td-best{font-weight:700;color:#d97706;font-size:14px;}\r\n#dmmc-scoring .loading{text-align:center;padding:32px;color:#aaa;font-size:13px;}\r\n<\/style><div id=\"dmmc-scoring\"><div class=\"hdr\"><span class=\"hdr-title\"> qualification<\/span><span class=\"live-badge\"><span class=\"dot\"><\/span>Live<\/span><\/div><div class=\"updated\" id=\"dmmc-scoring-updated\"><\/div><div id=\"dmmc-scoring-body\"><div class=\"loading\">Connexion Firebase...<\/div><\/div><\/div><script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-app-compat.js\"><\/script><script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-database-compat.js\"><\/script><script>(function(){\r\n  const FIREBASE_URL = 'https:\/\/dmcc-contender-default-rtdb.firebaseio.com';\r\n\r\n    if (!window._dmccproamShared) {\r\n    window._dmccproamShared = firebase.initializeApp({ databaseURL: FIREBASE_URL }, 'dmccproam-shared');\r\n  }\r\n  const db = firebase.database(window._dmccproamShared);\r\n\r\n  function pill(val) {\r\n    const n = Number(val);\r\n    return `<span class=\"score-pill${n===0?' zero':''}\">${n}<\/span>`;\r\n  }\r\n\r\n  function render(rows) {\r\n    if (!rows || !rows.length) {\r\n      document.getElementById('dmmc-scoring-body').innerHTML = '<div class=\"loading\">Aucune donn\u00e9e.<\/div>';\r\n      return;\r\n    }\r\n    let html = '<table><thead>';\r\n    html += '<tr>';\r\n    html += '<th class=\"left\">POS<\/th><th class=\"left\">#<\/th><th class=\"left\">PILOTE<\/th>';\r\n    html += '<th colspan=\"5\" style=\"text-align:center;border-left:2px solid #333;\">RUN 1<\/th>';\r\n    html += '<th colspan=\"5\" style=\"text-align:center;border-left:2px solid #333;\">RUN 2<\/th>';\r\n    html += '<th style=\"border-left:2px solid #333;\">MEILLEUR<\/th>';\r\n    html += '<\/tr>';\r\n    html += '<tr class=\"sub-hdr\">';\r\n    html += '<th class=\"left\"><\/th><th class=\"left\"><\/th><th class=\"left\"><\/th>';\r\n    html += '<th style=\"border-left:2px solid #222;\">Style<\/th><th>Angle<\/th><th>Line<\/th><th>Speed<\/th><th>Total<\/th>';\r\n    html += '<th style=\"border-left:2px solid #222;\">Style<\/th><th>Angle<\/th><th>Line<\/th><th>Speed<\/th><th>Total<\/th>';\r\n    html += '<th style=\"border-left:2px solid #222;\"><\/th>';\r\n    html += '<\/tr><\/thead><tbody>';\r\n\r\n    rows.forEach(r => {\r\n      const posClass = r.pos==1?'td-pos p1':r.pos==2?'td-pos p2':r.pos==3?'td-pos p3':'td-pos';\r\n      html += '<tr>';\r\n      html += `<td class=\"${posClass}\">${r.pos}<\/td>`;\r\n      html += `<td class=\"td-num\">${r.num}<\/td>`;\r\n      html += `<td class=\"td-name\">${r.name}<\/td>`;\r\n      html += `<td class=\"td-sub\" style=\"border-left:2px solid #eee;\">${r.style1}<\/td>`;\r\n      html += `<td class=\"td-sub\">${r.angle1}<\/td>`;\r\n      html += `<td class=\"td-sub\">${r.line1}<\/td>`;\r\n      html += `<td class=\"td-sub\">${r.speed1}<\/td>`;\r\n      html += `<td>${pill(r.run1)}<\/td>`;\r\n      html += `<td class=\"td-sub\" style=\"border-left:2px solid #eee;\">${r.style2}<\/td>`;\r\n      html += `<td class=\"td-sub\">${r.angle2}<\/td>`;\r\n      html += `<td class=\"td-sub\">${r.line2}<\/td>`;\r\n      html += `<td class=\"td-sub\">${r.speed2}<\/td>`;\r\n      html += `<td>${pill(r.run2)}<\/td>`;\r\n      html += `<td class=\"td-best\" style=\"border-left:2px solid #eee;\">${r.overallBest}<\/td>`;\r\n      html += '<\/tr>';\r\n    });\r\n\r\n    html += '<\/tbody><\/table>';\r\n    document.getElementById('dmmc-scoring-body').innerHTML = html;\r\n  }\r\n\r\n  db.ref('\/dmccproam\/scoring').on('value', snap => {\r\n    const data = snap.val();\r\n    if (data) render(data);\r\n  });\r\n\r\n  db.ref('\/dmccproam\/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-scoring-updated').textContent =\r\n        'Mis \u00e0 jour : ' + d.toLocaleTimeString('fr-CA');\r\n    }\r\n  });\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-1021\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"2\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-1021\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> Qualifying results <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-minus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t\t<span class='e-closed'><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-plus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" role=\"region\" aria-labelledby=\"e-n-accordion-item-1021\" class=\"elementor-element elementor-element-ef02e28 e-con-full e-flex e-con e-child\" data-id=\"ef02e28\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-beaa6a1 elementor-widget elementor-widget-html\" data-id=\"beaa6a1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ============================================================\r\n     CLUB CLASH \u2014 Widget Qualifs via Firebase (Elementor HTML)\r\n     ============================================================ --><style>#dmmc-qualifs *{box-sizing:border-box;margin:0;padding:0;}\r\n#dmmc-qualifs{font-family:'Arial Narrow',Arial,sans-serif;width:100%;}\r\n#dmmc-qualifs .hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}\r\n#dmmc-qualifs .hdr-title{font-size:12px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:#999;}\r\n#dmmc-qualifs .live-badge{display:flex;align-items:center;gap:5px;font-size:11px;color:#999;}\r\n#dmmc-qualifs .dot{width:7px;height:7px;border-radius:50%;background:#16a34a;animation:blink 1.4s infinite;}\r\n#dmmc-qualifs .updated{font-size:10px;color:#bbb;margin-bottom:8px;}\r\n@keyframes blink{0%,100%{opacity:1}50%{opacity:0.25}}\r\n#dmmc-qualifs table{width:100%;border-collapse:collapse;font-size:13px;}\r\n#dmmc-qualifs thead tr{background:#111;color:#fff;}\r\n#dmmc-qualifs thead th{padding:8px;text-align:right;font-size:9px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:#aaa;}\r\n#dmmc-qualifs thead th.left{text-align:left;}\r\n#dmmc-qualifs tbody tr{border-bottom:1px solid #eee;}\r\n#dmmc-qualifs tbody tr:nth-child(even){background:#f9f9f9;}\r\n#dmmc-qualifs tbody tr:hover{background:#f0f0f0;}\r\n#dmmc-qualifs td{padding:7px 8px;text-align:right;color:#333;font-size:13px;}\r\n#dmmc-qualifs .td-pos{font-weight:700;color:#111;text-align:left;}\r\n#dmmc-qualifs .td-pos.p1{color:#d97706;}\r\n#dmmc-qualifs .td-pos.p2{color:#64748b;}\r\n#dmmc-qualifs .td-pos.p3{color:#b45309;}\r\n#dmmc-qualifs .td-num{color:#aaa;font-size:11px;text-align:left;}\r\n#dmmc-qualifs .td-name{font-weight:700;color:#111;text-align:left;}\r\n#dmmc-qualifs .td-sub{color:#aaa;font-size:12px;}\r\n#dmmc-qualifs .td-score{font-weight:700;color:#111;}\r\n#dmmc-qualifs .pts-pill{display:inline-block;background:#111;color:#fff;border-radius:3px;padding:1px 7px;font-size:11px;font-weight:700;}\r\n#dmmc-qualifs .pts-pill.zero{background:#ddd;color:#999;}\r\n#dmmc-qualifs .ko-sep{border-top:2px solid #cc0000!important;}\r\n#dmmc-qualifs .loading{text-align:center;padding:32px;color:#aaa;font-size:13px;}\r\n<\/style><div id=\"dmmc-qualifs\"><div class=\"hdr\"><span class=\"hdr-title\"><\/span><span class=\"live-badge\"><span class=\"dot\"><\/span>Live<\/span><\/div><div class=\"updated\" id=\"dmmc-qualifs-updated\"><\/div><div id=\"dmmc-qualifs-body\"><div class=\"loading\">Connexion Firebase...<\/div><\/div><\/div><script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-app-compat.js\"><\/script><script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-database-compat.js\"><\/script><script>(function(){\r\n  const FIREBASE_URL = 'https:\/\/dmcc-contender-default-rtdb.firebaseio.com';\r\n\r\n  if (!window._dmccproamShared) {\r\n    window._dmccproamShared = firebase.initializeApp({ databaseURL: FIREBASE_URL }, 'dmccproam-shared');\r\n  }\r\n  const db = firebase.database(window._dmccproamShared);\r\n\r\n  function pill(val, hasPts) {\r\n    const n = Number(val);\r\n    if (hasPts) return `<span class=\"pts-pill${n===0?' zero':''}\">${n}<\/span>`;\r\n    return n;\r\n  }\r\n\r\n  function render(rows) {\r\n    if (!rows || !rows.length) {\r\n      document.getElementById('dmmc-qualifs-body').innerHTML = '<div class=\"loading\">Aucune donn\u00e9e.<\/div>';\r\n      return;\r\n    }\r\n    let html = '<table><thead><tr>';\r\n    html += '<th class=\"left\">POS<\/th><th class=\"left\">#<\/th><th class=\"left\">PILOTE<\/th>';\r\n    html += '<th>SCORE<\/th><th>STYLE<\/th><th>ANGLE<\/th><th>LINE<\/th><th>PTS<\/th>';\r\n    html += '<\/tr><\/thead><tbody>';\r\n\r\n    rows.forEach((r, i) => {\r\n      const isKO = i === 12;\r\n      const posClass = r.pos==1?'td-pos p1':r.pos==2?'td-pos p2':r.pos==3?'td-pos p3':'td-pos';\r\n      html += `<tr${isKO?' class=\"ko-sep\"':''}>`;\r\n      html += `<td class=\"${posClass}\">${r.pos}<\/td>`;\r\n      html += `<td class=\"td-num\">${r.num}<\/td>`;\r\n      html += `<td class=\"td-name\">${r.name}<\/td>`;\r\n      html += `<td class=\"td-score\">${r.score}<\/td>`;\r\n      html += `<td class=\"td-sub\">${r.style}<\/td>`;\r\n      html += `<td class=\"td-sub\">${r.angle}<\/td>`;\r\n      html += `<td class=\"td-sub\">${r.line}<\/td>`;\r\n      html += `<td>${pill(r.pts, true)}<\/td>`;\r\n      html += '<\/tr>';\r\n    });\r\n\r\n    html += '<\/tbody><\/table>';\r\n    document.getElementById('dmmc-qualifs-body').innerHTML = html;\r\n  }\r\n\r\n  db.ref('\/dmccproam\/qualifs').on('value', snap => {\r\n    const data = snap.val();\r\n    if (data) render(data);\r\n  });\r\n\r\n  db.ref('\/dmccproam\/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-qualifs-updated').textContent =\r\n        'Mis \u00e0 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\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-1022\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"3\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-1022\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> TOP 16 <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-minus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t\t<span class='e-closed'><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-plus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" role=\"region\" aria-labelledby=\"e-n-accordion-item-1022\" class=\"elementor-element elementor-element-0cb714a e-flex e-con-boxed e-con e-child\" data-id=\"0cb714a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1ae3bd0 elementor-widget elementor-widget-html\" data-id=\"1ae3bd0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- DMCC PRO \u2014 Bracket Top16 (sans badge provisoire, texte noir) -->\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<\/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-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._dmccproamShared) {\r\n    try {\r\n      window._dmccproamShared = firebase.initializeApp({ databaseURL: FIREBASE_URL }, 'dmccproam-shared');\r\n    } catch(e) {\r\n      window._dmccproamShared = firebase.app('dmccproam-shared');\r\n    }\r\n  }\r\n  const db = firebase.database(window._dmccproamShared);\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':'#666');\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':'#111');\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  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  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':'#666');\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':'#111');\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    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    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    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    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    [0,1].forEach(i => {\r\n      if(c16L[i*2] && c16L[i*2+1]) makeConnLeft(svg, c16L[i*2].rightX, c16L[i*2].cy, c16L[i*2+1].cy, colX[1]);\r\n    });\r\n    if(c8L.length>=2 && c8L[0] && c8L[1]) makeConnLeft(svg, c8L[0].rightX, c8L[0].cy, c8L[1].cy, colX[2]);\r\n    if(c4L.length && c4L[0]) makeLine(svg, c4L[0].rightX, c4L[0].cy, colX[3]);\r\n\r\n    if(cFin.length && cFin[0]) makeLine(svg, cFin[0].rightX, cFin[0].cy, colX[4]);\r\n    if(c4R.length && c8R.length>=2 && c8R[0] && c8R[1] && c4R[0]) makeConnRight(svg, colX[5], c8R[0].cy, c8R[1].cy, c4R[0].rightX);\r\n    [0,1].forEach(i => {\r\n      if(c16R[i*2] && c16R[i*2+1]) 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\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('\/dmccproam\/top16').on('value', snap => {\r\n    const data = snap.val();\r\n    if (data) renderBracket(data);\r\n  });\r\n\r\n  db.ref('\/dmccproam\/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\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Qualifying score qualificationLiveConnexion Firebase&#8230; Qualifying results LiveConnexion Firebase&#8230; TOP 16 Bracket \u2014 Top 16 Live Connexion Firebase&#8230; qualificationLiveConnexion Firebase&#8230; LiveConnexion Firebase&#8230; 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,"jetpack_seo_schema_type":"","_wpcom_ai_launchpad_about_page":false,"_wpcom_ai_launchpad_gallery_page":false,"_wpcom_ai_launchpad_contact_page":false,"_wpcom_ai_launchpad_events_page":false,"_wpcom_ai_launchpad_video_page":false,"_wpcom_ai_launchpad_portfolio_piece":false,"footnotes":""},"class_list":["post-1596","page","type-page","status-publish","hentry"],"acf":[],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/Pgl5nb-pK","jetpack-related-posts":[{"id":1592,"url":"https:\/\/dmcc-series.com\/live-bracket-pro-am\/","url_meta":{"origin":1596,"position":0},"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 Live Connexion Firebase... TOP 16 Bracket \u2014 Top 16 Live Connexion Firebase... qualification Live Connexion Firebase... 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":1598,"url":"https:\/\/dmcc-series.com\/live-bracket-pro\/","url_meta":{"origin":1596,"position":1},"title":"Live Bracket &#8211; Pro","author":"C\u00e9dric Mallette","date":"June 26, 2025","format":false,"excerpt":"Pointage de Qualification Pointage qualification Live Connexion Firebase... R\u00e9sultats de Qualifications Live Connexion Firebase... Top 16 Bracket \u2014 Top 16 Live Connexion Firebase... Pointage qualification Live Connexion Firebase... 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":1596,"position":2},"title":"Live Bracket &#8211; Pro","author":"C\u00e9dric Mallette","date":"June 26, 2025","format":false,"excerpt":"Qualifying score Pointage qualificationLiveConnexion Firebase... Qualifying results LiveConnexion Firebase... Top 16 Bracket \u2014 Top 16 Live Connexion Firebase... Pointage qualificationLiveConnexion Firebase... LiveConnexion 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":3255,"url":"https:\/\/dmcc-series.com\/contender-top-16\/","url_meta":{"origin":1596,"position":3},"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":3267,"url":"https:\/\/dmcc-series.com\/en\/contender-top-16\/","url_meta":{"origin":1596,"position":4},"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":979,"url":"https:\/\/dmcc-series.com\/en\/pro-am-ranking\/","url_meta":{"origin":1596,"position":5},"title":"Pro-Am ranking","author":"C\u00e9dric Mallette","date":"February 6, 2025","format":false,"excerpt":"2021 2022 2023 2024 2025 ROUND 1ROUND 2ROUND 3ROUND 4ROUND 5POS#PILOTEQualifTop 16PosTotalQualifTop 16PosTotalQualifTop 16PosTotalQualifTop 16PosTotalQualifTop 16PosTotalTOTAL CHAMPDIFF114William Guertin5100110517647721001102284\u2013230Mathieu Beriau16886941001104488292265-19344Jeremy Bergeron188289180381580385255-2948Cedrick Papineau-L\u00e9vesque1687695882931581159221-635104Roger Besserve1581459368571168769199-85664Mathieu Hawey17647715816591581559195-89713Tim Cyr3589611581059368571191-93824Charles paradis1686692589601581259188-96969Philippe Guerard Perreault158165915813591581359177-10710941Max M\u00e9nard18038116886900200150-1341146Francis B\u00e9langer158125900250176477136-1481248Fr\u00e9d\u00e9ric Grondin002701581459168669128-1561319Antoine-Olivier St-Pierre002301581259168869128-1561451Micha\u00ebl Patenaude2581060002601581459119-16515181Pier-Luc beaudoin158115900170158959118-16616113David Lambert1581359002001581059118-16617444Shawn Poirier0017015815591581659118-16618367Hugues L\u00e9veill\u00e9e468572002300021072-2121989S\u00e9bastien Houle001901687690017069-21520824Nicolas Galarneau002001686690026069-2152162Jonathan Paquin0022015811590018059-22522302Jean-luc ricard1581559002700027059-2252350Nick Therrien0024000190001900-28424519Olivier Pelletier0021000210002200-28425823P-a Blier0026000180002300-28426854Danny Bernier0030000290002400-2842753Alex Canuel0018000220002500-28428762Vanessa Skelling0028000280002800-2842999Marc Prud'homme00290002900-2843016Kevin Major0025000240003000-284 Position and\u2026","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\/1596","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=1596"}],"version-history":[{"count":11,"href":"https:\/\/dmcc-series.com\/en\/wp-json\/wp\/v2\/pages\/1596\/revisions"}],"predecessor-version":[{"id":3808,"href":"https:\/\/dmcc-series.com\/en\/wp-json\/wp\/v2\/pages\/1596\/revisions\/3808"}],"wp:attachment":[{"href":"https:\/\/dmcc-series.com\/en\/wp-json\/wp\/v2\/media?parent=1596"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}