{
  "description": "EPS-TOPIK CBT layout: 20 reading (25 min) then 20 listening (25 min). Each question is worth 5 points (200 total).",
  "sections": {
    "reading": { "from": 1, "to": 20, "minutes": 25 },
    "listening": { "from": 21, "to": 40, "minutes": 25 }
  },
  "groups": [
    { "from": 1,  "to": 4,  "ko": "다음 그림을 보고 맞는 단어나 문장을 고르십시오." },
    { "from": 5,  "to": 6,  "ko": "다음 중 밑줄 친 부분이 맞는 것은 무엇입니까?" },
    { "from": 7,  "to": 10, "ko": "다음 글을 읽고 물음에 답하십시오." },
    { "from": 11, "to": 16, "ko": "빈칸에 들어갈 가장 알맞은 것을 고르십시오." },
    { "from": 17, "to": 17, "ko": "다음 설명에 알맞은 어휘를 고르십시오." },
    { "from": 18, "to": 18, "ko": "다음 글을 읽고 무엇에 대한 글인지 고르십시오." },
    { "from": 19, "to": 20, "ko": "다음 글을 읽고 내용과 같은 것을 고르십시오." },
    { "from": 21, "to": 22, "ko": "들은 것을 고르십시오." },
    { "from": 23, "to": 28, "ko": "다음을 듣고 들은 내용과 관계있는 그림을 고르십시오." },
    { "from": 29, "to": 32, "ko": "다음을 듣고 질문에 알맞은 대답을 고르십시오." },
    { "from": 33, "to": 33, "ko": "다음을 듣고 이어지는 말을 고르십시오." },
    { "from": 34, "to": 36, "ko": "다음을 듣고 들은 내용과 관계있는 그림을 고르십시오." },
    { "from": 37, "to": 40, "ko": "다음을 듣고 질문에 알맞은 대답을 고르십시오." }
  ],
  "slots": [
    { "no": 1,  "type": "r_picture",        "note": "object noun; stimulus image, text options" },
    { "no": 2,  "type": "r_picture",        "note": "machine/tool noun" },
    { "no": 3,  "type": "r_picture",        "note": "action sentence (-고 있습니다)" },
    { "no": 4,  "type": "r_picture",        "note": "safety sign sentence" },
    { "no": 5,  "type": "r_grammar",        "note": "particles; exactly one correct underlined part" },
    { "no": 6,  "type": "r_grammar",        "note": "verb conjugation / irregulars" },
    { "no": 7,  "type": "r_info",           "note": "sign, card or menu image + factual question" },
    { "no": 8,  "type": "r_word_relation",  "note": "related word" },
    { "no": 9,  "type": "r_word_relation",  "note": "word meaning as sentence" },
    { "no": 10, "type": "r_chart",          "note": "chart/graph reading" },
    { "no": 11, "type": "r_form_blank",     "note": "form or document with a blank" },
    { "no": 12, "type": "r_blank",          "note": "connective/grammar blank" },
    { "no": 13, "type": "r_blank",          "note": "connective/grammar blank" },
    { "no": 14, "type": "r_blank",          "note": "vocabulary blank" },
    { "no": 15, "type": "r_blank",          "note": "sentence-ending blank" },
    { "no": 16, "type": "r_blank",          "note": "workplace safety blank" },
    { "no": 17, "type": "r_definition",     "note": "word from definition (tools, workplace)" },
    { "no": 18, "type": "r_topic",          "note": "topic of a short passage" },
    { "no": 19, "type": "r_notice_match",   "note": "notice image; option matching content" },
    { "no": 20, "type": "r_passage_match",  "note": "passage; option matching content (work/life in Korea)" },
    { "no": 21, "type": "l_word",           "note": "single word, minimal-pair options" },
    { "no": 22, "type": "l_word",           "note": "single word, minimal-pair options" },
    { "no": 23, "type": "l_picture",        "note": "daily action, 4 image options" },
    { "no": 24, "type": "l_picture",        "note": "tool/object, 4 image options" },
    { "no": 25, "type": "l_picture",        "note": "daily action, 4 image options" },
    { "no": 26, "type": "l_picture",        "note": "work action, 4 image options" },
    { "no": 27, "type": "l_picture",        "note": "short dialogue, 4 scene options" },
    { "no": 28, "type": "l_picture",        "note": "short dialogue, 4 scene options" },
    { "no": 29, "type": "l_response",       "note": "question; options are spoken and printed" },
    { "no": 30, "type": "l_response",       "note": "question; options are spoken and printed" },
    { "no": 31, "type": "l_response",       "note": "question; options are spoken and printed" },
    { "no": 32, "type": "l_response",       "note": "question; options are spoken and printed" },
    { "no": 33, "type": "l_next",           "note": "statement; choose the natural next line" },
    { "no": 34, "type": "l_picture_number", "note": "date -> calendar options" },
    { "no": 35, "type": "l_picture_number", "note": "price -> tag/receipt options" },
    { "no": 36, "type": "l_picture_number", "note": "time/quantity -> image options" },
    { "no": 37, "type": "l_scene_question", "note": "scene image; location question; options spoken" },
    { "no": 38, "type": "l_dialogue",       "note": "dialogue; purpose/reason question" },
    { "no": 39, "type": "l_dialogue",       "note": "dialogue; reason question" },
    { "no": 40, "type": "l_dialogue",       "note": "dialogue; matching-content question" }
  ]
}
