{"id":1941,"date":"2026-06-08T12:59:03","date_gmt":"2026-06-08T12:59:03","guid":{"rendered":"https:\/\/allenglish4u.com\/cambridge-ket-1-test-4-rw\/"},"modified":"2026-07-05T02:44:34","modified_gmt":"2026-07-05T02:44:34","slug":"cambridge-ket-1-test-4-rw","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/cambridge-ket-1-test-4-rw\/","title":{"rendered":"Cambridge KET 1 \u2014 Test 4 Reading &#038; Writing"},"content":{"rendered":"\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400%3B500%3B600%3B700%3B800&family=Fraunces:opsz,wght@9..144,700&display=swap');\n\n\/* escape WP wrapper *\/\n.entry-content,.wp-block-post-content,.is-layout-constrained{max-width:none !important;width:auto !important;margin-left:0 !important;margin-right:0 !important;padding-left:0 !important;padding-right:0 !important;}\n.wp-block-post-title{display:none !important;}\n\n:root{\n  --accent-1:#F97316;\n  --accent-2:#F43F5E;\n  --gold:#F9C74F;\n  --green:#10B981;\n  --red:#EF4444;\n  --light-1:#FFF7ED;\n  --light-2:#FFFBF5;\n  --white:#FFFFFF;\n  --text:#0F172A;\n  --muted:#475569;\n  --subtle:#64748B;\n  --border:#E2E8F0;\n  --dark-1:#1B0F02;\n  --dark-2:#2D1A06;\n  --r-10:10px; --r-16:16px; --r-22:22px;\n  --sh-card:0 2px 8px rgba(0,0,0,.06);\n  --sh-lg:0 12px 40px rgba(0,0,0,.12);\n}\n*{margin:0;padding:0;box-sizing:border-box}\nhtml{scroll-behavior:smooth}\nbody{\n  font-family:'Plus Jakarta Sans',system-ui,sans-serif !important;\n  color:var(--text);\n  background:var(--light-2);\n  -webkit-font-smoothing:antialiased;\n  overflow-x:hidden;\n}\n.serif{font-family:'Fraunces',Georgia,serif !important;font-weight:700;letter-spacing:-.01em}\n.wrap{max-width:1080px;margin:0 auto;padding:0 24px}\na{color:inherit;text-decoration:none}\nbutton{font-family:inherit !important;cursor:pointer;border:none;background:none}\n\n\/* HEADER (same pattern as cambridge index) *\/\n.header{position:fixed;top:0;left:0;right:0;z-index:100;transition:background .28s ease,box-shadow .28s ease;border-bottom:1px solid transparent;}\n.header.solid{background:rgba(255,255,255,.92);backdrop-filter:saturate(180%) blur(16px);border-bottom:1px solid var(--border);box-shadow:0 1px 0 rgba(15,23,42,.02);}\n.header-inner{display:flex;align-items:center;gap:28px;height:72px;max-width:1200px;margin:0 auto;padding:0 24px}\n.brand{display:flex;align-items:center;gap:11px;flex-shrink:0}\n.brand img{width:40px;height:40px;border-radius:11px;object-fit:cover;box-shadow:var(--sh-card)}\n.brand-name{font-weight:800;font-size:18px;letter-spacing:-.02em;color:#fff;transition:color .28s ease}\n.header.solid .brand-name{color:var(--text)}\n.nav{display:flex;align-items:center;gap:4px;margin-left:8px}\n.nav a{position:relative;padding:9px 13px;font-size:14.5px;font-weight:600;color:rgba(255,255,255,.82);border-radius:var(--r-10);transition:color .16s ease,background .16s ease;}\n.nav a:hover{color:#fff;background:rgba(255,255,255,.08)}\n.header.solid .nav a{color:var(--muted)}\n.header.solid .nav a:hover{color:var(--text);background:var(--light-1)}\n.header-right{margin-left:auto;display:flex;align-items:center;gap:10px}\n.btn-back{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:999px;font-weight:700;font-size:14px;background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.22);transition:background .16s ease}\n.btn-back:hover{background:rgba(255,255,255,.22)}\n.header.solid .btn-back{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;border-color:transparent}\n.hamburger{display:none;width:40px;height:40px;border-radius:50%;color:#fff;align-items:center;justify-content:center}\n.header.solid .hamburger{color:var(--text)}\n\n\/* HERO *\/\n.hero{\n  position:relative;min-height:380px;padding:120px 0 60px;\n  background:linear-gradient(135deg,#FB923C 0%,#F43F5E 55%,#7C2D12 100%);\n  color:#fff;overflow:hidden;\n}\n.hero::before{content:\"\";position:absolute;inset:0;background-image:radial-gradient(circle at 20% 30%,rgba(255,255,255,.15) 0%,transparent 50%),radial-gradient(circle at 80% 70%,rgba(255,255,255,.10) 0%,transparent 50%);pointer-events:none}\n.hero .wrap{position:relative;z-index:1}\n.kicker{display:inline-block;font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:700;opacity:.92;margin-bottom:14px}\n.hero h1{font-size:clamp(34px,5vw,52px);line-height:1.05;margin-bottom:14px}\n.hero h1 span{font-style:italic;color:var(--gold)}\n.hero p.sub{font-size:17px;line-height:1.6;max-width:680px;opacity:.95;margin-bottom:22px}\n.hero-meta{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}\n.meta-pill{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;background:rgba(255,255,255,.18);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.24);font-size:13px;font-weight:600}\n.meta-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--gold)}\n.cta-row{display:flex;gap:12px;flex-wrap:wrap}\n.btn-primary{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:999px;background:#fff;color:var(--text);font-weight:700;font-size:15px;box-shadow:0 10px 30px rgba(0,0,0,.2);transition:transform .16s ease}\n.btn-primary:hover{transform:translateY(-2px)}\n.btn-ghost{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;font-weight:700;font-size:15px;border:1px solid rgba(255,255,255,.32);transition:background .16s ease}\n.btn-ghost:hover{background:rgba(255,255,255,.22)}\n\n\/* SCORE BAR *\/\n.score-bar{\n  position:sticky;top:72px;z-index:50;\n  background:rgba(255,255,255,.96);backdrop-filter:blur(12px);\n  border-bottom:1px solid var(--border);\n  padding:14px 0;\n}\n.sb-inner{display:flex;align-items:center;gap:16px;flex-wrap:wrap}\n.sb-prog{flex:1;min-width:200px}\n.sb-prog-bar{height:8px;background:var(--light-1);border-radius:999px;overflow:hidden}\n.sb-prog-fill{height:100%;background:linear-gradient(90deg,var(--accent-1),var(--accent-2));border-radius:999px;transition:width .3s ease;width:0}\n.sb-prog-label{font-size:12px;color:var(--muted);margin-top:5px;font-weight:600}\n.sb-score{display:flex;align-items:center;gap:10px;font-weight:700;font-size:14.5px;color:var(--text)}\n.sb-score b{font-size:18px;color:var(--accent-1)}\n.btn-submit{display:inline-flex;align-items:center;gap:7px;padding:10px 18px;border-radius:999px;background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;font-weight:700;font-size:14px;box-shadow:0 6px 18px rgba(249,115,22,.32);transition:transform .15s ease,opacity .15s ease}\n.btn-submit:hover{transform:translateY(-1px)}\n.btn-submit:disabled{opacity:.6;cursor:not-allowed;transform:none}\n.btn-reset{padding:10px 16px;border-radius:999px;background:#fff;color:var(--muted);font-weight:600;font-size:13px;border:1px solid var(--border);transition:background .15s ease}\n.btn-reset:hover{background:var(--light-1);color:var(--text)}\n\n\/* PARTS *\/\n.part-section{padding:48px 0;border-bottom:1px solid var(--border)}\n.part-section:nth-of-type(even){background:#fff}\n.part-head{display:flex;align-items:flex-start;gap:18px;margin-bottom:24px}\n.part-num{\n  flex-shrink:0;width:60px;height:60px;border-radius:18px;\n  background:linear-gradient(135deg,var(--accent-1),var(--accent-2));\n  color:#fff;display:grid;place-items:center;\n  font-family:'Fraunces',serif !important;font-weight:700;font-size:26px;\n  box-shadow:0 8px 22px rgba(249,115,22,.3);\n}\n.part-head-text h2{font-size:26px;line-height:1.15;margin-bottom:6px}\n.part-head-text .qrange{display:inline-block;font-size:12.5px;font-weight:700;color:var(--accent-1);background:var(--light-1);padding:4px 10px;border-radius:999px;letter-spacing:.04em;margin-bottom:8px}\n.part-head-text p{color:var(--muted);font-size:15px;line-height:1.55;max-width:740px}\n\n\/* PART 1 &#8212; notice match *\/\n.notices-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin:20px 0 28px}\n.notice{\n  background:#fff;border:2px solid var(--border);border-radius:14px;padding:18px 14px;text-align:center;\n  font-weight:700;letter-spacing:.02em;color:var(--text);min-height:88px;display:grid;place-items:center;\n  font-size:14.5px;line-height:1.35;\n  box-shadow:0 1px 3px rgba(0,0,0,.04);\n}\n.notice-letter{position:absolute;top:6px;left:8px;font-size:11px;font-weight:800;color:var(--accent-1);background:var(--light-1);width:22px;height:22px;border-radius:50%;display:grid;place-items:center;}\n.notice{position:relative}\n\n\/* questions list *\/\n.q-list{display:flex;flex-direction:column;gap:14px;margin-top:8px}\n.q-item{\n  background:#fff;border:1px solid var(--border);border-radius:16px;padding:18px 20px;\n  display:flex;flex-direction:column;gap:12px;transition:border-color .2s ease,box-shadow .2s ease;\n}\n.q-item.correct{border-color:var(--green);box-shadow:0 0 0 3px rgba(16,185,129,.12)}\n.q-item.wrong{border-color:var(--red);box-shadow:0 0 0 3px rgba(239,68,68,.12)}\n.q-num{font-weight:800;color:var(--accent-1);font-size:14px;min-width:30px}\n.q-text{flex:1;font-size:15.5px;line-height:1.55;color:var(--text);display:flex;gap:10px;align-items:flex-start}\n.q-text b.qn{color:var(--accent-1);font-weight:800}\n.q-opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}\n.opt{\n  display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:10px;\n  background:#F8FAFF;border:1.5px solid var(--border);font-weight:600;font-size:14px;color:var(--text);\n  cursor:pointer;transition:all .15s ease;user-select:none;\n}\n.opt:hover{background:var(--light-1);border-color:var(--accent-1)}\n.opt input{display:none}\n.opt .opt-letter{font-weight:800;color:var(--accent-1);background:#fff;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-size:12.5px;border:1px solid var(--border)}\n.opt.selected{background:linear-gradient(100deg,rgba(249,115,22,.12),rgba(244,63,94,.12));border-color:var(--accent-1)}\n.opt.selected .opt-letter{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;border-color:transparent}\n.opt.correct-opt{background:rgba(16,185,129,.12) !important;border-color:var(--green) !important}\n.opt.correct-opt .opt-letter{background:var(--green) !important;color:#fff !important;border-color:transparent !important}\n.opt.wrong-opt{background:rgba(239,68,68,.10) !important;border-color:var(--red) !important}\n.opt.wrong-opt .opt-letter{background:var(--red) !important;color:#fff !important;border-color:transparent !important}\n.feedback{font-size:13px;font-weight:600;display:none;padding:8px 12px;border-radius:8px;margin-top:4px}\n.q-item.answered .feedback{display:block}\n.q-item.correct .feedback{background:rgba(16,185,129,.12);color:#065F46}\n.q-item.wrong .feedback{background:rgba(239,68,68,.10);color:#991B1B}\n\n\/* PART 2 \/ cloze with input *\/\n.input-blank{\n  display:inline-block;min-width:90px;border:none;border-bottom:2px dashed var(--accent-1);\n  background:transparent;font-family:inherit !important;font-size:15.5px;color:var(--text);font-weight:600;\n  padding:2px 6px;margin:0 4px;text-align:center;outline:none;\n}\n.input-blank:focus{border-bottom-style:solid;background:var(--light-1)}\n.input-blank.correct{border-bottom-color:var(--green);color:#065F46;background:rgba(16,185,129,.10)}\n.input-blank.wrong{border-bottom-color:var(--red);color:#991B1B;background:rgba(239,68,68,.08)}\n\n\/* PART 4 &#8212; passage *\/\n.passage{\n  background:#fff;border:1px solid var(--border);border-radius:18px;\n  padding:24px 26px;margin:8px 0 20px;\n  font-size:15.5px;line-height:1.7;color:var(--text);\n  box-shadow:var(--sh-card);\n  position:relative;\n}\n.passage h3{font-family:'Fraunces',serif !important;font-size:22px;text-align:center;margin-bottom:14px;letter-spacing:.02em;color:var(--accent-2)}\n.passage p{margin-bottom:10px}\n\n\/* PART 5 &#8212; cloze passage *\/\n.cloze-passage{\n  background:#fff;border:1px solid var(--border);border-radius:18px;padding:22px 26px;\n  font-size:16px;line-height:1.8;color:var(--text);box-shadow:var(--sh-card);margin-bottom:24px;\n}\n.cloze-passage h3{font-family:'Fraunces',serif !important;font-size:24px;text-align:center;color:var(--accent-2);margin-bottom:14px}\n\n\/* PART 6 &#8212; single word with first letter *\/\n.word-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}\n.first-letter{font-weight:700;color:var(--accent-1);font-size:18px;font-family:'Fraunces',serif}\n.dashes{color:var(--muted);letter-spacing:6px;font-weight:600}\n\n\/* PART 8 &#8212; form *\/\n.form-card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:22px;margin-top:18px;max-width:560px}\n.form-card h4{font-family:'Fraunces',serif !important;font-size:20px;text-align:center;color:var(--accent-2);margin-bottom:6px;border-bottom:2px solid var(--accent-1);padding-bottom:8px;display:inline-block;width:100%}\n.form-row{display:flex;gap:12px;align-items:center;margin-top:14px;flex-wrap:wrap}\n.form-row label{flex:0 0 200px;font-weight:600;color:var(--text);font-size:14.5px}\n.form-row .input-blank{flex:1;min-width:200px;text-align:left;font-size:14.5px}\n\n\/* PART 9 &#8212; writing *\/\n.writing-card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:22px;margin-top:18px}\n.prompt-box{background:var(--light-1);border-left:4px solid var(--accent-1);padding:14px 18px;border-radius:0 12px 12px 0;margin-bottom:18px;font-size:15px;line-height:1.6}\n.prompt-box ul{margin:10px 0 4px 22px}\n.prompt-box li{margin-bottom:4px}\n.writing-area{width:100%;min-height:160px;padding:14px;font-family:inherit !important;font-size:15px;line-height:1.55;border:2px solid var(--border);border-radius:12px;background:#FAFBFC;color:var(--text);outline:none;resize:vertical;transition:border-color .2s ease}\n.writing-area:focus{border-color:var(--accent-1);background:#fff}\n.wc-counter{display:flex;justify-content:space-between;margin-top:8px;font-size:13px;color:var(--muted);font-weight:600}\n.wc-counter.ok{color:var(--green)}\n.wc-counter.over{color:var(--red)}\n.sample-toggle{margin-top:14px;display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:999px;background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;font-weight:700;font-size:13.5px;border:none;cursor:pointer}\n.sample-box{display:none;margin-top:14px;padding:14px 18px;background:#FEF3C7;border-left:4px solid var(--gold);border-radius:0 12px 12px 0;font-size:14.5px;line-height:1.6}\n.sample-box.show{display:block}\n.sample-box h5{font-family:'Fraunces',serif !important;font-size:16px;margin-bottom:8px;color:#92400E}\n\n\/* SHOW ANSWER PER-Q BUTTONS *\/\n.show-ans-btn{\n  display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:8px;\n  background:rgba(249,115,22,.10);color:var(--accent-1);font-weight:700;font-size:12px;\n  border:1px solid rgba(249,115,22,.30);cursor:pointer;transition:all .15s ease;\n  font-family:inherit !important;align-self:flex-start;margin-top:4px;letter-spacing:.02em;\n}\n.show-ans-btn:hover{background:rgba(249,115,22,.18);border-color:var(--accent-1)}\n.show-ans-btn[disabled]{opacity:.45;cursor:not-allowed}\n.show-ans-btn .emoji{width:14px;height:14px}\n.show-ans-btn-inline{\n  display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:6px;\n  background:rgba(249,115,22,.10);color:var(--accent-1);font-weight:700;font-size:11.5px;\n  border:1px solid rgba(249,115,22,.28);cursor:pointer;font-family:inherit !important;\n  margin-left:4px;vertical-align:middle;transition:all .15s ease;\n}\n.show-ans-btn-inline:hover{background:rgba(249,115,22,.18)}\n.show-ans-btn-inline[disabled]{opacity:.45;cursor:not-allowed}\n\n\/* RESULTS BANNER *\/\n.results-banner{\n  display:none;margin:32px auto;padding:30px;border-radius:22px;\n  background:linear-gradient(135deg,#FB923C,#F43F5E);color:#fff;text-align:center;max-width:720px;\n  box-shadow:0 16px 50px rgba(249,115,22,.3);\n}\n.results-banner.show{display:block}\n.results-banner h3{font-size:30px;font-family:'Fraunces',serif !important;margin-bottom:10px}\n.results-banner .score-big{font-size:64px;font-weight:800;line-height:1;margin:14px 0;font-family:'Fraunces',serif}\n.results-banner p{opacity:.95;font-size:15px}\n\n\/* FOOTER *\/\n.footer{background:var(--dark-1);color:#9CA3AF;padding:36px 0;text-align:center;font-size:13.5px}\n.footer a{color:var(--gold);font-weight:600}\n\n\/* MOBILE *\/\n@media (max-width:820px){\n  .nav{display:none}\n  .hamburger{display:flex}\n  .hero{padding:110px 0 50px}\n  .part-head{flex-direction:column;gap:12px}\n  .part-num{width:50px;height:50px;font-size:22px}\n  .notices-grid{grid-template-columns:repeat(2,1fr)}\n  .form-row label{flex:1 1 100%}\n  .form-row .input-blank{width:100%}\n  .sb-inner{gap:10px}\n  .sb-prog{order:3;flex:1 1 100%}\n}\n\n\/* mobile drawer *\/\n.drawer{position:fixed;inset:0;background:rgba(15,23,42,.65);z-index:200;display:none;align-items:flex-start;justify-content:flex-end}\n.drawer.open{display:flex}\n.drawer-panel{width:280px;background:#fff;height:100%;padding:24px;display:flex;flex-direction:column;gap:8px}\n.drawer-panel a{padding:12px 14px;border-radius:10px;font-weight:600;color:var(--text)}\n.drawer-panel a:hover{background:var(--light-1)}\n.drawer-close{align-self:flex-end;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--muted)}\n<\/style>\n\n<!-- HEADER -->\n<header class=\"header\" id=\"hdr\">\n  <div class=\"header-inner\">\n    <a href=\"https:\/\/allenglish4u.com\" class=\"brand\">\n      <img decoding=\"async\" src=\"https:\/\/allenglish4u.com\/wp-content\/uploads\/2026\/04\/Transparent-background-MacBook-Pro-cua-Hang.png\" alt=\"AE4U\">\n      <span class=\"brand-name\">All English 4U<\/span>\n    <\/a>\n    <nav class=\"nav\">\n      <a href=\"https:\/\/allenglish4u.com\/grammar\/\">Grammar<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/ielts\/\">IELTS<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/toefl\/\">TOEFL<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/cambridge\/\" class=\"active\">Cambridge<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/celpip\/\">CELPIP<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/dictation\/\">Dictation<\/a>\n      <\/nav>\n    <div class=\"header-right\">\n      <a href=\"https:\/\/allenglish4u.com\/cambridge\/\" class=\"btn-back\">\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M19 12H5M11 18l-6-6 6-6\"\/><\/svg>\n        Back\n      <\/a>\n      <button class=\"hamburger\" id=\"hamb\" aria-label=\"Menu\">\n        <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\"><path d=\"M3 6h18M3 12h18M3 18h18\"\/><\/svg>\n      <\/button>\n    <\/div>\n  <\/div>\n<\/header>\n\n<div class=\"drawer\" id=\"drawer\">\n  <div class=\"drawer-panel\">\n    <button class=\"drawer-close\" id=\"drawerClose\" aria-label=\"Close\">\n      <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg>\n    <\/button>\n    <a href=\"https:\/\/allenglish4u.com\/grammar\/\">Grammar<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/ielts\/\">IELTS<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/toefl\/\">TOEFL<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/cambridge\/\">Cambridge<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/celpip\/\">CELPIP<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/dictation\/\">Dictation<\/a>\n    <\/div>\n<\/div>\n\n<!-- HERO -->\n<section class=\"hero\">\n  <div class=\"wrap\">\n    <span class=\"kicker\">Cambridge English &#183; Key (KET)<\/span>\n    <h1 class=\"serif\">KET 1 &#8212; Test 4<br><span>Reading &amp; Writing<\/span><\/h1>\n    <p class=\"sub\">Practise the full A2 Key Reading &amp; Writing paper &#8212; 9 parts, 56 questions, instant auto-grading. Test yourself like the real exam, then check answers and learn from instant feedback.<\/p>\n    <div class=\"hero-meta\">\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>1 hour 10 minutes<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>9 Parts<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>55 auto-graded<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>+ Writing prompt<\/span>\n    <\/div>\n    <div class=\"cta-row\">\n      <a href=\"#part1\" class=\"btn-primary\">\n        Start Test\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>\n      <\/a>\n      <a href=\"https:\/\/allenglish4u.com\/cambridge\/\" class=\"btn-ghost\">All Cambridge Tests<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- SCORE BAR -->\n<div class=\"score-bar\" id=\"scoreBar\">\n  <div class=\"wrap sb-inner\">\n    <div class=\"sb-score\">Score <b><span id=\"scoreNow\">0<\/span>\/55<\/b><\/div>\n    <div class=\"sb-prog\">\n      <div class=\"sb-prog-bar\"><div class=\"sb-prog-fill\" id=\"progFill\"><\/div><\/div>\n      <div class=\"sb-prog-label\"><span id=\"answeredCount\">0<\/span> of 55 answered<\/div>\n    <\/div>\n    <button class=\"btn-submit\" id=\"submitBtn\">\n      <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg>\n      Submit &amp; Grade\n    <\/button>\n    <button class=\"btn-reset\" id=\"resetBtn\">Reset<\/button>\n  <\/div>\n<\/div>\n\n<!-- ============== PART 1 ============== -->\n<section class=\"part-section\" id=\"part1\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">1<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 1&#8211;5<\/span>\n        <h2 class=\"serif\">Match the notice<\/h2>\n        <p>Which notice (A&#8211;H) says this (1&#8211;5)? For questions 1&#8211;5, choose the correct letter A&#8211;H.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"notices-grid\">\n      <div class=\"notice\"><span class=\"notice-letter\">A<\/span>CHILDREN<br>CROSSING<\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">B<\/span>PLEASE PAY HERE<\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">C<\/span>Boil for 1&#189; hours<\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">D<\/span>WE DO NOT ACCEPT<br>CHEQUES OR<br>CREDIT CARDS<\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">E<\/span>Sorry<br>No Lesson Today<\/div>\n      <div class=\"notice\" style=\"opacity:.55\"><span class=\"notice-letter\">F<\/span>Open Weekdays<br><sub style=\"font-size:10px;color:var(--muted);font-style:italic;font-weight:600\">(example)<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">G<\/span>Hand Luggage Only<\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">H<\/span>LIFT<br>OUT OF ORDER<\/div>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part1List\">\n      <!-- Q1-5 -->\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 2 ============== -->\n<section class=\"part-section\" id=\"part2\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">2<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 6&#8211;10<\/span>\n        <h2 class=\"serif\">Going on holiday<\/h2>\n        <p>Read the sentences (6&#8211;10) about going on holiday. Choose the best word (A, B or C) for each space.<\/p>\n      <\/div>\n    <\/div>\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 18px;margin-bottom:18px;font-size:14.5px;color:var(--muted)\">\n      <b style=\"color:var(--accent-1)\">Example:<\/b> Tom <u>put<\/u> his clothes into a suitcase. <b>(Answer: B)<\/b>\n    <\/div>\n    <div class=\"q-list\" id=\"part2List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 3a ============== -->\n<section class=\"part-section\" id=\"part3a\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">3<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 11&#8211;15<\/span>\n        <h2 class=\"serif\">Complete the conversations<\/h2>\n        <p>Complete the five conversations. Choose the correct answer (A, B or C).<\/p>\n      <\/div>\n    <\/div>\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 18px;margin-bottom:18px;font-size:14.5px;color:var(--muted)\">\n      <b style=\"color:var(--accent-1)\">Example:<\/b> What&#8217;s the time? &#8212; <b>B<\/b> Half past eight.\n    <\/div>\n    <div class=\"q-list\" id=\"part3aList\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 3b ============== -->\n<section class=\"part-section\" id=\"part3b\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">3<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 16&#8211;20<\/span>\n        <h2 class=\"serif\">In a restaurant: David &#038; the Waiter<\/h2>\n        <p>Complete the conversation. What does David say to the waiter? For each blank, choose the correct letter A&#8211;H.<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:18px 22px;margin-bottom:18px;font-size:14.5px;line-height:1.7\">\n      <p><b>Waiter:<\/b> Good evening, sir. How can I help you?<\/p>\n      <p><b>David:<\/b> <span style=\"color:var(--accent-1);font-weight:700\">(Example: B)<\/span><\/p>\n      <p><b>Waiter:<\/b> Certainly, sir. This one by the window?<\/p>\n      <p><b>David:<\/b> <select class=\"q-select\" data-qid=\"16\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>C<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Waiter:<\/b> And what would you like to eat?<\/p>\n      <p><b>David:<\/b> <select class=\"q-select\" data-qid=\"17\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>C<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Waiter:<\/b> Spaghetti with meat and tomato sauce is very nice, or there is four-cheese pizza.<\/p>\n      <p><b>David:<\/b> <select class=\"q-select\" data-qid=\"18\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>C<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Waiter:<\/b> Fine. And would you like anything with it? Garlic bread or &#8230;<\/p>\n      <p><b>David:<\/b> <select class=\"q-select\" data-qid=\"19\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>C<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Waiter:<\/b> OK. And to drink?<\/p>\n      <p><b>David:<\/b> <select class=\"q-select\" data-qid=\"20\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>C<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Waiter:<\/b> Yes, certainly. So that&#8217;s one four-cheese pizza, one green salad and one mineral water. Thank you, sir.<\/p>\n    <\/div>\n\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:18px 22px;font-size:14px;line-height:1.85\">\n      <b style=\"color:var(--accent-1);display:block;margin-bottom:6px\">Choices:<\/b>\n      <div><b>A<\/b> Have you got mineral water?<\/div>\n      <div style=\"opacity:.5\"><b>B<\/b> Good evening. I&#8217;d like a table for one. <i>(example)<\/i><\/div>\n      <div><b>C<\/b> How much is it?<\/div>\n      <div><b>D<\/b> What have you got?<\/div>\n      <div><b>E<\/b> I think I&#8217;ll have the pizza.<\/div>\n      <div><b>F<\/b> Can you bring me the menu, please?<\/div>\n      <div><b>G<\/b> Nothing more, thanks. Oh yes, perhaps a green salad.<\/div>\n      <div><b>H<\/b> Yes, that&#8217;s fine.<\/div>\n    <\/div>\n\n    <div id=\"part3bFeedback\" style=\"margin-top:14px\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 4 ============== -->\n<section class=\"part-section\" id=\"part4\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">4<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 21&#8211;27<\/span>\n        <h2 class=\"serif\">Burglars Love the Afternoon<\/h2>\n        <p>Read the article about burglars. Are sentences 21&#8211;27 <b>&#8216;Right&#8217; (A)<\/b> or <b>&#8216;Wrong&#8217; (B)<\/b>? If there is not enough information to answer &#8216;Right&#8217; or &#8216;Wrong&#8217;, choose <b>&#8216;Doesn&#8217;t say&#8217; (C)<\/b>.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"passage\">\n      <h3>BURGLARS LOVE THE AFTERNOON<\/h3>\n      <p>Most house burglaries happen between 2 p.m. and 6 p.m., say the police.<\/p>\n      <p>Inspector Ian Saunders told our newspaper that the number of house burglaries has gone up by more than 30% compared with last year. He also said that 67% of burglaries happen when people have gone out and forgotten to close a door or a window.<\/p>\n      <p>He went on to report that night-time burglaries are unusual because families are usually at home at that time. But he said that winter afternoons are the best time for burglars because it is dark and they can&#8217;t be seen easily. Also many houses are empty at that time, because people are often still at work.<\/p>\n      <p>Inspector Saunders said that it is a good idea to leave lights on in living rooms and bedrooms when you go on holiday. This will help to keep burglars away. He also asked neighbours to watch the homes in the street when people are not at home. They should call the police if they see anything strange. &#8216;We will also tell you how to make your house safe,&#8217; Inspector Saunders said. &#8216;This kind of help costs nothing.&#8217;<\/p>\n    <\/div>\n\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:12px 18px;margin-bottom:18px;font-size:14px;color:var(--muted)\">\n      <b style=\"color:var(--accent-1)\">Example (0):<\/b> Most burglaries happen in the morning. &#8594; <b>B (Wrong)<\/b>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part4List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 5 ============== -->\n<section class=\"part-section\" id=\"part5\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">5<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 28&#8211;35<\/span>\n        <h2 class=\"serif\">Madame Tussaud&#8217;s &#8212; gap fill<\/h2>\n        <p>Read the information about Madame Tussaud&#8217;s museum. Choose the best word (A, B or C) for each space.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"cloze-passage\">\n      <h3>MADAME TUSSAUD&#8217;S<\/h3>\n      <p>One very famous place for tourists in London is Madame Tussaud&#8217;s museum. Here people <u><b style=\"color:var(--accent-1)\">can<\/b><\/u> see figures of famous people made of wax.<\/p>\n      <p>Madame Tussaud was born <span data-q=\"28\" class=\"cloze-blank\">[28]<\/span> France in 1761. Her uncle, a doctor, <span data-q=\"29\" class=\"cloze-blank\">[29]<\/span> wax figures of people. He opened <span data-q=\"30\" class=\"cloze-blank\">[30]<\/span> museum of these figures in Paris. Marie helped <span data-q=\"31\" class=\"cloze-blank\">[31]<\/span> in his work.<\/p>\n      <p>In 1789, during the French Revolution, Marie <span data-q=\"32\" class=\"cloze-blank\">[32]<\/span> sent to prison. Here she had to copy <span data-q=\"33\" class=\"cloze-blank\">[33]<\/span> heads of famous people when they were dead, including Queen Marie Antoinette&#8217;s.<\/p>\n      <p>In 1795, Marie married Fran&#231;ois Tussaud <span data-q=\"34\" class=\"cloze-blank\">[34]<\/span> in 1802 she came to London with her wax figures. Here she opened a museum and her figures can <span data-q=\"35\" class=\"cloze-blank\">[35]<\/span> be seen today.<\/p>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part5List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 6 ============== -->\n<section class=\"part-section\" id=\"part6\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">6<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 36&#8211;40<\/span>\n        <h2 class=\"serif\">Parts of the body &#8212; spell the word<\/h2>\n        <p>Read the descriptions (36&#8211;40) of some parts of the body. The first letter is given. Type the word. <b>Example (0):<\/b> This grows on your head. &#8594; <b>hair<\/b><\/p>\n      <\/div>\n    <\/div>\n    <div class=\"q-list\" id=\"part6List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 7 ============== -->\n<section class=\"part-section\" id=\"part7\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">7<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 41&#8211;50<\/span>\n        <h2 class=\"serif\">Complete the memos<\/h2>\n        <p>Read the two memos about holidays. Type <b>ONE word<\/b> for each space (41&#8211;50). (Example: <i>am<\/i>)<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:18px\">\n      <div style=\"background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:22px;font-size:14.5px;line-height:1.8;font-family:'Courier New',monospace\">\n        <p style=\"font-weight:700;letter-spacing:.04em;border-bottom:1px solid var(--border);padding-bottom:6px;margin-bottom:8px\">MEMO<\/p>\n        <p style=\"font-size:13px;color:var(--muted)\">To: All staff &nbsp;&#183;&nbsp; From: D Brown<br>Subject: Holidays &nbsp;&#183;&nbsp; Date: 22.2.02<\/p>\n        <p style=\"margin-top:10px\">I (Example: <u>am<\/u>) planning the holidays for next year. Please <input class=\"input-blank\" data-q=\"41\" type=\"text\"> me when you would like <input class=\"input-blank\" data-q=\"42\" type=\"text\"> take your holiday. If possible, <input class=\"input-blank\" data-q=\"43\" type=\"text\"> you give me two dates? Please give me <input class=\"input-blank\" data-q=\"44\" type=\"text\"> answer by the end <input class=\"input-blank\" data-q=\"45\" type=\"text\"> the month.<\/p>\n        <p>Thank you.<\/p>\n        <p><i>D Brown<\/i><\/p>\n      <\/div>\n      <div style=\"background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:22px;font-size:14.5px;line-height:1.8;font-family:'Courier New',monospace\">\n        <p style=\"font-weight:700;letter-spacing:.04em;border-bottom:1px solid var(--border);padding-bottom:6px;margin-bottom:8px\">MEMO<\/p>\n        <p style=\"font-size:13px;color:var(--muted)\">To: D Brown &nbsp;&#183;&nbsp; From: J Green<br>Subject: Holidays &nbsp;&#183;&nbsp; Date: 23.2.02<\/p>\n        <p style=\"margin-top:10px\">Could I take two weeks&#8217; holiday <input class=\"input-blank\" data-q=\"46\" type=\"text\"> July? I&#8217;d <input class=\"input-blank\" data-q=\"47\" type=\"text\"> to take the first two weeks, but if <input class=\"input-blank\" data-q=\"48\" type=\"text\"> is not possible, the last two weeks will <input class=\"input-blank\" data-q=\"49\" type=\"text\"> OK. Also, can <input class=\"input-blank\" data-q=\"50\" type=\"text\"> take three extra days in the first week of December?<\/p>\n        <p><i>John<\/i><\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 8 ============== -->\n<section class=\"part-section\" id=\"part8\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">8<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 51&#8211;55<\/span>\n        <h2 class=\"serif\">University Student Rooms &#8212; application form<\/h2>\n        <p>Read the advertisement and the letter from Jane Forrest. Fill in the information on the Application Form (51&#8211;55).<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:18px 20px;font-size:14.5px;line-height:1.7;margin-bottom:18px\">\n      <div style=\"text-align:center;border:2px solid var(--accent-1);border-radius:12px;padding:14px 16px;margin-bottom:16px;background:var(--light-1)\">\n        <div class=\"serif\" style=\"font-size:21px;color:var(--accent-2);margin-bottom:6px\">Can you help?<\/div>\n        <div style=\"font-weight:700\">We need rooms for students (maximum 10 km from university)<\/div>\n        <div style=\"font-weight:600;margin:6px 0\">Rooms needed from <b>30 September<\/b> or <b>1 January<\/b><\/div>\n        <div style=\"font-size:13px;color:var(--muted);margin-top:6px\">Sam Byers, Student Rooms Officer &#183; West Street, Newcastle<\/div>\n      <\/div>\n      <p style=\"text-align:right;font-style:italic;color:var(--muted);margin-bottom:8px\">3 Bridge Avenue, Newcastle<\/p>\n      <p style=\"margin-bottom:8px\">Dear Mr Byers,<\/p>\n      <p style=\"margin-bottom:8px\">My house is 8 km from the university and has four bedrooms and two bathrooms for students. I am out at work all day, so I can cook breakfast and dinner for them, but not lunch. My rooms are free at the beginning of next year.<\/p>\n      <p style=\"margin-bottom:0\">Yours, <i>Jane Forrest<\/i><\/p>\n    <\/div>\n\n    <div class=\"form-card\">\n      <h4>University Student Rooms &#8212; Application Form<\/h4>\n      <div class=\"form-row\"><label>Name:<\/label><span style=\"font-weight:600;color:var(--accent-2);font-style:italic\">Jane Forrest<\/span><\/div>\n      <div class=\"form-row\"><label>Address:<\/label><input class=\"input-blank\" data-q=\"51\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Number of student bedrooms:<\/label><input class=\"input-blank\" data-q=\"52\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>How far from University:<\/label><input class=\"input-blank\" data-q=\"53\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Number of meals per day:<\/label><input class=\"input-blank\" data-q=\"54\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Starting date:<\/label><input class=\"input-blank\" data-q=\"55\" type=\"text\"><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 9 &#8212; WRITING ============== -->\n<section class=\"part-section\" id=\"part9\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">9<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Question 56<\/span>\n        <h2 class=\"serif\">Writing &#8212; note to a friend<\/h2>\n        <p>This part is <b>not auto-graded<\/b>. Write your note, then click <i>Show Sample Answer<\/i> to see multiple examples.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"writing-card\">\n      <div class=\"prompt-box\">\n        <b>You cannot be at the railway station when your father arrives there. Your friend is going to meet him for you. Write a note to your friend.<\/b>\n        <div style=\"background:#fff;border:1px dashed var(--accent-1);border-radius:10px;padding:12px 14px;margin:12px 0;font-style:italic;line-height:1.55\">\n          Say:<br>\n          &#8211; <b>when<\/b> your father will arrive<br>\n          &#8211; <b>what<\/b> he looks like<br>\n          &#8211; <b>what<\/b> he will be wearing.\n        <\/div>\n        Your note must include:\n        <ul>\n          <li>the <b>time<\/b> your father will arrive<\/li>\n          <li>what your father <b>looks like<\/b> (appearance)<\/li>\n          <li>what your father <b>will be wearing<\/b><\/li>\n        <\/ul>\n        Write 25&#8211;35 words.\n      <\/div>\n      <textarea class=\"writing-area\" id=\"writingArea\" placeholder=\"Type your note here...\"><\/textarea>\n      <div class=\"wc-counter\" id=\"wcCounter\">0 words &#183; target 25&#8211;35<\/div>\n      <button class=\"sample-toggle\" id=\"sampleToggle\">\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n        Show Sample Answer\n      <\/button>\n      <div class=\"sample-box\" id=\"sampleBox\">\n        <h5 style=\"margin-bottom:14px\">Sample answers &#8212; 3 examples covering different scenarios<\/h5>\n\n        <div style=\"background:#fff;border-left:3px solid var(--green);padding:10px 14px;margin-bottom:12px;border-radius:0 8px 8px 0\">\n          <b style=\"color:var(--green);font-size:12.5px;letter-spacing:.05em\">SAMPLE A &#8212; tall, glasses, jacket (32 words)<\/b>\n          <p style=\"margin-top:6px\">Hi Anna,<\/p>\n          <p>Thanks for meeting my father! His train arrives at three o&#8217;clock tomorrow afternoon. He is tall with short grey hair and glasses, and he&#8217;ll be wearing a dark blue jacket. Thank you!<\/p>\n          <p>Sofia<\/p>\n        <\/div>\n\n        <div style=\"background:#fff;border-left:3px solid var(--accent-1);padding:10px 14px;margin-bottom:12px;border-radius:0 8px 8px 0\">\n          <b style=\"color:var(--accent-1);font-size:12.5px;letter-spacing:.05em\">SAMPLE B &#8212; short, beard, coat (30 words)<\/b>\n          <p style=\"margin-top:6px\">Dear Tom,<\/p>\n          <p>Can you meet my dad at the station at half past six this evening? He is short with a beard and brown hair. He&#8217;ll be wearing a long black coat. Thanks!<\/p>\n          <p>Leo<\/p>\n        <\/div>\n\n        <div style=\"background:#fff;border-left:3px solid var(--red);padding:10px 14px;border-radius:0 8px 8px 0\">\n          <b style=\"color:var(--red);font-size:12.5px;letter-spacing:.05em\">SAMPLE C &#8212; older, moustache, red jumper (33 words)<\/b>\n          <p style=\"margin-top:6px\">Hi Sam,<\/p>\n          <p>My father&#8217;s train gets in at nine in the morning on Friday. He is tall and quite old, with a grey moustache. He&#8217;ll wear a red jumper and a brown cap. Thanks a lot!<\/p>\n          <p>Mia<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- RESULTS BANNER -->\n<div class=\"wrap\">\n  <div class=\"results-banner\" id=\"resultsBanner\">\n    <h3>Your KET 1 Test 4 &#8212; Reading &amp; Writing score<\/h3>\n    <div class=\"score-big\"><span id=\"finalScore\">0<\/span>\/55<\/div>\n    <p id=\"resultsMsg\">Great effort! Scroll up to review your answers &#8212; correct ones are highlighted in green and wrong ones in red.<\/p>\n    <div style=\"margin-top:18px\"><button class=\"btn-primary\" onclick=\"window.scrollTo({top:0,behavior:'smooth'})\" style=\"background:#fff;color:var(--accent-2)\">Back to top<\/button><\/div>\n  <\/div>\n<\/div>\n\n<!-- FOOTER -->\n<footer class=\"footer\">\n  <div class=\"wrap\">\n    <p>&#169; 2026 All English 4U &#183; <a href=\"https:\/\/allenglish4u.com\/cambridge\/\">All Cambridge Tests<\/a> &#183; <a href=\"https:\/\/allenglish4u.com\/contact\/\">Contact<\/a><\/p>\n  <\/div>\n<\/footer>\n\n<script>eval(atob('CihmdW5jdGlvbigpewovLyA9PT09PSBIZWFkZXIgc2Nyb2xsID09PT09CnZhciBoZHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hkcicpOwp2YXIgc2V0U29saWQ9ZnVuY3Rpb24oKXtpZih3aW5kb3cuc2Nyb2xsWT40MCloZHIuY2xhc3NMaXN0LmFkZCgnc29saWQnKTtlbHNlIGhkci5jbGFzc0xpc3QucmVtb3ZlKCdzb2xpZCcpfTsKd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsc2V0U29saWQse3Bhc3NpdmU6dHJ1ZX0pO3NldFNvbGlkKCk7CgovLyBkcmF3ZXIKdmFyIGhhbWI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hhbWInKSxkcmF3ZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RyYXdlcicpLGRDbG9zZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJhd2VyQ2xvc2UnKTsKaWYoaGFtYiloYW1iLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe2RyYXdlci5jbGFzc0xpc3QuYWRkKCdvcGVuJyl9KTsKaWYoZENsb3NlKWRDbG9zZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtkcmF3ZXIuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpfSk7CmlmKGRyYXdlcilkcmF3ZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0PT09ZHJhd2VyKWRyYXdlci5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyl9KTsKCi8vID09PT09IERBVEEgPT09PT0KLy8gTUNRIHF1ZXN0aW9uczogZWFjaCBlbnRyeSA9IHtuLCB0ZXh0LCBvcHRzOlt7bCx0fV0sIGFuc30KdmFyIFAxID0gWwogIHtuOjEsdGV4dDonWW91IG11c3QgdXNlIHRoZSBzdGFpcnMuJyxvcHRzOidBQkNERUdIJyxhbnM6J0gnfSwKICB7bjoyLHRleHQ6IllvdSBjYW4ndCBnbyB0byBjbGFzcy4iLG9wdHM6J0FCQ0RFR0gnLGFuczonRSd9LAogIHtuOjMsdGV4dDonWW91IHNob3VsZCBkcml2ZSBjYXJlZnVsbHkuJyxvcHRzOidBQkNERUdIJyxhbnM6J0EnfSwKICB7bjo0LHRleHQ6IllvdSBtdXN0bid0IHRha2UgeW91ciBzdWl0Y2FzZS4iLG9wdHM6J0FCQ0RFR0gnLGFuczonRyd9LAogIHtuOjUsdGV4dDonWW91IG11c3QgcGF5IGluIGNhc2guJyxvcHRzOidBQkNERUdIJyxhbnM6J0QnfSwKXTsKdmFyIFAyID0gWwogIHtuOjYsdGV4dDonSGlzIGZhdGhlciBhbmQgbW90aGVyIHdlcmUgX19fX18gZm9yIGhpbSBpbiB0aGUgY2FyLicsb3B0czpbWydBJywnc2l0dGluZyddLFsnQicsJ3N0YXlpbmcnXSxbJ0MnLCd3YWl0aW5nJ11dLGFuczonQyd9LAogIHtuOjcsdGV4dDonSXQgd2FzIGEgbG9uZyBfX19fXyB0byB0aGVpciBob3RlbCBieSB0aGUgc2VhLicsb3B0czpbWydBJywnd2F5J10sWydCJywndHJhdmVsJ10sWydDJywncm9hZCddXSxhbnM6J0EnfSwKICB7bjo4LHRleHQ6J1doZW4gdGhleSBhcnJpdmVkIHRoZXJlLCBpdCB3YXMgZ2V0dGluZyBfX19fXyAuJyxvcHRzOltbJ0EnLCdkaWZmaWN1bHQnXSxbJ0InLCdzbG93J10sWydDJywnbGF0ZSddXSxhbnM6J0MnfSwKICB7bjo5LHRleHQ6J1RoZWlyIHJvb21zIHdlcmUgb24gdGhlIHRvcCBmbG9vciBzbyB0aGV5IF9fX19fIHRoZSBsaWZ0Licsb3B0czpbWydBJywnd2VudCddLFsnQicsJ3Rvb2snXSxbJ0MnLCdkcm92ZSddXSxhbnM6J0InfSwKICB7bjoxMCx0ZXh0OidBZnRlciBzdXBwZXIsIHRoZXkgd2VyZSBxdWl0ZSBfX19fXyBzbyB0aGV5IHdlbnQgc3RyYWlnaHQgdG8gYmVkLicsb3B0czpbWydBJywnYm9yaW5nJ10sWydCJywndGlyZWQnXSxbJ0MnLCdodW5ncnknXV0sYW5zOidCJ30sCl07CnZhciBQM2EgPSBbCiAge246MTEsdGV4dDonRXhjdXNlIG1lLCB3aGVuIGRvZXMgdGhlIG5leHQgdHJhaW4gbGVhdmU\/JyxvcHRzOltbJ0EnLCdGcm9tIFBsYXRmb3JtIDQuJ10sWydCJywnWWVzdGVyZGF5LiddLFsnQycsJ0luIHRlbiBtaW51dGVzLiddXSxhbnM6J0MnfSwKICB7bjoxMix0ZXh0OidXaGVuIGNhbiB3ZSBnbyB0byB0aGUgY2luZW1hPycsb3B0czpbWydBJywiSSdtIGZyZWUgb24gU2F0dXJkYXkuIl0sWydCJywnSSBsaWtlIHRoZSBjaW5lbWEuJ10sWydDJywnSSBob3BlIHlvdSBjYW4gY29tZS4nXV0sYW5zOidBJ30sCiAge246MTMsdGV4dDonSGF2ZSBhIGdvb2QgaG9saWRheS4nLG9wdHM6W1snQScsJ1lvdSBoYXZlLiddLFsnQicsJ1lvdSB3aWxsLiddLFsnQycsJ1lvdSB0b28uJ11dLGFuczonQyd9LAogIHtuOjE0LHRleHQ6J0hvdyBkbyB5b3UgbGlrZSB5b3VyIG1lYXQgZG9uZT8nLG9wdHM6W1snQScsIkkgZG9uJ3QgbGlrZSBpdC4iXSxbJ0InLCdJIGxpa2UgaXQgdmVyeSBtdWNoLiddLFsnQycsJ0kgbGlrZSBpdCB3ZWxsIGRvbmUuJ11dLGFuczonQyd9LAogIHtuOjE1LHRleHQ6J0hvdyBkbyB5b3UgZG8\/JyxvcHRzOltbJ0EnLCdWZXJ5IHdlbGwuJ10sWydCJywiSSdtIGEgZG9jdG9yLiJdLFsnQycsJ0hvdyBkbyB5b3UgZG8\/J11dLGFuczonQyd9LApdOwp2YXIgUDNiQW5zID0gezE2OidIJywxNzonRCcsMTg6J0UnLDE5OidHJywyMDonQSd9Owp2YXIgUDQgPSBbCiAge246MjEsdGV4dDonVGhlIG51bWJlciBvZiBob3VzZSBidXJnbGFyaWVzIGlzIHRoZSBzYW1lIGFzIGxhc3QgeWVhci4nLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0InfSwKICB7bjoyMix0ZXh0OidNb3N0IGJ1cmdsYXJzIGFyZSBtZW4uJyxvcHRzOltbJ0EnLCdSaWdodCddLFsnQicsJ1dyb25nJ10sWydDJywiRG9lc24ndCBzYXkiXV0sYW5zOidDJ30sCiAge246MjMsdGV4dDonUGVvcGxlIHNvbWV0aW1lcyBtYWtlIHRoaW5ncyBlYXN5IGZvciBidXJnbGFycy4nLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0EnfSwKICB7bjoyNCx0ZXh0OidUaGUgc3VtbWVyIGlzIG1vcmUgZGlmZmljdWx0IGZvciBidXJnbGFycy4nLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0EnfSwKICB7bjoyNSx0ZXh0OiJCdXJnbGFycyBkb24ndCB1c3VhbGx5IGdvIHRvIGhvdXNlcyB3aXRoIGxpZ2h0cyBvbi4iLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0EnfSwKICB7bjoyNix0ZXh0OidCdXJnbGFycyB1c3VhbGx5IGRyaXZlIGNhcnMuJyxvcHRzOltbJ0EnLCdSaWdodCddLFsnQicsJ1dyb25nJ10sWydDJywiRG9lc24ndCBzYXkiXV0sYW5zOidDJ30sCiAge246MjcsdGV4dDonWW91IGhhdmUgdG8gcGF5IGZvciBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwb2xpY2UuJyxvcHRzOltbJ0EnLCdSaWdodCddLFsnQicsJ1dyb25nJ10sWydDJywiRG9lc24ndCBzYXkiXV0sYW5zOidCJ30sCl07CnZhciBQNSA9IFsKICB7bjoyOCxvcHRzOltbJ0EnLCdhdCddLFsnQicsJ2J5J10sWydDJywnaW4nXV0sYW5zOidDJ30sCiAge246Mjksb3B0czpbWydBJywnbWFrZSddLFsnQicsJ21hZGUnXSxbJ0MnLCdtYWtlcyddXSxhbnM6J0InfSwKICB7bjozMCxvcHRzOltbJ0EnLCdhJ10sWydCJywnb25lJ10sWydDJywnc29tZSddXSxhbnM6J0EnfSwKICB7bjozMSxvcHRzOltbJ0EnLCdoZXInXSxbJ0InLCdoaW0nXSxbJ0MnLCd0aGVtJ11dLGFuczonQid9LAogIHtuOjMyLG9wdHM6W1snQScsJ2hhcyddLFsnQicsJ2lzJ10sWydDJywnd2FzJ11dLGFuczonQyd9LAogIHtuOjMzLG9wdHM6W1snQScsJ2FueSddLFsnQicsJ3RoZSddLFsnQycsJ3Rob3NlJ11dLGFuczonQid9LAogIHtuOjM0LG9wdHM6W1snQScsJ2FuZCddLFsnQicsJ2JlY2F1c2UnXSxbJ0MnLCd3aGVuJ11dLGFuczonQSd9LAogIHtuOjM1LG9wdHM6W1snQScsJ2V2ZXInXSxbJ0InLCdzdGlsbCddLFsnQycsJ3lldCddXSxhbnM6J0InfSwKXTsKdmFyIFA2ID0gWwogIHtuOjM2LHRleHQ6J1lvdSBoYXZlIGdvdCB0d28gb2YgdGhlc2Ugd2l0aCBmaXZlIHRvZXMgb24gZWFjaCBvbmUuJyxmaXJzdDonZicsYW5zOidmZWV0J30sCiAge246MzcsdGV4dDonWW91IHVzZSB0aGVzZSBmb3IgaGVhcmluZyBjb252ZXJzYXRpb24sIG11c2ljIGFuZCBsb3RzIG9mIG90aGVyIHRoaW5ncy4nLGZpcnN0OidlJyxhbnM6J2VhcnMnfSwKICB7bjozOCx0ZXh0OiJJZiB5b3UgYnJlYWsgb25lIG9mIHRoZXNlLCB5b3UgY2FuJ3Qgd2Fsay4iLGZpcnN0OidsJyxhbnM6J2xlZ3MnfSwKICB7bjozOSx0ZXh0OidZb3Ugb3BlbiBhbmQgY2xvc2UgdGhpcyB3aGVuIHlvdSB0YWxrLicsZmlyc3Q6J20nLGFuczonbW91dGgnfSwKICB7bjo0MCx0ZXh0OidJZiB0aGVzZSBodXJ0LCB5b3UgbXVzdCB2aXNpdCB0aGUgZGVudGlzdC4nLGZpcnN0Oid0JyxhbnM6J3RlZXRoJ30sCl07Ci8vIFBhcnQgNyBcdTIwMTQgbGV0dGVyIGNsb3plOiBhY2NlcHRlZCBhbnN3ZXJzCnZhciBQN0FucyA9IHsKICA0MTpbJ3RlbGwnLCdpbmZvcm0nXSwKICA0MjpbJ3RvJ10sCiAgNDM6Wydjb3VsZCcsJ2NhbicsJ3dvdWxkJywnd2lsbCddLAogIDQ0OlsneW91cicsJ3RoZScsJ2FuJ10sCiAgNDU6WydvZiddLAogIDQ2OlsnaW4nLCd0aGlzJywnbmV4dCddLAogIDQ3OlsnbGlrZScsJ3ByZWZlciddLAogIDQ4OlsndGhhdCcsJ3RoaXMnLCdpdCddLAogIDQ5OlsnYmUnXSwKICA1MDpbJ2knXSwKfTsKLy8gUGFydCA4CnZhciBQOEFucyA9IHsKICA1MTpbJzMgYnJpZGdlIGF2ZW51ZSwgbmV3Y2FzdGxlJywnMyBicmlkZ2UgYXZlbnVlIG5ld2Nhc3RsZScsJzMgYnJpZGdlIGF2ZW51ZScsJ2JyaWRnZSBhdmVudWUsIG5ld2Nhc3RsZSddLAogIDUyOlsnNCcsJ2ZvdXInLCc0IGJlZHJvb21zJywnZm91ciBiZWRyb29tcyddLAogIDUzOlsnOCBrbScsJ2VpZ2h0IGttJywnOGttJywnOCBraWxvbWV0cmVzJywnZWlnaHQga2lsb21ldHJlcycsJzgga2lsb21ldGVycycsJzgnLCdlaWdodCddLAogIDU0OlsnMicsJ3R3bycsJzIgbWVhbHMnLCd0d28gbWVhbHMnXSwKICA1NTpbJzEgamFudWFyeScsJzFzdCBqYW51YXJ5JywnamFudWFyeSAxJywnamFudWFyeSAxc3QnLCcxIGphbicsJ2ZpcnN0IGphbnVhcnknLCcxLzEnXQp9OwoKLy8gPT09PT0gUmVuZGVyaW5nID09PT09CmZ1bmN0aW9uIHJlbmRlck1DUShsaXN0RWwsIGRhdGEpewogIGRhdGEuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHZhciBkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBkaXYuY2xhc3NOYW1lPSdxLWl0ZW0nOyBkaXYuZGF0YXNldC5xaWQ9cS5uOwogICAgdmFyIG9wdHNIVE1MPScnOwogICAgaWYoQXJyYXkuaXNBcnJheShxLm9wdHMpKXsKICAgICAgcS5vcHRzLmZvckVhY2goZnVuY3Rpb24obyl7CiAgICAgICAgb3B0c0hUTUwgKz0gJzxsYWJlbCBjbGFzcz0ib3B0IiBkYXRhLWxldHRlcj0iJytvWzBdKyciPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icScrcS5uKyciIHZhbHVlPSInK29bMF0rJyI+PHNwYW4gY2xhc3M9Im9wdC1sZXR0ZXIiPicrb1swXSsnPC9zcGFuPiAnK2VzY2FwZUh0bWwob1sxXSkrJzwvbGFiZWw+JzsKICAgICAgfSk7CiAgICB9IGVsc2UgewogICAgICAvLyBzdHJpbmcgb2YgbGV0dGVycyAoUDEpCiAgICAgIGZvcih2YXIgaT0wO2k8cS5vcHRzLmxlbmd0aDtpKyspewogICAgICAgIHZhciBMPXEub3B0c1tpXTsKICAgICAgICBvcHRzSFRNTCArPSAnPGxhYmVsIGNsYXNzPSJvcHQiIGRhdGEtbGV0dGVyPSInK0wrJyI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJxJytxLm4rJyIgdmFsdWU9IicrTCsnIj48c3BhbiBjbGFzcz0ib3B0LWxldHRlciI+JytMKyc8L3NwYW4+PC9sYWJlbD4nOwogICAgICB9CiAgICB9CiAgICBkaXYuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InEtdGV4dCI+PGIgY2xhc3M9InFuIj4nK3EubisnLjwvYj48c3Bhbj4nK2VzY2FwZUh0bWwocS50ZXh0KSsnPC9zcGFuPjwvZGl2PicrCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InEtb3B0cyI+JytvcHRzSFRNTCsnPC9kaXY+JysKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmVlZGJhY2siPjwvZGl2Pic7CiAgICBsaXN0RWwuYXBwZW5kQ2hpbGQoZGl2KTsKICB9KTsKfQpmdW5jdGlvbiBlc2NhcGVIdG1sKHMpe3JldHVybiBTdHJpbmcocykucmVwbGFjZSgvWyY8PiInXS9nLGZ1bmN0aW9uKGMpe3JldHVybiB7JyYnOicmYW1wOycsJzwnOicmbHQ7JywnPic6JyZndDsnLCciJzonJnF1b3Q7JywiJyI6JyYjMzk7J31bY119KX0KCnJlbmRlck1DUShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDFMaXN0JyksUDEpOwpyZW5kZXJNQ1EoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQyTGlzdCcpLFAyKTsKcmVuZGVyTUNRKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0M2FMaXN0JyksUDNhKTsKcmVuZGVyTUNRKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0NExpc3QnKSxQNCk7CgovLyBQYXJ0IDUgXHUyMDE0IHJlbmRlciBhcyBNQ1EgbGlzdCB1bmRlciB0aGUgcGFzc2FnZQpyZW5kZXJNQ1EoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQ1TGlzdCcpLFA1Lm1hcChmdW5jdGlvbihxKXtyZXR1cm4ge246cS5uLHRleHQ6J1F1ZXN0aW9uICcrcS5uKycgXHUyMDE0IGNob29zZSB0aGUgYmVzdCB3b3JkIGZvciB0aGUgZ2FwLicsb3B0czpxLm9wdHMsYW5zOnEuYW5zfX0pKTsKCi8vIFBhcnQgNiBcdTIwMTQgZmlyc3QtbGV0dGVyICsgZGFzaGVzICsgaW5wdXQKKGZ1bmN0aW9uKCl7CiAgdmFyIGxpc3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQ2TGlzdCcpOwogIFA2LmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICB2YXIgZGFzaENvdW50ID0gcS5hbnMubGVuZ3RoIC0gMTsKICAgIHZhciBkYXNoZXMgPSBuZXcgQXJyYXkoZGFzaENvdW50KS5maWxsKCdfJykuam9pbignICcpOwogICAgdmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgZGl2LmNsYXNzTmFtZT0ncS1pdGVtJzsgZGl2LmRhdGFzZXQucWlkPXEubjsKICAgIGRpdi5pbm5lckhUTUw9JzxkaXYgY2xhc3M9InEtdGV4dCI+PGIgY2xhc3M9InFuIj4nK3EubisnLjwvYj48c3Bhbj4nK2VzY2FwZUh0bWwocS50ZXh0KSsnPC9zcGFuPjwvZGl2PicrCiAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ3b3JkLXJvdyI+PHNwYW4gY2xhc3M9ImZpcnN0LWxldHRlciI+JytxLmZpcnN0Kyc8L3NwYW4+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJpbnB1dC1ibGFuayIgZGF0YS1xPSInK3EubisnIiBwbGFjZWhvbGRlcj0iJytkYXNoZXMrJyIgc3R5bGU9Im1pbi13aWR0aDoyMDBweCI+PC9kaXY+JysKICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZlZWRiYWNrIj48L2Rpdj4nOwogICAgbGlzdC5hcHBlbmRDaGlsZChkaXYpOwogIH0pOwp9KSgpOwoKLy8gPT09PT0gV2lyZSBvcHRpb24gY2xpY2tzID09PT09CmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKG9wdCl7CiAgb3B0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihlKXsKICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIHZhciBpbnB1dD1vcHQucXVlcnlTZWxlY3RvcignaW5wdXQnKTsKICAgIHZhciBncm91cD1vcHQucGFyZW50RWxlbWVudDsKICAgIGdyb3VwLnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe28uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKX0pOwogICAgb3B0LmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CiAgICBpbnB1dC5jaGVja2VkPXRydWU7CiAgICB1cGRhdGVQcm9ncmVzcygpOwogIH0pOwp9KTsKCi8vIGlucHV0cwpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaW5wdXQtYmxhbmssLnEtc2VsZWN0JykuZm9yRWFjaChmdW5jdGlvbihlbCl7CiAgZWwuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLHVwZGF0ZVByb2dyZXNzKTsKICBlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLHVwZGF0ZVByb2dyZXNzKTsKfSk7CgovLyA9PT09PSBTdWJtaXQgJiBHcmFkZSA9PT09PQpmdW5jdGlvbiBnZXRNY3FBbnMocWlkKXsKICB2YXIgc2VsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9InEnK3FpZCsnIl06Y2hlY2tlZCcpOwogIHJldHVybiBzZWw\/c2VsLnZhbHVlOm51bGw7Cn0KZnVuY3Rpb24gZ2V0SW5wdXRBbnMocWlkKXsKICB2YXIgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxaWQrJyJdJyk7CiAgcmV0dXJuIGVsP2VsLnZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpOicnOwp9CmZ1bmN0aW9uIGdldFNlbGVjdEFucyhxaWQpewogIHZhciBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucS1zZWxlY3RbZGF0YS1xaWQ9IicrcWlkKyciXScpOwogIHJldHVybiBlbD9lbC52YWx1ZTonJzsKfQpmdW5jdGlvbiB0b3RhbFFzKCl7cmV0dXJuIDU1fQoKZnVuY3Rpb24gYW5zd2VyZWRDb3VudCgpewogIHZhciBuPTA7CiAgLy8gTUNROiBQMSgxLTUpIFAyKDYtMTApIFAzYSgxMS0xNSkgUDQoMjEtMjcpIFA1KDI4LTM1KQogIFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNV0uZm9yRWFjaChmdW5jdGlvbihxKXtpZihnZXRNY3FBbnMocSkpbisrfSk7CiAgWzE2LDE3LDE4LDE5LDIwXS5mb3JFYWNoKGZ1bmN0aW9uKHEpe2lmKGdldFNlbGVjdEFucyhxKSluKyt9KTsKICAvLyBpbnB1dHMKICBmb3IodmFyIGk9MzY7aTw9NTU7aSsrKXtpZihnZXRJbnB1dEFucyhpKSluKyt9CiAgcmV0dXJuIG47Cn0KZnVuY3Rpb24gdXBkYXRlUHJvZ3Jlc3MoKXsKICB2YXIgYT1hbnN3ZXJlZENvdW50KCksIHRvdGFsPXRvdGFsUXMoKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2VyZWRDb3VudCcpLnRleHRDb250ZW50PWE7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2dGaWxsJykuc3R5bGUud2lkdGg9KGEvdG90YWwqMTAwKSsnJSc7Cn0KCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdWJtaXRCdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICB2YXIgc2NvcmU9MDsKICAvLyBNQ1EgcGFydHMKICB2YXIgbWNxUGFydHM9W1AxLFAyLFAzYSxQNCxQNV07CiAgbWNxUGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0KXsKICAgIHBhcnQuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgICAgdmFyIHY9Z2V0TWNxQW5zKHEubiksIGl0ZW09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnEtaXRlbVtkYXRhLXFpZD0iJytxLm4rJyJdJyk7CiAgICAgIGlmKCFpdGVtKXJldHVybjsKICAgICAgaXRlbS5jbGFzc0xpc3QuYWRkKCdhbnN3ZXJlZCcpOwogICAgICAvLyBtYXJrIGNvcnJlY3QvaW5jb3JyZWN0IG9wdHMKICAgICAgaXRlbS5xdWVyeVNlbGVjdG9yQWxsKCcub3B0JykuZm9yRWFjaChmdW5jdGlvbihvKXsKICAgICAgICB2YXIgTD1vLmRhdGFzZXQubGV0dGVyOwogICAgICAgIGlmKEw9PT1xLmFucyl7by5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0LW9wdCcpfQogICAgICAgIGlmKHY9PT1MKWlmKEwhPT1xLmFucyl7by5jbGFzc0xpc3QuYWRkKCd3cm9uZy1vcHQnKX0KICAgICAgfSk7CiAgICAgIHZhciBmYj1pdGVtLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjaycpOwogICAgICBpZih2PT09cS5hbnMpe3Njb3JlKys7IGl0ZW0uY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOyBmYi50ZXh0Q29udGVudD0nXHUyNzE0IENvcnJlY3QgXHUyMDE0ICcrcS5hbnN9CiAgICAgIGVsc2V7aXRlbS5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBmYi50ZXh0Q29udGVudD0nXHUyNzE4IFdyb25nIFx1MjAxNCBjb3JyZWN0IGFuc3dlcjogJytxLmFucyArICh2PygnICh5b3UgY2hvc2UgJyt2KycpJyk6JyAobm8gYW5zd2VyKScpfQogICAgfSk7CiAgfSk7CiAgLy8gUGFydCAzYiBzZWxlY3RzCiAgdmFyIHAzYkZiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0M2JGZWVkYmFjaycpOwogIHAzYkZiLmlubmVySFRNTD0nJzsKICBPYmplY3Qua2V5cyhQM2JBbnMpLmZvckVhY2goZnVuY3Rpb24ocWlkKXsKICAgIHZhciB2PWdldFNlbGVjdEFucyhxaWQpLCBjb3JyZWN0PVAzYkFuc1txaWRdOwogICAgdmFyIGVsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xLXNlbGVjdFtkYXRhLXFpZD0iJytxaWQrJyJdJyk7CiAgICBpZihlbCl7ZWwuc3R5bGUuYm9yZGVyQ29sb3I9KHY9PT1jb3JyZWN0PycjMTBCOTgxJzonI0VGNDQ0NCcpOyBlbC5zdHlsZS5ib3JkZXJXaWR0aD0nMnB4JzsgZWwuc3R5bGUuYm9yZGVyU3R5bGU9J3NvbGlkJ30KICAgIHZhciBub3RlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgbm90ZS5zdHlsZS5jc3NUZXh0PSdwYWRkaW5nOjhweCAxMnB4O2JvcmRlci1yYWRpdXM6OHB4O21hcmdpbi10b3A6NnB4O2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NjAwOycrKHY9PT1jb3JyZWN0PydiYWNrZ3JvdW5kOnJnYmEoMTYsMTg1LDEyOSwuMTIpO2NvbG9yOiMwNjVGNDYnOidiYWNrZ3JvdW5kOnJnYmEoMjM5LDY4LDY4LC4xMCk7Y29sb3I6Izk5MUIxQicpOwogICAgbm90ZS5pbm5lckhUTUw9JzxiPlEnK3FpZCsnPC9iPjogJysodj09PWNvcnJlY3Q\/J1x1MjcxNCBDb3JyZWN0ICgnK2NvcnJlY3QrJyknOidcdTI3MTggV3JvbmcgXHUyMDE0IGNvcnJlY3Q6ICcrY29ycmVjdCsodj8nLCB5b3UgY2hvc2UgJyt2OicsIG5vIGFuc3dlcicpKTsKICAgIHAzYkZiLmFwcGVuZENoaWxkKG5vdGUpOwogICAgaWYodj09PWNvcnJlY3Qpc2NvcmUrKzsKICB9KTsKICAvLyBQYXJ0IDYKICBQNi5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgdmFyIHY9Z2V0SW5wdXRBbnMocS5uKSwgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxLm4rJyJdJyksIGl0ZW09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnEtaXRlbVtkYXRhLXFpZD0iJytxLm4rJyJdJyk7CiAgICBpZighZWx8fCFpdGVtKXJldHVybjsKICAgIGl0ZW0uY2xhc3NMaXN0LmFkZCgnYW5zd2VyZWQnKTsKICAgIHZhciBvaz0odj09PXEuYW5zLnRvTG93ZXJDYXNlKCkpOwogICAgaWYob2spe3Njb3JlKys7IGVsLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTsgaXRlbS5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7IGl0ZW0ucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrJykudGV4dENvbnRlbnQ9J1x1MjcxNCBDb3JyZWN0J30KICAgIGVsc2V7ZWwuY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTsgaXRlbS5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBpdGVtLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjaycpLnRleHRDb250ZW50PSdcdTI3MTggV3JvbmcgXHUyMDE0IGNvcnJlY3Q6ICcrcS5hbnN9CiAgfSk7CiAgLy8gUGFydCA3CiAgT2JqZWN0LmtleXMoUDdBbnMpLmZvckVhY2goZnVuY3Rpb24ocWlkKXsKICAgIHZhciB2PWdldElucHV0QW5zKHFpZCksIGVsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5pbnB1dC1ibGFua1tkYXRhLXE9IicrcWlkKyciXScpLCBhY2NlcHRlZD1QN0Fuc1txaWRdOwogICAgaWYoIWVsKXJldHVybjsKICAgIHZhciBvaz1hY2NlcHRlZC5pbmRleE9mKHYpPj0wOwogICAgaWYob2spe3Njb3JlKys7IGVsLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKX0gZWxzZSB7ZWwuY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTsgZWwudGl0bGU9J0NvcnJlY3Q6ICcrYWNjZXB0ZWQuam9pbignIC8gJyl9CiAgfSk7CiAgLy8gUGFydCA4CiAgT2JqZWN0LmtleXMoUDhBbnMpLmZvckVhY2goZnVuY3Rpb24ocWlkKXsKICAgIHZhciB2PWdldElucHV0QW5zKHFpZCksIGVsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5pbnB1dC1ibGFua1tkYXRhLXE9IicrcWlkKyciXScpLCBhY2NlcHRlZD1QOEFuc1txaWRdOwogICAgaWYoIWVsKXJldHVybjsKICAgIHZhciBvaz1hY2NlcHRlZC5pbmRleE9mKHYpPj0wOwogICAgaWYob2spe3Njb3JlKys7IGVsLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKX0gZWxzZSB7ZWwuY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTsgZWwudGl0bGU9J0NvcnJlY3Q6ICcrYWNjZXB0ZWQuam9pbignIC8gJyl9CiAgfSk7CgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY29yZU5vdycpLnRleHRDb250ZW50PXNjb3JlOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaW5hbFNjb3JlJykudGV4dENvbnRlbnQ9c2NvcmU7CiAgdmFyIHBjdD1NYXRoLnJvdW5kKHNjb3JlLzU1KjEwMCk7CiAgdmFyIG1zZz0nJzsKICBpZihwY3Q+PTg1KSBtc2c9J1x1ezFGM0M2fSBFeGNlbGxlbnQhIFlvdSBhcmUgd2VsbCBwcmVwYXJlZCBmb3IgdGhlIHJlYWwgS0VUIGV4YW0uJzsKICBlbHNlIGlmKHBjdD49NzApIG1zZz0nXHV7MUY0NER9IEdvb2Qgam9iISBBIGZldyBtb3JlIHRlc3RzIGFuZCB5b3Ugd2lsbCBiZSByZWFkeS4nOwogIGVsc2UgaWYocGN0Pj01MCkgbXNnPSdcdXsxRjREQX0gS2VlcCBwcmFjdGlzaW5nIFx1MjAxNCByZXZpZXcgdGhlIHdyb25nIGFuc3dlcnMgYWJvdmUuJzsKICBlbHNlIG1zZz0nXHV7MUY0QUF9IFN0YXJ0IHdpdGggdGhlIGJhc2ljcy4gUmVyZWFkIHRoZSBwYXNzYWdlcyBhbmQgdHJ5IGFnYWluLic7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHNNc2cnKS50ZXh0Q29udGVudD1tc2c7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHNCYW5uZXInKS5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7CiAgc2V0VGltZW91dChmdW5jdGlvbigpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzQmFubmVyJykuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidjZW50ZXInfSl9LDEyMCk7Cn0pOwoKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc2V0QnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgaWYoIWNvbmZpcm0oJ1Jlc2V0IGFsbCBhbnN3ZXJzPycpKXJldHVybjsKICBsb2NhdGlvbi5yZWxvYWQoKTsKfSk7CgovLyBXcml0aW5nIHdvcmQgY291bnRlcgp2YXIgdGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyaXRpbmdBcmVhJyksd2M9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3djQ291bnRlcicpOwp0YS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsZnVuY3Rpb24oKXsKICB2YXIgdz10YS52YWx1ZS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcihCb29sZWFuKS5sZW5ndGg7CiAgd2MudGV4dENvbnRlbnQ9dysnIHdvcmRzIFx1MDBCNyB0YXJnZXQgMjVcdTIwMTMzNSc7CiAgd2MuY2xhc3NMaXN0LnJlbW92ZSgnb2snLCdvdmVyJyk7CiAgaWYodz49MjUpaWYodzw9MzUpd2MuY2xhc3NMaXN0LmFkZCgnb2snKTsKICBlbHNlIGlmKHc+MzUpd2MuY2xhc3NMaXN0LmFkZCgnb3ZlcicpOwp9KTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbXBsZVRvZ2dsZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW1wbGVCb3gnKS5jbGFzc0xpc3QudG9nZ2xlKCdzaG93Jyk7Cn0pOwoKLy8gPT09PT0gU0hPVyBBTlNXRVIgUEVSLVEgRkVBVFVSRSA9PT09PQpmdW5jdGlvbiBnZXRBbnNGb3JRKG4pewogIGlmKG4+PTEpIGlmKG48PTUpIHJldHVybiAoUDEuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09bn0pfHx7fSkuYW5zOwogIGlmKG4+PTYpIGlmKG48PTEwKSByZXR1cm4gKFAyLmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubj09PW59KXx8e30pLmFuczsKICBpZihuPj0xMSkgaWYobjw9MTUpIHJldHVybiAoUDNhLmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubj09PW59KXx8e30pLmFuczsKICBpZihuPj0yMSkgaWYobjw9MjcpIHJldHVybiAoUDQuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09bn0pfHx7fSkuYW5zOwogIGlmKG4+PTI4KSBpZihuPD0zNSkgcmV0dXJuIChQNS5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm49PT1ufSl8fHt9KS5hbnM7CiAgcmV0dXJuIG51bGw7Cn0KLy8gTUNRIHEtaXRlbXM6IGFwcGVuZCBTaG93IEFuc3dlciBidXR0b24KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnEtaXRlbScpLmZvckVhY2goZnVuY3Rpb24oaXRlbSl7CiAgaWYoaXRlbS5xdWVyeVNlbGVjdG9yKCcuc2hvdy1hbnMtYnRuJykpIHJldHVybjsKICB2YXIgcWlkPXBhcnNlSW50KGl0ZW0uZGF0YXNldC5xaWQpOwogIHZhciBidG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgYnRuLmNsYXNzTmFtZT0nc2hvdy1hbnMtYnRuJzsgYnRuLnR5cGU9J2J1dHRvbic7CiAgYnRuLmlubmVySFRNTD0nXHV7MUY0NDF9IFNob3cgQW5zd2VyJzsKICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICB2YXIgaXNQNj1mYWxzZTsgaWYocWlkPj0zNikgaWYocWlkPD00MCkgaXNQNj10cnVlOwogICAgaWYoaXNQNil7CiAgICAgIC8vIFBhcnQgNiBzcGVsbCBpbnB1dAogICAgICB2YXIgcDZxPVA2LmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubj09PXFpZH0pOwogICAgICB2YXIgaW5wdXQ9aXRlbS5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmsnKTsKICAgICAgaWYoaW5wdXQpIGlmKHA2cSl7aW5wdXQudmFsdWU9cDZxLmFuczsgaW5wdXQuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOyBpbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7fQogICAgICB2YXIgZmI2PWl0ZW0ucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrJyk7CiAgICAgIGlmKGZiNikgaWYocDZxKXtpdGVtLmNsYXNzTGlzdC5hZGQoJ2Fuc3dlcmVkJyk7IGl0ZW0uY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOyBmYjYudGV4dENvbnRlbnQ9J1x1ezFGNDQxfSBBbnN3ZXI6ICcrcDZxLmFuczt9CiAgICB9IGVsc2UgewogICAgICB2YXIgYW5zPWdldEFuc0ZvclEocWlkKTsKICAgICAgaWYoIWFucykgcmV0dXJuOwogICAgICAvLyBoaWdobGlnaHQgY29ycmVjdCBvcHRpb24KICAgICAgdmFyIGNvcnJlY3RPcHQ9aXRlbS5xdWVyeVNlbGVjdG9yKCcub3B0W2RhdGEtbGV0dGVyPSInK2FucysnIl0nKTsKICAgICAgaWYoY29ycmVjdE9wdCl7Y29ycmVjdE9wdC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0LW9wdCcpO30KICAgICAgLy8gc2ltdWxhdGUgY2xpY2sgc28gdXBkYXRlUHJvZ3Jlc3MgZmlyZXMKICAgICAgdmFyIGZiPWl0ZW0ucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrJyk7CiAgICAgIGlmKGZiKXtpdGVtLmNsYXNzTGlzdC5hZGQoJ2Fuc3dlcmVkJyk7IGZiLnN0eWxlLmJhY2tncm91bmQ9J3JnYmEoMTYsMTg1LDEyOSwuMTIpJzsgZmIuc3R5bGUuY29sb3I9JyMwNjVGNDYnOyBmYi50ZXh0Q29udGVudD0nXHV7MUY0NDF9IEFuc3dlcjogJythbnM7fQogICAgfQogICAgYnRuLmRpc2FibGVkPXRydWU7CiAgfSk7CiAgaXRlbS5hcHBlbmRDaGlsZChidG4pOwp9KTsKLy8gUGFydCAzYiBzZWxlY3RzOiBhcHBlbmQgaW5saW5lIFNob3cgQW5zd2VyIGJ1dHRvbgpbMTYsMTcsMTgsMTksMjBdLmZvckVhY2goZnVuY3Rpb24ocWlkKXsKICB2YXIgc2VsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xLXNlbGVjdFtkYXRhLXFpZD0iJytxaWQrJyJdJyk7CiAgaWYoIXNlbCkgcmV0dXJuOwogIHZhciBidG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgYnRuLmNsYXNzTmFtZT0nc2hvdy1hbnMtYnRuLWlubGluZSc7IGJ0bi50eXBlPSdidXR0b24nOwogIHZhciBhbnM9UDNiQW5zW3FpZF07CiAgYnRuLmlubmVySFRNTD0nXHV7MUY0NDF9ICcrYW5zOwogIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgIHNlbC52YWx1ZT1hbnM7IHNlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOwogICAgc2VsLnN0eWxlLmJvcmRlckNvbG9yPScjMTBCOTgxJzsgc2VsLnN0eWxlLmJvcmRlcldpZHRoPScycHgnOyBzZWwuc3R5bGUuYm9yZGVyU3R5bGU9J3NvbGlkJzsKICAgIGJ0bi5kaXNhYmxlZD10cnVlOwogIH0pOwogIHNlbC5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyZW5kJywgYnRuKTsKfSk7Ci8vIFBhcnQgNyAmIDggaW5wdXRzOiBhcHBlbmQgaW5saW5lIFNob3cgQW5zd2VyIGJ1dHRvbgpmb3IodmFyIHFpPTQxO3FpPD01NTtxaSsrKXsKICAoZnVuY3Rpb24ocWlkKXsKICAgIHZhciBpbnA9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxaWQrJyJdJyk7CiAgICBpZighaW5wKSByZXR1cm47CiAgICB2YXIgYW5zPShxaWQ8PTUwKT9QN0Fuc1txaWRdWzBdOlA4QW5zW3FpZF1bMF07CiAgICB2YXIgYnRuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgYnRuLmNsYXNzTmFtZT0nc2hvdy1hbnMtYnRuLWlubGluZSc7IGJ0bi50eXBlPSdidXR0b24nOwogICAgYnRuLmlubmVySFRNTD0nXHV7MUY0NDF9ICcrYW5zOwogICAgYnRuLnRpdGxlPSdDbGljayB0byBmaWxsOiAnK2FuczsKICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgaW5wLnZhbHVlPWFuczsgaW5wLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTsgaW5wLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcpKTsKICAgICAgYnRuLmRpc2FibGVkPXRydWU7CiAgICB9KTsKICAgIGlucC5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyZW5kJywgYnRuKTsKICB9KShxaSk7Cn0KCn0pKCk7Cg=='));<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>All English 4U Grammar IELTS TOEFL Cambridge CELPIP Dictation Back Grammar IELTS TOEFL Cambridge CELPIP Dictation Cambridge English &#183; Key (KET) KET 1 &#8212; Test 4Reading &amp; Writing Practise the full A2 Key Reading &amp; Writing paper &#8212; 9 parts, 56 questions, instant auto-grading. Test yourself like the real exam, then check answers and learn [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-1941","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/1941","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=1941"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/1941\/revisions"}],"predecessor-version":[{"id":5942,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/1941\/revisions\/5942"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=1941"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}