{"id":50440,"date":"2026-09-02T16:17:56","date_gmt":"2026-09-02T14:17:56","guid":{"rendered":"https:\/\/www.recharge.com\/blog\/fc-27-ratings-upgrades-downgrades-tracker"},"modified":"2026-09-02T17:08:10","modified_gmt":"2026-09-02T15:08:10","slug":"fc-27-ratings-upgrades-downgrades-tracker","status":"publish","type":"post","link":"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker","title":{"rendered":"FC 27 Ratings: Biggest Upgrades &amp; Downgrades"},"content":{"rendered":"\n<p>The FC 27 ratings are in \u2014 and so are the winners and losers. We captured the final FC 26 database and compared it player-for-player against FC 27: <strong>5,975 upgrades<\/strong>, <strong>3,793 downgrades<\/strong> and <strong>7,377 new faces<\/strong>, ranked below with the six per-stat changes on every card. The single biggest jump: Yan Diomande, up 18 points from 66 to 84.<\/p>\n\n\n\n<p>These are the <strong>official EA SPORTS FC 27 ratings<\/strong>, now revealed and live below. Early access starts <strong>18 September<\/strong>, worldwide launch is <strong>25 September 2026<\/strong>; the database refreshes automatically whenever EA adjusts a rating.<\/p>\n\n\n\n<div class=\"rcw-fc rcw-fcut\" id=\"rcw-fcut\">\n<style>\n.rcw-fc.rcw-fcut{\n  --rc-ink:#00373D; --rc-ink2:#0D2426; --rc-mut:#738A8C; --rc-bg:#F4F6F6; --rc-line:#E3E8E8;\n  --rc-grn:#00E070; --rc-blu:#1E8CBE; --rc-red:#C2314B;\n  font-family:\"Avenir Next\",Futura,\"Segoe UI\",system-ui,sans-serif;\n  background:var(--rc-bg); border:1px solid var(--rc-line); border-radius:16px;\n  padding:20px; color:var(--rc-ink2); line-height:1.45; max-width:100%;\n  -webkit-font-smoothing:antialiased;\n}\n.rcw-fcut, .rcw-fcut *{box-sizing:border-box}\n.rcw-fcut img{max-width:100%;border:0}\n\n\/* ---------- header ---------- *\/\n.rcw-fcut .rcw-fcut-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:0 0 14px}\n.rcw-fcut .rcw-fcut-title{margin:0;font-size:22px;line-height:1.2;font-weight:800;color:var(--rc-ink);letter-spacing:-.01em}\n.rcw-fcut .rcw-fcut-pill{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:700;white-space:nowrap;border:1px solid transparent}\n.rcw-fcut .rcw-fcut-dot{width:8px;height:8px;border-radius:999px;background:#9aa5a6;flex:none}\n.rcw-fcut .rcw-fcut-pill.is-load{background:#EDF1F1;color:var(--rc-mut);border-color:var(--rc-line)}\n.rcw-fcut .rcw-fcut-pill.is-wait{background:#FBF3D9;color:#7c5e10;border-color:#EFDFAC}\n.rcw-fcut .rcw-fcut-pill.is-wait .rcw-fcut-dot{background:#d4a72c}\n.rcw-fcut .rcw-fcut-pill.is-live{background:#DCF9EA;color:#00613C;border-color:#B2EFD0}\n.rcw-fcut .rcw-fcut-pill.is-live .rcw-fcut-dot{background:var(--rc-grn);animation:rcw-fcut-pulse 1.6s ease-in-out infinite}\n@keyframes rcw-fcut-pulse{0%,100%{box-shadow:0 0 0 0 rgba(0,224,112,.45)}55%{box-shadow:0 0 0 6px rgba(0,224,112,0)}}\n\n\/* ---------- loading \/ error \/ empty ---------- *\/\n.rcw-fcut .rcw-fcut-load{background:#fff;border:1px solid var(--rc-line);border-radius:16px;padding:34px 20px;text-align:center}\n.rcw-fcut .rcw-fcut-spin{display:inline-block;width:26px;height:26px;border-radius:999px;border:3px solid var(--rc-line);border-top-color:var(--rc-grn);animation:rcw-fcut-spin .8s linear infinite}\n@keyframes rcw-fcut-spin{to{transform:rotate(360deg)}}\n.rcw-fcut .rcw-fcut-loadtx{margin:10px 0 0;color:var(--rc-mut);font-size:13.5px;font-weight:600}\n.rcw-fcut .rcw-fcut-err{background:#fff;border:1px solid var(--rc-line);border-radius:16px;padding:28px 20px;text-align:center}\n.rcw-fcut .rcw-fcut-errtx{margin:0 0 12px;color:var(--rc-ink);font-weight:600}\n.rcw-fcut .rcw-fcut-empty{background:#fff;border:1px dashed var(--rc-line);border-radius:12px;padding:26px 16px;text-align:center;color:var(--rc-mut);font-weight:600;margin:0}\n.rcw-fcut .rcw-fcut-skel{padding:4px 0 0}\n.rcw-fcut .rcw-fcut-skrow{display:flex;align-items:center;gap:10px;padding:7px 0}\n.rcw-fcut .rcw-fcut-skav{width:36px;height:36px;border-radius:999px;flex:none;background:linear-gradient(100deg,#EDF1F1 40%,#F7FAFA 50%,#EDF1F1 60%);background-size:220% 100%;animation:rcw-fcut-shine 1.2s linear infinite}\n.rcw-fcut .rcw-fcut-skbar{height:12px;border-radius:6px;flex:1;background:linear-gradient(100deg,#EDF1F1 40%,#F7FAFA 50%,#EDF1F1 60%);background-size:220% 100%;animation:rcw-fcut-shine 1.2s linear infinite}\n@keyframes rcw-fcut-shine{to{background-position:-120% 0}}\n.rcw-fcut .rcw-fcut-skel .rcw-fcut-loadtx{text-align:center}\n\n\/* ---------- hero (state A) ---------- *\/\n.rcw-fcut .rcw-fcut-hero{position:relative;overflow:hidden;background:var(--rc-ink);border-radius:16px;padding:26px 24px;margin:0 0 12px}\n.rcw-fcut .rcw-fcut-hero::before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:\n  radial-gradient(circle at 90% 55%, transparent 52px, rgba(255,255,255,.055) 53px, rgba(255,255,255,.055) 55px, transparent 56px),\n  radial-gradient(circle at 90% 55%, transparent 96px, rgba(255,255,255,.04) 97px, rgba(255,255,255,.04) 99px, transparent 100px),\n  radial-gradient(circle at 90% 55%, rgba(255,255,255,.05) 0 4px, transparent 5px),\n  radial-gradient(circle at 8% -30%, rgba(0,224,112,.22), transparent 58%)}\n.rcw-fcut .rcw-fcut-heroin{position:relative}\n.rcw-fcut .rcw-fcut-eyebrow{margin:0 0 6px;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--rc-grn)}\n.rcw-fcut .rcw-fcut-herotitle{margin:0 0 18px;font-size:21px;line-height:1.25;font-weight:800;color:#fff;letter-spacing:-.01em;max-width:26em}\n.rcw-fcut .rcw-fcut-cdlabel{margin:0 0 8px;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.6)}\n.rcw-fcut .rcw-fcut-cd{display:flex;align-items:center;gap:8px;margin:0 0 16px}\n.rcw-fcut .rcw-fcut-cdcell{display:inline-flex;flex-direction:column;align-items:center;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:10px 14px;min-width:76px}\n.rcw-fcut .rcw-fcut-cdnum{font-size:38px;line-height:1;font-weight:800;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:.01em}\n.rcw-fcut .rcw-fcut-cdunit{margin-top:5px;font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.55)}\n.rcw-fcut .rcw-fcut-cdsep{font-size:26px;font-weight:800;color:rgba(0,224,112,.7);transform:translateY(-8px)}\n.rcw-fcut .rcw-fcut-heronote{margin:0;font-size:13.5px;color:rgba(255,255,255,.78);max-width:44em}\n\n\/* ---------- watch panel (state A) ---------- *\/\n.rcw-fcut .rcw-fcut-watch{background:#fff;border:1px solid var(--rc-line);border-radius:16px;padding:18px 18px 14px}\n.rcw-fcut .rcw-fcut-eyebrow2{margin:0 0 4px;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--rc-mut)}\n.rcw-fcut .rcw-fcut-wt{margin:0 0 6px;font-size:16.5px;font-weight:800;color:var(--rc-ink);letter-spacing:-.01em}\n.rcw-fcut .rcw-fcut-t10{list-style:none;margin:0 0 14px;padding:0}\n.rcw-fcut .rcw-fcut-t10row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--rc-line)}\n.rcw-fcut .rcw-fcut-t10row:last-child{border-bottom:0}\n.rcw-fcut .rcw-fcut-rank{width:22px;flex:none;text-align:right;font-size:13px;font-weight:800;color:#AEBCBD;font-variant-numeric:tabular-nums}\n.rcw-fcut .rcw-fcut-t10name{flex:1;min-width:0;font-weight:700;color:var(--rc-ink);font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.rcw-fcut .rcw-fcut-av{position:relative;width:36px;height:36px;flex:none;border-radius:999px;background:var(--rc-bg);border:1px solid var(--rc-line);overflow:hidden;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800}\n.rcw-fcut .rcw-fcut-av img{width:100%;height:100%;object-fit:cover;display:block}\n.rcw-fcut .rcw-fcut-av.is-fb{border-color:transparent}\n.rcw-fcut .rcw-fcut-clb{width:22px;height:22px;flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;overflow:hidden;font-size:10px;font-weight:800;color:var(--rc-mut)}\n.rcw-fcut .rcw-fcut-clb img{width:100%;height:100%;object-fit:contain;display:block}\n.rcw-fcut .rcw-fcut-clb.is-fb{background:var(--rc-bg);border:1px solid var(--rc-line)}\n.rcw-fcut .rcw-fcut-lead{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0 0 14px}\n.rcw-fcut .rcw-fcut-leadchip{background:var(--rc-bg);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:2px}\n.rcw-fcut .rcw-fcut-leadk{font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--rc-mut)}\n.rcw-fcut .rcw-fcut-leadv{align-self:flex-start;font-size:26px;line-height:1.15;font-weight:800;color:var(--rc-ink);font-variant-numeric:tabular-nums;background:linear-gradient(transparent 64%,rgba(0,224,112,.4) 0)}\n.rcw-fcut .rcw-fcut-leadn{font-size:12.5px;font-weight:600;color:var(--rc-ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.rcw-fcut .rcw-fcut-baseline{margin:0;padding-top:10px;border-top:1px solid var(--rc-line);font-size:12px;color:var(--rc-mut)}\n\n\/* ---------- OVR tier badges ---------- *\/\n.rcw-fcut .rcw-fcut-ovr{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:26px;padding:0 7px;border-radius:8px;font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;flex:none}\n.rcw-fcut .rcw-fcut-ovr-sp{background:var(--rc-ink);color:var(--rc-grn)}\n.rcw-fcut .rcw-fcut-ovr-g1{background:#F6EDCB;color:#7c5e10}\n.rcw-fcut .rcw-fcut-ovr-g2{background:#FAF4DC;color:#8a7420}\n.rcw-fcut .rcw-fcut-ovr-sv{background:#EFF2F2;color:#5F6A6B}\n.rcw-fcut .rcw-fcut-ovr-bz{background:#F3E9E1;color:#7C4F2C}\n\n\/* ---------- tabs (state B) ---------- *\/\n.rcw-fcut .rcw-fcut-tabs{display:flex;gap:6px;background:#fff;border:1px solid var(--rc-line);border-radius:999px;padding:5px;margin:0 0 12px;overflow-x:auto}\n.rcw-fcut .rcw-fcut-tab{border:0;background:transparent;border-radius:999px;padding:9px 14px;font-family:inherit;font-size:13.5px;font-weight:700;color:var(--rc-mut);cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:7px}\n.rcw-fcut .rcw-fcut-tab.is-on{background:var(--rc-grn);color:var(--rc-ink)}\n.rcw-fcut .rcw-fcut-tabct{font-size:11px;font-weight:700;background:rgba(0,55,61,.08);border-radius:999px;padding:1px 7px;font-variant-numeric:tabular-nums}\n.rcw-fcut .rcw-fcut-tab.is-on .rcw-fcut-tabct{background:rgba(0,55,61,.16)}\n\n\/* ---------- movers list (state B) ---------- *\/\n.rcw-fcut .rcw-fcut-list{background:#fff;border:1px solid var(--rc-line);border-radius:16px;overflow:hidden}\n.rcw-fcut .rcw-fcut-row{border-bottom:1px solid var(--rc-line)}\n.rcw-fcut .rcw-fcut-row:last-child{border-bottom:0}\n.rcw-fcut .rcw-fcut-rowhead{width:100%;display:flex;align-items:center;gap:10px;padding:10px 14px;border:0;background:transparent;font-family:inherit;text-align:left;cursor:pointer}\n.rcw-fcut .rcw-fcut-rowhead.no-x{cursor:default}\n.rcw-fcut .rcw-fcut-rowhead:hover{background:#FAFCFC}\n.rcw-fcut .rcw-fcut-rowinfo{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}\n.rcw-fcut .rcw-fcut-rowname{font-weight:700;color:var(--rc-ink);font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.rcw-fcut .rcw-fcut-rowsub{font-size:12px;color:var(--rc-mut);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.rcw-fcut .rcw-fcut-move{display:inline-flex;align-items:center;gap:7px;flex:none}\n.rcw-fcut .rcw-fcut-from{font-size:14px;font-weight:700;color:var(--rc-mut);font-variant-numeric:tabular-nums}\n.rcw-fcut .rcw-fcut-arrow{color:#AEBCBD;font-weight:700}\n.rcw-fcut .rcw-fcut-dl{flex:none;min-width:46px;text-align:center;border-radius:999px;padding:4px 10px;font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}\n.rcw-fcut .rcw-fcut-dl.up{background:rgba(0,224,112,.16);color:#00734A}\n.rcw-fcut .rcw-fcut-dl.dn{background:rgba(194,49,75,.12);color:var(--rc-red)}\n.rcw-fcut .rcw-fcut-dl.zr{background:#EFF2F2;color:var(--rc-mut)}\n.rcw-fcut .rcw-fcut-chev{flex:none;color:#AEBCBD;display:inline-flex;transition:transform .18s ease}\n.rcw-fcut .rcw-fcut-row.is-open .rcw-fcut-chev{transform:rotate(180deg)}\n.rcw-fcut .rcw-fcut-det{display:none;flex-wrap:wrap;gap:6px;padding:2px 14px 13px 60px;background:#FAFCFC}\n.rcw-fcut .rcw-fcut-row.is-open .rcw-fcut-det{display:flex}\n.rcw-fcut .rcw-fcut-sc{display:inline-flex;align-items:center;gap:6px;border-radius:8px;padding:5px 9px;font-size:12px;font-weight:800;border:1px solid var(--rc-line);background:#fff;color:var(--rc-mut);font-variant-numeric:tabular-nums}\n.rcw-fcut .rcw-fcut-sck{font-size:10px;font-weight:700;letter-spacing:.08em;color:var(--rc-mut)}\n.rcw-fcut .rcw-fcut-sc.up{background:rgba(0,224,112,.13);border-color:rgba(0,224,112,.35);color:#00734A}\n.rcw-fcut .rcw-fcut-sc.dn{background:rgba(194,49,75,.09);border-color:rgba(194,49,75,.28);color:var(--rc-red)}\n.rcw-fcut .rcw-fcut-count{margin:10px 0 0;text-align:center;font-size:12px;color:var(--rc-mut);font-weight:600}\n.rcw-fcut .rcw-fcut-more{display:block;margin:10px auto 0}\n\n\/* ---------- buttons ---------- *\/\n.rcw-fcut .rcw-fcut-btn-pr{display:inline-block;background:var(--rc-grn);color:var(--rc-ink) !important;font-weight:700;border-radius:999px;padding:12px 22px;text-decoration:none;border:0;font-family:inherit;font-size:14px;cursor:pointer}\n.rcw-fcut .rcw-fcut-btn-pr:hover{background:#00c95f}\n.rcw-fcut .rcw-fcut-btn-sc{display:inline-block;background:#fff;color:var(--rc-ink) !important;font-weight:700;border-radius:999px;padding:12px 22px;text-decoration:none;border:1px solid var(--rc-line);font-family:inherit;font-size:14px;cursor:pointer}\n.rcw-fcut .rcw-fcut-btn-sc:hover{border-color:#CBD6D7}\n\n\/* ---------- CTA + footer ---------- *\/\n.rcw-fcut .rcw-fcut-cta{background:#fff;border:1px solid var(--rc-line);border-radius:16px;padding:16px 18px;margin:12px 0 0;display:flex;align-items:center;gap:12px;flex-wrap:wrap}\n.rcw-fcut .rcw-fcut-cta p{margin:0;font-weight:600;color:var(--rc-ink);font-size:14.5px;flex:1 1 240px}\n.rcw-fcut .rcw-fcut-ctabtns{display:flex;gap:8px;flex-wrap:wrap}\n.rcw-fcut .rcw-fcut-foot{margin:14px 2px 0;font-size:11.5px;line-height:1.5;color:var(--rc-mut)}\n\n\/* ---------- responsive ---------- *\/\n@media (max-width:640px){\n  .rcw-fc.rcw-fcut{padding:14px}\n  .rcw-fcut .rcw-fcut-title{font-size:19px}\n  .rcw-fcut .rcw-fcut-hero{padding:20px 16px}\n  .rcw-fcut .rcw-fcut-cdcell{min-width:0;flex:1;padding:9px 8px}\n  .rcw-fcut .rcw-fcut-cdnum{font-size:29px}\n  .rcw-fcut .rcw-fcut-cdsep{display:none}\n  .rcw-fcut .rcw-fcut-cd{gap:6px}\n  .rcw-fcut .rcw-fcut-lead{grid-template-columns:1fr}\n  .rcw-fcut .rcw-fcut-rowhead{padding:10px 10px}\n  .rcw-fcut .rcw-fcut-rowsub{max-width:150px}\n  .rcw-fcut .rcw-fcut-det{padding-left:10px}\n  .rcw-fcut .rcw-fcut-from{display:none}\n  .rcw-fcut .rcw-fcut-arrow{display:none}\n}\n@media (prefers-reduced-motion:reduce){\n  .rcw-fcut *{animation:none !important;transition:none !important}\n}\n<\/style>\n<div class=\"rcw-fcut-head\">\n  <h2 class=\"rcw-fcut-title\">FC 27 Ratings Movers Tracker<\/h2>\n  <span class=\"rcw-fcut-pill is-load\" id=\"rcw-fcut-pill\"><span class=\"rcw-fcut-dot\"><\/span><span id=\"rcw-fcut-pilltx\">Checking status&hellip;<\/span><\/span>\n<\/div>\n<div class=\"rcw-fcut-main\" id=\"rcw-fcut-main\">\n  <div class=\"rcw-fcut-load\"><span class=\"rcw-fcut-spin\"><\/span><p class=\"rcw-fcut-loadtx\">Loading player database&hellip;<\/p><\/div>\n<\/div>\n<div class=\"rcw-fcut-cta\">\n  <p>Planning your FC 27 start? Gift cards for FC Points, delivered instantly:<\/p>\n  <div class=\"rcw-fcut-ctabtns\">\n    <a class=\"rcw-fcut-btn-pr\" href=\"https:\/\/www.recharge.com\/en\/gb\/playstation-store\" rel=\"noopener\">PlayStation Store<\/a>\n    <a class=\"rcw-fcut-btn-sc\" href=\"https:\/\/www.recharge.com\/en\/gb\/xbox-gift-card\" rel=\"noopener\">Xbox Gift Card<\/a>\n  <\/div>\n<\/div>\n<p class=\"rcw-fcut-foot\">Unofficial fan tool by Recharge.com &mdash; not affiliated with or endorsed by EA SPORTS. Player data: EA SPORTS FC public ratings &middot; updated <span id=\"rcw-fcut-upd\"><\/span> &middot; switches to FC 27 automatically when EA reveals the new ratings.<\/p>\n<script>eval(new TextDecoder().decode(Uint8Array.from(atob(\"CihmdW5jdGlvbiAoKSB7CiAgJ3VzZSBzdHJpY3QnOwoKICAvKiAtLS0tLS0tLS0tIGRhdGEgc291cmNlcyAoU1BFQyBsb2FkZXIsIHZlcmJhdGltKSAtLS0tLS0tLS0tICovCiAgdmFyIFJDV19TUkMgPSB7CiAgdG9wOiBbCiAgICAnaHR0cHM6Ly9jcmVhdGl2ZWdyb3VwLWJsb2ctcHJkLWV1LXdlc3QtMS1yZWNoYXJnZS1ibG9nLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDkvMDIxNjQwMzYvcmN3LWZjLXRvcC1wMS0xLnR4dCcsCiAgICAnaHR0cHM6Ly9jcmVhdGl2ZWdyb3VwLWJsb2ctcHJkLWV1LXdlc3QtMS1yZWNoYXJnZS1ibG9nLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDkvMDIxNjQwMzkvcmN3LWZjLXRvcC1wMi0xLnR4dCcKICBdLAogIHJlc3Q6IFsKICAgICdodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wOS8wMjE2NDA0MS9yY3ctZmMtcmVzdC1wMS0xLnR4dCcsCiAgICAnaHR0cHM6Ly9jcmVhdGl2ZWdyb3VwLWJsb2ctcHJkLWV1LXdlc3QtMS1yZWNoYXJnZS1ibG9nLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDkvMDIxNjQwNDMvcmN3LWZjLXJlc3QtcDItMS50eHQnLAogICAgJ2h0dHBzOi8vY3JlYXRpdmVncm91cC1ibG9nLXByZC1ldS13ZXN0LTEtcmVjaGFyZ2UtYmxvZy5zMy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA5LzAyMTY0MDQ1L3Jjdy1mYy1yZXN0LXAzLTEudHh0JywKICAgICdodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wOS8wMjE2NDA0Ny9yY3ctZmMtcmVzdC1wNC0xLnR4dCcsCiAgICAnaHR0cHM6Ly9jcmVhdGl2ZWdyb3VwLWJsb2ctcHJkLWV1LXdlc3QtMS1yZWNoYXJnZS1ibG9nLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDkvMDIxNjQwNDkvcmN3LWZjLXJlc3QtcDUtMS50eHQnLAogICAgJ2h0dHBzOi8vY3JlYXRpdmVncm91cC1ibG9nLXByZC1ldS13ZXN0LTEtcmVjaGFyZ2UtYmxvZy5zMy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA5LzAyMTY0MDUxL3Jjdy1mYy1yZXN0LXA2LTEudHh0JywKICAgICdodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wOS8wMjE2NDA1My9yY3ctZmMtcmVzdC1wNy0xLnR4dCcsCiAgICAnaHR0cHM6Ly9jcmVhdGl2ZWdyb3VwLWJsb2ctcHJkLWV1LXdlc3QtMS1yZWNoYXJnZS1ibG9nLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDkvMDIxNjQwNTYvcmN3LWZjLXJlc3QtcDgtMS50eHQnLAogICAgJ2h0dHBzOi8vY3JlYXRpdmVncm91cC1ibG9nLXByZC1ldS13ZXN0LTEtcmVjaGFyZ2UtYmxvZy5zMy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA5LzAyMTY0MDU4L3Jjdy1mYy1yZXN0LXA5LTEudHh0JywKICAgICdodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wOS8wMjE2NDEwMS9yY3ctZmMtcmVzdC1wMTAudHh0JywKICAgICdodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wOS8wMjE2NDEwMy9yY3ctZmMtcmVzdC1wMTEudHh0JwogIF0sCiAgbW92ZXJzOiAnaHR0cHM6Ly9jcmVhdGl2ZWdyb3VwLWJsb2ctcHJkLWV1LXdlc3QtMS1yZWNoYXJnZS1ibG9nLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDkvMDIxNjQxMDUvcmN3LWZjLW1vdmVycy0xLnR4dCcKfTsKICBmdW5jdGlvbiByY3dGZXRjaEpzb24odXJsKXsKICAgIHJldHVybiBmZXRjaCh1cmwpLnRoZW4oZnVuY3Rpb24ocil7CiAgICAgIGlmICghci5vaykgdGhyb3cgbmV3IEVycm9yKCdIVFRQICcgKyByLnN0YXR1cyk7CiAgICAgIHJldHVybiByLnRleHQoKTsKICAgIH0pLnRoZW4oZnVuY3Rpb24odCl7IHJldHVybiBKU09OLnBhcnNlKHQuc2xpY2UodC5pbmRleE9mKCdcbicpICsgMSkpOyB9KTsKICB9CiAgZnVuY3Rpb24gcmN3TG9hZFNldCh1cmxzKXsKICAgIHJldHVybiBQcm9taXNlLmFsbCh1cmxzLm1hcChyY3dGZXRjaEpzb24pKS50aGVuKGZ1bmN0aW9uKHBhcnRzKXsKICAgICAgdmFyIG91dCA9IHBhcnRzWzBdOwogICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKXsKICAgICAgICBvdXQucGxheWVycyA9IG91dC5wbGF5ZXJzLmNvbmNhdChwYXJ0c1tpXS5wbGF5ZXJzKTsKICAgICAgICBPYmplY3QuYXNzaWduKG91dC5jbHVicywgcGFydHNbaV0uY2x1YnMpOwogICAgICAgIE9iamVjdC5hc3NpZ24ob3V0Lm5hdGlvbnMsIHBhcnRzW2ldLm5hdGlvbnMpOwogICAgICB9CiAgICAgIHJldHVybiBvdXQ7CiAgICB9KTsKICB9CgogIC8qIC0tLS0tLS0tLS0gaGVscGVycyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gZXNjKHMpeyByZXR1cm4gU3RyaW5nKHMgPT0gbnVsbCA\/ICcnIDogcykucmVwbGFjZSgvWyY8PiInXS9nLCBmdW5jdGlvbihjKXsKICAgIHJldHVybiB7JyYnOicmYW1wOycsJzwnOicmbHQ7JywnPic6JyZndDsnLCciJzonJnF1b3Q7JywiJyI6JyYjMzk7J31bY107IH0pOyB9CgogIHZhciBUQVJHRVRfTVMgPSBEYXRlLnBhcnNlKCcyMDI2LTA5LTE4VDAwOjAwOjAwKzAyOjAwJyk7IC8qIGZpeGVkIG9mZnNldDogRFNULXByb29mICovCiAgdmFyIERFRkFVTFRfT1JERVIgPSBbJ3BhYycsJ3NobycsJ3BhcycsJ2RyaScsJ2RlZicsJ3BoeSddOwogIHZhciBTVEFUX0xBQkVMUyA9IHtwYWM6J1BBQycsc2hvOidTSE8nLHBhczonUEFTJyxkcmk6J0RSSScsZGVmOidERUYnLHBoeTonUEhZJ307CiAgdmFyIEdLX0xBQkVMUyA9IFsnRElWJywnSEFOJywnS0lDJywnUkVGJywnU1BEJywnUE9TJ107CiAgdmFyIEFWX1BBTCA9IFtbJyNERkY2RUMnLCcjMEQ2QjQ3J10sWycjRTJGMEY4JywnIzFFNkU5NiddLFsnI0Y2RUZEOScsJyM3QzVFMTAnXSxbJyNFRkU5RjcnLCcjNUY0RDhDJ10sWycjRjdFOUU0JywnIzhGNEEzMyddXTsKCiAgZnVuY3Rpb24gY291bnRkb3duUGFydHMobm93TXMpewogICAgdmFyIGxlZnQgPSBUQVJHRVRfTVMgLSBub3dNczsKICAgIGlmIChsZWZ0IDwgMCkgbGVmdCA9IDA7CiAgICB2YXIgbWlucyA9IE1hdGguZmxvb3IobGVmdCAvIDYwMDAwKTsKICAgIHJldHVybiB7IGRheXM6IE1hdGguZmxvb3IobWlucyAvIDE0NDApLCBocnM6IE1hdGguZmxvb3IobWlucyAvIDYwKSAlIDI0LCBtaW46IG1pbnMgJSA2MCwgbXNMZWZ0OiBsZWZ0IH07CiAgfQogIGZ1bmN0aW9uIHBhZDIobil7IHJldHVybiAobiA8IDEwID8gJzAnIDogJycpICsgbjsgfQogIGZ1bmN0aW9uIHRpZXJDbHMobyl7IHJldHVybiBvID49IDg3ID8gJ3NwJyA6IG8gPj0gODIgPyAnZzEnIDogbyA+PSA3NSA\/ICdnMicgOiBvID49IDY1ID8gJ3N2JyA6ICdieic7IH0KICBmdW5jdGlvbiBpbml0aWFsc09mKG5hbWUpewogICAgdmFyIHBhcnRzID0gU3RyaW5nKG5hbWUgPT0gbnVsbCA\/ICcnIDogbmFtZSkuc3BsaXQoL1xzKy8pLmZpbHRlcihCb29sZWFuKTsKICAgIGlmICghcGFydHMubGVuZ3RoKSByZXR1cm4gJz8nOwogICAgdmFyIGEgPSBwYXJ0c1swXS5jaGFyQXQoMCk7CiAgICB2YXIgYiA9IHBhcnRzLmxlbmd0aCA+IDEgPyBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXS5jaGFyQXQoMCkgOiAnJzsKICAgIHJldHVybiAoYSArIGIpLnRvVXBwZXJDYXNlKCk7CiAgfQogIGZ1bmN0aW9uIGF2Q29sb3IoaWQpeyB2YXIgbiA9IE1hdGguYWJzKHBhcnNlSW50KGlkLCAxMCkgfHwgMCk7IHJldHVybiBBVl9QQUxbbiAlIEFWX1BBTC5sZW5ndGhdOyB9CiAgZnVuY3Rpb24gc3RhdExhYmVscyhwb3MsIG9yZGVyKXsKICAgIGlmIChwb3MgPT09ICdHSycpIHJldHVybiBHS19MQUJFTFMuc2xpY2UoKTsKICAgIHJldHVybiAob3JkZXIgfHwgREVGQVVMVF9PUkRFUikubWFwKGZ1bmN0aW9uKGspeyByZXR1cm4gU1RBVF9MQUJFTFNba10gfHwgU3RyaW5nKGspLnRvVXBwZXJDYXNlKCk7IH0pOwogIH0KICBmdW5jdGlvbiBmbXRTaWduZWQobil7IHJldHVybiBuID4gMCA\/ICcrJyArIG4gOiAobiA8IDAgPyAn4oiSJyArIE1hdGguYWJzKG4pIDogJzAnKTsgfQogIGZ1bmN0aW9uIHNpZ25DbHMobil7IHJldHVybiBuID4gMCA\/ICd1cCcgOiAobiA8IDAgPyAnZG4nIDogJ3pyJyk7IH0KICBmdW5jdGlvbiBtb3ZlcktleShlKXsKICAgIGlmIChlICYmIGUuZCAhPSBudWxsKSByZXR1cm4gTWF0aC5hYnMoZS5kKTsKICAgIHJldHVybiBlICYmIGUudG8gIT0gbnVsbCA\/IGUudG8gOiAwOwogIH0KICBmdW5jdGlvbiBzb3J0TW92ZXJzKGxpc3QpewogICAgcmV0dXJuIChsaXN0IHx8IFtdKS5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYil7CiAgICAgIHZhciBkID0gbW92ZXJLZXkoYikgLSBtb3ZlcktleShhKTsKICAgICAgaWYgKGQpIHJldHVybiBkOwogICAgICByZXR1cm4gKChiICYmIGIudG8pIHx8IDApIC0gKChhICYmIGEudG8pIHx8IDApOwogICAgfSk7CiAgfQogIGZ1bmN0aW9uIGJ1aWxkTW92ZXJzTW9kZWwobXYpewogICAgcmV0dXJuIHsKICAgICAgdXA6IHNvcnRNb3ZlcnMobXYgJiYgbXYudXApLAogICAgICBkb3duOiBzb3J0TW92ZXJzKG12ICYmIG12LmRvd24pLAogICAgICBmcmVzaDogc29ydE1vdmVycyhtdiAmJiBtdlsnbmV3J10pLAogICAgICBzdGF0T3JkZXI6IChtdiAmJiBtdi5zdGF0T3JkZXIgJiYgbXYuc3RhdE9yZGVyLmxlbmd0aCA9PT0gNikgPyBtdi5zdGF0T3JkZXIgOiBERUZBVUxUX09SREVSCiAgICB9OwogIH0KICBmdW5jdGlvbiBiZXN0QnkocGxheWVycywgaWR4KXsKICAgIHZhciBiID0gbnVsbDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGxheWVycy5sZW5ndGg7IGkrKyl7CiAgICAgIHZhciBwID0gcGxheWVyc1tpXTsKICAgICAgaWYgKHAgJiYgcC5zdCAmJiB0eXBlb2YgcC5zdFtpZHhdID09PSAnbnVtYmVyJyAmJiAoIWIgfHwgcC5zdFtpZHhdID4gYi5zdFtpZHhdKSkgYiA9IHA7CiAgICB9CiAgICByZXR1cm4gYjsKICB9CiAgZnVuY3Rpb24gYnVpbGRXYXRjaE1vZGVsKHNldCl7CiAgICB2YXIgcGxheWVycyA9IChzZXQgJiYgc2V0LnBsYXllcnMpIHx8IFtdOwogICAgdmFyIGNsdWJzID0gKHNldCAmJiBzZXQuY2x1YnMpIHx8IHt9OwogICAgdmFyIHRvcDEwID0gcGxheWVycy5zbGljZSgwLCAxMCkubWFwKGZ1bmN0aW9uKHAsIGkpewogICAgICB2YXIgY2wgPSBjbHVic1tTdHJpbmcocC5jKV0gfHwge307CiAgICAgIHJldHVybiB7IGlkOiBwLmlkLCByOiBwLnIgIT0gbnVsbCA\/IHAuciA6IGkgKyAxLCBuOiBwLm4sIG86IHAubywgY2x1YjogY2wubGFiZWwgfHwgcC5sZyB8fCAnJywgY2x1YkltZzogY2wuaW1nIHx8ICcnIH07CiAgICB9KTsKICAgIHZhciBvdXRmaWVsZCA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGF5ZXJzLmxlbmd0aDsgaSsrKSBpZiAocGxheWVyc1tpXS5wICE9PSAnR0snKSBvdXRmaWVsZC5wdXNoKHBsYXllcnNbaV0pOwogICAgdmFyIGYgPSBiZXN0Qnkob3V0ZmllbGQsIDApLCBzID0gYmVzdEJ5KG91dGZpZWxkLCAxKSwgZCA9IGJlc3RCeShvdXRmaWVsZCwgNCk7CiAgICB2YXIgbGVhZGVycyA9IFtdOwogICAgaWYgKGYpIGxlYWRlcnMucHVzaCh7IGs6ICdGYXN0ZXN0JywgbjogZi5uLCB2OiBmLnN0WzBdIH0pOwogICAgaWYgKHMpIGxlYWRlcnMucHVzaCh7IGs6ICdUb3Agc2hvb3RlcicsIG46IHMubiwgdjogcy5zdFsxXSB9KTsKICAgIGlmIChkKSBsZWFkZXJzLnB1c2goeyBrOiAnQmVzdCBkZWZlbmRlcicsIG46IGQubiwgdjogZC5zdFs0XSB9KTsKICAgIHJldHVybiB7IHRvcDEwOiB0b3AxMCwgbGVhZGVyczogbGVhZGVycywgc2NyYXBlZEF0OiAoc2V0ICYmIHNldC5zY3JhcGVkQXQpIHx8ICcnIH07CiAgfQogIGZ1bmN0aW9uIHBhcnNlQmFzZWxpbmVEYXRlKG12KXsKICAgIGlmICghbXYpIHJldHVybiAnJzsKICAgIGlmIChtdi5zY3JhcGVkQXQpIHJldHVybiBtdi5zY3JhcGVkQXQ7CiAgICB2YXIgbSA9IC9cZHs0fS1cZHsyfS1cZHsyfS8uZXhlYyhTdHJpbmcobXYuYmFzZWxpbmUgfHwgJycpKTsKICAgIHJldHVybiBtID8gbVswXSA6ICcnOwogIH0KCiAgLyogLS0tLS0tLS0tLSBET00gdXRpbGl0aWVzIC0tLS0tLS0tLS0gKi8KICB2YXIgJG1haW4gPSBudWxsLCBjZFRpbWVyID0gbnVsbDsKCiAgZnVuY3Rpb24gZWwodGFnLCBjbHMsIHRleHQpewogICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7CiAgICBpZiAoY2xzKSBlLmNsYXNzTmFtZSA9IGNsczsKICAgIGlmICh0ZXh0ICE9IG51bGwpIGUudGV4dENvbnRlbnQgPSB0ZXh0OwogICAgcmV0dXJuIGU7CiAgfQogIGZ1bmN0aW9uIGNsZWFyKG5vZGUpeyB3aGlsZSAobm9kZS5maXJzdENoaWxkKSBub2RlLnJlbW92ZUNoaWxkKG5vZGUuZmlyc3RDaGlsZCk7IH0KICBmdW5jdGlvbiBzZXRQaWxsKG1vZGUsIHRleHQpewogICAgdmFyIHBpbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmN3LWZjdXQtcGlsbCcpOwogICAgdmFyIHR4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jjdy1mY3V0LXBpbGx0eCcpOwogICAgaWYgKCFwaWxsIHx8ICF0eCkgcmV0dXJuOwogICAgcGlsbC5jbGFzc05hbWUgPSAncmN3LWZjdXQtcGlsbCBpcy0nICsgbW9kZTsKICAgIHR4LnRleHRDb250ZW50ID0gdGV4dDsKICB9CiAgZnVuY3Rpb24gc2V0Rm9vdGVyRGF0ZShkKXsKICAgIHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jjdy1mY3V0LXVwZCcpOwogICAgaWYgKHMgJiYgZCkgcy50ZXh0Q29udGVudCA9IGQ7CiAgfQogIGZ1bmN0aW9uIG1rQXZhdGFyKGlkLCBuYW1lKXsKICAgIHZhciBib3ggPSBlbCgnc3BhbicsICdyY3ctZmN1dC1hdicpOwogICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwogICAgaW1nLmFsdCA9ICcnOwogICAgaW1nLmxvYWRpbmcgPSAnbGF6eSc7CiAgICBpbWcuc3JjID0gJ2h0dHBzOi8vcmF0aW5ncy1pbWFnZXMtcHJvZC5wdWxzZS5lYS5jb20vRkMyNS9mdWxsL3BsYXllci1wb3J0cmFpdHMvcCcgKyBlbmNvZGVVUklDb21wb25lbnQoaWQpICsgJy5wbmc\/cGFkZGluZz0wLjcnOwogICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbigpewogICAgICB2YXIgcGFsID0gYXZDb2xvcihpZCk7CiAgICAgIGlmIChpbWcucGFyZW50Tm9kZSA9PT0gYm94KSBib3gucmVtb3ZlQ2hpbGQoaW1nKTsKICAgICAgYm94LnRleHRDb250ZW50ID0gaW5pdGlhbHNPZihuYW1lKTsKICAgICAgYm94LnN0eWxlLmJhY2tncm91bmQgPSBwYWxbMF07CiAgICAgIGJveC5zdHlsZS5jb2xvciA9IHBhbFsxXTsKICAgICAgYm94LmNsYXNzTmFtZSA9ICdyY3ctZmN1dC1hdiBpcy1mYic7CiAgICB9OwogICAgYm94LmFwcGVuZENoaWxkKGltZyk7CiAgICByZXR1cm4gYm94OwogIH0KICBmdW5jdGlvbiBta0xvZ28odXJsLCBsYWJlbCl7CiAgICB2YXIgYm94ID0gZWwoJ3NwYW4nLCAncmN3LWZjdXQtY2xiJyk7CiAgICBib3gudGl0bGUgPSBsYWJlbCB8fCAnJzsKICAgIGZ1bmN0aW9uIGZhbGxiYWNrKCl7CiAgICAgIGNsZWFyKGJveCk7CiAgICAgIGJveC50ZXh0Q29udGVudCA9IFN0cmluZyhsYWJlbCB8fCAnPycpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpOwogICAgICBib3guY2xhc3NOYW1lID0gJ3Jjdy1mY3V0LWNsYiBpcy1mYic7CiAgICB9CiAgICBpZiAodXJsKXsKICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwogICAgICBpbWcuYWx0ID0gJyc7CiAgICAgIGltZy5sb2FkaW5nID0gJ2xhenknOwogICAgICBpbWcuc3JjID0gdXJsOwogICAgICBpbWcub25lcnJvciA9IGZhbGxiYWNrOwogICAgICBib3guYXBwZW5kQ2hpbGQoaW1nKTsKICAgIH0gZWxzZSB7CiAgICAgIGZhbGxiYWNrKCk7CiAgICB9CiAgICByZXR1cm4gYm94OwogIH0KICBmdW5jdGlvbiBjaGV2SWNvbigpewogICAgdmFyIHMgPSBlbCgnc3BhbicsICdyY3ctZmN1dC1jaGV2Jyk7CiAgICBzLmlubmVySFRNTCA9ICc8c3ZnIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDEyIDEyIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSI+PHBhdGggZD0iTTIgNGw0IDQgNC00IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPic7CiAgICByZXR1cm4gczsKICB9CiAgZnVuY3Rpb24gbG9hZGluZ0Jsb2NrKCl7CiAgICB2YXIgZCA9IGVsKCdkaXYnLCAncmN3LWZjdXQtbG9hZCcpOwogICAgZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdyY3ctZmN1dC1zcGluJykpOwogICAgZC5hcHBlbmRDaGlsZChlbCgncCcsICdyY3ctZmN1dC1sb2FkdHgnLCAnTG9hZGluZyBwbGF5ZXIgZGF0YWJhc2XigKYnKSk7CiAgICByZXR1cm4gZDsKICB9CiAgZnVuY3Rpb24gZXJyb3JCbG9jayhtc2csIHJldHJ5KXsKICAgIHZhciBkID0gZWwoJ2RpdicsICdyY3ctZmN1dC1lcnInKTsKICAgIGQuYXBwZW5kQ2hpbGQoZWwoJ3AnLCAncmN3LWZjdXQtZXJydHgnLCBtc2cpKTsKICAgIHZhciBiID0gZWwoJ2J1dHRvbicsICdyY3ctZmN1dC1idG4tc2MnLCAnUmV0cnknKTsKICAgIGIudHlwZSA9ICdidXR0b24nOwogICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJldHJ5KTsKICAgIGQuYXBwZW5kQ2hpbGQoYik7CiAgICByZXR1cm4gZDsKICB9CiAgZnVuY3Rpb24gc2tlbGV0b25CbG9jaygpewogICAgdmFyIGQgPSBlbCgnZGl2JywgJ3Jjdy1mY3V0LXNrZWwnKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKXsKICAgICAgdmFyIHIgPSBlbCgnZGl2JywgJ3Jjdy1mY3V0LXNrcm93Jyk7CiAgICAgIHIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAncmN3LWZjdXQtc2thdicpKTsKICAgICAgci5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdyY3ctZmN1dC1za2JhcicpKTsKICAgICAgZC5hcHBlbmRDaGlsZChyKTsKICAgIH0KICAgIGQuYXBwZW5kQ2hpbGQoZWwoJ3AnLCAncmN3LWZjdXQtbG9hZHR4JywgJ0xvYWRpbmcgcGxheWVyIGRhdGFiYXNl4oCmJykpOwogICAgcmV0dXJuIGQ7CiAgfQoKICAvKiAtLS0tLS0tLS0tIGJvb3QgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGluaXQoKXsKICAgICRtYWluID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jjdy1mY3V0LW1haW4nKTsKICAgIGlmICghJG1haW4pIHJldHVybjsKICAgIGxvYWRNb3ZlcnMoKTsKICB9CiAgZnVuY3Rpb24gbG9hZE1vdmVycygpewogICAgc2V0UGlsbCgnbG9hZCcsICdDaGVja2luZyBzdGF0dXPigKYnKTsKICAgIGNsZWFyKCRtYWluKTsKICAgICRtYWluLmFwcGVuZENoaWxkKGxvYWRpbmdCbG9jaygpKTsKICAgIHJjd0ZldGNoSnNvbihSQ1dfU1JDLm1vdmVycykudGhlbihmdW5jdGlvbihtdil7CiAgICAgIHNldEZvb3RlckRhdGUocGFyc2VCYXNlbGluZURhdGUobXYpKTsKICAgICAgaWYgKG12ICYmIG12LmFybWVkKSByZW5kZXJTdGF0ZUIobXYpOyBlbHNlIHJlbmRlclN0YXRlQShtdik7CiAgICB9KS5jYXRjaChmdW5jdGlvbigpewogICAgICBzZXRQaWxsKCdsb2FkJywgJ09mZmxpbmUnKTsKICAgICAgY2xlYXIoJG1haW4pOwogICAgICAkbWFpbi5hcHBlbmRDaGlsZChlcnJvckJsb2NrKCdDb3VsZG7igJl0IHJlYWNoIHRoZSByYXRpbmdzIGRhdGFiYXNlLicsIGxvYWRNb3ZlcnMpKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLSBTVEFURSBBOiB3YWl0aW5nIGZvciByZXZlYWwgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlclN0YXRlQShtdil7CiAgICBzZXRQaWxsKCd3YWl0JywgJ1dhaXRpbmcgZm9yIHJldmVhbCcpOwogICAgY2xlYXIoJG1haW4pOwoKICAgIHZhciBoZXJvID0gZWwoJ2RpdicsICdyY3ctZmN1dC1oZXJvJyk7CiAgICB2YXIgaGkgPSBlbCgnZGl2JywgJ3Jjdy1mY3V0LWhlcm9pbicpOwogICAgaGkuYXBwZW5kQ2hpbGQoZWwoJ3AnLCAncmN3LWZjdXQtZXllYnJvdycsICdSZXZlYWwgd2F0Y2gnKSk7CiAgICBoaS5hcHBlbmRDaGlsZChlbCgnaDMnLCAncmN3LWZjdXQtaGVyb3RpdGxlJywgJ0ZDIDI3IHJhdGluZ3MgaGF2ZW7igJl0IGJlZW4gcmV2ZWFsZWQgeWV0LicpKTsKICAgIHZhciBjZExhYmVsID0gZWwoJ3AnLCAncmN3LWZjdXQtY2RsYWJlbCcsICdFYXJseSBhY2Nlc3Mga2lja3Mgb2ZmIGluJyk7CiAgICBoaS5hcHBlbmRDaGlsZChjZExhYmVsKTsKICAgIHZhciBjZCA9IGVsKCdkaXYnLCAncmN3LWZjdXQtY2QnKTsKICAgIGNkLnNldEF0dHJpYnV0ZSgncm9sZScsICd0aW1lcicpOwogICAgY2Quc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ0NvdW50ZG93biB0byBGQyAyNyBlYXJseSBhY2Nlc3MnKTsKICAgIHZhciB1bml0cyA9IFtbJ2RheXMnLCAnZGF5cyddLCBbJ2hycycsICdocnMnXSwgWydtaW4nLCAnbWluJ11dOwogICAgdmFyIGRpZ2l0cyA9IHt9OwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1bml0cy5sZW5ndGg7IGkrKyl7CiAgICAgIGlmIChpKSBjZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdyY3ctZmN1dC1jZHNlcCcsICc6JykpOwogICAgICB2YXIgY2VsbCA9IGVsKCdzcGFuJywgJ3Jjdy1mY3V0LWNkY2VsbCcpOwogICAgICB2YXIgbnVtID0gZWwoJ3NwYW4nLCAncmN3LWZjdXQtY2RudW0nLCAn4oCTJyk7CiAgICAgIGNlbGwuYXBwZW5kQ2hpbGQobnVtKTsKICAgICAgY2VsbC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdyY3ctZmN1dC1jZHVuaXQnLCB1bml0c1tpXVsxXSkpOwogICAgICBkaWdpdHNbdW5pdHNbaV1bMF1dID0gbnVtOwogICAgICBjZC5hcHBlbmRDaGlsZChjZWxsKTsKICAgIH0KICAgIGhpLmFwcGVuZENoaWxkKGNkKTsKICAgIGhpLmFwcGVuZENoaWxkKGVsKCdwJywgJ3Jjdy1mY3V0LWhlcm9ub3RlJywgJ0VBIHVzdWFsbHkgcmV2ZWFscyByYXRpbmdzIDHigJMyIHdlZWtzIGJlZm9yZSBsYXVuY2gg4oCUIHRoaXMgdHJhY2tlciBmaWxscyBpdHNlbGYgdGhlIG1vbWVudCB0aGUgZGF0YWJhc2UgZmxpcHMuIEJvb2ttYXJrIHRoaXMgcGFnZS4nKSk7CiAgICBoZXJvLmFwcGVuZENoaWxkKGhpKTsKICAgICRtYWluLmFwcGVuZENoaWxkKGhlcm8pOwoKICAgIHZhciB3YXRjaCA9IGVsKCdkaXYnLCAncmN3LWZjdXQtd2F0Y2gnKTsKICAgIHdhdGNoLmFwcGVuZENoaWxkKGVsKCdwJywgJ3Jjdy1mY3V0LWV5ZWJyb3cyJywgJ1doYXQgd2XigJlyZSB3YXRjaGluZycpKTsKICAgIHZhciBib2R5ID0gZWwoJ2RpdicsICdyY3ctZmN1dC13YXRjaGJvZHknKTsKICAgIGJvZHkuYXBwZW5kQ2hpbGQoc2tlbGV0b25CbG9jaygpKTsKICAgIHdhdGNoLmFwcGVuZENoaWxkKGJvZHkpOwogICAgJG1haW4uYXBwZW5kQ2hpbGQod2F0Y2gpOwoKICAgIHN0YXJ0Q291bnRkb3duKGRpZ2l0cywgY2RMYWJlbCk7CiAgICBhcm1MYXp5V2F0Y2god2F0Y2gsIGJvZHksIG12KTsKICB9CiAgZnVuY3Rpb24gc3RhcnRDb3VudGRvd24oZGlnaXRzLCBsYWJlbEVsKXsKICAgIGlmIChjZFRpbWVyKSBjbGVhclRpbWVvdXQoY2RUaW1lcik7CiAgICBmdW5jdGlvbiBwYWludCgpewogICAgICB2YXIgcCA9IGNvdW50ZG93blBhcnRzKERhdGUubm93KCkpOwogICAgICBkaWdpdHMuZGF5cy50ZXh0Q29udGVudCA9IFN0cmluZyhwLmRheXMpOwogICAgICBkaWdpdHMuaHJzLnRleHRDb250ZW50ID0gcGFkMihwLmhycyk7CiAgICAgIGRpZ2l0cy5taW4udGV4dENvbnRlbnQgPSBwYWQyKHAubWluKTsKICAgICAgaWYgKHAubXNMZWZ0IDw9IDApewogICAgICAgIGxhYmVsRWwudGV4dENvbnRlbnQgPSAnRWFybHkgYWNjZXNzIGlzIGtpY2tpbmcgb2ZmIOKAlCByZXZlYWwgaW1taW5lbnQnOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB2YXIgd2FpdCA9IHAubXNMZWZ0ICUgNjAwMDA7CiAgICAgIGNkVGltZXIgPSBzZXRUaW1lb3V0KHBhaW50LCAod2FpdCB8fCA2MDAwMCkgKyAyNTApOwogICAgfQogICAgcGFpbnQoKTsKICB9CiAgZnVuY3Rpb24gYXJtTGF6eVdhdGNoKHdhdGNoRWwsIGJvZHksIG12KXsKICAgIHZhciBmaXJlZCA9IGZhbHNlLCBpbyA9IG51bGw7CiAgICBmdW5jdGlvbiBnbygpewogICAgICBpZiAoZmlyZWQpIHJldHVybjsKICAgICAgZmlyZWQgPSB0cnVlOwogICAgICBpZiAoaW8pIGlvLmRpc2Nvbm5lY3QoKTsKICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGdvLCB0cnVlKTsKICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgZ28sIHRydWUpOwogICAgICBsb2FkV2F0Y2goYm9keSwgbXYpOwogICAgfQogICAgaWYgKHR5cGVvZiB3aW5kb3cuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicpewogICAgICBpbyA9IG5ldyB3aW5kb3cuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZW50cmllcyl7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgIGlmIChlbnRyaWVzW2ldLmlzSW50ZXJzZWN0aW5nKXsgZ28oKTsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICB9LCB7IHJvb3RNYXJnaW46ICc0MDBweCAwcHgnIH0pOwogICAgICBpby5vYnNlcnZlKHdhdGNoRWwpOwogICAgfSBlbHNlIHsKICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGdvLCB0cnVlKTsKICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgZ28sIHRydWUpOwogICAgfQogIH0KICBmdW5jdGlvbiBsb2FkV2F0Y2goYm9keSwgbXYpewogICAgY2xlYXIoYm9keSk7CiAgICBib2R5LmFwcGVuZENoaWxkKHNrZWxldG9uQmxvY2soKSk7CiAgICByY3dMb2FkU2V0KFJDV19TUkMudG9wKS50aGVuKGZ1bmN0aW9uKHNldCl7CiAgICAgIHZhciBtb2RlbCA9IGJ1aWxkV2F0Y2hNb2RlbChzZXQpOwogICAgICBzZXRGb290ZXJEYXRlKG1vZGVsLnNjcmFwZWRBdCB8fCBwYXJzZUJhc2VsaW5lRGF0ZShtdikpOwogICAgICByZW5kZXJXYXRjaChib2R5LCBtb2RlbCwgbXYpOwogICAgfSkuY2F0Y2goZnVuY3Rpb24oKXsKICAgICAgY2xlYXIoYm9keSk7CiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZXJyb3JCbG9jaygnQ291bGRu4oCZdCBsb2FkIHRoZSBwbGF5ZXIgZGF0YWJhc2UuJywgZnVuY3Rpb24oKXsgbG9hZFdhdGNoKGJvZHksIG12KTsgfSkpOwogICAgfSk7CiAgfQogIGZ1bmN0aW9uIHJlbmRlcldhdGNoKGJvZHksIG1vZGVsLCBtdil7CiAgICBjbGVhcihib2R5KTsKICAgIGJvZHkuYXBwZW5kQ2hpbGQoZWwoJ2g0JywgJ3Jjdy1mY3V0LXd0JywgJ1RoZSBjdXJyZW50IHRvcCAxMCcpKTsKICAgIGlmICghbW9kZWwudG9wMTAubGVuZ3RoKXsKICAgICAgYm9keS5hcHBlbmRDaGlsZChlbCgncCcsICdyY3ctZmN1dC1lbXB0eScsICdObyBwbGF5ZXJzIG1hdGNoIHlvdXIgZmlsdGVycy4nKSk7CiAgICB9IGVsc2UgewogICAgICB2YXIgb2wgPSBlbCgnb2wnLCAncmN3LWZjdXQtdDEwJyk7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW9kZWwudG9wMTAubGVuZ3RoOyBpKyspewogICAgICAgIHZhciBwID0gbW9kZWwudG9wMTBbaV07CiAgICAgICAgdmFyIGxpID0gZWwoJ2xpJywgJ3Jjdy1mY3V0LXQxMHJvdycpOwogICAgICAgIGxpLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ3Jjdy1mY3V0LXJhbmsnLCBTdHJpbmcocC5yKSkpOwogICAgICAgIGxpLmFwcGVuZENoaWxkKG1rQXZhdGFyKHAuaWQsIHAubikpOwogICAgICAgIGxpLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ3Jjdy1mY3V0LXQxMG5hbWUnLCBwLm4pKTsKICAgICAgICBsaS5hcHBlbmRDaGlsZChta0xvZ28ocC5jbHViSW1nLCBwLmNsdWIpKTsKICAgICAgICBsaS5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdyY3ctZmN1dC1vdnIgcmN3LWZjdXQtb3ZyLScgKyB0aWVyQ2xzKHAubyksIFN0cmluZyhwLm8pKSk7CiAgICAgICAgb2wuYXBwZW5kQ2hpbGQobGkpOwogICAgICB9CiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQob2wpOwogICAgfQogICAgaWYgKG1vZGVsLmxlYWRlcnMubGVuZ3RoKXsKICAgICAgdmFyIGdyaWQgPSBlbCgnZGl2JywgJ3Jjdy1mY3V0LWxlYWQnKTsKICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtb2RlbC5sZWFkZXJzLmxlbmd0aDsgaisrKXsKICAgICAgICB2YXIgTCA9IG1vZGVsLmxlYWRlcnNbal07CiAgICAgICAgdmFyIGNoaXAgPSBlbCgnZGl2JywgJ3Jjdy1mY3V0LWxlYWRjaGlwJyk7CiAgICAgICAgY2hpcC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdyY3ctZmN1dC1sZWFkaycsIEwuaykpOwogICAgICAgIGNoaXAuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAncmN3LWZjdXQtbGVhZHYnLCBTdHJpbmcoTC52KSkpOwogICAgICAgIGNoaXAuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAncmN3LWZjdXQtbGVhZG4nLCBMLm4pKTsKICAgICAgICBncmlkLmFwcGVuZENoaWxkKGNoaXApOwogICAgICB9CiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZ3JpZCk7CiAgICB9CiAgICB2YXIgd2hlbiA9IG1vZGVsLnNjcmFwZWRBdCB8fCBwYXJzZUJhc2VsaW5lRGF0ZShtdik7CiAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdwJywgJ3Jjdy1mY3V0LWJhc2VsaW5lJywKICAgICAgJ0Jhc2VsaW5lOiB0aGUgcHJldmlvdXMgc2Vhc29u4oCZcyBmaW5hbCBkYXRhYmFzZSwgY2FwdHVyZWQgJyArIHdoZW4gKyAnLicpKTsKICB9CgogIC8qIC0tLS0tLS0tLS0gU1RBVEUgQjogbGl2ZSBtb3ZlcnMgLS0tLS0tLS0tLSAqLwogIHZhciBUQUJTID0gWwogICAgeyBrZXk6ICd1cCcsIGxhYmVsOiAnQmlnZ2VzdCB1cGdyYWRlcycsIGVtcHR5OiAnTm8gdXBncmFkZXMgaW4gdGhlIGRhdGFiYXNlIHlldC4nIH0sCiAgICB7IGtleTogJ2Rvd24nLCBsYWJlbDogJ0JpZ2dlc3QgZG93bmdyYWRlcycsIGVtcHR5OiAnTm8gZG93bmdyYWRlcyBpbiB0aGUgZGF0YWJhc2UgeWV0LicgfSwKICAgIHsga2V5OiAnZnJlc2gnLCBsYWJlbDogJ05ldyBmYWNlcycsIGVtcHR5OiAnTm8gbmV3IGZhY2VzIGluIHRoZSBkYXRhYmFzZSB5ZXQuJyB9CiAgXTsKICBmdW5jdGlvbiByZW5kZXJTdGF0ZUIobXYpewogICAgc2V0UGlsbCgnbGl2ZScsICdMSVZFIOKAlCBGQyAyNyBkYXRhJyk7CiAgICBzZXRGb290ZXJEYXRlKHBhcnNlQmFzZWxpbmVEYXRlKG12KSk7CiAgICB2YXIgbW9kZWwgPSBidWlsZE1vdmVyc01vZGVsKG12KTsKICAgIHZhciBhY3RpdmUgPSAndXAnOwogICAgdmFyIHNob3duID0geyB1cDogMjAsIGRvd246IDIwLCBmcmVzaDogMjAgfTsKICAgIGNsZWFyKCRtYWluKTsKCiAgICB2YXIgYmFyID0gZWwoJ2RpdicsICdyY3ctZmN1dC10YWJzJyk7CiAgICBiYXIuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3RhYmxpc3QnKTsKICAgIHZhciBwYW5lbCA9IGVsKCdkaXYnLCAncmN3LWZjdXQtcGFuZWwnKTsKICAgIHBhbmVsLnNldEF0dHJpYnV0ZSgncm9sZScsICd0YWJwYW5lbCcpOwogICAgdmFyIHRhYkVscyA9IHt9OwoKICAgIGZ1bmN0aW9uIGRyYXdUYWJzKCl7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgVEFCUy5sZW5ndGg7IGkrKyl7CiAgICAgICAgdmFyIHQgPSBUQUJTW2ldLCBiID0gdGFiRWxzW3Qua2V5XTsKICAgICAgICBiLmNsYXNzTmFtZSA9ICdyY3ctZmN1dC10YWInICsgKGFjdGl2ZSA9PT0gdC5rZXkgPyAnIGlzLW9uJyA6ICcnKTsKICAgICAgICBiLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsIGFjdGl2ZSA9PT0gdC5rZXkgPyAndHJ1ZScgOiAnZmFsc2UnKTsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gdGFiRGVmKGtleSl7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgVEFCUy5sZW5ndGg7IGkrKykgaWYgKFRBQlNbaV0ua2V5ID09PSBrZXkpIHJldHVybiBUQUJTW2ldOwogICAgICByZXR1cm4gVEFCU1swXTsKICAgIH0KICAgIGZ1bmN0aW9uIGRyYXdMaXN0KCl7CiAgICAgIGNsZWFyKHBhbmVsKTsKICAgICAgdmFyIGxpc3QgPSBtb2RlbFthY3RpdmVdOwogICAgICBpZiAoIWxpc3QubGVuZ3RoKXsKICAgICAgICBwYW5lbC5hcHBlbmRDaGlsZChlbCgncCcsICdyY3ctZmN1dC1lbXB0eScsIHRhYkRlZihhY3RpdmUpLmVtcHR5KSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHZhciBib3ggPSBlbCgnZGl2JywgJ3Jjdy1mY3V0LWxpc3QnKTsKICAgICAgdmFyIG4gPSBNYXRoLm1pbihzaG93blthY3RpdmVdLCBsaXN0Lmxlbmd0aCk7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSBib3guYXBwZW5kQ2hpbGQobW92ZXJSb3cobGlzdFtpXSwgbW9kZWwuc3RhdE9yZGVyKSk7CiAgICAgIHBhbmVsLmFwcGVuZENoaWxkKGJveCk7CiAgICAgIHBhbmVsLmFwcGVuZENoaWxkKGVsKCdwJywgJ3Jjdy1mY3V0LWNvdW50JywgJ1Nob3dpbmcgJyArIG4gKyAnIG9mICcgKyBsaXN0Lmxlbmd0aCArICcgcGxheWVycycpKTsKICAgICAgaWYgKG4gPCBsaXN0Lmxlbmd0aCl7CiAgICAgICAgdmFyIG1vcmUgPSBlbCgnYnV0dG9uJywgJ3Jjdy1mY3V0LWJ0bi1zYyByY3ctZmN1dC1tb3JlJywgJ1Nob3cgMjAgbW9yZScpOwogICAgICAgIG1vcmUudHlwZSA9ICdidXR0b24nOwogICAgICAgIG1vcmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBzaG93blthY3RpdmVdICs9IDIwOyBkcmF3TGlzdCgpOyB9KTsKICAgICAgICBwYW5lbC5hcHBlbmRDaGlsZChtb3JlKTsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gbWtUYWIodCl7CiAgICAgIHZhciBiID0gZWwoJ2J1dHRvbicsICdyY3ctZmN1dC10YWInKTsKICAgICAgYi50eXBlID0gJ2J1dHRvbic7CiAgICAgIGIuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3RhYicpOwogICAgICBiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ3Jjdy1mY3V0LXRhYnR4JywgdC5sYWJlbCkpOwogICAgICBiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ3Jjdy1mY3V0LXRhYmN0JywgU3RyaW5nKG1vZGVsW3Qua2V5XS5sZW5ndGgpKSk7CiAgICAgIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBhY3RpdmUgPSB0LmtleTsgZHJhd1RhYnMoKTsgZHJhd0xpc3QoKTsgfSk7CiAgICAgIHJldHVybiBiOwogICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBUQUJTLmxlbmd0aDsgaSsrKXsKICAgICAgdGFiRWxzW1RBQlNbaV0ua2V5XSA9IG1rVGFiKFRBQlNbaV0pOwogICAgICBiYXIuYXBwZW5kQ2hpbGQodGFiRWxzW1RBQlNbaV0ua2V5XSk7CiAgICB9CiAgICAkbWFpbi5hcHBlbmRDaGlsZChiYXIpOwogICAgJG1haW4uYXBwZW5kQ2hpbGQocGFuZWwpOwogICAgZHJhd1RhYnMoKTsKICAgIGRyYXdMaXN0KCk7CiAgfQogIGZ1bmN0aW9uIG1vdmVyUm93KGUsIG9yZGVyKXsKICAgIHZhciByb3cgPSBlbCgnZGl2JywgJ3Jjdy1mY3V0LXJvdycpOwogICAgdmFyIGhlYWQgPSBlbCgnYnV0dG9uJywgJ3Jjdy1mY3V0LXJvd2hlYWQnKTsKICAgIGhlYWQudHlwZSA9ICdidXR0b24nOwogICAgaGVhZC5hcHBlbmRDaGlsZChta0F2YXRhcihlLmlkLCBlLm4pKTsKICAgIHZhciBpbmZvID0gZWwoJ3NwYW4nLCAncmN3LWZjdXQtcm93aW5mbycpOwogICAgaW5mby5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdyY3ctZmN1dC1yb3duYW1lJywgZS5uKSk7CiAgICB2YXIgc3ViQml0cyA9IFtdOwogICAgaWYgKGUuYykgc3ViQml0cy5wdXNoKGUuYyk7CiAgICBpZiAoZS5wKSBzdWJCaXRzLnB1c2goZS5wKTsKICAgIGlmIChzdWJCaXRzLmxlbmd0aCkgaW5mby5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdyY3ctZmN1dC1yb3dzdWInLCBzdWJCaXRzLmpvaW4oJyDCtyAnKSkpOwogICAgaGVhZC5hcHBlbmRDaGlsZChpbmZvKTsKICAgIHZhciBtb3ZlID0gZWwoJ3NwYW4nLCAncmN3LWZjdXQtbW92ZScpOwogICAgbW92ZS5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdyY3ctZmN1dC1mcm9tJywgZS5mcm9tID09IG51bGwgPyAn4oCTJyA6IFN0cmluZyhlLmZyb20pKSk7CiAgICBtb3ZlLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ3Jjdy1mY3V0LWFycm93JywgJ+KGkicpKTsKICAgIG1vdmUuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAncmN3LWZjdXQtb3ZyIHJjdy1mY3V0LW92ci0nICsgdGllckNscyhlLnRvID09IG51bGwgPyAwIDogZS50byksIGUudG8gPT0gbnVsbCA\/ICc\/JyA6IFN0cmluZyhlLnRvKSkpOwogICAgaGVhZC5hcHBlbmRDaGlsZChtb3ZlKTsKICAgIGhlYWQuYXBwZW5kQ2hpbGQoZS5kID09IG51bGwKICAgICAgPyBlbCgnc3BhbicsICdyY3ctZmN1dC1kbCB1cCcsICdORVcnKQogICAgICA6IGVsKCdzcGFuJywgJ3Jjdy1mY3V0LWRsICcgKyBzaWduQ2xzKGUuZCksIGZtdFNpZ25lZChlLmQpKSk7CiAgICB2YXIgaGFzU2QgPSBlLnNkICYmIGUuc2QubGVuZ3RoOwogICAgaWYgKGhhc1NkKSBoZWFkLmFwcGVuZENoaWxkKGNoZXZJY29uKCkpOwogICAgcm93LmFwcGVuZENoaWxkKGhlYWQpOwogICAgaWYgKGhhc1NkKXsKICAgICAgaGVhZC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTsKICAgICAgdmFyIGRldCA9IG51bGw7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgIGlmICghZGV0KXsKICAgICAgICAgIGRldCA9IGVsKCdkaXYnLCAncmN3LWZjdXQtZGV0Jyk7CiAgICAgICAgICB2YXIgbGFiZWxzID0gc3RhdExhYmVscyhlLnAsIG9yZGVyKTsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZS5zZC5sZW5ndGggJiYgaSA8IDY7IGkrKyl7CiAgICAgICAgICAgIHZhciBjaGlwID0gZWwoJ3NwYW4nLCAncmN3LWZjdXQtc2MgJyArIHNpZ25DbHMoZS5zZFtpXSkpOwogICAgICAgICAgICBjaGlwLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ3Jjdy1mY3V0LXNjaycsIGxhYmVsc1tpXSkpOwogICAgICAgICAgICBjaGlwLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ3Jjdy1mY3V0LXNjdicsIGZtdFNpZ25lZChlLnNkW2ldKSkpOwogICAgICAgICAgICBkZXQuYXBwZW5kQ2hpbGQoY2hpcCk7CiAgICAgICAgICB9CiAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZGV0KTsKICAgICAgICB9CiAgICAgICAgdmFyIGlzT3BlbiA9IHJvdy5jbGFzc05hbWUuaW5kZXhPZignaXMtb3BlbicpID4gLTE7CiAgICAgICAgcm93LmNsYXNzTmFtZSA9IGlzT3BlbiA\/ICdyY3ctZmN1dC1yb3cnIDogJ3Jjdy1mY3V0LXJvdyBpcy1vcGVuJzsKICAgICAgICBoZWFkLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIGlzT3BlbiA\/ICdmYWxzZScgOiAndHJ1ZScpOwogICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgIGhlYWQuY2xhc3NOYW1lICs9ICcgbm8teCc7CiAgICB9CiAgICByZXR1cm4gcm93OwogIH0KCiAgLyogLS0tLS0tLS0tLSBydW4gKGJyb3dzZXIpIC8gZXhwb3J0IHB1cmUgQVBJIChub2RlIHNlbGYtUUEpIC0tLS0tLS0tLS0gKi8KICB2YXIgQVBJID0gewogICAgZXNjOiBlc2MsIFRBUkdFVF9NUzogVEFSR0VUX01TLCBjb3VudGRvd25QYXJ0czogY291bnRkb3duUGFydHMsIHBhZDI6IHBhZDIsCiAgICB0aWVyQ2xzOiB0aWVyQ2xzLCBpbml0aWFsc09mOiBpbml0aWFsc09mLCBhdkNvbG9yOiBhdkNvbG9yLCBzdGF0TGFiZWxzOiBzdGF0TGFiZWxzLAogICAgZm10U2lnbmVkOiBmbXRTaWduZWQsIHNpZ25DbHM6IHNpZ25DbHMsIHNvcnRNb3ZlcnM6IHNvcnRNb3ZlcnMsCiAgICBidWlsZE1vdmVyc01vZGVsOiBidWlsZE1vdmVyc01vZGVsLCBidWlsZFdhdGNoTW9kZWw6IGJ1aWxkV2F0Y2hNb2RlbCwKICAgIHBhcnNlQmFzZWxpbmVEYXRlOiBwYXJzZUJhc2VsaW5lRGF0ZSwgcmN3RmV0Y2hKc29uOiByY3dGZXRjaEpzb24sCiAgICByY3dMb2FkU2V0OiByY3dMb2FkU2V0LCBSQ1dfU1JDOiBSQ1dfU1JDCiAgfTsKICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpewogICAgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSBtb2R1bGUuZXhwb3J0cyA9IEFQSTsKICAgIHJldHVybjsKICB9CiAgaW5pdCgpOwp9KSgpOwo=\"),function(c){return c.charCodeAt(0)})))<\/script>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-the-tracker-works\">How the tracker works<\/h2>\n\n\n\n<p>EA replaces the ratings database in place rather than publishing a changelog. Because we captured the final FC 26 numbers for every player, the comparison is exact: overall change, all six face stats, plus players appearing in the database for the first time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-where-the-movement-is\">Where the movement is<\/h2>\n\n\n\n<p>Breakout seasons earn the big jumps, veterans slide a point or two, and a handful of headline downgrades dominate the discourse for a week. The interesting money is in the mid-table, where career mode and early FUT squads are built \u2014 cross-reference the <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-wonderkids-best-young-players\">wonderkids list<\/a> for the young risers, or open the full <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-player-ratings-database\">ratings database<\/a> to check any player.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-fc-27-faq\">FC 27 FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What is the biggest upgrade in FC 27?<\/h3>\n\n\n\n<p>Yan Diomande tops the risers with a +18 jump, from 66 to 84 overall. The full ranked list of all 5,975 upgrades is in the tracker above.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How are the changes calculated?<\/h3>\n\n\n\n<p>Directly: the FC 27 rating minus the final FC 26 rating we captured for the same player, for every player in both databases. Players new to FC 27 are listed separately as new faces.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Are new players included?<\/h3>\n\n\n\n<p>Yes \u2014 7,377 players who weren\u2019t in the FC 26 database appear in FC 27, listed under the New faces tab in the tracker above.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-more-fc-27\">More FC 27 on Recharge<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-player-ratings-database\">FC 27 Player Ratings Database<\/a><\/li><li><a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-player-comparison-tool\">FC 27 Player Comparison Tool<\/a><\/li><li><a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-wonderkids-best-young-players\">FC 27 Wonderkids: Best Young Players<\/a><\/li><li><a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-squad-builder\">FC 27 Squad Builder<\/a><\/li><li><a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-editions-compared-which-to-buy\">FC 27 Editions Compared: Which Should You Buy?<\/a><\/li><li><a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-points-explained-cost-calculator\">FC Points Explained + Cost Calculator<\/a><\/li><\/ul>\n\n\n\n<p><em>Unofficial fan content by Recharge.com \u2014 not affiliated with or endorsed by EA SPORTS. Player data: EA SPORTS FC public ratings database, refreshed automatically; FC 27 launches 25 September 2026.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Every FC 27 upgrade and downgrade vs FC 26, ranked \u2014 5,975 risers, 3,793 fallers and 7,377 new faces, stat by stat.<\/p>\n","protected":false},"author":49,"featured_media":50709,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"cos_headline_score":0,"cos_seo_score":0,"cos_headline_text":"","cos_headline_has_been_analyzed":false,"cos_last_analyzed_headline":[],"_hreflang_tags":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[23],"tags":[],"class_list":["post-50440","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-digital-lifestyle-old"],"jetpack_publicize_connections":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.4 (Yoast SEO v21.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>FC 27 Ratings: Biggest Upgrades &amp; Downgrades<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FC 27 Ratings: Biggest Upgrades &amp; Downgrades\" \/>\n<meta property=\"og:description\" content=\"Every FC 27 upgrade and downgrade vs FC 26, ranked \u2014 5,975 risers, 3,793 fallers and 7,377 new faces, stat by stat.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker\" \/>\n<meta property=\"og:site_name\" content=\"Recharge Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-02T14:17:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-02T15:08:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/09\/02155545\/fc27-upgrades-hero.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Conor Byrne\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker\",\"url\":\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker\",\"name\":\"FC 27 Ratings: Biggest Upgrades &amp; Downgrades\",\"isPartOf\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/en-gb\/#website\"},\"datePublished\":\"2026-09-02T14:17:56+00:00\",\"dateModified\":\"2026-09-02T15:08:10+00:00\",\"author\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/en-gb\/#\/schema\/person\/857508b94164c3cdc1f206b5c30d31a6\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.recharge.com\/blog\/en-gb\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FC 27 Ratings: Biggest Upgrades &amp; Downgrades\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.recharge.com\/blog\/en-gb\/#website\",\"url\":\"https:\/\/www.recharge.com\/blog\/en-gb\/\",\"name\":\"Recharge Blog\",\"description\":\"Everything about online safety, smart spending &amp; your digital lifestyle.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.recharge.com\/blog\/en-gb\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.recharge.com\/blog\/en-gb\/#\/schema\/person\/857508b94164c3cdc1f206b5c30d31a6\",\"name\":\"Conor Byrne\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.recharge.com\/blog\/en-gb\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/624bd2d0a75e67e81c16920493bcda346cb5cfd0f77cfdff3a72413de0254eeb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/624bd2d0a75e67e81c16920493bcda346cb5cfd0f77cfdff3a72413de0254eeb?s=96&d=mm&r=g\",\"caption\":\"Conor Byrne\"},\"description\":\"My passion for the e-commerce and fintech space started years ago with my first gaming console, giving me firsthand experience with the world of digital credit and top-ups. As a blog copywriter here at Recharge.com, I now get to use that insight to create clear, helpful content that makes navigating gift cards and online payments a breeze for our community.\",\"url\":\"https:\/\/www.recharge.com\/blog\/en-gb\/author\/conor-byrne\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"FC 27 Ratings: Biggest Upgrades &amp; Downgrades","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker","og_locale":"en_GB","og_type":"article","og_title":"FC 27 Ratings: Biggest Upgrades &amp; Downgrades","og_description":"Every FC 27 upgrade and downgrade vs FC 26, ranked \u2014 5,975 risers, 3,793 fallers and 7,377 new faces, stat by stat.","og_url":"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker","og_site_name":"Recharge Blog","article_published_time":"2026-09-02T14:17:56+00:00","article_modified_time":"2026-09-02T15:08:10+00:00","og_image":[{"width":1500,"height":1000,"url":"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/09\/02155545\/fc27-upgrades-hero.png","type":"image\/png"}],"author":"Conor Byrne","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker","url":"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker","name":"FC 27 Ratings: Biggest Upgrades &amp; Downgrades","isPartOf":{"@id":"https:\/\/www.recharge.com\/blog\/en-gb\/#website"},"datePublished":"2026-09-02T14:17:56+00:00","dateModified":"2026-09-02T15:08:10+00:00","author":{"@id":"https:\/\/www.recharge.com\/blog\/en-gb\/#\/schema\/person\/857508b94164c3cdc1f206b5c30d31a6"},"breadcrumb":{"@id":"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.recharge.com\/blog\/en-gb\/fc-27-ratings-upgrades-downgrades-tracker#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.recharge.com\/blog\/en-gb"},{"@type":"ListItem","position":2,"name":"FC 27 Ratings: Biggest Upgrades &amp; Downgrades"}]},{"@type":"WebSite","@id":"https:\/\/www.recharge.com\/blog\/en-gb\/#website","url":"https:\/\/www.recharge.com\/blog\/en-gb\/","name":"Recharge Blog","description":"Everything about online safety, smart spending &amp; your digital lifestyle.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.recharge.com\/blog\/en-gb\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.recharge.com\/blog\/en-gb\/#\/schema\/person\/857508b94164c3cdc1f206b5c30d31a6","name":"Conor Byrne","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.recharge.com\/blog\/en-gb\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/624bd2d0a75e67e81c16920493bcda346cb5cfd0f77cfdff3a72413de0254eeb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/624bd2d0a75e67e81c16920493bcda346cb5cfd0f77cfdff3a72413de0254eeb?s=96&d=mm&r=g","caption":"Conor Byrne"},"description":"My passion for the e-commerce and fintech space started years ago with my first gaming console, giving me firsthand experience with the world of digital credit and top-ups. As a blog copywriter here at Recharge.com, I now get to use that insight to create clear, helpful content that makes navigating gift cards and online payments a breeze for our community.","url":"https:\/\/www.recharge.com\/blog\/en-gb\/author\/conor-byrne"}]}},"jetpack_featured_media_url":"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/09\/02170738\/fc27-upgrades-hero.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.recharge.com\/blog\/en-gb\/wp-json\/wp\/v2\/posts\/50440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.recharge.com\/blog\/en-gb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.recharge.com\/blog\/en-gb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/en-gb\/wp-json\/wp\/v2\/users\/49"}],"replies":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/en-gb\/wp-json\/wp\/v2\/comments?post=50440"}],"version-history":[{"count":3,"href":"https:\/\/www.recharge.com\/blog\/en-gb\/wp-json\/wp\/v2\/posts\/50440\/revisions"}],"predecessor-version":[{"id":50653,"href":"https:\/\/www.recharge.com\/blog\/en-gb\/wp-json\/wp\/v2\/posts\/50440\/revisions\/50653"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/en-gb\/wp-json\/wp\/v2\/media\/50709"}],"wp:attachment":[{"href":"https:\/\/www.recharge.com\/blog\/en-gb\/wp-json\/wp\/v2\/media?parent=50440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/en-gb\/wp-json\/wp\/v2\/categories?post=50440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/en-gb\/wp-json\/wp\/v2\/tags?post=50440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}