{"id":2051,"date":"2026-06-10T18:06:37","date_gmt":"2026-06-10T18:06:37","guid":{"rendered":"https:\/\/allenglish4u.com\/toefl-step-1-book-2-grammar\/"},"modified":"2026-06-10T18:06:37","modified_gmt":"2026-06-10T18:06:37","slug":"toefl-step-1-book-2-grammar","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/toefl-step-1-book-2-grammar\/","title":{"rendered":"TOEFL Step 1 Book 2 Grammar"},"content":{"rendered":"<p><!-- TOEFL Primary Step 1 Book 2 Unit 1 Grammar &#8212; interactive auto-grade (AE4U) --><\/p>\n<div class=\"toefl-reading\" id=\"toeflReading\">\n<style>\n.toefl-reading *{box-sizing:border-box}\n.toefl-reading{--cy:#06b6d4;--bl:#8b5cf6;--ink:#0f172a;--mut:#64748b;--line:#e2e8f0;--ok:#16a34a;--okbg:#dcfce7;--no:#dc2626;--nobg:#fee2e2;--cardbg:#ffffff;\n font-family:'Plus Jakarta Sans',system-ui,-apple-system,Segoe UI,Roboto,sans-serif !important;color:var(--ink);\n max-width:880px;margin:0 auto;padding:18px 16px 80px;line-height:1.6;-webkit-font-smoothing:antialiased}\n.toefl-reading h1,.toefl-reading h2,.toefl-reading h3,.toefl-reading p{margin:0}\n.tr-hero{background:linear-gradient(135deg,var(--bl),var(--cy));color:#fff;border-radius:22px;padding:30px 26px;box-shadow:0 18px 40px -18px rgba(139,92,246,.55);position:relative;overflow:hidden}\n.tr-hero::after{content:\"\";position:absolute;right:-40px;top:-40px;width:170px;height:170px;background:rgba(255,255,255,.14);border-radius:50%}\n.tr-eyebrow{font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;opacity:.92}\n.tr-hero h1{font-size:30px;font-weight:800;margin:8px 0 6px;letter-spacing:-.02em}\n.tr-hero p{font-size:15px;opacity:.95;max-width:560px}\n.tr-meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}\n.tr-chip{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600}\n.tr-bar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:16px;\n display:flex;align-items:center;gap:14px;padding:12px 16px;margin:18px 0 8px;box-shadow:0 6px 18px -12px rgba(0,0,0,.25)}\n.tr-progwrap{flex:1;height:10px;background:#eef2f7;border-radius:999px;overflow:hidden}\n.tr-progfill{height:100%;width:0;background:linear-gradient(90deg,var(--bl),var(--cy));transition:width .35s}\n.tr-progtxt{font-size:13px;font-weight:700;color:var(--mut);white-space:nowrap}\n.tr-part{margin-top:26px}\n.tr-parthead{display:flex;align-items:center;gap:12px;margin-bottom:6px}\n.tr-partbadge{background:linear-gradient(135deg,var(--bl),var(--cy));color:#fff;font-weight:800;font-size:14px;border-radius:10px;padding:6px 12px;letter-spacing:.02em}\n.tr-parttitle{font-size:18px;font-weight:800}\n.tr-instr{background:#faf5ff;border:1px solid #e9d5ff;color:#6b21a8;border-radius:12px;padding:10px 14px;font-weight:600;font-size:14.5px;margin:12px 0}\n.tr-story{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 22px;margin:14px 0;box-shadow:0 8px 22px -18px rgba(0,0,0,.3);font-size:17px;line-height:2.1}\n.tr-blank{display:inline-flex;align-items:center;gap:5px;background:#f8fafc;border:1.6px dashed #cbd5e1;border-radius:10px;padding:1px 4px;margin:0 2px}\n.tr-blank input{font:inherit;border:none;background:transparent;outline:none;width:115px;font-weight:600;color:var(--bl);padding:3px 6px}\n.tr-blank input:focus{background:#fff}\n.tr-blank .num{background:#f3e8ff;color:var(--bl);font-weight:800;font-size:13px;border-radius:6px;padding:1px 6px;min-width:22px;text-align:center;line-height:1.4}\n.tr-blank.correct{border-color:var(--ok);background:var(--okbg)}\n.tr-blank.correct input{color:var(--ok)}\n.tr-blank.wrong{border-color:var(--no);background:var(--nobg)}\n.tr-blank.wrong input{color:var(--no)}\n.tr-wbox{background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;padding:12px 16px;margin:10px 0 14px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}\n.tr-wbox .lbl{font-weight:800;color:#c2410c;font-size:14px}\n.tr-wbox .wd{background:#fff;border:1px solid #fed7aa;color:#9a3412;border-radius:999px;padding:5px 13px;font-size:13.5px;font-weight:600}\n.tr-q{background:var(--cardbg);border:1px solid var(--line);border-radius:16px;padding:16px 18px;margin:14px 0;box-shadow:0 8px 22px -18px rgba(0,0,0,.3);scroll-margin-top:80px}\n.tr-qhead{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px}\n.tr-qnum{flex:none;width:30px;height:30px;border-radius:9px;background:#f3e8ff;color:var(--bl);font-weight:800;display:flex;align-items:center;justify-content:center;font-size:14px}\n.tr-qtext{font-weight:600;font-size:16px;padding-top:3px;flex:1}\n.tr-qtxt-input{font:inherit;width:100%;border:1.6px solid var(--line);border-radius:10px;padding:9px 12px;background:#fff;color:var(--ink);margin-top:4px;font-size:15px}\n.tr-qtxt-input:focus{outline:none;border-color:var(--bl);background:#faf5ff}\n.tr-qtxt-input.correct{border-color:var(--ok);background:var(--okbg);color:var(--ok);font-weight:700}\n.tr-qtxt-input.wrong{border-color:var(--no);background:var(--nobg);color:var(--no);font-weight:700}\n.tr-opts{display:flex;flex-direction:column;gap:9px;margin-top:8px}\n.tr-opt{display:flex;align-items:center;gap:11px;border:1.6px solid var(--line);border-radius:12px;padding:11px 13px;cursor:pointer;transition:.15s;font-size:15px;background:#fff}\n.tr-opt:hover{border-color:var(--bl);background:#faf7ff}\n.tr-opt input{width:18px;height:18px;accent-color:var(--bl);flex:none;margin:0}\n.tr-opt .lt{font-weight:800;color:var(--mut);flex:none;width:20px}\n.tr-opt.sel{border-color:var(--bl);background:#f3e8ff}\n.tr-opt.correct{border-color:var(--ok);background:var(--okbg)}\n.tr-opt.wrong{border-color:var(--no);background:var(--nobg)}\n.tr-hint-toggle{background:#fff;border:1.5px solid var(--line);color:var(--mut);font-weight:700;font-size:12.5px;border-radius:999px;padding:6px 14px;cursor:pointer;font-family:inherit !important;transition:.15s;margial-right:8px}\n.tr-hint-toggle:hover{border-color:var(--bl);color:var(--bl)}\n.tr-hint-box{margin-top:9px;background:#faf5ff;border:1px dashed #c4b5fd;border-radius:12px;padding:10px 14px;display:none}\n.tr-hint-box.show{display:block}\n.tr-hint-box .hl{font-size:12.5px;font-weight:700;color:#7c3aed;margin-bottom:6px;letter-spacing:.04em;text-transform:uppercase}\n.tr-qfoot{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}\n.tr-show{background:#fff;border:1.5px solid var(--line);color:var(--mut);font-weight:700;font-size:12.5px;border-radius:999px;padding:6px 14px;cursor:pointer;font-family:inherit !important;transition:.15s}\n.tr-show:hover{border-color:var(--bl);color:var(--bl)}\n.tr-ans{margin-top:9px;font-size:14px;font-weight:700;color:var(--ok);background:var(--okbg);border-radius:10px;padding:8px 12px;display:none}\n.tr-ans.show{display:block}\n.tr-actions{position:sticky;bottom:14px;display:flex;gap:12px;justify-content:center;margin-top:30px;z-index:25}\n.tr-btn{font-family:inherit !important;font-weight:800;font-size:15px;border-radius:14px;padding:14px 26px;cursor:pointer;border:none;transition:.18s;box-shadow:0 12px 26px -12px rgba(139,92,246,.55)}\n.tr-btn.primary{background:linear-gradient(135deg,var(--bl),var(--cy));color:#fff}\n.tr-btn.primary:hover{transform:translateY(-2px)}\n.tr-btn.ghost{background:#fff;color:var(--bl);border:1.5px solid var(--line);box-shadow:none}\n.tr-result{display:none;margin-top:22px;border-radius:20px;padding:26px;text-align:center;color:#fff;background:linear-gradient(135deg,var(--bl),var(--cy));box-shadow:0 18px 40px -18px rgba(139,92,246,.55)}\n.tr-result.show{display:block}\n.tr-score{font-size:46px;font-weight:800;line-height:1}\n.tr-scorelbl{font-size:15px;opacity:.95;margin-top:6px}\n.tr-break{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:18px}\n.tr-bcell{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.3);border-radius:12px;padding:10px 16px;font-size:14px;font-weight:700}\n.tr-foot-note{text-align:center;color:var(--mut);font-size:13px;margin-top:30px}\n@media(max-width:560px){.tr-hero h1{font-size:24px}.tr-story{font-size:15.5px;line-height:1.95;padding:14px 16px}.tr-blank input{width:90px;font-size:14px}}\n.tr-tip{background:#faf5ff;border:1px solid #e9d5ff;border-radius:16px;padding:16px 20px;margin:16px 0 2px;box-shadow:0 8px 22px -18px rgba(0,0,0,.3)}\n.tr-tip h3{font-size:15px;font-weight:800;color:#7c3aed;margin:0 0 10px}\n.tr-tip p{margin:6px 0;font-size:14.5px;color:#0f172a}\n.tr-tip b{color:#7c3aed}\n.tr-tip .ex{color:#64748b;font-size:13.5px}\n.tr-tip table{width:100%;border-collapse:collapse;margin-top:8px;font-size:13.5px}\n.tr-tip th,.tr-tip td{padding:7px 10px;border:1px solid #e9d5ff;text-align:left;background:#fff}\n.tr-tip th{background:#f3e8ff;font-weight:700;color:#6b21a8}\n.tr-tip td b{color:#7c3aed}\n<\/style>\n<div class=\"tr-hero\">\n<div class=\"tr-eyebrow\">TOEFL Primary &#183; Step 1 &#183; Book 2<\/div>\n<h1>Grammar &#8212; The Simple Present<\/h1>\n<p>Practice the simple present tense &#8212; daily actions, third-person -s, and negatives. 24 questions across 3 parts.<\/p>\n<div class=\"tr-meta\">\n    <span class=\"tr-chip\">&#128218; 3 Parts<\/span><br \/>\n    <span class=\"tr-chip\">&#9999;&#65039; 24 Questions<\/span><br \/>\n    <span class=\"tr-chip\">&#9889; Auto-graded<\/span>\n  <\/div>\n<\/div>\n<div class=\"tr-tip\">\n<h3>&#128218; Grammar Tip &#8212; The Simple Present<\/h3>\n<p>Use the <b>simple present<\/b> to talk about things we do <b>regularly<\/b>.<\/p>\n<p class=\"ex\">&#9656; I <b>walk<\/b> to school in the morning. &#183; He <b>drives<\/b> to work. &#183; We <b>play<\/b> soccer after school.<\/p>\n<p>Make the negative form with <b>do not \/ does not<\/b>.<\/p>\n<p class=\"ex\">&#9656; I <b>do not<\/b> walk to school. &#183; He <b>does not<\/b> drive to work.<\/p>\n<p style=\"margin-top:10px\"><b>Third-person singular<\/b> (he, she, it) &#8212; change the verb:<\/p>\n<table>\n<tr>\n<th>Verb type<\/th>\n<th>Rule<\/th>\n<th>Examples<\/th>\n<\/tr>\n<tr>\n<td>most verbs<\/td>\n<td>add <b>-s<\/b><\/td>\n<td>likes, eats, sleeps, wears, reads<\/td>\n<\/tr>\n<tr>\n<td>verbs ending in <b>ch, sh, s, x, z<\/b><\/td>\n<td>add <b>-es<\/b><\/td>\n<td>watches, washes, finishes<\/td>\n<\/tr>\n<tr>\n<td>consonant + <b>y<\/b><\/td>\n<td>remove <b>y<\/b>, add <b>-ies<\/b><\/td>\n<td>worries, studies, hurries<\/td>\n<\/tr>\n<tr>\n<td>vowel + <b>y<\/b><\/td>\n<td>add <b>-s<\/b><\/td>\n<td>plays, stays, buys, says<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<div class=\"tr-bar\">\n  <span class=\"tr-progtxt\" id=\"trAnswered\">0 \/ 24 answered<\/span><\/p>\n<div class=\"tr-progwrap\">\n<div class=\"tr-progfill\" id=\"trProg\"><\/div>\n<\/div>\n<p>  <span class=\"tr-progtxt\" id=\"trScoreMini\">&#8212;<\/span>\n<\/div>\n<div id=\"trBody\"><\/div>\n<div class=\"tr-actions\">\n  <button class=\"tr-btn primary\" id=\"trSubmit\">Check my answers<\/button><br \/>\n  <button class=\"tr-btn ghost\" id=\"trReset\">Reset<\/button>\n<\/div>\n<div class=\"tr-result\" id=\"trResult\">\n<div class=\"tr-score\" id=\"trScore\">0\/24<\/div>\n<div class=\"tr-scorelbl\" id=\"trScoreMsg\">Let&#8217;s see how you did!<\/div>\n<div class=\"tr-break\" id=\"trBreak\"><\/div>\n<\/div>\n<p class=\"tr-foot-note\">TOEFL Primary&#174; is a registered trademark of ETS. This free practice page is not endorsed by or affiliated with ETS. &#183; All English 4U<\/p>\n<\/div>\n<p><script>eval(atob('CihmdW5jdGlvbigpewogIC8vIFBhcnQgQTogSSB1c3VhbGx5IC4uLiBzdG9yeSBcdTIwMTQgMTAgYmxhbmtzLiBBbnN3ZXJzIChwaXBlID0gYWx0ZXJuYXRlKToKICB2YXIgU1RPUllfQSA9IFsKICAgIHtwcmU6J0kgdXN1YWxseSAnLCBhbnM6J2dldCB1cCcsIHBvc3Q6JyBhdCA3IGluIHRoZSBtb3JuaW5nLiBJICd9LAogICAge2FuczonZ298d2FsaycsIHBvc3Q6JyB0byB0aGUgYmF0aHJvb20uIEkgJ30sCiAgICB7YW5zOid0YWtlJywgcG9zdDonIGEgc2hvd2VyIGFuZCAnfSwKICAgIHthbnM6J2JydXNoJywgcG9zdDonIG15IHRlZXRoLiBUaGVuIEkgJ30sCiAgICB7YW5zOidwdXQnLCBwb3N0Oicgb24gbXkgc2Nob29sIHVuaWZvcm0uIEkgJ30sCiAgICB7YW5zOidnb3x3YWxrJywgcG9zdDonIGludG8gdGhlIGtpdGNoZW4gYW5kICd9LAogICAge2Fuczonc2F5JywgcG9zdDonIGdvb2QgbW9ybmluZyB0byBteSBwYXJlbnRzLiBUaGVuIEkgJ30sCiAgICB7YW5zOidkcmluaycsIHBvc3Q6JyBhIGdsYXNzIG9mIHdhdGVyLiBJICd9LAogICAge2FuczoncHV0JywgcG9zdDonIG9uIG15IHNob2VzIGFuZCAnfSwKICAgIHthbnM6J3dhaXQnLCBwb3N0OicgZm9yIHRoZSBzY2hvb2wgYnVzLid9CiAgXTsKICB2YXIgV09SREJPWF9BID0gWydnZXQgdXAnLCdnbycsJ3dhbGsnLCd0YWtlJywnYnJ1c2gnLCdkcmluaycsJ3dhaXQnLCdwdXQnLCdzYXknXTsKCiAgLy8gUGFydCBCOiBUb20gdXN1YWxseSAuLi4gc3RvcnkgXHUyMDE0IDEwIGJsYW5rcyAzcmQtcGVyc29uLgogIHZhciBTVE9SWV9CID0gWwogICAge3ByZTonVG9tIHVzdWFsbHkgJywgYW5zOidnZXRzIHVwJywgcG9zdDonIGF0IDcgaW4gdGhlIG1vcm5pbmcuIEhlICd9LAogICAge2FuczonZ29lc3x3YWxrcycsIHBvc3Q6JyB0byB0aGUgYmF0aHJvb20uIEhlICd9LAogICAge2FuczondGFrZXMnLCBwb3N0OicgYSBzaG93ZXIgYW5kICd9LAogICAge2FuczonYnJ1c2hlcycsIHBvc3Q6JyBoaXMgdGVldGguIFRoZW4gaGUgJ30sCiAgICB7YW5zOidwdXRzJywgcG9zdDonIG9uIGhpcyBzY2hvb2wgdW5pZm9ybS4gSGUgJ30sCiAgICB7YW5zOidnb2VzfHdhbGtzJywgcG9zdDonIGludG8gdGhlIGtpdGNoZW4gYW5kICd9LAogICAge2Fuczonc2F5cycsIHBvc3Q6JyBnb29kIG1vcm5pbmcgdG8gaGlzIHBhcmVudHMuIFRoZW4gaGUgJ30sCiAgICB7YW5zOidkcmlua3MnLCBwb3N0OicgYSBnbGFzcyBvZiB3YXRlci4gSGUgJ30sCiAgICB7YW5zOidwdXRzJywgcG9zdDonIG9uIGhpcyBzaG9lcyBhbmQgJ30sCiAgICB7YW5zOid3YWl0cycsIHBvc3Q6JyBmb3IgdGhlIHNjaG9vbCBidXMuJ30KICBdOwogIHZhciBXT1JEQk9YX0IgPSBbJ2dldHMgdXAnLCdnb2VzJywnd2Fsa3MnLCd0YWtlcycsJ2JydXNoZXMnLCdkcmlua3MnLCd3YWl0cycsJ3B1dHMnLCdzYXlzJ107CgogIC8vIFBhcnQgQzogUmV3cml0ZSBuZWdhdGl2ZSBcdTIwMTQgNCBzZW50ZW5jZXMuIFRleHQgaW5wdXQgKyBNQ1EgaGludC4KICB2YXIgUEFSVF9DID0gWwogICAge29yaWc6J0kgZGFuY2UgYXQgdGhlIHBhcnR5LicsIGFuczonSSBkbyBub3QgZGFuY2UgYXQgdGhlIHBhcnR5LnxJIGRvblx1MjAxOXQgZGFuY2UgYXQgdGhlIHBhcnR5LnxJIGRvblwndCBkYW5jZSBhdCB0aGUgcGFydHkuJywgb3B0czpbJ0kgZG8gbm90IGRhbmNlIGF0IHRoZSBwYXJ0eS4nLCdJIGFtIG5vdCBkYW5jZSBhdCB0aGUgcGFydHkuJywnSSBkb2VzIG5vdCBkYW5jZSBhdCB0aGUgcGFydHkuJ119LAogICAge29yaWc6J1lvdSBsb29rIGdyZWF0LicsIGFuczonWW91IGRvIG5vdCBsb29rIGdyZWF0LnxZb3UgZG9uXHUyMDE5dCBsb29rIGdyZWF0LnxZb3UgZG9uXCd0IGxvb2sgZ3JlYXQuJywgb3B0czpbJ1lvdSBkb2VzIG5vdCBsb29rIGdyZWF0LicsJ1lvdSBkbyBub3QgbG9vayBncmVhdC4nLCdZb3Ugbm90IGxvb2sgZ3JlYXQuJ119LAogICAge29yaWc6J1NoZSB3YWxrcyBzbG93bHkuJywgYW5zOidTaGUgZG9lcyBub3Qgd2FsayBzbG93bHkufFNoZSBkb2Vzblx1MjAxOXQgd2FsayBzbG93bHkufFNoZSBkb2VzblwndCB3YWxrIHNsb3dseS4nLCBvcHRzOlsnU2hlIGRvIG5vdCB3YWxrcyBzbG93bHkuJywnU2hlIG5vdCB3YWxrcyBzbG93bHkuJywnU2hlIGRvZXMgbm90IHdhbGsgc2xvd2x5LiddfSwKICAgIHtvcmlnOidUaGV5IGJ1eSB0aGUgY2FrZS4nLCBhbnM6J1RoZXkgZG8gbm90IGJ1eSB0aGUgY2FrZS58VGhleSBkb25cdTIwMTl0IGJ1eSB0aGUgY2FrZS58VGhleSBkb25cJ3QgYnV5IHRoZSBjYWtlLicsIG9wdHM6WydUaGV5IGRvIG5vdCBidXkgdGhlIGNha2UuJywnVGhleSBkb2VzIG5vdCBidXkgdGhlIGNha2UuJywnVGhleSBhcmUgbm90IGJ1eSB0aGUgY2FrZS4nXX0KICBdOwoKICB2YXIgUk9PVD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9lZmxSZWFkaW5nJyk7CiAgdmFyIEJPRFk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyQm9keScpOwogIHZhciBBTlM9W107IC8vIGZsYXQgbGlzdCBvZiBjb3JyZWN0IGFuc3dlcnMgcGVyIHF1ZXN0aW9uL2JsYW5rCiAgdmFyIFFLSU5EPVtdOyAvLyAnYmxhbmsnIHwgJ21jcScgfCAndGV4dCcKICB2YXIgcWk9MDsKCiAgLy8gLS0tIFBhcnQgQSAtLS0KICB2YXIgc2VjQT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgc2VjQS5jbGFzc05hbWU9J3RyLXBhcnQnOwogIHNlY0EuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJ0ci1wYXJ0aGVhZCI+PHNwYW4gY2xhc3M9InRyLXBhcnRiYWRnZSI+UGFydCBBPC9zcGFuPjxzcGFuIGNsYXNzPSJ0ci1wYXJ0dGl0bGUiPkNvbXBsZXRlIHRoZSBzZW50ZW5jZXMgdXNpbmcgdGhlIHZlcmJzIGluIHRoZSB3b3JkIGJveC48L3NwYW4+PC9kaXY+JysKICAgICc8ZGl2IGNsYXNzPSJ0ci1pbnN0ciI+XHUyNzBGXHVGRTBGIFNvbWUgdmVyYnMgY2FuIGJlIHVzZWQgbW9yZSB0aGFuIG9uY2UuIFR5cGUgdGhlIGNvcnJlY3QgZm9ybSBpbiBlYWNoIGJsYW5rLjwvZGl2PicrCiAgICAnPGRpdiBjbGFzcz0idHItd2JveCI+PHNwYW4gY2xhc3M9ImxibCI+V29yZCBCb3g6PC9zcGFuPicrV09SREJPWF9BLm1hcCh3PT4nPHNwYW4gY2xhc3M9IndkIj4nK3crJzwvc3Bhbj4nKS5qb2luKCcnKSsnPC9kaXY+JzsKICB2YXIgc3RvcnlBPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBzdG9yeUEuY2xhc3NOYW1lPSd0ci1zdG9yeSc7CiAgU1RPUllfQS5mb3JFYWNoKGZ1bmN0aW9uKHApewogICAgaWYocC5wcmUpIHN0b3J5QS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwLnByZSkpOwogICAgdmFyIGlkeD1xaSsrOyBBTlMucHVzaChwLmFucyk7IFFLSU5ELnB1c2goJ2JsYW5rJyk7CiAgICB2YXIgc3A9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOyBzcC5jbGFzc05hbWU9J3RyLWJsYW5rJzsgc3AuZGF0YXNldC5xPWlkeDsKICAgIHNwLmlubmVySFRNTD0nPHNwYW4gY2xhc3M9Im51bSI+JysoaWR4KzEpKyc8L3NwYW4+PGlucHV0IHR5cGU9InRleHQiIGRhdGEtcT0iJytpZHgrJyIgYXV0b2NvbXBsZXRlPSJvZmYiIHNwZWxsY2hlY2s9ImZhbHNlIj4nOwogICAgc3RvcnlBLmFwcGVuZENoaWxkKHNwKTsKICAgIGlmKHAucG9zdCkgc3RvcnlBLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHAucG9zdCkpOwogIH0pOwogIHNlY0EuYXBwZW5kQ2hpbGQoc3RvcnlBKTsKICBCT0RZLmFwcGVuZENoaWxkKHNlY0EpOwoKICAvLyAtLS0gUGFydCBCIC0tLQogIHZhciBzZWNCPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBzZWNCLmNsYXNzTmFtZT0ndHItcGFydCc7CiAgc2VjQi5pbm5lckhUTUw9JzxkaXYgY2xhc3M9InRyLXBhcnRoZWFkIj48c3BhbiBjbGFzcz0idHItcGFydGJhZGdlIj5QYXJ0IEI8L3NwYW4+PHNwYW4gY2xhc3M9InRyLXBhcnR0aXRsZSI+Q29tcGxldGUgdGhlIHNlbnRlbmNlcyB1c2luZyB0aGUgdGhpcmQtcGVyc29uIHNpbmd1bGFyIGZvcm1zIG9mIHRoZSB2ZXJicy48L3NwYW4+PC9kaXY+JysKICAgICc8ZGl2IGNsYXNzPSJ0ci1pbnN0ciI+XHUyNzBGXHVGRTBGIFRvbSBpcyAiaGUiIFx1MjAxNCBjaGFuZ2UgZWFjaCB2ZXJiIHRvIGl0cyAzcmQtcGVyc29uIHNpbmd1bGFyIGZvcm0gKC1zLCAtZXMsIC1pZXMpLjwvZGl2PicrCiAgICAnPGRpdiBjbGFzcz0idHItd2JveCI+PHNwYW4gY2xhc3M9ImxibCI+SGludDo8L3NwYW4+JytXT1JEQk9YX0IubWFwKHc9Pic8c3BhbiBjbGFzcz0id2QiPicrdysnPC9zcGFuPicpLmpvaW4oJycpKyc8L2Rpdj4nOwogIHZhciBzdG9yeUI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IHN0b3J5Qi5jbGFzc05hbWU9J3RyLXN0b3J5JzsKICBTVE9SWV9CLmZvckVhY2goZnVuY3Rpb24ocCl7CiAgICBpZihwLnByZSkgc3RvcnlCLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHAucHJlKSk7CiAgICB2YXIgaWR4PXFpKys7IEFOUy5wdXNoKHAuYW5zKTsgUUtJTkQucHVzaCgnYmxhbmsnKTsKICAgIHZhciBzcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7IHNwLmNsYXNzTmFtZT0ndHItYmxhbmsnOyBzcC5kYXRhc2V0LnE9aWR4OwogICAgc3AuaW5uZXJIVE1MPSc8c3BhbiBjbGFzcz0ibnVtIj4nKyhpZHgrMSkrJzwvc3Bhbj48aW5wdXQgdHlwZT0idGV4dCIgZGF0YS1xPSInK2lkeCsnIiBhdXRvY29tcGxldGU9Im9mZiIgc3BlbGxjaGVjaz0iZmFsc2UiPic7CiAgICBzdG9yeUIuYXBwZW5kQ2hpbGQoc3ApOwogICAgaWYocC5wb3N0KSBzdG9yeUIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocC5wb3N0KSk7CiAgfSk7CiAgc2VjQi5hcHBlbmRDaGlsZChzdG9yeUIpOwogIEJPRFkuYXBwZW5kQ2hpbGQoc2VjQik7CgogIC8vIC0tLSBQYXJ0IEMgLS0tCiAgdmFyIHNlY0M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IHNlY0MuY2xhc3NOYW1lPSd0ci1wYXJ0JzsKICBzZWNDLmlubmVySFRNTD0nPGRpdiBjbGFzcz0idHItcGFydGhlYWQiPjxzcGFuIGNsYXNzPSJ0ci1wYXJ0YmFkZ2UiPlBhcnQgQzwvc3Bhbj48c3BhbiBjbGFzcz0idHItcGFydHRpdGxlIj5SZXdyaXRlIHRoZSBzZW50ZW5jZXMgaW4gdGhlIG5lZ2F0aXZlIGZvcm0uPC9zcGFuPjwvZGl2PicrCiAgICAnPGRpdiBjbGFzcz0idHItaW5zdHIiPlx1ezFGNEREfSBUeXBlIHlvdXIgcmV3cml0dGVuIHNlbnRlbmNlLiBTdHVjaz8gQ2xpY2sgPGI+SGludDwvYj4gZm9yIDMgbXVsdGlwbGUtY2hvaWNlIG9wdGlvbnMuPC9kaXY+JzsKICBQQVJUX0MuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHZhciBpZHg9cWkrKzsgQU5TLnB1c2gocS5hbnMpOyBRS0lORC5wdXNoKCd0ZXh0Jyk7CiAgICB2YXIgY2FyZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgY2FyZC5jbGFzc05hbWU9J3RyLXEnOwogICAgdmFyIG9wdHNIdG1sPScnOwogICAgdmFyIEw9WydBJywnQicsJ0MnXTsKICAgIHZhciBjb3JyZWN0SWR4PS0xOwogICAgcS5vcHRzLmZvckVhY2goZnVuY3Rpb24obyxvaSl7IGlmKG89PT1xLmFucy5zcGxpdCgnfCcpWzBdKSBjb3JyZWN0SWR4PW9pOyB9KTsKICAgIHEub3B0cy5mb3JFYWNoKGZ1bmN0aW9uKG8sb2kpewogICAgICBvcHRzSHRtbCs9JzxsYWJlbCBjbGFzcz0idHItb3B0IiBkYXRhLXE9IicraWR4KyciIGRhdGEtbz0iJytvaSsnIiBkYXRhLWNvcnJlY3Q9IicrKG9pPT09Y29ycmVjdElkeD8nMSc6JzAnKSsnIj48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InRycW1jcV8nK2lkeCsnIiB2YWx1ZT0iJytvaSsnIj48c3BhbiBjbGFzcz0ibHQiPicrTFtvaV0rJzwvc3Bhbj48c3BhbiBjbGFzcz0idHgiPicrbysnPC9zcGFuPjwvbGFiZWw+JzsKICAgIH0pOwogICAgY2FyZC5pbm5lckhUTUw9CiAgICAgICc8ZGl2IGNsYXNzPSJ0ci1xaGVhZCI+PHNwYW4gY2xhc3M9InRyLXFudW0iPicrKGlkeCsxKSsnPC9zcGFuPjxzcGFuIGNsYXNzPSJ0ci1xdGV4dCI+UmV3cml0ZTogPGk+JytxLm9yaWcrJzwvaT48L3NwYW4+PC9kaXY+JysKICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0idHItcXR4dC1pbnB1dCIgZGF0YS1xPSInK2lkeCsnIiBwbGFjZWhvbGRlcj0iVHlwZSB0aGUgbmVnYXRpdmUgZm9ybS4uLiIgYXV0b2NvbXBsZXRlPSJvZmYiIHNwZWxsY2hlY2s9ImZhbHNlIj4nKwogICAgICAnPGRpdiBjbGFzcz0idHItcWZvb3QiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idHItaGludC10b2dnbGUiIGRhdGEtcT0iJytpZHgrJyI+XHV7MUY0QTF9IEhpbnQ8L2J1dHRvbj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InRyLXNob3ciIGRhdGEtcT0iJytpZHgrJyI+U2hvdyBhbnN3ZXI8L2J1dHRvbj48L2Rpdj4nKwogICAgICAnPGRpdiBjbGFzcz0idHItaGludC1ib3giIGlkPSJ0cmgnK2lkeCsnIj48ZGl2IGNsYXNzPSJobCI+UGljayB0aGUgY29ycmVjdCByZXdyaXRlPC9kaXY+PGRpdiBjbGFzcz0idHItb3B0cyI+JytvcHRzSHRtbCsnPC9kaXY+PC9kaXY+JysKICAgICAgJzxkaXYgY2xhc3M9InRyLWFucyIgaWQ9InRyYScraWR4KyciPkNvcnJlY3QgYW5zd2VyOiA8Yj4nK3EuYW5zLnNwbGl0KCd8JylbMF0rJzwvYj48L2Rpdj4nOwogICAgc2VjQy5hcHBlbmRDaGlsZChjYXJkKTsKICB9KTsKICBCT0RZLmFwcGVuZENoaWxkKHNlY0MpOwoKICB2YXIgVE9UQUw9QU5TLmxlbmd0aDsKICB2YXIgcGFydFJhbmdlcz1bWzAsOV0sWzEwLDE5XSxbMjAsMjNdXTsKCiAgZnVuY3Rpb24gbm9ybShzKXtyZXR1cm4gKHN8fCcnKS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9ccysvZywnICcpLnJlcGxhY2UoL1x1MjAxOS9nLCInIikucmVwbGFjZSgvXC4kLywnJykucmVwbGFjZSgvWyciXS9nLCdcJycpO30KICBmdW5jdGlvbiBpc0NvcnJlY3QoaWR4LCB2YWwpewogICAgdmFyIGFsdHMgPSBBTlNbaWR4XS5zcGxpdCgnfCcpOwogICAgdmFyIHYgPSBub3JtKHZhbCk7CiAgICByZXR1cm4gYWx0cy5zb21lKGEgPT4gbm9ybShhKSA9PT0gdik7CiAgfQogIGZ1bmN0aW9uIGFuc3dlcmVkQ291bnQoKXsKICAgIHZhciBuPTA7CiAgICBmb3IodmFyIGk9MDtpPFRPVEFMO2krKyl7CiAgICAgIGlmKFFLSU5EW2ldPT09J3RleHQnIHx8IFFLSU5EW2ldPT09J2JsYW5rJyl7CiAgICAgICAgdmFyIGlucCA9IFJPT1QucXVlcnlTZWxlY3RvcignaW5wdXRbZGF0YS1xPSInK2krJyJdW3R5cGU9InRleHQiXScpOwogICAgICAgIGlmKGlucCAmJiBpbnAudmFsdWUudHJpbSgpLmxlbmd0aD4wKSBuKys7CiAgICAgIH0gZWxzZSBpZihRS0lORFtpXT09PSdtY3EnKXsKICAgICAgICBpZihST09ULnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9InRycW1jcV8nK2krJyJdOmNoZWNrZWQnKSkgbisrOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbjsKICB9CiAgZnVuY3Rpb24gdXBkYXRlUHJvZygpe3ZhciBuPWFuc3dlcmVkQ291bnQoKTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJBbnN3ZXJlZCcpLnRleHRDb250ZW50PW4rJyAvICcrVE9UQUwrJyBhbnN3ZXJlZCc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyUHJvZycpLnN0eWxlLndpZHRoPShuL1RPVEFMKjEwMCkrJyUnO30KCiAgUk9PVC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsZnVuY3Rpb24oZSl7CiAgICBpZihlLnRhcmdldC50YWdOYW1lPT09J0lOUFVUJyAmJiBlLnRhcmdldC50eXBlPT09J3RleHQnKSB1cGRhdGVQcm9nKCk7CiAgfSk7CiAgUk9PVC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLGZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0LnR5cGU9PT0ncmFkaW8nKSB1cGRhdGVQcm9nKCk7fSk7CiAgUk9PVC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZSl7CiAgICB2YXIgaD1lLnRhcmdldC5jbG9zZXN0KCcudHItaGludC10b2dnbGUnKTsKICAgIGlmKGgpe3ZhciBxPStoLmRhdGFzZXQucTt2YXIgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJoJytxKTtiLmNsYXNzTGlzdC50b2dnbGUoJ3Nob3cnKTtoLnRleHRDb250ZW50PWIuY2xhc3NMaXN0LmNvbnRhaW5zKCdzaG93Jyk\/J0hpZGUgaGludCc6J1x1ezFGNEExfSBIaW50JztyZXR1cm47fQogICAgdmFyIGI9ZS50YXJnZXQuY2xvc2VzdCgnLnRyLXNob3cnKTsKICAgIGlmKGIpe3ZhciBxPStiLmRhdGFzZXQucTt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJhJytxKTthLmNsYXNzTGlzdC50b2dnbGUoJ3Nob3cnKTtiLnRleHRDb250ZW50PWEuY2xhc3NMaXN0LmNvbnRhaW5zKCdzaG93Jyk\/J0hpZGUgYW5zd2VyJzonU2hvdyBhbnN3ZXInO30KICB9KTsKCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyU3VibWl0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICB2YXIgY29ycmVjdD0wOwogICAgZm9yKHZhciBpPTA7aTxUT1RBTDtpKyspewogICAgICB2YXIgaW5wID0gUk9PVC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtkYXRhLXE9IicraSsnIl1bdHlwZT0idGV4dCJdJyk7CiAgICAgIGlmKCFpbnApIGNvbnRpbnVlOwogICAgICB2YXIgb2sgPSBpc0NvcnJlY3QoaSwgaW5wLnZhbHVlKTsKICAgICAgaW5wLmNsYXNzTGlzdC5yZW1vdmUoJ2NvcnJlY3QnLCd3cm9uZycpOwogICAgICBpZihRS0lORFtpXT09PSdibGFuaycpewogICAgICAgIHZhciBzcD1pbnAuY2xvc2VzdCgnLnRyLWJsYW5rJyk7IGlmKHNwKXtzcC5jbGFzc0xpc3QucmVtb3ZlKCdjb3JyZWN0Jywnd3JvbmcnKTsgc3AuY2xhc3NMaXN0LmFkZChvaz8nY29ycmVjdCc6J3dyb25nJyk7fQogICAgICB9IGVsc2UgewogICAgICAgIGlucC5jbGFzc0xpc3QuYWRkKG9rPydjb3JyZWN0Jzond3JvbmcnKTsKICAgICAgfQogICAgICBpZihvaykgY29ycmVjdCsrOwogICAgICAvLyBBbHNvIG1hcmsgTUNRIGhpbnQgaWYgZXhpc3RzCiAgICAgIHZhciBtY3FTZWwgPSBST09ULnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9InRycW1jcV8nK2krJyJdOmNoZWNrZWQnKTsKICAgICAgUk9PVC5xdWVyeVNlbGVjdG9yQWxsKCcudHItb3B0W2RhdGEtcT0iJytpKyciXScpLmZvckVhY2goZnVuY3Rpb24obCl7bC5jbGFzc0xpc3QucmVtb3ZlKCdjb3JyZWN0Jywnd3JvbmcnKTt9KTsKICAgICAgdmFyIGNvcnJlY3RMYmwgPSBST09ULnF1ZXJ5U2VsZWN0b3IoJy50ci1vcHRbZGF0YS1xPSInK2krJyJdW2RhdGEtY29ycmVjdD0iMSJdJyk7CiAgICAgIGlmKGNvcnJlY3RMYmwpIGNvcnJlY3RMYmwuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOwogICAgICBpZihtY3FTZWwgJiYgbWNxU2VsLmNsb3Nlc3QoJy50ci1vcHQnKS5kYXRhc2V0LmNvcnJlY3QhPT0nMScpIG1jcVNlbC5jbG9zZXN0KCcudHItb3B0JykuY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTsKICAgIH0KICAgIHZhciByZXM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyUmVzdWx0Jyk7cmVzLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0clNjb3JlJykudGV4dENvbnRlbnQ9Y29ycmVjdCsnLycrVE9UQUw7CiAgICB2YXIgcGN0PU1hdGgucm91bmQoY29ycmVjdC9UT1RBTCoxMDApOwogICAgdmFyIG1zZz1wY3Q9PT0xMDA\/J1BlcmZlY3QhIFx1ezFGMzg5fSBBbWF6aW5nIHdvcmshJzpwY3Q+PTgwPydHcmVhdCBqb2IhIFx1ezFGMzFGfSBLZWVwIGl0IHVwISc6cGN0Pj02MD8nR29vZCBlZmZvcnQhIFx1ezFGNEFBfSBSZXZpZXcgYW5kIHRyeSBhZ2Fpbi4nOidLZWVwIHByYWN0aWNpbmchIFx1ezFGNERBfSBZb3VcJ2xsIGdldCB0aGVyZS4nOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyU2NvcmVNc2cnKS50ZXh0Q29udGVudD0nWW91IHNjb3JlZCAnK3BjdCsnJSBcdTIwMTQgJyttc2c7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJTY29yZU1pbmknKS50ZXh0Q29udGVudD1jb3JyZWN0KycvJytUT1RBTCsnIFx1MjcxMyc7CiAgICB2YXIgYms9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyQnJlYWsnKTtiay5pbm5lckhUTUw9Jyc7CiAgICBbJ1BhcnQgQScsJ1BhcnQgQicsJ1BhcnQgQyddLmZvckVhY2goZnVuY3Rpb24obm0scGkpewogICAgICB2YXIgbG89cGFydFJhbmdlc1twaV1bMF0saGk9cGFydFJhbmdlc1twaV1bMV0sYz0wLHQ9aGktbG8rMTsKICAgICAgZm9yKHZhciBpPWxvO2k8PWhpO2krKyl7dmFyIGlwPVJPT1QucXVlcnlTZWxlY3RvcignaW5wdXRbZGF0YS1xPSInK2krJyJdW3R5cGU9InRleHQiXScpO2lmKGlwICYmIGlzQ29ycmVjdChpLCBpcC52YWx1ZSkpIGMrKzt9CiAgICAgIHZhciBjZWxsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtjZWxsLmNsYXNzTmFtZT0ndHItYmNlbGwnO2NlbGwudGV4dENvbnRlbnQ9bm0rJzogJytjKycvJyt0O2JrLmFwcGVuZENoaWxkKGNlbGwpOwogICAgfSk7CiAgICByZXMuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidjZW50ZXInfSk7CiAgfSk7CgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0clJlc2V0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICBST09ULnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9dGV4dF0nKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3IudmFsdWU9Jyc7ci5jbGFzc0xpc3QucmVtb3ZlKCdjb3JyZWN0Jywnd3JvbmcnKTt9KTsKICAgIFJPT1QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1yYWRpb10nKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3IuY2hlY2tlZD1mYWxzZTt9KTsKICAgIFJPT1QucXVlcnlTZWxlY3RvckFsbCgnLnRyLWJsYW5rJykuZm9yRWFjaChmdW5jdGlvbihzKXtzLmNsYXNzTGlzdC5yZW1vdmUoJ2NvcnJlY3QnLCd3cm9uZycpO30pOwogICAgUk9PVC5xdWVyeVNlbGVjdG9yQWxsKCcudHItb3B0JykuZm9yRWFjaChmdW5jdGlvbihsKXtsLmNsYXNzTGlzdC5yZW1vdmUoJ2NvcnJlY3QnLCd3cm9uZycpO30pOwogICAgUk9PVC5xdWVyeVNlbGVjdG9yQWxsKCcudHItYW5zJykuZm9yRWFjaChmdW5jdGlvbihhKXthLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTt9KTsKICAgIFJPT1QucXVlcnlTZWxlY3RvckFsbCgnLnRyLWhpbnQtYm94JykuZm9yRWFjaChmdW5jdGlvbihiKXtiLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTt9KTsKICAgIFJPT1QucXVlcnlTZWxlY3RvckFsbCgnLnRyLXNob3cnKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IudGV4dENvbnRlbnQ9J1Nob3cgYW5zd2VyJzt9KTsKICAgIFJPT1QucXVlcnlTZWxlY3RvckFsbCgnLnRyLWhpbnQtdG9nZ2xlJykuZm9yRWFjaChmdW5jdGlvbihiKXtiLnRleHRDb250ZW50PSdcdXsxRjRBMX0gSGludCc7fSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJSZXN1bHQnKS5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJTY29yZU1pbmknKS50ZXh0Q29udGVudD0nXHUyMDE0JzsKICAgIHVwZGF0ZVByb2coKTsKICAgIFJPT1Quc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidzdGFydCd9KTsKICB9KTsKCiAgdXBkYXRlUHJvZygpOwp9KSgpOwo='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>TOEFL Primary &#183; Step 1 &#183; Book 2 Grammar &#8212; The Simple Present Practice the simple present tense &#8212; daily actions, third-person -s, and negatives. 24 questions across 3 parts. &#128218; 3 Parts &#9999;&#65039; 24 Questions &#9889; Auto-graded &#128218; Grammar Tip &#8212; The Simple Present Use the simple present to talk about things we do [&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-2051","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/2051","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=2051"}],"version-history":[{"count":0,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/2051\/revisions"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=2051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}